mysql中的ddl指的是数据定义语言,英文全称为Data Definition Language,是sql语言的一个分类,主要用于定义和管理数据库中的所有结构和模式对象。

ddl的核心作用
ddl主要负责对数据库、表、视图、索引等数据库对象进行创建、修改、删除等操作,这些操作会直接改变数据库的结构,且大部分ddl操作执行后会自动提交事务,无法回滚。常见的ddl操作对象包括:
- 数据库本身
- 数据表
- 表的字段
- 索引
- 视图
常见的ddl语句类型
1. 创建类语句
创建类ddl语句用于新建数据库对象,最常用的是CREATE关键字,以下是创建数据库和数据表的示例:
-- 创建名为test_db的数据库
CREATE DATABASE IF NOT EXISTS test_db;
-- 切换到test_db数据库
USE test_db;
-- 创建用户表,包含id、用户名、年龄三个字段
CREATE TABLE IF NOT EXISTS user (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '用户id',
username VARCHAR(50) NOT NULL COMMENT '用户名',
age INT DEFAULT 0 COMMENT '年龄'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息表';
2. 修改类语句
修改类ddl语句用于调整已有数据库对象的结构,使用ALTER关键字,常见操作包括新增字段、修改字段类型、删除字段等:
-- 给user表新增邮箱字段 ALTER TABLE user ADD COLUMN email VARCHAR(100) COMMENT '用户邮箱'; -- 修改user表的age字段类型为BIGINT ALTER TABLE user MODIFY COLUMN age BIGINT DEFAULT 0 COMMENT '年龄'; -- 删除user表的email字段 ALTER TABLE user DROP COLUMN email;
3. 删除类语句
删除类ddl语句用于移除已有的数据库对象,使用DROP关键字,操作需要谨慎执行,避免误删重要数据:
-- 删除user表 DROP TABLE IF EXISTS user; -- 删除test_db数据库 DROP DATABASE IF EXISTS test_db;
4. 其他常见ddl语句
除了上述三类,还有TRUNCATE语句用于清空表数据并重置自增计数器,属于ddl操作:
-- 清空user表的所有数据,自增id从1重新开始 TRUNCATE TABLE user;
ddl操作的注意事项
执行ddl操作前需要确认操作的影响范围,尤其是生产环境中修改大表结构时,可能会造成表锁,影响业务正常运行。另外大部分ddl操作执行后无法回滚,建议操作前先备份相关数据。如果是需要调整表结构且不想锁表,可以考虑使用在线ddl工具辅助操作。