SQL SELECT语句是只读查询核心,以表格形式返回结果,基本结构为SELECT指定字段、FROM指定数据源表,二者缺一不可;支持WHERE筛选、ORDER BY排序、DISTINCT去重、LIMIT/TOP限行、GROUP BY分组及JOIN多表关联。

SQL查询语句的核心就是SELECT,它不改数据,只“看”数据——从表里按需取出你要的那一部分,结果以表格形式返回。掌握SELECT,就掌握了和数据库对话的第一步。
基础结构:两个子句撑起整个查询
最简SELECT语句只有两部分:
-
SELECT 后跟要显示的列名,比如
SELECT name, age;用*表示查所有字段,如SELECT * FROM users -
FROM 指定数据来源,必须写,比如
FROM employees;可接单表,也支持多表(用逗号或JOIN)
这两部分缺一不可。其他子句都是锦上添花,不是必需的。
筛选数据:WHERE是你的第一道过滤网
光选字段不够,还得挑出符合条件的行。WHERE子句就在FROM之后、GROUP BY之前执行:
- 支持常见运算符:
=、(或!=)、>、BETWEEN ... AND ...、IN (1,2,3) - 模糊匹配靠
LIKE:name LIKE '王%'查姓王的人,'张_'匹配“张”+一个任意字符(如“张三”) - 空值判断不能用
= NULL,得写IS NULL或IS NOT NULL
整理结果:排序、去重、限制数量
查出来数据乱糟糟?用这几个子句快速规整:
-
ORDER BY 排序:如
ORDER BY salary DESC, name ASC(先按工资降序,工资相同时再按姓名升序) -
DISTINCT 去重:写在SELECT后,如
SELECT DISTINCT city FROM customers,只返回不重复的城市名 -
LIMIT(MySQL/PostgreSQL)或 TOP(SQL Server)控制返回行数:如
SELECT * FROM logs ORDER BY time DESC LIMIT 10查最新10条日志
进阶能力:分组统计与多表关联
当你要算总数、平均值,或把不同表的数据拼在一起时,就得用这些:
-
GROUP BY 按字段分组,常配合聚合函数:
SELECT department, COUNT(*) FROM staff GROUP BY department -
HAVING 是GROUP BY的搭档,用来筛分组后的结果(WHERE筛的是原始行):
HAVING COUNT(*) > 5 -
JOIN 关联多表:最常用的是
INNER JOIN,只保留两表都匹配的记录;LEFT JOIN保证左表全保留,右表没匹配就填NULL
基本上就这些。










