源本科技 | 码上会

MySQL SQL 语法

2026/03/14
30
0

什么是 SQL

SQL(Structured Query Language,结构化查询语言)是用于管理和操作关系型数据库的国际标准语言。它是连接应用程序与数据库的桥梁,让开发者能够以声明式的方式告诉数据库“想要什么数据”,而无需关心底层具体的实现细节。

核心价值

  • 标准化:由 ANSI 和 ISO 制定标准,主流数据库均支持核心语法。

  • 简洁强大:仅需几条命令即可完成复杂的数据检索、更新和管理。

  • 通用性:掌握 SQL 后,可轻松切换于 MySQL、PostgreSQL、Oracle 等不同系统之间。

关键概念

标准 SQL 与数据库方言

虽然 SQL 有国际标准,但各大数据库厂商(如 MySQL、Oracle、Microsoft)在实现时都会进行扩展或微调,形成了各自的数据库方言(Dialect)

  • 为什么存在方言?
    为了适应特定的功能需求(如 MySQL 的分页 LIMIT vs Oracle 的 ROWNUM)、性能优化或特有数据类型。

  • 实际影响
    大多数基础查询(SELECT, INSERT)在所有数据库中是通用的。但在涉及高级函数、分页逻辑、存储过程或特定数据类型时,直接迁移 SQL 语句可能会报错,需要根据目标数据库的方言进行调整。

示例:获取前 10 条记录

  • MySQL / PostgreSQL: SELECT * FROM users LIMIT 10;

  • SQL Server: SELECT TOP 10 * FROM users;

  • Oracle (旧版): SELECT * FROM users WHERE ROWNUM <= 10;


SQL 语言分类

SQL 命令根据功能不同,被划分为五大类。理解这些分类有助于构建清晰的数据库操作思维模型。

数据定义语言 (DDL)

定义:Data Definition Language,用于定义或修改数据库的结构(Schema),而非数据本身。这类操作通常是自动提交的,一旦执行无法回滚(取决于具体 DBMS 实现)。

  • 核心命令

    • CREATE:创建新对象(数据库、表、索引、视图)。

    • ALTER:修改现有对象的结构(如添加列、修改字段类型)。

    • DROP:彻底删除对象及其所有数据。

    • TRUNCATE:清空表中所有数据,但保留表结构(比 DELETE 更快,重置自增 ID)。

  • 应用场景

    • 项目初始化时建库建表。

    • 业务迭代时需要增加新字段。

    • 清理废弃的测试表。

注意DROPTRUNCATE 是高危操作,执行前务必确认备份!

数据操作语言 (DML)

定义:Data Manipulation Language,用于对表中的具体数据进行增、删、改操作。这是日常开发中最常用的部分。

  • 核心命令

    • INSERT:向表中插入新行。

    • UPDATE:修改表中已存在的行。

    • DELETE:删除表中符合条件的行。

  • 应用场景

    • 用户注册(插入数据)。

    • 修改个人资料(更新数据)。

    • 注销账号或删除评论(删除数据)。

关键点:DML 操作通常需要在事务中管理,以确保数据的原子性和一致性。

数据查询语言 (DQL)

定义:Data Query Language,专门用于从数据库中检索数据。虽然理论上 SELECT 属于 DML 的一部分,但在实际教学和工程中,常将其单独列为 DQL,因为它是使用频率最高的命令。

  • 核心命令

    • SELECT:查询数据,支持过滤、排序、分组、聚合和多表连接。

  • 应用场景

    • 展示商品列表。

    • 统计月度销售额。

    • 搜索特定用户信息。

特点SELECT 语句不会修改数据库中的数据,是只读操作。

数据控制语言 (DCL)

定义:Data Control Language,用于定义数据库的访问权限和安全级别。

  • 核心命令

    • GRANT:授予用户或角色特定的操作权限(如只读、读写、管理员)。

    • REVOKE:收回之前授予的权限。

  • 应用场景

    • 为开发人员分配只读账号用于排查问题。

    • 禁止普通应用账号删除生产环境数据。

    • 设置主从复制账号的同步权限。

最佳实践:遵循“最小权限原则”,只授予完成工作所需的最小权限集。

事务控制语言 (TCL)

定义:Transaction Control Language,用于管理数据库事务,确保一组操作要么全部成功,要么全部失败,从而维护数据的完整性(ACID 特性)。

  • 核心命令

    • COMMIT:提交事务,永久保存当前所有更改。

    • ROLLBACK:回滚事务,撤销当前未提交的所有更改。

    • SAVEPOINT:在事务中设置保存点,允许回滚到特定位置而非整个事务。

  • 应用场景

    • 银行转账:A 扣钱和 B 加钱必须同时成功,否则全部回滚。

    • 订单创建:生成订单、扣减库存、增加积分必须作为一个整体执行。

工作机制:默认情况下,某些数据库(如 MySQL 的 InnoDB 引擎)可能开启自动提交(Auto-commit)。在复杂业务逻辑中,通常需要手动开启事务 (START TRANSACTION),执行一系列 DML 操作后,根据结果决定 COMMITROLLBACK