- 依託三張表
- 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+左外連接組 笛卡爾積
- 課後題
- 選擇查詢
超出上傳範圍 思維導圖暫緩上傳