在關聯式資料庫中,有時需要將多個表的資料整合使用才能得到完整的資訊。因此需要將多個表進行連線。多表查詢和單錶查詢比較,有以下不同
(1) 在from子句中,必須寫上查詢所涉及的所有表明及連線條件
from 《表1> join 《表2>on《連線條件》[,…..n]
(2) from子句中的源表可以是乙個基於查詢的結果
(3) 多表連線,涉及多個表的字段可能有重名情況,命令中必須明確地在字段前面加表明字首來指明字段**,不重名的字段可以直接寫。
定義
多表連線,可以理解為先將多個表連線起來當做乙個表,然後再進行查詢,所有在單錶查詢中使用的其他子句和功能在多表連線查詢都是相同的。
1、內連線和外連線
將多個表連線在一起進行查詢,有5種連線方式,命令如下
(1) 內連線:左表 [inner] join 右表 on 左表.連線字段 = 右表.連線字段
(2) 左外連線: 左表 left [outer] join 右表 on 左表.連線字段 = 右表.連線字段
(3) 右外連線:左表 right [outer] join 右表 on 左表.連線字段 = 右表.連線字段
(4) 全外連線:左表 full [outer] join 右表 on 左表.連線字段 = 右表.連線字段
(5) 交叉連線:左表 cross join 右表
內連線查詢就是將兩個源表中滿足條件的記錄相連
左外連線,包括內連線的查詢結果記錄,以及左表中所有不滿足連線條件的其他記錄。這些不滿足條件的左表記錄,在查詢結果的右邊位置全部填上null值
右外連線,包括內連線的查詢結果記錄,以及右表中所有不滿足連線條件的其他記錄。
這些不滿足條件的右表記錄,在查詢結果的左邊位置全部填上null值
全外連線,查詢結果包括左右表全部滿足連線條件的記錄,以及左右表所有不滿足條件的其他記錄。不滿足條件的記錄分別放在結果中,在左邊或者右邊空位上填上null
交叉連線即笛卡爾連線,用於實現笛卡爾積運算。即將兩個表的所有記錄一一連線起來。
【例1】
【例2】
【例3】
2使用派生表
【例4】
多表查詢(連線查詢)
多表查詢 資料 是多個表,這時注意一定要書寫連線條件。當n個表連線,至少需要n 1個連線條件。注意 1 如何判斷兩個表之間有公共列?型別一致 寬度一致。列名不能作為判斷標準,列名不同也能是公共列 如 emp的empno和emp的mgr 2 如何避免二義性問題?給每個屬性加歸屬。3 注意使用表別名。表...
多表連線查詢
1 內連線 inner join 只返回兩個表中所有滿足連線條件的行 2 外連線outer join 除了返回兩個表中所有滿足連線條件的行之外,還返回 某個表中不滿足連線條件的行 3 交叉連線 產生笛卡爾積的連線 如果連線條件使用等號 就可以叫做相等連線 1 使用natural join關鍵字進行內...
多表連線查詢
1.如果乙個查詢需要多個表進行操作,就成為連線查詢。2.連線查詢實際上是通過各個表之間共同列的關聯性來查詢資料的,資料表之間的聯絡是通過表的字段值來體現的。查詢 劉偉 老師所教授的課程,要求列出教師號,教師姓名和課程號 1.方法一 select t.no,tn,cno from t,tc where...