约束
-
定义
为了保证数据的一致性和完整性,SQL规范以约束的方式来对表数据进行额外的条件限制 -
解释
- 约束是表级的强制规定(并不准确,因为由列级约束的存在)
- 规定约束
- 建表时规定约束
- 建表后,通过
ALTER TABLE
语句来规定
-
约束的种类
- 非空约束(NOT NULL)
- 唯一约束 (UNIQUE)
- 主键 (PRIMARY KEY)
- 外键 (FOREIGN KEY)
- DEFAULT
- CHECK 检查约束(MySQL不支持,不讨论)
-
按约束范围分类
- 列级约束
- 表级约束
非空约束,唯一约束,主键,外键都既可以是表级约束,有可以是列级约束
DEFAULT属于列级约束
-
非空约束
- 使用
/* 建表时 */ CREATE TABLE t_user( id INT PRIMARY KEY auto_increment, name VARCAHR(32) NOT NULL ); /* 对现有表增加非空约束 */ ALTER TABLE emp MODIFY sex VARCHAR(30) NOT NULL; /* 取消非空约束 */ ALTER TABLE emp MODIFY sex VARCHAR(30) NULL; /* 取消非空约束,增加默认值 */ ALTER TABLE emp MODIFY sex VARCHAR(30) DEFAULT '男' NULL;
- 解释
- 规定指定字段不能为NULL
""
属于空字符串,不属于空NULL,下属语句可以正确执行
INSERT INTO t_user(name) VALUE("");
-
唯一约束
- 使用
/* 建表时规定 列级约束 */ CREATE TABLE t_user( id INT PRIMARY KEY auto_increment, name VARCHAR(32) NOT NULL, email VARCHAR(32) UNIQUE ); /* 建表时规定 表级约束 */ CREATE TABLE t_user( id INT PRIMARY KEY auto_increment, name VARCHAR(20), email VARCHAR(20), -- UNIQUE(name, email) /* 表级约束 */ CONSTRAINT t_user_n_e UNIQUE(name, email) /* 定义别名,方便统一的管理 */ ); /* 删除唯一约束 */ ALTER TABLE USER DROP INDEX uk name pwd;
- 注意:
- 指的是设置的两列不能同时重复
,相当于把几个表级约束组成一个字符串,要求该字串不能重复
- 指的是设置的两列不能同时重复
分页(LIMIT)
- 背景: 查询返回的记录太多,查看不方便,所有就通过分页的方式来方便数据的查看。
- 实现分页的方法
-
LIMIT 9, 10;
-
LIMIT 10 OFFSET 9
上述两条公式,实现的效果是一样的。都是从第9条后的一条数据起,查询10条数据
若引入pageSize(页大小),pageNum(页号)两个变量,那么分页查询具有一下计算公式
SELECT * FROM employees LIMIT (pageNum-1)*pageSize, pageSize;
-