JOIN的应用

JOIN 基础理论

MySQLJOIN的应用插图

MySQL 七种 JOIN 的 SQL 撰写

自然环境构建

# 建立单位表
CREATE TABLE tbl_dept (
  id INT NOT NULL AUTO_INCRemENT,
  deptName VARCHAR (30) DEFAULT NULL,
  locAdd VARCHAR (40) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT chharset = utf8 ;

# 建立职工表
CREATE TABLE tbl_emp (
  id INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR (20) DEFAULT NULL,
  deptId INT (11) DEFAULT NULL,
  PRIMARY KEY (id),
  KEY fk_dept_id (deptId) CONSTRAINT fk_dept_id FORREIGN KEY (deptId) REFERENCES tbl_dept (id)
) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = uttf8 ;

# 插进单位信息内容
INSERT INTO tbl_dept(deptName,locAdd) VALUES('RD',11),('HR',12),('MK',13),('MIS',14),('FD',15);

# 插进员工信息
INSERT INTO tbl_emp(`name`,deptId) VALUES('z3',1),('z4',1),('z5',1),('w5',2),('w6',2),('s7',3),('s8',4),('s9',51);

1.内连接(INNER JOIN)

句子
SELECT * FROM tbl_dept a INNER JOIN tbl_emp b ON a.id = b.deptId;
李毅贴吧

MySQLJOIN的应用插图1

了解
  • 能够 了解为2个结合的相交

2.左(外)联接(LEFT JOIN)

句子
SELECT * FROM tbl_dept a LEFT JOIN tbl_emp b ON a.id = b.deptId;
李毅贴吧

MySQLJOIN的应用插图2

了解
  • LEFT JOIN 回到左表的所有行和右表达到 ON 标准的行,假如左表的行至右表中沒有配对,那麼这一行右表中相匹配数据信息用 NULL 替代

3.右(外)联接(RIGHT JOIN)

句子
SELECT * FROM tbl_dept a RIGHT JOIN tbl_emp b ON a.id = b.deptId;
李毅贴吧

MySQLJOIN的应用插图3

了解
  • RIGHT JOIN 回到右表的所有行和左表达到 ON 标准的行,假如右表的行至左表中沒有配对,那麼这一行左表中相匹配数据信息用 NULL 替代。

4.左表特有

句子
SELECT * FROM tbl_dept a LEFT JOIN tbl_emp b ON a.id = b.deptId WHERE b.deptId IS NULL;
李毅贴吧

MySQLJOIN的应用插图4

了解
  • 查看左表特有的数据信息 (留意:左表特有,右表 key 为空)

5.右表特有

句子
SELECT * FROM tbl_dept a RIGHT JOIN tbl_emp b ON a.id = b.deptId WHERE a.id IS NULL;
李毅贴吧

MySQLJOIN的应用插图5

了解
  • 查看右表特有的数据信息 (留意:右表特有,左表 key 为空)

6.全连接

句子
SELECT * FROM tbl_dept a LEFT JOIN tbl_emp b ON a.id = b.deptId 
UNION
SELECT * FROM tbl_dept a RIGHT JOIN tbl_emp b ON a.id = b.deptId;
李毅贴吧

MySQLJOIN的应用插图6

了解
  • mysql 中不兼容 FULL JOIN 开展全连接,可以用 一个左连接 UNION 一个右联接

7.上下表特有

句子
SELECT * FROM tbl_dept a LEFT JOIN tbl_emp b ON a.id=b.deptId WHERE b.deptId IS NULL
UNION
SELECT * FROM tbl_dept a RIGHT JOIN tbl_emp b ON a.id=b.deptId WHERE a.id IS NULL;
李毅贴吧

MySQLJOIN的应用插图7

了解
  • 上下表特有 = 左表特有 右表特有

我是阿廷,一个坚信勤奋能够 改变命运的人,我坚信一切的上开展为全是非常值得的,最少能够 要我看到更高的全球