MySQL数据库完整性约束

前言

MySQL是一个功能强大的关系型数据库管理系统,它允许用户创建多种类型的完整性约束来确保数据的一致性和完整性。本文将介绍MySQL的数据完整性约束,并解释它们的作用和用法。

介绍 

数据完整性约束是用于限制数据库中数据的值范围和格式的规则。它们确保数据的正确性和一致性,并帮助维护数据库的完整性。

数据完整性约束分为实体完整性(entity integrity)、域完整性(domain integrity) 、引用完整性(referential integrity)及用户的完整性(user-defined integrity)。

以下是MySQL中常用的数据完整性约束:

  1. 主键约束(Primary Key Constraint):主键是一列或一组列,其值能唯一标识一条记录。主键约束确保主键列的值不重复且不为空。在一个表中,只能有一个主键。

  2. 唯一约束(Unique Constraint):唯一约束确保在一个表中的某一列或一组列的值是唯一的,即不重复且不为空。与主键不同的是,一个表可以有多个唯一约束。

  3. 外键约束(Foreign Key Constraint):外键是一个表中的列,它引用了另一个表中的主键(或唯一约束)。外键约束确保在外键列中的值必须存在于引用表的主键(或唯一约束)中。

  4. 非空约束(Not Null Constraint):非空约束确保某一列的值不为空。即使表中的其他列允许为空,也可以通过非空约束保证特定列的值不为空。

  5. 检查约束(Check Constraint):检查约束用于限制某一列的值必须满足特定的条件。例如,可以使用检查约束确保某一列中的值必须大于零或在指定的值范围内。

创建表时定义完整性约束:

CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    age INT,
    UNIQUE (id)
);
 

其中 id列定义了主键约束确保其值唯一且不为空,name列定义了非空约束确保其值不为空。通过unique关键字,id列还定义了唯一约束。

定义主键

主键就是表中的一列或多个列的一组,其值能唯一地标识表中的每一行。MySQL通过定义PRMIARY KEY 约束来创建主键,而且 PRIMARY KEY 约束中的列不能取空值。如果主键约束是由多列组合定义的,则某一列的值可以重复,但PRIMARY KEY 约束定义中的所有列的组合值必须唯一。

 用户可以用两种方式定义主键,作为列或表的完整性约束,作为列的完整性约束时,只需在列的定义的时候加上关键字PRIMARY KEY;作为表的完整性约束时,需要在语句最后加上一条PRIMARY KEY(列名,.....)语句。

[例]

CREATE TABLE school_123

(
学校编号 varchar(10) NULL,
学校名称 varchar(8) NOT NULL PRIMARY KEY ,
设立时间 date
);

主键定义与NOT NULL之后,也可以在主键之后指NOT NULL.如果作为主键的一部分的一个列没有定义为NOT NULL,MySQL就自动把这个列定义为NOT NULL。学校名称列可以没有NOT NULL声明,为了清楚起见,最好包含这个空指定。 

 当表中的主键为复合主键时,只能将其定义为表的完整性约束。

代替健约束

代替键像主键一样,是表的一列或一组列,它们的值在任何时候都是唯一的。因为一个表只能有一个主键,所以当一个表有多个列需要建立唯一性约束时,代替键是没有被选作主键的候选键。定义代替键的关键字是UNIQUE。

【例】

CREATE TABLE book_copy1
(
图书编号 varchar(20) NOT NULL,
书名     varchar(20) NOT NULL,
出版日期 date NULL,
PRIMARY KEY(图书编号),
);

CHECK完整性约束

CHECK约束在创建表的时候定义,可以定义为列完整性约束,也可以定义为表完整性约束。

语法格式:CHECK(表达式)

【例】

CREATE TABLE student

(
学号 char(6) NOT NULL,
性别 char(2) NOT NULL CHECK(性别 IN ('男','女'))
);

这里,CHECK约束制定了性别只允许输入'男'或‘女’,由于CHECK包含在列自身的定义中,因此CHECK 完整性约束被定义为列完整性约束。

添加数据完整性约束到已存在的表:

ALTER TABLE students
ADD CONSTRAINT fk_class FOREIGN KEY (class_id) REFERENCES classes(id);
 

上述代码为students表添加了外键约束。其中,fk_class是外键约束的名称,class_id是外键列名,classes是引用表的名称,id是引用表的主键列名。

总结 数据完整性约束是MySQL中确保数据一致性和完整性的重要机制。通过使用主键约束、唯一约束、外键约束、非空约束和检查约束,可以有效地限制数据的值范围和格式。在创建表时定义数据完整性约束,或者在已存在的表上添加数据完整性约束,都可以提高数据库的可靠性和安全性。

总结

MySQL提供了丰富的数据完整性约束功能,它们可以根据实际业务需求进行灵活配置。在设计数据库时,合理使用数据完整性约束是保证数据质量和可靠性的重要手段。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值