1.1 多表查詢的概述
1.1.1 多表查詢的分類
1.1.1.1連接查詢
- 交叉連接:cross join
- 交叉連接:查詢到的是兩個(gè)表的笛卡爾積。
- 語法:
- select * from 表1 cross join 表2;
- select * from 表1,表2;
- 內(nèi)連接:inner join(inner是可以省略的)
- 顯示內(nèi)連接:在SQL中顯示的調(diào)用inner join關(guān)鍵字
- 語法:select * from 表1 inner join 表2 on 關(guān)聯(lián)條件;
- 隱式內(nèi)連接:在SQL中沒有調(diào)用inner join關(guān)鍵字
- 語法:select * from 表1,表2 where 關(guān)聯(lián)條件;
- 外連接:outer join(outer可以省略的)
- 左外連接:
- 語法:select * from 表1 left outer join 表2 on 關(guān)聯(lián)條件;
- 右外連接
- 語法:select * from 表1 right outer join 表2 on 關(guān)聯(lián)條件;
1.1.1.2子查詢
- 查詢:一個(gè)查詢語句條件需要依賴另一個(gè)查詢語句的結(jié)果。
1.2 多表查詢之?dāng)?shù)據(jù)準(zhǔn)備
1.1.1數(shù)據(jù)準(zhǔn)備
- 班級數(shù)據(jù)準(zhǔn)備
- 班級表數(shù)據(jù)的準(zhǔn)備.png
學(xué)生表數(shù)據(jù)的準(zhǔn)備
- 學(xué)生表數(shù)據(jù)的準(zhǔn)備.png
課程表數(shù)據(jù)的準(zhǔn)備
- 課程表數(shù)據(jù)的準(zhǔn)備.png
學(xué)生選課表的準(zhǔn)備
- 學(xué)生選課表的準(zhǔn)備.png
1.3 多表查詢之交叉連接
1.3.1 使用cross join關(guān)鍵字
- select * from classes cross join student;
1.3.2 不使用cross join關(guān)鍵字
- SELECT * FROM classes,student;
1.4 多表查詢之內(nèi)連接
1.4.1 顯示內(nèi)連接
select * from classes c inner join student s on c.cid = s.cno;
- 顯示內(nèi)連接.png
1.4.2 隱式內(nèi)連接
- SELECT * FROM classes c,student s WHERE c.cid = s.cno;
- 隱式內(nèi)連接.png
1.5 多表查詢之外連接
1.5.1 外連接
- 左外連接
SELECT * FROM classes c LEFT OUTER JOIN student s ON c.cid = s.cno;
- 左外連接.png
- 右外連接
select * from classes c right outer join student s on c.cid = s.cno;
- 右外連接.png
1.6 多表查詢之子查詢
1.6.1 帶in的子查詢
查詢學(xué)生生日在91年之后的班級的信息。
select * from classes where cid in (SELECT cno FROM student WHERE birthday > '1991-01-01');
- 帶in的子查詢.png
1.6.2 帶exists的子查詢
查詢學(xué)生生日大于91年1月1日,如果記錄存在,前面的SQL語句就會執(zhí)行
select * from classes where exists (SELECT cno FROM student WHERE birthday > '1991-01-01');
- 帶exists的子查詢.png
1.6.3 帶any的子查詢
SELECT * FROM classes WHERE cid > ANY (SELECT cno FROM student )
- 帶any的子查詢.png
1.6.4 帶all的子查詢
SELECT * FROM classes WHERE cid > ALL (SELECT cno FROM student)
- 帶all的子查詢.png











