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

1. 主键约束

作用
主键约束(primary key),能够唯一确定表中的一条记录。我们通过给某个字段添加该约束,就可以使得该字段不重复且不为空。

语法

  1. #在创建表时,添加主键约束
  2. create table stu(
  3. id INT primary key, --给id添加主键约束
  4. name VARCHAR(20)
  5. );
  6. #联合主键
  7. CREATE TABLE stu (
  8. id INT,
  9. name VARCHAR(20),
  10. PRIMARY KEY(id, name) -- 此处字段idname一同作为主键,联合主键要求每个字段加起来不同即可(无需每个字段都不同)
  11. );
  12. #删除主键
  13. ALTER TABLE stu DROP PRIMARY KEY;
  14. #创建完表后,添加主键
  15. ALERT TABLE stu ADD PRIMARY KEY (id);
  16. #或
  17. ALTER TABLE stu MODIFY id INT PRIMARY KEY;

注意

  • 主键非空且唯一
  • 主键就是表中记录的唯一标识

2. 自增约束

作用
如果某一列是数值类型的,使用 auto_increment 可以来完成值得自动增长

语法

#在创建表时,添加主键约束,并且完成主键自增长
create table stu(
    id int primary key auto_increment,-- 给id添加主键约束,自增约束
    name varchar(20)
);

#删除自动增长
ALTER TABLE stu MODIFY id INT;

#添加自动增长
ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;

注意
自增约束一般与主键搭配使用


3. 唯一约束

作用
唯一约束修饰的字段不可以重复

语法

#在创建表时,添加主键约束,并且完成主键自增长,唯一约束
create table stu(
    id int primary key auto_increment UNIQUE,-- 给id添加主键约束,自增约束,唯一约束
    name varchar(20)
);

#或
CREATE TABLE stu (
    id int primary key auto_increment,
    name VARCHAR(20),
    UNIQUE(id, name)
);

#删除唯一约束
ALTER TABLE stu DROP INDEX phone_number;

#在创建表后,添加唯一约束
ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;

注意

  • mysql中,唯一约束限定的列的值可以有多个null
  • (根据NULL的定义,NULL表示的是未知,因此两个NULL比较的结果既不相等,也不不等,结果仍然是未知。根据这个定义,多个NULL值的存在应该不违反唯一约束,所以是合理的,在oracel也是如此。)

4. 非空约束

作用
非空约束(not null)约束的字段,值不能为null

语法

#创建表时添加约束
CREATE TABLE stu(
    id INT,
    NAME VARCHAR(20) NOT NULL -- name为非空
);

#删除name的非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20);

#创建表完后,添加非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;

5. 默认约束

作用
我们插入字段时没有传值,就会使用默认值

语法

#创建表时添加约束
CREATE TABLE stu (
    id INT DEFAULT 10,
    name VARCHAR(20),
);

6. 外键约束

作用
外键约束(foreign key)让表于表产生关系,从而保证数据的正确性。

语法

#在创建表时,可以添加外键
create table 表名(
    ....
    外键列
    constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
);

#删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

#创建表之后,添加外键
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

注意

  • 主表中没有的数据,在副表中是不可以使用的
  • 主表中的数据被副表引用时,是不可以删除的

7. 级联操作

语法

#添加级联操作
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 
FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE  ;

#分类:
    #级联更新
    ON UPDATE CASCADE 
    #级联删除
    ON DELETE CASCADE