2 분 소요

지금까지 DB, SQL을 다루는 글들에서 알게 모르게 DDL 명령어들을 사용해왔다. 이 페이지에서는 이러한 DDL 명령어들을 간단하게 정리하겠다.

CREATE

테이블, DB, 인덱스, 뷰 등의 DB 개체들을 생성할 때 쓰이는 명령어이다.

DB 생성 시에는 다음의 구조를 띤다.

CREATE DATABASE db;

-- 특정 db가 존재하지 않으면 그 때 생성하라는 뜻.
-- 이미 해당 db가 존재하면 재생성 시도하지 않음.
CREATE DATABASE IF NOT EXISTS db;

문법1-1

테이블 생성 시에는 다음의 구조를 띤다.

CREATE TABLE tb (
  필드명1 타입,
  필드명2 타입,
  ...,
  [CONSTRAINT 제약조건]
);

-- 테이블에도 if not exists를 적용할 수 있다. 
-- 즉, 해당 테이블이 db 내에 존재하지 않으면 이를 생성하고,
-- 그렇지 않으면 생성하지 않는다. 
CREATE TABLE IF NOT EXISTS tb ();

문법 1-2

괄호 안에는 원하는 만큼 필드명을 지을 수 있으며, 그 옆에 공백 한 칸 넣고 해당 필드에 들어가는 데이터의 타입을 지정할 수 있다. 데이터 타입에는 대표적으로 다음이 존재한다.

데이터타입 바이트 수 설명
INT 4 숫자 범위: 약 -21억 ~ +21억
CHAR(n) 1~255 고정 문자형
VARCHAR(n) 1~16383 가변 문자형
FLOAT 4 소수점 아래 7자리까지 표현
DOUBLE 8 소수점 아래 15자리까지 표현
DATE 3 날짜만 저장. YYYY-MM-DD 형식.
TIME 3 시각만 저장. HH:MM:SS 형식
DATETIME 8 날짜 및 시간 저장. YYYY-MM-DD HH:MM:SS 형식. DATE, TIME, DATETIME은 데이터 입력 시 홑따옴표로 감싸서 넣어야 한다.

표1. DBMS에서 사용할 수 있는 대표적인 데이터 타입들

이 외에도 정수형의 TINYINT, SMALLINT, BIGINT, 대용량 데이터를 위한 TEXT, BLOB 등이 존재한다고 한다.

CHAR VS VARCHAR
char형 문자열은 괄호 안에 명시한 문자열 길이만큼 메모리를 할당한다. CHAR(n)이라고 했을 때, 실제로는 n글자 미만의 문자열이 입력되어도 무조건 n글자만큼의 메모리 공간을 할당한다. 그래서 “고정길이 문자형”이라고도 불린다. 반면, VARCHAR(n)는 실제 데이터가 n글자 미만으로 입력되면 실제 데이터의 문자열 크기만큼만 메모리 공간을 할당한다는 것이 차이점이다. 이러한 이유로 “가변길이 문자형”이라고도 불리는 것이다. 이로 인해, 메모리 공간 상으로는 VARCHAR가 메모리 용량을 덜 잡아먹기에 더 유리하나, 처리 속도 면에서는 CHAR가 더 뛰어나다고 한다.

인덱스, 뷰 생성은 그 외 데이터베이스 구성 요소들 페이지에서 다뤘으니 여기서는 생략하겠다. 여기서는 주로 테이블, DB에 대해서만 다루겠다.

DROP

DB 개체를 삭제할 때 사용하는 명령어이다. 구조는 다음과 같다.

DROP DATABASE db;

-- 해당 db가 있으면 삭제하라.
DROP DATABASE IF EXISTS db;

DROP TABLE tb; 

-- 해당 테이블이 있으면 삭제하라.
DROP TABLE IF EXISTS tb;

문법 2-1

ALTER

테이블의 구성요소를 바꾸고자 할 때 사용한다. 테이블에 적용할 경우, 테이블의 특정 필드 추가, 삭제 또는 제약조건 추가, 변경, 삭제 등을 할 수 있다.

-- 필드 추가
ALTER TABLE tb
  ADD COLUMN 필드명 데이터타입
	
-- 필드명 변경
ALTER TABLE tb
  CHANGE COLUMN 옛날필드명 새필드명 데이터타입
	
-- 필드 세부 내용 변경
ALTER TABLE tb
  MODIFY COLUMN 필드명, 필드정의(데이터타입)
	
-- 필드 삭제
ALTER TABLE tb
  DROP COLUMN 필드명
	
-- 제약조건 추가, 삭제, 변경
ALTER TABLE tb
  ADD | DROP | ALTER CONSTRAINT 제약조건이름 제약조건
	
-- 제약조건 예
ALTER TABLE tb
  ADD CONSTRAINT pk_id PRIMARY KEY (id);

이 외 ALTER TABLE 관련 더 많은 문법들은 References [2] 참고.


References

[1] 에이콘아카데미(강남) 강의

[2] MySQL :: MySQL 9.0 Reference Manual :: 15.1.9 ALTER TABLE Statement

This content is licensed under CC BY-NC 4.0

댓글남기기