MySQL SELECT 语句基础与规范指南
本文将深入解析 MySQL SELECT 语句的基础语法与使用规范。涵盖从 DQL 的数据定义、语法规则到具体的列选择、命名别名、去重处理及空值计算等核心知识点,助你编写标准高效的数据库查询。
SQL 语言基础与规范
SQL(Structured Query Language,结构化查询语言)自 IBM 在上世纪 70 年代提出以来,至今仍是关系型数据库的标准语言。当前主流的 SQL-92 和 SQL-99 标准依然被广泛遵循。作为后端开发或数据分析师,精准使用 SQL 是提取有效业务数据的前提。
在功能上,SQL 主要分为以下类别:
- DDL(数据定义语言):使用
CREATE、DROP、ALTER等关键字管理数据库结构。 - DML(数据操作语言):用于记录的管理与完整性检查,包含
INSERT、DELETE、UPDATE和SELECT。 - DCL/TCL(控制与事务语言):涉及权限控制(
GRANT)及事务提交回滚(COMMIT、ROLLBACK)。
由于查询操作的极高频率,在实际开发中常将 SELECT 单独划为 DQL(数据查询语言)。以下是编写 SQL 时必须遵守的规则:
书写规范与标点符号
为了提高可读性,建议多步子句分行书写。每条命令必须以分号 ; 结束。注意所有括号、引号必须成对使用,且仅支持英文半角字符。字符串和日期类型数据应使用单引号,而字段别名建议使用双引号并保留 AS 关键字以确保清晰。

大小写敏感性与推荐写法
MySQL 在不同操作系统下的敏感性存在差异:
- Windows 环境下不区分大小写;
- Linux 环境下,库名/表名严格区分大小写,但关键字和字段名忽略大小写。
业界推荐的统一规范是:数据库名、表名、字段名全部小写,而 SQL 关键字和函数名大写。此外,当字段名或表名与系统保留字(如 ORDER)冲突时,必须使用反引号(`` ` ``)将其包裹起来以进行转义。

基本的 SELECT 查询操作
第 1 步:指定选择哪些列
SELECT 语句最基本的作用是筛选表中的字段数据。如果未指定字段直接从 FROM 子句选择,默认返回该行所有字段信息。
SELECT * FROM departments;
性能提示:除非确实需要表中所有列,否则严禁在生产环境直接使用 SELECT *。盲目获取全量字段会导致不必要的网络传输开销并降低应用程序的运行效率。
SELECT 后显式声明字段名,用逗号分隔:SELECT department_id, location_id FROM departments;
第 2 步:为列设置清晰的别名(Alias)
为了便于计算或在结果集中拥有更具可读性的列标题,可以使用 AS 关键字对列进行重命名。别名写在字段名之后。若别名中包含空格、特殊符号或需要区分大小写,必须配合双引号使用。
-- AS 关键字可选,简短别名可省略 AS SELECT last_name AS name, commission_pct comm FROM employees; -- 使用 AS 配合双引号处理复杂别名及计算列 SELECT last_name "Name", salary*12 "Annual Salary" FROM employees;


第 3 步:去除结果集中的重复行
默认查询会返回匹配的所有记录,包括重复行。若要查看唯一的数据组合,需结合 DISTINCT 关键字使用。
SELECT DISTINCT department_id FROM employees;


在使用去重功能时有两个核心注意事项:
1. DISTINCT 必须位于所有列名的最前面,否则会触发语法报错。
2. 去重的粒度是基于 DISTINCT 后面跟随的所有字段组合。例如 SELECT DISTINCT department_id, salary FROM employees 会根据“部门ID + 薪资”这一组合是否一致来去重,而非单纯过滤部门列表。
第 4 步:掌握常数查询与空值(NULL)运算规则
SELECT 还可以查询不在任何数据表中的常数或数学表达式。这常用于向结果集增加固定的标识标记,或在报表展示中构建一个固定值的基准列。
NULL,整个表达式的结果必定为 NULL。即便是在计算年薪等场景中,如果奖金比例为空,最终得出的年薪也会变为空值。务必理解 NULL 代表的是“未知”,它不同于长度为 0 的空字符串 ''。
总结
以上就是 MySQL SELECT 语句基础操作与规范编写的详细内容,更多关于 MySQL 进阶查询技巧的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









