11 数据完整性之完整性约束类型

在上一节中,我们讨论了数据完整性的基本概念,强调了数据完整性在关系数据库中的重要性。如今,我们将深入了解 完整性约束 的不同类型。这些约束是用来确保数据库中数据的质量和一致性的重要工具。

1. 完整性约束的作用

完整性约束的主要作用是限制数据的输入,以确保数据符合预期的规则和标准。通过实施这些约束,我们可以避免无效或错误的数据进入数据库,从而提高数据的可靠性。

2. 完整性约束的类型

完整性约束可以分为以下几种主要类型:

2.1 主键约束

主键约束用于唯一标识数据库表中的每一条记录。每个表只能有一个主键,且主键的值必须独一无二,不能为 NULL

案例
假设我们有一个学生信息表 students,每个学生都有一个唯一的学号作为主键。

1
2
3
4
5
CREATE TABLE students (
student_id INT PRIMARY KEY,
name VARCHAR(100),
age INT
);

在这个例子中,student_id 列为主键,确保了每个学生的学号是唯一的。

2.2 外键约束

外键约束用于建立两个表之间的关联。它指向另一表的主键,确保引用的实体在被引用表中存在。外键约束可以维护数据之间的关系完整性。

案例
如果我们有一个课程表 courses,可以通过外键与 students 表关联。

1
2
3
4
5
6
CREATE TABLE courses (
course_id INT PRIMARY KEY,
course_name VARCHAR(100),
student_id INT,
FOREIGN KEY (student_id) REFERENCES students(student_id)
);

在此例中,student_id 列为外键,确保所选课程的学生在 students 表中是有效的。

2.3 唯一约束

唯一约束用于确保某一列的值在数据库表中是唯一的,类似于主键,但允许 NULL 值。一个表可以有多个唯一约束。

案例
students 表中,我们可能希望确保每个学生的电子邮件地址是唯一的。

1
2
ALTER TABLE students
ADD UNIQUE (email);

这里,通过添加唯一约束,确保 email 列中没有重复的值。

2.4 检查约束

检查约束用于限制列中的值,确保数据满足特定条件。该约束可以用于确保列数据的合理性。

案例
假设我们希望限制学生的年龄为合法范围(如 0 至 120 岁),可以这样设置检查约束:

1
2
ALTER TABLE students
ADD CONSTRAINT chk_age CHECK (age >= 0 AND age <= 120);

这条约束确保了 age 列中的值符合规定范围。

2.5 非空约束

非空约束确保列中不能有 NULL 值,保证必须提供数据的列被填充。

案例
students 表中,我们希望确保每个学生都有姓名。

1
2
3
4
5
CREATE TABLE students (
student_id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age INT
);

此时,name 列具有非空约束,确保学生的姓名不能为空。

2.6 默认约束

默认约束用于在未指定值时为列提供默认值。当插入数据时,如果没有提供该列的值,将使用默认值。

案例
我们为学生的年龄列设置默认值为 18:

1
2
3
4
5
CREATE TABLE students (
student_id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age INT DEFAULT 18
);

这里,如果插入学生信息时没有指定年龄,则会自动设置为 18。

3. 总结

完整性约束是保障数据质量的关键工具。在关系数据库中,我们通过主键、外键、唯一、检查、非空和默认等多种约束类型来维护数据完整性。每种约束类型对应着特定的数据质量需求,对于复杂的数据管理场景尤为重要。

在下一节中,我们将探讨实现数据完整性的方法,包括如何在数据库设计和操作中应用这些约束策略。通过了解和实施这些约束,我们可以确保数据库中数据的有效性和可靠性。

11 数据完整性之完整性约束类型

https://zglg.work/related-database-zero/11/

作者

AI免费学习网(郭震)

发布于

2024-08-11

更新于

2024-08-12

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论