一、实体完整性约束
表中的一行数据代表一个实体(entity),实体完整性的作用即是标识每一行数据不重复、实体唯一性。
1. 主键约束
PRIMARY KEY 唯一,标识表中的一行数据,此列的值不可重复,且不为NULL
CREATE TABLE subject(subjectId INT PRIMARY KEY,subjectName VARCHAR(20),subjectHours INT) 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;
