数据库
yaoshengting
这个作者很懒,什么都没留下…
展开
-
SQL计算中分母为0
问题:表两个列,A和B,视图中三个列:A、B、C。其中C=A/B,如果B为0,那么C=0,怎么写这个视图的SQL 方法:create view v as select A ,B原创 2011-10-10 15:39:02 · 5191 阅读 · 0 评论 -
sql语句中left join、inner join中的on与where的区别
table a(id, type):id type----------------------------------1 1 2 1 3 2 table b(id, class):id class-------------------------转载 2013-08-21 14:41:58 · 831 阅读 · 0 评论 -
全表扫描和索引扫描的区别
1) 全表扫描(Full Table Scans, FTS)为实现全表扫描,Oracle读取表中所有的行,并检查每一行是否满足语句的WHERE限制条件。Oracle顺序地读取分配给表的每个数据块,直到读到表的最高水线处(high water mark, HWM,标识表的最后一个数据块)。一个多块读操作可以使一次I/O能读取多块数据块(db_block_multiblock_read_count转载 2014-11-12 15:07:09 · 5988 阅读 · 0 评论 -
oracle 默认排序问题 和 order by ,rowid
Oracle会根据具体的数据块的存储返回记录.oracle数据库是没有默认排序的,要排序必须加上order by 因为oracle是按块进行读取数据的,如果数据按顺序存储,则可能使读取出来的数据是按顺序的,给用户误解为默认排序oracle没有进行任何排序操作,rowid表示的是数据存放的数据块内部地址,如果没有要求排序,oracle会顺序的从数据块中读取符合条件的数据返回到客户端,不转载 2014-11-12 13:57:48 · 8102 阅读 · 0 评论 -
Oracle 堆组织表(HOT)
Oracle实际应用中,经常会用到table,对于table的研究自己之前并没有过多的参与, 最近读了一下tom的书后,对table又有了一点新的认识.table在Oracle中被分为很多的类种,我们平时在create table时,最常用到的类型就是堆组织表了(HOT),那么heap我们都知道是一种经典的数据结构,是一块磁盘或内存的空间,那么在应用上是按照一种显示随机的方式进行管理的,由于这转载 2014-11-12 13:59:51 · 728 阅读 · 0 评论 -
select * from table_name for update; 和 select t.*, t.rowid from table_name t的区别
select * from table_name for update; 和 select t.*, t.rowid from table_name t 的qu原创 2014-10-16 15:55:26 · 13180 阅读 · 0 评论 -
oracle闪回表详解
--- 说明闪回数据库--- 使用闪回表将表内容还原到过去的特定时间点--- 从删除表中进行恢复--- 使用闪回查询查看截止到任一时间点的数据库内容--- 使用闪回版本查询查看某一行在一段时间内的各个版本--- 使用闪回事务查询查看事务处理历史记录或行优点:闪回技术由于只能处理更改数据,所以从根本上改变了恢复技术。使用这个技术时,从错误中恢复转载 2014-12-01 11:48:23 · 626 阅读 · 0 评论 -
【概念】为什么有时全表扫描比通过索引扫描效率更高
伟大的Oracle SQL优化器可以判断出在某些情况下,使用全表扫描比使用索引扫描能更快的得到数据结果。有没有想过,她是怎么做到的呢?背后的原理是什么呢?举一个非常好理解的场景(scenario:通过索引读取表中20%的数据)解释一下这个有趣的概念:假设一张表含有10万行数据--------100000行我们要读取其中20%(2万)行数据----20000行表中每行转载 2015-01-26 16:39:14 · 9305 阅读 · 5 评论 -
关于 rownum
1. Oracle 多个伪列中的一种(不是表的实际列);2. 返回从表中选择时,返回的行的序列号,第一行为 1,依次递增;3. rownum 的分配在 order by 之前,所以会被 order by 扰乱;n 为自然数1) 获得前 n 行:select * from tb_code where rownum 2) 获得第一行:select * fro原创 2015-01-26 10:00:47 · 536 阅读 · 0 评论 -
Oracle查询数据库中含有该列名的数据库表
select * from user_tab_cols where column_name = NLS_UPPER('列名')原创 2015-01-26 10:56:17 · 2102 阅读 · 0 评论 -
oracle电子书籍
http://blog.csdn.net/a727756480/article/details/21703275原创 2015-01-26 10:45:59 · 499 阅读 · 0 评论 -
oracle ORA-01002: fetch out of sequence tips 违反提取顺序
The Oracle oerr utility notes this on the ora-01002 error:ORA-01002: fetch out of sequenceCause: This error means that a fetch has been attempted from a cursor which is no longer valid. N转载 2015-08-14 10:18:56 · 4430 阅读 · 0 评论 -
字符串拼接函数
--传入的参数pk,根据该pk查询一个表里的某个字段(多条结果),将该字段拼接成一个字符串返回--字段之间用,号隔开。最多拼接10条记录,10条之后的就舍弃不进行拼接create or replace function file_concat(par_pk in varchar2) return varchar2 --记住:参数和返回值里的数据类型都不用定义长度原创 2015-10-12 15:59:01 · 2375 阅读 · 0 评论 -
SQL伪序号
SET @rownum=0; SELECT @rownum:=@rownum+1 AS rownum , feild1 , feild2 …… , feildn FROM TableName ORDER BY feild1原创 2011-09-26 15:39:22 · 566 阅读 · 0 评论 -
多条件查询的sql语句字符串拼接
<br /> StringBuffer sqlBuf = new StringBuffer("select * from goods where");<br /> String sql="";<br /> if(!"".equals(g_name)){<br /> sqlBuf.append(" g_name='"+g_name+"' and ");<br /> }<br /> if(!"".equals(g_type)){<br /> sqlBuf.append(" g_type='原创 2011-02-25 13:36:00 · 5447 阅读 · 0 评论 -
Oracle 10g 完全参考手册之DECODE实现交叉报表--数据行转换为报表的列
本文主要摘自并翻译于《Oracle Database 10g完全参考手册》英文版,并根据情况补充11g的内容,和自己的例子(注:这里使用查询出来的数据结果是把源码中的数据建到本地使用,因为直接把书本中的查询出来的结果复制出来后格式乱,对不齐,原来格式请看书本) The DECODEfunction is without doubt one of themost powerful翻译 2013-06-06 10:37:56 · 1998 阅读 · 0 评论 -
LTRIM, RTRIM, and TRIM
本文摘自并翻译于《Oracle Database 10g 完全参考手册》英文版LTRIM, RTRIM, and TRIMLTRIM andRTRIMare like hedge trimmers.They trim off unwanted characters from the left andright ends of strings.(翻译:他们从串的左边或右边删除不需翻译 2013-06-04 14:40:35 · 1216 阅读 · 0 评论 -
Oracle之conncet by 之练习篇 sys_connect_by_path
10、sys_connect_by_path--sys_connect_by_path(字段名, 2个字段之间的连接符号)--其实SYS_CONNECT_BY_PATH这个函数是oracle9i才新提出来的!--它一定要和connect by子句合用!select CONNECT_BY_ROOT T.ID "ROOT" ,T.PARENT_ID ,T原创 2013-05-24 15:46:35 · 2639 阅读 · 0 评论 -
mysql数据库 实现类似标记序号的伪列
在查询数据库的时候,我们有时候需要对查询出来的数据加上序列,1,2,3,……n例如:我们根据表的某个字段排序后,要对这些数据加上序列,这个时候序号常常不是我们建表时设置好的自增的主键id,怎么办呢????可能我们会用变量来解决,如下set @rownum=0;SELECT @rownum:=@rownum+1 AS rownum, table_name.*FROM table原创 2011-10-25 17:31:23 · 6672 阅读 · 0 评论 -
oracle SQL语句执行步骤
Oracle中SQL语句执行过程中,Oracle内部解析原理如下: 1、当一用户第一次提交一个SQL表达式时,Oracle会将这SQL进行Hardparse,这过程有点像程序编译,检查语法、表名、字段名等相关信息(如下图),这过程会花比较长的时间,因为它要分析语句的语法与语义。然后获得最优化后的执行计划(sql plan),并在内存中分配一定的空间保存该语句与对应的执行计划等信息。转载 2013-02-19 10:39:42 · 844 阅读 · 0 评论 -
Oracle count(1) count(*) count(col)
count(1)和count(*)没有任何区别(执行计划和统计信息),而且都是统计所有行count(col)统计col列不为空的记录,如果有索引,不管col是否为空,都能走索引,没有索引就无法走转载 2013-02-19 13:49:28 · 696 阅读 · 0 评论 -
Oracle函数介绍:decode
1、Oracle函数介绍:decode Sql代码 select sum(DECODE(C810000125,'是',1,0))/COUNT(1) 合格率 FROM t581 统计合格率,如果 C810000125这个字段为“是”结果1,不为是结果为0 还可以这样写:Sql代码 select sum(case when C810000125 = '是' then转载 2013-02-19 10:40:39 · 16513 阅读 · 0 评论 -
SQL中EXISTS的用法
SQL中EXISTS的用法比如在Northwind数据库中有一个查询为SELECT c.CustomerId,CompanyName FROM Customers cWHERE EXISTS(SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID) 这里面的EXISTS是如何运作呢?子查询返回的是OrderId字转载 2013-02-19 10:42:54 · 825 阅读 · 0 评论 -
WHERE子句中的运算符优先级
WHERE子句中的运算符优先级计算顺序运算符1算术运算符,例如+、-、*、/运算符2连接运算符,例如||运算符3比较运算符,例如>、=、运算符4IS [NOT] NULL,LIKE,[NOT] IN5[N转载 2013-02-19 10:47:12 · 2046 阅读 · 0 评论 -
pl/sql developer快速输入select * from
1、pl/sql developer快速输入select *from pl/sql developer快速输入select * fromTools->Preferences->Editor->AutoReplace->选上Enabled,并Edit文件,加入以下内容:www.2cto.com sf=select * from scf=select count(*) fr转载 2013-02-19 10:37:55 · 3046 阅读 · 0 评论 -
NULL的数据类型
Oracle的NULL代表的含义是不确定,那么不确定的东西也会有确定的数据类型吗?或者换个说法,NULL在Oracle中的默认数据类型是什么,下面就来探讨这个问题。首先公布答案,NULL的默认类型是字符类型,具体是VARCHAR2还是CHAR,这个并不清楚,不过我个人怀疑是VARCHAR2的可能性更大一些。我们知道一个字段不管是何种类型的,都可以插入NULL值,也就是说,NULL可以随意的转载 2013-02-19 10:36:18 · 1585 阅读 · 0 评论 -
oracle 分析函数over
分析函数(OVER) 目录:===============================================1.Oracle分析函数简介2. Oracle分析函数简单实例3.分析函数OVER解析一、Oracle分析函数简介:在日常的生产环境中,我们接触得比较多的是OLTP系统(即Online Transaction Process),这些系转载 2013-05-20 10:56:56 · 660 阅读 · 0 评论 -
Oracle分析函数over之二
Oracleover函数SQLcode: sql over的作用及用法RANK ( ) OVER ( [query_partition_clause] order_by_clause )DENSE_RANK ( ) OVER ( [query_partition_clause] order_by_clause )可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序,转载 2013-05-21 13:30:44 · 764 阅读 · 0 评论 -
Oracle分析函数Lead(),Lag()
Oracle分析函数Lead(),Lag() 其实这2个函数的作用非常好理解,Lead()就是取当前顺序的下一条记录,相对Lag()就是取当前顺序的上一行记录。经常会有判断在一定条件下的两条记录之间的时间差这样的需求。Lead()函数的用法和Lag()是一样的,所以只说明一个就可以了。 语法结构:lead(value_expr [,offset][,default])o转载 2013-05-22 14:43:23 · 971 阅读 · 0 评论 -
Oracle之数据记录字符串拼接
类似需求在SQLServer中的实现方式参考:http://topic.csdn.net/u/20090908/15/a95cce26-f9a3-4943-9ba4-5e7768d8ef79.html 以下是Oracle的实现方式:(转载)[c-sharp] view plaincopy/* --创建表 test*/ create table test (转载 2013-05-22 16:03:34 · 1034 阅读 · 0 评论 -
Oracle 之connect by
这篇文章应该算是比较老的一篇文章了,但是也许是我在网上找到的比较不错的介绍Oracle的connect by的文章,讲的东西比较丰富而且易懂Oracle Database 10g 中新的 CONNECT BY 特性Jonathan Gennick自 2001 年以来一直是 OTN 会员 Oracle Database 10g 增强了对查询层次或树状结构数据的支持最近转载 2013-05-23 17:14:04 · 1237 阅读 · 0 评论 -
Oracle之connect by 之练习篇
说明: 1. START WITH:告诉系统以哪个节点作为根结点开始查找并构造结果集,该节点即为返回记录中的最高节点。2. CONNECT_BY_ROOT 返回当前节点的最顶端节点 3. CONNECT_BY_ISLEAF 判断是否为叶子节点,如果这个节点下面有子节点,则不为叶子节点 4. LEVEL 伪列表示节点深度,从1开始5. SYS_CONNECT_BY_PATH函数显原创 2013-05-24 13:52:53 · 1000 阅读 · 0 评论 -
oracle数据库的commit
今天做了一个简单的jsp后台验证,发现就是在控制台取不到数据,在Oracle数据库里插了许多条数据也不行,折腾了我将近半个小时,最后无奈,把plsqldev关了,重试了一下,这回发现取到数据了,终于明白了,就是oracle'的commit搞的鬼,这才想起来了,以前用DB2数据库的时候,向表里插入数据后马上能在程序中显示出来的原因是DB2数据库是用界面向表里插数据的,最后有个“落实”的按钮,那个按钮就相当于commit了,以至于我没有注意。这回用oracle是用插入语句写的,所以才会出现这种情况,哎,又一次犯原创 2011-02-24 16:43:00 · 1567 阅读 · 0 评论