将用逗号隔开字段拆分成两行:

select * from mp_fs_file_info a,dm_process_upload b where instr(b.attachment,a.file_id,1,1)>0;

字段名小写加双引号
to_char转换成制定格式。
 select to_char(xmmc), 项目名称,dwmc "name" from desulfidation,

插入多条数据:
insert into imdt_role_permission ( 
     (select 3,5 from dual)
     union 
     (select 3,23 from dual)
     union 
     (select 3,30 from dual)
     union 
     (select 3,31 from dual)
     )
  )

delete from calm_role_permission where role_id=2 and permission_id between 1 and 12

查询列表最大数据记录方法:

<wiz_code_mirror>

 
 
 
 
 
select a.* from pc_evaluation_upload a where not exists(
select 1 from pc_evaluation_upload b where b.well_id=a.well_id and b.create_date >a.create_date) and  a.well_id ='0000000039';//两个字段不出现重复,时间相同时需要用distinct
select a.* from pc_evaluation_upload a inner join
 (select well_id,max(create_date) maxgdtime from pc_evaluation_upload group by well_id) b 
 on a.well_id=b.well_id and a.create_date=b.maxgdtime
 
 

你可以理解为  JOIN   是  INNER JOIN   的缩写。

LEFT JOIN  等价于   LEFT  OUTER   JOIN

RIGHT JOIN  等价于   RIGHT OUTER   JOIN,等价于from t1,t1 where t1.id =t2.id

 

 

having:

group by以后的where过滤。

1
2
3
查询字段出现两次以上的数据,也可用于在另一张表中
SELECT * FROM material_plan_ming a WHERE a.material_plan_id IN (
SELECT b.material_plan_id FROM material_plan_ming b 
GROUP BY b.material_plan_id HAVING COUNT(b.material_plan_id)>1);

distinct和group by去重区别:

即只有所有指定的列信息都相同,才会被认为是重复的信息。

单纯的去重操作使用distinct,速度是快于group by的。

group by使用的频率相对较高,但正如其功能一样,它的目的是用来进行聚合统计的,虽然也可能实现去重的功能,但这并不是它的长项

group by 的优势是可以包含一个聚合函数,最大值,max,min,sum等。

不包含聚集函数的GROUP BY操作来说,和DISTINCT操作是等价的

1
2
3
4
5
6
7
SELECT DISTINCT a.key_id a.well_id,a.barrier_type_id FROM pc_evaluate_wellhead a WHERE a.well_id='0000000206'
 
select e.well_id,e.barrier_type_id from pc_evaluate_wellhead e group by e.well_id,e.barrier_type_id
 
SELECT DISTINCT well_id FROM pc_evaluate_wellhead;
 
SELECT well_id, COUNT(well_id) from pc_evaluate_wellhead group BY well_id;

 

行转列,group分组查询,逗号隔开:

select con_basis_id, sum(con_amount) from contract_basis_pro group by con_basis_id;

select LISTAGG(to_char(pro_name),',') WITHIN GROUP( ORDER BY con_basis_id) pro_name,con_basis_id from contract_basis_pro group by con_basis_id;

select con_basis_id,to_char(wm_concat(pro_name)) pro_name,to_char(wm_concat(con_amount)) con_amount,to_char(wm_concat(remark)) remark

from contract_basis_pro group by con_basis_id ;

select con_basis_id,wm_concat(to_char(pro_name)) pro_name,wm_concat(to_char(con_amount)) con_amount,wm_concat(to_char(remark)) remark from contract_basis_pro group by con_basis_id ;

wm_concat(toto)over(partition by ename order by type)

行转列排序问题:

1
2
3
SELECT con_basis_id, max(pro_id) pro_id FROM(SELECT con_basis_id,
to_char(wm_concat(to_char(pro_id)) over (partition by con_basis_id order by ID)) pro_id
FROM contract_basis_pro  ) GROUP BY con_basis_id

列转行:

select REGEXP_SUBSTR(a.file_url ,'[^,]+',1,l) as file_url

from reply_file a,

(SELECT LEVEL l FROM DUAL CONNECT BY LEVEL<=100) b

WHERE l <=LENGTH(a.file_url) - LENGTH(REPLACE(file_url,','))+1;

查询有重复的语句:(having 对group后的组进行过滤,筛选。某些条件可用where替换)

select * from pro_bas_info where pro_code in (select pro_code from pro_bas_info group by pro_code having COUNT(*)>1);

select well_id, max(create_date) maxgdtime from pc_evaluation_upload group by well_id HAVING count(*) > 2

分页查询:(第二种方式效率较高)

SELECT a.*, ROWNUM RN FROM (SELECT * FROM mp_fs_file_info ORDER BY R_CREATEDATE DESC) a

WHERE  ROWNUM BETWEEN 0 AND 4;

SELECT * FROM (

SELECT a.*, ROWNUM RN FROM (SELECT * FROM mp_fs_file_info ORDER BY R_CREATEDATE DESC) a

WHERE  ROWNUM <=4) b

WHERE RN > 0;

IN和EXISTS的用法和区别:

exists : 强调的是是否返回结果集,不要求知道返回什么

in 最大的区别在于 in引导的子句只能返回一个字段

select a.* from contract_basis a where exists(select 1 from signed_file b where a.id = b.con_basis_id); //查询在另一张表中有数据,有附件。

select a.* from contract_basis a where a.id in (select b.con_basis_id from signed_file b where a.id = b.con_basis_id);

DELETE FROM contract_basis_pro t1 WHERE NOT EXISTS (SELECT 1 FROM pro_bas_info t2 WHERE t1.pro_id = t2.pro_code); 查询在另一张中不存在的段。

按排序取出第一条数据:

with ti as (SELECT ID,MK_NO FROM (SELECT ID,MK_NO FROM MP_APP_DEPT WHERE PID = 'JGZNBM')

WHERE mk_no>'020202'  order by mk_no)

select * from ti where rownum =1;

按排序取出第一条数据:

SELECT a.key_id,b.file_id FROM dm_process_upload a,mp_fs_file_info b WHERE a.attachment =  b.file_id(+) ;

select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') d1 from dual;

to_date('2010-02-24 15:01:54','YYYY-MM-DD HH24:MI:SS')

select sysdate d1,trunc(sysdate) d2 from dual;//只要日期部分

select sysdate d1,EXTRACT(YEAR FROM sysdate) thisyear//日期的部分YEAR、MONTH,DAY、HOUR、MINUTE、SECOND

select date'2017-12-29'-a.branch_declare_date from special_evaluation a;

正则表达式:

SELECT * FROM pay_info WHERE 1=1 ORDER BY to_number(regexp_replace(doc_no, '[^0-9]')) DESC;//to_number的用法。

SELECT  regexp_replace('20322323-07', '^[0-9]') FROM dual;

select regexp_replace('XX路1001弄12幢102室', '\d+幢', '') from dual 可取消第三个参数

sql字段为空则替换:

SELECT t.task_id,t.process_id,to_number(nvl(t.task_id,0))+to_number(nvl(t.process_id,0)) FROM material_plan t;

replace与translate都是替代函数:

select translate('abcdcefga','abc','wo') 返回值 from dual;//wodefgw

SELECT Replace('abcdcefga','abc','wo') 返回值 FROM dual;//wodcefga

只不过replace针对的是字符串,而translate针对的是单个字符,没有出现的,如‘c’也删除。

Union和Union All的区别:

1、Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

2、Union All,对两个结果集进行并集操作,包括重复行,不进行排序;3、都是取select后的字段名作为统一字段名,union后的字段按顺序组合即可。

清除字段中有空格的字段:

select REPLACE(report_no, ' ', '') from contract_basis;

update contract_basis set report_no=REPLACE(report_no, ' ', '');

查询时间fan范围:

sysdate+1就是加一天
如果要加一小时的话就是sysdate+1/24
如果要加一分钟的话就是sysdate+1/24/60

--数据恢复:(delete闪回,drop回收站)
select *  from user_recyclebin;--查询回收站内容

flashback table 要恢复的表名 to before drop;--恢复表

flashback table 表A to before drop rename to 表B;--从回收站恢复时重命名表(把表A重新恢复命名为表B)

1、 insert into 表名 (select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss'));-- 注意要保证主键不重复。

2、

--开启行移动功能

·alter table 表名 enable row movement

--恢复表数据
 ·flashback table 表名 to timestamp to_timestamp(删除时间点','yyyy-mm-dd hh24:mi:ss')

--关闭行移动功能 ( 千万别忘记 )

·alter table 表名 disable row movement

Oracle数据常用操作的更多相关文章

  1. Oracle:常用操作(定时作业,逻辑导入,数据泵导入)

    1.逻辑导入: /*第1步:创建临时表空间 **/ create temporary tablespace user_temp1 tempfile 'D:\app\Administrator\orad ...

  2. Oracle 数据库常用操作语句大全

    一.Oracle数据库操作 1.创建数据库      create database databasename 2.删除数据库      drop database dbname 3.备份数据库 完全 ...

  3. python大规模数据处理技巧之一:数据常用操作

    面对读取上G的数据,python不能像做简单代码验证那样随意,必须考虑到相应的代码的实现形式将对效率的影响.如下所示,对pandas对象的行计数实现方式不同,运行的效率差别非常大.虽然时间看起来都微不 ...

  4. Excel数据常用操作,vlookup,text,trim,数据格式导致出错

    数据有缺漏,需要在数据前面补零 =TEXT(F70,"000000") 前面是要操作的数据,后面是补几位 匹配数据(将一个表格中的数据进行匹配) =VLOOKUP(C2,aaa,4 ...

  5. oracle数据库维护常用操作

    查看用户相关信息 查看数据库里面所有用户,前提是你是有dba权限的帐号,如sys,system select * from dba_users; 查看你能管理的所有用户! select * from ...

  6. oracle数据库常用操作语句 、创建视图

    新增字段:alter table 表名 add (NAME VARCHAR(12), NAME NUMBER(10) );--如果添加单个字段可以不用括号包起来,例如 alter table cust ...

  7. 【Spark】DataFrame关于数据常用操作

    文章目录 DSL语法 概述 实例操作 SQL语法 概述 实例操作 DSL语法 概述 1.查看全表数据 -- DataFrame.show 2.查看部分字段数据(有4种方法)  (1) DataFram ...

  8. Oracle数据常用的备份与恢复?

    Oracle的备份与恢复有三种标准的模式,大致分为两大类,备份恢复(物理上的)以及导入导出(逻辑上的),而备份恢复又可以根据数据库的工作模式分为非归档模式(Nonarchivelog-style)和归 ...

  9. 使用MSSQL,连接oracle,对oracle数据进行操作

    EXEC sp_addlinkedserver--创建链接服务器.链接服务器让用户可以对 OLE DB 数据源进行分布式异类查询. @server = 'Mktg',--要创建的链接服务器的名称.s ...

随机推荐

  1. 10.【nuxt起步】-引用mintui

    这时候我们完成了list.vue,但是怎么返回index.vue,这时候需要这个头部返回 1.我们使用现成的minu-ui,eleme的开源移动端 ,参考 https://www.cnblogs.co ...

  2. const mutable

    在C++中,由const修饰的成员函数的函数体内部,是不能够对成员变量进行修改的.这个特性被用来保证某些成员函数在实现过程中,避免由于程序员大意而对数据进行了错误的修改:同时也说明此成员函数是非修改性 ...

  3. PS 如何使用抽出滤镜抠人物的头发丝等细节

    1.打开图片,复制背景,关闭背景眼睛.单击 滤镜 -抽出, 我们要学会观察图片,先来看下面这张图: 这张图片色彩虽然不算丰富,但也不是纯色背景,甚至有些许的零乱,但人物的主题却被黑色长发包围, 我们只 ...

  4. 笔记12 export to excel (NPOI)

    1:filestream 熟悉关于文件操作 ==>fs.Seek(0, SeekOrigin.Begin);//每次打开文件, ==>若果重写覆盖的话,必须先清空 fs.SetLength ...

  5. python--函数程序分析

    写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作 import os #加载模块 def xiu(a,b,c): #三个接受值的形参 f = open(a,encod ...

  6. C++算法之 一句话推断一个整数是不是2 的整数次方

    思路:一个整数假设是2的整数次方,那么它的二进制表示中有且仅仅有一位是1,而其它全部位都是0.把这个整数与这个整数减去1之后进行与运算.那么这个整数其中唯一的 1会变为0,这个整数也变为0: 代码: ...

  7. Openlayers中layer介绍

    1.base layers & overlay layers base layer:最底层的layer,其它的图层是在他之上,最先增加的图层默认作为base layer. overlay la ...

  8. 升级svn 到1.7

    sudo yum update sudo yum groupinstall "Development tools" sudo yum groupinstall "Addi ...

  9. ACM-BFS之Open the Lock——hdu1195(双向BFS)

    这道题的0基础版本号,暴力BFS及题目详情请戳:http://blog.csdn.net/lttree/article/details/24658031 上回书说道,要用双向BFS来尝试一下. 最终A ...

  10. 让EasyDarwin只支持RTP over TCP传输

    我们经常需要EasyDarwin服务器支持公网流媒体传输,但很多时候,播放器默认都是通过RTP over UDP的形式在RTSP SETUP中请求,往往都以在内网接收不到UDP数据失败结束,那么我们如 ...