文章分类 -  Oracle

摘要:假设有这样一张运动员比赛成绩表 tb_score 现在要求查询出每个国家的前三名的成绩记录,查询语句可以这样写: 1、 select t3.id,t3.country,t3.score from (select t1.*, (select count(*) from tb_score t2 wher 阅读全文
posted @ 2017-01-05 10:45 QQ天堂 阅读(267) 评论(0) 推荐(0) 编辑
摘要:创建一张表,只有很少量的记录状态为'N',而我们只需要查询状态为'N'的记录SQL> create table test as select 'Y' flag,o.* from dba_objects o;SQL> update test set flag='N' where rownum commit;提交完成。然后分别创建函数索引和普通索引SQL> create index inx_flag_n on test(decode(flag,'N','N',null));索引已创建。 阅读全文
posted @ 2013-12-10 11:24 QQ天堂 阅读(2735) 评论(0) 推荐(0) 编辑
摘要:索引为什么失效。说实在的,失效的原因有多种:但是如果是同样的sql如果在之前能够使用到索引,那么现在使用不到索引,以下几种主要情况:1. 随着表的增长,where条件出来的数据太多,大于15%,使得索引失效(会导致CBO计算走索引花费大于走全表)2. 统计信息失效 需要重新搜集统计信息3.索引本身失效 需要重建索引下面是一些不会使用到索引的原因索引失效 1) 没有查询条件,或者查询条件没有建立索引 2) 在查询条件上没有使用引导列 3) 查询的数量是大表的大部分,应该是30%以上。 4) 索引本身失效 5) 查询条件使用函数在索引列上(见12) 6) 对小表查询 7) 提示不使用索引 8) 统 阅读全文
posted @ 2013-12-06 14:31 QQ天堂 阅读(192) 评论(0) 推荐(0) 编辑
摘要:和其他数据库系统类似,Oracle字符串连接使用“||”进行字符串拼接,其使用方式和MSSQLServer中的加号“+”一样。比如执行下面的SQL语句:SELECT '工号为'||FNumber||'的员工姓名为'||FName FROM T_EmployeeWHERE FName IS NOT NULL除了“||”,Oracle还支持使用CONCAT()函数进行字符串拼接,比如执行下面的SQL语句:SELECT CONCAT('工号:',FNumber) FROM T_Employee如果CONCAT中连接的值不是字符串,Oracle会尝试将其 阅读全文
posted @ 2013-11-22 17:12 QQ天堂 阅读(215) 评论(0) 推荐(0) 编辑
摘要:Oracle中系统时间比较熟悉 是select sysdate from dual; db2中则是 SELECT CURRENT TIMESTAMP FROM SYSIBM.SYSDUMMY1 还有 select CURRENT DATE from SYSIBM.SYSDUMMY1;获得日期 select CURRENT TIME from SYSIBM.SYSDUMMY1;获得时间 阅读全文
posted @ 2011-11-01 14:44 QQ天堂 阅读(1794) 评论(0) 推荐(0) 编辑
摘要:主键(PRIMARY KEY )来自MSDN的描述:表通常具有包含唯一标识表中每一行的值的一列或一组列。这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性。在创建或修改表时,您可以通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,并且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束可保证数据的唯一性,因此经常对标识列定义这种约束。如果为表指定了 PRIMARY KEY 约束,则 SQL Server 2005 数据库引擎 将通过为主键列创建唯一索引来强制数据的唯一性。当在查询中使用主键时,此索引还可 阅读全文
posted @ 2011-10-31 18:23 QQ天堂 阅读(15254) 评论(0) 推荐(0) 编辑
摘要:1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=03.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎 阅读全文
posted @ 2011-08-05 11:25 QQ天堂 阅读(363) 评论(0) 推荐(0) 编辑
摘要:MySQL、SqlServer、Oracle三大主流数据库分页查询2009年12月28日 星期一 04:48 P.M.在 这里主要讲解一下MySQL、SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法。可能会有人说这 些网上都有,但我的主要目的是把这些知识通过我实际的应用总结归纳一下,以方便大家查询使用。下面就分别给大家介绍、讲解一下三种数据库实现... 阅读全文
posted @ 2010-06-24 23:55 QQ天堂 阅读(14949) 评论(0) 推荐(0) 编辑
摘要:据库查询中难免会遇到行列转换的情况,摘列一些较精典的解决方案--####################################################################一、采用SQL decode和PL/SQL函数实现--####################################################################1、固定列... 阅读全文
posted @ 2010-04-14 23:25 QQ天堂 阅读(10267) 评论(0) 推荐(0) 编辑
摘要:/*物料 需要数量 需要仓库 现存量仓库 现存量仓库数量 批次A1 2 C1 C1 20 123A1 2 C1 C2 30 111A1 2 C1 C2 20 222A1 2 C1 C3 10 211A2 3 C4 C1 40 321A2 3 C4 C4 50 222A2 3 C4 C4 60 333A2 3 C4 C5 70 223我需要把上面的查询结果转换为下面的。物料 需要数量 需要仓库 C1... 阅读全文
posted @ 2010-04-14 18:58 QQ天堂 阅读(38300) 评论(3) 推荐(4) 编辑
摘要:刚学ORACLE的时候,就先入为主地认为rownum是一种类似于SQLSERVER的TOP关键字一样的机制————起码咱们最常用的分页可以用这个搞定。 事实并非如此,学习的时候,“空”是很重要的,以前的经验往往是一种坏处。 SQLSERVER中,如果TOP关键字和ORDER BY关键字一起出现,是先ORDER BY 后再TOP... 阅读全文
posted @ 2010-04-01 18:36 QQ天堂 阅读(7959) 评论(0) 推荐(1) 编辑
摘要:sql多条记录合并 使用背景:需要根据某个字段如PROID来对某些记录进行分组,其中相同PROID需要显示一条记录,其中每条记录的name又不一样。 使用效果:相同PROID的记录用一条记录显示,其中name用自定义的符号分隔开,“,” 号 SQL模板: 代码:Sql代码 SELECTPROID, max(Sys_Connect_By_Path(z.username,','... 阅读全文
posted @ 2010-03-24 19:03 QQ天堂 阅读(7597) 评论(0) 推荐(0) 编辑
摘要:怎么合并多行记录的字符串,一直是oracle新手喜欢问的SQL问题之一,关于这个问题的帖子我看过不下30个了,现在就对这个问题,进行一个总结。 什么是合并多行字符串(连接字符串)呢,例如:SQL> desc test;Name Type Nullable Default Comments------- ------------ -------- ------- --------COUNTRY... 阅读全文
posted @ 2010-03-24 19:00 QQ天堂 阅读(4580) 评论(1) 推荐(1) 编辑
摘要:使用的PLSQL Developer 工具在对oracle 10g插入数据或查询数据的时候都会报以下错误:Dynamic Performance Tables not accessible, Automatic Statistics Disabled for this session You can disable statistics in the preference menu,or obta... 阅读全文
posted @ 2010-03-19 10:44 QQ天堂 阅读(741) 评论(0) 推荐(0) 编辑
摘要:在数据库中, 空值用来表示实际值未知或无意义的情况。在一个表中,如果一行中的某列没有值,那么就称它为空值(null)。任何数据类型的列,只要没有使用非空 (not null)或主键(primary key)完整性限制,都可以出现空值。在实际应用中,如果忽略空值的存在,将会造成造成不必要的麻烦。例如,在下面的雇员表(emp)中,雇员名(ename)为king的行,因为king为最高官员(presid... 阅读全文
posted @ 2010-02-25 18:58 QQ天堂 阅读(2868) 评论(0) 推荐(0) 编辑
摘要:createorreplacefunctionfunc_get_user_by_msisdn(msisdninnumber) ------------------------------------------------------------------------------ ---功能描述:通过用户的电话号码,调用局方存储过程获取用户的基本信息,--- ---以遍更新card_user_i... 阅读全文
posted @ 2009-10-23 21:59 QQ天堂 阅读(15338) 评论(2) 推荐(0) 编辑
摘要:如果直接按照字符串方式,或者,直接使用'2007-12-28 10:07:24',没有指定日期格式,就会报错:ORA-01861: 文字与格式字符串不匹配 必须指定日期格式 正确SELECT D261 as ename,GENTIME,D267 FROM UNITE.UPR_C2_NE_VENDOR T where T.GENTIME<to_date('2009-03-18 17:03:00... 阅读全文
posted @ 2009-09-14 11:17 QQ天堂 阅读(41249) 评论(0) 推荐(2) 编辑
摘要:一般设计数据库的时候,我们都考虑一个汉字占用两个字节。所以设计数据库的时候,如果认为某字段最长要存四个汉字,该字段都会定义为varchar2(8)。SQL> create table t1 (col1 varchar2(8));Table created.但是测试插入三个汉字的时候就报错了。SQL> insert into t1 values('一二三');insert into t1... 阅读全文
posted @ 2009-06-26 18:26 QQ天堂 阅读(1832) 评论(0) 推荐(0) 编辑
摘要:因為我們公司的數據庫一直使用的是ZHT16BIG5字符集﹐很少注意utf8字符集。昨天聽朋友說在oracle數據庫中unicode字符集(其實unicode只是一種編碼規范﹐它也可分為多種字符集)中一個漢字占三個字節﹐而字母和數字是單字節。在oracle數據庫中utf8是unicode的一種。下面通過對utf8字符集的測試﹐發現一個漢字確實占三個字節。因此以后要注意的是﹐當我們把ZHT16BIG5... 阅读全文
posted @ 2009-06-26 18:11 QQ天堂 阅读(3449) 评论(0) 推荐(0) 编辑
摘要:Oralce中的to_date()函数用于将字符串转换为日期对象,具体使用格式为: to_date( string, [ format_mask ] , [ nls_language ] ) string1 要转换的字符串. format_mask 可选项,日期转换格式. nls_language 可选项. 指定用于转换字符串的nls language. [问题]ORA-01810... 阅读全文
posted @ 2009-06-20 16:12 QQ天堂 阅读(9604) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示