[MySQL] 9. 문자열 타입
MySQL은 다양한 형태의 문자열 타입 제공
- CHAR와 VARCHAR
- BINARY와 VARBINARY
- ENUM
- SET
CHAR와 VARCHAR
-
둘 다 문자열 데이터를 저장할 수 있는 타입
-
차이점 : 저장 방식, 추출 방식, 최대 길이 다루는 방식
-
- CHAR는 문자열 길이가 한번 설정되면 그대로 고정되는 고정 길이의 문자열
- VARCHAR는 문자열 길이가 고정되지 않는 가변 길이의 문자열
-
문법
CHAR(M) VARCHAR(M)
-
M은 저장할 수 있는 문자열의 최대 길이
-
- CHAR : 0~255
- VARCHAR : 0~65,535
-
CHAR는 설정한 크기보다 작은 길이의 문자열이 입력되면 나머지 공간을 공백으로 채워 길이를 M과 같게 만듦
- VARCHAR는 실제 입력된 문자열의 길이만큼만 저장하고 사용
-
-
예시
ALTER TABLE Reservation ADD Note CHAR(4); INSERT INTO Reservation(Note) VALUES(' '); INSERT INTO Reservation(Note) VALUES('ab'); INSERT INTO Reservation(Note) VALUES('abcd'); INSERT INTO Reservation(Note) VALUES('abcdefgh'); ALTER TABLE Reservation MODIFY COLUMN Note VARCHAR(4); INSERT INTO Reservation(Note) VALUES(' '); INSERT INTO Reservation(Note) VALUES('ab'); INSERT INTO Reservation(Note) VALUES('abcd'); INSERT INTO Reservation(Note) VALUES('abcdefgh');
BINARY와 VARBINARY
- CHAR, VARCHAR와 비슷
- 문자 집합이 아닌 바이너리 데이터를 저장할 때 사용
문법
BINARY(M) VARBINARY(M)
BLOB과 TEXT
-
BLOB(Binary Large Object)
-
- 다양한 크기의 바이너리를 저장할 수 있는 타입
- 저장할 수 있는 최대 크기에 따라 TINYBLOB, BLOB MEDIUMBLOB, LONGBLOB로 구분
-
TEXT
-
- VARCHAR와 비슷하지만 VARCHAR와는 달리 기본값을 가질 수 없음.
- BLOB과는 달리 문자열의 대소문자 구분함
- 크기에 따라 TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT로 구분
-
예시
ALTER TABLE Reservation ADD COLUMN Note TEXT;
ENUM
- 미리 정의한 집합 안의 요소 중 하나만을 저장할 수 있는 타입
- 가독성을 높일 수 있으며 특정 숫자에 문자열로 의미 부여 가능
- ENUM 목록 집합은 최대 65,535개의 ENUM 데이터를 포함할 수 있음
- ENUM 데이터는 내부적으로 정수로 변환되어 인식
문법
ENUM('데이터값1','데이터값2',...)
예시
ALTER TABLE Reservation ADD COLUMN RoomType ENUM('Single', 'Twin', 'Double', 'Triple');
SET
-
미리 정의한 집합 안의 요소 중 여러 개를 동시에 저장할 수 있는 타입
-
SET 목록 집합은 최대 64개의 SET 데이터를 포함할 수 있음
문법
SET('데이터값1', '데이터값2', ...)
예시
ALTER TABLE Reservation ADD COLUMN Request SET('Breakfast', 'Extra Bed', 'Non-Smoking');