Sql Server 三種串連

來源:互聯網
上載者:User
 如表  
  -------------------------------------------------  
  table1 | table2 |  
  -------------------------------------------------  
  id name |id score |  
  1 lee |1 90 |  
  2 zhang |2 100 |  
  4 wang |3 70 |  
  -------------------------------------------------  
   
  以下均在查詢分析器中執行  
   
  一、外串連  
  1.概念:包括左向外聯結、右向外聯結或完整外部聯結  
   
  2.左串連:left   join   或   left   outer   join  
  (1)左向外聯結的結果集包括   left   outer   子句中指定的左表的所有行,而不僅僅是聯結列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯的結果集行中右表的所有挑選清單列均為空白值(null)。  
  (2)sql語句  
  select   *   from   table1   left   join   table2   on   table1.id=table2.id  
  -------------結果-------------  
  id name id score  
  ------------------------------  
  1 lee 1 90  
  2 zhang 2 100  
  4 wang null null  
  ------------------------------  
  注釋:包含table1的所有子句,根據指定條件返回table2相應的欄位,不符合的以null顯示  
   
  3.右串連:right   join   或   right   outer   join  
  (1)右向外聯結是左向外聯結的反向聯結。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值。  
  (2)sql語句  
  select   *   from   table1   right   join   table2   on   table1.id=table2.id  
  -------------結果-------------  
  id name id score  
  ------------------------------  
  1 lee 1 90  
  2 zhang 2 100  
  null null 3 70  
  ------------------------------  
  注釋:包含table2的所有子句,根據指定條件返回table1相應的欄位,不符合的以null顯示  
   
  4.完整外部聯結:full   join   或   full   outer   join    
  (1)完整外部聯結返回左表和右表中的所有行。當某行在另一個表中沒有匹配行時,則另一個表的挑選清單列包含空值。如果表之間有匹配行,則整個結果集行包含基表的資料值。  
  (2)sql語句  
  select   *   from   table1   full   join   table2   on   table1.id=table2.id  
  -------------結果-------------  
  id name id score  
  ------------------------------  
  1 lee 1 90  
  2 zhang 2 100  
  4 wang null null  
  null null 3 70  
  ------------------------------  
  注釋:返回左右串連的union(見上左、右串連)  
   
  二、內串連  
  1.概念:內聯結是用比較子比較要聯結列的值的聯結  
   
  2.內串連:join   或   inner   join    
   
  3.sql語句  
  select   *   from   table1   join   table2   on   table1.id=table2.id  
  -------------結果-------------  
  id name id score  
  ------------------------------  
  1 lee 1 90  
  2 zhang 2 100  
  ------------------------------  
  注釋:只返回合格table1和table2的列  
   
  4.等價(與下列執行效果相同)  
  a:select   a.*,b.*   from   table1   a,table2   b   where   a.id=b.id  
  b:select   *   from   table1   cross   join   table2   where   table1.id=table2.id     (註:cross   join後加條件只能用where,不能用on)  
   
  三、交叉串連(完全)  
   
  1.概念:沒有   where   子句的交叉聯結將產生聯結所涉及的表的笛卡爾積。第一個表的行數乘以第二個表的行數等於笛卡爾積結果集的大小。(table1和table2交叉串連產生3*3=9條記錄)  
   
  2.交叉串連:cross   join   (不帶條件where...)  
   
  3.sql語句  
  select   *   from   table1   cross   join   table2  
  -------------結果-------------  
  id name id score  
  ------------------------------  
  1 lee 1 90  
  2 zhang 1 90  
  4 wang 1 90  
  1 lee 2 100  
  2 zhang 2 100  
  4 wang 2 100  
  1 lee 3 70  
  2 zhang 3 70  
  4 wang 3 70  
  ------------------------------  
  注釋:返回3*3=9條記錄,即笛卡爾積  
   
  4.等價(與下列執行效果相同)  
  a:select   *   from   table1,table2   轉自:http://323229113.blog.163.com/blog/static/2185362820070172553209/ 附:常用的彙總函式select Count(*) from table2           查詢記錄數 3select Sum(Score) from table2       查詢累加值 260

select Min(Score) from table2         查詢最小值  70

select Max(Score)from table2      查詢最大值 100

select AVG(Score) from table2    查詢平均值 86
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.