约束[上篇]
约束(constraint)
概述
为保证数据完整性,对表数据进行额外的条件限制
- 实体完整性:同一个表中不能存在两个完全相同无法区分的数据
- 域完整性:例如年龄范围(0-120)
- 引用完整性:例如员工所在部门,部门表中要有该部门
- 用户自定义完整性:例如用户名不能重复,密码不能为空等
分类
1. 约束字段的个数
单列约束 & 多列约束
2. 约束的作用范围
列级约束:声明在对应的字段后面
表级约束:声明在所有字段的后面
3. 约束的作用
NOT NULL (非空约束)
UNIQUE (唯一性约束)
PRIMARY KEY (主键约束)
FOREIGN KEY (外键约束)
CHECK (检查约束)
DEFAULT (默认值约束)
添加 / 删除约束
CREATE TABLE
时添加
ALTER TABLE
时添加、删除
查看表中约束
SELECT * FROM information_schema.table_constraints
WHERE table_name = 'table_name';
非空约束(NOT NULL)
描述
限制某列的值不能为NULL
添加与删除
#建表时
CREATE TABLE t_name(
col1_name INT,
col2_name INT NOT NULL,
col3_name VARCHAR(15) NOT NULL
);
#ALTER TABLE
ALTER TABLE t_name
MODIFY col_name INT NOT NULL;
#删除
ALTER TABLE t_name
MODIFY col_name INT NULL;
唯一性约束(UNIQUE)
描述
限制某列的值不能重复(但可出现多个空值)
添加与删除
#列级约束
CREATE TABLE t_name(
col1_name INT UNIQUE,
col2_name INT,
col3_name VARCHAR(15) UNIQUE
);
#表级约束
CREATE TABLE t_name(
col1_name INT,
col2_name INT,
col3_name VARCHAR(15),
CONSTRAINT uk_tableName_colName UNIQUE(colName);#uk:UNIQUE, 遵循命名规律
);
#建表后
ALTER TABLE t_name
ADD CONSTRAINT uk_tableName_colName UNIQUE(colName);
ALTER TABLE t_name
MODIFY col_name INT UNIQUE;
复合的唯一性约束
#eg
CREATE TABLE user(
id INT,
name VARCHAR(15),
password VARCHAR(25),
CONSTRAINT uk_user_name_pwd UNIQUE(name, password)
);
name
和password
不能同时相同,但其中一个存在相同值是可以的
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析