oracle用户表结构、主键、非空查询

    技术2022-05-19  20

    user_tab_columns用户表字段信息,包括table_name,column_name,datatype,datalength,datascale等。

    user_tab_comments用户表描述,包括table_name,tabletype(table,view...),comments。

    user_col_comments用户表字段描述,包括table_name,column_name,comments。 user_tab_cols用户表和字段的关系表。

    user_constraints用户表约束表,包括table_name,constraint_name,index等

    User_Cons_Columns用户表字段和约束关联表,包括table_name,constraint_name,column_name等。

    all_indexes索引表,包括index_name,unique等。

    all_ind_columns索引和字段关联表

    col字段表,包括column_name,isnullable,table_name等。

    user_objects用户对象表,包括object_type(view,table,index),object_name等。

     

    (1)查询唯一

    select * from all_indexes g   inner join all_ind_columns a on g.INDEX_NAME = a.INDEX_NAME   and g.UNIQUENESS = ''UNIQUE''   where a.TABLE_NAME = 'TB'

    (2)查询主键

    select * from user_cons_columns e   inner join user_constraints f on e.TABLE_NAME = f.TABLE_NAME   and f.CONSTRAINT_TYPE = ''P''   where e.TABLE_NAME='TB'

    (3)查询约束

    select * from user_cons_columns a, user_constraints b

     where a.constraint_name = b.constraint_name and a.table_name = upper('tb')

    (4)查询表结构

     select a.table_name TableName,a.COLUMN_NAME FieldName, case when   exists(select h.COLUMN_NAME from all_indexes g   inner join all_ind_columns h on g.INDEX_NAME = h.INDEX_NAME   and g.UNIQUENESS = 'UNIQUE'   where a.COLUMN_NAME = h.COLUMN_NAME and h.TABLE_NAME = a.TABLE_NAME )   then '1'     else '0'      end FieldIsIdentity, case when   exists(select e.COLUMN_NAME from user_cons_columns e   inner join user_constraints f on e.TABLE_NAME = f.TABLE_NAME   and f.CONSTRAINT_TYPE = 'P'   where e.TABLE_NAME=a.TABLE_NAME and a.COLUMN_NAME = e.COLUMN_NAME)   then '1'     else '0'      end FieldIsPrimary, a.DATA_TYPE FieldType, a.DATA_LENGTH FieldLength,   a.DATA_PRECISION FieldPrecision,   a.DATA_SCALE FieldScale  from user_tab_columns a, user_constraints b, user_cons_columns c,user_tab_comments d  where b.CONSTRAINT_NAME = c.CONSTRAINT_NAME  and d.TABLE_NAME = a.TABLE_NAME  and a.table_name = upper('tb') ;

     

     


    最新回复(0)