SELECT语句基础
SELECT
语句是最基本也是最常用的查询工具,它允许用户从数据库表中检索特定的数据行和列,其基本语法如下:
SELECT [DISTINCT] column1, column2, …
FROM table_name
WHERE condition;
SELECT
后跟要检索的列名,可以是具体列名或通配符*
(表示所有列)。FROM
指定要查询的表名。WHERE
子句用于过滤结果集,只返回满足条件的行。此外,可以使用DISTINCT
关键字对返回的表进行去重。
GROUP BY子句
GROUP BY
子句用于将查询结果按一个或多个列进行分组。常与聚合函数(如COUNT()
、SUM()
、AVG()
等)一起使用。
SELECT column1, COUNT(*)
FROM table_name
WHERE condition;
GROUP BY column1;
注意事项:
-
SELECT
后跟的列必须在GROUP BY
列表中出现,除非使用聚合函数进行聚合。 -
GROUP BY
必须跟在WHERE
后面,但WHERE
可以省略。 -
分组后的查询结果中,每一行代表一个分组。
HAVING子句
HAVING
子句用于过滤GROUP BY
后的分组结果。与WHERE
不同,HAVING
可以在聚合函数上设置条件。
SELECT column1, COUNT(*) as c
FROM table_name
GROUP BY column1
HAVING COUNT(*) > 10; -- 不能引用别名C
注意事项:
-
HAVING
子句必须在GROUP BY
之后使用。 -
HAVING
条件可以包含聚合函数,但不能引用SELECT
后的别名。
ORDER BY子句
ORDER BY
子句用于对查询结果进行排序。可以指定升序(ASC
)或降序(DESC
)。
SELECT column1, column2
FROM table_name
ORDER BY column1 ASC, column2 DESC;
注意事项:
-
默认排序方式为升序。
-
可以同时按多个列排序,且顺序可以与
SELECT
后的列表顺序不一致。
限制返回的行数
在不同的数据库实现中,限制返回行数的命令可能不一致,以下给出MySQL和SQL Server的行数限制命令:
1、MySQL
MySQL使用LIMIT
来限制返回的结果行数。
SELECT * FROM table_name LIMIT 10;
2、SQL Server
SQL Server使用TOP
来限制结果集大小。
SELECT TOP 10 * FROM table_name;