MySQL 基础 SQL 语法与常用语句速查

宋时安
宋时安
发布时间:2026-10-15 | 2人浏览过
原创

掌握 MySQL 的基础 SQL 语法是进行数据库开发的前提。本文从 DDL、DML、DCL 三大语言分类入手,详细拆解数据库与表结构的创建修改、核心数据操作(CRUD)命令,并针对实际开发中常见的分页、排序、多表关联及条件统计提供标准 SQL 实现方案。

SQL 语法体系概述

SQL(Structured Query Language)主要分为三类核心语言,理解其分工有助于构建清晰的数据库操作逻辑:

  • DDL (Data Definition Language):数据定义语言,用于定义或改变表的结构,如 CREATE, ALTER, DROP。
  • DML (Data Manipulation Language):数据操纵语言,用于操作表中数据,如 SELECT, INSERT, UPDATE, DELETE。
  • DCL (Data Control Language):数据控制语言,用于设置用户权限和安全级别,如 GRANT, REVOKE, COMMIT, ROLLBACK。

第1步:数据库与表结构管理(DDL)

在开始数据存储前,需先规划好数据库容器与表结构。以下是标准的建库建表流程及注意事项。

1. 数据库的生命周期

通过以下语句创建或删除数据库。建议在操作前确认名称唯一性,避免冲突。

-- 创建新数据库
CREATE DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 删除指定数据库(谨慎操作,数据不可恢复)
DROP DATABASE database_name;

2. 表的创建与修改

建表时需明确字段类型、约束及主键。若需基于旧表结构新建表,可使用以下两种模式:

-- 方法A:仅复制表结构,不复制数据
CREATE TABLE new_table LIKE old_table;

-- 方法B:复制表结构并带入部分数据(通常用于备份特定查询结果)
CREATE TABLE new_table AS SELECT * FROM old_table WHERE condition;

对已有表进行修改时,需注意:

  • 添加列:ALTER TABLE table_name ADD COLUMN col_name type;。新增列后无法直接删除,只能清空内容或重构表。
  • 添加主键:ALTER TABLE table_name ADD PRIMARY KEY (col_name);
  • 删除主键:ALTER TABLE table_name DROP PRIMARY KEY;

3. 索引与视图

索引是提升查询性能的关键,但需注意索引不可直接“更改”,只能通过删除重建来实现调整。

-- 创建普通索引
CREATE INDEX idx_name ON table_name (column_name);

-- 创建唯一索引
CREATE UNIQUE INDEX idx_unique ON table_name (column_name);

-- 删除索引
DROP INDEX idx_name ON table_name;

-- 创建视图(简化复杂查询)
CREATE VIEW view_name AS SELECT ...;

-- 删除视图
DROP VIEW view_name;

第2步:核心数据操作(DML)

DML 是最常用的日常操作,涵盖数据的增加、修改、删除与检索。执行此类操作前,务必确认 WHERE 条件的准确性,防止误操作全表数据。

1. 基础增删改查

操作 语法示例
插入数据 INSERT INTO table (field1, field2) VALUES (value1, value2);
更新数据 UPDATE table SET field1 = 'new_value' WHERE condition;
删除数据 DELETE FROM table WHERE condition;
查询数据 SELECT * FROM table WHERE condition ORDER BY col DESC;

2. 高级查询技巧

在实际业务中,单一查询往往无法满足需求,需组合使用聚合函数、子查询及集合运算。

3. 集合运算与连接

  • UNION / UNION ALL:合并两个查询结果。UNION 自动去重,UNION ALL 保留重复行且性能更高。
  • LEFT JOIN / RIGHT JOIN:左外连接保留左表所有记录,右连接保留右表所有记录。适用于关联表数据不全的场景。
  • BETWEEN ... AND:包含边界值的范围查询,如 WHERE age BETWEEN 18 AND 60。
  • IN / NOT IN:判断值是否在指定列表中,如 WHERE status IN ('active', 'pending')。

第3步:实战场景解决方案

以下精选 SQL 场景覆盖了开发中高频出现的数据处理痛点,建议结合实际表结构验证。

1. 分页查询

MySQL 中使用 LIMIT 和 OFFSET 实现高效分页。相比嵌套子查询选取 Top N,此方式更简洁:

-- 每页10条,查询第2页(跳过前10条)
SELECT * FROM table_name ORDER BY id ASC LIMIT 10 OFFSET 10;

2. 消除重复记录

保留每组数据中 ID 最大的一条,删除其余重复项:

DELETE FROM table_name 
WHERE id NOT IN (
    SELECT max_id FROM (
        SELECT MAX(id) as max_id 
        FROM table_name 
        GROUP BY duplicate_field
    ) AS tmp
);

3. 行列转换(透视表)

利用 CASE WHEN 配合聚合函数,将纵向数据转换为横向报表:

-- 统计各月份各部门的业绩(假设表名为 sales)
SELECT 
    department,
    SUM(CASE WHEN month = 'Jan' THEN amount ELSE 0 END) as Jan_Sales,
    SUM(CASE WHEN month = 'Feb' THEN amount ELSE 0 END) as Feb_Sales
FROM sales
GROUP BY department;

4. 获取随机记录

在不同数据库中获取随机记录的写法略有差异,MySQL 常用 RAND():

-- 随机选取10条记录
SELECT * FROM table_name ORDER BY RAND() LIMIT 10;

总结

熟练掌握 DDL 与 DML 是 MySQL 开发的基石。对于复杂查询,建议优先使用标准的 JOIN 和 CASE WHEN 结构,这不仅符合 SQL 标准,也更利于后期维护与优化。以上就是 MySQL 基础 SQL 语法的详细内容,更多关于 SQL 进阶技巧的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表