数据库左连接、右连接、全联接、左外、右外、全外

内联



SELECT
*
FROM
temployee employees0
INNER JOIN tcustomer customer1 ON ( customer1.id = employees0.id );

左联



SELECT
*
FROM
temployee employees0
LEFT OUTER JOIN tcustomer customer1 ON ( customer1.id = employees0.id );

右联



SELECT
*
FROM
temployee employees0
RIGHT OUTER JOIN tcustomer customer1 ON ( customer1.id = employees0.id );

全联(MySql不支持)


SELECT * FROM t_employee te FULL JOIN t_customer tc ON (te.id = tc.id);

左外



SELECT
*
FROM
temployee employees0
LEFT OUTER JOIN tcustomer customer1 ON ( customer1.id = employees0.id )
WHERE
customer1_.id IS NULL;

右外



SELECT *
FROM
temployee employees0
RIGHT OUTER JOIN tcustomer customer1 ON ( customer1.id = employees0.id )
WHERE
employees0_.id IS NULL;

全外(MySql不支持)


SELECT *
FROM
t_employee te
FULL JOIN t_customer tc ON ( te.id = tc.id )
WHERE
te.id IS NULL
OR tc.id IS NULL;

数据库

Employee

Customer

-- ----------------------------
-- Table structure for t_employee
-- ----------------------------
DROP TABLE IF EXISTS `t_employee`;
CREATE TABLE `t_employee` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `employee_name` varchar(255) DEFAULT NULL,
  `employee_part` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of t_employee
-- ----------------------------
INSERT INTO `t_employee` VALUES (1, ‘老潘‘, ‘总裁部‘);
INSERT INTO `t_employee` VALUES (2, ‘老王‘, ‘秘书部‘);
INSERT INTO `t_employee` VALUES (3, ‘老张‘, ‘设计部‘);
INSERT INTO `t_employee` VALUES (4, ‘老李‘, ‘运营部‘);

-- ----------------------------
-- Table structure for t_customer
-- ----------------------------
DROP TABLE IF EXISTS `t_customer`;
CREATE TABLE `t_customer` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `customer_name` varchar(255) DEFAULT NULL,
  `customer_part` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of t_customer
-- ----------------------------
INSERT INTO `t_customer` VALUES (2, ‘老王‘, ‘秘书部‘);
INSERT INTO `t_customer` VALUES (3, ‘老张‘, ‘设计部‘);
INSERT INTO `t_customer` VALUES (4, ‘老刘‘, ‘人事部‘);
INSERT INTO `t_customer` VALUES (5, ‘老黄‘, ‘生产部‘);

原文地址:https://blog.51cto.com/12012821/2408733

时间: 2024-10-24 00:53:35

数据库左连接、右连接、全联接、左外、右外、全外的相关文章

左连接,右连接,内连接,外连接, join, left join, right join ,mysql ,oracle

2016-6-12 22:35:51 工作用了一年多的oracle,最近在学mysql, 仔细想想 各种连接,感觉这些概念还是蛮烦人的! 最近整理了一下,分享一下自己的理解,有些东西是借鉴网上并自己吸收了的. 1.不管是什么连接,oracle和mysql的原理是一模一样的,只是有些写法不一样而已.说到写法,这里提一下, select * from A, B where a.filed1=b.filed2; --这是第1种写法, 内连接,这样写,很方便, oracle和mysql通用 select

SQL Server 2008 R2——内连接 左连接 右连接 全连接 交叉连接

SELECT * FROM Table_A GO SELECT * FROM Table_B GO --内连接 SELECT a.*, b.* FROM Table_A a JOIN Table_B b ON a.ID = b.ID SELECT a.*, b.* FROM Table_A a INNER JOIN Table_B b ON a.ID = b.ID GO --内连接等价直接多表from的形式 SELECT a.*, b.* FROM Table_A a INNER JOIN Ta

【数据库】浅显易懂地理解左、右连接

之前一直对数据库里面的外连接有些疑惑,理解的不是很透彻,今天总算自己建了个表,详细地对照了几种写法,总算彻底搞清楚了. 基本概念 左连接.右连接就是数据库里面的关键字  left join 和 right join, 当然在oracle里面也可以在某个字段的后面加上(+)来表示外连接 左连接保留出现在left join左边的关系中的元组,也就是允许右边关系中为空:通俗一点:Left join 会从左表中返回所有的行,即便在右表中没有找到匹配的项. 同理右连接保留出现在right join右边的关

sql 内连接 外连接 左连接 右连接

1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行.       2.外联接.外联接可以是左向外联接.右向外联接或完整外部联接.     在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:     1)LEFT  JOIN或LEFT OUTER JOIN     左向外联接的结果集包括  LEF

mysql 内连接 左连接 右连接 外连接

mysql> desc student;+-------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| ID | int(11) | NO | PRI | 0 | || NAME | varchar(16) | YES | | NULL | || A

Mysql之左连接右连接内连接——示例 (转)

下面是两张表 表stu 表tech 1.右连接 当使用右连接语句查询时,返回结果如下: 1 SELECT stu.id,stu.name,stu.classe_name,tech.id,tech.name FROM stu RIGHT JOIN tech on stu.classe_name=tech.classe_name; 从结果中可以看出,tech表中被查询的字段会被全部显示出来,而stu表中,只有与表tech的classe_name相同的条目的相应字段才会被显示出来. 右连接即:返回右边

mysql 左连接 右连接 内链接

一般所说的左连接,右连接是指左外连接,右外连接.做个简单的测试你看吧.先说左外连接和右外连接:[[email protected]#16-12月-11] SQL>select * from t1; ID NAME---------- --------------------1 aaa2 bbb [[email protected]#16-12月-11] SQL>select * from t2; ID AGE---------- ----------1 203 30左外连接:[[email p

SQL:左连接,右连接

SELECT ename , dname FROM Emp, Dept WHERE Emp.Deptno(+) = Dept.Deptno 也可以写成: SELECT ename , dname FROM Emp RIGHT JOIN Dept ON Emp.Deptno = Dept.Deptno 此SQL文使用了右连接,即"(+)"所在位置的另一侧为连接的方向,右连接说明等号右侧的所有记录均会被显示,无论其在左侧是否得到匹配,也就是说上例中无论会不会出现某个部门没有一个员工的情况,

mysql左连接右连接(查询两张表不同的数据)

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 :right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录:inner join(等值连接) 只返回两个表中联结字段相等的行: 表A数据: 表B数据: 1.查询两张表中都有的记录: sql: SELECT a.* FROM a INNER JOIN b ON a.a_id = b.b_id; 2.查询表A中有,表B中没有的数据: sql: SELECT a.* FROM a LEFT JO

内连接,外链接(左连接、右连接、全连接),交叉连接大总结+附SQL JOINS图解[转]

1.什么是连接查询呢? 概念:根据两个表或多个表的列之间的关系,从这些表中查询数据. 目的:实现多个表查询操作. 2.分类: 首先划分一下,连接分为三种:内连接.外连接.交叉连接 内连接(INNER JOIN): 分为三种:等值连接.自然连接.不等连接 外连接(OUTER JOIN): 分为三种:      左外连接(LEFT OUTER JOIN或LEFT JOIN)      右外连接(RIGHT OUTER JOIN或RIGHT JOIN)      全外连接(FULL OUTER JOI