MySql-连接查询(内连接、外连接)

本文详细介绍了连接查询的概念,包括内连接(等值、非等值及自连接)、外连接(左外、右外及全连接),并通过实例演示了SQL语法。重点讲解了如何使用SQL92和SQL99语法进行等值连接,以及不同类型的连接操作在实际场景中的应用。
摘要由CSDN通过智能技术生成

连接查询

1、介绍

  • 单表查询
    从一张表中单独查询,称为单表查询。
  • 连接查询
    emp表和dept表联合起来查询数据,从emp表中取员工名字,从dept表中取部门名字;这种跨表查询,多张表联合起来查询数据,被称为连接查询。

2、连接查询分类

  • 内连接
    • 等值连接
    • 非等值连接
    • 自连接
  • 外连接
    • 左外连接(左连接)
    • 右外连接(右连接)
    • 全连接(不讲)

3、内连接

3.1 等值连接

//案例:查询每个员工所在部门名称,显示员工名和部门名
//SQL92语法
select 
	e.ename,d.dname
from
	emp e, dept d
where
	e.deptno = d.deptno;

sql92的缺点:结构不清晰,表的连接条件,和后期进一步筛选的条件,都放到了where后面。

//SQL99语法
mysql> select
    -> e.ename,d.dname
    -> from
    -> emp e
    -> inner join            //inner可以省略
    -> dept d
    -> on
    -> e.deptno = d.deptno;  // 条件是等量关系,所以被称为等值连接。

//表连接的条件是独立的,连接之后,如果还需要进一步筛选,再往后继续添加where
	select 
		...
	from
		a
	join
		b
	on
		a和b的连接条件
	where
		筛选条件

3.2 非等值连接

//找出每个员工的薪资等级,要求显示员工名、薪资、薪资等级
select 
	e.ename, e.sal, s.grade
from
	emp e
join
	salgrade s
on
	e.sal between s.losal and s.hisal; // 条件不是一个等量关系,称为非等值连接。

3.3 自连接(NATURAL JOIN)

自然连接只有在连接的列在两张表中的名称都相同时才会有用,自然连接之后,两张表等值连接,A,B列自动合并成一列,自然连接不必指出任何条件。
在这里插入图片描述

SQL> select *  from R natural join  S;

4、外连接

4.1 左外连接(LEFT OUTER JOIN)

接收左表的所有行,并用这些行与右表进行匹配

/**LEFT OUTER JOIN左边的表dept我们称为左表,右边的emp称为右表,所以LEFT OUTER JOIN会取得左表dept的所有行和右表的emp的行进行匹配,如果右表emp中没有匹配的项,将用NULL取代**/
select 
	e.ename,d.dname
from
	dept d 
left outer join   //outer可以省略
	emp e
on
	e.deptno = d.deptno;

带有right的是右外连接,又叫做右连接。
带有left的是左外连接,又叫做左连接。
任何一个右连接都有左连接的写法。
任何一个左连接都有右连接的写法。

外连接的查询结果条数一定是 >= 内连接的查询结果条数的嘛? 正确

5、多表查询(联结)

涉及到多表查询,需要用到联结,联结可以分为以下几类

  • 左联结(left join):联结结果保留左表的全部数据
  • 右联结(right join):联结结果保留右表的全部数据
  • 内联结(inner join):联结结果取两表的公共数据

例:
在这里插入图片描述

select firstName, lastName, city, state
from Person (as) p left join Address (as) a
on p.personId = a.personId
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值