programing

오라클 데이터베이스에서 테이블 열의 모든 메타데이터를 보는 방법은 무엇입니까?

elecom 2023. 8. 16. 21:56
반응형

오라클 데이터베이스에서 테이블 열의 모든 메타데이터를 보는 방법은 무엇입니까?

오라클 데이터베이스에서 테이블에 대해 정의된 모든 열을 볼 수 있는 쿼리를 알고 싶습니다.

정교함:

테이블 이름:일부_테이블에는 열이 10개 있습니다.

모든 열 이름, 데이터 유형 및 모든 열에 대해 정의된 제약 조건을 검색하는 방법을 알고 싶습니다.

모든 열 이름, 데이터 유형 및 모든 열에 대해 정의된 제약 조건을 검색하는 방법을 알고 싶습니다.

이렇게 하려면(사용자에게 부여된 권한에 따라) 쿼리할 수 있습니다.[user|all|dba]_tab_columns,[user|all|dba]_cons_columns,[user|all|dba]_constraints견해

다음은 간단한 예입니다.

 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

   )

table_name='인 모든_tab_dll에서 *를 선택합니다.사용자_TABLE_NAME_IN_CAPS';

참고: -- all_tab_columns는 SYSTEM으로 정의된 메타데이터 테이블입니다. -- table_name도 SYSTEM 명령입니다. -- 테이블 이름은 대소문자를 구분하므로 대문자로 쓰는 것을 잊지 마십시오.

언급URL : https://stackoverflow.com/questions/13448860/how-to-view-all-the-metadata-of-columns-of-a-table-in-oracle-database

반응형