MySQL 进阶:库与表的DDL核心操作全指南

下面是一份 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 全套速查表(开发必备一页版),很多后端工程师都会收藏。

文章已创建 5103

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部