MySQL约束知识点

发布于:2025-08-16 ⋅ 阅读:(17) ⋅ 点赞:(0)

1. PRIMARY KEY(主键约束)

作用

唯一标识表中的每条记录,确保记录的唯一性且不为空

特点

一个表只能有一个主键,主键字段的值不能重复且不能为NULL

示例

-- 创建表时定义主键
CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);

-- 复合主键(多个字段组合作为主键)
CREATE TABLE student_courses (
    student_id INT,
    course_id INT,
    PRIMARY KEY (student_id, course_id)
);

2. FOREIGN KEY(外键约束)

作用

用于关联两个表,确保一个表中的数据匹配另一个表中的数据

特点

建立表之间的父子关系,子表的外键值必须匹配父表的主键值或为NULL

示例

-- 父表
CREATE TABLE departments (
    dept_id INT PRIMARY KEY,
    dept_name VARCHAR(50)
);

-- 子表(含外键)
CREATE TABLE employees (
    emp_id INT PRIMARY KEY,
    emp_name VARCHAR(50),
    dept_id INT,
    FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);

3. NOT NULL(非空约束)

作用

确保字段不能存储NULL值

示例

CREATE TABLE users (
    id INT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL
);

4. UNIQUE(唯一约束)

作用

确保字段的值是唯一的,但允许NULL值(一个字段可以有多个NULL)

特点

与主键的区别是,一个表可以有多个UNIQUE约束,且UNIQUE字段允许NULL

示例

CREATE TABLE customers (
    id INT PRIMARY KEY,
    phone VARCHAR(20) UNIQUE,
    email VARCHAR(100) UNIQUE
);

5. CHECK(检查约束)

作用

确保字段的值满足指定的条件

注意

MySQL 8.0.16及以上版本才完全支持CHECK约束

示例

CREATE TABLE products (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    price DECIMAL(10,2) CHECK (price > 0),
    stock INT CHECK (stock >= 0)
);

6. DEFAULT(默认值约束)

作用

当插入数据时,如果未指定该字段的值,则使用默认值

示例

CREATE TABLE orders (
    id INT PRIMARY KEY,
    order_date DATE DEFAULT CURRENT_DATE(),
    status VARCHAR(20) DEFAULT 'pending'
);

约束的作用总结

1. 保证数据的完整性:防止无效或不合理的数据进入表中

2. 保证数据的一致性:尤其是通过外键约束维护表之间的关系

3. 提高查询性能:主键和唯一约束会自动创建索引

4. 简化应用程序逻辑:数据库层直接处理数据验证,减少应用程序代码


网站公告

今日签到

点亮在社区的每一天
去签到