[ Index ]
1. 데이터 형식
(1) 문자형 (2) 정수형 (3) 실수형 (4) 날짜형
2. 데이터 형 변환
(1) 명시적 변환 (2) 암시적 변환
1. 데이터 형식
(1) 문자형
데이터 형식 | 바이트 수 |
CHAR(개수) | 1 ~ 255 |
VARCHAR(개수) | 1 ~ 16383 |
- CHAR(n)에 m글자를 저장하면, n자리를 미리 확보하고 m자리만 사용한다.
- VARCHAR(n)에 m글자를 저장하면, m자리만 사용한다.
- 글자 수가 고정적일 경우 → CHAR(n)
- 글자 수가 변동적일 경우 → VARCHAR(n)
(2) 정수형
데이터 형식 | 바이트 수 | 숫자 범위 |
TINYINT | 1 | -128 ~ 127 |
SMALLINT | 2 | -32,768 ~ 32,767 |
INT | 4 | 약 -21억 ~ +21억 |
BIGINT | 8 | 약 -900경 ~ +900경 |
※ UNSIGNED를 사용하면 값의 범위가 0부터 시작된다. 즉, TINYINT UNSIGNED는 0 ~ 255의 범위를 가진다.
(3) 실수형
데이터 형식 | 바이트 수 | 설명 |
FLOAT | 4 | 소수점 아래 7자리까지 |
DOUBLE | 8 | 소수점 아래 15자리까지 |
(4) 날짜형
데이터 형식 | 바이트 수 | 설명 |
DATE | 3 | 날짜만 저장 (YYYY-MM-DD) |
TIME | 3 | 시간만 저장 (HH:MM:SS) |
DATETIME | 8 | 날짜 및 시간을 저장 (YYYY-MM-DD HH:MM:SS) |
(5) 기타
대량의 문자 데이터를 저장해야 한다면, TEXT 형식을 사용하면 된다.
데이터 형식 | 바이트 수 |
TEXT | 1 ~ 65535 |
LONGTEXT | 1 ~ 4294967295 |
대량의 이미지나 동영상 데이터를 저장해야 한다면, BLOB 형식을 사용하면 된다.
데이터 형식 | 바이트 수 |
BLOB | 1 ~ 65535 |
LONGBLOB | 1 ~ 4294967295 |
2. 데이터 형 변환
(1) 명시적인 변환
CAST(), CONVERT()와 같은 함수를 사용해서 직접 데이터의 형식을 변환하는 것을 말한다.
-- 실수형을 정수형으로 변환한다.
SELECT CAST(AVG(price) AS SIGNED) FROM product;
SELECT CONVERT(AVG(price), SIGNED) FROM product;
-- 문자형을 날짜형으로 변환
SELECT CAST('2022/10/17' AS DATE);
SELECT CAST('2022%10%17' AS DATE);
※ SIGNED: 부호가 있는 정수 / UNSIGNED: 부호가 없는 정수
※ /, %, $, @ 등 다양한 구분자를 이용해 날짜형으로 변경 가능
(2) 암시적인 변환
함수를 사용하지 않고 자연스럽게 데이터의 형식이 변환되는 것을 말한다.
SELECT '10' + '30';
-- (결과) 40
SELECT '10' + 30;
-- (결과) 40
SELECT CONCAT('10', '30');
-- (결과) '1030'
SELECT CONCAT(10, '30');
-- (결과) '1030'
※ 숫자와 문자를 함께 연산하면, 산술연산자는 숫자로, CONCAT()은 문자로 변환된다.
[ Reference ]
📙 우재남, 한빛미디어, 혼자 공부하는 SQL
'📖 STUDY > SQL' 카테고리의 다른 글
[EP.07] SQL 프로그래밍 (0) | 2023.10.20 |
---|---|
[EP.06] 조인(JOIN) (0) | 2023.10.18 |
[EP.04] 데이터 입력, 수정, 삭제 (0) | 2023.10.16 |
[EP.03] ORDER BY, GROUP BY (0) | 2023.10.16 |
[EP.02] SELECT, FROM, WHERE (1) | 2023.10.12 |