约束

概念

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

分类

  1. 主键约束:primary key;
  2. 非空约束:not null;
  3. 唯一约束:unique;
  4. 外键约束:foreign key

非空约束:not null

  1. 创建表时添加约束 CREATE TABLE stu( id INT, name VARCHAR(20) NOT NULL –name为非空 );
  2. 创建表完后,添加非空约束 ALTER TABLE stu MODIFY name VARCHAR(20) NOT NULL;
  3. 删除name的非空约束 ALTER TABLE stu MODIFY name VARCHAR(20);

唯一约束:unique,值不能重复

  1. 创建表时添加唯一约束
1
2
3
4
5
CREAT TABLE stu(
id INT,
phone_number VARCHAR(20) UNIQUE
);

  • 注意mysql中,唯一约束限定的列的值可以有多个null
  1. 删除唯一约束 ALTER TABLE stu DROP INDEX phone_number;
  2. 在创建表后,添加唯一约束 ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;

主键约束:primary key

  1. 注意:
  2. 含义:非空且唯一
  3. 一张表只能有一个字段为主键
  4. 主键就是表中的唯一标识
  5. 在创建表时,添加主键约束
1
2
3
4
5
create table stu(
id int primary key
name varchar(20)
);

  1. 删除主键 ALTER TABLE stu DROP PRIMARY KEY;
  2. 创建完表后,添加主键 ALTER TABLE stu MODIFY id INT PRIMARY KEY;
  3. 自动增长
  4. 概念:如果某一列是数值类型的,使用auto_increment可以完成值的自动增长
  5. 在创建表时添加主键约束,并且完成主键自增长
1
2
3
4
5
create table stu(
id int primary key auto_increment
name varchar(20)
);

  1. 删除自动增长 ALTER TABLE stu MODIFY id INT;
  2. 添加自动增长 ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;

外键约束

  1. 在创建表时,可以添加外键

* 语法:

1
2
3
4
5
6
create table 表名(
...
外键列
constraint 外键名称 foreign key (外键列名称)references 主表名称(主表列名称)
);

  1. 删除外键 ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
  2. 创建表之后,添加外键 ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);
  3. 级联操作
  4. 添加级联操作 语法:
1
2
3
ALTER TABLE 表名 ADD CONSTRAINT 外键名称
FOREIGN KEY (外键字段名称) REFRERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE;

  1. 分类:
  2. 级联更新:ON UPDATE CASCADE
  3. 级联删除:ON DELETE CASCADE