mysql 命令语法操作篇 数据库约束有哪些 怎么使用

发布于:2025-08-18 ⋅ 阅读:(12) ⋅ 点赞:(0)

创建一个mysql数据表

create table users (  -- 创建一个 users 表,包含 id name age gender四个字段
  id int comment '字段唯一值',
  name varchar(50) comment '用户名, varchar(50) -> 代表字段最大长度为50个字符',
  age int comment '年龄',
  gender char (1) comment '性别, char(1) -> 代表字段最大长度为1个字符, 1个字符代表一个字节'
) comment '测试用户表';

insert into users values (1, '张三', 18, '男'); -- 向users表中插入一条数据

insert into users values (2, '张三', 18, '男'); -- 向users表中插入一条数据

insert into users values (3, '李四', 19, '女'); -- 向users表中插入一条数据

给users数据库表添加约束  方式字段为空或id重复

create table users (  -- 创建一个附带约束的表 
  id int primary key comment '字段 primary key -> 主键',
  name varchar(50) not null unique comment '用户名, not null -> 不可为空, unique -> 唯一值',
  age int comment '年龄',
  gender char (1) default '男' comment '性别, default ‘男’ -> 默认设置为 男'
) comment '测试用户表';

数据库约束有哪些 怎么使用

1. 主键约束(PRIMARY KEY)

作用

  • 唯一标识表中的每一行数据

  • 不允许 NULL

  • 一个表只能有一个主键(可以是单列或组合列)

语法

CREATE TABLE users (
    id INT PRIMARY KEY,  -- 主键
    name VARCHAR(50)
);

组合主键

CREATE TABLE orders (
    order_id INT,
    product_id INT,
    PRIMARY KEY (order_id, product_id)  -- 联合主键
);

2. 唯一约束(UNIQUE)

作用

  • 保证某一列或多列的值唯一(可有多个唯一约束)

  • 与主键不同,唯一约束允许 NULL(但多个 NULL 被视为不同值)

语法

CREATE TABLE users (
    email VARCHAR(100) UNIQUE
);

组合唯一

CREATE TABLE product (
    category_id INT,
    product_name VARCHAR(50),
    UNIQUE (category_id, product_name)
);

3. 非空约束(NOT NULL)

作用

  • 规定列必须有值,不能为 NULL

语法

CREATE TABLE users (
    name VARCHAR(50) NOT NULL
);

4. 默认值约束(DEFAULT)

作用

  • 在插入数据时,如果没有指定该列的值,则使用默认值

语法

CREATE TABLE users (
    status VARCHAR(20) DEFAULT 'active'
);

5. 检查约束(CHECK)

作用

  • 限制列的值必须满足条件(MySQL 8.0.16+ 正式支持)

语法

CREATE TABLE users (
    age INT CHECK (age >= 18)
);

注意:MySQL 5.x 虽然可以写 CHECK,但实际上会被忽略。


6. 外键约束(FOREIGN KEY)

作用

  • 保证两张表之间的引用完整性

  • 当子表外键引用的父表记录被删除/更新时,可以设置级联操作

语法

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    user_id INT,
    FOREIGN KEY (user_id) REFERENCES users(id)
    ON DELETE CASCADE
    ON UPDATE CASCADE
);

常见 ON DELETE / ON UPDATE 行为

选项 说明
CASCADE 跟随父表一起删除/更新
SET NULL 置为 NULL
RESTRICT 阻止删除/更新(默认)
NO ACTION 类似 RESTRICT

7. 自增约束(AUTO_INCREMENT)

作用

  • 用于生成唯一的数字(通常配合主键)

语法

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50)
);

总结对比表

约束类型 是否允许 NULL 是否唯一 作用范围 是否可组合
PRIMARY KEY 一张表一个 可组合列
UNIQUE 多个可用 可组合列
NOT NULL 单列 可与其他配合
DEFAULT 单列 可与其他配合
CHECK 取决于条件 单列/多列 可与其他配合
FOREIGN KEY 取决于父表 跨表 可组合列
AUTO_INCREMENT 单列 常与主键配合

网站公告

今日签到

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