데이터베이스/SQL: 정리
[SQL] SQL의 데이터 형식, 변수, 형변환 정리
데브마우스
2024. 1. 3. 12:01
정수형
| 정수형 데이터 형식 |
|||
| Java 데이터 형식 | SQL 데이터 형식 | 바이트 수 | 숫자 범위 |
| byte | TINYINT | 1 | -128 ~ 127 |
| short | SMALLINT | 2 | -32768 ~ 32767 |
| int | INT | 4 | 약 -21억 ~ 21억 |
| long | BIGINT | 8 |
약 -900경 ~ 900경
|
| 데이터 형식 뒤에 UNSIGNED를 작성하여 사용시 음수를 사용하지 않고, 0부터 양수만 사용합니다. | |||
실수형
| 실수형 데이터 형식 | ||
| 데이터 형식 | 바이트 수 | 설명 |
| FLOAT | 4 |
소수점 아래 7자리까지 표현합니다.
|
| DOUBLE | 8 |
소수점 아래 15자리까지 표현합니다.
|
문자형
| 문자형 데이터 형식 | |
| 데이터 형식 | 바이트 범수 |
| CHAR(개수) | 1~255 |
| VARCHAR(개수) | 1~16383 |
|
VARCHAR은 가변길이 문자형으로 사용한 글자만 저장합니다.
MySQL의 성능면에서는 CHAR가 VARCHAR보다 유리합니다. |
|
대량의 데이터 형식
| 대량의 데이터 형식 |
||
| 데이터 형식 | 바이트 수 | |
| TEXT 형식 | TEXT | 1~65535 |
| LONGTEXT | 1~4294967295 (약 4GB) | |
| BLOB 형식 (Binary Long Object) |
BLOG | 1~65535 |
| LONGBLOG | 1~4294967295 (약 4GB) | |
날짜형
| 날짜형 데이터 형식 | ||
| 데이터 형식 | 바이트 수 | 설명 |
| DATE | 3 |
날짜만 저장합니다.
YYYY-MM-DD 형식으로 사용합니다. |
| TIME | 3 |
시간만 저장합니다.
HH:MM:SS 형식으로 사용합니다. |
| DATETIME | 8 |
날짜 및 시간을 저장합니다.
YYYY-MM-DD HH:MM:SS 형식으로 사용합니다. |
★SQL에서 변수 사용
SET과 @변수명으로 사용합니다.
아래는 예제코드입니다.
SET @myvar1 = 5;
SET @myvar2 = 4.25;
SELECT @myvar1;
SELECT @myvar2 + @myvar1;
SET @txt = '가수 이름 ==> ';
SET @height = 166;
SELECT @txt, mem_name FROM member WHERE height > @height;
LIMIT 뒤에 오는 숫자에는 변수를 사용할 수 없습니다. 그러므로 PREPARE와 EXECUTE로 문제를 해결합니다.
아래는 작동하지 않는 SQL문입니다.
-- 오류가 발생하는 코드입니다.
SET @count = 3;
SELECT mem_name, height
FROM member
ORDER BY height
LIMIT @count;
아래는 PREPARE와 EXECUTE로 정상 작동하는 SQL문입니다.
-- 정상 작동 코드입니다.
-- PREPARE와 EXECUTE로 문제를 해결했습니다.
SET @count = 3;
PREPARE mySQL FROM
'SELECT mem_name, height
FROM member
ORDER BY height
LIMIT ?';
EXECUTE mySQL USING @count;
데이터 형변환
명시적 형변환(함수 이용)
함수를 이용하여 명시적인 형변환이 가능합니다. CAST와 CONVERT 함수가 있습니다.
CAST (값 AS 데이터_형식 [ (길이) ] )
CONVERT (값, 데이터_형식 [ (길이) ] )
- 데이터_형식에 올 수 있는 파라미터는 CHAR, SIGNED, UNSIGNED, DATE, TIME, DATETIME등이 있습니다.
- SIGNED는 부호가 있는 정수를 의미하며 UNSIGNED는 부호가 없는 정수를 의미 합니다.
- AS가 필요없는 CONVERT 함수를 더 추천합니다. 왜냐하면 CAST는 데이터 형식 앞에 AS를 작성하여 Alias와 헷갈릴 수 있기 때문입니다.
아래는 모두 날짜형식으로 데이터를 형변환 하는 SQL문입니다.
SELECT CAST('2022@12@12' AS DATE);
SELECT CAST('2022*12*12' AS DATE);
SELECT CAST('2022,12.12' AS DATE);
암시적인 형변환
암시적인 변환은 CAST()나 CONVERT() 함수를 사용하지 않고도 자연스럽게 형이 변환 되는 것을 의미합니다.
SELECT '100' + '200'; -- 출력 300
SELECT 100 + '200'; -- 출력 300
SELECT 0 = 'mega2'; -- 문자는 0으로 변환되었으며 0 = 0이 성립되어 1이 출력됩니다.