- 浏览: 123631 次
最新评论
-
gaoxikun:
看起来很齐全,很完美,但是不知道从哪里下载 。
myeclipse插件简单介绍 -
gaoxikun:
亲,能把这个集成了插件的myeclipse 6.5给我一下吗, ...
myeclipse插件简单介绍 -
hotsmile:
不错!!!!!!!!!
myeclipse插件简单介绍
众所周知的几个结果集集合操作命令,今天详细地测试了一下,发现一些问题,记录备考。
假设我们有一个表Student,包括以下字段与数据:
drop table student;
create table student
(
id int primary key,
name nvarchar2(50) not null,
score number not null
);
insert into student values(1,'Aaron',78);
insert into student values(2,'Bill',76);
insert into student values(3,'Cindy',89);
insert into student values(4,'Damon',90);
insert into student values(5,'Ella',73);
insert into student values(6,'Frado',61);
insert into student values(7,'Gill',99);
insert into student values(8,'Hellen',56);
insert into student values(9,'Ivan',93);
insert into student values(10,'Jay',90);
commit;
•Union和Union All的区别。
select *
from student
where id < 4
union
select *
from student
where id > 2 and id < 6
结果将是
1 Aaron 78
2 Bill 76
3 Cindy 89
4 Damon 90
5 Ella 73
如果换成Union All连接两个结果集,则返回结果是:
1 Aaron 78
2 Bill 76
3 Cindy 89
3 Cindy 89
4 Damon 90
5 Ella 73
可以看到,Union和Union All的区别之一在于对重复结果的处理。
接下来我们将两个子查询的顺序调整一下,改为
--Union
select *
from student
where id > 2 and id < 6
union
select *
from student
where id < 4
看看执行结果是否和你期望的一致?
--Union All
select *
from student
where id > 2 and id < 6
union all
select *
from student
where id < 4
那么这个呢?
据此我们可知,区别之二在于对排序的处理。Union All将按照关联的次序组织数据,而Union将进行依据一定规则进行排序。那么这个规则是?我们换个查询方式看看:
select score,id,name
from student
where id > 2 and id < 6
union
select score,id,name
from student
where id < 4
结果如下:
73 5 Ella
76 2 Bill
78 1 Aaron
89 3 Cindy
90 4 Damon
和我们预料的一致:将会按照字段的顺序进行排序。之前我们的查询是基于id,name,score的字段顺序,那么结果集将按照id优先进行排序;而现在新的字段顺序也改变了查询结果的排序。并且,是按照给定字段a,b,c...的顺序进行的order by。即结果是order by a,b,c...........的。我们看下一个查询:
select score,id,name
from student
where id > 2
union
select score,id,name
from student
where id < 4
结果如下:
56 8 Hellen
61 6 Frado
73 5 Ella
76 2 Bill
78 1 Aaron
89 3 Cindy
90 4 Damon
90 10 Jay
93 9 Ivan
99 7 Gill
可以看到,对于score相同的记录,将按照下一个字段id进行排序。如果我们想自行控制排序,是不是用order by指定就可以了呢?答案是肯定的,不过在写法上有需要注意的地方:
select score,id,name
from student
where id > 2 and id < 7
union
select score,id,name
from student
where id < 4
union
select score,id,name
from student
where id > 8
order by id desc
order by子句必须写在最后一个结果集里,并且其排序规则将改变操作后的排序结果。对于Union、Union All、Intersect、Minus都有效。
注意:
1,Union可以对字段名不同但数据类型相同的结果集进行合并;
2,如果字段名不同的结果集进行Union,那么对此字段的Order by子句将失效。
=================================================================================================================
Intersect和Minus的操作和Union基本一致,这里一起总结一下:
Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
Union All,对两个结果集进行并集操作,包括重复行,不进行排序;
Intersect,对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
Minus,对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。
可以在最后一个结果集中指定Order by子句改变排序方式。
假设我们有一个表Student,包括以下字段与数据:
drop table student;
create table student
(
id int primary key,
name nvarchar2(50) not null,
score number not null
);
insert into student values(1,'Aaron',78);
insert into student values(2,'Bill',76);
insert into student values(3,'Cindy',89);
insert into student values(4,'Damon',90);
insert into student values(5,'Ella',73);
insert into student values(6,'Frado',61);
insert into student values(7,'Gill',99);
insert into student values(8,'Hellen',56);
insert into student values(9,'Ivan',93);
insert into student values(10,'Jay',90);
commit;
•Union和Union All的区别。
select *
from student
where id < 4
union
select *
from student
where id > 2 and id < 6
结果将是
1 Aaron 78
2 Bill 76
3 Cindy 89
4 Damon 90
5 Ella 73
如果换成Union All连接两个结果集,则返回结果是:
1 Aaron 78
2 Bill 76
3 Cindy 89
3 Cindy 89
4 Damon 90
5 Ella 73
可以看到,Union和Union All的区别之一在于对重复结果的处理。
接下来我们将两个子查询的顺序调整一下,改为
--Union
select *
from student
where id > 2 and id < 6
union
select *
from student
where id < 4
看看执行结果是否和你期望的一致?
--Union All
select *
from student
where id > 2 and id < 6
union all
select *
from student
where id < 4
那么这个呢?
据此我们可知,区别之二在于对排序的处理。Union All将按照关联的次序组织数据,而Union将进行依据一定规则进行排序。那么这个规则是?我们换个查询方式看看:
select score,id,name
from student
where id > 2 and id < 6
union
select score,id,name
from student
where id < 4
结果如下:
73 5 Ella
76 2 Bill
78 1 Aaron
89 3 Cindy
90 4 Damon
和我们预料的一致:将会按照字段的顺序进行排序。之前我们的查询是基于id,name,score的字段顺序,那么结果集将按照id优先进行排序;而现在新的字段顺序也改变了查询结果的排序。并且,是按照给定字段a,b,c...的顺序进行的order by。即结果是order by a,b,c...........的。我们看下一个查询:
select score,id,name
from student
where id > 2
union
select score,id,name
from student
where id < 4
结果如下:
56 8 Hellen
61 6 Frado
73 5 Ella
76 2 Bill
78 1 Aaron
89 3 Cindy
90 4 Damon
90 10 Jay
93 9 Ivan
99 7 Gill
可以看到,对于score相同的记录,将按照下一个字段id进行排序。如果我们想自行控制排序,是不是用order by指定就可以了呢?答案是肯定的,不过在写法上有需要注意的地方:
select score,id,name
from student
where id > 2 and id < 7
union
select score,id,name
from student
where id < 4
union
select score,id,name
from student
where id > 8
order by id desc
order by子句必须写在最后一个结果集里,并且其排序规则将改变操作后的排序结果。对于Union、Union All、Intersect、Minus都有效。
注意:
1,Union可以对字段名不同但数据类型相同的结果集进行合并;
2,如果字段名不同的结果集进行Union,那么对此字段的Order by子句将失效。
=================================================================================================================
Intersect和Minus的操作和Union基本一致,这里一起总结一下:
Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
Union All,对两个结果集进行并集操作,包括重复行,不进行排序;
Intersect,对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
Minus,对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。
可以在最后一个结果集中指定Order by子句改变排序方式。
发表评论
-
oracle job中Interval参数
2013-03-23 15:26 8871:每分钟执行 Interval => TRU ... -
oracle计算时间差
2013-03-23 15:20 979select sysdate, ... -
java 中的文件读取信息
2013-03-11 08:56 1059import java.io.BufferedReader ... -
oracle利用user_db_like的存储过程
2013-03-04 15:59 1088CREATE OR REPLACE PROCEDURE hel ... -
oracle创建表分区(001)
2013-01-11 15:21 1143[color=red]create table par_tab ... -
oracle命令大全
2013-01-11 11:05 1189Oracle 命令集合 制作人: 陈杉 1、 创建表空 ... -
js正则表达式(二)
2013-01-09 11:20 886首先加个重要的东西 * ... -
oracle 创建简单的函数
2013-01-06 18:46 749CREATE OR REPLACE FUNCTION hell ... -
oracle简单的创建存储过程
2012-12-28 16:50 963--如果存在数据库表的就删除,没有的话 就创建一个 ... -
set autotrace on
2012-12-27 15:01 1000在SQL*Plus中,你可以通过设置autotrace选项来在 ... -
oracle创建表浅先删除表 的实现
2012-12-25 17:10 902oracle语法中没有mysql语法中的drop table ... -
oraclel wmsys.wm_concat的使用
2012-12-25 15:16 1120create table fuqiang as sele ... -
oracle树 sys_connect_by_path的应用
2012-12-21 15:36 1386SELECT max(LTRIM(SYS_CONNECT_B ... -
java路径问题以及java对文件的基本操作信息
2012-12-19 14:09 9751.基本概念的理解 绝对 ... -
oracle日期比较
2012-11-21 15:31 1022select * from tableA where cda ... -
JS正则表达式
2012-11-15 17:10 853function isTrueName(s) { var pa ... -
java公用类
2012-11-15 17:05 865package cn.org.jshuwei.j2ee.uti ... -
oracle表空间查询的基本SQL
2012-11-14 18:14 1213查询一般表空间: SELECT a.tablespace_n ... -
java规范信息
2012-10-30 08:44 27891 一、判断选择题(每题1分) 1. 表达式要在低优先级操作符 ... -
java时间公用和StringUnitl以及java调用存储过程
2012-10-16 17:38 16161 构建存储过程的语句信息 /** * 从Fun ...
相关推荐
由于历史的原因,早期的oracle...而在SELECT的过程中,Oracle同样检查发现数据库与客户端的字符集设置是相同的,所以它也将存入的内容原封不动地传送到客户端,而客户端操作系统识别出这是汉字编码所以能够正确显示。
文档详细的介绍了如何实现ORACLE数据库字符集的修改操作。
Oracle的一些应用操作、ps/slq、sql优化==
linux 下的 oracle 导入数据库时出现中文乱码,通过修改字符集格式,修改成支持中文的格式。简单易操作。
修改oracle数据库字符集详细的操作命令
oracle11g导入报错,很多情况下是字符集不同导致失败,附件为oracle11g更改字符集操作说明,多次实测有效。
实验27:查询结果的集合操作 63 实验28:高级分组rollup,cube操作 65 实验29:树结构的查询start with子句 66 实验30:高级dml操作 68 第二部分pl/sql基础 69 匿名块的编写 69 实验31:书写一个最简单的块,运行并...
oracle11g字符集的修改,本人亲自用过,按照文档内容一步一步操作准没错,不要忘了先将数据备份或导出pdm哦!!!O(∩_∩)O哈哈~
创建数据库时, – 存储数据库的物理结构 – 还包括关于数据库的信息 数据库的名称 数据文件和恢复日志文件的名称及其位置 时间戳 物理组件 4-4 恢复日志文件: 恢复日志文件: – 恢复日志文件是操作系统文件集,由 ...
创建数据库时, – 存储数据库的物理结构 – 还包括关于数据库的信息 数据库的名称 数据文件和恢复日志文件的名称及其位置 时间戳 物理组件 4-4 恢复日志文件: 恢复日志文件: – 恢复日志文件是操作系统文件集,由 ...
批量操作插入oracle数据集的Oracle.DataAccess.dll,区分x64与x86 各种版本
4.修改Oracle的编码和操作系统的一样。(参考别人的) 登陆用dba SQL> conn system/hundsun as sysdba; 停掉数据库 SQL>shutdown immediate; 启动数据库到mount状态下 SQL> STARTUP MOUNT; Java代码 ...
Oracle全集,oralle优化,Oracle操作语法,触发器和内置包等等。。(很全,附实例)
修改字符集的时候需要修改的彻底,否则会导致表以及其他资源没办法正常使用,按照文档上描述一步步操作就可以了,这个我自己尝试过了,我自己用的是linux oracle64位R2版本的
oracle数据库sql语句操作,基本oracle数据库sql语句集合
支持所有版本的Mysql字符集 对超大数据表的导出进行了优化处理 Convert Mysql to Oracle 功能限制 不能转换MYSQL的存储过程 Convert Mysql to Oracle 运行需求 有相应的数据库操作权限 在机器中安装了ORACLE...
JDBC连接Oracle 11g及Mysql5,涉及传参,反射,读取属性文件,预处理,(预处理)批处理,带参数的存储过程,事务处理,可滚动的结果集,可更新的结果集
40.在oracle中限制返回结果集的大小 41.在远端如何建立standby数据库 42.怎样分析你的SQL语句的效率 43.自动备份Oracle数据库 44.总结SQL语句中的优化提示 45.使用Database Configuration Assistant安装...
文档中收集了oracle系统大部分常用的操作命令,需要的人可下载下来多练习几次,进一步熟悉oracle系统。
oracle数据库的备份还原等操作的描述; 修改oracle数据库字符集