資源描述:
《SQL內(nèi)聯(lián),左聯(lián),右聯(lián),交叉聯(lián)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、SQL交叉聯(lián)接示例??2008-08-2714:09:30
2、??分類:SQL
3、??標簽:
4、字號大中小?訂閱有表titles1(書信息表)?如下圖有表publishers1(出版社)?如下圖執(zhí)行交叉聯(lián)接代碼:selecttitles_id,title,pub_namefromtitles1cross?joinpublishers1?orderbytitles_id????結(jié)果如下圖:大家看明白了嗎??5(行數(shù))*3(行數(shù))=15(行數(shù))??什么叫笛卡爾積這就叫笛卡爾積?現(xiàn)在要講關(guān)于交叉聯(lián)接的理論了要頂住呀!不帶睡覺啊!不聽話?按行規(guī)剁叁腳指頭!?一、聯(lián)接(
5、join)通過聯(lián)接,可以根據(jù)各個表之間的邏輯關(guān)系從兩個或多個表中檢索數(shù)據(jù)。聯(lián)接表示應(yīng)如何使用一個表中的數(shù)據(jù)來選擇另一個表中的行。聯(lián)接條件通過以下方法定義兩個表在查詢中的關(guān)聯(lián)方式:指定每個表中要用于聯(lián)接的列。典型的聯(lián)接條件在一個表中指定外鍵,在另一個表中指定與其關(guān)聯(lián)的鍵。指定比較各列的值時要使用的邏輯運算符(=、<>等)。?二、聯(lián)接類型當聯(lián)接表時,創(chuàng)建的聯(lián)接類型影響出現(xiàn)在結(jié)果集內(nèi)的行。聯(lián)接類型:三、內(nèi)聯(lián)接內(nèi)連接也叫自然連接,它是組合兩個表的常用方法。自然連接將兩個表中的列進行比較,將兩個表中滿足連接條件的行組合起來,作為結(jié)果。自然連接有兩種形式的語法。語法
6、一:??????SELECT?列??FROM?表1[insert]JION表2?ON表1.列=表2.列語法二:???????SELECT?列?FROM?表1,表2?WHERE表1.列=表2.列【例】從titles、authors和titleauthor表中查詢書的書號、書名、作者號和作者名。?selecttitles.title_id,title,authors.au_id,au_lnamefromtitlesjointitleauthorontitles.title_id=titleauthor.title_id?joinauthors?onautho
7、rs.au_id=titleauthor.au_id?四、外連接(Outerjoin)在自然連接中,只有在兩個表中匹配的行才能在結(jié)果集中出現(xiàn)。而在外連接中可以只限制一個表,而對另外一個表不加限制(即所有的行都出現(xiàn)在結(jié)果集中)。外連接分為左外連接、右外連接和全外連接。左外連接是對連接條件中左邊的表不加限制;右外連接是對右邊的表不加限制;全外連接對兩個表都不加限制,所有兩個表中的行都會包括在結(jié)果集中。?五、外連接(Outerjoin)語法左外連接的語法為:SELECT列FROM表1??LEFT??[OUTER]JOIN表2ON表1.列1=表2.列2右外連接的
8、語法為:SELECTselect_listFROM?表1RIGHT[OUTER]JOIN表2ON表1.列1=表2.列2全外連接(完整外部聯(lián)接)的語法為:SELECTselect_listFROM?表1FULL[OUTER]?JOIN?表2ON表1.列1=表2.列2?六、左向外聯(lián)接包括第一個命名表(“左”表,出現(xiàn)在JOIN子句的最左邊)中的所有行。不包括右表中的不匹配行。【例35】下面的SQL語句說明titles表和publishers表之間的左向外聯(lián)接包括所有的書名,甚至包括那些沒有出版商信息的書名:Usepubs???SELECTtitles.titl
9、e_id,???titles.title,publishers.pub_name??FROMtitlesLEFTOUTERJOINpublishersONtitles.pub_id=publishers.pub_id?七、右向外聯(lián)接包括第二個命名表(“右”表,出現(xiàn)在JOIN子句的最右邊)中的所有行。不包括左表中的不匹配行?!纠?6】在titles和publishers表之間的右向外聯(lián)接將包括所有的出版商,甚至包括那些在titles表中沒有書名的出版商。??SELECTtitles.title_id,titles.title,publishers.pub_
10、name???FROMtitlesRIGHTOUTERJOINpublishersONtitles.pub_id=publishers.pub_id?八、完整外部聯(lián)接包括所有聯(lián)接表中的所有行,不論它們是否匹配?!纠?7】titles表和publishers表之間的完整外部聯(lián)接顯示所有書名和所有出版商,甚至包括那些在另一個表中沒有匹配值的書名和出版商。???SELECTtitles.title_id,titles.title,publishers.pub_name?FROMtitlesFULLOUTERJOINpublishers??ONtitles.pu
11、b_id=publishers.pub_id?九、交叉聯(lián)接沒有WHERE子句的交