一千行MySQL學習筆記(四)

來源:互聯網
上載者:User

標籤:

/* UNION */ ------------------

將多個select查詢的結果組合成一個結果集合。

 

SELECT ... UNION [ALL|DISTINCT] SELECT ...

預設 DISTINCT 方式,即所有返回的行都是唯一的

建議,對每個SELECT查詢加上小括弧包裹。

 

ORDER BY 排序時,需加上 LIMIT 進行結合。

需要各select查詢的欄位數量一樣。

每個select查詢的欄位列表(數量、類型)應一致,因為結果中的欄位名以第一條select語句為準。

 

/* 子查詢 */ -----------------

- - 子查詢需用括弧包裹。

-- from型
  from後要求是一個表,必須給子查詢結果取個別名。
 - 簡化每個查詢內的條件。
 - from型需將結果產生一個暫存資料表格,可用以原表的鎖定的釋放。

 - 子查詢返回一個表,表型子查詢。

 select * from (select * from tb where id>0) as subfrom where id>1;

 

-- where型

 - 子查詢返回一個值,標量子查詢。
 - 不需要給子查詢取別名。
 - where子查詢內的表,不能直接用以更新。
select * from tb where money = (select max(money) from tb);

 

-- 列子查詢
  如果子查詢結果返回的是一列。

  使用 in 或 not in 完成查詢
  exists 和 not exists 條件

    如果子查詢返回資料,則返回1或0。常用於判斷條件。
      select column1 from t1 where exists (select * from t2);

 

-- 行子查詢
查詢條件是一個行。
  select * from t1 where (id, gender) in (select id, gender from t2);

  行構造符:(col1, col2, ...) 或 ROW(col1, col2, ...)

  行構造符通常用於與對能返回兩個或兩個以上列的子查詢進行比較。

-- 特殊運算子

  != all() 相當於 not in
  = some() 相當於 in。any 是 some 的別名
  != some() 不等同於 not in,不等於其中某一個。
  all, some 可以配合其他運算子一起使用。

 

/* 串連查詢(join) */ -------------
  將多個表的欄位進行串連,可以指定串連條件。

-- 內串連(inner join)

  - 預設就是內串連,可省略inner。
  - 只有資料存在時才能發送串連。即串連結果不能出現空行。
  on 表示串連條件。其條件運算式與where類似。也可以省略條件(表示條件永遠為真) 也可用where表示串連條件。 還有 using, 但需欄位名相同。 using(欄位名)

-- 交叉串連 cross join
  即,沒有條件的內串連。
 select * from tb1 cross join tb2;



-- 外串連(outer join)

 - 如果資料不存在,也會出現在串連結果中。



-- 左外串連 left join
 如果資料不存在,左表記錄會出現,而右表為null填充



-- 右外串連 right join
 如果資料不存在,右表記錄會出現,而左表為null填充

-- 自然串連(natural join)
自動判斷串連條件完成串連。 相當於省略了using,會自動尋找相同欄位名。

  natural join

  natural left join

  natural right join

 

 

(未完待續)
      (Shocker 來源:http://www.cnblogs.com/shockerli/p/1000-plus-line-mysql-notes.html)

一千行MySQL學習筆記(四)

聯繫我們

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