Oracle 拼接表
在 Oracle 數據庫中,常常需要將多個表的數據進行組合并顯示,此時可以使用 拼接表(Join)操作。
如下面的例子,我們將 student 和 score 表進行拼接,顯示學生的姓名和他們的總成績:
SELECT student.name, SUM(score.score) as total_score FROM student JOIN score ON student.id = score.student_id GROUP BY student.id;
在上面的查詢中,我們使用了 JOIN 關鍵字將 student 表和 score 表進行了拼接。
關于 Oracle 中的拼接表操作,常見的有以下幾種類型:
內連接(Inner Join):
內連接是最普遍的拼接類型,它只會返回兩個表中有 對應記錄 的數據。如下面的例子:
SELECT student.name, score.score FROM student JOIN score ON student.id = score.student_id;
在上面的查詢中,只有 當 student 表中存在相同的id時,score 表才會顯示對應的分數。
左連接(Left Join):
左連接是指 以左邊的表為基準,將右邊的表中有對應 記錄的數據合并。如果右邊的表中沒有對應記錄,則顯示 NULL。 如下面的例子:
SELECT student.name, score.score FROM student LEFT JOIN score ON student.id = score.student_id;
在上面的查詢中,即使 student 表中沒有與 score 表對應的記錄,仍會將 student 表中的記錄顯示出來,并顯示NULL。
右連接(Right Join):
右連接是指 以右邊的表為基準,將左邊的表中有對應 記錄的數據合并。如果左邊的表中沒有對應記錄,則顯示 NULL。 如下面的例子:
SELECT student.name, score.score FROM student RIGHT JOIN score ON student.id = score.student_id;
在上面的查詢中,即使 score 表中沒有與 student 表對應的記錄,仍會將 score 表中的記錄顯示出來,并顯示NULL。
全連接(Full Join):
全連接是指將 全部的記錄都合并,并將沒有對應記錄的部分顯示為 NULL。 如下面的例子:
SELECT student.name, score.score FROM student FULL JOIN score ON student.id = score.student_id;
在上面的查詢中,將 student 表和 score 表的所有記錄都顯示出來,如果沒有對應的記錄則顯示 NULL。
交叉連接(Cross Join):
交叉連接是指將兩個表的每條記錄都相互匹配,返回的結果集大小為兩個表的記錄數相乘。 如下面的例子:
SELECT student.name, score.score FROM student CROSS JOIN score;
在上面的查詢中,將 student 表和 score 表的每條記錄都相互匹配,返回的結果集大小即為 student 表記錄數和 score 表記錄數的乘積。
以上是 Oracle 中拼接表的幾種類型,可以根據需求進行選擇。