Oracle PL/SQL编程规范指南

发表于:2012-03-02来源:Csdn作者:xuyubotest点击数: 标签:oracle
Oracle中常用的命令和函数,做个整理,以备以后用到,方便查阅。 常用命令: 连接sqlplus

  Oracle中常用的命令和函数,做个整理,以备以后用到,方便查阅。

  常用命令:

  连接sqlplus

  命令行下运行cmd进入,如以sys模式登陆,命令如下:

  (1).sqlplus "sys/zhb126 as sysdba"

  (2).sqlplus/nolog connect sys/zhb126 as sysdba

  (3).sqlplus scott/tiger

  启动数据库实例

  startup --启动数据库的同时启动控制文件、数据文件

  startup mount --启动数据库的同时启动控制文件、不启动数据文件

  startup nomount --仅启动数据库实例,用于控制文件丢失情况,此时控制文件无法启动

  关闭数据库实例

  shutdown --正常关闭(等待所有用户断开连接后才能关闭)

  shutdown immediate--建议使用(迫使用户执行当前SQL后立即断开连接)

  shutdown transactional--(迫使在当前用户执行完后立即断开连接)

  shutdown abort--强制关闭(类db2的db2 stop force)

  查看日志归档方式--用startup mount启动数据库

  archive log list

  ALTER DATABASE archivelog

  ALTER DATABASE OPEN

  查看sqlplus支持的命令

  help INDEX

  解除用户锁

  以安装oracle时第一步设置的用户口令登陆(如:sqlplus "sys/zhb126 as sysdba")后执行

  alter user scott account unlock;

  然后执行sqlplus scott/tiger,此时会要求你修改scott的新口令。

  设置命令行支持空格

  set sqlblanklines on

  变量替代--变量替换,这个过程只安排一个执行计划,可提高执行效率

  SQL> select * from dept where deptno = &t;

  输入 t 的值: 10

  原值 1: select * from dept where deptno = &t

  新值 1: select * from dept where deptno = 10

  查看缓冲器执行过的命令 (list/l)

  SQL> l

  1* select * from dept where deptno = &t

  SQL> l1

  1* select * from dept where deptno = &t

  缓冲区文件的保持、执行

  SQL> save d:/test.sql --保存缓冲区文件到指定文件中

  已创建 file d:/test.sql

  SQL> @d:/test.sql --执行保存文件的SQL

  查看表结构(describe/desc)

  SQL> desc dept

  保存查询输出结果

  SQL> spool D:/spool.txt --开启spool并指定保存路径

  SQL> / --执行缓冲区的sql语句

  SQL> spool off --关闭spool

  SQL> edit d:/spool.txt --打开文件查看保存内容

  常用函数:

  sysdate为系统日期 dual为虚表

  日期函数[重点掌握前四个日期函数]

  1.add_months[返回日期加(减)指定月份后(前)的日期]

  select sysdate S1,add_months(sysdate,10) S2,

  add_months(sysdate,5) S3 from dual;

  2.last_day [返回该月最后一天的日期]

  select last_day(sysdate) from dual;

  3.months_between[返回日期之间的月份数]

  select sysdate S1, months_between('1-4月-04',sysdate) S2,

  months_between('1-4月-04','1-2月-04') S3 from dual

  4.next_day(d,day): 返回下个星期的日期,day为1-7或星期日-星期六,1表示星期日

  select sysdate S1,next_day(sysdate,1) S2,

  next_day(sysdate,'星期日') S3 FROM DUAL

  5.round[舍入到最接近的日期](day:舍入到最接近的星期日)

  select sysdate S1,

  round(sysdate) S2 ,

  round(sysdate,'year') YEAR,

  round(sysdate,'month') MONTH ,

  round(sysdate,'day') DAY from dual

  6.trunc[截断到最接近的日期]

  select sysdate S1,

  trunc(sysdate) S2,

  trunc(sysdate,'year') YEAR,

  trunc(sysdate,'month') MONTH ,

  trunc(sysdate,'day') DAY from dual

  7.返回日期列表中最晚日期

  select greatest('01-1月-04','04-1月-04','10-2月-04') from dual

  字符函数(可用于字面字符或数据库列)

  1.字符串截取

  select substr('abcdef',1,3) from dual

  2.查找子串位置

  select instr('abcfdgfdhd','fd') from dual

  3.字符串连接

  select 'HELLO'||'hello world' from dual;

  4. 1)去掉字符串中的空格

  select ltrim(' abc') s1,

  rtrim('zhang ') s2,

  trim(' zhang ') s3 from dual

  2)去掉前导和后缀

  select trim(leading 9 from 9998767999) s1,

  trim(trailing 9 from 9998767999) s2,

  trim(9 from 9998767999) s3 from dual;

  5.返回字符串首字母的Ascii值

  select ascii('a') from dual

  6.返回ascii值对应的字母

  select chr(97) from dual

  7.计算字符串长度

  select length('abcdef') from dual

  8.initcap(首字母变大写) ,lower(变小写),upper(变大写)

原文转自:http://www.ltesting.net