[SQL] 어떻게 오라클 데이터베이스의 테이블의 컬럼의 모든 메타 데이터를 볼 수 있습니다?
SQL어떻게 오라클 데이터베이스의 테이블의 컬럼의 모든 메타 데이터를 볼 수 있습니다?
나는 우리가 오라클 데이터베이스의 테이블에 정의 된 모든 열을 볼 수있는 쿼리를 알고 싶어요.
동화:
테이블 이름 : Some_Table 10 열이있다.
나는 모든 열 이름, 데이터 유형 및 컬럼에 대해 정의 된 모든 제약 조건을 검색 할 수있는 방법을 알고 싶어요.
해결법
-
==============================
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 )
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
'SQL' 카테고리의 다른 글
[SQL] 테이블에서 '다음'과 '이전'에 대한 SQL은 무엇인가? (0) | 2020.06.30 |
---|---|
[SQL] 데이터베이스 디자인 질문 - 카테고리 / 하위 카테고리 (0) | 2020.06.30 |
[SQL] SQL과 타의 추종을 불허하는 기록을 찾기 (0) | 2020.06.30 |
[SQL] 커밋 된 트랜잭션을 롤백 (0) | 2020.06.30 |
[SQL] 한 번에 여러 SQL 문을 실행 MyBatis로, 그 수 있습니까? (0) | 2020.06.30 |