Jw
首页
技术
英语
首页
技术
英语
  • MySQL

    • MySQL 基础
    • 环境变量配置(PATH)
    • SQL 语法与分类
    • MySQL 数据类型
    • SQL - DDL 数据定义语言
    • SQL - DML 数据操作语言
    • SQL - DQL 数据查询语言
    • SQL - DCL 数据控制语言
    • MySQL 函数
    • SQL 约束
    • SQL 外键约束
    • 多表关系
    • 多表查询(连接查询)
    • 隐式内连接 vs 显式内连接
    • 子查询
    • 多表查询案例
    • 事务
    • 并发事务问题与隔离级别
    • MySQL 体系结构与存储引擎
    • 索引概述
    • 索引结构
    • 索引分类
    • 索引语法
    • SQL 性能分析
    • 索引使用
    • 索引设计原则
    • SQL 优化 - 插入数据与主键优化
    • SQL 优化 - order by 与 group by
    • SQL 优化 - limit / count / update
    • 视图
    • 存储过程
    • 存储过程 - 变量
    • 存储过程 - 流程控制、游标与条件处理
    • 存储函数
    • 触发器
    • 锁概述与全局锁
    • 表级锁
    • 行级锁
    • InnoDB 逻辑存储结构
    • InnoDB 架构
    • 事务原理(redo / undo log)
    • MVCC
    • MySQL 系统数据库
    • MySQL 常用工具
    • 数据备份与导入导出
    • 错误日志与二进制日志
    • 查询日志与慢查询日志
    • 主从复制 - 概述与原理
    • 主从复制 - 搭建
    • Mycat 配置
    • Mycat 垂直拆分与水平拆分
    • Mycat 分片规则
    • Mycat 管理与监控
    • Mycat 读写分离 - 一主一从
    • Mycat 读写分离 - 双主双从

SQL - DDL(数据定义语言)

DDL(Data Definition Language,数据定义语言)用来定义数据库对象:数据库、表、字段。 在 SQL 四分类(DDL / DML / DQL / DCL)中,DDL 负责「建结构」,DML 负责「改数据」。

一、数据库操作

-- 查询所有数据库
SHOW DATABASES;

-- 查询当前数据库
SELECT DATABASE();

-- 创建数据库([] 内为可选参数)
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];

-- 删除数据库
DROP DATABASE [IF EXISTS] 数据库名;

-- 使用数据库
USE 数据库名;

二、表操作 - 查询

-- 查询当前库的所有表
SHOW TABLES;

-- 查询表结构
DESC 表名;

-- 查询指定表的建表语句
SHOW CREATE TABLE 表名;

三、表操作 - 创建

CREATE TABLE 表名(
    字段1 字段1类型 [COMMENT 字段1注释],
    字段2 字段2类型 [COMMENT 字段2注释],
    字段3 字段3类型 [COMMENT 字段3注释],
    ......
    字段n 字段n类型 [COMMENT 字段n注释]
)[COMMENT 表注释];

注意:[] 内为可选参数,最后一个字段后面没有逗号。

数据类型

➡️ 见 MySQL 数据类型(数值 / 字符串 / 日期时间三类,含选型速记)

四、表操作 - 修改

-- 添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
-- 案例:为 emp 表增加字段 nickname,类型 varchar(20)
ALTER TABLE emp ADD nickname varchar(20) COMMENT '昵称';

-- 修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);

-- 修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
-- 案例:将 emp 表的 nickname 字段改为 username,类型 varchar(30)
ALTER TABLE emp CHANGE nickname username varchar(30) COMMENT '昵称';

-- 删除字段
ALTER TABLE 表名 DROP 字段名;
-- 案例:删除 emp 表的 username 字段
ALTER TABLE emp DROP username;

-- 修改表名
ALTER TABLE 表名 RENAME TO 新表名;
-- 案例:将 emp 表名改为 employee
ALTER TABLE emp RENAME TO employee;

MODIFY 只能改类型,CHANGE 改名 + 改类型(新字段名写原字段名即等价于 MODIFY)。

五、表操作 - 删除

-- 删除表
DROP TABLE [IF EXISTS] 表名;

-- 删除指定表,并重新创建该表(清空表数据)
TRUNCATE TABLE 表名;

注意:在删除表时,表中的全部数据也会被删除。

六、案例:设计员工表 emp

需求:设计一张员工信息表。

  1. 编号(纯数字)
  2. 员工工号(字符串类型,长度不超过 10 位)
  3. 员工姓名(字符串类型,长度不超过 10 位)
  4. 性别(男/女,存储一个汉字)
  5. 年龄(正常人年龄,不可能存储负数)
  6. 身份证号(二代身份证号均为 18 位,身份证中有 X 这样的字符)
  7. 入职时间(取值年月日即可)
CREATE TABLE emp(
    id          INT            COMMENT '编号',
    workno      VARCHAR(10)    COMMENT '工号',
    name        VARCHAR(10)    COMMENT '姓名',
    gender      CHAR(1)        COMMENT '性别',
    age         TINYINT UNSIGNED COMMENT '年龄',
    idcard      CHAR(18)       COMMENT '身份证号',
    entrydate   DATE           COMMENT '入职时间'
) COMMENT '员工表';

设计思路:性别固定 1 个汉字 → CHAR(1);年龄非负 → TINYINT UNSIGNED;身份证固定 18 位 → CHAR(18);入职时间只要年月日 → DATE。

七、速查总结

数据库操作

SHOW DATABASES;                 -- 查看当前 MySQL 中的所有数据库
CREATE DATABASE 数据库名;        -- 创建数据库
USE 数据库名;                    -- 切换到指定数据库
SELECT DATABASE();              -- 查看当前正在使用的数据库
DROP DATABASE 数据库名;          -- 删除数据库(库内所有表一并删除)

表操作

SHOW TABLES;                                            -- 查看当前数据库中的所有表
CREATE TABLE 表名(字段 字段类型, 字段 字段类型);            -- 创建表
DESC 表名;                                              -- 查看表结构(字段、类型、约束)
SHOW CREATE TABLE 表名;                                  -- 查看建表语句
ALTER TABLE 表名 ADD/MODIFY/CHANGE/DROP/RENAME TO ...;   -- 修改表:加字段/改类型/改字段名/删字段/重命名表
DROP TABLE 表名;                                         -- 删除表(表结构与数据一并删除)
TRUNCATE TABLE 表名;                                     -- 清空表中全部数据(保留表结构)
最近更新: 2026/10/6 17:50
Contributors: liujw
Prev
MySQL 数据类型
Next
SQL - DML 数据操作语言