中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

筆者的MySql學習之旅

發布時間:2020-04-23 14:37:27 來源:億速云 閱讀:221 作者:三月 欄目:MySQL數據庫

下文內容主要給大家帶來筆者的MySql學習之旅,這里所講到的知識,與書籍略有不同,都是億速云專業技術人員在與用戶接觸過程中,總結出來的,具有一定的經驗分享價值,希望給廣大讀者帶來幫助。

前提:創建兩個關系表:

 CREATE TABLE t_blog(
        id INT PRIMARY KEY AUTO_INCREMENT,
        title VARCHAR(50),
        typeId INT
);
CREATE TABLE t_type(
        id INT PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(20)
);

表數據如下:

筆者的MySql學習之旅

筆者的MySql學習之旅


1、獲取A、B公有部分

筆者的MySql學習之旅

MySql提供一種內連接的方式來獲取A、B兩表中均符合on表達式的數據:

mysql> select * from t_blog b inner join t_type t on b.typeId = t.id;
+----+-------------------+--------+----+-------+
| id | title             | typeId | id | name  |
+----+-------------------+--------+----+-------+
|  1 | java基礎類型      |      1 |  1 | JAVA  |
|  2 | java編程思想      |      1 |  1 | JAVA  |
|  3 | java從入門到放棄  |      1 |  1 | JAVA  |
|  4 | C語言精講         |      2 |  2 | C     |
|  5 | C語言從入門到放棄 |      2 |  2 | C     |
|  6 | mysql基礎         |      4 |  4 | MYSQL |
+----+-------------------+--------+----+-------+
6 rows in set

通過內連接,blog中的"圖解http"數據和type表中的"C++"數據都被過濾

2、A的獨有及AB共有

筆者的MySql學習之旅

使用左外連獲取A所有的數據,篩選出B表中符合on表達式的數據,不符合的數據B表相應字段補NULL

mysql> select * from t_blog b left join t_type t on b.typeId = t.id;
+----+-------------------+--------+------+-------+
| id | title             | typeId | id   | name  |
+----+-------------------+--------+------+-------+
|  1 | java基礎類型      |      1 |    1 | JAVA  |
|  2 | java編程思想      |      1 |    1 | JAVA  |
|  3 | java從入門到放棄  |      1 |    1 | JAVA  |
|  4 | C語言精講         |      2 |    2 | C     |
|  5 | C語言從入門到放棄 |      2 |    2 | C     |
|  6 | mysql基礎         |      4 |    4 | MYSQL |
|  7 | 圖解http          | NULL   | NULL | NULL  |
+----+-------------------+--------+------+-------+
7 rows in set

通過左外連,左表中所有的數據都被查詢出來,右表獨有的"C++"數據被過濾,左表獨有的"圖解http"數據的右表位置補了NULL。

3、B獨有及AB共有

同上,使用右外連,過濾掉A表中不符合on條件的數據,查詢出所有B表中的數據,A表不滿足的字段會補NULL;

mysql> select * from t_blog b right join t_type t on b.typeId = t.id;
+------+-------------------+--------+----+-------+
| id   | title             | typeId | id | name  |
+------+-------------------+--------+----+-------+
|    1 | java基礎類型      |      1 |  1 | JAVA  |
|    2 | java編程思想      |      1 |  1 | JAVA  |
|    3 | java從入門到放棄  |      1 |  1 | JAVA  |
|    4 | C語言精講         |      2 |  2 | C     |
|    5 | C語言從入門到放棄 |      2 |  2 | C     |
| NULL | NULL              | NULL   |  3 | C++   |
|    6 | mysql基礎         |      4 |  4 | MYSQL |
+------+-------------------+--------+----+-------+
7 rows in set

通過右外連,右表中的數據全部被查出,獨有的"C++"數據左表位置補了NULL,過濾掉左表的"圖解http"數據

4、A獨有

筆者的MySql學習之旅

已知通過左外連,會得到A的獨有及AB共有,在A的獨有部分,B表位置會補NULL,也就是說,左外連結果中B為NULL的數據就是A的獨有

mysql> select * from t_blog b left join t_type t on b.typeId = t.id where t.name is null;
+----+----------+--------+------+------+
| id | title    | typeId | id   | name |
+----+----------+--------+------+------+
|  7 | 圖解http | NULL   | NULL | NULL |
+----+----------+--------+------+------+
1 row in set

5、B獨有

同上,右外連會獲取B 的獨有及AB共有,在B獨有部分,A表位置會補NULL,也就是說左外連結果中A表為NULL的數據就是B的獨有

mysql> select * from t_blog b right join t_type t on b.typeId = t.id where b.title is null;
+------+-------+--------+----+------+
| id   | title | typeId | id | name |
+------+-------+--------+----+------+
| NULL | NULL  | NULL   |  3 | C++  |
+------+-------+--------+----+------+
1 row in set

6、求并集

筆者的MySql學習之旅

MySql中提供"union"命令求并集,并且自動去重。如果對面表沒有匹配,則補NULL

mysql> select * from t_blog b left join t_type t on b.typeId = t.id
    -> union
    -> select * from t_blog b right join t_type t on b.typeId = t.id;
+------+-------------------+--------+------+-------+
| id   | title             | typeId | id   | name  |
+------+-------------------+--------+------+-------+
|    1 | java基礎類型      |      1 |    1 | JAVA  |
|    2 | java編程思想      |      1 |    1 | JAVA  |
|    3 | java從入門到放棄  |      1 |    1 | JAVA  |
|    4 | C語言精講         |      2 |    2 | C     |
|    5 | C語言從入門到放棄 |      2 |    2 | C     |
|    6 | mysql基礎         |      4 |    4 | MYSQL |
|    7 | 圖解http          | NULL   | NULL | NULL  |
| NULL | NULL              | NULL   |    3 | C++   |
+------+-------------------+--------+------+-------+
8 rows in set

7、求差集

筆者的MySql學習之旅

所謂差集就是A的獨有和B 的獨有的并集

mysql> select * from t_blog b left join t_type t on b.typeId = t.id where t.name is null
    -> union
    -> select * from t_blog b right join t_type t on b.typeId = t.id where b.title is null;
+------+----------+--------+------+------+
| id   | title    | typeId | id   | name |
+------+----------+--------+------+------+
|    7 | 圖解http | NULL   | NULL | NULL |
| NULL | NULL     | NULL   |    3 | C++  |
+------+----------+--------+------+------+
2 rows in set

對于以上關于筆者的MySql學習之旅,如果大家還有更多需要了解的可以持續關注我們億速云的行業推新,如需獲取專業解答,可在官網聯系售前售后的,希望該文章可給大家帶來一定的知識更新。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石渠县| 巴林右旗| 军事| 吉安县| 凤翔县| 漯河市| 浠水县| 水城县| 太和县| 嘉兴市| 精河县| 波密县| 上犹县| 白玉县| 阿荣旗| 迁安市| 漠河县| 太白县| 福海县| 岳池县| 阿图什市| 双牌县| 尖扎县| 富平县| 赞皇县| 景谷| 土默特左旗| 息烽县| 襄垣县| 石嘴山市| 揭阳市| 汉沽区| 陇川县| 出国| 古交市| 徐汇区| 托克逊县| 昭平县| 沁水县| 桦南县| 陇西县|