`SELECT`语句是用于从数据库表中查询数据的基本SQL语句。它的基本语法如下:
查询指定列
```sql
SELECT 列名1, 列名2, ... FROM 表名;
```
例如,查询`users`表中的`name`和`age`列:
```sql
SELECT name, age FROM users;
```
查询所有列
使用星号(*)代替列名,可以查询表中的所有列:
```sql
SELECT * FROM 表名;
```
例如,查询`users`表中的所有列:
```sql
SELECT * FROM users;
```
使用WHERE子句过滤数据
`WHERE`子句用于过滤记录,只返回满足条件的记录:
```sql
SELECT 列名1, 列名2, ... FROM 表名 WHERE 条件;
```
例如,查询`users`表中年龄大于18岁的用户的`name`和`age`列:
```sql
SELECT name, age FROM users WHERE age > 18;
```
使用ORDER BY子句排序数据
`ORDER BY`子句用于对查询结果进行排序,可以指定升序(ASC)或降序(DESC):
```sql
SELECT 列名1, 列名2, ... FROM 表名 ORDER BY 列名 ASC|DESC;
```
例如,按`age`列降序排列查询结果:
```sql
SELECT * FROM users ORDER BY age DESC;
```
多表连接
可以使用`JOIN`子句连接多个表,包括内连接、左外连接、自连接和多表连接:
内连接:
```sql
SELECT 列名1, 列名2, ... FROM 表名1 JOIN 表名2 ON 表名1.key = 表名2.key;
```
左外连接:
```sql
SELECT 列名1, 列名2, ... FROM 表名1 LEFT JOIN 表名2 ON 表名1.key = 表名2.key;
```
自连接:
```sql
SELECT 列名1, 列名2, ... FROM 表名1 AS A JOIN 表名1 AS B ON A.key = B.key;
```
多表连接:
```sql
SELECT 列名1, 列名2, ... FROM 表名1 JOIN 表名2 ON 表名1.key = 表名2.key JOIN 表名3 ON 表名2.key = 表名3.key;
```
使用聚合函数和GROUP BY子句
可以使用聚合函数(如`COUNT()`, `SUM()`, `AVG()`等)和`GROUP BY`子句对查询结果进行分组和汇总:
```sql
SELECT 列名1, 列名2, 聚合函数(列名) FROM 表名 GROUP BY 列名;
```
例如,查询每个部门的总销售额:
```sql
SELECT department, SUM(sales) FROM sales GROUP BY department;
```
使用HAVING子句过滤分组结果
`HAVING`子句用于过滤分组后的结果,类似于`WHERE`子句,但应用于分组:
```sql
SELECT 列名1, 列名2, ... FROM 表名 GROUP BY 列名 HAVING 条件;
```
例如,查询销售额大于10000的部门:
```sql
SELECT department, SUM(sales) FROM sales GROUP BY department HAVING SUM(sales) > 10000;
```
使用子查询
可以在`SELECT`语句中使用子查询来获取更复杂的数据:
```sql
SELECT 列名1, 列名2, ... FROM 表名 WHERE 列名 IN (子查询);
```
例如,查询年龄在18到30岁之间的用户:
```sql
SELECT * FROM users WHERE age IN (SELECT age FROM users WHERE age BETWEEN 18 AND 30);
```
这些是`SELECT`语句的基本用法和常见示例。根据具体需求,可以组合使用这些功能来构建更复杂的查询。