User Tools

Site Tools


oracle开发

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 = '<owner_name>';

查询用户所有字段的注释

SELECT * FROM all_col_comments WHERE owner = '<owner_name>';

查询所有约束

参考:ALL_CONSTRAINTS

SELECT * FROM all_constraints WHERE constraint_name = '<constraint_name>';

Oracle的几个坑

与Hibernate共用时,数据库中插入的自动生成的值与sequence的当前值差别很大

Hibernate默认allocationSize为50,这样会每次取50个id作为缓存,如果服务器重次,则再取50个,而sequence在项目中每次缓存20,会插入数据库的值与sequance的值会有差别。详见更多资料

Null的判断

语句中不能用=, !=判断是否为null,而需要使用is null或is not null

排序字段值不唯一导致随机乱序

Order By时,如果排序字段的值不唯一,需要加上一个唯一值字段作为第二排序依据,否则可能会导致分页时,字段值相同的数据出现的位置不固定,导致有些部分数据在不同页面重复出现,另外有部分数据不能显示

Oracle修改自增长ID字段初始值

参考: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);
oracle开发.txt · Last modified: 2023/03/08 16:09 by xujianglong