mysql

Mysql 테이블 정의서 만드는 쿼리

은둔한량 2025. 3. 4. 16:08
반응형

Mysql 테이블 정의서 만드는 쿼리 입니다. 

SELECT 
	a.TABLE_NAME '테이블명',
	b.ORDINAL_POSITION '순번', 
	b.COLUMN_NAME '필드명', 
	b.DATA_TYPE 'DATA TYPE', 
	b.COLUMN_TYPE '데이터길이', 
	b.COLUMN_KEY 'KEY', 
	b.IS_NULLABLE 'NULL값여부', 
	b.EXTRA '자동순번', 
	b.COLUMN_DEFAULT '기본값', 
	b.COLUMN_COMMENT '필드설명' 
FROM information_schema.TABLES a 
	JOIN information_schema.COLUMNS b 
	ON a.TABLE_NAME = b.TABLE_NAME 
	AND a.TABLE_SCHEMA = b.TABLE_SCHEMA 
WHERE a.TABLE_SCHEMA = 'Database명' 
-- AND a.TABLE_NAME = '테이블명'   // 특정 테이블만 조회시
ORDER BY a.TABLE_NAME, b.ORDINAL_POSITION


쿼리 결과가 나오면 엑셀로 복사 붙여넣기 해서 정리하면 되겠습니다.

테이블 정의서 양식 중 제일 괜찮은것 업로드 해 놓겠습니다.

 

테이블 명세서 양식.xlsx
0.01MB

 

 아래는 오라클용이라고 해서 긁어 왔습니다. 참고하세요.

Oracle

SELECT   A.TABLE_NAME AS TABLE_NAME,
	       A.TAB_CMT AS 테이블설명,
         A.COLUMN_ID AS 컬럼순서,
         B.POS AS PK,
         A.NULLABLE AS NULL여부,
         A.COLUMN_NAME AS 컬럼명,
         A.COL_CMT AS 컬럼설명,
         A.DATA_TYPE AS 데이터유형,
         A.데이터길이,
         A.DATA_DEFAULT AS 기본값
FROM
(SELECT S1.TABLE_NAME,
   S3.COMMENTS AS TAB_CMT,
         S1.COLUMN_NAME,
         S2.COMMENTS AS COL_CMT,
         S1.DATA_TYPE,
         CASE WHEN S1.DATA_PRECISION IS NOT NULL THEN DATA_PRECISION||','||DATA_SCALE
         ELSE TO_CHAR(S1.DATA_LENGTH)
         END  AS 데이터길이,
         NULLABLE,
         COLUMN_ID,
         DATA_DEFAULT
FROM  USER_TAB_COLUMNS S1,
         USER_COL_COMMENTS S2,
         USER_TAB_COMMENTS S3
WHERE S1.TABLE_NAME = S2.TABLE_NAME
   AND S1.COLUMN_NAME = S2.COLUMN_NAME
   AND S2.TABLE_NAME = S3.TABLE_NAME ) A,        
(SELECT T1.TABLE_NAME, T2.COLUMN_NAME, 'PK' AS POS
   FROM (SELECT TABLE_NAME, CONSTRAINT_NAME  
              FROM USER_CONSTRAINTS
                  WHERE  CONSTRAINT_TYPE = 'P' )T1,
                  (SELECT TABLE_NAME, CONSTRAINT_NAME,  COLUMN_NAME, POSITION
                 FROM USER_CONS_COLUMNS ) T2
          WHERE T1.TABLE_NAME = T2.TABLE_NAME
             AND T1.CONSTRAINT_NAME = T2.CONSTRAINT_NAME  ) B
WHERE A.TABLE_NAME = B.TABLE_NAME(+)
   AND A.COLUMN_NAME = B.COLUMN_NAME(+)    
ORDER BY A.TABLE_NAME,  A.COLUMN_ID
반응형