MySQL基础之约束

MySQL基础之约束

概述

  • 概念:约束是作用在字段的规则,限制表中数据

演示

mysql 复制代码
# 多个约束之间不需要加逗号
# auto_increment 自增
create table user(
    id int primary key auto_increment comment '主键',
		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 '用户表';

外键约束

  • 概念:让两张表的数据建立连接
mysql 复制代码
# 创建表时添加外键
create table 表名(
	字段名 数据类型,
    ...
    [constraint] [外键名称] foreign key(外键字段名) references 主表(主表列名)
)
# 创建表后添加外键
alter table 表名 add constraint 外键名称 foreign key(外键字段名) references 主表(主表列名);
# 删除外键
alter table 表名 drop foreign key 外键名称;
mysql 复制代码
# 示例
# 把dept表中主键id 与cmp表中dept_id连接 建立外键fk_cmp_id_dept
alter table cmp add CONSTRAINT fk_cmp_id_dept FOREIGN key (dept_id) REFERENCES dept(id);
# 把fk_cmp_id_dept外键删除
alter table cmp drop foreign key fk_cmp_id_dept;

删除/更新行为

  • 添加外键时在末尾加上即可
mysql 复制代码
# 在更新或删除主表中的数据时会级联副表中数据
alter table cmp add CONSTRAINT fk_cmp_id_dept FOREIGN key (dept_id) REFERENCES dept(id) on update cascade on delete cascade; 

# 在删除主表中的数据时会使副表中数据置null
alter table cmp add CONSTRAINT fk_cmp_id_dept FOREIGN key (dept_id) REFERENCES dept(id) on delete set null; 
相关推荐
qq_206901392 小时前
为什么宝塔面板网站无法正常连接外部远程数据库_检查服务器安全组放行端口并开启IP授权
jvm·数据库·python
亚空间仓鼠2 小时前
关系型数据库MySQL(二):高级特性
数据库·sql·mysql
亚空间仓鼠3 小时前
关系型数据库MySQL(五):Galara高可用
数据库·mysql
weixin_586061463 小时前
JavaScript中Redux-Thunk处理异步Action的任务流
jvm·数据库·python
C^h3 小时前
rtthread控制达妙4310电机
数据库·单片机·嵌入式硬件
晴天¥3 小时前
达梦数据库共享存储集群搭建(DSC双节点+Openfiler-IP SAN存储)
linux·数据库·达梦数据库
IT乐手3 小时前
java 对比分析对象是否有变化
android·java
2401_897190553 小时前
Golang怎么写TODO待办应用_Golang TODO应用教程【深入】
jvm·数据库·python
渔舟小调3 小时前
P11 | 收藏与行程:用户行为类接口的设计模式
数据库·设计模式·oracle
m0_678485454 小时前
CSS实现浮动图标与文本居中对齐_配合浮动与flex
jvm·数据库·python