헤르메스 LIFE

[MySQL] 테이블 및 컬럼, 코멘트 조회 본문

Database

[MySQL] 테이블 및 컬럼, 코멘트 조회

헤르메스의날개 2020. 11. 18. 23:56
728x90

MySQL comment 설정 및 조회

Database  목록 조회

-- Database 목록 조회
SHOW DATABASES;

Table 정보조회 (with comment)

-- 테이블 목록 조회
SHOW TABLES;

-- 'springboot' 계정의 'Product' 테이블 정보
SELECT *
  FROM INFORMATION_SCHEMA.TABLES
 WHERE TABLE_SCHEMA = 'springboot'
   AND TABLE_NAME   = 'Product'
;

COLUMN 정보조회 (with comment)

show columns from 테이블명;

-- Product 테이블 컬럼정보
show columns from Product;

/* Query를 통한 테이블정보 조회 */
SELECT TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,ORDINAL_POSITION,COLUMN_DEFAULT
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE TABLE_SCHEMA = 'database_name'
   AND TABLE_NAME   = 'table_name';

-- springboot 계정의 Product 테이블 컬럼정보
SELECT *
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE TABLE_SCHEMA = 'springboot'
   AND TABLE_NAME   = 'Product';

TABLE CREATE 구문 확인

show CREATE table Product;

결과
CREATE TABLE `Product` (
  `id` bigint NOT NULL COMMENT '제품 ID',
  `name` varchar(255) DEFAULT NULL COMMENT '제품명',
  `price` double DEFAULT NULL COMMENT '제품가격',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='제품정보'

TABLE 정보 조회

SELECT TT.TABLE_NAME 
     , TT.COLUMN_NAME
     , TT.ORDINAL_POSITION
     , TT.COLUMN_TYPE
     , CASE WHEN TT.IS_NULLABLE = 'NO' 
            THEN 'N' ELSE 'Y'
       END NULL_ABLE
     , TT.COLUMN_DEFAULT
     , CASE WHEN TT.COLUMN_KEY = 'PRI' 
            THEN 'PK' ELSE ''
       END PK
     , IDX.INDEX_NAME
     , TT.COLUMN_COMMENT
  FROM (
        SELECT T.TABLE_NAME 
             , C.COLUMN_NAME
             , C.COLUMN_COMMENT
             , C.ORDINAL_POSITION
             , C.COLUMN_TYPE
             , C.IS_NULLABLE
             , C.COLUMN_DEFAULT
             , C.COLUMN_KEY   
          FROM INFORMATION_SCHEMA.TABLES  AS T  /* 테이블 정보 */
             , INFORMATION_SCHEMA.COLUMNS AS C  /* 컬럼 정보 */
         WHERE T.TABLE_SCHEMA = 'springboot'
           AND T.TABLE_NAME   = 'Product'
           AND T.TABLE_NAME   = C.TABLE_NAME   
       ) TT
  LEFT JOIN INFORMATION_SCHEMA.STATISTICS IDX   /* INDEX 정보 */
         ON TT.TABLE_NAME    = IDX.TABLE_NAME
        AND TT.COLUMN_NAME   = IDX.COLUMN_NAME
 ORDER BY TT.ORDINAL_POSITION

TABLE COMMENT 설정

ALTER TABLE 테이블명 COMMENT = '테이블 코멘트';

-- 사용의 예
ALTER TABLE Product COMMENT = '제품정보';

COLUMNS COMMENT 설정

/* 테이블 생성 시 Comment 를 넣을 수 있음.*/
CREATE TABLE `Product` (
  `id` bigint NOT NULL COMMENT '제품 ID',
  `name` varchar(255) DEFAULT NULL COMMENT '제품명',
  `price` double DEFAULT NULL COMMENT '제품가격',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='제품정보'

/* Alter 명령을 이용해서 comment를 추가할 수 있음. */
ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입 COMMENT '컬럼 코멘트'; -- 컬럼 코멘트 설정

-- 사용의 예
ALTER TABLE Product MODIFY id bigint COMMENT '제품 ID'; -- 컬럼 코멘트 설정
ALTER TABLE Product MODIFY name varchar(255) COMMENT '제품명'; -- 컬럼 코멘트 설정
ALTER TABLE Product MODIFY price double COMMENT '제품가격'; -- 컬럼 코멘트 설정

View 조회하기

SELECT *
  FROM INFORMATION_SCHEMA.VIEWS
728x90

'Database' 카테고리의 다른 글

[Tibero] Database 생성부터 User 생성까지  (0) 2020.11.19
[Tibero] 시작 / 종료  (0) 2020.11.19
[MySQL] root 패스워드 분실  (0) 2020.11.18
[Oracle] 대량 Insert 예제  (0) 2020.11.18
[Oracle] IMP/EXP 시 에러 발생 (EXP-00008)  (0) 2020.11.18