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 25ORDER BY:排序,如
ORDER BY created_at DESC(倒序) DISTINCT:去重,如
SELECT DISTINCT city FROM customersAS:起别名,让字段或表名更清晰,如
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,不能用
= NULLLIKE 模糊匹配中,
%匹配任意长度字符,
_只匹配单个字符,如
name LIKE 'Li%'查姓李的所有人 多表查询时,若字段名重复(如两个表都有 id),必须用
表名.字段名明确指定,否则报错
