史上最简单的 MySQL 教程(二十八)「外键(上)」

外键

外键foreign key,外面的键,即不在自己表中的键。如果一张表中有一个非主键的字段指向另外一张表的主键,那么将该字段称之为外键。每张表中,可以有多个外键。
 

新增外键

外键既可以在创建表的时候增加,也可以在创建表之后增加(但是要考虑数据的问题)。

第 1 种:在创建表的时候,增加外键

基本语法foreign key(外键字段) + references + 外部表名(主键字段);

执行如下 SQL 语句,进行测试:
 

[plain] view plaincopy

  1. -- 创建外键  
  2. create table my_foreign1(  
  3. id int primary key auto_increment,  
  4. name varchar(20) not null comment '学生姓名',  
  5. c_id int comment '班级表ID',  
  6. -- 增加外键  
  7. foreign key(c_id) references class(id)  
  8. )charset utf8;  





观察上图可知,字段c_idkey显示为MUL,表示多个键的意思。这是因为外键要求字段本身是一个索引(普通索引)如果字段本身没有索引,外键就会先创建一个索引,然后才创建外键本身。此外,CONSTRAINT后面的my_foreign_ibfk_1表示外键的名字。

第 2 种:在创建表之后,增加外键

基本语法alter table + 表名 + add[constraint + 外键名字] + foreign key(外键字段) + references + 外部表名(主键字段);

执行如下 SQL 语句,进行测试:
 

[plain] view plaincopy

  1. -- 创建外键  
  2. create table my_foreign2(  
  3. id int primary key auto_increment,  
  4. name varchar(20) not null comment '学生姓名',  
  5. c_id int comment '班级表ID'  
  6. )charset utf8;  
  7.   
  8. -- 增加外键  
  9. alter table my_foreign2 add  
  10. -- 指定外键名  
  11. constraint test_foreign  
  12. -- 指定外键字段  
  13. foreign key(c_id)  
  14. -- 引用外部表主键  
  15. references class(id);  





如上图所示,显然咱们已经增加外键成功啦!
 

修改外键 & 删除外键

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

基本语法alter table + 表名 + drop foreign key + 外键名字;

执行如下 SQL 语句,进行测试:
 

[plain] view plaincopy

  1. -- 删除外键  
  2. alter table my_foreign1 drop foreign key my_foreign1_ibfk_1;  





观察上图可知,删除外键不能通过查看表结构来体现,而是应该通过创建表的语句来查看。

温馨提示:符号[]括起来的内容,表示可选项;符号+,则表示连接的意思。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值