MySQL约束
- 概念 :对表中的数据进行限定,保证数据的正确性、有效性和完整性。
- 分类
- 主键约束:
primary key
- 非空约束:
not null
- 唯一约束:
unique
- 外键约束:
foreign key
- 主键约束:
1. 非空约束
非空约束指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。
1.1在创建表时添加约束
<字段名> <数据类型> NOT NULL;
例如创建学生表时,指定学生表中的姓名不能为空;
CREATE TABLE STU(
id INT;
name VARCHAR(20) NOT NULL;
)
1.2 创建表之后,添加非空约束
ALTER TABLE 表名 MODIFY <字段名> <数据类型> NOT NULL;
1.3 删除非空约束
ALTER TABLE 表名 MODIFY <字段名> <数据类型>;
2. 唯一约束
唯一约束(Unique Key)是指所有记录中字段的值不能重复出现。例如,为 id 字段加上唯一性约束后,每条记录的 id 值都是唯一的,不能出现重复的情况。如果其中一条记录的 id 值为‘0001’,那么该表中就不能出现另一条记录的 id 值也为‘0001’。
唯一约束与主键约束相似的是它们都可以确保列的唯一性。不同的是,唯一约束在一个表中可有多个,并且设置唯一约束的列允许有空值,但是只能有一个空值。而主键约束在一个表中只能有一个,且不允许有空值。比如,在用户信息表中,为了避免表中用户名重名,可以把用户名设置为唯一约束。
2.1 在创建表时,添加唯一约束
唯一约束可以在创建表时直接设置,通常设置在除了主键以外的其它列上。
格式:
<字段名> <数据类型> UNIQUE
2.2 在修改表时添加唯一约束
在修改表时添加唯一约束的语法格式为:
ALTER TABLE <数据表名> ADD CONSTRAINT <唯一约束名> UNIQUE(<列名>);
ALTER TABLE <数据表名> MODIFY 字段名 UNIQUE;
2.3 删除唯一约束
ALTER TABLE 表名 DROP INDEX <唯一约束名>;
3. 主键约束
主键约束(primary key)的完整称呼是“主键约束”,是 MySQL 中使用最为频繁的约束。一般情况下,为了便于 DBMS 更快的查找到表中的记录,都会在表中设置一个主键。
使用主键应注意以下几点:
- 每个表只能定义一个主键。
- 主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在有相同主键值的两行数据。这是唯一性原则。
3.1 创建表时添加主键
格式
<字段名> <数据类型> PRIMARY KEY;
3.2 在修改表时添加主键
ALTER TABLE <数据表名> MODIFY 字段名 PRIMARY KEY;
3.3 删除主键
ALTER TABLE <数据表名> DROP PRIMARY KEY;
4. 外键约束
- 外键约束:foreign key,让表于表产生关系,从而保证数据的正确性。
4.1 创建表时添加外键
格式
[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…]
REFERENCES <主表名> 主键列1 [,主键列2,…]
4.2 在修改表时添加主键
ALTER TABLE <数据表名> ADD CONSTRAINT <外键名> FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);
4.3 删除主键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;