
oracle sql
文章平均质量分 60
gengyigang
这个作者很懒,什么都没留下…
展开
-
(转)UNION and UNION ALL
如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。 union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。 Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则...2011-08-17 14:28:46 · 99 阅读 · 0 评论 -
Oracle时间加减单位时间
加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add_months(sysdate,1) from dual; --加1月 select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; --...原创 2012-03-07 21:00:26 · 298 阅读 · 0 评论 -
Oracle 取整、四舍五入及格式化 Round/Floor/Ceil
原文地址:http://kb.cnblogs.com/a/1552790/SELECT ROUND( number, [ decimal_places ] ) FROM DUAL 说明:number : 将要处理的数值decimal_places : 四舍五入,小数取几位,不填默认为0Sample :select round(123.456) from d...原创 2012-03-16 20:55:38 · 381 阅读 · 0 评论 -
Oracle秒变时间
SQL:> select numtodsinterval(365, 'second') from dual; 结果:+000000000 00:06:05.000000000; SQL:> select SUBSTR(numtodsinterval(365, 'second'),12,8) from dual; 结果:00:06:0...原创 2012-03-16 20:56:08 · 248 阅读 · 0 评论 -
Oracle中的rownum(伪列)用法解析
注意:rownum从1开始; 1.rownum按照记录插入时的顺序给记录排序,所以有order by的子句时一定要注意啊! 2.使用时rownum,order by字段是否为主键有什么影响? 3.子查询中rownum rn,而rn用到外查询中到底是怎样的序列? 4.若id主键是按照从小到大的顺序插入的,select语句没有group by 和order by的子句时,rownum的顺序和id顺序基...原创 2012-03-19 10:44:02 · 372 阅读 · 0 评论 -
[转]oracle临时表相关知识
回复: 临时表存放在哪儿?DML statements on temporary tables do not generate redo logs for the data changes. However, undo logs for the data and redo logs for the undo logs are generated. Data from the temporary t...原创 2012-03-19 11:10:23 · 66 阅读 · 0 评论 -
【转】oracle的LAG和LEAD分析函数
Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率。lag的语法如下:lead的语法如下:lead 和lag 的语法类似以下以lag为例进行讲解!lag(exp_str,offset,defval) over()exp_str 是要做对比的字段offset ...原创 2012-03-19 17:19:16 · 111 阅读 · 0 评论 -
[转]oracle的复合索引两个知识点
Oracle 9i以前的复合索引:如果索引有多个字段组成,索引中每个字段对于查询的价值是不同的,通常最常用到的查询字段应该放在最前面;或者相同查询几率的字段根据字段内容的相异程度(相异程度越高,索引效率越高)来决定。即:建索引的时候除了要考虑前置列,最好还要考虑DISTINCT数量最多的建为索引。 一个原则:如果在where条件中有对索引中第一个字段的查询,索引是可以被使用的;但是如果在whe...原创 2012-03-20 15:13:49 · 276 阅读 · 0 评论 -
(转)ORACLE 正斜杠(/)的作用
正斜杠(/):在Oracle中,用来终止SQL语句。更准确的说,是表示了“运行现在位于缓冲区的SQL代码”。正斜杠也用作分隔项。 例如:执行以下语句 CREATE TABLE TEMP( AAA VARCHAR2(2 BYTE), BBB VARCHAR2(2 BYTE))Insert into TEMP (AAA,BBB) values ('TESTA',...原创 2012-03-22 23:32:22 · 1018 阅读 · 0 评论 -
(转)join, inner join, left join, right join, full join的区别
inner join可以简写为join 连接分为两种:内连接与外连接。A.内连接 内连接,即最常见的等值连接,例: SELECT * FROM TESTA,TESTBWHERE TESTA.A=TESTB.A等价于select * from testa inner join testb on testa.a=testb.a B.外连接 外...原创 2012-04-11 23:32:29 · 100 阅读 · 0 评论 -
(转)Oracle sql 优化1
ORACLE有个高速缓冲的概念,这个高速缓冲呢就是存放执行过的SQL语句,那oracle在执行sql语句的时候要做很多工作,例如解析sql语句,估算索引利用率,绑定变量,读取数据块等等这些操作。假设高速缓冲里已经存储了执行过的sql语句,那就直接匹配执行了,少了步骤,自然就快了,但是经过测试会发现高速缓冲只对简单的表起作用,多表的情况小完全没有效果啊,例如在查询单表的时候那叫一个快,但是假设...原创 2012-04-12 22:27:07 · 92 阅读 · 0 评论 -
(转)Oracle sql 优化2
这里提供的是执行性能的优化,而不是后台数据库优化器资料: 参考数据库开发性能方面的各种问题,收集了一些优化方案统计如下(当然,象索引等优化方案太过简单就不列入了,嘿嘿):执行路径:ORACLE的这个功能大大地提高了SQL的执行性能并节省了内存的使用:我们发现,单表数据的统计比多表统计的速度完全是两个概念.单表统计可能只要0.02秒,但是2张表联合统计就可能要几十表了.这是因为ORACLE只...原创 2012-04-13 01:23:08 · 76 阅读 · 0 评论 -
(转)oracle 表连接方式详解
在查看sql执行计划时,我们会发现表的连接方式有多种,本文对表的连接方式进行介绍以便更好看懂执行计划和理解sql执行原理。 一、连接方式: 嵌套循环(Nested Loops (NL)) (散列)哈希连接(Hash Join (HJ)) (归并)排序合并连接(Sort Merge Join (SMJ) ) 二、连接说明: 1...原创 2012-04-13 01:26:02 · 338 阅读 · 0 评论 -
(转)Oracle中的Hash Join祥解
一、 hash join概念 hash join(HJ)是一种用于equi-join(而anti-join就是使用NOT IN时的join)的技术。在Oracle中,它是从7.3开始引入的,以代替sort-merge和nested-loop join方式,提高效率。在CBO(hash join只有在CBO才可能被使用到)模式下,优化器计算代价时,首先会考虑hash joi...原创 2012-04-13 01:28:38 · 322 阅读 · 0 评论 -
(转)数据库三范式
关系数据库设计范式介绍 .1 第一范式(1NF)无重复的列 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。简而言之,...原创 2013-07-10 11:52:25 · 95 阅读 · 0 评论 -
(转)Oracle中的Join
1、概述1.1、所有的join连接,都可以加上类似where a.id='1000'的条件,达到同样的效果。1.2、除了cross join不可以加on外,其它join连接都必须加上on关键字,后都可加where条件。1.3、虽然都可以加where条件,但是他们只在标准连接的结果集上查找where条件。比如左外连接的结果没有class的三班,所以如果加 where class.id...原创 2013-09-09 15:56:53 · 110 阅读 · 0 评论 -
(转)in 和 exist
in 和 exists区别in 是把外表和内表作hash join,而exists是对外表作loop,每次loop再对内表进行查询。一直以来认为exists比in效率高的说法是不准确的。如果查询的两个表大小相当,那么用in和exists差别不大。如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:例如:表A(小表),表B(大表)1:select * from A...原创 2013-09-09 23:30:09 · 127 阅读 · 0 评论 -
oracle的分号和斜杠(转)
引用1. Adding a slash to the end of each statement was a bad choice because sqlplus treats slash as a buffer flush. For procedure/triggers/functions it is a must: because content of if is st...原创 2012-10-17 10:51:28 · 2396 阅读 · 0 评论 -
(转)in和exists
分析一下exists真的就比in的效率高吗? 我们先讨论IN和EXISTS。 select * from t1 where x in ( select y from t2 ) 事实上可以理解为: select * from t1, ( select distinct y from t2 ) t2 where t1.x = t2.y;...原创 2012-01-12 21:16:53 · 138 阅读 · 0 评论 -
oracle分析函数
简单记录一下oracle 分析函数的使用,随用随更新。1)max(xx) over(partition by xx) /min(xx) over (partition by xx)scott/tiger连接:SQL>SELECT emp.*, max(sal) over(partition by deptno) maxsal FROM EMP;说明:检索员工所在部门的最高...原创 2011-08-25 14:37:34 · 97 阅读 · 0 评论 -
trigger处理变异表的办法
1.用自治事务(适用最广) 2.用全局变量 3.用复合触发器原创 2011-07-24 14:47:23 · 147 阅读 · 0 评论 -
《Oracle Database 11g PL/SQL程序设计》触发器介绍
数据库触发器是特殊的存储程序。通常不直接调用它们,而要由数据库中的事件触发。它们在执行命令时和执行数据库管理系统动作之间运行。触发器可以用PL/SQL或Java编写。触发器可以捕获创建、修改或删除对象的事件,也可以捕获表或视图中的插入、更新或删除操作。它们还可以监控数据库或模式的状态变化及用户动作的变化。本章包括如下主题:● 触发器简介● 触发器体系结构...原创 2011-07-24 14:49:40 · 541 阅读 · 0 评论 -
自治事务
自治事务(autonomous transaction)允许你创建一个“事务中的事务),它能独立于其父事务提交或回滚。利用自治事务,可以挂起当前执行的事务,开始一个新事务,完成一些工作,然后提交或回滚,所有这些都不影响当前执行事务的状态。自治事务提供了一种用PL/SQL 控制事务的新方法,可以用于:顶层匿名块;本地(过程中的过程)、独立或打包的函数和过程;对象类型的方法;数据库触发器。通过...原创 2011-07-24 14:51:29 · 97 阅读 · 0 评论 -
TRUNC函数
关于对Oracle TRUNC函数的相关实知识,我现在总算有点体会了,如果某天你要想在实际操作中要用trunc(date,''dd'').时,你可以打开这篇文章对其进行一个更为全面的了解,以下就是文章的详细内容介绍,望大家借鉴。通俗的说吧,format为年时,精确到-----年为月时,精确到------年,月(不管哪年,只要是相同的月和哪天)为日时,精确到------年,月,日(不...原创 2011-07-26 16:10:11 · 218 阅读 · 0 评论 -
行列转换
1、固定列数的行列转换如student subject grade--------- ---------- --------student1 语文 80student1 数学 70student1 英语 60student2 语文 90student2 数学 80student2 英语 100……转换为语文 数学 英语student1 80 70 60student2 90 80 100……...原创 2011-07-26 16:12:22 · 123 阅读 · 0 评论 -
Oracle分析函数
SUM : 该函数计算组中表达式的累积和MIN : 在一个组中的数据窗口中查找表达式的最小值MAX : 在一个组中的数据窗口中查找表达式的最大值AVG :用于计算一个组和数据窗口内表达式的平均值。COUNT : 对一组内发生的事情进行累积计数---------------------------...原创 2011-07-26 16:42:44 · 81 阅读 · 0 评论 -
REF CURSOR
1. REF CURSOR 一般我们的cursor都是指静态cursor,也就是select语句是编译时候已经固定了的,而REF CURSOR是可以在运行时候才确定这个cursor所对应的select语句。使用实例如下: Type MyRefCurA IS REF CURSOR RETURN emp%RowType; ---1) 定义type ...原创 2011-07-27 10:46:05 · 90 阅读 · 0 评论 -
oralce 字符串操作常用函数
1、to_number语法:TO_NUMBER(string[,format[,nlsparams]]) 目的:将CHAR或VARCHAR2类型的string转换为一个NUMBER类型的数值,如果指定了format,那么string应该遵循相应的数字格式。nlsparams的用来指定小数点和钱分位分隔符,以及货币符号。它与TO_CHAR()互为反函数 在这只举一个简单的例...原创 2011-07-27 15:34:20 · 122 阅读 · 0 评论 -
DELETE 与 TRUNCATE
TRUNCATE和DELETE有以下几点区别:1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经...原创 2011-07-27 17:04:36 · 96 阅读 · 0 评论 -
decode函数与case语句
首先,举2个简单的例子,简单对比一下这2者的区别。1.CASE语句:SELECT CASE SIGN(5 - 5) WHEN 1 THEN 'Is Positive' WHEN -1 THEN 'Is Negative' ELSE 'Is Zero' ENDFROM DUAL;...原创 2011-07-28 13:22:44 · 247 阅读 · 0 评论 -
主键和外键
主键的存在就代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要是用于其他表的外键关联,本记录的修改与删除,当我们没有主键时,这些操作会变的非常麻烦。我强调主键不应该具有实际的意义,这可能对于一些朋友来说不太认同,比如订单表吧,会有“订单编号”字段,而这个字段呢在业务实际中本身就是应该具有唯一性,具有唯一标识记录的功能,但我是不推荐采用订单编号字段作为主键的,因为具有实际意...原创 2011-08-01 23:59:41 · 131 阅读 · 0 评论 -
drop table dept cascade constraints
同事问我 drop table dept cascade constraints; 这个关键字 cascade constraints 的作用.应该是在父子表中存在外键关联的时候 drop 父表的时候级联drop 子表的外键.简单记录了测试过程.SQL>SQL> create table dept (dept_id number , dept_name v...原创 2011-08-02 09:25:17 · 558 阅读 · 0 评论 -
pl/sql操作xml
SQL codeConnected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as SYSSQL> SQL> --1.使用具有dba权限用户如sys创建一个目录,如:SQL> CREATE OR REPLACE DIRECTORY TESTDIR AS 'D:\temp\';Dir...原创 2011-08-03 16:10:42 · 396 阅读 · 0 评论 -
sqldeveloper中执行procedure
在sqldeveloper中执行procedure时,一定要同时执行以下语句,注意不能先执行打开输出,在运行procedure。 SET SERVEROUTPUT ON;EXEC PROC_HELLOWORLD; 在sqlplus中则可以分开执行!...原创 2011-08-08 11:00:10 · 1251 阅读 · 0 评论 -
pl/sql 判断闰年
这是一个老调重弹的例子,也许以前写过这样的笔记,这里再贴出来,是再次感叹于其解决方法的美妙行。判断一个年份是闰年,常见的想法是判断其是否可被4整除,如果是100的倍数,要求其能被400整除。下面是摘自DBA_Village的例子:create or replace function IS_LEAP_YEAR (nYear in number) return boolean is V_REMAIND...原创 2012-01-05 09:53:20 · 796 阅读 · 0 评论 -
mysql之union
今天来写写union的用法及一些需要注意的。 union:联合的意思,即把两次或多次查询结果合并起来。 要求:两次查询的列数必须一致 推荐:列的类型可以不一样,但推荐查询的每一列,想对应的类型以一样 可以来自多张表的数据:多次sql语句取出的列名可以不一致,此时以第一个sql语句的列名为准。 如果不同的语句中取出的行,有完全相同(这里表示的是每个列的值都相同),那么unio...原创 2015-11-12 17:04:14 · 87 阅读 · 0 评论