MySQL DDL语句使用详解与常用命令示例

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
在数据库的世界里,有两类语言扮演着截然不同的角色。一类负责处理数据本身,比如增删改查;而另一类,则是我们今天要深入探讨的“建筑师”——数据定义语言,也就是DDL。它的核心任务非常明确:定义和管理数据库的“骨架”和“蓝图”。
简单来说,DDL负责的是“结构”,而DML负责的是“数据”。它主要围绕四个核心对象展开:数据库、表、字段以及约束。理解了这一点,后续的所有操作就都有了清晰的脉络。
数据库操作
一切从数据库开始。无论是查看、创建还是切换,都是与数据库打交道的起点。
查询数据库
在动手之前,先看看环境里有什么,这是好习惯。
查询所有数据库
SHOW DATABASES;
这条命令会列出当前MySQL实例中所有的数据库,让你对全局有个把握。
查询当前使用的数据库
SELECT DATABASE();
有时候操作了半天,突然忘了自己身在哪个“库”中,用这个函数一查便知。
创建数据库
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
创建一个新数据库,有几个细节值得注意:
CREATE DATABASE IF NOT EXISTS school DEFAULT CHARSET utf8mb4;
关键点
IF NOT EXISTS
这是个非常实用的安全选项。如果数据库已经存在,加上这个参数就不会报错,脚本可以继续平稳运行。
DEFAULT CHARSET
指定字符集是创建数据库时的关键一步。现在utf8mb4已经成为绝对的主流,因为它不仅能完美支持中文,还能存储Emoji表情和各种特殊字符,避免了“乱码”的尴尬。
COLLATE
排序规则。除非有特殊的语言排序需求,否则通常使用默认值即可,很少需要手动指定。
删除数据库
DROP DATABASE [IF EXISTS] 数据库名;
示例:
DROP DATABASE IF EXISTS school;
删除操作务必谨慎。同样,IF EXISTS可以防止删除不存在的数据库时引发错误。
使用数据库
USE 数据库名;
示例:
USE school;
这条命令相当于进入了指定的数据库“工作区”,之后所有的表操作,默认都会在这个数据库中进行。
表操作
数据库建好了,接下来就是在其内部创建和管理具体的表结构了。
查询表
和查询数据库类似,对表的探查也是管理的第一步。
查询当前数据库所有表
SHOW TABLES;
看看当前数据库里都有哪些表。
查询表结构
DESC 表名;
示例:
DESC student;
这是最常用的命令之一,可以清晰地看到表的“骨架”:每个字段的名字、数据类型、是否允许为空、是否是主键、默认值是什么,一目了然。
查询建表语句
SHOW CREATE TABLE 表名;
示例:
SHOW CREATE TABLE student;
这个命令的用处极大。它返回的是当初创建这张表的完整SQL语句,包括所有的引擎、字符集等细节。当你需要复制表结构或在另一个环境重建时,它是最准确的蓝图。
创建表
语法:
CREATE TABLE 表名(
字段1 类型 [COMMENT 注释],
字段2 类型 [COMMENT 注释],
字段3 类型 [COMMENT 注释]
)[COMMENT 表注释];
示例:
CREATE TABLE student(
id INT COMMENT '编号',
name VARCHAR(20) COMMENT '姓名',
age INT COMMENT '年龄'
) COMMENT '学生表';
定义字段时加上COMMENT注释是个好习惯,尤其是当字段名不能完全表达含义时,注释能大大提高后续维护和协作的效率。
修改表
需求总会变化,表结构也难免需要调整。ALTER TABLE 是应对这些变化的核心命令。
添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
示例:
ALTER TABLE student ADD gender CHAR(1) COMMENT '性别';
修改字段类型
ALTER TABLE 表名 MODIFY 字段名 新类型(长度);
示例:
ALTER TABLE student MODIFY name VARCHAR(50);
当发现某个字段长度不够用,或者类型不合适时,就用MODIFY。注意,修改类型时如果已有数据不兼容,可能会导致错误或数据截断。
修改字段名
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
示例:
ALTER TABLE student CHANGE name username VARCHAR(30);
CHANGE命令功能更强,它既可以修改字段名,也可以同时修改字段的数据类型和约束,一步到位。
修改表名
ALTER TABLE 旧表名 RENAME TO 新表名;
示例:
ALTER TABLE student RENAME TO student_info;
删除表
DROP TABLE [IF EXISTS] 表名;
示例:
DROP TABLE IF EXISTS student;
整张表都不需要了?用DROP TABLE。同样,建议加上IF EXISTS保平安。
清空表
TRUNCATE TABLE 表名;
示例:
TRUNCATE TABLE student;
只想清空所有数据,但保留表结构以备后用?TRUNCATE是你的选择。它相当于直接重置了这张表,执行速度通常比DELETE快得多。
删除字段
ALTER TABLE 表名 DROP 字段名;
示例:
ALTER TABLE student DROP age;
某个字段已经废弃,需要从表中移除,使用DROP子句。删除前请务必确认该字段数据已不再需要。
DDL 最核心理解
回顾一下,DDL所有操作的核心对象是什么?是数据库的结构本身,而不是里面的具体数据行。
无论是创建数据库、创建表,还是添加、修改、删除字段,你都是在定义和修改这个数据容器的“形状”和“规则”。理解了这一点,就能把它和DML(数据操作语言)彻底区分开来。
高频面试点
说到区分,有一个经典问题在面试中间出现的频率极高。
DROP、DELETE、TRUNCATE 区别
这三个命令都带“删除”的意思,但层次完全不同。
DROP
最彻底。它直接删除整个对象(如表或数据库)。执行后,表结构、数据、索引等一切相关的东西都没了,不可逆转。
DELETE
最灵活。它只删除数据行,表结构还在。最大的特点是可以通过WHERE子句指定条件,进行精确删除。由于是逐行操作并记录日志,在数据量大的情况下可能较慢。
TRUNCATE
最干脆。它清空整张表的所有数据,但保留表结构。可以把它理解为“快速重置表”。它不记录单行删除日志,因此执行速度比DELETE快,但不能带WHERE条件。
简单记:DROP是连房子带家具全拆了;DELETE是把家具一件件搬走(可以选搬哪些);TRUNCATE是把所有家具瞬间清空,房子留着。
最后总结
为了方便回顾和记忆,我们把核心命令整理成了下面这个表格:
| 操作 | 语句 |
|---|---|
| 查询数据库 | SHOW DATABASES |
| 创建数据库 | CREATE DATABASE |
| 删除数据库 | DROP DATABASE |
| 使用数据库 | USE |
| 查询表 | SHOW TABLES |
| 查看表结构 | DESC |
| 查看建表语句 | SHOW CREATE TABLE |
| 创建表 | CREATE TABLE |
| 添加字段 | ALTER TABLE ADD |
| 修改字段 | ALTER TABLE MODIFY |
| 修改字段名 | ALTER TABLE CHANGE |
| 删除字段 | ALTER TABLE DROP |
| 删除表 | DROP TABLE |
| 清空表 | TRUNCATE TABLE |
记忆口诀
最后,送大家一个简单的口诀,帮助快速回忆核心命令的用途:
CREATE 创建 ALTER 修改 DROP 删除 TRUNCATE 清空 DESC 看结构 SHOW 看信息 USE 切库
掌握好这些DDL命令,你就拿到了设计和维护数据库结构的钥匙。记住,好的结构是高效数据操作的基石。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
MySQL二进制日志恢复误删用户数据教程与mysqlbinlog解析指南
mysqlbinlog工具可将二进制日志解析为可读SQL,但不能直接恢复被删除的数据。恢复关键在于定位误删前的INSERT事件并手动将其转换为可执行的INSERT语句。操作时需确认日志为ROW格式,并注意处理GTID、会话变量等干扰信息。恢复后需检查时区、字符集及外键约束等潜在问题,确保数据准确。整个过程依赖人工判断与经验。
Navicat 16 解决表修改报错指南 检查并释放表锁进程
Navicat16执行ALTERTABLE时出现锁等待超时,通常因其他事务长期持有写锁。可查询INNODB_TRX和INNODB_LOCK_WAITS系统表定位阻塞源。强制KILL事务前需确认业务影响,避免数据不一致。临时方案可调高当前会话的innodb_lock_wait_timeout参数。若修改字段涉及外键约束,需先删除约束再修改字段并重建外键。
MySQL DDL语句使用详解与常用命令示例
数据定义语言负责定义和管理数据库结构,核心操作对象是数据库、表、字段及约束。主要命令包括:CREATE用于创建数据库和表;ALTER用于修改表结构,如添加或修改字段;DROP用于删除数据库或表;TRUNCATE用于快速清空表数据;DESC和SHOW用于查看结构信息。掌握这些命令是设计维护数据库结构的基础。
SQL滑动窗口聚合统计教程使用ROWS BETWEEN指定范围
滑动窗口聚合中,ROWSBETWEEN按物理行数划定窗口,RANGEBETWEEN则依据排序键的值分组。计算“过去7天滚动平均”时,需先补全缺失日期生成连续序列,再使用ROWSBETWEEN确保窗口准确。边界参数须完整,避免逻辑矛盾。窗口过宽可能引发性能问题,可借助索引或替代方案优化。
MySQL登录延迟解决方案配置skip-name-resolve跳过DNS解析
MySQL登录延迟常因服务端反向DNS解析过慢。可通过在配置文件中添加skip-name-resolve并重启服务来解决。修改后需将授权表中的主机名更新为IP地址,否则相关账号会失效。客户端使用域名连接慢则属于正向解析问题,需另行处理。
- 日榜
- 周榜
- 月榜
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
相关攻略
2015-03-10 11:25
2015-03-10 11:05
2021-08-04 13:30
2015-03-10 11:22
2015-03-10 12:39
2022-05-16 18:57
2025-05-23 13:43
2025-05-23 14:01
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
热门话题

