SQL 约束
- 对表中的数据进行进一步的限制
- 保证数据的正确性、有效性、完整性
- 违反约束的不正确数据无法插入到表中
- 常见的约束
- 主键:PRIMARY KEY
- 非空:NOT NULL
- 唯一:UNIQUE
- 默认:DEFAULT
- 外键:FOREIGN KEY
主键约束
- 主键:一列(或一组列),其值能够唯一标识表中每一行
- 特点:不可重复,唯一,非空
- 语法:
列名 字段类型 PRIMARY KEY
添加主键约束
-- 创建一个带主键的表
CREATE TABLE emp1(
-- 设置主键 唯一 非空
eid INT PRIMARY KEY,
ename VARCHAR(20),
sex CHAR(1)
);
-- 给存在的表添加主键
CREATE TABLE emp2(
eid INT ,
ename VARCHAR(20),
sex CHAR(1)
)
-- 通过 DDL 语句进行设置
ALTER TABLE emp2 ADD PRIMARY KEY(eid);
创建主键自增的表
- AUTO_INCREMENT:表示自动增长(字段类型必须是整数类型)
-- 创建主键自增的表
CREATE TABLE emp3(
eid INT PRIMARY KEY AUTO_INCREMENT,
ename VARCHAR(20),
sex CHAR(1)
);
修改主键自增的起始值
-- 创建主键自增的表,自定义自增其实值
CREATE TABLE emp4(
eid INT PRIMARY KEY AUTO_INCREMENT,
ename VARCHAR(20),
sex CHAR(1)
)AUTO_INCREMENT=100;
delete from emp4; 如果使用这个删除,自增值会从删除的那个值往后增加
truncate table emp4; 如果使用这个删除,则自增值会从1开始,因为该语法是整个表删除
删除主键约束
-- 删除表中的主键
ALTER TABLE 表名 DROP PRIMARY KEY;
-- 使用 DDL 语句删除表中的主键
ALTER TABLE emp2 DROP PRIMARY KEY;
-- 查看表结构
DESC emp2;
选择主键原则
- 针对业务设计主键,往建议每张表都设计一个主键
- 主键可以没有业务意义,只需要保证不重复
非空约束
- 非空约束特点: 某一列不予许为空
- 语法:
列名 字段类型 NOT NULL
-- 添加非空约束
CREATE TABLE emp5(
eid INT PRIMARY KEY AUTO_INCREMENT,
-- ename 字段不能为空
ename VARCHAR(20) NOT NULL,
sex CHAR(1)
);
唯一约束
- 唯一约束: 表中的某一列的值不能重复;可以包含null值
- 对 NULL 不做唯一的判断
- 语法:
列名 字段类型 UNIQUE
-- 创建带有唯一约束的表
CREATE TABLE emp6(
eid INT PRIMARY KEY AUTO_INCREMENT,
-- 为 ename 字段添加唯一约束
ename VARCHAR(20) UNIQUE,
sex CHAR(1)
);
主键约束与唯一约束的区别
- 主键约束,唯一且不能够为空
- 唯一约束,唯一但是可以为空
- 一个表中只能有一个主键,但是可以有多个唯一约束
默认值
- 默认值约束:用来指定某列的默认值
- 语法:
列名 字段类型 DEFAULT 默认值
-- 创建带有默认值的表
CREATE TABLE emp7(
eid INT PRIMARY KEY AUTO_INCREMENT,
ename VARCHAR(20),
-- 为 sex 字段添加默认值
sex CHAR(1) DEFAULT '女'
);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?