SQL约束-外键约束

外键约束

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

外键的数据类型必须和主键一致

定义外键的表称之为从表,被外键引用的表称之为主表

主表就像是源头,存储主要的数据,从表通过外键与主表关联,依赖主表的数据。

主表

create table if not exists user(

id int unsigned primary key auto_increment,

username varchar(20) not null

);

desc user;

desc 是“describe”的缩写,用于查看表的结构,包括字段名、数据类型、是否为主键等信息。

create table if not exists dynamic(

id int unsigned primary key auto_increment,

content varchar(255) not null

content 用于存储动态的具体内容,是长度为255的可变字符类型且不允许为空;

user_id int unsigned

在图中的 dynamic  表里, user_id  未来会作为外键,关联主表 user  的 id  字段。而主表 user  里的 id  是 int unsigned (无符号整数),为了满足外键约束中“数据类型必须和主键一致”的规则, dynamic  表的 user_id  也需要定义为 int unsigned ,确保两者类型匹配,才能正确建立表与表之间的关联关系。

);

desc dynamic;

从表

desc user;

create table if not exists dynamic_1(

id int unsigned primary key auto_increment,

content varchar(255) not null

user_id int unsigned

foreign key (user_id) references user (id)

foreign key (user_id) -- 指定dynamic表中的user_id字段为外键

references user(id);  -- 表示该外键引用user表中的id字段

);
外键操作:action
严格操作:restrict
主表中不存在对应的数据,从表不允许添加
从表引用着数据,主表对应的主键不允许删除
从表引用着数据,主表对应的主键不允许修改
置空操作:set null
修改或删除主表id时,所有跟它关联的从表字段都会被设置为null
级联操作:cascade
修改或删除主表id时,所有跟它关联的从表字段都会做同样的操作
create table if not exists dynamic_2(

id int unsigned primary key auto_increment,

content varchar(255) not null

user_id int unsigned

foreign key (user_id) references user (id) on update cascade on delete set null

user_id  这个字段是外键,专门用来和其他表建立关系。

( user_id )要关联到 user  表的主键( id )上,让两张表的数据能对应起来

- on update cascade :若 user  表的 id (主表主键)被修改, dynamic_2  表中关联的 user_id (外键)会级联同步修改。

-  on delete set null :若  user  表的  id  被删除, dynamic_2  表中关联的  user_id  会被设置为  null

);
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值