根据给定的文件信息,我们可以总结出以下几个关键知识点:
### 1. 常见的数据库表约束
在关系型数据库管理系统(RDBMS)如MySQL中,表约束是用来确保数据完整性和一致性的规则。常见的表约束包括但不限于主键、唯一键、外键等。
#### 主键(Primary Key)
- **定义**:每个表必须有一个主键,主键用来唯一标识表中的每一行记录。
- **特点**:
- 每个表只能有一个主键。
- 主键不能包含空值(NULL)。
- 主键可以是单个字段或多个字段组合。
- **创建方式**:
- 在创建表时指定:`CREATE TABLE table_name (id INT PRIMARY KEY, ...);`
- 修改表结构时添加:`ALTER TABLE table_name ADD PRIMARY KEY (id);`
#### 唯一键(Unique Key)
- **定义**:用于保证表中某列或多列的组合不出现重复值。
- **特点**:
- 可以为一个或多个列设置唯一键。
- 唯一键可以包含空值。
- 一个表可以有多个唯一键。
- **创建方式**:
- 创建表时指定:`CREATE TABLE table_name (id INT UNIQUE, ...);`
- 修改表结构时添加:`ALTER TABLE table_name ADD UNIQUE (column_name);`
#### 外键(Foreign Key)
- **定义**:用于建立两个表之间的关联,通过引用另一个表的主键或唯一键来实现。
- **特点**:
- 用于保持参照完整性。
- 可以定义为ON DELETE CASCADE或ON UPDATE CASCADE等操作,以在更新或删除主表中的记录时自动处理从表。
- **创建方式**:
- 创建表时指定:`CREATE TABLE table_name (id INT, foreign_id INT, FOREIGN KEY (foreign_id) REFERENCES other_table(primary_id));`
- 修改表结构时添加:`ALTER TABLE table_name ADD FOREIGN KEY (foreign_id) REFERENCES other_table(primary_id);`
### 2. 主键与唯一键的比较
- **共同点**:
- 都用于保证数据的唯一性。
- **不同点**:
- **主键**是表中的唯一标识符,且不允许为空;而**唯一键**允许为空。
- 表中只能有一个主键,但可以有多个唯一键。
- 主键可以自动被索引,而唯一键需要显式创建索引。
### 3. 修改表时添加/删除约束
- **添加约束**:
- **主键**:`ALTER TABLE table_name ADD PRIMARY KEY (column_name);`
- **唯一键**:`ALTER TABLE table_name ADD UNIQUE (column_name);`
- **外键**:`ALTER TABLE table_name ADD FOREIGN KEY (column_name) REFERENCES referenced_table(referenced_column);`
- **删除约束**:
- **主键**:`ALTER TABLE table_name DROP PRIMARY KEY;`
- **唯一键**:`ALTER TABLE table_name DROP INDEX index_name;`
- **外键**:`ALTER TABLE table_name DROP FOREIGN KEY constraint_name;`
### 4. 标识列(Identity Column)
- **定义**:标识列是一种特殊的字段类型,通常用作主键,其值会自动递增。
- **特点**:
- 在插入新记录时自动生成唯一的标识符。
- 适用于需要自动生成唯一编号的场景。
- **创建方式**:
- 创建表时指定:`CREATE TABLE table_name (id INT AUTO_INCREMENT PRIMARY KEY, ...);`
- 修改表结构时添加:`ALTER TABLE table_name MODIFY id INT AUTO_INCREMENT PRIMARY KEY;`
### 5. 事务(Transaction Control Language, TCL)
- **定义**:事务是指一系列数据库操作作为一个整体来执行的过程。
- **特点**:
- 原子性(Atomicity):事务中的所有操作要么全部成功,要么全部失败。
- 一致性(Consistency):事务执行前后,数据必须保持一致状态。
- 隔离性(Isolation):并发执行的事务之间不会相互干扰。
- 持久性(Durability):一旦事务提交,它对数据库所做的更改就是永久的。
- **命令**:
- `START TRANSACTION;` 开始事务
- `COMMIT;` 提交事务
- `ROLLBACK;` 回滚事务
通过理解这些基础概念和操作,可以有效地管理和维护数据库中的数据,确保数据的准确性和可靠性。在实际应用中,合理地利用这些功能能够极大地提高数据库系统的稳定性和性能。