SQL--多表查詢
連線查詢的where子句中用來連線兩個表的條件稱為連線條件,用於連線的兩個屬性值必須可以比較。
格式:表名1.列名 比較運算子 表名2.列名
連線的幾種方式:等值連線和非等值連線,自身連線,外連線,複合條件連線
eg: //複合連線
表名1.列名 比較運算子 表名2.列名 and 表名1.列名 比較運算子 表名2.列名
巢狀查詢 : 帶有IN謂詞的子查詢;帶有比較運算子的子查詢;帶有ANY,ALL謂詞的子查詢;
帶有Exists謂詞的子查詢(相關自查詢);
相關子查詢的處理過程是:首先取外層查詢表中的第一個元組,根據它與內層查詢相關的屬性值 處理內層查詢,
若where返回值為真值,擇取外層查詢中 的該元組的資料存入結果表。
for(){
for(){
}
集合查詢:select查詢是元組的集合,多個select結果的集合可以進行集合操作:union , intersect, except.
並集 ,交集, 差集
select Sname
From Student
where Sno IN
( select Sno
from SC
where Cno='2');
select Sname ,Sage
From Student
where Sage <ANY( select Sage
from Student
where Sdept='CS') AND Sdept<>'CS'
//查詢其他系中,比計算機科學系某一學生小的學生姓名和年齡
查詢 選修了全部課程的學生姓名。
學生---->學號----->所有 的課程號
select Sname
From Student
where Not Exists(
select *
from Course
where not exist(
selcet *
from SC
where Sc.Cno=Course.Cno
and Sc.Sno=Student.Sno
));