◆Oracle有3种连接身份:
1.sysdba: 通称数据库管理员: 具有最高权限。可以对数据库胡搞瞎搞(打开/关闭数据库服务器, 备份/恢复数据库,日志归档,会话限制,管理功能,创建数据库)
2.sysoper: 通称数据库操作员。 比上面那个等级低些。只能对数据库动手动脚(打开/关闭数据库服务器, 备份/恢复数据库,日志归档,会话限制)
3.normal: 通称普通用户。权限少的可怜,只有查询某些数据表的数据。
◆如何输出一个带有小数点的数字。
select to_char(abs(3213213), decode(instr(to_char(abs('3213213')), '.'), 0, 'FM9,999,999,999,990', 'FM9,999,999,999,990.999999999')) as huja from dual;
上述的语句会判断如果是整数的时候,输出整数,而非整数的时候会输出小数点。
◆为一个表增加一个字段,并给与他一个新值,同时不破坏原有的值和结构
declare v_rowcount integer; begin select count(*) into v_rowcount from dual where exists( select 1 from all_tab_columns where owner = upper('owner_name') and table_name = upper('table_name') and column_name = upper('col_new_val') ); if v_rowcount = 0 then execute immediate 'alter table owner_name.table_name add col_new_val char(1) default '' '' NOT NULL'; execute immediate 'update owner_name.table_name set col_new_val = '0''; end if; end; /
◆日期,数字,显示格式的转换
##在开发中经常会遇到要存储日期,通常使用number型来保存数据
主要用到的转换为:将date类型的转换为number类型
select to_number(to_char(sysdate,'yyyymmdd')) as date_value from dual;
将number类型的转换为date类型(format要和转换数据的format一致,如这里是20150609 那么format就是yyyymmdd, 否则会出错)
select to_date(to_char(20150609),'yyyymmdd') as date_value from dual;
显示时间类型的格式转换,如20150609要显示成09-06-2015 (※to_date函数的format要注意和保持转换的数据一致)
select to_char(to_date('20150609','yyyymmdd'), 'dd-mm-yyyy') as date_value from dual;