国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql內連接和外連接有哪些區別

2024-07-24 12:33:46
字體:
來源:轉載
供稿:網友
  mysql內連接和外連接的區別:內連接會取出連接表中匹配到的數據,匹配不到的不保留;而外連接會取出連接表中匹配到的數據,匹配不到的也會保留,其值為NULL。
 
  本教程操作環境:windows7系統、mysql8版本、Dell G3電腦。
 
  區別
  內連接(inner join):取出連接表中匹配到的數據,匹配不到的不保留
  外連接(outer join):取出連接表中匹配到的數據,匹配不到的也會保留,其值為NULL
  示例表
 
  users表
 
  mysql> select * from users;
  +----+-------+
  | id | name  |
  +----+-------+
  |  1 | john  |
  |  2 | May   |
  |  3 | Lucy  |
  |  4 | Jack  |
  |  5 | James |
  +----+-------+
  5 rows in set (0.00 sec)
  topics表
 
  mysql> select * from topics;
  +----+---------------------------------------+---------+
  | id | title                                 | user_id |
  +----+---------------------------------------+---------+
  |  1 |  Hello world                          |       1 |
  |  2 | PHP is the best language in the world |       2 |
  |  3 | Laravel artist                        |       6 |
  +----+---------------------------------------+---------+
  3 rows in set (0.00 sec)
  內連接(inner join)
  示例
  mysql> select * from users as u inner join topics as t on u.id=t.user_id;
  +----+------+----+---------------------------------------+---------+
  | id | name | id | title                                 | user_id |
  +----+------+----+---------------------------------------+---------+
  |  1 | john |  1 |  Hello world                          |       1 |
  |  2 | May  |  2 | PHP is the best language in the world |       2 |
  +----+------+----+---------------------------------------+---------+
  2 rows in set (0.00 sec)
  inner可以省略,as是給表起別名,也可以省略
 
  mysql> select * from users u join topics t on u.id=t.user_id;
  +----+------+----+---------------------------------------+---------+
  | id | name | id | title                                 | user_id |
  +----+------+----+---------------------------------------+---------+
  |  1 | john |  1 |  Hello world                          |       1 |
  |  2 | May  |  2 | PHP is the best language in the world |       2 |
  +----+------+----+---------------------------------------+---------+
  2 rows in set (0.00 sec)
  以上兩句等價于
 
  mysql> select * from users,topics where users.id=topics.user_id;
  +----+------+----+---------------------------------------+---------+
  | id | name | id | title                                 | user_id |
  +----+------+----+---------------------------------------+---------+
  |  1 | john |  1 |  Hello world                          |       1 |
  |  2 | May  |  2 | PHP is the best language in the world |       2 |
  +----+------+----+---------------------------------------+---------+
  2 rows in set (0.00 sec)
  外連接(outer join)
  左外連接(left outer join):以左邊的表為主表
  右外連接(right outer join):以右邊的表為主表
  以某一個表為主表,進行關聯查詢,不管能不能關聯的上,主表的數據都會保留,關聯不上的以NULL顯示
 
  通俗解釋就是:先拿出主表的所有數據,然后到關聯的那張表去找有沒有符合關聯條件的數據,如果有,正常顯示,如果沒有,顯示為NULL
 
  示例
 
  mysql> select * from users as u left join topics as t on u.id=t.user_id;
  +----+-------+------+---------------------------------------+---------+
  | id | name  | id   | title                                 | user_id |
  +----+-------+------+---------------------------------------+---------+
  |  1 | john  |    1 |  Hello world                          |       1 |
  |  2 | May   |    2 | PHP is the best language in the world |       2 |
  |  3 | Lucy  | NULL | NULL                                  |    NULL |
  |  4 | Jack  | NULL | NULL                                  |    NULL |
  |  5 | James | NULL | NULL                                  |    NULL |
  +----+-------+------+---------------------------------------+---------+
  5 rows in set (0.00 sec)
  等價于以下,只是字段的位置不一樣
 
  mysql> select * from topics as t right join users as u on u.id=t.user_id;
  +------+---------------------------------------+---------+----+-------+
  | id   | title                                 | user_id | id | name  |
  +------+---------------------------------------+---------+----+-------+
  |    1 |  Hello world                          |       1 |  1 | john  |
  |    2 | PHP is the best language in the world |       2 |  2 | May   |
  | NULL | NULL                                  |    NULL |  3 | Lucy  |
  | NULL | NULL                                  |    NULL |  4 | Jack  |
  | NULL | NULL                                  |    NULL |  5 | James |
  +------+---------------------------------------+---------+----+-------+
  5 rows in set (0.00 sec)
  左外連接和右外連接是相對的,主要就是以哪個表為主表去進行關聯
 
  到此,關于“mysql內連接和外連接有哪些區別”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 麻城市| 南陵县| 曲阳县| 乳山市| 中江县| 徐州市| 比如县| 金华市| 奉节县| 永寿县| 合水县| 临猗县| 神池县| 永昌县| 当雄县| 翁牛特旗| 五原县| 汝南县| 阳曲县| 广州市| 鄂尔多斯市| 峨眉山市| 海阳市| 乌苏市| 天津市| 青阳县| 清河县| 望江县| 高安市| 陆川县| 二连浩特市| 盘山县| 禄丰县| 双城市| 蒙阴县| 左权县| 理塘县| 青海省| 塘沽区| 通河县| 望都县|