关于计算机研究生复试的数据库相关问题(笔试)
系统概念相关
数据视图
数据抽象: 物理层–>逻辑层–>视图层
实例和模式:物理模式–>逻辑模式–>子模式
数据集合是实例(Instance), 数据库总体设计为数据库模式(Schema)
数据模型: 关系模型 实体-联系模型(E-R) 基于对象的模型 半结构化数据模型
关系运算
域:关系中的某属性允许取值的集合
码:整个关系中区分不同元组的一种性质
超码 super key:一个或多个属性的集合,唯一标识一个元组,允许有多余的属性
候选码 candidate key:允许最少必要属性的超码即候选码比如{ID}{name,seat}是两个候选码
主码 primary key:设计者在一个关系内的候选码中选择的区分元组的属性组合
主码选择原则:选择那些值从不改变或极少改变的候选码作primary key
外码 foreign key:一个关系内的某属性是另一个关系的主码
关系代数
- 选择元组/属性 σ
- 投影 π
- 自然连接 ∞
- 笛卡尔积 X
- 集合运算 交 并
自然连接举例
A | B | C | D | B | E | |
---|---|---|---|---|---|---|
1 | a | 3 | 2 | c | 7 | |
2 | b | 6 | 3 | d | 5 | |
3 | c | 7 | 1 | a | 3 | |
* 计算笛卡尔积 | ||||||
* 选出左B=右B的元组,不等的不算,忽略掉 | ||||||
* 合并该元组,成为新元组 A B C D E ,成为新元组的只有两组 | ||||||
1 | a | 3 | 1 | 3 | ||
3 | c | 7 | 2 | 7 | ||
## SQL相关 | ||||||
自然连接 nature join 和join using(某个属性) | ||||||
并运算:union 自动去重 union all 可以保留重复 | ||||||
交运算:intersect 自动去重 intersect all 可保留重复 | ||||||
差运算:except 自动去重 except all 可保留重复 |
聚集函数:sum, min , max , count , avg
分组聚集: group by中没有出现的属性,只要是出现在select中,必须在聚集函数内部的形式出现,比如b,c没出现在group by 内部,用例:
1 | select a,avg(b),sum(c) from table1 group by a; |
集合成员资格:in ,not in
集合比较:some运算,用例
1 | select ID from instructor |
空关系测试:exists, not exists,测试子查询结果中是否存在元组,用例:
1 | DSC黑书第六版中的,“找出选修了bio系开设的所有课程的学生”(表在官网 |
重复元组存在性测试:unique,测试子查询返回集合是否有重复元组,无则返回true;not unique则相反
1 | DSC黑书第六版中的,“找出所有在2019年最多开设一次的课程” |
标量子查询:子查询只返回包括【单个属性】的【单个元组】,只可以出现在select where having三种子句中