[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) |
댓글남기기