请使用支持现代 CSS 与 JavaScript 的浏览器播放课件
DBPA · 3.1

SQL 概述

用共同语言操作关系数据库

VER. 2608.2 Built with impress.js

学习目标

SQL 把关系数据库的共同语言、使用方式和抽象层次连接起来

  1. 01说明 SQL 从 SEQUEL、System R 走向 ANSI/ISO 标准的基本过程
  2. 02解释功能综合、非过程化、面向集合、统一使用方式和简洁易学五个语言特征
  3. 03判断请求属于数据定义、查询、数据操纵还是数据控制
  4. 04区分交互式 SQL、API/驱动调用和嵌入式 SQL
  5. 05把外模式、基本表、视图、内模式和存储文件放回三级模式
  6. 06说明标准 SQL、DBMS 实现子集、厂商扩展与 3.2—3.6 学习路线的关系
2/15
LEARNING OBJECTIVES

SQL 从关系数据库原型走向共同语言

标准化让不同数据库系统能够共享一套语言基础

SEQUEL → System R 实现 → 改名为 SQL → ANSI / ISO 标准

节点发生什么教学意义
1974Boyce 与 Chamberlin 提出 SEQUEL关系数据库语言的早期原型
System RIBM 关系数据库原型实现 SEQUEL从研究走向系统
后来名称简化为 SQL更易记忆,也便于形成统一称呼
1986—1987ANSI 与 ISO 相继通过标准形成共同语言基础
3/15
SQL ORIGIN

标准 SQL、DBMS 实现与厂商方言要分开

阅读一条 SQL 命令时,先区分标准、实现与方言三个层次

SQL 标准

为不同系统提供共同的语法与语义基础

DBMS 实现

通常只实现标准的一个子集,支持范围和数据类型也可能不同

厂商方言

在标准之上加入扩展、限制或不同的语法行为

遇到产品命令时,判断它是否属于标准、当前 DBMS 是否实现或属于厂商扩展;记录产品与版本,并查阅产品手册

4/15
STANDARD AND DIALECT

SQL 把多种能力统一到一套语言中

SQL 统一承载定义、查询、操纵与控制

SQL 把定义、查询、操纵与控制统一到一个能力体系

定义

建立和改变数据库对象

查询

从关系中得到结果

操纵

插入、修改和删除元组

控制

安全性、完整性与并发控制

Takeaway

同一语言体系还参与事务处理、数据库维护和重构;具体命令和支持范围随标准及 DBMS 实现而异

5/15
SQL FEATURES

SQL 让用户说明要什么,不必说明怎么找

用户说明逻辑对象、属性和条件;DBMS 决定执行路径

请求方式用户需要说明系统负责什么
过程化访问方式访问路径、处理顺序和循环用户自己组织访问过程
SQL 非过程化目标关系、属性和条件RDBMS 规划路径并执行

案例:查询选修 81002 的学生姓名和成绩。用户指定逻辑对象、目标属性和条件,不指定扫描哪个文件、使用哪条索引或如何循环

Takeaway

非过程化不是“没有执行过程”,而是把执行路径的选择交给 DBMS;存储结构变化时,逻辑请求通常可以保持稳定

6/15
NON PROCEDURAL

SQL 面向集合处理数据

查询、插入、删除和更新都可一次处理一组元组

查询集合 / 更新集合

查询一次得到一组元组;插入、删除或更新一次处理一组元组

关系闭包

查询结果仍然可以作为关系继续处理

Takeaway

用户按集合描述操作;DBMS 仍可逐行、通过索引或采用其他方式执行

7/15
SET ORIENTED

统一的 SQL 语法可以服务交互和应用程序

SQL 可独立执行,也可通过接口或嵌入机制使用;核心语句结构一致

交互式 SQL

用户在交互环境中直接输入 SQL 命令操作数据库

API / 驱动调用

Java、Python 程序通常通过驱动或 API 把 SQL 请求发送给 DBMS

嵌入式 SQL

由预编译器或特定机制把 SQL 写入高级语言程序

Takeaway

接口形式可以不同,但核心 SQL 语句结构基本一致;API/驱动调用不等于严格意义的嵌入式 SQL

8/15
SQL USAGE

SQL 语言简洁且易学易用:9 个核心动词

语言简洁不等于功能简单

功能核心动词后续学习位置
数据定义CREATE、DROP、ALTER3.2
数据查询SELECT3.3
数据操纵INSERT、UPDATE、DELETE3.4
数据控制GRANT、REVOKE后续安全性章节
Takeaway

九个动词覆盖核心功能,不代表完整 SQL 只有九个动词。建立表、查询数据、修改数据、授予权限分别属于 DDL、查询、DML、DCL

9/15
CORE VERBS

SQL 支持数据库三级模式结构

用户通过基本表和视图使用逻辑数据,DBMS 管理内部存储

SQL 连接外模式、基本表和内模式存储结构的三层映射
抽象层次SQL 中的对应层次作用
外模式视图和部分基本表面向角色的局部逻辑结构
模式基本表数据库的全局逻辑结构
内模式存储文件、索引及物理结构DBMS 管理的存储组织

基本表是模式中的逻辑关系对象;存储文件和索引属于内模式,不是一张表对应一个文件的固定关系。用户或 DBA 定义索引,DBMS 在数据变化时维护,优化器在查询规划时决定是否使用

10/15
SQL AND THREE SCHEMAS

视图是从基本表或其他视图导出的虚表

用户可以把普通视图当作关系使用,但查询结果仍来自基础对象

基本表

模式中的逻辑关系对象,数据由 DBMS 持久化管理

视图(普通视图)

保存定义,不独立保存查询结果;查询时从基础对象得到结果

逻辑作用

为不同用户提供局部数据视图

11/15
VIEW AS VIRTUAL TABLE

SQL 学习从对象定义走向数据操作

3.2—3.6 依次把 SQL 的一类能力落实为可执行语句

01

3.2 数据定义

模式、表、索引与数据字典

02

3.3 数据查询

单表、连接、嵌套、集合与派生表

03

3.4 数据更新

插入、修改与删除

04

3.5 空值

判断与三值逻辑

05

3.6 视图

定义、查询、更新与作用

12/15
SQL LEARNING MAP

用标准、特征和抽象层次理解 SQL

SQL 是关系数据库的共同语言,也是用户进入三级模式的入口

标准化

标准提供共同基础,DBMS 实现子集,厂商可能增加扩展或差异

语言特征

功能综合、非过程化、面向集合、统一使用方式且简洁易学

抽象层次

外模式、基本表和普通视图服务用户;内模式管理存储文件和索引

Takeaway

学习 SQL 既要理解标准概念,也要确认具体 DBMS 的实现差异;建立对象、查询数据、改变数据、授予权限分别属于 DDL、查询、DML、DCL

13/15
SECTION REVIEW

本节知识地图

14/15
KNOWLEDGE MAP

本节问题

  1. 01SEQUEL、System R、SQL、ANSI/ISO 之间是什么关系?标准化解决了什么问题?
  2. 02SQL 的五个主要语言特征是什么?其中非过程化和面向集合分别减轻了用户什么负担?
  3. 03交互式 SQL、API/驱动调用和嵌入式 SQL 有什么区别?它们为什么仍能共享 SQL 的核心语句结构?
  4. 04外模式、模式、内模式分别对应什么?基本表、普通视图、存储文件和索引分别属于哪个层次?
  5. 05如果 DBMS 更换存储文件或索引,为什么同一个逻辑查询通常不必改写?遇到产品特有命令时还需要确认什么?
15/15
SECTION QUESTIONS