====== 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);