**第五章 关系数据库标准语言 SQL**
SQL,全称为Structured Query Language,是关系数据库管理系统中用于管理和处理数据的标准语言。它的主要特点包括:
1. **一体化语言**:SQL集成了数据定义、数据查询、数据操纵和数据控制等功能,能够完成数据库的全方位管理任务。
2. **非过程化**:用户只需描述所需的操作,SQL会自动处理实现细节。
3. **简洁易学**:SQL语法简单,接近自然语言,学习和掌握起来相对容易。
4. **交互与嵌入式使用**:SQL可以直接通过命令行交互使用,也可以嵌入到高级编程语言中作为程序的一部分执行。
5. **查询功能强大**:SQL的核心是SELECT语句,用于查询数据。基本查询结构包括SELECT、FROM、WHERE等短语,支持各种复杂查询操作。
**查询功能详解:**
- **无条件查询**:仅使用SELECT和FROM短语,检索指定表的所有数据。
- **条件查询**:在SELECT和FROM的基础上添加WHERE短语,根据条件筛选数据。
- **DISTINCT短语**:用于去除查询结果中的重复值。
例如:
```sql
-- 从职工关系中检索仓库WH2的所有工资值
SELECT 工资 FROM 职工 WHERE 仓库号="WH2";
-- 检索仓库中的所有元组
SELECT * FROM 仓库;
```
**联接查询**:
- **简单联接**:基于两个或更多表的查询,通过WHERE子句指定联接条件。
- **多表连接**:在查询中涉及多个表,需要明确指定字段所属的表,如`职工.仓库号=仓库.仓库号`。
例如:
```sql
-- 找出工作在面积大于400的仓库的职工号及其所在城市
SELECT 职工号, 城市
FROM 仓库, 职工
WHERE 面积 > 400 AND 职工.仓库号 = 仓库.仓库号;
```
**嵌套查询**:
- 当一个查询的条件涉及多个关系时,可以使用嵌套查询。外层查询的条件依赖于内层查询的结果。
- 嵌套查询可以使用IN、NOT IN、EXISTS、NOT EXISTS等操作符。
例如:
```sql
-- 找出至少有一个仓库的职工工资为1250元的城市
SELECT 城市
FROM 仓库
WHERE 仓库号 IN (SELECT 仓库号 FROM 职工 WHERE 工资 = 1250);
```
除了上述基本查询,SQL还支持更复杂的操作,如联合查询(UNION)、分组查询(GROUP BY)、聚合函数(如COUNT、SUM、AVG、MAX、MIN)、排序(ORDER BY)、子查询中的集合运算(INTERSECT, EXCEPT)等。这些功能使得SQL成为一个强大的工具,能够处理各种复杂的数据查询和管理任务。通过熟练掌握SQL,数据库管理员和开发者可以高效地管理和操作数据,满足各种业务需求。