當(dāng)我們需要的數(shù)據(jù)在不同的數(shù)據(jù)表中時(shí),就需要使用多表查詢來檢索我們需要的數(shù)據(jù)。
SQL查詢的基本原理:
1、單表查詢:根據(jù)WHERE條件過濾表中的記錄,形成中間表(這個中間表對用戶是不可見的);然后根據(jù)SELECT的選擇列選擇相應(yīng)的列進(jìn)行返回最終結(jié)果。
2、兩表連接查詢:對兩表求積(笛卡爾積)并用ON條件和連接類型進(jìn)行過濾形成中間表;然后根據(jù)WHERE條件過濾中間表的記錄,并根據(jù)SELECT指定的列返回查詢結(jié)果。
3、多表連接查詢:先對第一個和第二個表按照兩表連接做查詢,然后用查詢結(jié)果和第三個表做連接查詢,以此類推,直到所有的表都連接上為止,最終形成一個中間的結(jié)果表,然后根據(jù)WHERE條件過濾中間表的記錄,并根據(jù)SELECT指定的列返回查詢結(jié)果。
一、INNER JOIN
INNER JOIN子句將一個表中的行與其他表中的行進(jìn)行匹配,并允許從兩個表中查詢包含列的行記錄。在使用INNER JOIN子句之前,必須在FROM子句中指定主表,表中要連接的主表應(yīng)該出現(xiàn)在INNER JOIN子句中,連接條件出現(xiàn)在INNER JOIN子句的ON關(guān)鍵字之后,連接條件是將主表中的行與其他表中的行進(jìn)行匹配的規(guī)則。
語法:
SELECT 字段名列表
FROM 表1
INNER JOIN 表2 ON 連接條件1
INNER JOIN 表3 ON 連接條件2
WHERE 查詢條件
對于表1中的每一行,INNER JOIN子句將它與表2的每一行進(jìn)行比較,以檢查它們是否都滿足連接條件。當(dāng)滿足連接條件時(shí),INNER JOIN將返回由表1和表2中的列組成的新行。
二、表限定符.
如果表1和表2都具有相同列名的列,則必須在SELECT和ON子句中使用表限定符指定引用的是哪個表中的列。

三、USING關(guān)鍵字
可使用USING關(guān)鍵字替代ON表示連接關(guān)系。

四、隱式內(nèi)連接
隱式的內(nèi)連接沒有INNER JOIN關(guān)鍵字,根據(jù)WHERE條件過濾中間表的記錄,并根據(jù)SELECT指定的列返回查詢結(jié)果。

五、比較運(yùn)算符
也可以使用=以外的比較運(yùn)算符作為連接謂語。









暫無數(shù)據(jù)