为了账号安全,请及时绑定邮箱和手机立即绑定

mysql外键约束的参照我是来充字数的

标签:
SQL Server

1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表。

2.数据表的存储引擎只能为InnoDB。

3.外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。

4.外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。

根据父表的参照列创建子表的外键列:
父表:
CREATE TABLE province(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
pname VARCHAR(20) NOT NULL
);
子表:
CREATE TABLE users(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(10) NOT NULL,
pid SMALLINT UNSIGNED,
FOREIGN KEY (pid) REFERENCES province (id)
);

外键约束的参照操作

  1. CASCADE 需要在两张表中插入记录,必须先在父表中插入记录再在子表中插入记录
    因为子表参照的是父表中的信息,若父表中没有则无法参照
    2、SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子列表没有指定NOT NULL。
    3、RESTRICT:拒绝对父表的删除或更新操作。
    4、NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同。

NO ACTION:与RESTRICT相同
所以说,我们在实际的项目开发中,我们不去定义物理的外键,所谓的逻辑外键指的是就是我们在定义两张表的结构的时候,我们是按照存在的某种结构的方式去定义,但是不去使用FOREIGN KEY这个关键词来定义。

FOREIGN KEY (子表列名) REFERENCES FROM 父表名(父表列名)[ON DELETE|UPDATE CASCADE|SET NULL|RESTRICT|NO ACTION];

在实际开发中,存储引擎不为INNODB,无法使用FOREIGN KEY,普遍使用逻辑方法。

创建子表:users1;

CREATE TABLE users(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(10) NOT NULL,
pid(外键) SMALLINT(与参照键类型相同) UNSIGNED(与参照键有无符号类型也要相同),//外键的作用体现在这:如果我们要添加一个省份的字段,需要添加个char型的,现在有了关系型数据库,我们只需要存储省份的id即可;
FOREIGN KEY (pid) PREFERENCES provinces (id) ON DELETE CASCADE,
);

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消