5、关联查询

1.左右连接

关于左右连接指的是查询判断条件的参考方向,

例1:下面有如下查询:

Sql>Select * from emp e,dept d where e.deptno=d.deptno;

如上查询emp与dept的所有信息,这是可以看到信息里没有40部门的信息,原因就在于上述查询语句是以emp表为参考的,而在emp中没有员工在40部门,那么我们想要显示40部门的信息,就必须应用左右连接来做。

语句修改为:select * from emp e, dept d where e.deptno(+)=d.deptno;

“(+)”就用于左、右连接的更改

(+)=:放在等号的左边,表示的是右链接

=(+):放在右边,表示的是左连接

这种符号是oracle数据库自已所独有的,其他数据库不能使用。

Select e.ename,e.job,m.ename from emp e,emp m where e.mgr=m.empno(+);

除了以上的表连接操作之外,在sql语法中,也提供了另外一套用于表连接的操作sql,格式如下:

Select  table.column,table2.column from table [cross join table2] [natural join table2]|[join table2 using(column_name)] [join table2 on(table1.column_name=table2.column_name)]|[left|right|full outer]

2.交叉连接(cross join):用于产生笛卡尔积

Sql>Select * from emp cross join dept;

笛卡尔积本身并不是属于无用的内容,在某些情况下还是需要使用的

3.自然连接(natural join):自动找到匹配的关联字段,消除笛卡尔积

Sql>Select * from emp natural join dept;

但是并不是所有的字段都是关联字段,设置字段需要通过约束指定;

4.join…using子句:用于自已指定一个消除字段需要通过约束指定;

Sql>Select * from emp  join dept using (deptno);

5.join…on子句:用户自已指定一个可以消除笛卡尔积的无关条件

Sql>Select * from emp join dept on(emp.deptno=dept.deptno);

6.连接方向的改变:

左(外)连接:left  outer   join….on;

右(外)连接:right outer   join…on;

全(外)连接:full   outer   join…on;---------->把两张表中没有的数据都表示

时间: 2025-01-14 08:18:20

5、关联查询的相关文章

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)表与表之间连接条件