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;
  • 查询结果

原文地址:https://www.cnblogs.com/jianmingyuan/p/10909798.html

时间: 2024-10-22 06:40:04

MYSQL 的七种join的相关文章

Mysql 的七种 join sql 编写

首先创建两张表 CREATE TABLE `t_user` ( `id` bigint(16) NOT NULL AUTO_INCREMENT, `name` varchar(64) NOT NULL, `age` int(4) NOT NULL, `gender` tinyint(2) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 CREATE TABLE `cust

MySQL 的七种 Join

创建表 快速到底 学生表 create table student( id int(11) not null AUTO_INCREMENT, name varchar(30), address varchar(40), primary key (id) ) engine=innodb charset=utf8; INSERT INTO student(name,address) VALUES('田开智','安徽省天长市'); INSERT INTO student(name,address) V

【知识库】-数据库_MySQL 的七种 join

作者:haifeisi 文章出处: MySQL 的七种 join 创建数据库表'tbl_dept'和'tbl_emp' 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 C

Mysql七种 JOIN 连接

内连接 SELECT <select_list> FROM TableA A INNER JOIN TableB B ON A.Key = B.Key 左外连接 SELECT <select_list> FROM TableA A LEFT JOIN TableB B ON A.Key = B.Key SELECT <select_list> FROM TableA A LEFT JOIN TableB B ON A.Key = B.Key WHERE B.Key IS

七种join的sql编写

一.join图 二.sql演示 a.创建演示表及数据 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for `tbl_dept` -- ---------------------------- DROP TABLE IF EXISTS `tbl_dept`; CREATE TABLE `tbl_dept` ( `id` int(11) NOT NU

MySql中三种Join以及Where条件的疑惑

MySQL JOIN时条件放在Where之后和On之后结果是迥然不同的 在Left Join的时候on后的左表条件不生效 Right Join的时候on后的右表条件不生效 即左或右连接的时候on后的主表条件不生效 select * from a left join b on a.id=b.id and a.name=1 and b.age=2; 这里只有b.age=2能生效a.name=1不生效 在Inner Join的时候on后的条件不论主表从表都能生效. 在left或者right join的

只显示前几条数据的sql语句写法 七种数据库中Select Top的使用方法

七种数据库中Select Top的使用方法 1. Oracle数据库 SELECT * FROM TABLENAME WHERE ROWNUM <= N 2. Infomix数据库 SELECT FIRST N * FROM TABLENAME 3. DB2数据库 SELECT * FROM (SELECT * ROW_NUMBER() OVER({ORDER BY COL1 DESC}) AS ROWNUM FROM TABLENAME) WHERE ROWNUM <= N 或者 SELEC

数据事务四种隔离机制和七种传播行为

一.隔离级别: 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted.Read committed.Repeatable read.Serializable,这四个级别可以逐个解决脏读.不可重复读.幻读这几类问题. 1. ISOLATION_READ_UNCOMMITTED:这是事务最低的隔离级别,它充许令外一个事务可以看到这个事务未提交的数据.      这种隔离级别会产生脏读,不可重复读和幻像读.2. ISOLATION_READ_COMMITTED:保证一个事务修改的

MySQL的联结(Join)语法

MySQL的联结(Join)语法 1.内联结.外联结.左联结.右联结的含义及区别: ? 在讲MySQL的Join语法前还是先回顾一下联结的语法,呵呵,其实连我自己都忘得差不多了,那就大家一起温习吧(如果内容有错误或有疑问,可以来信咨询:陈朋奕chenpengyi#gmail.com),国内关于MySQL联结查询的资料十分少,相信大家在看了本文后会对MySQL联结语法有相当清晰的了解,也不会被Oracle的外联结的("+"号)弄得糊涂了. ? 在SQL标准中规划的(Join)联结大致分为