一、ORACLE快速查询数据SQL语句?
单条匹配,没有索引也不准备建索引。
只能靠并发来加快检索速度,最快的语句应该是:select /*+ full(A) parallel(A,10) */ * from A where b=c;理由有2:full table scan 时,oracle会一次读出多个block加快速度parallel指定并发10线程检索,当然如果允许,你指定20也可以。最好等于CPU个数。不过还是建议在b列上建索引,这是最好的办法。二、oracle数据库求差值的sql语句?
with t1 as (select shuzi,riqi,rownum as rnfrom (select shuzi,riqifrom Aorder by 2) t)select p.shuzi-nvl(m.shuzi,0) as new_shuzi,p.riqifrom t1 pleft join t1 m on p.rn-1=m.rn;你看下这个结果
三、oracle通过sql语句备份数据库?
oracle没有sql语句备份,只有exp导出或者RMAN备份,都不是sql,RMAN是标准的数据块备份,前提要求是数据库一定要开启归档,然后才可以进行RMAN备份,这个方法对数据量大的数据库可以使用,速度会比较快,具体方法可以从网上查,不是很难,但比较繁琐,还有一个exp导出,这个是直接将数据库内的表直接导出城dmp文件,具体的语法是exp user/password@DBSID file=D:\备份目标文件夹\文件名.dmp log=D:\备份目标文件夹\文件名.log owner=用户名上述语句是需要在cmd命令行下执行的,如果想导出哪个用户就可以导出哪个用户,只要能用sql语句连接到数据库就可以使用,不管在哪个机器
四、oracle中怎么导出sql语句?
可通过PL/SQL来进行导出:
1、登录PL/SQL到指定数据库。
2、点击上方工具栏的工具—导出表。
3、摁住键盘的ctrl键,选择要导出的表名(即多选)。
4、然后勾选下方的“创建表”,选择存放路径及保存的文件名,然后点击“导出”按钮,等待完成即可。
五、oracle这个SQL语句over用法?
over是用于数据的分区和排序,常用在函数后边使用例如:
createtableover_eg(row1int,row2int)
;declare@intint;set@int=1;while@int<=50begininsertintoover_egvalues(@int,@int%5)
;set@int=@int+1;endgo--按照row2进行分区,找出每个区里边最小的值selectmin_row1=min(row1)over(partitionbyrow2),row2fromover_eg;
六、oracle insert二进制数据 sql语句怎么写?
插入数据分为两种情况,一种是用insert into ...values 的语法,一种是用insert into select ...的语法。 举例: 如test表中有如下数据: 插入一条id为6,name为杨七的数据。 1 2 insert into test values (6,'杨七'); commit; 此时表中数据为: 另,要求向表中复制一条目前表中id为1的数据,可用如下语句: 1 2 insert into test select * from test where id=1; commit; 此时表中数据为: 注意:在执行insert语句后,必须提交,即commit,否则插入结果只在当前session有效,重新开启另外的session会插入不成功。
七、oracle 插入二进制数据sql语句怎么写?
oracle数据库喜欢搞特殊,二进制字段数据不能直接插入,需先再该字段插入oracle函数返回的的初始数据,然后在查询更新该字段。下面以Blob字段类型为例:
1.插入初始数据
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection cn= DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.5:1521:orcl", "qywsbspt", "qywsbspt123999");
cn.setAutoCommit(false);
PreparedStatement pst = cn.prepareStatement("insert into t_uploadfile (file_id,file_content) values (?,EMPTY_BLOB())");
pst.setObject(1,8888);
pst.excuteUpdate();
2.查询更新该字段
pst = cn.prepareStatement("select file_content from t_uploadfile for updatewhere file_id = ? ");
pst.setObject(1,8888);
ResultSet rs = pst.excuteQuery();
BLOB blob = null ; //不是java.sql.Blob,而是oralce.sql.BLOB
if(rs.next())
blob = (BLOB)rs.getBlob(1); //获取该字段
OutputStream os =blob.getBinaryOutputStream(); //打开操作该字段的流
InputStream is = ...... //获取要插入的二进制文件的输入流
int buffer = -1;
while((buffer = is.read())!=-1){
os.write(buffer);
}
is.close();
os.close();
cn.commit();
rs.close();
pst.close();
cn.close();
八、sql数据怎么转到ORACLE里?
可以参考如下解决方法:
1利用某个工具将数据导出成txt文件(里面的内容类似insetintotablevalues();形式)。这个步骤也有讲究。有两个方案:
1)直接从这个大表中一个id一个id的导出数据。
2)先采取createtablet_idnameasselect*fromsouce_tablewhereid=1;的形式建立15000个id表。然后直接一个表一个表的导出数据。
优点是:导出的时候速度快,目标清晰,出错了容易处理。
缺点:前期准备工作很多。得考虑磁盘空间等。2导出文件的处理。因为sqlserver和oracle的一些数据类型不同,一些关键字也不同。需要对导出文件进行处理。
(如果导出工具支持的话,可以直接在导出工具中设置进行处理,兼并到第一步中去)3导入。没什么好说的,采用oracle的sqlload工具即可。
另外还可以在sqlserver里建立dblink,连oracle然后,就在sqlserver方,用sql把数据转到dblink连着的数据库里。
九、oracle sql调换两列数据?
这个简单: select case when (syddm=1 and id=1) or (syddm=2 and id=2) then id else syddm as syddm_t, case when (syddm=1 and id=1) or (syddm=2 and id=2) then id else syddm as id_t from table_t; 你的问题不太明确,我只能是假设你的要求是,当syddm、id条件满足你所列出的任意条件时,原syddm列显示id值,原id列显示syddm值。
所以我的解决思路是使用case when来处理,当满足你的两个条件中的任意时,交换两列值。十、oracle执行sql语句的三大池五大进程?
数据共享池、SQL共享池、私有池,系统监视SMOM、程序监视PMON、检查点等进程。