====== PL SQL ======
====== Oracle常用查询语句 ======
===== 查询数据库/表/字段等属性 =====
select * from sys.user_tablespaces; --查询用户表空间
select * from sys.dba_data_files; --查询表空间对应的文件
select * from sys.user_tables; --查询用户数据库表
===== 查询用户的所有字段 =====
select * from all_tab_columns where owner = '';
===== 查询用户所有字段的注释 =====
select * from all_col_comments where owner = '';
===== 查询所有约束 =====
参考:[[https://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_1037.htm#i1576022|ALL_CONSTRAINTS]]
SELECT * FROM all_constraints WHERE constraint_name = '';
====== Oracle的几个坑 ======
===== 与Hibernate共用时,数据库中插入的自动生成的值与sequence的当前值差别很大 =====
Hibernate默认allocationSize为50,这样会每次取50个id作为缓存,如果服务器重次,则再取50个,而sequence在项目中每次缓存20,会插入数据库的值与sequance的值会有差别。详见[[http://blog.csdn.net/zgf19930504/article/details/54694807|更多资料]]
===== Null的判断 =====
语句中不能用=, !=判断是否为null,而需要使用is null或is not null
===== 排序字段值不唯一导致随机乱序 =====
Order By时,如果排序字段的值不唯一,需要加上一个唯一值字段作为第二排序依据,否则可能会导致分页时,字段值相同的数据出现的位置不固定,导致有些部分数据在不同页面重复出现,另外有部分数据不能显示
====== Oracle修改自增长ID字段初始值 ======
参考:[[https://stackoverflow.com/questions/32574084/oracle-how-to-change-the-next-autogenerated-value-of-the-identity-column|oracle12c - oracle how to change the next autogenerated value of the identity column - Stack Overflow]]
ALTER TABLE projects MODIFY project_id GENERATED BY DEFAULT ON NULL AS IDENTITY ( START WITH 150000);