《oralce使用资料整理》由会员分享,可在线阅读,更多相关《oralce使用资料整理(6页珍藏版)》请在金锄头文库上搜索。
1、1、oracle开展分组后,取出每组的前几条数据解决方法:SELECT * FROM (SELECT 分组的字段名, ROW_NUMBER() OVER (PARTITION BY 分组的字段名ORDER BY 排序的字名) AS RN FROM 表名) WHERE RN = 10 2、oracle中的排名函数用法解决方法:rank,dense_rank,row_number,以及分组排名partitionrank:排名会出现并列第n名,它之后的会跳过空出的名次,例如:1,2,2,4dense_rank:排名会出现并列第n名,它之后的名次为n+1,例如:1,2,2,3row_number:排名
2、采用唯一序号连续值,例如1,2,3,4partition:将排名限制到某一分组格式:row_number() over(partition by bb.channel_name order by sum(aa.dk_serv_num) desc nulls last) p1_rank1,row_number() over(order by sum(aa.dk_serv_num) desc nulls last) rank1,dense_rank() over(order by nvl(sum(aa.dk_serv_num), 0) desc) rank2,rank() over(order b
3、y sum(aa.dk_serv_num) desc nulls last) rank3例:select * from (select s.shav_working, s.shav_working_name, p_name, p_orgcode, sum(s.shav_wfqts) shav_wfqts, ROW_NUMBER() OVER(PARTITION BY s.shav_working ORDER BY sum(s.shav_wfqts) desc) AS rn, -每组的前N条 dense_rank() over (PARTITION BY s.shav_working ORDER
4、 BY sum(s.shav_wfqts) desc) orderbynum -每组的前名(排名) from st_wfqt_comp w, view_st_wfqt_staff s, dc_comp c where w.chav_id = s.chav_id and p_id = p_id group by p_name,p_orgcode,s.shav_working,s.shav_working_name order by s.shav_working asc,shav_wfqts desc) where rn select to_char(vcl),replace(to_char(vc
5、l),chr(10),) from test_1;5、删除oracle用户:drop user 用户名 cascade;cascade参数是级联删除该用户所有对象,经常遇到如用户有对象而未加此参数则用户删不了的问题,所以习惯性的加此参数6、查看oracle所有用户:Select username from dba_users;7、Oracle 11g 导出空表、少表解决办法ORACLE 11G中有个新特性,当表无数据时,不分配segment,以节省空间解决方法:1、insert一行,再rollback就产生segment了。该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导
6、出空表。2、设置deferred_segment_creation 参数查看属性show parameter deferred_segment_creation 的值:修改属性:alter system set deferred_segment_creation=false; 再次查看:show parameter deferred_segment_creation 该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。如需导出之前的空表,只能用第一种方法。先查询一下当前
7、用户下的所有空表select table_name from user_tables where NUM_ROWS=0;用以下这句查找空表select alter table |table_name| allocate extent; from user_tables where num_rows=0;把查询结果导出,执行导出的语句最后再执行exp 用户名/密码数据库名 file=/home/oracle/exp.dmp log=/home/oracle/exp_smsrun.log成功!8、导出、导入数据库用户或表oracle 的exp/imp命令用于实现对数据库的导出/导入操作; exp命
8、令用于把数据从远程数据库服务器导出至本地,生成dmp文件; imp命令用于把本地的数据库dmp文件从本地导入到远程的Oracle数据库中。数据导出:1 将数据库SampleDB完全导出,用户名system 密码manager 导出到E:/SampleDB.dmp中 exp system/managerTestDB file=E:/sampleDB.dmp full=y2 将数据库中system用户与sys用户的表导出 exp system/managerTestDB file=E:/sampleDB.dmp owner=(system,sys)3 将数据库中的表 TableA,TableB 导
9、出 exp system/managerTestDB file=E:/sampleDB.dmp tables=(TableA,TableB)4 将数据库中的表tableA中的字段filed1 值为 王五 的数据导出 exp system/managerTestDB file=E:/sampleDB.dmp tables=(tableA) query= where filed1=王五 如果想对dmp文件进行压缩,可以在上面命令后面 加上 compress=y 来实现。数据的导入1 将备份数据库文件中的数据导入指定的数据库SampleDB 中,如果 SampleDB 已存在该表,则不再导入; im
10、p system/managerTEST file=E:/sampleDB.dmp full=y ignore=y2 将d:/daochu.dmp中的表table1 导入imp system/managerTEST file=E:/sampleDB.dmp tables=(table1)3. 导入一个完整数据库imp system/manager file=bible_db log=dible_db full=y ignore=y4. 导入一个或一组指定用户所属的全部表、索引和其他对象imp system/manager file=seapark log=seapark fromuser=se
11、apark impsystem/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)5. 将一个用户所属的数据导入另一个用户imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copyimp system/manager file=tank log=tank fromuser=(seapark,amy)touser=(seapark1, amy1)6. 导入一个表imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)7. 从多个文件导入imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)log=paycheck, filesize=1G full=y8. 使用参数文件imp system/manager parfile=bible_tables.parbible_tables.par参数文件:#Import the sample tables