SQL查询语句是数据库管理和数据处理的核心部分,以下是一些基础和高级的SQL查询语句及其应用示例,适用于包括SQL Server在内的多种关系型数据库系统:
基础查询语句
1. SELECT 语句
基本选择:从表中选择所有列。
```sql
SELECT FROM table_name;
```
选择特定列:指定需要的列。
```sql
SELECT column1, column2 FROM table_name;
```
条件过滤:使用WHERE子句添加条件。
```sql
SELECT FROM table_name WHERE column_name = 'value';
```
2. 排序数据:使用ORDER BY对结果进行排序。
```sql
SELECT FROM table_name ORDER BY column_name ASC/DESC;
```
3. 分组数据:GROUP BY用于分组,常与聚合函数一起使用。
```sql
SELECT column1, COUNT() FROM table_name GROUP BY column1;
```
4. 筛选特定范围:BETWEEN用于范围选择。
```sql
SELECT FROM table_name WHERE column_name BETWEEN value1 AND value2;
```
5. 选择唯一值:DISTINCT用于去除重复值。
```sql
SELECT DISTINCT column_name FROM table_name;
```
6. 限制结果数量:TOP用于限制返回的行数。
```sql
SELECT TOP 5 column_name FROM table_name;
```
进阶查询语句
1. 连接查询
内连接(INNER JOIN):只返回两个表中匹配的行。
```sql
SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;
```
2. 外连接(LEFT JOIN, RIGHT JOIN)
左外连接(LEFT JOIN):返回左表的所有行,右表匹配的行,不匹配的为NULL。
```sql
SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name;
```
3. 聚合函数
如SUM, AVG, MAX, MIN, COUNT等,用于对数据进行汇总计算。
4. 子查询
在一个查询语句内部嵌套另一个查询,用于复杂条件判断或数据提取。
```sql
SELECT column_name FROM table_name WHERE column_name IN (SELECT column_name FROM another_table);
```
5. 窗口函数
如RANK(), ROW_NUMBER(), LAG(), LEAD(), AVG() OVER()等,用于在结果集的每一行上执行计算,保持结果集的行数不变。
```sql
SELECT
EmployeeID,
Salary,
RANK() OVER (ORDER BY Salary DESC) AS SalaryRank
FROM Employees;
```
6. 递归查询
使用WITH RECURSIVE定义递归公共表表达式,处理层次结构数据。
```sql
WITH RECURSIVE EmployeeHierarchy AS (
SELECT EmployeeID, ManagerID
FROM Employees
WHERE ManagerID IS NULL
UNION ALL
SELECT e.EmployeeID, e.ManagerID
FROM Employees e
JOIN EmployeeHierarchy eh ON e.ManagerID = eh.EmployeeID
SELECT FROM EmployeeHierarchy;
```
7. 事务控制
包括BEGIN TRANSACTION, COMMIT, ROLLBACK等,用于管理数据库操作的原子性。
8. 数据定义语言(DDL)
如CREATE TABLE, ALTER TABLE, DROP TABLE等,用于创建、修改和删除数据库对象。
9. 数据操作语言(DML)
包括INSERT, UPDATE, DELETE,用于插入、修改和删除数据。
这些查询语句构成了SQL查询的基础和进阶知识,通过组合使用,可以解决数据处理中的大部分需求。