數據庫中的各個表中存放著不同的數據,用戶往往需要用多個表中的數據來組合、提煉出所需要的信息。如果一個查詢需要對多個表進行操作,就稱為連接查詢。連接查詢的結果集或結果表,稱為表之間的連接連接。查詢實際上是通過各個表之間共同列的關聯性來查詢數據的,它是關系數據庫查詢最主要的特征。
連接查詢分為等值連接查詢、非等值連接查詢、自連接查詢、外部連接查詢和復合條件連接查詢。
10.3.1 等值與非等值連接查詢
表之間的連接是通過相等的字段值連接起來的查詢稱為等值連接查詢。可以用兩種方式來指定連接條件。下面例子中的兩個程序段運行結果相同。
注意:邊續查詢的連接條件中,各連接字段的數據類型不必相同,但必須相容。
10.3.2 非等值連接查詢
在等值查詢的連接條件中不使用等號,而使用其它比較運算符就構成了非等值連接查詢。可以使用的比較運算符有:> 、>、=、 <、 <=、 !=, 還可以使用BETWEEN…AND 之類的謂詞。
顯然,這個例子沒有實際應用價值,同時也說明非等值連接查詢往往需要同其它連接查詢結合使用,尤其是同等值連接查詢結合。其用法請參見後面介紹的復合條件連接查詢。
10.3.3 自連接查詢
連接不僅可以在表之間進行,也可以使一個表同其自身進行連接,這種連接稱為自連
接(Self Join),相應的查詢稱為自連接查詢。
例10-21: 查詢在公司工作的工齡相同的員工。
use pangu
10.3.4 外部連接查詢
在前面所舉的例子中,連接的結果是從兩個或兩個以上的表的組合中挑選出符合連接條件的數據,如果數據無法滿足連接條件則將其丟棄。通常稱這種方法為內部連接(InnerJoin)。在內部連接中,參與連接的表的地位是平等的。與內部連接相對的方式稱為外部連接(Outer Join)。在外部連接中,參與連接的表有主從之分,以主表的每行數據去匹配從表的數據列,符合連接條件的數據將直接返回到結果集中,對那些不符合連接條件的列,將被填上NULL 值後再返回到結果集中(對BIT 類型的列,由於BIT 數據類型不允許NULL 值,因此將會被填上0 值再返回到結果中)。
外部連接分為左外部連接(Left Outer Join)和右外部連接(Right Outer Join)兩種。以主表所在的方向區分外部連接,主表在左邊,則稱為左外部連接,主表在右邊,則稱為右外部連接。
10.3.5 復合條件連接查詢
在WHERE 子句中使用多個連接條件的查詢,稱為復合條件連接查詢。