Mysql常用sql語句(14)- 多表查詢


測試必備的Mysql常用sql語句系列

https://www.cnblogs.com/poloyy/category/1683347.html

 

前言

  • 實際工作中,每次查詢基本都是需要結合多個表去查詢數據,所以Mysql的多表查詢我們必須掌握
  • 多表查詢可以是兩張表,也可以是很多張表,取決於需要查詢的數據要關聯多少張表

 

有哪些多表查詢

  • cross join:交叉連接
  • inner join:內連接
  • left join:左外連接
  • right join:右外連接
  • union、union all:全連接

 

多表查詢的區別

查詢類型 簡述 圖表
inner join

獲取兩個表中字段相互匹配關系的記錄

即兩表記錄都不為null才會返回

left join

獲取左表所有記錄

右表為空的字段補null

right join

獲取右表所有記錄

左表為空的字段補null

union 獲取左右表所有記錄
cross join 兩張表的笛卡爾積  

 

執行SQL

后面詳細講每種多表查詢的時候,會用到這些數據表和數據;先跑一跑創建下哦!

DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp`  (
  `id` int(11) NOT NULL COMMENT '員工編號',
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '員工姓名',
  `dept_id` int(11) NULL DEFAULT NULL COMMENT '部門編號',
  `leader` int(11) NULL DEFAULT NULL COMMENT '直屬領導id',
  `is_enable` int(11) NULL DEFAULT NULL COMMENT '是否在職 1在職 0離職',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;


INSERT INTO `emp` VALUES (1, '張三豐', 1, 0, 1);
INSERT INTO `emp` VALUES (2, '張無忌', 1, 1, 1);
INSERT INTO `emp` VALUES (3, '小龍女', 1, 1, 1);
INSERT INTO `emp` VALUES (4, '小白菜', 1, 3, 1);
INSERT INTO `emp` VALUES (5, '韋小寶', 2, 0, 1);
INSERT INTO `emp` VALUES (6, '令狐沖', 2, 0, 1);
INSERT INTO `emp` VALUES (7, '東方不敗', 0, 8, 1);
INSERT INTO `emp` VALUES (8, '任我行', 3, 0, 1);
INSERT INTO `emp` VALUES (9, '李尋歡', 0, 8, 1);


DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept`  (
  `id` int(11) NOT NULL COMMENT '部門id',
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '部門名稱',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

INSERT INTO `dept` VALUES (1, '銷售部');
INSERT INTO `dept` VALUES (2, '信息技術部');
INSERT INTO `dept` VALUES (3, '財務部');
INSERT INTO `dept` VALUES (4, '有關部門');

 


免責聲明!

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



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