Oracle知识积累

2019-04-14 17:42发布

只读视图

with read only

同义词对象

为 表、视图建立同义词, 避免直接访问 公有: 别的用户直接访问, 不用带模式名 create public synonym public_dept for scott.dept 私有: 别的用户必须带模式名访问 create synonym private_dept for dept; drop public synonym public_dept; drop synonym private_dept;

序列

drop sequence keyword_seq; CREATE SEQUENCE keyword_seq increment by 1 start with 1 CACHE 10000;

NULL

oracle认为 null 最大。
升序排列,默认情况下,null值排后面。
降序排序,默认情况下,null值排前面。
改变空值排序的办法:
(1)用nvl函数或decode函数将null转换为一特定值
替换null: nvl(arg,value)
(2)用case语法将null转换为一特定值(oracle9i以后版本支持。和sqlserver类似):
order by (case mycol when null then‘北京漂客’else mycol end)
(3)使用nulls first 或者nulls last 语法。
null值排序的语法 ``` select * from mytb order by mycol ASC/DESC nulls first/last ```

字符集

select userenv('language') from dual --查询编码
select lengthb('啊') from dual — 查看当前字符集汉字所占字节
一个汉字占用2个字节: SIMPLIFIED CHINESE_CHINA.ZHS16GBK 如果是以下字符集,一个汉字占用3个字节: SIMPLIFIED CHINESE_CHINA.AL32UTF8 Mysql也一样
不同的是mysql的varchar(100)默认是以字符计算的,而Oracle的varchar2是默认varchar2(100,byte)以字节计算的,而字符串函数substr是以字符计算的,substrb才是以字节计算的