Oracle
文章平均质量分 86
D_A_O
这个作者很懒,什么都没留下…
展开
-
Oracle与MySql一些语法关键字
1、decode;case when then else end判断用Oracle:select distinct decode(u.c_sex,10007770,'男',10007780,'女','不明') from t_user u;Mysql:SELECT CASE when u.code_user = 1 then '男' WHEN u.code_user = 0 ...原创 2020-04-26 11:01:52 · 251 阅读 · 0 评论 -
Oracle中报无效数字
如下语句:select * from (select rownum r, t.* from (select s.c_id, f.c_id fileid, f.c_title title, l.c_id lid,原创 2017-05-24 14:55:22 · 12680 阅读 · 0 评论 -
with tableName的用法
有时候在Oracle查询时需要建立临时表,可以简化查询,使读者更加清楚明白,在一个查询sql中,可以使用临时表。用法:with tableName as(sql语句) select * from tableName...例如:with a as --建立临时表 (select sum(pt.c_all) sumall, q.c_createsupp from t_quo原创 2017-04-28 11:54:08 · 718 阅读 · 0 评论 -
CLOB、BLOB , CLOB与BLOB的区别
CLOB 定义 数据库中的一种保存文件所使用的类型。 Character Large Object SQL 类型 CLOB 在 JavaTM 编程语言中的映射关系。SQL CLOB 是内置类型,它将字符大对象 (Character Large Object) 存储为数据库表某一行中的一个列值。默认情况下,驱动程序使用 SQL locator(CLOB) 实现 Clob转载 2017-04-01 09:54:56 · 48146 阅读 · 0 评论 -
Oracle 增加修改删除字段
添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….);修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….);删除字段的语法:alter tab转载 2017-03-31 18:20:14 · 24270 阅读 · 0 评论 -
PLSQL卡
(1)是兼容性问题 已经解决! 右键 ==》属性==》兼容性==》 去掉所有钩(2)设置: PlSqlDev.exe右键→属性→兼容性→特权等级,以管理员身份运行此程序.转载 2017-03-29 18:10:22 · 795 阅读 · 0 评论 -
oracle 中 in函数
select * from emp in empno in(1,2,3......);in 函数的使用限制:in()中的数据有最多1000条的限制可用exists 替换,如果主表的话用exist会快一些,如果相反的话,还是in快一些 有两个简单例子,以说明 "exists"和"in"的效率问题1) select * from T1 where exists(se原创 2016-04-27 10:51:45 · 1078 阅读 · 0 评论 -
Listagg():列转行函数
这是一个Oracle的列转行函数:LISTAGG() 11.2版本之后的Oracle可以使用,之前的版本不能用,会报错。先看示例代码:Sql代码 with temp as( select 'China' nation ,'Guangzhou' city from dual union all select 'China' natio转载 2017-03-27 21:14:58 · 1604 阅读 · 0 评论 -
查询每个部门前几名
在表emp中,按照sal排序,取出各部门前两名:方法一:select * from ( select rank() over(partition by e.deptno order by e.sal desc ) f ,e.empno,e.ename,e.deptno,e.sal from emp e) e1 where e1.f原创 2017-02-21 21:59:47 · 1035 阅读 · 0 评论 -
Oracle中replace函数的使用
1、替换特定字符串例:select filefullname from sys_frmattachmentdb 查询的结果为:e:\GengBaoFile\TYGW\《历城区项目立项审批流程》.1079\\3186.通用流程项目资料.jpg 需求:要将结果中的“历城区”修改为"北京区"。 操作:使用的函数为replace()含义为:替换字符串原创 2017-01-17 09:15:40 · 12689 阅读 · 0 评论 -
Oracle行转列和列转行
一、行转列1.1、初始测试数据表结构:TEST_TB_GRADESql代码:1 create table TEST_TB_GRADE2 (3 ID NUMBER(10) not null,4 USER_NAME VARCHAR2(20 CHAR),5 COURSE VARCHAR2(20 CH转载 2017-01-09 14:24:38 · 339 阅读 · 0 评论 -
SQL中distinct的用法(四种示例分析)
在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只 用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰很久,用distinct不能解决的话,我只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会转载 2017-01-09 14:04:49 · 7194 阅读 · 1 评论 -
使用DBMS_JOB包创建ORACLE定时任务
在Oracle的包里面,有一个名字叫做DBMS_JOB的包,它的作用是安排和管理作业队列。通过作业队列,可以让Oracle数据库定期执行特定的任务。当使用DBMS_JOB管理作业的时候,必须确保设置了初始化参数JOB_QUEUE_PROCESSES(不能为0)。 1、 SUBMIT该过程用于建立一个新的作业,当建立作业的时候,需要通过设置相应的参数来告诉Oracle要执行的内容,要执行转载 2016-12-20 10:56:12 · 344 阅读 · 0 评论 -
sql中带正则表达式
update asdfasdfads r set r.app_operator=(select c.CONTACT_NAME from asdfa c where c.cons_id = r.app_operator and regexp_like(r.app_operator,'^[0-9]+[0-9]$') ) where regexp_like(r.app_operator,'^[原创 2017-01-05 19:44:20 · 608 阅读 · 0 评论 -
over partition by与group by
over partition by与group by是都是分组统计的函数。区别1. over partition by 其中partition by 只是over一个子句参数,作用就是分组。over 子句可以与聚合函数结合使用(max、min、sum、avg、count等).下面我们看一个例子 [sql] view plain copy print?<strong>-- 创建...转载 2016-12-23 15:28:01 · 2752 阅读 · 0 评论 -
rank()
rank()函数返回结果集分区内指定字段的值的排名,指定字段的值的排名是相关行之前的排名加一。RANK() OVER([])partition_by_clause 将from子句生成的结果集划分为应用到RANK函数的分区。Order_by_clause确定将RANK值应用到分区中的行时所使用的顺序。以下用一个成绩表作示例,table 架构s_score(s_class(原创 2016-12-23 15:10:43 · 466 阅读 · 0 评论 -
Oracle sql复制表
1、将emp中的表结构及数据导入到新建表emp1中。要求:表emp1未创建,否则提示“名称已由现有对象使用”。create table emp1 as select * from emp2、将emp中的表结构导入到新建表emp1中(不包含数据,因为条件为恒不等条件)。要求:表emp1未创建,否则提示同1。create table emp1 as select * from emp WH原创 2016-12-16 16:05:01 · 672 阅读 · 0 评论 -
Oracle如何实现跨库查询
. 实现结果:在一个数据库中某个用户下编写一个存储过程,在存储过程中使用DBLINK连接另一个数据库,从此数据库中的一个用户下取数,然后插入当前的数据库中的一个表中。二. 实现方法步骤: 1. 创建存储过程 2. 在存储过程中先创建database link 3. 创建成功 4. 从另一个数据库取出数据插入到当前数据库中转载 2017-05-10 14:13:35 · 4889 阅读 · 0 评论 -
Oracle中转义字符总结
在字段里查找'%',涉及到Oracle的转义字符,现总结如下:表:SQL> select * from test;TEST--------------------sdd_kkd'ddfsfsadffa%asfs123451%23451%543212%54321%%54321A&B已选择9行。 其中包含特殊的字转载 2017-06-07 13:44:23 · 1209 阅读 · 0 评论 -
Oracle 列转行函数 Listagg()
这是一个Oracle的列转行函数:LISTAGG() 先看示例代码:Sql代码 with temp as( select 'China' nation ,'Guangzhou' city from dual union all select 'China' nation ,'Shanghai' city from dual union all select 'China' na...转载 2018-06-12 09:45:44 · 1412 阅读 · 0 评论 -
Oralce锁表及锁存储过程
一、锁表--锁表SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username, l.os_user_name,s.machine, s.terminal, o.object_name, s.logon_time FROM v$locked_object l, all_objects o, v$session s原创 2018-03-12 14:26:21 · 594 阅读 · 0 评论 -
oracle日期加减计算
oracle数据库中有多种对日期加减的计算方法,废话不多说,开始。1、直接加减。(1)求当前时间及一天后:select sysdate,sysdate + 1 from dual; 输出为: 2018-1-24 14:05:19 2018-1-25 14:05:19(2)求当前时间及一小时后:select sysdate,sysdate + 1/24 fr原创 2018-01-24 14:39:52 · 25631 阅读 · 1 评论 -
递归查询
Oracle中start with...connect by prior子句用法 connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with 条件1 connect by 条件2 where 条件3; 例: select * from table start with org_id = 'HBHqfW转载 2017-12-14 15:35:54 · 370 阅读 · 0 评论 -
Oracle 树操作(select…start with…connect by…prior)
oracle树查询的最重要的就是select…start with…connect by…prior语法了。依托于该语法,我们可以将一个表形结构的以树的顺序列出来。在下面列述了oracle中树型查询的常用查询方式以及经常使用的与树查询相关的oracle特性函数等,在这里只涉及到一张表中的树查询方式而不涉及多表中的关联等。1、准备测试表和测试数据12转载 2017-12-14 15:53:45 · 244 阅读 · 0 评论 -
oracle 查询最近执行过的 SQL语句
oracle 查询最近执行过的 SQL语句select sql_text,last_load_time from v$sql order by last_load_time desc;SELECT sql_text, last_load_time FROM v$sql WHERE last_load_time IS NOT NULL and sql_text lik转载 2017-12-12 15:57:53 · 866 阅读 · 0 评论 -
ORACLE中的function 、packages、package bodies、procedure的有什么区别和相同
Oracle中function和procedure的区别?1).可以理解函数是存储过程的一种2).函数可以没有参数,但是一定需要一个返回值,存储过程可以没有参数,不需要返回值3).函数return返回值没有返回参数模式,存储过程通过out参数返回值, 如果需要返回多个参数则建议使用存储过程4).2012/5/282012/5/28在sql数据操纵语句中只能调用函数而转载 2017-11-29 10:44:35 · 4749 阅读 · 0 评论 -
oracle中的exists 和not exists 用法
exists (sql 返回结果集为真) not exists (sql 不返回结果集为真) 如下: 表A ID NAME 1 A1 2 A2 3 A3 表B ID AID NAME 1 1 B1 2 2 B2 3 2 B3 表A和表B是1对多的关系 A.ID => B.AID SELECT ID,NAME FROM A WHERE转载 2017-10-17 14:11:10 · 3929 阅读 · 1 评论 -
Orcle多行数据变一行
1、最简单的一种:select id ,listagg( name, ',' ) within group ( order by id ) as namefrom TABLE_NAMEGROUP BY id;2、看不懂的一种:项目中遇到一个需求,需要将多行合并为一行。表结构如下:NAME Null T转载 2017-10-23 17:03:07 · 431 阅读 · 0 评论 -
PLSQL优化
目录(?)[-]优化的理论基础通过Select Count进入优化之旅SELECT Count的知识ORACLE的优化器优化器的优化模式CBO模式RBO模式一起来看看oracle优化器的发展历程让我们从索引的基本知识下手吧索引按内部结构分类索引按功能分类索引按索引对象分类建立索引的方法论不建议建立索引的情况索引不会生效的情况以案例来说明PLSQL优化转载 2017-10-20 16:30:29 · 736 阅读 · 0 评论 -
数据库并发操作
在项目中,有一竞价模块,多个用户在竞价结束时,系统自动录入结果,系统操作为,先查询对应的结果,如果没有就向数据库插入数据。出现的问题,第一次请求到时,无结果,插入;第二次请求到时,查询无结果(未查到插入的结果),再次插入了结果;第三次请求查到了结果。解决方案:用行级锁。具体实现://给数据加锁,防止数据重复插入String sql = "select 1 from a s whe原创 2017-09-27 09:01:39 · 761 阅读 · 0 评论 -
oracle查询锁表解锁语句
1. 如下语句 查询锁定的表: SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username, l.os_user_name,s.machine, s.terminal, o.object_name, s.logon_time FROM v$locked_object l, all_object原创 2017-07-21 17:10:43 · 692 阅读 · 0 评论 -
oracle索引总结
oracle索引总结简介1.说明 1)索引是数据库对象之一,用于加快数据的检索,类似于书籍的索引。在数据库中索引可以减少数据库程序查询结果时需要读取的数据量,类似于在书籍中我们利用索引可以不用翻阅整本书即可找到想要的信息。 2)索引是建立在表上的可选对象;索引的关键在于通过一组排序后的索引键来取代默认的全表扫描检索方式,从而提高检索效率转载 2017-08-01 15:32:03 · 313 阅读 · 0 评论 -
oracle数据删除恢复
分为两种方法:scn和时间戳两种方法恢复。一、通过scn恢复删除且已提交的数据 1、获得当前数据库的scn号 select current_scn from v$database; (切换到sys用户或system用户查询) 查询到的scn号为:1499223 2、查询当前scn号之前的scn select * from 表名原创 2017-07-20 14:02:05 · 291 阅读 · 0 评论 -
PLSQL使用中的一些小问题
1、查询出的数据导出当数据为长数字时,导出的cvs文件中显示为科学计数法,且丢失精度解决办法:select '="'||out_trade_no || '"' as 商户订单号 from 表名;在字段前拼接 =",后拼接"即可:利用的excel本身的格式。原创 2017-07-20 11:25:07 · 351 阅读 · 0 评论 -
varchar2()
varchar2()最大值为4000原创 2016-11-25 15:37:20 · 372 阅读 · 0 评论 -
to_char显示日期为中文年月日
使用to_char 函数:SELECT to_char(sysdate,'yyyy"年"mm"月"dd"日" HH24"时"mi"分"ss"秒"') from dual原创 2016-12-05 15:48:10 · 8527 阅读 · 1 评论 -
Oracle存储过程基本语法介绍
Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2:转载 2016-05-31 18:49:27 · 2685 阅读 · 0 评论 -
Oracle数据库java.sql.SQLException: ORA-00907: 缺失右括号解决方案
拼写sql时,注意不要将“)”放在 new StringBuffer().append(" ( ") 的首个字母,不然容易导致这个异常的产生。将")"放到上行末尾即可原创 2016-04-23 16:26:08 · 3773 阅读 · 0 评论 -
oracle数据库java.sql.SQLException: ORA-00911: 无效字符解决方案
拼写sql时多些了 ; ,删掉即可。这个问题很容易忽视,找了一下午才发现原创 2016-04-22 19:43:12 · 454 阅读 · 0 评论 -
oracle 多表联合查询总结归纳
本次预计讲解的知识点1、 多表查询的操作、限制、笛卡尔积的问题;2、 统计函数及分组统计的操作;3、 子查询的操作,并且结合限定查询、数据排序、多表查询、统计查询一起完成各个复杂查询的操作;一、多表查询的基本概念在之前所使用的查询操作之中,都是从一张表之中查询出所需要的内容,那么如果现在一个查询语句需要显示多张表的数据,则就必须应用到多表查询的操作,而多表查原创 2016-05-06 10:28:24 · 2048 阅读 · 0 评论