1. 如何用sql查詢語句表達關系代數式r∪s
是求並集,sql中用union實現,要求關系R和關系S的屬性數目相同,union模式是排重的,用union all保留重復值
select * from r
union
select * from s
2. 簡述SQL與關系代數的聯系和區別
聯系:關系代數是sql的理論基礎。
區別:sql是結構化查詢語言,是資料庫具體的技術標准和規范。關系代數是數學理論。
3. 述關系代數運算中的每一種運算與SQL 查詢語句有什麼關系
關系運算的投影,就是SQL查詢一列(豎),比如Select
sno
from
stu。而關系運算的選擇,就是查詢幾行(橫),比如,select
*
from
stu。關系的聯接運算,就是SQL的連接查詢(內,外,左,右,自然,等值等等),比如
Select
*
(或者某列)
from
stu,sc
where
stu.sno=sc.sno
關系的除運算應用較少也不好理解,這里不考慮。
4. sql,關系代數~~
資料庫關系代數表達式學習
關系代數是關系資料庫系統查詢語言的理論基礎。很有必要學習一下,有些是用代數表達式很方便的東西,用SQL寫出來還是挺麻煩的,並不是想像當中那麼直接。
種操作:一、關系代數的9種操作:
關系代數中包括了:並、交、差、乘、選擇、投影、聯接、除、自然聯接等操作。
五個基本操作:五個基本操作:並(∪)、差(-)、笛卡爾積(×)、投影(σ)、選擇(π)
四個組合操作:四個組合操作:交(∩)、聯接(等值聯接)、自然聯接(RS)、除法(÷)注2:等值連接表示先做笛卡爾積(×)之後,對相應列進行選擇或等值關聯後的結果(僅篩選行、不篩選列)注2:自然連接表示兩個關系中若有相同名稱的屬性,則自動作為關聯條件,且僅列出一列
二、關系代數表達式:關系代數表達式:
由關系代數運算經有限次復合而成的式子稱為關系代數表達式。這種表達式的運算結果仍然是一個關系。可以用關系代數表達式表示對資料庫的查詢和更新操作。
三、舉例說明:舉例說明:
設教學資料庫中有3個關系:
學生關系S(SNO,SNAME,AGE,SEX)學習關系SC(SNO,CNO,GRADE)課程關系C(CNO,CNAME,TEACHER)
(1)檢索學習課程號為C2的學生與成績-----------------------------------SELECTSNO,GRADEFROMSCWHERECNO='C2'------------------------------------
π
SNO,GRADE(σCNO='C2'(SC))
************************************
(2)檢索學習課程號為C2的學生與-----------------------------------SELECTSC.SNO,S.SNAMEFROMSC,SWHERESC.SNO=S.SNOANDSC.CNO='C2'-----------------------------------π
SNO,SNAME(σCNO='C2'(S
SC))
此查詢涉及S和SC,先進行自然連接,然後再執行選擇投影操作。---π
SNO,SNAME(S)
(πSNO(σCNO='C2'(SC)))
自然連接的右分量為"學了C2課的學生的集合"。此表達式比前一個表達式優化,執行起來要省時間、省空間。************************************
(3)檢索選修課程名為MATHS的學生與------------------------------------
SELECTSC.SNO,S.SNAMEFROMSC,S,CWHERESC.SNO=S.SNOANDSC.CNO=C.CNOANDC.CNAME='MATHS'-----------------------------------π
SNO,SANME(σCNAME='MATHS'(S
SCC))
************************************
(4)檢索選修課程號為C2或C4的學生-----------------------------------SELECTSNOFROMSCWHERECNO='C2'ORCNO='C4'-----------------------------------π
SNO(σCNO='C2'∨CNO='C4'(SC))
************************************
(5)檢索至少選修課程號為C2或C4的學生
-----------------------------------SELECTSA.SNOFROMSCASSA,SCASSBWHERESA.SNO=SB.SNOANDSA.CNO='C2'ANDSB.CNO='C4'-----------------------------------π1(σ1=4∧2='C2'∧5='C4'(SC×SC))************************************
(
6)檢索不學C2課的學生與年齡-----------------------------------SELECTSNAME,AGEFROMSMINUSSELECTS.SNAME,S.AGEFROMSC,SWHERESC.SNO=S.SNOANDSC.CNO='C2'(Oracle)------------------------------------
π
SNAME,AGE(S)-πSNAME,AGE(σCNO='C2'(S
SC))
************************************
(7)檢索學習全部課程的學生-----------------------------------這個定義用SQL表示比較麻煩,略過-----------------------------------π
SNO,CNO(SC)÷πCNO(C)
先用除法取出選取所有課程的SNO集(除法可以理解為一個Filter)π
SNAME(S
(πSNO,CNO(SC)÷πCNO(C)))
再關聯S表取出SNAME************************************
(8)檢索所學課程包含S3所學課程的學生-----------------------------------這個定義用SQL表示比較麻煩,略過-----------------------------------π
SNO,CNO(SC)÷
πCNO(σSNO='S3'(SC))
同樣運用了除法的特性
************************************
(9)將新課程元組將新課程元組('C10','PHYSICS','YU')插入到關系C中插入到關系-----------------------------------INSERTINTOCVALUES('C10','PHYSICS','YU')-----------------------------------(C∪('C10','PHYSICS','YU'))∪記住該符號的用法************************************
(10)將S4選修課程號為C4的成績改為85分-----------------------------------UPDATESCSETGRADE=85WHERESNO='S4'ANDCNO='C4'-----------------------------------(SC-('S4','C4',?)∪('S4','C4',85))-∪先用'-'實現DELETE功能,再用'∪'實現INSERT功能-注意使用?來表示檢索時忽略該欄位值************************************
四、關系代數表達式的優化:關系代數表達式的優化:
目的:為了系統在執行時既省時間又能提高效率。目的基本策略:先做選擇,運用投影去除多餘屬性等等。基本策略優化演算法:語法樹(盡量提前做選擇操作;在每個操作後,應做優化演算法個投影操作,去掉不用的屬性值)
例如:
ππ
SNO,SNAME(σGRADE>60(S
SC))進行優化後轉換為:πSNO(σGRADE>60(SC)))
SNO,SNAME(πSNO,SNAME(S)
--即提前做選擇操作;在每個操作後,應做個投影操作,去掉
不用的屬性值
又如:
S(S#,SNAME,AGE,SEX)SC(S#,C#,GRADE)C(C#,CNAME,TEACHER)
π
CNAME,TEACHER(σSEX='女'(S
SCC))進行優化後轉換為:
πCNAME,TEACHER(CπC#(πS#,C#(SC)πS#(σSEX='女'(S))))
優化前和優化後的語法樹如下所示:
5. 關系代數和SQL語句!急啊!高手幫幫忙
去"任務中國"吧
6. 關系代數與SQL語句:
我用一個例子進行講述,希望您可以理解其中的含義:例題:有以下三個關系:
關系XSJB(學生信息) 關系KC(課程) 關系SC(選課)
XH XM NI XB KCH KCM XH KCH G
1001 張明 20 女 001 離散數學 1001 001 88
1002 吳海 21 男 002 數據結構 1001 002 80
1003 孫軍 23 男 003 資料庫原理 1001 003 80
2001 王一 25 女 004 計算機網路 2002 005 85
2002 黃三 20 男 005 英語 2003 001 70
2003 趙平 19 男 2003 003 85
2003 002 90
005 85
上面三張表中XH、XM、NI、XB、KCH、KCM、G分別表示學生的學號、姓名、年齡、性別、課程號、課程名、成績
檢索課程號為「001」的課程名。(用關系代數和SQL語言表示)
關系代數:
πkcm(σkch='001'(XSJB))
SQL語言:
select KCM
from XSJB
where KCH='001'
7. 關系代數與SQL語句的關系舉例說明
SQL語句用法及關系代數運算是資料庫原理課中的重點和難點內容,關系代數是一種抽象數學語言,是關系數據操縱語言的一種傳統表達方式.SQL是業界公認的一種結構化的查詢語言,雖然各類資料庫管理系統中SQL語言有不同語法結構,但差別不大,且已形成了關系資料庫的國際標准語言.
8. 急求:請寫出滿足下列查詢要求的關系代數式和SQL 語句
1.
selectdistinctEname
fromEMP,WORK
whereEMP.E#=WORK.E#andWORK.P#in
(selectWORK.P#
fromWORK,PROJ,EMP
whereWORK.P#=PROJ.P#andEMP.E#=WORK.E#andEMP.Ename='Danny')
2.
selectEname
fromEMP
whereEnamenotin
(selectdistinctEname
fromEMP,WORK
whereEMP.E#=WORK.E#andWORK.P#in
(selectWORK.P#
fromWORK,PROJ,EMP
whereWORK.P#=PROJ.P#andEMP.E#=WORK.E#andEMP.Ename='Danny'))
3.
selectP#,count(E#)ascounts
fromWORK
groupbyP#
havingcount(E#)>=10
orderbycount(E#)desc