mysql外键的使用

来源:互联网 发布:mysql limit缺陷 编辑:程序博客网 时间:2024/06/06 12:45

mysql外键的使用

一、外键是什么

1.为了一张表记录的数据不要太过冗余。仅仅只是在数据库中是对表关系进行解耦,尽量让表 记录的数据单一化。
   

例如:把成绩和学生信息放在一张表中就太冗余了,执行sql性能也下降很多,成绩和信息是两个事物完全可以分开,
      所以在设计的时候。就给学生表加入一个外键(成绩表全然能够以学生的学号作为区分标识),
      这个外键就是信息表中的学号字段。那么信息表就是主表,成绩表就是子表。




二、外键有什么作用

1.为什么说外键能保持数据的一致性、完整性

在设置外键的情况下。当你插入成绩表学号字段的值必需要求在信息表的学号字段能找到。 
同一时候。假设你要删除信息表的某个学号字段。必须保证成绩表中没有引用该字段值的列,否则就没法删除

(这就是mysql外键的核心概念)

三、外键的操作

1.创建用户基本表user

create table

name varchar(8) not null unique,
age tinyint unsigned,88
sex enum('m','w') not null default 'm'
);

2.创建用户详情表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;

3.为已经添加好的数据表添加外键(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)

4.删除外键

语法: ALTER TABLE table-name DROP FOREIGN KEY key-id;
例:   ALTER TABLE `tb_active` DROP FOREIGN KEY `FK_ID`