第七讲
1.(NOT)IN子查询:,检查是否是集合中的元素
2.非相关子查询:
3.相关子查询:
4. θ sone(子查询),θ all(子查询):前者要求子查询的集合部分满足,而后者要求全部满足。
5.θ any:因为其模糊性,而被弃用。
6. = some()等同于 in() but <>some ()不同于 not in()~ <>all()
7.(not)exist(子查询):用来检查子查询是否存在元组,核心思想: not exist 即通过关联子查询,搜索是否有相应的元组,所有=不存在一个没有
8.select 展示的类目:列属性,常量,运算式,聚集函数,
9.聚集函数一共有5:
错误例子分析:count(*)用于判断元组的格式,而where是针对单一元组的判定,count(*)可用在having里
10,分组+分组过滤:
11.区分having和where:在其作用域上,前者作用在一个元组的组中,而后者作用在单个元组当中
12.并,交,查操作:
当带有all的时候是包的运算,而不带all的时候是集合的运算,集合没有相同的元素,而包会有相同的元素。
13.上述三种操作用于查询后的元组集合。
14.何为空值:即不存在,不知道的值,而不是0,会影响到聚集函数,算术运算。 空检测
15.要点总结:
16.内连接外连接:
内连接:即相当于形成笛卡尔积,全外连接保存左右所有的元组 非自然连接时可选择相应的连接条件 using则为削弱版的自 然连接,用于指定相同列中的子集。
17.视图:包含外模式与E-C映像,E为外,C为概念模式(概念模式的形式为基本表)
18.视图公式:,check option用于检查当对视图进行insert,delete,update操作时的元组是否满足条件。
19.用select语句就能直接访问查询视图。
20.
错题纠正:
分析:DML四大操作,增删改查公式的操作后面不用带table,DDL,创改扔,的要带
分析:不排除有些同学没有成绩,所以取补集要考虑进去
count(*),不能放在where中,这是错误的用法
带上all就是集合行为了,取差应为0
因为是非关联子查询,exist皆满足,所以所有student的元组都能返回
第八讲
1.完整性:维持数据库正确性,有效性,一致性的特性
2.完整性区分:(语义完整性亦可称作用户自定义完整性)
3.完整性约束条件:(p:约束的具体条件 A:在什么操作前后启动)
4.完整性分类:①对象-> 域:关系=前者关注与单一域内的数值,后者则关注与域之间数值的关系
②来源-> 结构:内容=前者关注与依赖约束,主键约束,非空约束,而后者关注与内容,如值区间
③状态-> 静态:动态=前者关注于数据的本身,后者关注于数据变更的操作
5.列约束:(只能针对一个列)
cascade和set null的差别:前者当被参照源消失则会顺带一起消失,而后者则是将引用设为空
6.表约束:(针对一个表,可以约束列之间的关系,元组之间的关系)
7.断言:即一个谓语表达式,在每一次的更新中都会自行去检查是否有违反断言。
8.Trigger触发器:用来实现动态约束,实现过程完整性
ATOMIC:原子性,即操作为一原子操作,中间没间断的执行,没有其他操作可以插入。
用来定义操作前后的表或元组,方便之后的操作。
9.安全性:DBMS应该保证的一种特性->免受非法,非授权的用户的使用,泄露,更改,破坏
10.数据安全的级别:
11.数据库系统的安全级别:
12.安全机制的划分:
13.DBMS如何实现自主安全性:
DCL!!!!
14.安全性访问规则:
15.安全性控制示例:①存储矩阵(按名控制,即标明某用户对某属性的权限)②视图(按内容控制,即标明某用户所能访问的 视图,以此来约束用户所能访问到的数据)
16.用户级别,和差别
最普通的关系用户:只能进行select操作
账户级别:能进增删改操作,还能进性创建表,约束,视图
DBA:进行一切操作, 高级用户掌控低级用户的所有
17.授权命令的公式:
18.收回授权命令公式:
19.授权轨迹:
首先由DBA给予权限->而创建表的用户自然获得账户级别->可以授予他人以自己表的关系级别
若赋予权限时,还有标明了WITH GRANT OPTION,那么被授权者也能给别人授权
19.强制安全性机制:
高级用户可以阅读低级数据,但高级用户不能写低级数据。
问题分析:
安全性约束有DCL语句控制