目录
一、数据完整性
作用:
保证用户输入的数据保存到数据库中是正确的。
完整性的分类:
确保数据的完整性 = 在创建表时给表中添加约束
实体完整性;
域完整性;
引用完整性;
二、实体完整性
实体:即表中的一行(一条记录)代表一个实体(entity);
实体完整性的作用:标识每一行数据不重复。
约束类型:主键约束(primary key)、唯一约束(unique)、自动增长列(auto_increment0
1、主键约束(primary key)
注:每个表中要有一个主键。
特点:数据唯一,且不能为null。
添加主键的方式:
(1) CREATE TABLE student(
`id` INT PRIMARY KEY,
`name` VARCHAR(50)
);
(2) CREATE TABLE student(
`class` INT,
`id` INT,
`name` VARCHAR(50),
PRIMARY KEY(`id`,`class`)
);
(3) CREATE TABLE student(
`id` INT,
`name` VARCHAR(50)
);
ALTER TABLE school ADD PRIMARY KEY(id);
2、唯一约束(unique)
特点:数据不能重复。
添加唯一约束的方式
(1)CREATE TABLE student(
`id` INT PRIMARY KEY,
`name` VARCHAR(50) UNIQUE
);
(2)CREATE TABLE student(
`id` INT PRIMARY KEY,
`name` VARCHAR(50),
UNIQUE(`name`)
);
(3) CREATE TABLE student(
`id` INT PRIMARY KEY,
`name` VARCHAR(50)
);
ALTER TABLE student ADD UNIQUE(`name`)
3、自动增长列(auto_increment)
给主键添加自动增长的数值,列只能是整数类型。
默认初始值是从1开始的。
设置自动增长列的初始值
ALTER TABLE `表名` auto_increment =初始值;
三、域完整性
域完整性的作用:限制此单元格的数据正确,不对照此列的其它单元格比较
域代表当前单元格
域完整性约束:数据类型 非空约束(not null) 默认值约束(default)
check约束(mysql不支持)check(sex='男' or sex='女')
四、引用完整性(参照完整性)
一个表中某个字段的数据来源于另外一个表中某一个字段数据。
外键约束:FOREIGN KEY
创建student表
CREATE TABLE student(
` sid` INT PRIMARY KEY,
`name` VARCHAR(50),
`sex` VARCHAR(10)
);
添加外键的两种方式:
(1)创建score表
CREATE TABLE score(
`id` INT,
`score` DOUBLE,
`sid` INT,--外键的数据类型一定要与主键的类型一致。
CONSTRAINT fk_score_sid FOREIGN KEY(sid) REFERENCES student(sid)
);
英文单词: constraint 约束 references 参考
这里的fk_score_sid只是个名字,随便起都行,最好要做到见名知意。
(2)
ALTER TABLE score ADD CONSTRAINT fk_score_sid FOREIGN KEY(sid) REFERENCES student(sid);