ch6_数据库语言SQL课件.ppt
文本预览下载声明
第6章 数据库语言SQL;本章内容概述;(ANSI) SQL-92:SQL2
早期的SQL Server中的T-SQL是ANSI SQL的延伸,但最为符合SQL-92标准,更新版本已经在此基础上有所扩充
(ANSI) SQL-99:SQL3
一个区别实例:在ANSI SQL-92标准中,ORDER BY子句中不允许出现没有在SELECT清单中指定的表达式,但ANSI SQL-99标准允许
(ANSI)SQL-2003:最新标准,尚在制定中
SQL Server2005在部分功能上符合SQL2003的标准;本章主要介绍一般性的SQL结构,不考虑版本差异
具体在DBMS工具软件使用时可能会有细微差别
本章的SQL是作为独立的查询语言进行分析的
实际使用中经常将SQL嵌入到宿主语言的数据模块中
包括事务处理机制
第7章针对约束和触发器进行分析,它们是对数据库内容施加用户控制的一种方式;
第8章讲述提高SQL查询效率的方法,主要采用索引及相关的数据结构;
第9章讲述数据库相关的编程技术,通过存储过程介绍嵌入式SQL的程序语法结构;*;6.1 SQL中的简单查询;6.1 SQL中的简单查询;6.1 SQL中的简单查询;*;6.1 SQL中的简单查询;6.1 SQL中的简单查询;*;6.1 SQL中的简单查询;6.1 SQL中的简单查询;6.1 SQL中的简单查询;6.1 SQL中的简单查询;6.1 SQL中的简单查询;6.1 SQL中的简单查询;6.1 SQL中的简单查询;6.2 多关系查询;6.2 多关系查询;多关系查询的解释
Select查询有三种不同的备选实现机制,其作用都是实现同一个查询
嵌套循环
所有关系都对应元组变量,每一个元组变量对应一层循环,遍历该元组变量对应的关系
图6-4描述了按照嵌套循环机制响应一个简单查询的处理流程
并行赋值
以一种任意的顺序,或者说并行的顺行从适当的关系中把所有可能的元组都赋给元组变量。对于每一种赋值,考虑WHERE子句是否为真。每一种产生真值WHERE子句的赋值给答案贡献一个元组。;多关系查询的解释
转换成关系代数
把SQL查询转换成相应的关系代数操作
从from子句的元组变量开始求笛卡尔积
再将where子句转换成条件进行选择操作
最后用select子句投影
例6.15 将6.14的查询转换成关系代数
;多种关系查询的解释
意外结果
SELECT R.A
FROM R, S, T
WHERE R.A=S.A OR R.A=T.A;
本意希望通过查询语句计算R∩(S∪T),当T为空时得到R∩S,分别用三种实现机制分析得到的结果都是空
一个实例:假设R是本班学生学号列表,S为本年段获国家
奖学金的学号,T为本年段获校级奖学金的学号,希望求出
本班所有获国奖或校奖的学号
Select R.no
from R, S, T
where R.no=S.no OR R.no=T.no
但如果本班无人获国奖,按照前面的分析可知,查询结果会连我班获校奖学号也丢失;查询的并、交、差
SQL提供了对应的操作用在查询结果上,条件是这些查询结果提供的关系具有相同的属性和属性类型列表。
用UNION、INTERSECT和EXCEPT对应并交差
例6.16,图6-5,可以简单思考如果不用并交差如何实现SELECT
例6.17,找出不是电影公司制片人的影星的名字和地址
例6.18,找出所有出现在Movies和StarsIn中的电影的名字和年份。;6.3 子查询;6.3 子查询;6.3 子查询;6.3 子查询;6.3 子查询;6.4 全关系操作;6.4 全关系操作;6.4 全关系操作;6.4 全关系操作;三种更新操作
插入元组到关系中去;
从关系中删除元组;
修改某个元组的某些字段的值;
插入元组
INSERT INTO 关系名 [(属性1,属性2….)]
{ VALUES (常量1,常量2...) | SELECT语句 }
例6.35
注意缺省、属性排列顺序
全属性插入可以简化表示;6.5 数据库更新;6.5 数据库更新;习题
P158 6.2.1 (a) (d)
6.2.2 (a) (b)
6.2.4
P166 6.3.1-6.3.11
P172 6.4.5
6.4.6 (a) (f) (i)
6.4.8
6.4.9
P175 6.5.2 (a) (c) (d);6.6 SQL中的事务;可串行化
将一组需要一起执行的操作(如上例的查询和更新),组织成
显示全部