数据库的约束详解(2) —— 外键
外键约束主要用于保证一个或两个数据表之间的参照完整性。从表外键参照的只能是主表主键列或者唯一键列,这样才能保证从表记录可以准确定位到被参照的主表记录。同一表内可以有多个外键。其中,增加外键列的表被称为从表。
建立外键约束时,MySQL也会为该列建立索引。
1. 给表的某一列添加外键约束
2. 删除外键
建立外键约束时,MySQL也会为该列建立索引。
1. 给表的某一列添加外键约束
alter table table_name [contraint 约束名] foreign key(字段名) references 参照表名(参照表字段);
参照表的字段必须具有unique或primary key约束,否则创建外键会失败,而且可以创建多列组合的外键约束。2. 删除外键
alter table table_name drop foreign key 约束名
如果你忘了约束名是啥,或者创建外键时压根就没有起名子,那就用“show create table 表名”这个命令来查看吧。
3. 创建表的时候添加外键
MySQL支持列级外键创建的语法,但是不起作用,所以如果在创建表时添加外键,要采用表级语法来创建:
1. 先建立主表
create table t_teacher(
tea_id int auto_increment primary key,
name varchar(10)
)character set utf8;
2. 再创建从表
create table t_student)
stu_id int auto_increment primary key,
name varchar(10)
age int,
birthday date,
address varchar(30),
java_teacher int,
constriant 约束名 foreign key(java_teacher) references t_teacher(tea_id)
);
注意事项:
1. 从表参照主表的那个字段必须是主键或者具有unique约束,否则不成功!
2. 如果从表是参照主表的非主键列来创建外建,那么主表unique约束的属性值可以为null,所以当你在从表中插入一条记录时,外键的字段为null也是可以插入成功的。
3. 对于2中的情况的正常情况是,主表中有相应的字段值,那么在从表中插入记录时,在外键的列上赋这个字段值才能插入成功。