一、前言

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
  • 小数:FLOATDOUBLEDECIMAL(精度, 标度)
  • 字符串: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;

四、实操注意事项

  1. 执行删除 / 修改操作前,务必确认目标数据库 / 表 / 字段,避免误操作;
  2. 创建数据库时建议指定编码(UTF8),避免中文乱码;
  3. 字段命名尽量避开 SQL 关键字,若必须使用需用反引号(`)包裹;
  4. 主键字段建议结合 auto_increment 自增,简化数据插入;
  5. 生产环境中,删除操作优先使用 IF EXISTS,避免报错。

五、总结

本文重点讲解了 SQL 中 DDL 语言的核心用法,核心要点如下:

  • DDL 主要用于操作数据库、数据表、字段,核心关键字为:

    • CREATE:创建
    • DROP:删除
    • ALTER:修改
    • SHOW / DESC:查看
  • 数据库操作需先切换(USE),表操作需先确认所属数据库;

  • 字段操作支持添加、修改(仅类型 / 全量修改)、删除,需注意约束和数据类型的合理性。

后续将继续讲解 DML(数据操作语言)DQL(数据查询语言) 的核心用法,关注我,持续学习 SQL 核心技能!


拓展提示

  • 建议结合 MySQL 客户端(如 Navicat、SQLyog)实操,直观查看操作结果;
  • 所有 SQL 语句建议手写练习,而非直接复制,加深记忆;
  • 遇到报错时,优先查看报错信息中的关键字(如 “exists”“syntax”),定位问题。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐