055_数据库的外键约束

#创建学生表与班级表,其中学生表依赖与班级表
CREATE TABLE tbl_class(
    id int(11) PRIMARY KEY  AUTO_INCREMENT,
    name char(20),
    number int(11)
);

CREATE TABLE tbl_student(
    id int(11) PRIMARY KEY AUTO_INCREMENT,
    name char(50),
    age char(11),
    class_id int(11),
    CONSTRAINT haha FOREIGN KEY(class_id) REFERENCES tbl_class(id)
    ON DELETE cascade ON UPDATE cascade    
);

constraint ***:这个是给外键约束起的名字,通常根据这个名字来删除外键约束。外键约束主要就是约束的被依赖表,
对于依赖表没有任何影响。
外键约束有四个属性值=
    cascade:级联删除与更新,当删除被依赖表时,会将依赖表中的数据全部删除。
    set null:当删除被依赖表的时候,依赖表中的数据设置为null
    restrict:依赖表不删完,无法删除被依赖表。也是默认的值。
    no action再mysql中和restrict相同。
    set default:innoDB和NDB无法使用改参数。

#删除外键约束
ALTER TABLE tbl_student DROP FOREIGN KEY haha;
delete from tbl_class where id = 2;

#添加外键约束
ALTER TABLE tbl_student ADD CONSTRAINT haha FOREIGN KEY(class_id) REFERENCES tbl_class(id)
ON DELETE cascade ON UPDATE cascade

#删除两个表
drop table tbl_student;
drop table tbl_class;


#查看一个表的索引,可以看到主键索引,也可以看到外键索引,但是restrict约束属性值查看不出来。
show  index  from tbl_student;

#查看表的创建信息,这个可以查看到外键的约束属性值,但是只能再doc窗口中。
show create table tbl_student;
原文地址:https://www.cnblogs.com/pogusanqian/p/12526767.html