下面是一份 MySQL 进阶:库与表的 DDL 核心操作指南。
DDL(Data Definition Language)主要用于 定义和修改数据库结构,包括数据库、表、字段、索引等。
一、DDL 是什么
DDL(数据定义语言)主要包含:
| 操作 | 说明 |
|---|---|
| CREATE | 创建 |
| ALTER | 修改 |
| DROP | 删除 |
| TRUNCATE | 清空表 |
| RENAME | 重命名 |
主要操作对象:
- 数据库(Database)
- 表(Table)
- 字段(Column)
- 索引(Index)
二、数据库(库)DDL 操作
1 创建数据库
CREATE DATABASE db_name;
指定字符集:
CREATE DATABASE db_name
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
推荐使用 utf8mb4,可以支持 emoji。
2 查看数据库
SHOW DATABASES;
查看数据库创建语句:
SHOW CREATE DATABASE db_name;
3 使用数据库
USE db_name;
4 删除数据库
DROP DATABASE db_name;
如果存在才删除:
DROP DATABASE IF EXISTS db_name;
三、表(Table)DDL 操作
1 创建表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT,
email VARCHAR(100),
create_time DATETIME
);
字段说明:
| 字段 | 作用 |
|---|---|
| PRIMARY KEY | 主键 |
| AUTO_INCREMENT | 自增 |
| NOT NULL | 非空 |
| DEFAULT | 默认值 |
2 查看表
查看当前库的表:
SHOW TABLES;
查看表结构:
DESC users;
查看完整建表语句:
SHOW CREATE TABLE users;
四、修改表结构(ALTER)
ALTER TABLE 是 DDL 中最常用的操作。
1 添加字段
ALTER TABLE users
ADD phone VARCHAR(20);
指定位置:
ALTER TABLE users
ADD address VARCHAR(200) AFTER name;
2 修改字段
修改字段类型:
ALTER TABLE users
MODIFY age INT;
修改字段名称:
ALTER TABLE users
CHANGE age user_age INT;
3 删除字段
ALTER TABLE users
DROP COLUMN email;
4 修改表名
RENAME TABLE users TO user_info;
或者:
ALTER TABLE users RENAME TO user_info;
五、删除表
1 删除表
DROP TABLE users;
安全删除:
DROP TABLE IF EXISTS users;
2 清空表
TRUNCATE TABLE users;
区别:
| 操作 | 特点 |
|---|---|
| DELETE | 一行一行删除 |
| TRUNCATE | 直接清空表 |
| DROP | 删除整个表 |
六、约束(Constraint)
常见约束:
| 约束 | 作用 |
|---|---|
| PRIMARY KEY | 主键 |
| UNIQUE | 唯一 |
| NOT NULL | 非空 |
| DEFAULT | 默认值 |
| FOREIGN KEY | 外键 |
示例
CREATE TABLE orders (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
amount DECIMAL(10,2),
create_time DATETIME,
CONSTRAINT fk_user
FOREIGN KEY (user_id) REFERENCES users(id)
);
七、索引(Index)
索引可以 提高查询速度。
创建索引
CREATE INDEX idx_name
ON users(name);
唯一索引:
CREATE UNIQUE INDEX idx_email
ON users(email);
删除索引
DROP INDEX idx_name ON users;
八、完整建表示例(推荐模板)
CREATE TABLE users (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',
username VARCHAR(50) NOT NULL COMMENT '用户名',
password VARCHAR(100) NOT NULL COMMENT '密码',
email VARCHAR(100) UNIQUE COMMENT '邮箱',
status TINYINT DEFAULT 1 COMMENT '状态',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4
COMMENT='用户表';
最佳实践:
- 使用 InnoDB
- 使用 utf8mb4
- 字段加 COMMENT
- 加 时间字段
九、DDL 操作最佳实践
1️⃣ 表名使用 小写+下划线
user_info
order_detail
2️⃣ 必须有 主键
3️⃣ 推荐字段
id
create_time
update_time
4️⃣ 避免频繁 ALTER TABLE
大表修改结构 会锁表。
十、DDL 常见面试题
1 ALTER 和 MODIFY 的区别
| 命令 | 作用 |
|---|---|
| MODIFY | 修改字段类型 |
| CHANGE | 修改字段名+类型 |
2 TRUNCATE vs DELETE
| 操作 | 速度 | 回滚 |
|---|---|---|
| DELETE | 慢 | 可以 |
| TRUNCATE | 快 | 不可以 |
✅ 一句话总结
MySQL DDL 核心操作:
CREATE
ALTER
DROP
TRUNCATE
RENAME
主要对象:
数据库
表
字段
索引
约束
如果你需要,我可以再给你一份 MySQL DDL + DML + DQL + DCL 全套速查表(开发必备一页版),很多后端工程师都会收藏。