mysql外键的使用

                                  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`

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值