【MySQL入门】一文搞懂 SQL DDL 核心语法 (建库、建表、修改)
本文整理了MySQL DDL(数据定义语言)的详细学习笔记,涵盖数据库操作、表创建与修改等核心内容。重点讲解了数据库的创建删除、表结构设计的数据类型选择(如CHAR/VARCHAR区别)、ALTER修改表结构的MODIFY/CHANGE区别,以及DROP与TRUNCATE的不同作用。特别强调了金额需用DECIMAL、字段命名规范等实用技巧,适合MySQL初学者系统学习数据库定义操作,避免常见语法错
摘要:正在学习 MySQL 的同学看过来!DDL(数据定义语言)是学习数据库的第一道门槛,命令多且容易混淆。本文整理了详细的 DDL 学习笔记,涵盖数据库操作、表结构设计、字段修改及常用数据类型避坑指南,建议收藏备用!
前言
最近在系统学习 MySQL,发现 SQL 中的 DDL (Data Definition Language) 虽然逻辑不难,但细节语法(特别是 ALTER 修改表结构部分)非常容易记混。
为了巩固记忆,也为了方便日后查阅,我整理了这份详细的 DDL 笔记。如果你也是数据库初学者,希望这份笔记能帮你少走弯路!
一、 什么是 DDL?
DDL (Data Definition Language),即数据定义语言。 它主要用于定义数据库的结构,操作对象是:数据库 (Database)、表 (Table)、字段 (Field)。
简单理解:DDL 就是用来“盖房子”和“装修”的(建库、建表),而 DML(增删改)才是真正往房子里“住人”的(处理数据)。
二、 数据库操作 (Database)
这是最基础的操作,一切从创建一个库开始。
1. 查询数据库
-- 查询所有数据库
SHOW DATABASES;
-- 查询当前正在使用的数据库
SELECT DATABASE();
2. 创建数据库 (推荐写法)
建议加上 IF NOT EXISTS 以免报错,且务必指定 utf8mb4 字符集(为了支持 Emoji 表情等特殊符号)。
CREATE DATABASE IF NOT EXISTS my_db
DEFAULT CHARSET utf8mb4;
3. 使用与删除
-- 切换/使用数据库
USE my_db;
-- 删除数据库 (慎用!)
DROP DATABASE IF EXISTS my_db;
三、 表操作 - 创建 (Create)
1. 语法结构
CREATE TABLE 表名(
字段1 字段1类型 [COMMENT '字段1注释'],
字段2 字段2类型 [COMMENT '字段2注释'],
...
字段n 字段n类型 [COMMENT '字段n注释']
) COMMENT '表注释';
2. 实战案例
创建一个员工表 emp:
CREATE TABLE emp (
id INT COMMENT '编号',
work_no VARCHAR(10) COMMENT '工号',
name VARCHAR(10) COMMENT '姓名',
gender CHAR(1) COMMENT '性别',
age TINYINT UNSIGNED COMMENT '年龄',
id_card CHAR(18) COMMENT '身份证号',
entry_date DATE COMMENT '入职时间'
) COMMENT '员工表';
3. 💡 重点:数据类型怎么选?
在 DDL 中,选择合适的数据类型非常关键,也是面试常考点:
-
数值类型:
-
TINYINT: 适合年龄、状态码(0/1)。 -
INT: 标准整数。 -
BIGINT: 适合极大数值(如 ID 主键)。 -
DECIMAL: 涉及金额必须用这个,因为 float/double 会有精度丢失。
-
-
字符串类型 (高频考点):
-
CHAR: 定长。性能高,但浪费空间。适合:身份证号、手机号、性别。 -
VARCHAR: 变长。节省空间,但性能略低。适合:姓名、家庭住址。
-
-
日期类型:
-
DATE: 只有年月日。 -
DATETIME: 年月日 + 时分秒。
-
四、 表操作 - 修改 (Alter) 🔥
这一部分是 DDL 中最难记的,一定要区分清楚 MODIFY 和 CHANGE!
1. 添加字段 (ADD)
-- 语法:ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释];
-- 案例:给 emp 表增加一个昵称字段
ALTER TABLE emp ADD nickname VARCHAR(20) COMMENT '昵称';
2. 修改数据类型 (MODIFY)
只改类型,不改字段名。
-- 语法:ALTER TABLE 表名 MODIFY 字段名 新类型(长度);
ALTER TABLE emp MODIFY nickname TEXT;
3. 修改字段名和类型 (CHANGE)
既改名,也改类型。
-- 语法:ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释];
-- 案例:把 nickname 改为 username,类型改为 varchar(30)
ALTER TABLE emp CHANGE nickname username VARCHAR(30) COMMENT '用户名';
4. 删除字段 (DROP)
ALTER TABLE emp DROP username;
5. 修改表名 (RENAME)
ALTER TABLE emp RENAME TO employee;
五、 表操作 - 删除 (Drop vs Truncate)
这里有一个经典面试题:Truncate 和 Drop 有什么区别?
1. 删除表 (DROP)
DROP TABLE IF EXISTS tb_user;
-
后果:表结构和表里的数据全部消失。
2. 截断表 (TRUNCATE)
TRUNCATE TABLE tb_user;
-
后果:只删除表中的所有数据,保留表结构。
-
实质:它实际上是先 Drop 掉表,然后根据原结构 Create 一个新表。自增 ID 通常会重置。
📝 学习总结
-
建库:记得用
utf8mb4。 -
建表:
VARCHAR省空间但慢,CHAR费空间但快;金额用DECIMAL。 -
修改:
MODIFY改类型,CHANGE改名+类型。 -
删除:想要留壳去肉用
TRUNCATE,想要连根拔起用DROP。
以上就是 MySQL DDL 的基础内容,希望能帮助到大家!接下来我会继续更新 DML(数据的增删改)部分,欢迎关注!
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)