98世界杯主题曲_世界杯4强 - dajimy.com

MySQL 数据库约束详解:确保数据完整性与一致性

在数据库设计中,约束(Constraints)是确保数据完整性和一致性的重要工具。MySQL 提供了多种约束类型,包括非空约束、唯一约束、主键约束、检查约束、默认约束和外键约束。本文将详细介绍这些约束的作用、常用格式以及如何在创建数据表时熟练运用它们。

1. 非空约束(NOT NULL)

作用:确保字段的值不能为 NULL。

常用格式:

字段名 数据类型 NOT NULL

示例:

CREATE TABLE employees (

id INT AUTO_INCREMENT PRIMARY KEY,

ename VARCHAR(255) NOT NULL,

salary DECIMAL(10, 2)

);

在这个例子中,ename 字段不能为 NULL。非空约束确保了该字段在插入数据时必须提供一个非 NULL 的值,从而避免了数据缺失的情况。

2. 唯一约束(UNIQUE)

作用:确保字段的值在整个表中是唯一的。多个 NULL 不算重复。

常用格式:

字段名 字段类型 UNIQUE

示例:

CREATE TABLE employees (

id INT AUTO_INCREMENT PRIMARY KEY,

email VARCHAR(255) UNIQUE,

ename VARCHAR(255) NOT NULL

);

在这个例子中,email 字段的值在整个表中必须是唯一的。唯一约束确保了该字段的值不会重复,从而避免了数据冗余的问题。

3. 主键约束(PRIMARY KEY)

特点:非空且唯一,一张表只能有一个主键。

常用格式:

字段名 数据类型 PRIMARY KEY

示例:

CREATE TABLE employees (

id INT AUTO_INCREMENT PRIMARY KEY,

email VARCHAR(255) UNIQUE,

ename VARCHAR(255) NOT NULL

);

在这个例子中,id 字段是主键,自动递增且唯一标识每一行数据。主键约束确保了该字段的值非空且唯一,从而提供了数据的唯一标识。

4. 检查约束(CHECK)

作用:确保字段的值满足指定的条件。

注意:MySQL 8.0.16 及以上版本支持 CHECK 约束,但之前的版本不支持。

常用格式:

字段名 数据类型 CHECK (条件)

示例:

CREATE TABLE employees (

id INT AUTO_INCREMENT PRIMARY KEY,

age INT CHECK (age >= 18),

ename VARCHAR(255) NOT NULL

);

在这个例子中,age 字段的值必须大于等于 18。检查约束确保了该字段的值满足指定的条件,从而避免了不符合要求的数据插入。

5. 默认约束(DEFAULT)

特点:保存数据时,未指定值则采用默认值。

常用格式:

列名 数据类型 DEFAULT 默认值

示例:

CREATE TABLE employees (

id INT AUTO_INCREMENT PRIMARY KEY,

ename VARCHAR(255) NOT NULL,

salary DECIMAL(10, 2) DEFAULT 0.00

);

在这个例子中,如果插入数据时未提供 salary 字段的值,则默认为 0.00。默认约束确保了在未指定值的情况下,字段能够自动填充默认值,从而简化了数据插入操作。

6. 外键约束(FOREIGN KEY)

作用:确保字段的值必须存在于另一个表的某个字段中,用于维护表之间的引用完整性。

常用格式:

CREATE TABLE table_name (

column_name datatype,

...

FOREIGN KEY (column_name) REFERENCES other_table(other_column)

);

示例:

CREATE TABLE departments (

dept_id INT AUTO_INCREMENT PRIMARY KEY,

dept_name VARCHAR(255) NOT NULL

);

CREATE TABLE employees (

id INT AUTO_INCREMENT PRIMARY KEY,

ename VARCHAR(255) NOT NULL,

dept_id INT,

FOREIGN KEY (dept_id) REFERENCES departments(dept_id)

);

在这个例子中,employees 表中的 dept_id 字段引用了 departments 表中的 dept_id 字段。外键约束确保了 dept_id 字段的值必须存在于 departments 表中,从而维护了表之间的引用完整性。

主键与唯一约束的区别

尽管主键(PRIMARY KEY)和唯一约束(UNIQUE)都具有非空且唯一的特性,但它们在实际使用中有一些关键的区别:

NULL 值:

主键:不能为 NULL。

唯一约束:可以为 NULL,并且允许多个 NULL 值。

唯一标识:

主键:用于唯一标识表中的每一行数据。

唯一约束:用于确保字段的值在整个表中是唯一的,但不一定用于唯一标识每一行数据。

数量限制:

主键:一张表只能有一个主键。

唯一约束:一张表可以有多个唯一约束。

自动索引:

主键:自动创建唯一索引。

唯一约束:自动创建唯一索引。

总结

通过合理使用这些约束,你可以确保数据的完整性和一致性。以下是每个约束的简要总结:

非空约束(NOT NULL):确保字段的值不能为 NULL。

格式:字段名 数据类型 NOT NULL

唯一约束(UNIQUE):确保字段的值在整个表中是唯一的,多个 NULL 不算重复。

格式:字段名 字段类型 UNIQUE

主键约束(PRIMARY KEY):非空且唯一,一张表只能有一个主键。

格式:字段名 数据类型 PRIMARY KEY

检查约束(CHECK):确保字段的值满足指定的条件。

格式:字段名 数据类型 CHECK (条件)

默认约束(DEFAULT):保存数据时,未指定值则采用默认值。

格式:列名 数据类型 DEFAULT 默认值

外键约束(FOREIGN KEY):确保字段的值必须存在于另一个表的某个字段中,用于维护表之间的引用完整性。

格式:FOREIGN KEY (column_name) REFERENCES other_table(other_column)

通过熟练掌握这些约束,你可以在创建数据表时更好地管理和维护数据库中的数据,确保数据的完整性和一致性。