[MySQL] 테이블 생성

1. 테이블 생성 구문

MySQL에서 테이블 생성은 CREATE문을 사용하여, 형식은 다음과 같다.

CREATE TABLE 테이블명(
	필드명 데이터타입 제약조건,
    필드명 데이터타입 제약조건,
    ...
);

2. 데이터 타입

MySQL에서 데이터 타입은 크게 문자, 숫자, 날짜 데이터로 나뉜다.

1) 문자 데이터 타입

대표적으로 CHAR과 VARCHAR가 있다.

CHAR

고정 길이 문자열이며 최대 255byte의 크기를 가진다. CHAR(n)으로 선언 시 n byte 만큼의 공간을 차지하게 되며, 입력된 문자열이 n보다 작을 시 나머지 공간은 공백으로 채워지게 된다.

VARCHAR

가변 길이 문자열이며 최대 65535byte 의 크기를 가진다. VARCHAR(n)으로 선언 시 n byte 까지의 문자열을 저장할 수 있으며, 입력된 문자열이 n보다 작을 시 나머지 공간은 공백으로 채워지지 않는다. 즉, 실제 입력된 문자열의 크기만큼 메모리를 차지하게 된다.

만약 strict mode가 off 상태라면 n byte 이상의 문자열을 저장하면 그만큼 변수의 길이가 늘어나게 된다.

BINARY & VARBINARY

CHAR와 VARCHAR와 비슷하지만, 문자 집합이 아닌 이진 데이터를 저장할 때 사용된다.

BLOB & TEXT

BLOB은 이미지와 같이 바이너리로 이루어진 데이터를 저장할 때 사용된다. 크기에 따라 TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB으로 나뉜다.

TEXT는 VARCHAR와 비슷하지만 필드 설정시 최대 크기를 지정하지 않는다.

2) 숫자형 데이터 타입

정수형(INT) 과 실수형 (FLOAT ,DECIMAL, DOUBLE) 로 나뉜다.

정수형

데이터 타입 크기 표현 범위
TINYINT 1byte signed = (-2^7) ~ (2^7 -1) | unsigned = 0 ~ (2^8 - 1)
SMALLINT 2byte signed = (-2^15) ~ (2^15 - 1) | unsigned = 0 ~ (2^ 16 -1)
MEDIUMINT 3byte signed = (-2^23) ~ (2^23 -1) | unsigned = 0 ~ (2^24 - 1)
INT 4byte signed = (-2^31) ~ (2^31 -1) | unsigned = 0 ~ (2^32 - 1)
BIGINT 8byte signed = (-2^63) ~ (2^63 - 1) | unsigned = 0 ~ (2^64 - 1)

고정 소수점 타입 (DECIMAL)

소수점을 정확하게 표현하기 위해 사용되며, DECIMAL(M,D) 형식으로 사용된다.

M은 소수 부분을 포함한 총 자릿수이며, 최대값은 65이다. D는 소수 부분의 자릿수이다.

부동 소수점 타입 (FLOAT, DOUBLE)

대략적인 소수점을 표현하기 위해 사용된다. FLOAT는 4byte, DOUBLE은 8byte의 크기를 가진다.

3) 날짜, 시간형 데이터 타입

시간 (TIME)

TIME 은 ‘HH:MM:SS’ 또는 ‘HHH:MM:SS’ 형식으로 시간을 저장하고, 3byte의 크기를 가진다.

범위는 ‘-838:59:59’ ~ ‘838:59:59’ 이며 유효하지 않다면 ‘00:00:00’ 으로 저장된다.

날짜 (DATE, DATETIME, TIMESTAMP)

DATE는 ‘YYYY-MM-DD’ 형식으로 날짜를 저장하고, 3byte의 크기를 가진다.

범위는 ‘1000-01-01’ ~ ‘9999-12-31’ 이며, 유효하지 않을 시 0으로 채워진다.

DATETIME은 DATE와 TIME이 합쳐진 형태이다.

‘YYYY-MM-DD HH:MM:SS’ 형식으로 날짜와 시간을 저장하고, 8byte의 크기를 가진다.

범위는 ‘1001-01-01 00:00:00’ ~ ‘9999-12-31 23:59:59’ 이며, 유효하지 않을 시 0으로 채워진다.

TIMESTAMP는 UTC 타임스탬프를 저장하며, 형식은 DATETIME과 동일하지만 4byte의 크기를 가진다.

기본적으로 NOT NULL이며, 값을 명시적으로 할당하지 않으면 컬럼이 추가 혹은 업데이트된 시간을 저장한다.

년도 (YEAR)

YEAR는 1901 ~ 2155 사이의 값을 저장하며, 1byte의 크기를 가진다.

3. 제약조건

제약조건 의미
PRIMARY KEY 기본키로 지정
FOREIGN KEY 외래키로 지정
NOT NULL 값이 NULL일 수 없음
UNIQUE 데이터 중복을 허용하지 않음
DEFAULT 기본값을 설정
INDEX 인덱스 지정
CHECK 데이터를 특정 조건에 맞게 체크하여 입력 (MySQL에서는 적용X)

카테고리:

업데이트:

댓글남기기