数据库系统概念笔记——第四章:中级SQL
Posted 叶卡捷琳堡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库系统概念笔记——第四章:中级SQL相关的知识,希望对你有一定的参考价值。
文章目录
第四章:中级SQL
4.1 连接表达式
4.1.1 连接条件
可以使用 join…using 子句指定自然连接需要匹配的条件
on条件允许在参与有连接的关系的关系上设置通用谓词,该谓词的写法与where子句谓词类似
在on语句后写具体的条件
select * from student join takes on student.ID = takes.ID;
4.1.2 外连接
外连接运算与自然连接运算类似,只不过通过在结果中创建空值的方式,保留了在连接中丢失的元组
三种形式的外连接
- 左外连接:left outer join,只保留左边这张表的元组
- 右外连接:right outer join,只保留右边那张表的元组
- 全外连接:full outer join,保留出现在关系中全部的元组
select * from student natural left outer join takes;
查询结果如下,右边表未匹配上的自动以空值呈现
4.1.3 连接类型和连接条件
SQL把常规连接叫内连接,使用inner join关键字
此外就是外连接,使用outer join关键字
连接类型和连接条件表
关于外连接的拓展
- 可以在表名后加外连接操作符(*)或(+)指定非主体表
- 非主体表有一个万能的“虚行”,改行全部由空值构成
- 虚行可以与主表中所有不满足连接条件的元组进行连接
4.2 视图
4.2.1 视图定义
create view view_name[(列名,列名,...)] as (查询表达式)
使用create view可以创建视图,列名为可选项,用户可以指定也可以不指定
4.2.2 SQL查询中使用视图
删除视图
drop view view_name
视图中不会被分配空间,视图中也不会包含实际的数据,视图只保存视图的定义,视图中的数据是从基表中获取的。
视图的数据在视图被引用时动态生成
视图的查询与普通表的查询类似,这里不再赘述
4.2.3 物化视图
在特定的数据库中,允许存储视图关系。如果用于定义视图的基本表中的数据有变化,那么该视图也需要变化
保持物化视图一直处于最新状态的过程被称为视图维护
4.2.4 视图更新
视图更新可能存在问题,比如在插入数据时,如果视图的属性列少于基本表,那么可能会出现以下两种情况
- 拒绝插入
- 向基本表中插入元组,未赋值的属性值为NULL
因为存在种种问题,因此有的时候不支持对视图的更新,不同的数据库版本对视图更新的限制也不相同
4.3 事务
事务由查询语句(select)和更新语句(update)构成,当一条SQL语句被执行,就隐式地开启了一个事务
- commit:提交当前事务,将事务所做的更新在数据库中长久保存
- rollback:回滚当前事务,撤销该事务中所有SQL语句对数据库的更新
当事务执行遇到错误时,回滚是有效的,一旦事务执行了commit,就不能通过rollback撤销了
4.4 完整性约束
在第三章的笔记中已经有了,这里不再赘述
4.5 SQL的数据类型和模式
4.5.1 SQL中的日期和时间类型
4.5.2 默认值
可以为属性设置默认值
create table s
(
sex char(1) default '1',
sno char(5)
)
4.5.3 创建索引
create index studentID_index on studuent(ID);
在student表上的ID属性列创建了索引,名为studentID_index
4.5.4 大对象类型
在数据库中,使用Blob或Clob存放数据量较大的对象
CLOB:字符数据的大对象类型
BLOB:二进制数据的大对象数据类型
4.5.5 用户自定义类型
创建自定义类型的语法
create type 类型名 数据类型
create type person_name char(20)
用户自定义类型的使用
create table S
(
a1 char(10),
a2 person_name
);
SQL提供了drop type和alter type子句来删除或修改以前创建过的类型
4.6 授权
一般来说,数据库会给不同的用户设定不同的权限
比如授权某用户只能读取数据,只能插入数据,不能删除等等
4.6.1 权限的授予与收回
授权的语法格式
grant 表级权限 on 关系名或视图名 to 用户/角色列表
例:
grant select on student to admin,Mike,Jack
grant update(budget) on department to Mike
撤销,收回权限
使用revoke关键字收回权限
revoke select on student to admin,Mike,Jack
4.6.2 角色
角色:为了指明一类人应有的授权,提出了角色概念。
在数据库中建立角色集,并授予每个角色一定的权限,然后将角色分配给用户。
#创建角色并给角色相关的权限,最后将角色赋给对应的用户
create role teller;
grant select on account to teller;
grant insert,delete on customer to teller;
grant teller to Jack;
以上是关于数据库系统概念笔记——第四章:中级SQL的主要内容,如果未能解决你的问题,请参考以下文章