oracle常用语句整理

来源:互联网 发布:js 多时区夏令时切换 编辑:程序博客网 时间:2024/06/05 08:05

1,导入导出

     1,在运行(win+r)中直接exp命令根据提示导出(导入相似imp)

     2,exp  用户名/密码@本地监听实例名 file=路径.dmp buffer=8192 full=n log=路径.log

           imp 用户名/密码@本地监听实例名 file=路径.dmp buffer=8192 full=n log=路径.log

       (导入时的表空间必须和导出时表空间名称相同否则导入不全)

1.删除表中某一列
   alter table tablename(表明) drop column columnname(列名).
2.截取字符串
   substr(string,n,m)     
   string   字符窜,   
   n           截取开始位置   
   m           取几位。
3.把字符串转化为数字类型
  to_number('123')=123;
4.把数字类型转化为字符串
  to_char(123)='123'
5.oracle 中的字符连接用||。
6.oracle 中赋值用:=,判断是否相等用=.
7.获取字符串中某个字符的位置instr('abc@a','@');
8.根据年和月份获得当前季度的sql语句:select to_char(to_date(concat('2010','8'),'yyyymm'),'Q')  from dual或者知道年月拼成
 的字符串时直接用select to_char(to_date('201008','yyyymm'),'Q')  from dual
9.CONCAT() 的语法如下:
  CONCAT(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起
10.oracle中进行大小写转化
  select upper('abc') from dual;
  select lower('ABC') from dual;
11.union 或union all 是纵向连接,union是进行排序的效率低,union all 不进行排序效率比较高.
12.left join (左连接) 是横向连接的.
13.删除表中重复的记录(多个字段的)
  delete from vitae a
  where (a.peopleId,a.seq) in   (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
  and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
14.如果根据rownum来更新表中的收据,使用如下的sql语句
   update tab_test a set a.id='1' where a.rowid in (select r from (select t.*,rownum rn,rowid r from tbl_test) where rn>1000 and rn<2000);
   其中1000和2000为更新数据的范围.之所以用rowid因为他在oracle中表示某行数据的唯一标识,即存在数据库中的物理地址.
   如果根据rownum来删除数据,用法基本和上面的一样.就是把update换成delete就OK了.
15.oracle 中解决百分比问题的sql语句
   SELECT DECODE (TRUNC (1/100),0, REPLACE (1/100, '.', '0.'),TO_CHAR (1/100)) FROM DUAL;
   只要在1/100的地方替换成自己需要的百分数就可以了。
   DECODE(TO_CHAR(MOD(a.percnt, 1)),   
               '0.00',   
               TO_CHAR(a.percnt * 100) || '%',   
               TO_CHAR(ROUND(a.percnt * 100, 2), '99990.00') || '%')
  只要在a.percnt的地方替换成自己需要的百分数就可以了。
16. oracle 存储过程打印错误信息
    dbms_output.put_line(substr(sqlerrm,0,200));
17.在一个内在的异常中,SQLCODE返回Oracle错误的序号,而SQLERRM返回的是相应的错误消息,错误消息首先显示的是错误代码。
18.当truncate 一张表遇到ora-02266时
   先执行alter table 表名 disable primary key cascade;再turncate接下来在执行  alter table 表名enable primary key

19.oracle case when的用法
SELECT col1, col2,
       CASE
          WHEN col3 > 1 AND col3 <2
             THEN '1'
          WHEN col3 > 2 AND col3 <3
             THEN '2'
          WHEN col3 > 3 AND col3 <4
             THEN '3'
          ELSE '4'
       END mylevel
FROM table1

注意点:
1、以CASE开头,以END结尾
2、分支中WHEN 后跟条件,THEN为显示结果
3、ELSE 为除此之外的默认情况,类似于高级语言程序中switch case的default,可以不加
4、END 后跟别名

20. 根据索引查找表名
    select * from user_ind_columns where index_name = '***'




原创粉丝点击