关系数据库标准语言 SQL
结构化查询语言(Structured Query Language)是关系数据库的标准语言。
特点
SQL 是声明式语言,只需要提出 “做什么”,而无须指明 “怎么做”。
SQL 采用集合操作方式,查询和更新的结果可以是元组的集合。
SQL 功能强,但语言简洁。核心功能只用了 9 个动词。核心功能分为:
(1)数据定义(data definition):定义和修改关系模式。动词有 CREATE, DROP, ALTER。
(2)数据查询(data query):查询数据库中的数据。动词有 SELECT。
(3)数据操纵(data manipulation):更新数据库中的数据。动词有 INSERT, UPDATE, DELETE。
(4)数据控制(data control):设置数据的使用权限。动词有 GRANT, REVOKE。
数据定义
关系数据库的基本对象包括模式、表、视图和索引。
数据库层次关系如下:
数据库 --> 模式 --> 表、视图、索引
SQL 中关于数据定义的操作包括:
- 模式的定义与删除
- 表的定义、删除与更新
- 索引的建立与删除
数据查询
SQL 提供了 SELECT 语句进行数据查询。
仅涉及一个表的查询包括:
- 选择表中的若干列
- 选择表中的若干行
- 对查询结果按某列排序
- 聚集函数
- 将查询结果按列进行分组,值相等的为一组
涉及多个表的查询包括:
- 等值与非等值连接查询
- 自身连接
- 外连接
- 两个表以上的连接
SQL 支持嵌套查询。
一个 SELECT - FROM - WHERE
语句称为一个查询块。
将一个查询块嵌套在另一个查询块的 WHERE
子句的查询称为嵌套查询。
与 WHERE 相关的嵌套查询包括:
- 带有
IN
谓语的子查询 - 带有比较运算符的子查询
- 带有 ALL 谓语的子查询
- 带有 EXISTS 谓语的子查询
子查询还可以出现在 FROM
子句中,这时子查询生成的临时派生表(derived table)成为主查询的查询对象。
SELECT 语句的查询结果是元组的集合,所以多个 SELECT 语句的结果可进行集合操作,包括并操作 UNION、交操作(INTERSECT)和差操作(EXCEPT)。
数据更新
数据更新包括三种操作:
- 向表中添加若干行数据
- 修改表中的数据
- 删除表中的若干行数据
空值的处理
空值就是 “不知道”、“不存在” 或 “无意义” 的值。取空值的情况包括:
- 该属性应该有一个值,但目前不知道。如年龄。
- 该属性不应该有值。如缺考学生的成绩。
- 由于某种原因不便于填写。如电话号码等隐私。
视图
视图与表不同,它是一个虚表。视图可看作表的部分数据的展示。
关于视图的操作包括:
- 建立视图
- 查询视图
- 更新视图,本质是更新基本表
- 删除视图
视图的作用包括:
- 仅展示用户需要的数据
- 对机密数据提供安全保护
- 适当利用视图能使逻辑更清晰