对表中的数据进行限定, 保证数据的正确性、有效性和完整性。
一. 非空约束
NOT NULL
, 值不能为null(对于字符串类型要设置非空, 防止空指针异常)
- 添加非空约束的两种方式
- 创建表时, 添加非空约束
CREATE TABLE stu(
id INT,
name VARCHAR(20) NOT NULL -- 添加了NOT NULL非空约束
);
-
创建完表后, 添加非空约束
ALTER TABLE stu MODIFY name VARCHAR(20) NOT NULL;
-
删除name的非空约束
ALTER TABLE stu MODIFY name VARCHAR(20);
二. 唯一约束
unique, 某一列的值不能重复
Tips: 唯一约束可以有NULL值, 且NUlLL可以重复
- 添加唯一约束的两种方式
- 创建表示, 给某字段添加唯一约束
CREATE TABLE stu(
id INT,
phone_number VARCHAR(11) UNIQUE -- 添加唯一约束
);
-
创建表之后, 添加唯一约束
ALTER TABLE stu MODIFY phone_number VARCHAR(11) UNIQUE;
-
删除唯一约束
ALTER TABLE stu DROP INDEX phone_number;
唯一约束, 也叫唯一索引, 因此与删除非空约束的方式是不同的.
三. 主键约束
主键(primary key) : 非空且唯一.
- 一张表只能有一个字段为主键.
- 主键就是表中记录的唯一标识
- 添加主键约束的两种方式
- 创建表时, 添加主键约束
CREATE TABLE stu(
id INT PRIMARY KEY, -- 添加主键约束
phone_number VARCHAR(11)
);
-
创建完标后, 添加主键
ALTER TABLE stu MODIFY id INT PRIMARY KEY;
-
删除主键约束
ALTER TABLE stu DROP PRIMARY KEY;
3.1 自动增长
在添加主键时, 通常会配合自动增长一起使用.
- 概念 : 如果某一列是数值类型, 使用
可以完成值的自动增长auto_increment
- 在创建表时, 添加主键约束, 并完成主键自增长.
create table stu(
id int primary key auto_increment, --给id添加主键约束,并自增长
name varchar(20)
);
添加自动增长的第二种方式
ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;
-
删除自动增长
ALTER TABLE stu MODIFY id INT;
四. 外键约束
foreign key, 让表与表产生关系, 从而保证数据的正确性.
- 添加外键的两种方式
- 创建表示添加外键
create table 表名(
...
外键列
constraint 外键名称 foreign key (外键列名称) references 主键名称(主表列名称)
)
Tips : constraint : 强制,限制, 约束
references 参考; 标记
-
创建表之后, 添加外键
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主键名称(主表列名称);
-
删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
4.1 级联操作
-
添加级联操作
语法 :
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATA CASCADE ON DELETE CASCADE;
- 分类 :
- 级联更新 :
ON UPDATE CASCADE
- 级联删除 :
ON DELETE CASCADE