天天看點

Sql 語句中幾類查詢的總結以下是本人的總結,希望能為您提供一定的幫助!謝謝大家,批評指正!

以下是本人的總結,希望能為您提供一定的幫助!謝謝大家,批評指正!

inner join:是優化的where  多表查詢,是系預設的。把兩個表連接配接在一起,傳回兩個表中相比對的記錄,是其交集,傳回的是笛卡爾積結果。

outer join:查詢兩表時,如果第二個表沒有滿足連接配接的條件的記錄,則在第二個表的對應字段填入空值,  即保證生成的記錄中一定有滿足條件的第一個表的記錄。

舉個例子:

    假設a表和b表的資料是這樣的。  

  a                         b    

  id     name       id       stock   

  1       a          1         15  

  2         b          2         50  

  3         c                  

  select   *   from   a   inner   join   b   on   a.id=b.id  

  這個文法是連接配接查詢中的内連接配接,它産生的結果是  

  兩個表相比對的記錄出現在結果清單中

  根據上面的表,出現的結果是這樣的  

  a.id     name     b.id     stock  

  1       a             1         15  

  2             b             2         50  

  ----------------------------  

  select   *   from   a,b   where   a.id=b.id  

  這個文法是内連接配接的另外一種寫法,其執行結果與inner   join一樣.。

-----------------------------------------------------------------------------------------------------------------------------------------------------

left join && right join: left   join就是指的左連接配接,其他的以此類推。 舉例來說,左連接配接就是指包含第一個表與第二個表之間關于關鍵字段相同的紀錄。  簡單的來說就是以左面的表為基準,去選擇右面表中與之相關的紀錄!!!

例如:

A   left   join   B   的連接配接的記錄數與A表的記錄數同  

  A   right   join   B   的連接配接的記錄數與B表的記錄數同    

  A   left   join   B   等價B   right   join   A  

  table   A:  

  Field_K,   Field_A  

  1                     a  

  3                     b  

  4                     c  

  table   B:  

  Field_K,   Field_B  

  1                     x  

  2                     y  

  4                     z  

  select   a.Field_K,   a.Field_A,   b.Field_K,   b.Field_B  

  from   a   left   join   b   on   a.Field_K=b.Field_K  

  Field_K         Field_A         Field_K         Field_B          

  ----------   ----------   ----------   ----------    

  1                     a                     1                     x                  

  3                     b                     NULL             NULL  

  4                     c                     4                     z                  

  select   a.Field_K,   a.Field_A,   b.Field_K,   b.Field_B  

  from   a   right   join   b   on   a.Field_K=b.Field_K  

  Field_K         Field_A         Field_K         Field_B          

  ----------   ----------   ----------   ----------    

  1                     a                     1                     x                  

  NULL               NULL               2                     y                  

  4                     c                     4                     z     

----------------------------------------------------------------------------------------------------------        

   Left   outer   join    &&   right   outer   join:

  Left   outer   join,左側表所有的記錄都傳回,右側比對的記錄傳回,沒有比對的傳回Null

  right   outer   join相反,右側的記錄傳回,左側傳回比對的記錄,沒有比對傳回Null 

  Full   outer   join   :兩表的 并集  

  Cross   join : 兩個表的笛卡兒積,傳回所有可能的值,不允許有連接配接條件!