Loading
974 字
5 分钟

SQL-DDL语句

2026-05-18
浏览量 加载中...
AI 摘要

SQL-DDL语句#

定义#

DDL(Data Definition Language):数据定义语言,用来定义数据库对象(数据库、表)。

语法/用法#

SQL 四大分类#

分类全称说明
DDLData Definition Language数据定义语言,定义数据库/表
DMLData Manipulation Language数据操作语言,增删改数据
DQLData Query Language数据查询语言,查询数据
DCLData Control Language数据控制语言,权限管理

数据库操作#

-- 查询所有数据库
SHOW DATABASES;
-- 查询当前数据库
SELECT DATABASE();
-- 创建数据库(不存在则创建,指定字符集)
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET utf8mb4];
-- 使用/切换数据库
USE 数据库名;
-- 删除数据库(存在则删除)
DROP DATABASE [IF EXISTS] 数据库名;

DATABASE 可替换为 SCHEMA,如 CREATE SCHEMA db01;SHOW SCHEMAS;

表操作 — 创建#

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

示例:

CREATE TABLE tb_user (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID,唯一标识',
username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',
name VARCHAR(10) NOT NULL COMMENT '姓名',
age INT COMMENT '年龄',
gender CHAR(1) DEFAULT '男' COMMENT '性别'
) COMMENT '用户表';

约束#

约束关键字描述
非空NOT NULL字段值不能为 NULL
唯一UNIQUE字段值不能重复
主键PRIMARY KEY唯一标识一行记录(非空且唯一)
默认值DEFAULT未指定值时使用默认值
外键FOREIGN KEY关联其他表的主键

主键自增AUTO_INCREMENT,插入时自动生成递增的 ID 值,从 1 开始。

MySQL 数据类型#

数值类型

类型大小用途
TINYINT1 byte小整数值
INT / INTEGER4 bytes大整数值
BIGINT8 bytes极大整数值
FLOAT4 bytes单精度浮点
DOUBLE8 bytes双精度浮点

示例:age TINYINT UNSIGNEDscore DOUBLE(4,1)

字符串类型

类型说明
CHAR(N)定长字符串,性能高
VARCHAR(N)变长字符串,按实际长度存储

示例:username VARCHAR(50)phone CHAR(11)

日期时间类型

类型格式说明
DATEYYYY-MM-DD日期
TIMEHH:MM时间
DATETIMEYYYY-MM-DD HH:MM日期时间
TIMESTAMP时间戳自动记录时间

示例:birthday DATEcreate_time DATETIME

表操作 — 查询/修改/删除#

-- 查询当前数据库所有表
SHOW TABLES;
-- 查看表结构
DESC 表名;
-- 查看建表语句
SHOW CREATE TABLE 表名;
-- 添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT '注释'] [约束];
-- 修改字段类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
-- 修改字段名+类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT '注释'] [约束];
-- 删除字段
ALTER TABLE 表名 DROP 字段名;
-- 修改表名
RENAME TABLE 表名 TO 新表名;
-- 删除表(含数据)
DROP TABLE [IF EXISTS] 表名;

设计表流程#

  1. 阅读页面原型及需求文档,确定字段
  2. 确认各字段的类型、长度限制、约束
  3. 增加业务基础字段:id(主键自增)、create_timeupdate_time

员工表设计案例#

CREATE TABLE emp(
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT 'ID,主键',
username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',
password VARCHAR(32) NOT NULL COMMENT '密码',
name VARCHAR(10) NOT NULL COMMENT '姓名',
gender TINYINT UNSIGNED NOT NULL COMMENT '性别, 1:男, 2:女',
phone CHAR(11) NOT NULL UNIQUE COMMENT '手机号',
job TINYINT UNSIGNED COMMENT '职位, 1:班主任,2:讲师,3:学工主管,4:教研主管,5:咨询师',
salary INT UNSIGNED COMMENT '薪资',
image VARCHAR(255) COMMENT '头像',
entry_date DATE COMMENT '入职日期',
create_time DATETIME COMMENT '创建时间',
update_time DATETIME COMMENT '修改时间'
) COMMENT '员工表';

注意事项#

  • MySQL 8 默认字符集为 utf8mb4,创建数据库时可不额外指定。
  • id 字段应使用 PRIMARY KEY AUTO_INCREMENT 保证唯一性,避免手动维护。
  • 同一数据库服务器中不允许创建同名数据库。
  • DROP TABLE 会同时删除表中所有数据,不可恢复。
  • 实际开发中,查看/修改/删除表结构通常直接在图形化界面操作。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
SQL-DDL语句
https://blog.tsh520.cn/posts/javawebai/后端基础/sql-ddl语句/
作者
团子和蛋糕
发布于
2026-05-18
许可协议
CC BY-NC-SA 4.0
最后更新于 2026-05-18,距今已过 33 天

部分内容可能已过时

评论区

[ 公告 ]

如果你喜欢,那么欢迎来到我的世界!

了解更多
[ 音乐 ]
封面

音乐

暂未播放

0:00 0:00
暂无歌词
找不到相关结果。
[ contents ]
[ 全部文章 ]
我和宝宝在一起已经
---------TSH CXY---------
---------TSH
CXY---------
0 0 0
00 00 00
最近更新
站点统计
文章
84
动态
20
记录次数
89
分类
6
标签
78
总字数
94,329
运行时长
0
最后活动
0 天前