SELECT语句用于从表中查询数据而不修改原数据,核心结构为SELECT字段、FROM表名、分号结尾;常用扩展包括WHERE过滤、ORDER BY排序、DISTINCT去重、AS别名;执行顺序为FROM→WHERE→GROUP BY→HAVING→SELECT→ORDER BY→LIMIT。

SELECT 语句是 MySQL 中最基础、最常用的查询命令,作用是从一个或多个表中提取数据,**不修改原始数据**,只返回结果集(即临时表格)。它就像“取数的窗口”,你告诉数据库“要什么、从哪来、按什么条件、怎么排”,它就给你一份干净的结果。
核心结构:三要素缺一不可
一条基本 SELECT 语句至少包含三部分:
-
SELECT 后跟字段列表:指定要查哪些列,如
SELECT name, age;用*表示查全部字段(但生产环境建议避免) -
FROM 后跟表名:指明数据来源,如
FROM users - 分号(;)结尾:表示语句结束(多条语句时必须加)
例如:SELECT id, username FROM users; —— 从 users 表中取出 id 和 username 两列。
常用扩展:让查询更精准实用
实际使用中,常叠加以下子句提升表达力:
-
WHERE:加条件过滤,如
WHERE status = 'active'或WHERE age BETWEEN 18 AND 25 -
ORDER BY:排序,如
ORDER BY created_at DESC(倒序) -
DISTINCT:去重,如
SELECT DISTINCT city FROM customers -
AS:起别名,让字段或表名更清晰,如
SELECT user_name AS name FROM users u(u 是 users 的表别名)
执行顺序决定逻辑写法
MySQL 实际执行 SELECT 时,并不是按你写的顺序运行,而是严格遵循:
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT
这意味着:
- WHERE 在 SELECT 之前执行,所以不能在 WHERE 中直接用 SELECT 里定义的别名
- HAVING 是对分组后的结果再筛选,只能配合 GROUP BY 使用
- ORDER BY 和 LIMIT 总是最后生效,控制最终输出的顺序和数量
几个易忽略但关键的细节
- SQL 关键字(如 SELECT、FROM)不区分大小写,但习惯大写更易读;字段名、表名通常小写
- NULL 参与任何运算(+、=、>等)结果都是 NULL,判断空值要用
IS NULL或IS NOT NULL,不能用= NULL - LIKE 模糊匹配中,
%匹配任意长度字符,_只匹配单个字符,如name LIKE 'Li%'查姓李的所有人 - 多表查询时,若字段名重复(如两个表都有 id),必须用
表名.字段名明确指定,否则报错










