資料庫中多表查詢是常見查詢方式,在查詢多個表中的資料同時,會隨機匹配生成一個笛卡爾積,
笛卡爾積A*B:有兩個集合A,B,取這兩個集合的所有情況,
完成多表查詢的條件是首先要消除無用的資料,
多表查詢的分類
1.內連接查詢
隱式內連接:使用Where條件
SELECT * FROM emp,dept WHERE emp.'dept_id' = dept.'id'
SELECT emp.name,emp.gender,dept.name
FROM emp,dept
WHERE emp.'dept_id' = dept.'id';//產生笛卡爾積查詢,對表的內容進行限定
*起別名查詢
SELECT emp.name,emp.gender,dept.name FROM emp,dept WHERE emp.'dept_id' = dept.'id';
SELECT
t1.name,
t1.gender,
t2.name //起別名查詢
FROM
emp t1,dept t2
WHERE
t1.'dept_id' = t2.'id';
顯式內連接
語法:
SELECT 欄位串列 FROM 表名1 [INNER] JOIN 表名2 ON 條件;
SELECT * FROM emp JOIN dept ON emp.'dept_ID' = 'dept.'id';
內連接查詢注意事項
1.從那些表中查資料
2.條件是什么
3.查詢哪些欄位
外鏈接查詢
1.左外連接
語法:
SELECT 欄位串列 FROM 表1 LEFT [OUTER] JOIN 表2 ON 條件;
查詢的是左表所有資料以及其交集部分
子查詢
1.概念:查詢中嵌套查詢,被嵌套查詢為子查詢,
2.子查詢的不同情況
子查詢的情況是單行單列:子查詢作為條件,使用運算子去判斷,
SELECT * FROM emp WHERE emp.salary < (SELECT AVG(salary) FROM emp);
子查詢的情況是多行單列:子查詢作為條件,使用運算子IN來判斷,
SELECT * FROM emp WHERE dept.id IN (SELECT id FROM dept WHERE NAME = '財務部');
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/229936.html
標籤:其他
