MySQL 中的字段约束用于限制字段的取值范围,确保数据的一致性和完整性。常见的字段约束包括:
- PRIMARY KEY:定义主键约束,唯一标识表中的每一行数据。
- FOREIGN KEY:定义外键约束,确保两个表之间的关联完整性。
- UNIQUE:确保字段值的唯一性,但允许 NULL 值。
- NOT NULL:确保字段值不为空。
- DEFAULT:为字段指定默认值。
- CHECK:定义自定义的数据完整性约束,例如范围限制或正则表达式。
- AUTO_INCREMENT:自动递增字段的值,通常用于主键。
以下是每种约束的示例:
- PRIMARY KEY 约束:
sql
CREATE TABLE students (
student_id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
- FOREIGN KEY 约束:
sql
CREATE TABLE orders (
order_id INT PRIMARY KEY,
product_id INT,
quantity INT,
FOREIGN KEY (product_id) REFERENCES products (product_id)
);
- UNIQUE 约束:
sql
CREATE TABLE users (
username VARCHAR(50) UNIQUE,
email VARCHAR(100) UNIQUE,
age INT
);
- NOT NULL 约束:
sql
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
department_id INT
);
- DEFAULT 约束:
sql
CREATE TABLE messages (
message_id INT PRIMARY KEY,
sender_id INT,
receiver_id INT,
message_text VARCHAR(255) DEFAULT 'No message'
);
- CHECK 约束:
sql
CREATE TABLE products (
product_id INT PRIMARY KEY,
name VARCHAR(50),
price DECIMAL(10, 2),
quantity INT,
CHECK (price > 0),
CHECK (quantity >= 0)
);
- AUTO_INCREMENT 约束:
sql
CREATE TABLE invoices (
invoice_id INT PRIMARY KEY AUTO_INCREMENT,
customer_id INT,
total_amount DECIMAL(10, 2)
);
通过使用这些字段约束,可以确保数据库中的数据完整性,并避免不符合预期的数据插入或修改操作。