반응형
오라클 데이터베이스에서 테이블 열의 모든 메타데이터를 보는 방법은 무엇입니까?
오라클 데이터베이스에서 테이블에 대해 정의된 모든 열을 볼 수 있는 쿼리를 알고 싶습니다.
정교함:
테이블 이름:일부_테이블에는 열이 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
반응형
'programing' 카테고리의 다른 글
| mysql의 INT(5)는 무엇을 의미합니까? (0) | 2023.08.16 |
|---|---|
| GitHub 인증이 https를 페일오버하여 잘못된 전자 메일 주소를 반환합니다. (0) | 2023.08.16 |
| 대화상자로서의 Android 활동 (0) | 2023.08.16 |
| 리플릿 - 기존 마커를 찾고 마커를 삭제하는 방법은 무엇입니까? (0) | 2023.08.16 |
| 각도 및 마이크로 프론트 엔드 (0) | 2023.08.11 |