mysql外键

1,什么是外键和外键的作用

  如果一张表中有一个非主键的字段指向了别一张表中的主键,就将该字段叫做外键。

  外键用于inodb的表中,myisam是无法使用的,即使创建的语句没有问题。实际上是无法创建成功的,建议创建sql语句的时候,带上engine inodb。

 

  外键的作用:能保持数据的一致性和完整性。

 

2,外键的创建

 

1,创建province表,可以称为父表。

 create table province(
     pId int primary key auto_increment,
     pName varchar(20)
)engine innodb;

  

2,创建user表,并创建外键。其中pid即为外键。他其实就是父表的主键。

create table user(
userId int primary key auto_increment,
userName varchar(40),
pid int,
foreign key(pid) references province(pId)
)engine innodb;

  

foreign key(本表字段) references province(父表字段)

 

注:

上述谈到了外键保持数据的一致性和完整性。

向user表插入数据,需要先判断province表里面是否对应的id.不然数据无法插入

删除province里面的数据,需要先删除user表里面的数据,不然无法删除province里面的数据。因为user表引用了province里面的数据。

删除表当然也是一样。这样就能保证数据的一致性,完整性。

 

操作具体入下:

1,向user表插入数据,可以看到报错。这是因为父表里面没有pid为1的记录。

 

2,为此需要先在父表里面添加一条pid为1的记录。可以发现父表里面又id为1的记录,再向user表插入就没问题了。

 

 

 3,删除province表的记录,可以看到是无法删除的。可以先删除user表的记录在删除province的记录。

 

 

3,外键的误区(容易搞混淆的地方,到底谁是外键。)

上述这里是user表是引用province的表,那么province就是父表,user表就是子表。user的外键pid其实就是province的父表的主键。

转载于:https://www.cnblogs.com/lin1/p/9015830.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值