mysql基礎3

來源:互聯網
上載者:User

標籤:去重   技術   http   rom   exist   als   運算子   php   ima   

一、聯集查詢

在兩種情況下可能用到:1、想要的結果在一條語句中會引起邏輯衝突,只能放在兩條語句中是要使用聯集查詢

           2、一張表的資料量非常大時,會分隔成多張表格儲存體,要查詢時也要用到聯集查詢

使用時要注意:1,  聯集查詢中如果要使用order by,那麼就必須對這個select語句加上一對括弧!

                    2,  聯集查詢中的order by必須搭配上limit關鍵字才會生效!因為系統預設的聯集查詢的結果往往比較多,所以要加以限制,當然,如果想顯示全部的資料,可以在limit子句後面加上一個很大的數,比如:999999

關鍵字:union

文法形式

select語句1

union[union選項]

select 語句2

union[union選項]

select 語句3

union[union選項]

……

union 選項  all也是預設值,保留所有的查詢結果!

                  distinct去重(預設值),去掉重複的查詢結果!

二、交叉串連

關鍵字:cross join

文法:select  * | 欄位列表 from 1  cross join 2

含義:就是從一張表的一條記錄去串連另一張表中的所有記錄,並且儲存所有的記錄,其中包括兩個表的所有的欄位!從結果上看,就是對兩張表做笛卡爾積!

三、內串連文法: select *| 欄位列表 from 左表 inner join 右表 on 左表 . 欄位 = 右表 . 欄位 ;      其中inner可以省略

內串連的本質還是在做交叉串連,只不過是在交叉串連的基礎之上加上一定的串連條件!符合串連條件的才會被顯示,不符合的就不顯示!(這樣有可能遺失資料)!

所以,如果內串連的時候沒有串連條件,此時內串連就相當於是交叉串連!

四、外串連

外串連分為左外串連left  outer   join(左表為主表)和右外串連right  outer  join(右表為主表);

是拿主表的每一條記錄按照on後面的條件去匹配從表,如果匹配成功,那麼就保留兩張表的所有的記錄,如果匹配失敗(也就是主表的一條記錄無法匹配從表的所有的記錄),此時,只保留主表的記錄,從表的記錄全部用null代替,這樣主表資料不會丟失

五、自然串連

自然串連分為自然內串連natural  inner  join ,自然左/右串連natural left/right  join

自然串連的本質跟前面的內串連和外串連沒有太大區別,只是這裡的串連條件不是由使用者來指定,而是由系統來指定罷了

只要兩張表中具有相同的欄位名,系統就認為是一個串連條件,就會主動的去匹配這兩個相同的欄位名的值是否相同,如果兩個表的相同的欄位名的值相同,就認為匹配成功;如果兩張表中有多個欄位名相同,則所有相同的欄位名的值都要相同才算是匹配成功

六、子查詢1、標量子查詢

往往就是把標量子查詢的結果當成一個值來使用,比如用來判斷,參與運算等

例:

2、列子查詢

也就是返回單列的子查詢,也叫作列子查詢!

列子查詢的結果往往就是一系列相同屬性的資料的集合,所以,我們一般就是把列子查詢的結果當成一個集合來看待,也通常就是配合in和not in集合運算子來使用!

3、行子查詢

查詢結果為一行的子查詢就叫作行子查詢!

行子查詢使用的不是很多,必須在查詢的過程中構造一個行元素才能與子查詢的結果進行比較!

所謂的構造行元素,就是一個由多個欄位組成的元素,形式上就是將多個欄位用一個括弧括起來!

4、表子查詢

返回結果是多行多列的子查詢就叫作表子查詢!

表子查詢一般都是from型,也就是出現在from之後,一般當成一個資料來源來使用!

例:不使用統計函數,而使用表子查詢

1),  先對整個表根據score欄位進行排序(升序)

2),  對排序後的結果再根據home欄位進行group by,因為group by只取每一個分組的第一個記錄!

如果想查所有家鄉的所有的最低分(可能有重複情況):

select * from php_student natural join (select home,min(score) as score from php_student group by home) as m;

5、exists子查詢

exists主要是用來做判斷的,返回的結果是一個布爾值!

判斷依據:如果子查詢可以返回資料,那麼exists的結果就是true,否則就是false!

exists的主要作用就是判斷後面的select語句有沒有查詢到資料

 

 

mysql基礎3

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.