MySQL基础3 约束

约束

概念

约束是作用于表中字段的规则,用于限制表中的数据

分类,语法

在这里插入图片描述

例子

需求如下
在这里插入图片描述

select database() ;

create table user(
    id int primary key auto_increment comment 'ID唯一标识',
    name varchar(10) not null unique comment '姓名',
    age int check ( age > 0 && age <= 120 ) comment '年龄',
    status char(1) default '1' comment '状态',
    gender char(1) comment '性别'
)comment '用户表'

show tables ;
desc user;

在这里插入图片描述

#插入数据
insert into user(name, age, status, gender) VALUES ('Tom1','19','1','男'),('Tom2','25','0','男')```

当插入失败的时候(例如,出现重复的name数据)新的数据的id标识有时候并不连续。但有当我试图输入一个非法的age数据,后面的新数据标识却是连续的,这很奇怪…
在这里插入图片描述
ID如果不连续会出问题吗?GPT跟我的回答是这样的:

在大多数数据库管理系统中,确保 AUTO_INCREMENT(或等效机制)生成的 ID 值一定连续是非常困难的,甚至不推荐尝试。这是因为AUTO_INCREMENT的设计初衷并不是为了保证连续性,而是为了提供一个唯一的标识符。

好吧那就放过自己,留到以后慢慢发掘吧

外键约束

概念

下图中展示了一张员工表。在左侧的表中,dept_id标志了该员工属于哪个部门。例如金庸的dept_id字段中值为5,代表他属于总经办。dept_id使用的数据来自右边“部门表”的主键。像这样使用别人的主键作为值的字段就是外键
包含外键字段的表成为子表,对应的就是父表

在这里插入图片描述

语法

alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表 (主表字段名);

在这里插入图片描述

例子

下图中创建员工表和部门表在这里插入图片描述

然后添加外键
在这里插入图片描述
外键添加完成
在这里插入图片描述
此时我们不可以直接删除父表中的某行数据,会报错
删除外键
在这里插入图片描述

外键删除,更新行为

直接在原本的添加外键命令后增加 on update 行为 on delete 行为;
在这里插入图片描述

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值