- 依托三张表
- SC({SNO,CNO,GRADE}) 选修
- Sd({Sno,Sname,Ssex Sage,Sdept}) 学生表
- Cr({Cno,Cname,Cpno,Credit})学生课程表
- 先选择后投影
- 查询选了1号课程的学生的姓名
- 解析:属性,课程号,姓名 即遵循少表连接原则,Sc与Sd连接 相同有属性Sno可连接
- 大脑最简单,电脑费力的第一种 两表直接连接然后查询出课程号为1的元组集合(就是两表拼接后总和的信息)因为主要的是查询姓名 即把这个元组投影一下只要姓名那一列的属性(的后面一般重点,的前面修饰词)特殊符号不好打直接粘贴王老师课件
- 让大脑运转一下,电脑歇一下第二种 课程号在Sc表中先挑出来 再和Sd表连接 然后搞投影一下把姓名这个属性筛选出来 over
- 查询选择数据库课程学生的学号
- 解析 属性,课程名,学号 即遵循少表连接原则,Cr与SC连接 相同有属性Cno可连接
- 与上题一样两种 解析第一种 两表直接连接 查询选择了数据库这门课的崽然后投影一下把学号筛选出来
- 查询选择数据库课程学生的姓名
- 解析 属性 课程名,姓名 课程和学生两表有所需要的属性但两者没共同属性 选修表两表都能连接 承当一个桥梁来帮助下
- 两种解析 三表直接连接 把带有数据库的学生所有信息都查出来 ,成为元组集合然后投影一下把姓名这个属性单独拉出来
- 第二种 数据库在课程表 先把他筛选出来再和两表连接 最后投影一下 把姓名查询出来
- 查询成绩小于60分的学生的姓名
- 一样不解析了 两种
- 查询选修了数据库或者数学课程的学生姓名
- 注意 “或者” 这个小朋友不是 Or 二选一 而是 你可以我也可以 两者皆可
- 第二种
- 查询没有选修数据库课程的学生学号
- 解析:如果查询其他课程一个一个差太费劲不如把选修数据库的小朋友学号查询出来 用学号属性列减去查出来的小朋友就找到了选修其他课程的崽总学号学生表最齐全减去两表连接查询投影后选修数据库的学号
- 查询至少选修1号课程和3号课程的学生号码 。
- 至少:不管你选修哪几门课 1和3必须要选上
- 网红打卡地方法,真子集理解方法都是 除 和象集有关
- 首先建立一个临时关系K:就是 1和3两门课程号组建
- 先去查询选修这两门课的小朋友的信息(就是元组集合)然后投影把学号拉出来 K=πCno(σCno=‘1’∨Cno=‘3’ (Course))
- 接着找象集(我是这样理解的 首先找个表带 Cno如果这个表带学生号码更好 Sc表满足 Sc这个选修表记录了每个学生选修不同课程的信息 内心里先去把属于同一学号的同学的信息整合排列一下即为子集集合 πSno,Cno(SC)
- 这些同学里面选修了1和3即为所求 怎么告诉计算机呢 πSno,Cno(SC)÷K 这个➗可以这么理解 K为真子集 来找子集(或者K为打卡地,查询出来的新Sc表哪位网红(学生号)都去过 把她选出来
- 如果除数没有做投影➗过后属性列都是除数的属性列
- 除去相同属性列得到除数余下符合条件的属性列
- 选择题
- 1.有两个关系R(A,B,C)和S(B,C,D),则R÷S结果的属性个数是__,R ∞ S结果的属性个数是__。A C
- 做除运算属性向除数看齐
- 自然连接剔除重复属性
- A.1 B.3 C.4 D.5 E.6
- 2.设关系R和S的属性个数分别为2和3,那么R ∞S等价于__。.B
- 有选择条件通过属性值筛选组成元组
- A.σ1<2(R×S) B. σ1<4(R×S)
- C. A.σ1<2(R ∞ S) D. σ1<4(R ∞ S)
- 3.关系运算中花费时间可能最长的运算是__。C
- m+n列属性 mn元组 笛卡尔积是打笔记凑字数首选
- A.投影 B.选择 C.笛卡尔积 D.除
- 4.设有关系R,按条件f对关系R进行选择,正确的是__。C
- 选择 σ
- R×R B.R ∞ R C. σf(R) D. πf(R)
- 1.有两个关系R(A,B,C)和S(B,C,D),则R÷S结果的属性个数是__,R ∞ S结果的属性个数是__。A C
- ∞ 自然连接是有条件的 筛选后连接没有重复属性 两个关系中进行比较的分量必须是相同的属性组
- 左外连接:只保留左边关系R中的悬浮元组
- 属性m+n剔除多余相同属性列 元组例如3002有三条信息3+2+2+左外连接组 笛卡尔积
- 课后题
- 选择查询
超出上传范围 思维导图暂缓上传