Mysql 集合鏈接查詢


MySQL NULL 值處理  
   需求:我們已經知道MySQL使用 SQL SELECT 命令及 WHERE 子句來讀取數據表中的數據,但是當提供的查詢條件字段為 NULL 時,該命令可能就無法正常工作。
 
為了處理這種情況,MySQL提供了三大運算符:
  • IS NULL: 當列的值是NULL,此運算符返回true。
  • IS NOT NULL: 當列的值不為NULL, 運算符返回true。
  • <=>: 比較操作符(不同於=運算符),當比較的的兩個值為NULL時返回true。
  • 關於 NULL 的條件比較運算是比較特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。
  • 在MySQL中,NULL值與任何其它值的比較(即使是NULL)永遠返回false,即 NULL = NULL 返回false。
  • MySQL中處理NULL使用IS NULL和IS NOT NULL運算符。

 

Mysql 連接(left join, right join, inner join ,full join)
  需求:我們已經學會了如果在一張表中讀取數據,這是相對簡單的,但是在真正的應用中經常需要從多個數據表中讀取數據。
  • 本章節我們將向大家介紹如何使用 MySQL 的 JOIN 在兩個或多個表中查詢數據。
  • 你可以在SELECT, UPDATE 和 DELETE 語句中使用 Mysql 的 JOIN 來聯合多表查詢。
JOIN 按照功能大致分為如下三類:
  • INNER JOIN(內連接,或等值連接):獲取兩個表中字段匹配關系的記錄。
  • LEFT JOIN(左連接):獲取左表所有記錄,即使右表沒有對應匹配的記錄。
  • RIGHT JOIN(右連接): 與 LEFT JOIN 相反,用於獲取右表所有記錄,即使左表沒有對應匹配的記錄。

 

 


 

Mysql操作
 
例子:
A    B
-    -
1    3
2    4
3    5
4    6

 

Inner join(取出交集)

使用等價查詢的內部連接將給出兩個表的交集,即它們共有的兩行。

mysql> select * from A inner join B on A.a = B.b;

mysql> select A.*,B.* from A,B where A.a=B.b;

注:select 字段 from 表1 inner join 表2 on 表1.字段 = 表2.字段;

注:select 表1.*,表2.* from A,B where A.a=B.b;
+---+---+
| a | b |
+---+---+
| 3 | 3 |
| 4 | 4 |
+---+---+
2 rows in set (0.00 sec)
測試

 

Left join(取出差集)
左連接將給出A中的所有行,加上B中的任何公共行。
mysql> select * from A left join B on A.a = B.b;
注:
select 字段 from 表1 left join 表2 on 表1.字段 = 表2.字段;
+---+------+
| a | b    |
+---+------+
| 3 |    3 |
| 4 |    4 |
| 1 | NULL |
| 2 | NULL |
+---+------+
4 rows in set (0.00 sec)
測試

 

Right join(反序排列差集)
一個右連接將給出B中的所有行,加上A中的任何公共行。
mysql> select * from A right join B on A.a = B.b;

注:select 字段 from 表1 right join 表2 on 表1.字段 = 表2.字段;
+------+---+
| a    | b |
+------+---+
|    3 | 3 |
|    4 | 4 |
| NULL | 5 |
| NULL | 6 |
| NULL | 7 |
+------+---+
5 rows in set (0.00 sec)
測試

 

left+right(求出並級)
select * from A left join B on A.a=B.b union select * from A right joinn B on A.a=B.b;

注:union 結合使用。

 

Full join(取出並集) (mysql不支持)
一個完整的外部連接將會給你一個A和B的結合,即A中的所有行和B中的所有行。
如果A中的某項在B中沒有相應的數據,那么B部分是空的,反之亦然。
select* froma FULLJOINb ona.a = b.b;

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM