MySQL系列总结————约束
约束
解释
- 约束是表级的强制规定(并不准确,因为由列级约束的存在)
- 规定约束
- 建表时规定约束
- 建表后,通过
ALTER TABLE
语句来规定
约束的种类
- 非空约束(NOT NULL)
- 唯一约束 (UNIQUE)
- 主键 (PRIMARY KEY)
- 外键 (FOREIGN KEY)
- DEFAULT
- CHECK 检查约束(MySQL不支持,不讨论)
按约束范围分类
列级约束
表级约束
非空约束,唯一约束,主键,外键都既可以是表级约束,有可以是列级约束
DEFAULT属于列级约束
非空约束
使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17/* 建表时 */
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("");
唯一约束
使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20/* 建表时规定 列级约束 */
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(页号)两个变量,那么分页查询具有一下计算公式
1
2
3SELECT *
FROM employees
LIMIT (pageNum-1)*pageSize, pageSize;