十七、MySQL约束演示

1、约束定义

(1)概念

约束,顾名思义,时作用域表中字段上的规则,用于限制存储在表中的数据,主要用于保证数据库中数据的正确、有效性和完整性。

(2)各种约束分类

sql 复制代码
1、非空约束(限制字段数据不能为null):
not null
2、唯一约束(保证该字段的所有数据都是唯一、不重复的):
这里需要注意,当某个字段有'唯一性'约束时,即便执行失败,也会占用一个主键位置
unique
3、主键约束(主键是一行数据的唯一标识,要求非空并唯一):
primary key
4、默认约束(保存数据时,如果未指定该字段的值,则采用默认值):
default
5、检查约束(保证字段值满足某一个条件):
check
6、外键约束(用来让两张表的数据之间建立连接,保证数据的一致性和完整性):
foreign key

2、实际操作

(1)先创建一个基础表:

sql 复制代码
use other;
# 创建表结构
# 字段名 数据类型 约束 comment 注释;
create table user(
    -- 自增长
    id int primary key auto_increment comment '主键',
    -- 不能为null,而且不能重复,唯一性(即便执行失败,也会占用主键)
    name varchar(10) not null unique comment '姓名',
    -- 年龄范围(0~120)
    age int check ( age>0 && age<=120 ) comment '年龄'
)comment '用户表';
insert into user(name,age) values ('lom',12),('kom',56);
insert into user(name,age) values ('jom',34);

(2)验证name字段不能为null:

sql 复制代码
# 不能为null验证:该语句会执行失败
insert into user(name,age) values (null,78);

(3) 验证name字段唯一性:

sql 复制代码
insert into user(name,age) values ('lom',12);

此处name='lom'已存在,虽该语句会执行失败,但是其仍会申请一个主键,并占用,通过添加一组新的数据,观察主键值,来验证如下:

sql 复制代码
# 唯一约束验证:此处name='lom'已存在,虽该语句会执行失败,但是其仍会申请一个主键,并占用
insert into user(name,age) values ('hom',38);

(4)验证age字段范围:

sql 复制代码
# 年龄范围验证:该语句会执行失败,该语句会执行失败,因为-11小于0,121大于120
insert into user(name,age) values('fom',-11);
insert into user(name,age) values('dom',121);
相关推荐
ShineWinsu7 小时前
对于Redis:AOF持久化的解析
linux·数据库·redis·缓存·面试·持久化·aof
晚风叙码7 小时前
MySQL 数据类型详解:从数值到字符串,一篇讲透
android·mysql·adb
仍然.7 小时前
Redis---集群
数据库·redis·缓存
Allstar_437 小时前
DV/PV 验证管理:为量产放行提供完整证据链——全星研发项目管理 APQP 软件系统汽车电子行业专业级研发项目管理平台
数据库·汽车
小范的技术工坊7 小时前
向量数据库解决了什么问题?
数据库
小蒜学长7 小时前
在线保险服务与管理平台的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·服务平台·在线保险
做运维的阿瑞8 小时前
SQL 面试高频:用户、商品、订单三表查询全解析
数据库·sql·mysql
CJi0NG9 小时前
【自用】MySQL - 语法:DDL、DML、DQL、DCL
数据库·mysql
姜鱼问生9 小时前
数据库备份 + 灾难恢复演练:从 dump 恢复全库
运维·数据库
一技安身10 小时前
【mysql】Windows MySQL 8.4.10 绿色免安装喂饭教程
windows·mysql·adb