mysql---左连接、右连接、内连接之间的区别与联系

现有两张表

第一张表为男生表,记录了男生的姓名和配偶的编号

第二张表为女生表,记录了女生的姓名和自己的编号

第一种情况:主持人请所有男生都上台,并且带上自己的配偶。这时不管男生有没有配偶都要上台,所以是以男生表为基准关联女生表

可以考虑用左连接

屌丝比较悲剧,在女生表中没有他的配偶,所以gname和gname.other都为NULL。高富帅肯定美女环抱,所以有多行记录。

第二种情况:主持人请所有女生都上台,并且带上自己的配偶。这时不管女生有没有配偶都要上台,所以是以女生表为基准关联男生表

可以考虑用左连接

小美也比较悲剧,在男生表中没有对应的配偶,所以bname和bname.other都为NULL。至于小娇、小芝、小琳跟高富帅和小王的关系就比较乱了,也有多行。

第三种情况:主持人请所有有配偶的男女生上台,这是就可以用内连接了

可见boy left join girl on boy.other = girl.other含义是:在girl表中找到满足条件boy.other = girl.other的行与boy表中对应的行组合,boy表中没有在girl表中匹配的行补NULL。

左右连接及内连接的关系:

左右连接可以相互转换。A left join B on 条件 等价于 B left join A on 条件

内连接 A inner join B on 条件 是   A left join B on 条件 和 B right join A on 条件的交集。

mysql---左连接、右连接、内连接之间的区别与联系

时间: 2024-08-04 20:17:39

mysql---左连接、右连接、内连接之间的区别与联系的相关文章

解析:内联,左外联,右外联,全连接,交叉连接的区别

连接分为:内连接.外连接.交叉连接 一.内连接--最常用 定义:仅将两个表中满足连接条件的行组合起来作为结果集. 在内连接中,只有在两个表中匹配的行才能在结果集中出现 关键词:INNER JOIN 格式:SELECT 列名表 FROM 表名1 [INNER] JOIN 表名2 ON或WHERE 条件表达式 说明: (1)列名表中的列名可以出自后面的两个表,但如果两个表中有同名列,应在列名前标明出处,格式为:表名.列名 (2)若连接的两个表名字太长,可以为它们起个别名. 格式为:表名 AS 别名 

Mysql中的关联查询(内连接,外连接,自连接)

Mysql中的关联查询(内连接,外连接,自连接) 在使用数据库查询语句时,单表的查询有时候不能满足项目的业务需求,在项目开发过程中,有很多需求都是要涉及到多表的连接查询,总结一下mysql中的多表关联查询 一,内连接查询 是指所有查询出的结果都是能够在连接的表中有对应记录的. 以t_employee(员工表)和t_dept(部门表)为例: t_employee表中的记录如下:dept代表该员工所在的部门 t_dept表中记录如下: 可以发现,其中人力资源部里没有员工(这里只是举例,可能与实际不符

4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)

 mysql数据库创建,表创建模等模板脚本 -- 用root用户登录系统,执行脚本 -- 创建数据库 create database mydb61 character set utf8 ; -- 选择数据库 use mydb61; -- 增加 dbuser1 用户 --     创建用户'dbuser61'密码为 'dbuser61'拥有操作数据库mydb61的所有权限 GRANT ALL ON mydb61.* TO dbuser61 IDENTIFIED BY "dbuser61&quo

oracle连接总结(内连接、外连接、自然连接,交叉连接,自连接)

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! oracle连接总结(内连接.外连接.自然连接,交叉连接,自连接) 1.简述  1) 两个表的连接,是通过将一个表中的一列或者多列同另一个表中的列链接而建立起来的.用来连接两张表的表达式组成了连接条件.当连接成功后,第二张表中的数据就同第一张表连接起来了,并形成了复合结果集 2) 有5种基本类型的的连接,inner,outer,natural,cross连接,自连接. 2.说明与例子 1)内连接 (inner join (可简写为j

Oracle表与表之间的连接方式(内连接:inner join 、外连接 全连接: full outer join、左连接:left outer join 、右连接:right outer join、自然连接:natural join)

1 --内连接:INNER JOIN 它表示返回两个表或记录集连接字段的匹配记录,表示两个表中相互包含的部分 2 select * from student inner join sc on student.sno=sc.sno; 3 --外连接(全连接):包含左.右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行.不符合条件的,以空值代替. 4 --全连接:表示两个表组合在一起,左右不相匹配时使用空值替换 5 select * from student full outer join

Hibernate迫切左外连接和迫切内连接

•迫切左外连接: •LEFT JOIN FETCH 关键字表示迫切左外连接检索策略. –list() 方法返回的集合中存放实体对象的引用, 每个 Department 对象关联的 Employee  集合都被初始化, 存放所有关联的 Employee 的实体对象. –查询结果中可能会包含重复元素, 可以通过一个 HashSet 来过滤重复元素 •左外连接: –LEFT JOIN 关键字表示左外连接查询. –list() 方法返回的集合中存放的是对象数组类型 –根据配置文件来决定 Employee

连接(交叉连接、内连接、外连接、自连接)

本文非原创 可分为:交叉连接.内连接.外连接.自连接 1.使用交叉连接: 它是非限制连接,就是将两个表格不加任何条件的组合在一起, 即第一个表格的所有记录分别和第二个表格的每一条记录相连接 组合成新的记录,连接后结果集的行数是两个表格的行数的乘积, 列为两表列之和. 语法: (1)select 列名列表 from 表名1 cross join 表名2 (2)select 列名列表 from 表名1 (起别名) , 表名2 注意:当显示某一些字段要用表名指定. 例:select a.book_na

SQL中的连接可以分为内连接,外连接,以及交叉连接 。

1. 交叉连接CROSS JOIN 如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积: 举例,下列A.B.C 执行结果相同,但是效率不一样: A:SELECT * FROM table1 CROSS JOIN table2 B:SELECT * FROM table1,table2 C:select * from table1 a inner join table2 b A:select a.*,b.* from table1 a,table2

SQL各种连接——自连接、内连接、外连接、交叉连接的使用

首先准备了两个表 (Student 和 Course),其中 Student 表中的 C_S_Id 字段为外键列,关联的是 Course 表的 C_Id 主键列. 内连接(inner join):满足on条件表达式,内连接是取满足条件表达式的两个表的交集(即两个表都有的数据). 1 select * from Student s 2 inner join Course c on s.C_S_Id=c.C_Id 外连接(outer join)分为:左外连接(left join / left out

浅谈表的连接方式(内连接,外连接,交叉连接,自连接)

前言 连接类型分为三类:内连接,外连接,交叉连接.内连接使用INNER JOIN关键字,INNER JOIN在两个表中匹配共同的值,只有满足联结条件的行才会被用来构建结果集,INNER JOIN是默认的JOIN类型,可以仅使用JOIN关键字替代. 外连接有三种类型:LEFT OUTER JOIN,RIGHT OUTER JOIN和FULL OUTER JOIN,和INNER JOIN不同的是,LEFT OUTER JOIN也返回对第一个表不匹配的行,RIGHT OUTER JOIN也返回对第二个