关联查询

从多张表中查询对应记录的信息
关联查询的重点在于这些表中的记录的对应关系,这个关系也成为连接条件
SELECT ename,dname,sal
FROM emp e,dept d
WHERE
e.deptno=d.deptno
AND
sal>2500

关联查询要添加连接条件,否则会产生笛卡尔积,笛卡尔积通常是一个无意义的结果集,它记录
书是所有产于查询的表的记录数乘积的结果。要避免出现,数据量大时极易出现内存溢出等现象
n张表关联查询要有至少n-1个连接条件

内连接也是用来完成关联查询的 不满足条件的不显示
select a.ename,d.dname from emp a join dept d
on a.deptno=d.deptno
join ---on

外连接除了会将满足连接条件的记录查询出来之外,还会将不满足连接条件的记录也查询出来
外连接分为;
左外连接:以join 左侧表作为驱动表(所有数据都被会查询出来),那么当该表中的某条记录
不满足连接条件时来自右侧表中的字段全部填null
left join---on
select a.ename,d.dname from emp a join dept d
on a.deptno=d.deptno(+)
右外连接
right join---on
select a.ename,d.dname from emp a join dept d
on a.deptno(+)=d.deptno
全外连接
full join---on
select a.ename,d.dname from emp a full join dept d
on a.deptno=d.deptno

自连接

自连接即:当前表的一条记录可以对应当前表自己的多条记录
自连接是为了解决同类型数据但是又存在上下级关系的梳妆结构
数据时使用
自己连自己
select e.ename,m.ename,m.deptno,d.loc
from emp e join emp m on e.mgr=m.empno
join dept d
on m.deptno=d.deptno
where e.ename=‘smith‘

自然连接会自动寻找两张表列名相同的做等值
连接。注意,两张表中应当只有一列名字相同
才可以使用自然连接。

外连接的应用场景:
当我们查看部门表时,因为在进行与emp连接查询
时,40号部门不存在任何员工,导致查询结果该
记录被忽略。这时若我们需要主要查看部门有哪些
时,就使用外连接。

时间: 2024-11-06 04:13:02

关联查询的相关文章

mybatis中的关联查询

1>在实体映射层中引入关联对象 package com.jinglin.hotelsup.model; import java.io.Serializable; public class Goodsinfo implements Serializable{ private Integer goodsid; private Integer companyid; private Integer goodstypeid; private Integer unitid; private String c

关联映射、关联查询

1 什么叫关联映射 通过数据库对象之间的关联关系(一对一.一对多.多对多),反映到实体对象上之间的引用. 举例 用户实体类(User):user_id user_name user_token 笔记本实体类(Book):book_id user_id book_name 一个笔记本对应一个用户(一对一).一个用户对应多个笔记本(一对多) 案例:根据用户ID去查询用户信息以及该用户所有的笔记信息时就需要用到关联查询,所以就需要用到关联映射 关联查询实体类:user_id user_name use

Hibernate-多表关联查询结果的处理方法

Hibernate多表查询结果处理 (2014-07-06 20:45:40) 转载▼ 标签: hibernate 多表查询 结果集处理 分类: Java 如果我们在Hibernate中需要查询多个表的不同字段,那么如何来获取Hibernate多表查询的结果呢?有两种方式: 1. 对各个字段分别转化成对应类型,如下: Java代码: Query q = session.createQuery(" select members, classInfo.className " + "

RDIFramework.NET 中多表关联查询分页实例

RDIFramework.NET 中多表关联查询分页实例 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案.该框架以SOA范式作为指导思想,作为异质系统整合与互操作性.分布式应用提供了可行的解决方案. 分页非常的常见,基本任何项目都会涉及到分页,这没什么好谈的,大多数我们分页对单表的分页比较多,对多表的分页我们可以通过视图来实现,当然还有其他的方式,在这儿,我以一个实例展示下使用我们的RDIFramework.NET来实现多表

MyBatis:学习笔记(3)——关联查询

MyBatis:学习笔记(3)--关联查询 关联查询 理解联结 SQL最强大的功能之一在于我们可以在数据查询的执行中可以使用联结,来将多个表中的数据作为整体进行筛选. 模拟一个简单的在线商品购物系统,如果我们将用户信息和订单信息都保存在user表中,这样就不存在联结关系,因为我们仅仅操作一张表就好. 但是这是非常不明智的选择,举例来说,一个用户可以拥有多个订单,如果保存在一个表中,势必会导致用户信息的多次出现,因为每个订单绑定的用户信息都是相同的. 所以我们尽量要将不同的信息存储与不同的表中,但

JAVA-Unit03: SQL(基础查询) 、 SQL(关联查询)

Unit03: SQL(基础查询) . SQL(关联查询) 列别名 当SELECT子句中查询的列是一个函数 或者表达式时,那么查询出来的结果集 中对应的该字段的名字就是这个函数或者 表达式的名字.为此可以为这一列添加 别名,这样结果集中该字段就使用别名 作为该列的名字. 若希望别名区分大小写或者含有空格,那么 该别名可以使用双引号括起来. SELECT ename,sal*12 "s al" FROM emp AND,OR AND优先级高于OR,可以通过括号 提高优先级. SELECT

YII2-数据库数据查询方法,关联查询with, joinWith区别和分页

一.ActiveRecord 活动记录 1.with关联查询 例如,查询评论 $post = Post::find()->with('comments'); 等价于以下结果集 SELECT * FROM `post`; SELECT * FROM `comment` WHERE post_id IN (...) 结合Pagination分页查询OK 2.joinWith关联查询,返回 $post = Post::find()->joinWith('comments', true) 等价于: S

Mybatis高级查询之关联查询

3 关联查询 做查询之前,先修改几个配置.mapper.xml是在mybatis-config.xml中指定,那么我们每增加一个mapper都要增加一个配置,很麻烦.为了简化配置.需要将mapper接口和mapper.xml放到同一个文件下,并且接口和xml文件命名一致.使用mybatis的自动扫描:.这样,当我们新增接口的时候,直接创建接口和对应xml文件就可以了: <mappers> <!--<mapper resource="com.test.mapper.dao/

Mybatis深入了解(六)----关联查询(高级映射)

一对一查询 resultType resultMap 一对多查询 resultType resultMap 多对多查询 一对一查询 resultType resultType:使用resultType实现非常简单,如果POJO中没有包括查询的列名,可以新建扩展类继承父类,并在子类中添加列名对应的属性,即可完成映射. package cn.itcast.ssm.po; /** * 订单的扩展类 * @author Administrator * */ //通过此类映射订单和用户查询的结果,让此类继

MySQL多表关联查询与存储过程

1.多表关联查询 --  **************关联查询(多表查询)**************** -- 需求:查询员工及其所在部门(显示员工姓名,部门名称) -- 1.1 交叉连接查询(不推荐.产生笛卡尔乘积现象:4 * 4=16,有些是重复记录) SELECT empName,deptName FROM employee,dept; -- 需求:查询员工及其所在部门(显示员工姓名,部门名称) -- 多表查询规则:1)确定查询哪些表   2)确定查询哪些字段   3)表与表之间连接条件