第5章 MySQL主键、外键、唯一键
- 作者
- Name
- 青玉白露
- Github
- @white0dew
- Modified on
- Reading time
- 3 分钟
阅读:.. 评论:..
MySQL的数据完整性,包括主键与外键、唯一约束与检查约束的使用。通过这些内容,你将学会如何在数据库中确保数据的准确性和一致性,并理解MySQL约束的实现机制。
5.1 主键与外键
5.1.1 主键(Primary Key)
主键是表中一列或多列的组合,其值在表中必须唯一,并且不能为NULL。主键用于唯一标识表中的每一行记录。
创建主键
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL );
添加主键
ALTER TABLE users ADD PRIMARY KEY (id);
删除主键
ALTER TABLE users DROP PRIMARY KEY;
5.1.2 外键(Foreign Key)
外键是用于建立和强制两个表之间的关系的键。外键在一张表中是一列或多列,其值必须在另一张表的主键或唯一键中存在。
创建外键
CREATE TABLE orders ( order_id INT AUTO_INCREMENT PRIMARY KEY, order_date DATE NOT NULL, user_id INT, FOREIGN KEY (user_id) REFERENCES users(id) );
添加外键
ALTER TABLE orders ADD FOREIGN KEY (user_id) REFERENCES users(id);
删除外键
ALTER TABLE orders DROP FOREIGN KEY fk_user_id;
5.1.3 底层原理:约束的实现机制
MySQL在创建和管理主键与外键时,会在表的数据字典中存储相应的元数据。主键约束确保每一行记录的唯一性,而外键约束确保数据的引用完整性。
约束实现过程图示
为了更好地理解MySQL约束的实现机制,我们可以使用PlantUML绘制约束实现过程的图示,并使用样式和颜色进行美化。
5.2 唯一约束
5.2.1 唯一约束(Unique Key)
唯一约束确保表中的某一列或某些列的值是唯一的,不允许重复。
创建唯一约束
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL UNIQUE );
添加唯一约束
ALTER TABLE users ADD UNIQUE (email);
删除唯一约束
ALTER TABLE users DROP INDEX email;
MySQL在创建和管理唯一约束与检查约束时,会在表的数据字典中存储相应的元数据。唯一约束确保列中的值是唯一的,而检查约束确保列中的值符合特定条件。
5.2.2 底层原理:唯一约束
唯一约束实现过程图示
## 5.3 检查约束5.3.1 检查约束(Check Constraint)
检查约束用于确保列中的数据符合特定条件。MySQL 8.0及以上版本支持检查约束。
创建检查约束
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, age INT CHECK (age >= 18) );
添加检查约束
ALTER TABLE users ADD CONSTRAINT chk_age CHECK (age >= 18);
删除检查约束
ALTER TABLE users DROP CHECK chk_age;