【MySQL】SQL 核心语法精讲:DDL 数据定义语言全解析
·
一、前言
SQL(Structured Query Language,结构化查询语言)是程序员与数据库沟通的标准语言,无论是后端开发、测试、数据分析还是运维,都是必须掌握的核心技能。
SQL 主要分为四大类:DDL、DML、DQL、DCL。本文作为系列第一篇,将带你系统学习 DDL(数据定义语言),它负责数据库、数据表、字段的创建、删除、修改与查询,是学习 SQL 的第一步。
全文通俗易懂、语法格式清晰、案例可直接运行,非常适合零基础入门。
二、SQL 基础认知
2.1 什么是 SQL?
SQL 全称 Structured Query Language(结构化查询语言),是用于操作关系型数据库(MySQL、Oracle、SQL Server 等)的通用标准语言。
2.2 SQL 四大分类
表格
| 分类 | 全称 | 核心作用 | 常用关键字 |
|---|---|---|---|
| DDL | 数据定义语言 | 操作数据库、表、字段(增删改查) | CREATE、DROP、ALTER、SHOW |
| DML | 数据操作语言 | 操作表中数据(增删改) | INSERT、DELETE、UPDATE |
| DQL | 数据查询语言 | 查询表中数据 | SELECT、FROM、WHERE |
| DCL | 数据控制语言 | 用户管理、权限控制 | GRANT、REVOKE |
2.3 SQL 通用语法规则
- SQL 语句可以单行或多行书写,以英文分号
;结尾。 - SQL 不区分大小写,但规范:关键字大写,表名 / 字段名小写。
- 三种注释方式:
# 单行注释(MySQL 特有) -- 单行注释(标准,后面必须加空格) /* 多行注释 可以写很多行 */
2.4 常用数据类型 & 约束(建表必备)
(1)常用数据类型
- 整数:
INT - 小数:
FLOAT、DOUBLE、DECIMAL(精度, 标度) - 字符串:
VARCHAR(长度)(最常用) - 日期时间:
DATETIME(年月日时分秒)
(2)常用约束
表格
| 约束 | 作用 |
|---|---|
| PRIMARY KEY | 主键约束(非空 + 唯一),通常搭配 AUTO_INCREMENT 自增 |
| NOT NULL | 非空约束,字段必须有值 |
| UNIQUE | 唯一约束,值不能重复 |
| DEFAULT | 默认值约束 |
| FOREIGN KEY | 外键约束,用于多表关联 |
三、DDL 核心操作实战
DDL 主要操作三类对象:数据库(Database) → 数据表(Table) → 字段(Field)
3.1 操作数据库(Database)
(1)查看所有数据库
-- 查看已创建的所有数据库
SHOW DATABASES;
(2)创建数据库
语法格式(必看)
- 说明:
[ ]中的内容为可选参数,根据需求选择是否添加;CHARSET可简写为CHARACTER SET,均表示指定数据库编码。
CREATE DATABASE [IF NOT EXISTS] 数据库名 [CHARACTER SET 字符集];
实操案例(对应格式,可直接运行)
-- 方式1:默认编码(UTF8)创建(不指定编码,使用数据库默认编码)
CREATE DATABASE day01;
-- 方式2:指定编码(GBK)创建(适合需要兼容GBK编码的场景)
CREATE DATABASE day02 CHARACTER SET 'gbk';
-- 方式3:安全创建(存在则不操作,避免重复创建报错)
CREATE DATABASE IF NOT EXISTS day01;
-- 完整格式(推荐):安全创建 + 指定UTF8编码(避免中文乱码)
CREATE DATABASE IF NOT EXISTS day03 CHARSET 'utf8';
(3)修改数据库编码
语法格式(必看)
- 说明:仅修改数据库的编码格式,不影响数据库内已有的数据表和数据。
ALTER DATABASE 数据库名 CHARSET 字符集;
实操案例
-- 将day02数据库编码从GBK改为UTF8(解决中文乱码问题)
ALTER DATABASE day02 CHARSET 'utf8';
(4)删除数据库
语法格式(必看)
- 说明:
IF EXISTS为可选参数,添加后可避免删除不存在的数据库时报错(安全操作)。
DROP DATABASE [IF EXISTS] 数据库名;
实操案例
-- 直接删除(无安全校验,删除不存在的数据库会报错)
DROP DATABASE day01;
-- 安全删除(存在则删除,不存在不报错,生产环境推荐)
DROP DATABASE IF EXISTS day02;
(5)数据库切换与查看
-- 查看当前使用的数据库
SELECT DATABASE();
-- 切换数据库(操作表前必须先切库,否则会报错)
USE day02;
-- 查看指定数据库的编码(确认编码是否修改成功)
SHOW CREATE DATABASE day01;
3.2 操作数据表(Table)
(1)查看当前数据库的所有表
-- 先切换数据库(确保操作的是目标数据库)
USE day01;
-- 查看当前数据库下的所有数据表
SHOW TABLES;
(2)创建数据表
语法格式(必看)
- 说明:
[IF NOT EXISTS]可选,避免重复创建表报错;括号内为表的字段列表,每个字段需指定「字段名 + 数据类型」,约束为可选,字段之间用逗号分隔。
CREATE TABLE [IF NOT EXISTS] 表名(
字段名 数据类型 [约束],
字段名 数据类型 [约束],
...... -- 可继续添加更多字段
);
实操案例(对应格式,可直接运行)
-- 创建学生表(sid:学号,name:姓名,age:年龄)
-- 未添加约束,适合基础练习,后续可根据需求添加主键、非空等约束
CREATE TABLE IF NOT EXISTS student(
sid INT, -- 学生学号(整数类型)
name VARCHAR(20), -- 学生姓名(字符串类型,最长20个字符)
age INT -- 学生年龄(整数类型)
);
(3)修改数据表名
语法格式(必看)
- 说明:直接将原表名修改为新表名,修改后原表名失效,新表名生效,表内数据不变。
RENAME TABLE 原表名 TO 新表名;
实操案例(对应格式,可直接运行)
-- 将student表重命名为stu(简化表名,方便后续操作)
RENAME TABLE student TO stu;
(4)删除数据表
语法格式(必看)
- 说明:
IF EXISTS可选,添加后可避免删除不存在的表时报错;删除表会同时删除表内所有数据,操作需谨慎。
DROP TABLE [IF EXISTS] 表名;
实操案例(对应格式,可直接运行)
-- 安全删除数据表(存在则删除,不存在不报错,避免误操作报错)
DROP TABLE IF EXISTS stu;
(5)查看表结构
-- 简洁查看表结构:显示字段名、数据类型、约束、默认值等核心信息
DESC student;
-- 详细查看表的完整创建语句:含编码、引擎、约束等所有信息(用于校验建表语句)
SHOW CREATE TABLE student;
3.3 操作字段(Field)
(1)添加字段
语法格式(必看)
- 说明:给已存在的表添加新字段,需指定「字段名 + 数据类型」,约束为可选;添加后字段默认在表的最后一列。
ALTER TABLE 表名 ADD 字段名 数据类型 [约束];
实操案例(对应格式,可直接运行)
-- 给student表添加address字段,类型为字符串,非空约束(必须填写地址)
ALTER TABLE student ADD address VARCHAR(20) NOT NULL;
(2)修改字段类型 & 约束
语法格式(必看)
- 说明:仅修改字段的数据类型和约束,不修改字段名;修改时需注意字段内已有数据,避免数据丢失(如字符串转整数可能失败)。
ALTER TABLE 表名 MODIFY 字段名 新数据类型 [新约束];
实操案例(对应格式,可直接运行)
-- 将address字段的数据类型从VARCHAR改为INT(仅演示,实际需结合数据合理性)
ALTER TABLE student MODIFY address INT;
(3)修改字段名 & 类型 & 约束
语法格式(必看)
- 说明:可同时修改字段名、数据类型和约束,比
MODIFY更灵活;需指定「原字段名 + 新字段名 + 新数据类型 + 新约束」。
ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [约束];
实操案例(对应格式,可直接运行)
-- 将address字段改为addr,数据类型改为VARCHAR(10),添加非空约束
ALTER TABLE student CHANGE address addr VARCHAR(10) NOT NULL;
(4)删除字段
语法格式(必看)
- 说明:删除表中的指定字段,会同时删除该字段下的所有数据,操作需谨慎。
ALTER TABLE 表名 DROP 字段名;
实操案例(对应格式,可直接运行)
-- 删除stu表中的addr字段(无需保留地址信息时使用)
ALTER TABLE student DROP addr;
(5)特殊字段名处理
-- 说明:当字段名与SQL关键字(如desc、order、use)冲突时,用反引号(`)包裹,避免报错
ALTER TABLE student ADD `desc` VARCHAR(20) NOT NULL;
四、实操注意事项
- 执行删除 / 修改操作前,务必确认目标数据库 / 表 / 字段,避免误操作;
- 创建数据库时建议指定编码(UTF8),避免中文乱码;
- 字段命名尽量避开 SQL 关键字,若必须使用需用反引号(`)包裹;
- 主键字段建议结合 auto_increment 自增,简化数据插入;
- 生产环境中,删除操作优先使用
IF EXISTS,避免报错。
五、总结
本文重点讲解了 SQL 中 DDL 语言的核心用法,核心要点如下:
-
DDL 主要用于操作数据库、数据表、字段,核心关键字为:
CREATE:创建DROP:删除ALTER:修改SHOW / DESC:查看
-
数据库操作需先切换(USE),表操作需先确认所属数据库;
-
字段操作支持添加、修改(仅类型 / 全量修改)、删除,需注意约束和数据类型的合理性。
后续将继续讲解 DML(数据操作语言) 和 DQL(数据查询语言) 的核心用法,关注我,持续学习 SQL 核心技能!
拓展提示
- 建议结合 MySQL 客户端(如 Navicat、SQLyog)实操,直观查看操作结果;
- 所有 SQL 语句建议手写练习,而非直接复制,加深记忆;
- 遇到报错时,优先查看报错信息中的关键字(如 “exists”“syntax”),定位问题。
更多推荐




所有评论(0)