对表中的数据进行限定, 保证数据的正确性、有效性和完整性。

一. 非空约束


​NOT NULL​​, 值不能为null(对于字符串类型要设置非空, 防止空指针异常)

  1. 添加非空约束的两种方式
  • 创建表时, 添加非空约束
CREATE TABLE stu(
id INT,
name VARCHAR(20) NOT NULL -- 添加了NOT NULL非空约束
);
  • 创建完表后, 添加非空约束
    ​​​ALTER TABLE stu MODIFY name VARCHAR(20) NOT NULL;​
  1. 删除name的非空约束
    ​ALTER TABLE stu MODIFY name VARCHAR(20);​

二. 唯一约束


unique, 某一列的值不能重复

Tips: 唯一约束可以有NULL值, 且NUlLL可以重复

  1. 添加唯一约束的两种方式
  • 创建表示, 给某字段添加唯一约束
CREATE TABLE stu(
id INT,
phone_number VARCHAR(11) UNIQUE -- 添加唯一约束
);
  • 创建表之后, 添加唯一约束
    ​​​ALTER TABLE stu MODIFY phone_number VARCHAR(11) UNIQUE;​
  1. 删除唯一约束
    ​ALTER TABLE stu DROP INDEX phone_number;​

唯一约束, 也叫唯一索引, 因此与删除非空约束的方式是不同的.

三. 主键约束


主键(primary key) : 非空且唯一.

  1. 一张表只能有一个字段为主键.
  2. 主键就是表中记录的唯一标识
  1. 添加主键约束的两种方式
  • 创建表时, 添加主键约束
CREATE TABLE stu(
id INT PRIMARY KEY, -- 添加主键约束
phone_number VARCHAR(11)
);
  • 创建完标后, 添加主键
    ​​​ALTER TABLE stu MODIFY id INT PRIMARY KEY;​
  1. 删除主键约束
    ​ALTER TABLE stu DROP PRIMARY KEY;​

3.1 自动增长


在添加主键时, 通常会配合自动增长一起使用.

  1. 概念 : 如果某一列是数值类型, 使用 ​​auto_increment​​ 可以完成值的自动增长
  2. 在创建表时, 添加主键约束, 并完成主键自增长.
create table stu(
id int primary key auto_increment, --给id添加主键约束,并自增长
name varchar(20)
);

添加自动增长的第二种方式
​​​ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;​

  1. 删除自动增长
    ​​​ALTER TABLE stu MODIFY id INT;​

四. 外键约束


foreign key, 让表与表产生关系, 从而保证数据的正确性.

  1. 添加外键的两种方式
  • 创建表示添加外键
create table 表名(
...
外键列
constraint 外键名称 foreign key (外键列名称) references 主键名称(主表列名称)
)

Tips : constraint : 强制,限制, 约束
references 参考; 标记

  • 创建表之后, 添加外键
    ​​​ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主键名称(主表列名称);​
  1. 删除外键
    ​​​ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;​

4.1 级联操作


两张表通过外键连接, 如果一张表修改数据, 如何同时修改主键的那张表的所有数据. 这是通过在添加外键的同时, 添加上级联操作语句即可同时修改两张表的数据.

  1. 添加级联操作
    语法 : ​​​ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATA CASCADE ON DELETE CASCADE;​
  2. 分类 :
  • 级联更新 : ​​ON UPDATE CASCADE​
  • 级联删除 : ​​ON DELETE CASCADE​

Tips : CASCADE : 串联