连表查询的介绍_连接表

连表查询的介绍_连接表1、连表查询的原因(1)如果查询结果不在一个表中,在多个表中,那就需要将表关联,进行连表查询。(2)连表查询大多数都作用在外键得基础上。—表与表之间有关联。2.1表与表之间存在的关系(1)一对多:在多的一方添加外键列(2)多对多:需要创建一个中间表,该表中至少有两个外键列2.2连表查询2.3内连接内连接演示—结果都是一样,只是语法不同。看个人习惯用哪个?1.查询每一个员工的姓名,及关联的部门的名称〔隐式内连接实现)2.查询每一个员工的姓名,及关.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1、连表查询的原因

(1)如果查询结果不在一个表中,在多个表中,那就需要将表关联,进行连表查询。

(2)连表查询大多数都作用在外键得基础上。—表与表之间有关联。

连表查询的介绍_连接表

2.1表与表之间存在的关系

(1)一对多:在多的一方添加外键列

(2)多对多:需要创建一个中间表,该表中至少有两个外键列

2.2连表查询

连表查询的介绍_连接表

2.3内连接

连表查询的介绍_连接表

 

内连接演示—结果都是一样,只是语法不同。看个人习惯用哪个?
1.查询每一个员工的姓名,及关联的部门的名称〔隐式内连接实现)

2.查询每一个员工的姓名,及关联的部门的名称〔显式内连接实现)

-- 隐式查询 select 列名.... from 表1,表2 where 连表得条件。
-- 连表查询时,如果不使用连表条件则出现笛卡尔集。
-- 所谓笛卡尔集 就是A表中每一条记录关联B中中得每条记录
1.查询每一个员工的姓名,及关联的部门的名称〔隐式内连接实现)
select * from tb_emp,tb_dept where tb_emp.dept_id=tb_dept.id;
 -- 如果表的名字很长 可以为表起别名
select * from tb_emp e, tb_dept d where e.dept_id=d.id;
 

-- 显示连接: A表 inner join B表 on 连表条件。 
2.查询每一个员工的姓名,及关联的部门的名称〔显式内连接实现)
select * from tb_emp  inner join tb_dept on tb_emp.dept_id=tb_dept.id;
select * from tb_emp e inner join tb_dept d on e.dept_id=d.id;

-- 上面的 inner可以省略。
select * from tb_emp e  join tb_dept d on e.dept_id=d.id;

2.4、外连接

 

外连接演示
–1.查询emp表的所有数据, 和对应的部门信息(左外连接)
–2.查询dept表的所有数据,和对应的员工信息(右外连接)

-- 语法: select 查询列集 from A表 left join B表 on 连表条件
-- 1.查询emp表的所有数据, 和对应的部门信息(左外连接)
select * from tb_emp e left outer join tb_dept d on e.dept_id = d.id;
select * from tb_emp e left join tb_dept d on e.dept_id=d.id;

-- 2.查询dept表的所有数据,和对应的员工信息(右外连接)
select * from tb_emp e right join tb_dept d on e.dept_id=d.id;

2.5、自联查询

自己和自己相连接查询。
select * from A表 join A表 on 连表条件。

自连接
(1)查询员工及其所属领导的名字。  
(2)查询所有员工 emp及其领导的名字emp ,如果员工没有领导,也需要查询出来

-- 1.查询员工及其所属领导的名字。你要查询的结果再一张表中,但是还不能使用单表查询得到结果。
select a.name,b.name from tb_emp a join tb_emp b on a.managerid=b.id;
 
-- 2.查询所有员工 emp及其领导的名字emp ,如果员工没有领导,也需要查询出来
select a.name,b.name from tb_emp a left join tb_emp b on a.managerid=b.id;

3、子查询—嵌套查询

一个查询的结果 作为另一个查询的条件 或者 临时表。

-- 查询市场部的员工信息-----
-- 子查询返回的结果一列一条记录。 这个时候可以用=
-- “=”后只能跟一个where条件,in后可以跟多个
select * from tb_emp where dept_id=(select id from tb_dept where name='市场部')

-- 查询市场部和研发部员工的信息。in 
 -- -- 查询市场部和研发部员工的信息。
   -- a) 查询市场部和研发部的编号
	 select id from tb_dept where name in('市场部','研发部')

   -- b) 再员工表中根据部门编号查询员工信息
	 select * from tb_emp where dept_id in (select id from tb_dept where name in('市场部','研发部'))


-- 查询在“方东白”入职之后的员工信息
select * from tb_emp where entrydate>(select entrydate from tb_emp where name='方东白')

-- -- 查询比财务部所有人工资都高的员工信息。
  a)求出财务部中最高的工资。
	select max(salary) from tb_emp e join tb_dept d on e.dept_id=d.id where d.name='财务部'
	
	b) 根据财务部最高工资查询其他员工信息
	select * from tb_emp where salary>(	select max(salary) from tb_emp e join tb_dept d on e.dept_id=d.id where d.name='财务部')

4、组合查询

多个查询的结果 组合到一起。
sql union sql —>把这两条sql查询的结果组合到一起。如果有重复记录则合并成一条。
sql union all sql—>把这两条sql查询的结果组合到一起。如果有重复记录,不合并。

注意: 这两条sql返回的字段必须一样。

 

select name from tb_emp where salary>8000
	UNION 
	select * from tb_emp where age>40;

总结:  

1.内连接—inner join  on
2.外连接—left join   on     right join  on
3.自连接—
4.子查询
5.组合查询—sql union  sql     union all 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/194025.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python ddos攻击_DDoS攻击工具

    python ddos攻击_DDoS攻击工具DDoS攻击工具综合性工具综合性工具除了可以进行DDoS攻击外,还可用于其他的用途,例如:端口扫描、安全审计、防火墙等。实际上,大部分综合性工具开发的原始目的并不是用于DDoS,而是“网络检查或测试工具”Hping?Hping是一个编码和解码TCP/IP协议的命令行开发工具,常用于测试网络及主机的安全,同时也可以做安全审计、防火墙测试等工具的标配工具;Hping的命令行就像常用的ping命令,不…

    2022年7月27日
  • 国内机床企业名录

    国内机床企业名录珠江机床有限公司北京第三机床厂北京市机电研究院北京市华德液压泵厂机床厂北京市仪表机床厂北京市电加工机床厂北京市电加工研究所北京阿奇工业电子有限公司中国航天工业总公司二八四厂(北京长峰机械动力厂)北京机床研究所北京良乡锻压机床厂北京市京良机械制造有限公司北京长空机械公司北京北方车辆制造厂十五分厂北京机电研究所北京工业大学科技开发管理部(数控机床配件研究所)北京光电量仪研究中心北京工大光电机械厂北京液

    2022年6月30日
  • 用ESC/P控制码,怎样向喷墨打印机传送图形数据啊,包括颜色信息?

    用ESC/P控制码,怎样向喷墨打印机传送图形数据啊,包括颜色信息?

    2021年7月28日
  • clion激活码2021.4_通用破解码

    clion激活码2021.4_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
  • springboot2.0整合kafka_spring与mybatis整合

    springboot2.0整合kafka_spring与mybatis整合首先引入POM依赖 <!–nosql数据库–> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependenc…

    2022年9月26日
  • goland激活码_在线激活

    (goland激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/ide…

    2022年3月26日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号