SQL查询语句完整讲解_SQL基础SELECT用法说明

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)
  • 模糊匹配靠LIKEname LIKE '王%' 查姓王的人,'张_' 匹配“张”+一个任意字符(如“张三”)
  • 空值判断不能用= NULL,得写 IS NULLIS 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

基本上就这些。