关系型数据库的约束机制
约束机制提供了一条强大而建议的途径来保证数据库中数据的完整性。
数据完整性的三个规则
实体完整性
指关系的主属性(就是俗称主键的一些字段,主键的组成部分)不能出现空值和重复的值。在InnoDB存储引擎中,用户可以定义主键(Primary Key)和唯一(Unique Key)约束来保证实体的完整性。
域完整性
保证数据每列的值满足特定的条件。InnoDB存储引擎中保证域完整性的方法:<1>选择合适的数据类型保证一个数据值满足特定条件;<2>外键(Foreign Key)约束;<3>编写触发器.
参照完整性
保证两张表之间的关系。InnoDB存储引擎支持外键,用户可以通过外键来强制参照完整性,也可以通过编写触发器来强制执行。
约束
主键约束(PRIMARY KEY)
主键约束指定表中的一列或者几列的组合的值在表中不能出现空值和重复值,即唯一的标识一行记录。其中IMAGE和TEXT类型的列不能被指定为主关键字,主键列也不能有NULL属性。其中多列组成的主键叫联合主键,而联合主键只能设定为表级约束;单列组成的主键,既可以设定为列级约束,也可以设定为表级约束。
单列主键
-- 直接对字段田间primary key 关键字。
create table student(
id INT PRIMARY KEY,
name VARCHAR(20)
)
-- 额外添加约束
create table student(
id INT NOT NULL,
name VARCHAR(20),
CONSTRAINT PK_stu_ID PRIMARY KEY(id)
-- 其中PK_stu_ID为约束的名称
)
联合主键
如果一个列不能满足需求,可以使用多个列组合为主键。
CREATE TABLE student (
name VARCHAR (20),
class VARCHAR(20),
age INT,
CONSTRAINT PK_stu_ID PRIMARY KEY(name,class)
)
其他操作
-- 删除主键约束
ALTER TABLE student DROP PRIMARY KEY;