MySQL 的七種 join


建表

在這里呢我們先來建立兩張有外鍵關聯的張表。

CREATE DATABASE db0206; USE db0206; CREATE TABLE `db0206`.`tbl_dept`( `id` INT(11) NOT NULL AUTO_INCREMENT, `deptName` VARCHAR(30), `locAdd` VARCHAR(40), PRIMARY KEY (`id`) ) ENGINE=INNODB CHARSET=utf8; CREATE TABLE `db0206`.`tbl_emp`( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(20), `deptId` INT(11), PRIMARY KEY (`id`), FOREIGN KEY (`deptId`) REFERENCES `db0206`.`tb_dept`(`id`) ) ENGINE=INNODB CHARSET=utf8; /*插入數據*/ INSERT INTO tbl_dept(deptName,locAdd) VALUES('RD',11); INSERT INTO tbl_dept(deptName,locAdd) VALUES('HR',12); INSERT INTO tbl_dept(deptName,locAdd) VALUES('MK',13); INSERT INTO tbl_dept(deptName,locAdd) VALUES('MIS',14); INSERT INTO tbl_dept(deptName,locAdd) VALUES('FD',15); INSERT INTO tbl_emp(NAME,deptId) VALUES('z3',1); INSERT INTO tbl_emp(NAME,deptId) VALUES('z4',1); INSERT INTO tbl_emp(NAME,deptId) VALUES('z5',1); INSERT INTO tbl_emp(NAME,deptId) VALUES('w5',2); INSERT INTO tbl_emp(NAME,deptId) VALUES('w6',2); INSERT INTO tbl_emp(NAME,deptId) VALUES('s7',3); INSERT INTO tbl_emp(NAME,deptId) VALUES('s8',4); 

文氏圖與SQL語句的編寫以及查詢結果

內連接

內連接文氏圖

表的內連接

執行的sql語句以及執行的查詢結果

  • 執行的sql語句
select * from tbl_dept a inner join tbl_emp b on a.id=b.deptId;
  • 查詢結果 
    這里寫圖片描述

左外連接

左外連接文氏圖

左連接

執行的sql語句以及執行的查詢結果

  • 執行的sql語句
select * from tbl_dept a left join tbl_emp b on a.id=b.deptId;
  • 查詢結果 
    左外連接

右外連接

右外連接文氏圖

這里寫圖片描述

執行的sql語句以及執行的查詢結果

  • 執行的sql語句
select * from tbl_dept a right join tbl_emp b on a.id=b.deptId;
  • 查詢結果 
    這里寫圖片描述

左連接

左連接文氏圖

這里寫圖片描述

執行的sql語句以及執行的查詢結果

  • 執行的sql語句
elect * from tbl_dept a left join tbl_emp b on a.id=b.deptId where b.deptId is null;
  • 查詢結果

這里寫圖片描述

右連接

右連接文氏圖

右連接

執行的sql語句以及執行的查詢結果

  • 執行的sql語句
select * from tbl_dept a right join tbl_emp b on a.id=b.deptId where a.id is null;
  • 查詢結果

右連接

全連接

全連接文氏圖

這里寫圖片描述

執行的sql語句以及執行的查詢結果

  • 執行的sql語句
select * from tbl_dept a right join tbl_emp b on a.id=b.deptId union select * from tbl_dept a left join tbl_emp b on a.id=b.deptId;
  • 查詢結果 
    全連接

兩張表中都沒有出現的數據集

文氏圖

執行的sql語句以及執行的查詢結果

  • 執行的sql語句
select * from tbl_dept a right join tbl_emp b on a.id=b.deptId where a.id is null union select * from tbl_dept a left join tbl_emp b on a.id=b.deptId where b.deptId is null;
  • 查詢結果

這里寫圖片描述


免責聲明!

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



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