SQL2中的連接查詢分類
(1)笛卡爾積|交叉連接:無條件連接,結果爲兩個關係元組數之積
[From] <關係名1> CROSS JOIN <關係名2>
(2)自然連接:以所有公共屬性爲基礎的等值連接,結果爲兩個關係模式的並集(刪除重複列)
[From] <關係名1> NATURAL JOIN <關係名2>
(3)內部連接:以條件表達式爲連接條件,不保留懸浮元組,保留重複列,有等值連接和不等連接之分
[From] <關係名1> [INNER] JOIN <關係名2> ON <連接條件表達式>|USING(<列名>)
(4)外部連接:可以保留懸浮元組,共分3*2=6種情況
[From] [NATURAL]<LEFT|RIGHT|FULL> OUTER JOIN [ON<連接條件表達式> USING(<列名>)]
幾點補充說明
(1)連接可以在SELECT 語句的FROM子句或WHERE子句中建立,在FROM子句中指出連接時有助於將連接操作與WHERE子句中的搜索條件區分開來;
(2)對於查詢中涉及到多個關係(即用逗號連接多個關係)的情況,WHERE子句如果給出內部連接條件,就等同於使用內部連接;如果未給出連接條件,FROM子句中將以笛卡爾積的形式進行連接;
(3)當 MySQL 在從一個表中檢索信息時,你可以提示它選擇了哪一個索引。如果 EXPLAIN 顯示 MySQL 使用了可能的索引列表中錯誤的索引,這個特性將是很有用的。通過指定 USE INDEX (key_list),你可以告訴 MySQL 使用可能的索引中最合適的一個索引在表中查找記錄行。可選的二選一句法 IGNORE INDEX (key_list) 可被用於告訴 MySQL 不使用特定的索引。
(4)無論哪種連接都不能對text、ntext和image數據類型列進行直接連接,但可以對這三種列進行間接連接。例如:
SELECT p1.pub_id,p2.pub_id,p1.pr_info
FROM pub_info ASp1 INNER JOIN pub_info AS p2
ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)