• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    SQL連接查詢語法及使用

    來源:懂視網 責編:小采 時間:2020-11-09 13:43:09
    文檔

    SQL連接查詢語法及使用

    SQL連接查詢語法及使用:一、交叉連接(cross join) 交叉連接(cross join):有兩種,顯式的和隱式的,不帶on子句,返回的是兩表的乘積,也叫笛卡爾積。 例如:下面的語句1和語句2的結果是相同的。 語句1:隱式的交叉連接,沒有cross join. select o.id, o.order_
    推薦度:
    導讀SQL連接查詢語法及使用:一、交叉連接(cross join) 交叉連接(cross join):有兩種,顯式的和隱式的,不帶on子句,返回的是兩表的乘積,也叫笛卡爾積。 例如:下面的語句1和語句2的結果是相同的。 語句1:隱式的交叉連接,沒有cross join. select o.id, o.order_

    一、交叉連接(cross join) 交叉連接(cross join):有兩種,顯式的和隱式的,不帶on子句,返回的是兩表的乘積,也叫笛卡爾積。 例如:下面的語句1和語句2的結果是相同的。 語句1:隱式的交叉連接,沒有cross join. select o.id, o.order_number, c.id, c.name

      一、交叉連接(cross join)

      交叉連接(cross join):有兩種,顯式的和隱式的,不帶on子句,返回的是兩表的乘積,也叫笛卡爾積。

      例如:下面的語句1和語句2的結果是相同的。

      語句1:隱式的交叉連接,沒有cross join.

      select o.id, o.order_number, c.id, c.name

      from orders o , customers c

      where o.id=1;

      語句2:顯式的交叉連接,使用cross join.

      select o.id,o.order_number,c.id,c.name

      from orders o cross join customers c

      where o.id=1;

      語句1和語句2的結果是相同的,查詢結果如下:

      二、內連接(inner join)

      內連接(inner join):有兩種,顯式的和隱式的,返回連接表中符合連接條件和查詢條件的數據行。(所謂的鏈接表就是數據庫在做查詢形成的中間表)。

      例如:下面的語句3和語句4的結果是相同的。

      語句3:隱式的內連接,沒有inner join,形成的中間表為兩個表的笛卡爾積。

      select o.id,o.order_number,c.id,c.name

      from customers c, orders o

      where c.id=o.customer_id;

      語句4:顯示的內連接,一般稱為內連接,有inner join,形成的中間表為兩個表經過on條件過濾后的笛卡爾積。

      select o.id,o.order_number,c.id,c.name

      from customers c inner join orders o on c.id=o.customer_id;

      語句3和語句4的查詢結果:

      三、外連接(outer join):

      外連不但返回符合連接和查詢條件的數據行,還返回不符合條件的一些行。外連接分三類:左外連接(left outer join)、右外連接(right outer join)和全外連接(full outer join)。

      三者的共同點是都返回符合連接條件和查詢條件(即:內連接)的數據行。不同點如下:

      左外連接還返回左表中不符合連接條件單符合查詢條件的數據行。

      右外連接還返回右表中不符合連接條件單符合查詢條件的數據行。

      全外連接還返回左表中不符合連接條件單符合查詢條件的數據行,并且還返回右表中不符合連接條件單符合查詢條件的數據行。全外連接實際是上左外連接和右外連接的數學合集(去掉重復),即"全外=左外union 右外".

      說明:左表就是在"(left outer join)"關鍵字左邊的表。右表當然就是右邊的了。在三種類型的外連接中,outer 關鍵字是可省略的。

      下面舉例說明:

      語句5:左外連接(left outer join)

      select o.id,o.order_number,o.customer_id,c.id,c.name

      from orders o left outer join customers c on c.id=o.customer_id;

      語句6:右外連接(right outer join)

      select o.id,o.order_number,o.customer_id,c.id,c.name

      from orders o right outer join customers c on c.id=o.customer_id;

      注意:where條件放在on后面查詢的結果是不一樣的。例如:

      語句7:where條件獨立。

      select o.id,o.order_number,o.customer_id,c.id,c.name

      from orders o left outer join customers c on c.id=o.customer_id

      where o.order_number<>'mike_order001';

      語句8:將語句7中的where條件放到on后面。

      select o.id,o.order_number,o.customer_id,c.id,c.name

      from orders o left outer join customers c on c.id=o.customer_id and o.order_number<>'mike_order001';

      從語句7和語句8查詢的結果來看,顯然是不相同的,語句8顯示的結果是難以理解的。因此,推薦在寫連接查詢的時候,on后面只跟連接條件,而對中間表限制的條件都寫到where子句中。

      語句9:全外連接(full outer join)。

      select o.id,o.order_number,o.customer_id,c.id,c.name

      from orders o full outer join customers c on c.id=o.customer_id;

      注意:mysql是不支持全外的連接的,這里給出的寫法適合oracle和db2.但是可以通過左外和右外求合集來獲取全外連接的查詢結果。下圖是上面sql在oracle下執行的結果:

      語句10:左外和右外的合集,實際上查詢結果和語句9是相同的。

      select o.id,o.order_number,o.customer_id,c.id,c.name

      from orders o left outer join customers c on c.id=o.customer_id

      union

      select o.id,o.order_number,o.customer_id,c.id,c.name

      from orders o right outer join customers c on c.id=o.customer_id;

      語句9和語句10的查詢結果是相同的,如下:

      四、聯合連接(union join):

      這是一種很少見的連接方式。oracle、mysql均不支持,其作用是:找出全外連接和內連接之間差異的所有行。這在數據分析中排錯中比較常用。也可以利用數據庫的集合操作來實現此功能。

      語句11:聯合查詢(union join)例句,還沒有找到能執行的sql環境。

      select o.id,o.order_number,o.customer_id,c.id,c.name

      from orders o union join customers c on c.id=o.customer_id

      語句12:語句11在db2下的等價實現。還不知道db2是否支持語句11呢!

      select o.id,o.order_number,o.customer_id,c.id,c.name

      from orders o full outer join customers c on c.id=o.customer_id

      except

      select o.id,o.order_number,o.customer_id,c.id,c.name

      from orders o inner join customers c on c.id=o.customer_id;

      語句13:語句11在oracle下的等價實現。

      select o.id,o.order_number,o.customer_id,c.id,c.name

      from orders o full outer join customers c on c.id=o.customer_id

      minus

      select o.id,o.order_number,o.customer_id,c.id,c.name

      from orders o inner join customers c on c.id=o.customer_id;

      查詢結果如下:

      五、自然連接(natural inner join):

      說真的,這種連接查詢沒有存在的價值,既然是sql2標準中定義的,就給出個例子看看吧。自然連接無需指定連接列,sql會檢查兩個表中是否相同名稱的列,且假設他們在連接條件中使用,并且在連接條件中僅包含一個連接列。不允許使用on語句,不允許指定顯示列,顯示列只能用*表示(oracle環境下測 試的)。對于每種連接類型(除了交叉連接外),均可指定natural.下面給出幾個例子。

      語句14:

      select *

      from orders o natural inner join customers c;

      語句15:

      select *

      from orders o natural left outer join customers c;

      語句16:

      select *

      from orders o natural right outer join customers c;

      語句17:

      select *

      from orders o natural full outer join customers c;

      六、sql查詢的基本原理:兩種情況介紹。

      第一、?? 單表查詢:根據where條件過濾表中的記錄,形成中間表(這個中間表對用戶是不可見的);然后根據select的選擇列選擇相應的列進行返回最終結果。

      第二、?? 兩表連接查詢:對兩表求積(笛卡爾積)并用on條件和連接類型進行過濾形成中間表;然后根據where條件過濾中間表的記錄,并根據select指定的列返回查詢結果。

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    SQL連接查詢語法及使用

    SQL連接查詢語法及使用:一、交叉連接(cross join) 交叉連接(cross join):有兩種,顯式的和隱式的,不帶on子句,返回的是兩表的乘積,也叫笛卡爾積。 例如:下面的語句1和語句2的結果是相同的。 語句1:隱式的交叉連接,沒有cross join. select o.id, o.order_
    推薦度:
    標簽: 查詢 連接 使用
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 精品9E精品视频在线观看| 亚洲综合精品香蕉久久网| 国产精品偷伦视频免费观看了| 亚洲精品黄色视频在线观看免费资源| 狠狠色丁香婷婷综合精品视频| 无码日韩精品一区二区人妻| 欧美激情精品久久久久| 久久久精品国产sm调教网站| 亚洲А∨精品天堂在线| 国产精品一香蕉国产线看观看 | 无码国产精品一区二区免费模式| 99久久国产主播综合精品| 成人精品在线视频| 久久久久99精品成人片欧美 | 精品97国产免费人成视频 | 亚洲精品无码久久久| 精品午夜国产人人福利| 国产呦小j女精品视频| 无码精品国产一区二区三区免费 | 精品无码AV一区二区三区不卡| 日本精品少妇一区二区三区| 99re66在线观看精品免费| 成人区精品一区二区不卡| 久久精品国产亚洲AV无码偷窥| 亚洲精品国精品久久99热一| 亚洲国产精品成人久久蜜臀 | 国内精品久久久久影院日本| 亚洲精品中文字幕乱码三区| 欧美精品一区二区三区免费观看| 国产麻豆精品入口在线观看| AAA级久久久精品无码区| 欧美精品华人在线| 国产精品久久毛片完整版| 国产精品国产三级国产AV主播 | 亚洲精品乱码久久久久久按摩| 日韩午夜高清福利片在线观看欧美亚洲精品suv| 在线精品亚洲一区二区| 日本精品久久久久影院日本| 亚洲国产精品日韩| 亚洲精品一级无码鲁丝片| 亚洲欧美日韩精品久久亚洲区 |