Mysql——外键

一,外键

    外键:foreign key,(外边的键,键不在本表中):如果一张表中有一个字段(非主键)指向另一张表的主键,则该字段称为外键。

二,增加外键

    外键可以在表创建时或创建完表之后增加(要kao虑数据的问题)。一个表可以有多个外键。

    创建表的时候增加外键,在所有表字段之后使用foregn key(外键字段) references 外部表(主键字段)

create table my_foreign1(
id int primary key AUTO_INCREMENT,
name varchar(20) comment'学生姓名',
c_id int comment'学号', 
foreign key(c_id) REFERENCES my_class(id)
)charset utf_8 ;

    外键,要求字段本身就是一个索引(普通索引),如果字段本身没有索引,则外键会先创建一个索引,然后才会创建外键本身。

    在新增表之后增加外键,修改表结构:

alter table 表名 add contraint 外键名 foreign key(外键字段) references 父表(主键字段)

三,修改外键&删除外键

    外键不能修改,只能先删除后新增

    删除外键:

alter table 表名 drop foreign key 外键名 ;//一张表可以有多个外键,但是外键名不能相同

四,外键作用

    外键默认作用有两点:一个对父表,一个对子表,外键字段在子表中。

    对子表约束:如果在子表数据进行写操作的时候,如果对应的外键字段在父表中没有匹配,则操作失败。(约束子表数据写操作)。

    对父表约束:父表数据的写操作(删和改,都涉及到主键本身),如果对应的主键在子表中已经被数据引用,则不允许操作。

你可能感兴趣的:(Mysql——外键)