티스토리 뷰
통합 테이블 정의서 추출 SQL (PK, FK, Index 포함)
SELECT
A.TABLE_NAME AS "테이블명",
T_COM.COMMENTS AS "테이블 설명",
A.COLUMN_ID AS "순번",
A.COLUMN_NAME AS "컬럼명",
C_COM.COMMENTS AS "컬럼 설명",
-- PK 여부
(SELECT 'PK' FROM USER_CONSTRAINTS CON, USER_CONS_COLUMNS COL
WHERE CON.CONSTRAINT_NAME = COL.CONSTRAINT_NAME
AND CON.CONSTRAINT_TYPE = 'P'
AND COL.TABLE_NAME = A.TABLE_NAME
AND COL.COLUMN_NAME = A.COLUMN_NAME) AS "PK",
-- FK 여부
(SELECT 'FK' FROM USER_CONSTRAINTS CON, USER_CONS_COLUMNS COL
WHERE CON.CONSTRAINT_NAME = COL.CONSTRAINT_NAME
AND CON.CONSTRAINT_TYPE = 'R'
AND COL.TABLE_NAME = A.TABLE_NAME
AND COL.COLUMN_NAME = A.COLUMN_NAME) AS "FK",
-- 포함된 인덱스명 (여러 개일 경우 쉼표로 구분)
(SELECT LISTAGG(INDEX_NAME, ', ') WITHIN GROUP (ORDER BY INDEX_NAME)
FROM USER_IND_COLUMNS
WHERE TABLE_NAME = A.TABLE_NAME AND COLUMN_NAME = A.COLUMN_NAME) AS "인덱스",
-- 데이터 타입 상세
A.DATA_TYPE ||
CASE
WHEN A.DATA_TYPE IN ('VARCHAR2', 'CHAR', 'RAW') THEN '(' || A.DATA_LENGTH || ')'
WHEN A.DATA_TYPE = 'NUMBER' AND A.DATA_PRECISION IS NOT NULL AND A.DATA_SCALE > 0
THEN '(' || A.DATA_PRECISION || ',' || A.DATA_SCALE || ')'
WHEN A.DATA_TYPE = 'NUMBER' AND A.DATA_PRECISION IS NOT NULL
THEN '(' || A.DATA_PRECISION || ')'
ELSE ''
END AS "데이터 타입",
CASE WHEN A.NULLABLE = 'N' THEN 'No' ELSE 'Yes' END AS "NULL 허용",
A.DATA_DEFAULT AS "기본값"
FROM
USER_TAB_COLUMNS A
LEFT JOIN USER_TAB_COMMENTS T_COM ON A.TABLE_NAME = T_COM.TABLE_NAME
LEFT JOIN USER_COL_COMMENTS C_COM ON A.TABLE_NAME = C_COM.TABLE_NAME AND A.COLUMN_NAME = C_COM.COLUMN_NAME
WHERE
A.TABLE_NAME NOT LIKE 'BIN$%'
ORDER BY
A.TABLE_NAME, A.COLUMN_ID;
📝 추가된 기능 설명
- FK(Foreign Key) 표시: 해당 컬럼이 다른 테이블을 참조하는 외래키인 경우 'FK'로 표시됩니다.
- 인덱스(Index) 정보: 해당 컬럼이 인덱스에 포함되어 있다면 인덱스명을 보여줍니다. 한 컬럼이 여러 인덱스에 포함된 경우 LISTAGG 함수를 통해 한 칸에 모두 표시되도록 했습니다.
- 데이터 타입 정밀도: NUMBER(10, 2) 등 소수점 자리수까지 정확하게 표현됩니다.
💡 산출물 정리 팁 (엑셀 활용)
- 필터링: 엑셀로 저장한 후, **'테이블 설명'**이 비어있는 행을 필터링하면 코멘트 누락 여부를 쉽게 점검할 수 있습니다.
- 가독성: 엑셀의 **'중복된 항목 제거'**나 **'조건부 서식'**을 활용해 테이블명이 바뀔 때마다 구분선을 넣어주면 훨씬 보기 좋습니다.
- 대문자 주의: 만약 특정 테이블 정보만 보고 싶다면 쿼리 끝에 AND A.TABLE_NAME = 'MY_TABLE_NAME'을 추가하세요. (반드시 대문자!)
- 테이블 코멘트 추가: COMMENT ON TABLE 테이블명 IS '설명';
- 컬럼 코멘트 추가: COMMENT ON COLUMN 테이블명.컬럼명 IS '설명';
※ 해당 내용은 Google Gmini3.0에서 작성되었습니다.
'WEB > DB' 카테고리의 다른 글
| 오라클 DB 인덱스 정의서 출력 sql (0) | 2026.06.30 |
|---|---|
| PK가 포함된 테이블 정의서 추출 SQL (0) | 2026.04.02 |
| 테이블 정의서 추출 SQL (오라클 기준) (0) | 2026.04.02 |
| DB 데이터이관시 테이블을 수정하는 방식? 신규 생성 방식? (0) | 2026.03.16 |
| DB 이관 도구 및 스크립트 개발 이건 어떤식으로 이루어지나요? (0) | 2026.03.16 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- css미디어쿼리 #미디어쿼리 #mediaquery
- jdk #jre
- 연명의료결정제도 #사전연명의료의향서 #사전연명의료의향서등록기관 #광주사전연명의료의향서
- 자바스크립트 #javascript #math
- SQL명령어 #SQL
- 증폭기 #아이피타임증폭기
- 와이파이증폭기추천 #와이파이설치
- 쇼팬하우어 #좋은책
- lg그램pro #lg그램 #노트북 #노트북추천 #lg노트북
- echart
- 무료폰트 #무료웹폰트 #한수원한돋움 #한수원한울림 #한울림체 #한돋움체
- 좋은책
- thymeleaf
- 썬크림 #닥터지썬크림 #내돈내산 #내돈내산썬크림 #썬크림추천 #spf50썬크림 #닥터지메디유브이울트라선
- 파비콘 #파비콘 사이트에 적용
- 바지락칼국수 #월곡동칼국수 #칼국수맛집
- jQuery #jQuery이미지슬라이드 #이미지슬라이드
- sw기술자평균임금 #2025년 sw기술자 평균임금
- ajax
- // 사진직: 데이터가 없으면 DEFAULT_IMG 사용 const profileSrc = (d.img && d.img !== "") ? d.img : DEFAULT_IMG;('#user-photo').attr('src'
- 탭메뉴자바스크립트
- 자바스크립트countiue
- 테스크탑무선랜카드 #무선랜카드 #아이피타이무선랜카드 #a3000mini #무선랜카드추천
- 좋은책 #밥프록터 #부의원리
- 광주분식 #광주분식맛집 #상추튀김 #상추튀김맛집 #광주상추튀김
- iptime와이파이증폭기 #와이파이증폭기설치
- 자바스크립트break
- 정보처리기사 #정보처리기사요약 #정보처리기사요점정리
- 자바스크립트정규표현식
- 파비콘사이즈
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함
