一、SQL 通用基础语法规范
-
书写格式
- SQL 支持单行、多行书写,语句必须以英文分号
;结尾; - 可使用空格、Tab 缩进,提升可读性;
- 行业规范:关键字(
CREATE/ALTER/SELECT等)建议大写,自定义库名 / 表名 / 字段小写区分。
- SQL 支持单行、多行书写,语句必须以英文分号
-
注释写法
- 单行注释:
# 注释内容或-- 注释内容(--后必须加空格) - 多行注释:
/* 多行注释内容 */
- 单行注释:
-
SQL 四大语句分类 表格
分类 全称 作用 DDL 数据定义语言 定义数据库、表结构(库 / 表的创建、删除、修改) DML 数据操作语言 操作表内数据:新增、删除、修改 DQL 数据查询语言 查询表中数据记录(最常用 SELECT)DCL 数据控制语言 创建数据库用户、分配访问权限
二、DDL 数据库操作(操作库)
1. 查询数据库
sql
-- 查询当前服务器所有数据库
SHOW DATABASES;
-- 查询当前正在使用的数据库
SELECT DATABASE();
2. 创建数据库
语法:
sql
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集];
示例:
sql
-- 创建库,不存在才创建,指定utf8mb4支持完整中文/表情
CREATE DATABASE IF NOT EXISTS db_demo DEFAULT CHARSET utf8mb4;
IF NOT EXISTS:避免库已存在时报错,生产必加;utf8mb4:推荐字符集,兼容所有中文、emoji,替代旧utf8。
3. 使用 / 切换数据库
sql
USE 数据库名;
执行成功提示:Database changed
⚠️ 重要:所有建表、改表操作前,必须先
use选中数据库,否则报No database selected。
4. 删除数据库
语法:
sql
DROP DATABASE [IF EXISTS] 数据库名;
示例:
sql
DROP DATABASE IF EXISTS db_demo;
IF EXISTS:库不存在也不会报错,安全删除。
DDL 数据库操作速记
sql
SHOW DATABASES; -- 查所有库
CREATE DATABASE 库名; -- 创建库
USE 库名; -- 使用库
SELECT DATABASE(); -- 查看当前库
DROP DATABASE 库名; -- 删除库
三、DDL 表操作(操作数据表)
3.1 基础查询表语句
sql
-- 查询当前库下所有数据表
SHOW TABLES;
-- 查看表结构(字段、类型、注释、主键等)
DESC 表名;
-- 查看建表完整SQL(包含引擎、字符集、注释)
SHOW CREATE TABLE 表名;
3.2 MySQL 常用数据类型
1)数值类型
表格
| 类型 | 说明 | 使用场景 |
|---|---|---|
TINYINT |
极小整数 | 年龄、状态(搭配 UNSIGNED 无负数) |
SMALLINT |
小整数 | 少量数字标识 |
INT |
常规整数 | 主键 ID、编号 |
BIGINT |
大整数 | 超大 ID、雪花 ID |
FLOAT/DOUBLE |
浮点数 | 小数(金额推荐用 DECIMAL,避免精度丢失) |
示例:age TINYINT UNSIGNED COMMENT '年龄'(无负数年龄)
2)字符串类型
表格
| 类型 | 特点 | 使用场景 |
|---|---|---|
CHAR(长度) |
定长字符串,空间固定、查询性能高 | 固定长度内容:性别 (1)、身份证 (18) |
VARCHAR(长度) |
变长字符串,节省空间、性能略低 | 不固定长度:姓名、用户名、工号 |
示例:
gender CHAR(1) COMMENT '性别'username VARCHAR(30) COMMENT '用户名'
3)日期时间类型
表格
| 类型 | 作用 | 场景 |
|---|---|---|
DATE |
仅日期(年月日) | 生日、入职日期 |
TIME |
仅时间(时分秒) | 时长、时间段 |
YEAR |
仅年份 | 出生年份 |
DATETIME |
日期 + 时间 | 完整记录时间 |
TIMESTAMP |
时间戳 | 自动更新创建 / 修改时间 |
示例:entrydate DATE COMMENT '入职时间'
3.3 创建数据表 CREATE TABLE
标准语法
sql
CREATE TABLE 表名 (
字段1 数据类型(长度) [COMMENT '字段注释'],
字段2 数据类型(长度) [COMMENT '字段注释'],
...
) [ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '表注释'];
注意坑:字段分隔必须用英文半角逗号
,,中文逗号,直接报语法错误!
实战示例:员工表 emp
sql
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 '入职时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '员工表';
3.4 修改表结构 ALTER TABLE
1)新增字段 ADD
sql
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT '注释'] [约束];
示例:给员工表新增昵称字段
sql
ALTER TABLE emp ADD nickname VARCHAR(20) COMMENT '昵称';
2)仅修改字段数据类型 MODIFY
只改类型 / 长度,不改字段名
sql
ALTER TABLE 表名 MODIFY 字段名 新类型(长度) [COMMENT '注释'];
示例:将姓名长度改为 20
sql
ALTER TABLE emp MODIFY name VARCHAR(20) COMMENT '姓名';
3)修改字段名 + 字段类型 CHANGE
语法:CHANGE 旧字段名 新字段名 类型(长度) [注释]
sql
ALTER TABLE emp CHANGE nickname username VARCHAR(30) COMMENT '用户名';
易错点:注释引号必须成对,错误写法
comment ''用户名会报语法异常,正确comment '用户名'
4)删除字段 DROP
sql
ALTER TABLE 表名 DROP 字段名;
示例:删除用户名字段
sql
ALTER TABLE emp DROP username;
5)修改表名 RENAME TO
sql
ALTER TABLE 旧表名 RENAME TO 新表名;
示例:ALTER TABLE emp RENAME TO employee;
3.5 删除数据表
- 普通删除表(表不存在会报错)
sql
DROP TABLE [IF EXISTS] 表名;
安全写法:
sql
DROP TABLE IF EXISTS emp;
- 清空表数据(保留表结构)
TRUNCATE
sql
TRUNCATE TABLE emp;
作用:清空表里所有数据,自增主键重置,表结构不变。
DDL 表操作速记
sql
SHOW TABLES; -- 查询所有表
DESC 表名; -- 查看表结构
SHOW CREATE TABLE 表名; -- 查看建表语句
CREATE TABLE 表名(字段...) COMMENT ''; -- 创建表
ALTER TABLE 表名 ADD/MODIFY/CHANGE/DROP/RENAME TO ...; -- 修改表
DROP TABLE IF EXISTS 表名; -- 删除表
TRUNCATE TABLE 表名; -- 清空表数据,保留结构
四、易错总结
- 中文符号报错 :逗号、引号必须是英文半角,
,、''全角符号直接语法错误; - 未选中数据库 :建表 / 改表前必须执行
use 库名;,否则No database selected; - 注释引号不匹配 :
comment ''用户名少闭合引号,正确comment '用户名'; - 字符集乱码 :建表务必加
DEFAULT CHARSET=utf8mb4,支持完整中文和表情; - 删除不加 IF EXISTS :生产环境创建 / 删除库表建议带上
IF NOT EXISTS/IF EXISTS,避免重复执行报错。