msql查询姓名不带r的员工姓名_Mysql关联查询总结

Mysql关联查询的分类

关联查询语法

内连接

SELECT

e.`name`,e.sex,d.deptName

FROM emp e

inner JOIN dept d

on

e.deptId=d.deptId

左外关联

select

e.name,e.sex,d.deptName

from dept d

left join emp e

on

d.deptId=e.deptId

右外关联

select

e.name,e.sex,d.deptName

from dept d

right join emp e

on

d.deptId=e.deptId

全外关联

select

e.name,e.sex,d.deptName

from dept d

right join emp e

on

d.deptId = e.deptId

union

select

e.NAME,e.sex,d.deptName

from dept d

left join emp e

on

d.deptId = e.deptId

自连接

select

e.name as empName,

b.name as bossName

from emp e

left join emp b

on e.boosId=b.id

在Mysql关联查询中 可以大概分为以下几种关联查询分时分别如下 内连接 外连接(左外连接 右外连接 全外连接) 自连接

内连接

特点

只查询两张表能关联上的字段信息,如果关联不上什么信息都不显示

思路

编写关联查询分为三个步骤

  1. 先确定需要关联的表
  2. 在确定需要查询的字段
  3. 最后确定表之间的关联字段

使用

例如 我有两张表分别是 emp 表 和 dept表 它们的字段如下

emp

28cadfbaaba407aa73524913225a21f5.png

dept

52a21dbc18123b30c135fb90e994821e.png

假如我们有如下需求我们要查询这个员工所在的部门名称以及它的姓名与性别 我们该如何操作呢,我们会发现这两个表没有哪一张表是把整个数据都存进去的, 这个时候我们就要用到关联查询了 我们先来看看内连接是个怎么样的效果吧

两张表的数据如下

emp

1ff451d72785bdf669319c5ec9196033.png

dept

9e971bab83a8fe26592d8de32d8502a9.png

sql语句如下

SELECT e.`name`,e.sex,d.deptName FROM emp e inner JOIN dept d on e.deptId=d.deptId

查询结果如下

48e869771203af31c57d6700062edd68.png

总结:这个时候我们会发现没有周六的信息是不是非常符合内连接的特定呢? 只查询两张表能关联上的字段信息,如果关联不上什么信息都不显示

外连接

分类

左连接

特点

以左边的表为基础关联另外的表,左边的表的字段无论如何都会被查询出来,如果左边的表关联不上另外一张表则另外一张表的字段显示为空值

使用

两张表数据如下

emp

f05e15b48898c57116b0a1f43cc45100.png

dept

c626b108600528812109a8c111f4bf6d.png

需求还是查询员工的姓名以及性别和所属部门

sql语句如下

select e.name,e.sex,d.deptName from dept d left join emp e on d.deptId=e.deptId

查询结果如下

2f0a2133a9168d4d8662cc8eae620e42.png

总结:这个时候我们会发现部门为设计部的信息是不是非常符合左外连接的特点呢? 以左边的表为基础关联另外的表,左边的表的字段无虑如何都会被查询出来,如果左边的表关联不上另外一张表则另外一张表的字段显示为空值

右连接

特点

以右边的表为基础关联另外的表,右边的表的字段无虑如何都会被查询出来,如果右边的表关联不上另外一张表则另外一张表的字段显示为空值

使用

两张表数据如下

emp

f05e15b48898c57116b0a1f43cc45100.png

dept

c626b108600528812109a8c111f4bf6d.png

需求还是查询员工的姓名以及性别和所属部门

sql语句如下

select e.name,e.sex,d.deptName from dept d right join emp e on d.deptId=e.deptId

查询结果如下

b82926f5794ddc4de1e7be3ac253657e.png

总结:这个时候我们会发现员工周六的信息是不是非常符合右外连接的特点呢? 以右边的表为基础关联另外的表, 右边的表的字段无虑如何都会被查询出来,如果右边的表关联不上另外一张表则另外一张表的字段显示为空值

全外连接

特点

把两张表全部都为基础表,没有关联上的字段显示为空值

使用

两张表的数据如下

emp

f05e15b48898c57116b0a1f43cc45100.png

dept

c626b108600528812109a8c111f4bf6d.png

sql语句如下

SELECT

e.NAME,

e.sex,

d.deptName

FROM

dept d

RIGHT JOIN emp e ON d.deptId = e.deptId

UNION

SELECT

e.NAME,

e.sex,

d.deptName

FROM

dept d

left JOIN emp e ON d.deptId = e.deptId

总结这个时候我们会发现这种查询方式是不是非常符合全外连接的特点呢? 把两张表全部都为基础表,没有关联上的字段显示为空值

自连接

特点

把同一张表看成是另外一张表在这张表的基础上面做关联查询这种查询方式被称作为自连接

使用

两张表数据如下

emp

f05e15b48898c57116b0a1f43cc45100.png

dept

c626b108600528812109a8c111f4bf6d.png

需求查询每个员工的姓名以及上级领导的名称是谁?

sql语句如下

select e.name as empName,b.name as bossName from emp e left join emp b on e.boosId=b.id

查询结果如下

2646e2ab41f857b08f2ad191bcf4baf8.png

总结:这个时候我们会发现这种查询方式是不是非常符合自连接的特点呢? 把同一张表看成是另外一张表在这张表的基础上面做关联查询这种查询方式被称作为自连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值