복붙노트

[SQL] 어떻게 오라클 데이터베이스의 테이블의 컬럼의 모든 메타 데이터를 볼 수 있습니다?

SQL

어떻게 오라클 데이터베이스의 테이블의 컬럼의 모든 메타 데이터를 볼 수 있습니다?

나는 우리가 오라클 데이터베이스의 테이블에 정의 된 모든 열을 볼 수있는 쿼리를 알고 싶어요.

동화:

테이블 이름 : Some_Table 10 열이있다.

나는 모든 열 이름, 데이터 유형 및 컬럼에 대해 정의 된 모든 제약 조건을 검색 할 수있는 방법을 알고 싶어요.

해결법

  1. ==============================

    1._tab_columns, [사용자 | 모든 | DBA] _cons_columns, [사용자 | 모든 | DBA] _constraints 전망 [| | 모든 DBA 사용자 (당신에게 부여 된 권한에 따라) 당신이 조회 할 수 있습니다 그렇게하십시오.

    _tab_columns, [사용자 | 모든 | DBA] _cons_columns, [사용자 | 모든 | DBA] _constraints 전망 [| | 모든 DBA 사용자 (당신에게 부여 된 권한에 따라) 당신이 조회 할 수 있습니다 그렇게하십시오.

    여기에 빠른 예입니다 :

     select decode( t.table_name
                  , lag(t.table_name, 1) over(order by t.table_name)
                  , null
                 , t.table_name ) as table_name -- <- just to eliminate 
          , t.column_name                       -- repeated tab_name    
          , t.data_type
          , cc.constraint_name
          , uc.constraint_type
       from user_tab_columns t
            left join user_cons_columns cc
              on (cc.table_name = t.table_name and
                  cc.column_name = t.column_name)
            left join user_constraints uc
              on (t.table_name = uc.table_name and
                  uc.constraint_name = cc.constraint_name )
     where t.table_name in ('EMPLOYEES', 'DEPARTMENTS');
    

    결과:

    TABLE_NAME    COLUMN_NAME       DATA_TYPE      CONSTRAINT_NAME   CONSTRAINT_TYPE
    ------------- ----------------- -------------- -------------------------------
    DEPARTMENTS   LOCATION_ID       NUMBER         DEPT_LOC_FK       R
                  DEPARTMENT_ID     NUMBER         DEPT_ID_PK        P
                  DEPARTMENT_NAME   VARCHAR2       DEPT_NAME_NN      C
                  MANAGER_ID        NUMBER         DEPT_MGR_FK       R
    EMPLOYEES     SALARY            NUMBER         EMP_SALARY_MIN    C
                  PHONE_NUMBER      VARCHAR2                            
                  EMPLOYEE_ID       NUMBER         EMP_EMP_ID_PK     P
                  DEPARTMENT_ID     NUMBER         EMP_DEPT_FK       R
                  JOB_ID            VARCHAR2       EMP_JOB_FK        R
                  MANAGER_ID        NUMBER         EMP_MANAGER_FK    R
                  COMMISSION_PCT    NUMBER                              
                  FIRST_NAME        VARCHAR2                            
                  JOB_ID            VARCHAR2       EMP_JOB_NN        C
                  HIRE_DATE         DATE           EMP_HIRE_DATE_NN  C
                  EMAIL             VARCHAR2       EMP_EMAIL_NN      C
                  LAST_NAME         VARCHAR2       EMP_LAST_NAME_NN  C
                  EMAIL             VARCHAR2       EMP_EMAIL_UK      U
    
    17 rows selected
    

    또한 (필요한 경우) 테이블, 당신은 DBMS_METADATA 패키지와 해당 패키지의 get_ddl 기능을 사용할 수있는 완전한 사양을 검색 할 수 있습니다 :

    select dbms_metadata.get_ddl('TABLE', 'EMPLOYEES') as table_ddl
      from dual;
    
     table_ddl
     --------------------------------------------------------------------------------
    
      CREATE TABLE "HR"."EMPLOYEES"
       ("EMPLOYEE_ID" NUMBER(6,0),
        "FIRST_NAME" VARCHAR2(20),
        "LAST_NAME" VARCHAR2(25) CONSTRAINT "EMP_LAST_NAME_NN" NOT NULL ENABLE,
        "EMAIL" VARCHAR2(25) CONSTRAINT "EMP_EMAIL_NN" NOT NULL ENABLE,
        "PHONE_NUMBER" VARCHAR2(20),
        "HIRE_DATE" DATE CONSTRAINT "EMP_HIRE_DATE_NN" NOT NULL ENABLE,
        "JOB_ID" VARCHAR2(10) CONSTRAINT "EMP_JOB_NN" NOT NULL ENABLE,
        "SALARY" NUMBER(8,2),
        "COMMISSION_PCT" NUMBER(2,2),
        "MANAGER_ID" NUMBER(6,0),
        "DEPARTMENT_ID" NUMBER(4,0),
         CONSTRAINT "EMP_SALARY_MIN" CHECK (salary > 0) ENABLE,
         CONSTRAINT "EMP_EMAIL_UK" UNIQUE ("EMAIL")
    
       -- ... other attributes
    
       )
    
  2. from https://stackoverflow.com/questions/13448860/how-to-view-all-the-metadata-of-columns-of-a-table-in-oracle-database by cc-by-sa and MIT license