mysql外键的使用
一、外键是什么
- 为了一张表记录的数据不要太过冗余。仅仅只是在数据库中是对表关系进行解耦,尽量让表 记录的数据单一化。
- 例如:把成绩和学生信息放在一张表中就太冗余了,执行sql性能也下降很多,成绩和信息是两个事物完全可以分开,所以在设计的时候。就给学生表加入一个外键(成绩表全然能够以学生的学号作为区分标识),这个外键就是信息表中的学号字段。那么信息表就是主表,成绩表就是子表。
二、外键有什么作用
- 为什么说外键能保持数据的一致性、完整性
在设置外键的情况下。当你插入成绩表学号字段的值必需要求在信息表的学号字段能找到。 同一时候。假设你要删除信息表的某个学号字段。必须保证成绩表中没有引用该字段值的列,否则就没法删除(这就是mysql外键的核心概念)。
三、外键的操作
-
创建用户基本表user
create table
name varchar(8) not null unique,
age tinyint unsigned,88
sex enum('m','w') not null default 'm'
);
-
创建用户详情表user_detail
create table user_detail(
code varchar(100) not null primary key,
phone int(11) not null,
CONSTRAINT FK_ID FOREIGN KEY (code) REFERENCES user (id)
)engine=myisam charset=utf8;
-
为已经添加好的数据表添加外键(FK_ID是外键的名称)
语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);
实例:alter table user_detail add constraint FK_ID foreign key(code) REFERENCES user(id)
- 删除外键
语法: ALTER TABLE table-name DROP FOREIGN KEY key-id;
例:ALTER TABLE `tb_active` DROP FOREIGN KEY `FK_ID`