`
liuguxing
  • 浏览: 92870 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ORACLE常用的一些语句

阅读更多
有点乱,将就看吧
1、收回用户权限:Invoke dba from user
2、查看数据库的归档模式:select name,log_mode from v$database
3、逐步启动数据库:
   1、sqlplus   /nolog  
   2、conn sys/aaaaaa as sysdba
   3、start nomount
   4、start mount
   startup可以直接启动数据库
4、为表空间添加数据文件
alter tablespace sysaux add datafile 'f:/oracle/datafile/sysaux02.dbf' size 2G reuse;
5、表空间空间不足时,会导致oracle自动关闭,偶尔会启动失败,增加表空间数据文件就OK
6、时间运算:
1/24代表一个小时,1/1440代表一分钟,1/86400代表一秒钟
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

Session altered.

SQL> select sysdate, sysdate+1/24, sysdate +1/1440, sysdate + 1/86400 from dual;

SYSDATE            SYSDATE+1/24        SYSDATE+1/1440      SYSDATE+1/86400
------------------- ------------------- ------------------- -------------------
2008-04-16 21:23:19 2008-04-16 22:23:19 2008-04-16 21:24:19 2008-04-16 21:23:20

SQL> select sysdate,sysdate + 60/(24*60*60) from dual;

SYSDATE            SYSDATE+60/(24*60*6
------------------- -------------------
2008-04-16 21:24:40 2008-04-16 21:25:40
求日期:
select convert(char(10),getdate(),20) from dual
select trunc(sysdate) value from dual
select to_char(sysdate,'yyyy-mm-dd') value from dual
求时间:
select to_char(sysdate,'hh24:mm:ss') value from dual
当月最后一天:
select LAST_DAY(sysdate) value from dual
本星期的某一天(比如星期日):
SELECT Next_day(sysdate,7) vaule FROM DUAL;
得到本周的某一天,sysdate必须小于要查询的日期,比如今天是周二,Next_day(sysdate,2),得到的是下一个周二的日期,查询周三则得到正确值
7、初始化参数replication_dependency_tracking = FALSE,重建数据库。


修改表的一些常用语法
  添加列:alter table hek_test_headers add col_test number;
  修改列:alter table hek_test_lines modify litem varchar(40) not null;
  删除列:alter table hek_test_lines drop columns col_test;
  重命名列:alter table hek_test_lines rename column col_test to col_test2;
  添加主键:alter table HEK_TEST_LINES add constraint pk_test primary key (LINEID);
  添加外键:alter table hek_test_lines add constraint fk_test foreign key(hid) references hek_test_headers(hid)
  失效主键:alter table hek_test_lines disable constraint pk_test;
  失效外键:alter table hek_test_lines disable constraint fk_test;
  删除主键:alter table hek_test_lines drop constraint pk_test cascade;
删除外键:alter table HEK_TEST_LINES drop constraint fk_test;

舍入函数
  三个舍入函数:round()、floor()、ceil()
  Round():实现四舍五入,允许设置保留的位数,这个也最常用的四舍五入函数。
  Floor():实现取整。一般的程序语言是整数除以整数,返回的仍是整数。PL/SQL想得比较多。
  Ceil():实现近似值。Ceil会直接近似取整,如果想保留小数,就要自己动手写个函数了。
  select 9/4 from dual;
  select CEIL(9/4) from dual;
  select round(9/4,0) from dual;
实现类似BREAK语句
  在没有LOOP…END LOOP时,是不能使用EXIT的。但可以通过GOTO语句实现。
Connect by
Oracle层次树是通过Connect by [条件] Start with [条件] 来实现。这一功能非常好用,比如ERP中的BOM、HR中的组织架构,就算是这类的典型应用了。不过,Oracle EBS11i中好象没实现,BOM也没有使用树这种组件。
从'999999877'开始,查询其父部门,直到顶层
select level,t.* from emp t connect by prior t.pid=t.id start with t.id='999999877'
从'999999877'开始,查询其子部门,直到底层
select level,t.* from jivegroup t connect by prior t.id=t.id start with
t.id='999999877'

ORACLE的PL SQL通过exec immediate执行DDL语句,如创建表,经常用类似这样的语句:exec immediate 'create table emp1 as select * from EMP',注意表名EMP必须大写,不然找不到表,但这样创建的表没有主键、索引等约束,也可以用exec immediate给新表加上索引
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics