본문 바로가기

별걸다하는 IT/데이터베이스 Database

[오라클, MySQL] comment 코멘트 추가/수정/조회하기, 테이블과 컬럼에 주석달고 확인하는 쿼리문

[데이터베이스 & SQL 완전정복 목차 링크]

안녕하세요 양햄찌 블로거입니다. 오늘은 코멘트(comment) 다는 쿼리를 살펴볼거예요.

코멘트가 필요한 이유

나혼자 테이블을 만들고 내가 다 기억할 수 있다면 관계가 없겠지만,,

회사란 다수의 사람들이 하나의 DB에 접근해 사용하죠. 

기존에 테이블을 만들었던 사람이 퇴사하기도 하고,, 아무것도 모르는 신입이 들어오기도 하고,

시스템이 크면 클수록 테이블은 많아질거고 비슷비슷해보이는 컬럼들도 많아질거예요. 그럼 나중가면 엄~청난 혼돈의 도가니가 된다는거. 각 테이블이나 컬럼에 이게 무엇을 뜻하는지 comment가 달려있느냐 안달려있느냐가 업무습득에 엄청난 차이를 불러일으킵니다! 말 그대로 관리죠 관리 수월한 관리를 위해 comment 설정은 이왕이면 생활화하도록 합시다 :) 

코멘트 다는 법 / 수정 / 삭제 

[ORACLE]

오라클의 경우 comment를 다는 데 사용하는 키워드는 'comment on'입니다.

코멘트 수정이나 삭제의 경우, 코멘트 설정이랑 똑같아요. 없앨 거면 코멘트 값을 안적어주면 되고 수정할거면 수정할 값을 적어주면 됩니다.

 

■ 테이블 comment 설정하는 법

COMMENT ON TABLE [테이블명] IS 'table_comment';

 

■ 컬럼에 comment 설정하는 법

COMMENT ON COLUMN [테이블명.컬럼명] IS 'column_comment';

 

■ comment 삭제

COMMENT ON TABLE [테이블명] IS '';
COMMENT ON COLUMN [테이블명.컬럼명] IS '';

 

■ comment 수정

COMMENT ON TABLE [테이블명] IS '수정문자열';
COMMENT ON COLUMN [테이블명.컬럼명] IS '수정문자열';

 

[MYSQL, MariaDB]

MySQL의 경우 테이블을 생성하면서 같이 코멘트를 달 수도 있고, 별도로 alter table 명령어를 통해서 커맨트를 달거나 수정할 수 있어요.

 

■ 테이블에서 comment 부여할 경우

create table 테이블이름 (
  컬럼명 데이터타입 제약조건 comment '컬럼코멘트',
  컬럼명 데이터타입 제약조건 comment '컬럼코멘트',
  ... 
  컬럼명 데이터타입 제약조건 comment '컬럼코멘트',
);

 

■ 테이블 생성 후 comment 생성하거나 수정하기

테이블에 코맨트 부여

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

 

컬럼에 코멘트 부여

컬럼에 코멘트를 생성하거나 수정할때에는 컬럼 전체를 변경하는 수밖에 없습니다. 

테이블 생성시 컬럼 지정하는 명령어 부분을 MODIFY뒤에 고대로 넣어주고 뒤에 comment 키워드를 붙여 코멘트를 지정합니다 (마치 create table시 컬럼코멘트 지정하듯이)

ALTER TABLE [테이블명] MODIFY [컬럼명] [데이터타입] [제약조건] COMMENT '컬럼코멘트';

 

■ 테이블 코멘트, 컬럼 코멘트 삭제하기 

ALTER TABLE [테이블명] COMMENT = '';

ALTER TABLE [테이블명] MODIFY [컬럼명] [데이터타입] [제약조건];

그냥 COMMENT키워드 부분 없이 다시 컬럼을 재정의해주면 됩니다.

EXAMPLE

간단하게 테이블을 만들고 그 테이블과 컬럼에게 comment를 달아봅시다. 

테이블 예시로 뭐로 들까 하다가 product라는 테이블을 아래처럼 만들고 테이블과 컬럼에 각 코멘트를 달아줬어요.

(테이블 만드는 포스팅은 요기 참조)

[ORACLE일 경우]

오라클일 경우 테이블과 comment를 같이 생성할 수는 없어요. 테이블을 만든 후에, comment on 키워드를 써서 일일이 코맨트를 부여해줘야 합니다. 

--ORACLE일 경우 
CREATE TABLE product (
    product_id NUMBER NOT NULL PRIMARY KEY,
    product_name VARCHAR2(20),
    category_id NUMBER NOT NULL,
    unitcost NUMBER NOT NULL,
    status CHAR(1),
    enroll_date DATE
);
COMMENT ON TABLE product IS '제품정보';
COMMENT ON COLUMN product.product_id IS '제품ID';
COMMENT ON COLUMN product.product_name IS '제품명';
COMMENT ON COLUMN product.category_id IS '카테고리ID';
COMMENT ON COLUMN product.unitcost IS '단가';
COMMENT ON COLUMN product.status IS '제품상태코드';
COMMENT ON COLUMN product.enroll_date IS '제품등록날짜';

SQL DEVELOPER 툴에서 실행해봤어요.

수행이 잘 된 것을 확인할 수 있습니다.

[MYSQL, MariaDB]

MySQL과 마리아디비 같은 경우에는 테이블을 생성하면서 comment를 같이 부여할 수 있어요.

## 생성시 같이 부여하기
CREATE TABLE product (
    product_id INT NOT NULL COMMENT '제품ID',
    product_name VARCHAR(20) COMMENT '제품명',
    category_id INT NOT NULL COMMENT '카테고리ID',
    unitcost int NOT NULL COMMENT '단가',
    status CHAR(1) COMMENT '상태코드',
    enroll_date DATE COMMENT '등록날짜',
    PRIMARY KEY(product_id)
) COMMENT '제품정보';

하이디SQL에서 수행해봤습니다.

코멘트가 잘 들어간 것을 확인할 수 있어요.

 

이번엔 테이블 만든 뒤 별개로 코멘트 지정해주기 

CREATE TABLE product (
    product_id INT NOT NULL ,
    product_name VARCHAR(20),
    category_id INT NOT NULL,
    unitcost int NOT NULL,
    status CHAR(1),
    enroll_date DATE,
    PRIMARY KEY(product_id)
);
ALTER TABLE product COMMENT '제품정보';
ALTER TABLE product MODIFY product_id INT NOT NULL COMMENT '제품ID';
ALTER TABLE product MODIFY product_name VARCHAR(20) COMMENT '제품명';
ALTER TABLE product MODIFY category_id INT NOT NULL COMMENT '카테고리ID';
ALTER TABLE product MODIFY unitcost int NOT NULL COMMENT '단가';
ALTER TABLE product MODIFY status CHAR(1) COMMENT '상태코드';
ALTER TABLE product MODIFY enroll_date DATE COMMENT '등록날짜';

요렇게~ SQL에 따라 명령어의 차이는 있지만 어렵지 않아요. 

코멘트 잘 작성되었는지 확인하기 - comment 조회

코멘트가 잘 만들어졌는지 확인하는 방법은 없을까요? 당근있죠~

 

[ORACLE]

(orange의 경우 'desc product'명령어만 쳐도 코멘트 정보가 같이 출력됩니다, sql developer 툴에서는 desc에 안나와요.)

코멘트 조회에 사용되는 테이블은 6가지 정도 3개는 컬럼 관련, 3개는 테이블 관련이예요.

테이블명 테이블 의미
ALL_COL_COMMENTS ALL~ 현재 사용자가 접근 할 수 있는 모든 컬럼 코멘트 정보를 가지고 있숩니다.
USER_COL_COMMENTS 현재 사용자의 스키마에 있는 컬럼 코멘트 정보를 가지고 있습니다.
DBA_COL_COMMENTS 데이터베이스의 모든 컬럼 코멘트 정보를 조회합니다 (시스템 접근 계정 로그인시)
ALL_TAB_COMMENTS 현재 사용자가 접근할 수 있는 테이블 코멘트 정보를 가지고 있습니다.
USER_TAB_COMMENTS 현재 사용자의 스키마에 있는 테이블 코멘트 정보를 가지고 있습니다.
DBA_TAB_COMMENTS 데이터베이스의 모든 테이블 코멘트를 조회합니다. (시스템 접근 계정 로그인시)

컬럼관련이면 가운데가 COL이 들어가고 테이블 관련이면 가운데가 TAB 들어가는 차이밖에 없어요.

SQL DEVELOPER 테이블 코멘트 정보
코멘트 확인 결과 잘 들어간 것을 볼 수 있습니다.

코멘트가 각각 잘 설정된 것을 확인할 수 있습니다. 

 

[MySQL, MariaDB]

MySQL과 마리아디비에서 확인해볼게요.

앞에서 한 번 보셨을 수도 있지만,

SHOW FULL COLUMNS FROM [테이블명];

요 명령어로 일단 간단하게 확인할 수 있습니다.

 

select table_name, column_name, column_type, column_comment
from information_schema.columns 
where table_name = 'product';

SELECT TABLE_NAME, table_comment
from information_schema.tables 
where table_name = 'product';

information_schema는 데이터베이스나 테이블, 컬럼, 접근권한 등과 같은 다양한 정보의 DB메타데이터 접근을 제공하는데, information_schema.columns와 information_schema.tables 테이블로부터 코멘트를 조회해올 수 있어요. 

여윽시 잘 출력되는 것 확인할 수 있어요!

 

오늘은 간단하게 comment 지정하고 수정하고 삭제하는 쿼리문에 대해 알아봤어요.

도움이 되셨다면 공감 살포시 우떤가요? 다음 포스팅에서 또 봐요~ :)