一、SQL 通用基础语法规范

  1. 书写格式
    • SQL 支持单行、多行书写,语句必须以英文分号 ; 结尾
    • 可使用空格、Tab 缩进,提升可读性;
    • 行业规范:关键字(CREATE/ALTER/SELECT 等)建议大写,自定义库名 / 表名 / 字段小写区分。
  2. 注释写法
    • 单行注释:# 注释内容-- 注释内容-- 后必须加空格)
    • 多行注释:/* 多行注释内容 */
  3. 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 删除数据表

  1. 普通删除表(表不存在会报错)

sql

DROP TABLE [IF EXISTS] 表名;

安全写法:

sql

DROP TABLE IF EXISTS emp;
  1. 清空表数据(保留表结构)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 表名;                  -- 清空表数据,保留结构

四、易错总结

  1. 中文符号报错:逗号、引号必须是英文半角,‘’ 全角符号直接语法错误;
  2. 未选中数据库:建表 / 改表前必须执行 use 库名;,否则 No database selected
  3. 注释引号不匹配comment ''用户名 少闭合引号,正确 comment '用户名'
  4. 字符集乱码:建表务必加 DEFAULT CHARSET=utf8mb4,支持完整中文和表情;
  5. 删除不加 IF EXISTS:生产环境创建 / 删除库表建议带上 IF NOT EXISTS/IF EXISTS,避免重复执行报错。
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐