Union:将两个查询的结果集相加,并过滤重复的数据,同时进行默认规则的排序。
用法:select * from t1 union select * from t2;oracle
Union all:将两个查询的结果集相加,无论结果中是否有重复所有显示,不进行排序。
用法:select * from t1 union all select * from t2; 日志
Intersect:对两个结果集进行交集操做,不包括重复行,同时进行默认规则的排序;
用法:select * from a intersect select * from bcode
Minus:将两个结果集中相同的数据删除,同时进行默认规则(以结果集的第一个字段)排序。
用法:select * from a minus select * from b排序
Decode:多条件分支判断,8i版本中保留下来的语法。该语法中最后一个参数表示该字段的默认值。
用法:SELECT DECODE(OWNER, 'LOCALSYSTEM', 'LOCAL', 'OTHERSYSTEM', 'OTHER', 'USER') AS OWNER FROM T;索引
Case:多条件分支判断。与Decode相似。9i版本中新增语法。执行效率比Decode要好。
用法:Select CASE owner when 'LOCALSYSTEM' then 'SYSTEM' when 'OTHERSYSTEM' then 'OTHER' ELSE 'USER' END FROM T;事务
Dual:一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有且只返回一条记录。
不能把DUAL表的UPDATE,INSERT,DELETE权限随意释放出去,这样对于系统是很危险的
用法1: select to_char(sysdate,''yyyy-mm-dd hh24:mi:ss'') from dual;
用法2:select 1+2 from dual;资源
Truncate:在功能上与不带 WHERE 子句的 DELETE 语句相同:两者均删除表中的所有行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源it
少。TRUNCATE TABLE 经过释放存储表数据所用的数据页来删除数据,而且只在事务日志中记录页的释放。
用法:Truncate table t_user;io
Delete: 语句每次删除一行,并在事务日志中为所删除的每行记录一项。table
Drop:删除表定义和表中的数据。
Exsits:使用EXISTS,Oracle会首先检查主查询,而后运行子查询直到它找到第一个匹配项,这就节省了时间。
用法:SELECT * FROM T1 WHERE exists(select * from T2 where T1.a=T2.a);
In:Oracle在执行IN子查询时,首先执行子查询,并将得到的结果列表存放在一个加了索引的临时表中。
在执行子查询以前,系统先将主查询挂起,待子查询执行完毕,存放在临时表中之后再执行主查询。
这也就是使用EXISTS比使用IN一般查询速度快的缘由。
用法:select * from T1 where T1.a in (select T2.a from T2)