一、实体完整性约束

表中的一行数据代表一个实体(entity),实体完整性的作用即是标识每一行数据不重复、实体唯一性。

1. 主键约束

PRIMARY KEY 唯一,标识表中的一行数据,此列的值不可重复,且不为NULL

  1. CREATE TABLE subject(
  2. subjectId INT PRIMARY KEY,
  3. subjectName VARCHAR(20),
  4. subjectHours INT
  5. ) charset=utf8;

2. 唯一约束

UNIQUE 唯一,标识表中的一行数据,不可重复,可以为NULL

CREATE TABLE subject (
  subjectId INT PRIMARY KEY,
  subjectName VARCHAR(20) UNIQUE,
  subjectHours INT
)charset=utf8

3. 自动增长列

AUTO_INCREMENT 自动增长,给主键数值列添加自动增长,从1开始,每次加1。不能单独使用,和主键配合使用。

CREATE TABLE subject (
  subjectId INT PRIMARY KEY AUTO_INCREMENT,
  subjectName VARCHAR(20) UNIQUE,
  subjectHours INT
)charset=utf8

二、域完整性约束

限制列的单元格的数据正确性

1. 非空约束

NOT NULL 非空,此列必须有值

CREATE TABLE subject (
  subjectId INT PRIMARY KEY AUTO_INCREMENT,
  subjectName VARCHAR(20) UNIQUE NOT NULL,
  subjectHours INT
)charset=utf8

2. 默认值约束

default 值,为列赋予默认值,当新增数据不指定值时,书写 DEFAULT 以指定的默认值进行填充。

CREATE TABLE subject (
  subjectId INT PRIMARY KEY AUTO_INCREMENT,
  subjectName VARCHAR(20) UNIQUE NOT NULL,
  subjectHours INT DEFAULT 20
)charset=utf8

3. 引用完整性约束

语法:CONSTRAINT 引用名 FOREIGN KEY (列名) REFERENCES 被引用表名(列名);
详情:FOREIGN KEY 引用外部表的某个列的值,新增数据时,约束此列的值必须是引用表中存在的
注意:CONSTRAINT 的引用名命名规则是fk表名列名

CREATE TABLE Special(
    id INT PRIMARY KEY AUTO_INCREMENT,
  SpecailName VARCHAR(20) UNIQUE NOT NULL
)charset=utf8

CREATE TABLE subject(
    subjectId INT PEIMARY KEY AUTO_INCREMENT,
  subjectName VARCHAR(20) UNIQUE NOT NULL,
  subjectHours INT DEFAULT 20,
  specialId INT NOT NULL,
  CONSTRAINT fk_subject_specialId REFERENCES Special(id)
)charset=utf8;