oracle中 常用的 join on 相关和 集合运算的总结

sql常用联合查询的 join on 、 left join(左连接) 、 right join (右连接)、inner join (等值连接)以及常用的集合运算有:union、unionall、minus、intersect的效果和总结

首先接着用上一篇的book表和pbook表:

首先把join on和inner join 放在一起:

select  * from   book a    join  ( select id,name,price from   pbook) b on   a.id=b.id;
select  * from   book a    inner join  ( select id,name,price from   pbook) b on   a.id=b.id;

相比较这结果一模一样,只返回两个表中联结字段id相等的行

接着我们看左、右连接比较:

select  * from   book a    left join  ( select id,name,price from   pbook) b on   a.id=b.id;
select  * from   book a    right join  ( select id,name,price from   pbook) b on   a.id=b.id;

明显能看出,左连接以左表为主,左表全部显示,右表只显示关联的,其余为空,总行数是左表的行。右连接是以右表为主,显示右边所有行,左表关联的行显示,其余为空
下面 常用的集合运算的比较:

首先我们比较一下union 和union all 结果比较

select   * from  book      union  select id,name,price from   pbook;
select   * from  book      union all select id,name,price from   pbook;

这里能够看出:union 和union all 把相同列合并了,union对合并的数据去掉了重复行并且进行了排序。而union all 则是把2个表合起来,没有排序或者去重。

提示:1.表面上看union对数据进行排序,但是不能保证排序一定正确。(在oralce10之前是排序去重,之后是Hash UNIQUE运算去重,而它只比较散列值不进行排序)

           2.当数据量很大时,速率上来讲,union all 会比union 快很多。

下一组比较:minus,intersect

select   * from  book      minus select id,name,price from   pbook;
select   * from  book  intersect   (select id,name,price from   pbook)

很明显:minus是把2个表冲突数据提出来,而intersect是把2个表的相同数据提出来

时间: 2024-08-25 21:50:07

oracle中 常用的 join on 相关和 集合运算的总结的相关文章

Oracle中常用的to_Char用法详解

Oracle中常用的to_Char用法详解(有FMT的详细列表) The following are number examples for the to_char function. to_char(1210.73, '9999.9') would return '1210.7' to_char(1210.73, '9,999.99') would return '1,210.73' to_char(1210.73, '$9,999.00') would return '$1,210.73'

Oracle组函数、多表查询、集合运算、数据库对象(序列、视图、约束、索引、同义词)等

count组函数:(过滤掉空的字段) select count(address),count(*) from b_user max() avg() min(),sum() select sum(age),max(age),min(age),avg(nvl(age,0)) from b_user 1       260     70      10      37.1428571428571 group by:如果前面定义了该字段名  则groupby必须也写上该字段 select name,pw

oracle中常用函数

1.oracle中 trunc 是截取的函数,用在日期类型上,就是截取到的日或时间. select trunc(sysdate) from dual   默认是截取系统日期到日,得到 2012-12-19 比如值为"2012-12-19 14:30:50" 的日期变量 trunc(sysdate)得到 2012-12-19  和 trunc(sysdate,'DD') 一样 trunc(sysdate,'YYYY')  得到 2012-1-1 trunc(sysdate,'MM') 

Oracle中Left Outer Join和外关联(+)的区别

外关联是Oracle数据库的专有语句 Left Outer Join则是SQL-92的标准语句 通常认为这两个SQL是可以等效的,但还是有些细微的差别. 一般说来,外关联的等值条件等效于Left Outer Join中的on语句:两个where中其他语句是一样的. 但是Left Outer Join中的其他条件(非表连接)出现在On关键词后面还是出现在Where关键词后面是不一样的,这样的语句很难用外关联进行同义转义. 下面我们先看一个测试数据,和一个测试案例 创建一个部门表和员工表 CREAT

【Oracle】Oracle中常用函数大全

Oracle SQL 提供了用于执行特定操作的专用函数.这些函数大大增强了 SQL 语言的功能.函数可以接受零个或者多个输入参数,并返回一个输出结果. oracle 数据库中主要使用两种类型的函数: 1.  单行函数:对每一个函数应用在表的记录中时,只能输入一行结果,返回一个结果, 比如:MOD(x,y)返回 x 除以 y 的余数(x 和 y 可以是两个整数,也可以是表中的整 数列).常用的单行函数有: Ø  字符函数:对字符串操作. Ø  数字函数:对数字进行计算,返回一个数字. Ø  转换函

oracle中常用函数-nvl

Oracle中的索引

Oracle中的索引 在关系数据库中,索引是一种与表有关的数据库结构,它是除表以外的另一个重要模式对象.索引是建立在表的一列或多个列上的辅助对象,目的是提高表中数据的访问速度. 索引时表示数据的另一种方式,它提供的数据顺序不同于数据在磁盘上的物理存储顺序.它重新排列数据的物理位置,使其值为有序键值列表,每个键值是指向表行的指针,故其排列方式使其搜索变得更加有效. 如果表中定义了主键约束,而主键列上不存在索引,则Oracle自动创建一个. Oracle中常用的索引类型有:B树索引.反向键索引.位图

【Oracle】oracle中rownum的说明及使用技巧

oracle中常用到ROWNUM,所以做一些本人对rownum的一些认识和使用技巧的记录,以便备查. 一.rownum的说明 rownum是oracle特有的一个关键字. (1)对于基表,在insert记录时,oracle就按照insert的顺序,将rownum分配给每一行记录,因此在select一个基表的时候,rownum的排序是根据insert记录的顺序显示的,例如: select rownum as rn, t.* from emp t; (2)对于子查询,则rownum的顺序是根据子查询

Oracle中的字符函数

Oracle中常用的字符串函数有以下几种: 1.upper()---将字符串的内容全部转换为大写.lower()---将字符串的内容全部转换为小写.具体用法: select  upper('test'),lower('TEST')  from  dual 2.initcap()--将字符串的首字母变成大写.具体用法: select  enamel,initcap(ename)  from  emp 3.replace()--字符串替换函数.具体用法: select  ename,replace(