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;