数据库系统概念笔记CH4(上)
第四章:中级SQL
4.1连接表达式
连接条件:
- join…using是一种自然连接的形式,只需要在指定属性上的取值匹配
- join…on则允许一种更为普遍的自然连接
- 在下面条件下对二者进行自然连接(注意CS-315仅存在于course,CS-347仅存在于prereq中)

举例说明:
--举例子说明join...on
--
select *
from student join takes on student.ID=takes.ID
--将student.ID和takes.ID相同的元组进行了自然连接
--如果使用join...using,则由于在ID上存在不匹配,故不能够成功连接
--等价于
select *
from student,takes
where student.ID=takes.ID
连接后:

因此由于on条件可以表示为任意的SQL谓词,故on条件的自然连接表达式使得自然连接变得更加丰富。
外连接 outer join
外连接通过在结果中创建包含空值元组的方式保留了在连接中丢失的元组
外连接有三种形式:
- 左外连接:只保留出现在左外连接运算之前的关系中的元组

- 右外连接:只保留出现在右外连接运算之后的关系中的元组

- 全外连接:保留出现在两个关系中的元组

4.2 VIEWS 视图
why need views?
有时候我们希望向用户隐藏特定的数据;如果直接对部分数据进行条件提取后,如果底层数据发生变化的话,则提取的数据需要再次提取,很不方便且占用空间。
视图:不是逻辑模型的一部分,是一种作为虚关系对用户可见的关系
视图的创建: 视图关系只有在需要的时候才会被创建
--通用:
creat view v as <qeary expression>
--其中<query expression>可以是任何合法的查询表达式,v表示视图名
--创建一个instructor视图,不看到工资
creat view faculty as
select ID,name,dept_name
from instructor;
--之后可以使用view
select name
from faculty
where dept_name='Biology'
视图更新:
对视图的修改与更新实际上是作用于其所对应的数据库逻辑模型中的实际关系的修改
通常来说SQL视图可更新的条件:
-
from子句中只有一个数据库关系
-
select子句中只包含关系的属性名,不包含任何表达式、聚集或者distinct声明
-
任何没有出现在select子句中的属性可以取值为空
-
查询中没有group by或having子句
--在可插入情况下,语句: insert into faculty values (’30765’, ’Green’, ’Music’); --等价于 insert into faculty values (’30765’, ’Gre

本文主要介绍了数据库系统概念的第四章,涉及中级SQL,包括连接表达式、视图、事务、完整性约束和授权等内容。连接表达式涵盖自然连接和外连接;视图提供了一种虚关系,方便数据隐藏和更新;事务确保原子性;完整性约束保证数据一致性;SQL的数据类型和模式包括日期时间、默认值等;最后讨论了授权机制。
最低0.47元/天 解锁文章
1295

被折叠的 条评论
为什么被折叠?



