目录

  1. SQL SELECT 语句简介
  2. SELECT 语句基本结构
  3. SELECT 语句常用子句
  4. SELECT 查询示例
  5. SELECT 查询优化技巧
  6. 参考资料

SQL SELECT 语句简介

SELECT 语句是 SQL 中用于从数据库中查询数据的主要工具。它可以从一个或多个表中检索所需的记录,并可结合不同的子句和功能来执行各种复杂的查询操作。SELECT 语句的基本功能是从数据库表中提取数据,通常用于生成报表、统计数据、数据分析等场景。


SELECT 语句基本结构

SELECT 语句的基本语法如下:

SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column_name;

  • SELECT:指定需要检索的列,可以使用 * 表示选择所有列。
  • FROM:指定要查询的表名。
  • WHERE:设置条件,限制查询返回的数据。
  • ORDER BY:用于排序返回结果,可以选择升序(ASC)或降序(DESC)。

示例

SELECT name, age
FROM students
WHERE age > 18
ORDER BY age DESC;

这个查询将从 students 表中检索年龄大于 18 的学生,并按年龄降序排列。


SELECT 语句常用子句

1. WHERE 子句

WHERE 子句用于指定筛选条件,只返回满足条件的记录。

SELECT * FROM employees WHERE department = 'Sales';

  • 该查询从 employees 表中返回所有在 Sales 部门的员工信息。

2. ORDER BY 子句

ORDER BY 子句用于排序结果,可以选择升序(ASC,默认)或降序(DESC)。

SELECT * FROM employees ORDER BY salary DESC;

  • 该查询将按 salary 列的值降序排列 employees 表中的数据。

3. LIMIT 子句

LIMIT 子句用于限制返回结果的数量,通常用于只获取部分数据。

SELECT * FROM employees LIMIT 5;

  • 该查询将返回 employees 表的前 5 行数据。

4. DISTINCT 关键字

DISTINCT 用于删除查询结果中的重复记录。

SELECT DISTINCT department FROM employees;

  • 该查询返回 employees 表中不同的部门名称,去掉重复项。

5. GROUP BY 子句

GROUP BY 子句用于将数据分组,通常与聚合函数(如 COUNTSUMAVG 等)一起使用。

SELECT department, COUNT(*) FROM employees GROUP BY department;

  • 该查询返回每个部门的员工数量。

6. HAVING 子句

HAVING 子句用于对 GROUP BY 子句返回的结果进行过滤。HAVING 是在 GROUP BY 之后应用的,用于筛选分组后的结果。

SELECT department, COUNT(*) 
FROM employees 
GROUP BY department 
HAVING COUNT(*) > 5;

  • 该查询返回员工数大于 5 的部门。

SELECT 查询示例

示例 1:选择所有列

SELECT * FROM products;

  • 该查询将从 products 表中检索所有列和所有记录。

示例 2:选择特定列

SELECT name, price FROM products;

  • 该查询将从 products 表中返回 nameprice 两列的数据。

示例 3:条件筛选

SELECT * FROM students WHERE grade = 'A';

  • 该查询将返回 students 表中所有成绩为 A 的学生记录。

示例 4:排序查询结果

SELECT name, age FROM employees ORDER BY age ASC;

  • 该查询将返回所有员工的姓名和年龄,并按年龄升序排序。

示例 5:分组数据

SELECT department, AVG(salary) 
FROM employees 
GROUP BY department;

  • 该查询返回每个部门的平均薪资。

示例 6:限制查询结果

SELECT * FROM employees LIMIT 10;

  • 该查询将返回 employees 表的前 10 条记录。

SELECT 查询优化技巧

  1. 使用 WHERE 子句限制数据量
    在查询时尽量使用 WHERE 子句来减少返回的数据量,提高查询效率。
  2. 避免使用 SELECT *
    尽量只选择需要的列,避免使用 SELECT *,这样可以减少数据传输和计算量。
  3. 创建索引
    对查询频繁的列创建索引(如主键、外键等),可以加速数据检索。
  4. 避免在 WHERE 子句中使用函数
    WHERE 子句中使用函数(如 UPPER(), LOWER() 等)可能会导致索引失效,降低查询效率。
  5. 使用 LIMIT 控制结果集大小
    如果只需要返回部分数据,可以使用 LIMIT 来限制结果集的大小,从而提高查询速度。

参考资料