目录
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
子句用于将数据分组,通常与聚合函数(如 COUNT
、SUM
、AVG
等)一起使用。
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
表中返回name
和price
两列的数据。
示例 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 查询优化技巧
- 使用
WHERE
子句限制数据量
在查询时尽量使用WHERE
子句来减少返回的数据量,提高查询效率。 - 避免使用
SELECT *
尽量只选择需要的列,避免使用SELECT *
,这样可以减少数据传输和计算量。 - 创建索引
对查询频繁的列创建索引(如主键、外键等),可以加速数据检索。 - 避免在
WHERE
子句中使用函数
在WHERE
子句中使用函数(如UPPER()
,LOWER()
等)可能会导致索引失效,降低查询效率。 - 使用
LIMIT
控制结果集大小
如果只需要返回部分数据,可以使用LIMIT
来限制结果集的大小,从而提高查询速度。
发表回复