Notice
Recent Posts
Recent Comments
Link
관리 메뉴

데브마우스

[SQL] SQL의 데이터 형식, 변수, 형변환 정리 본문

데이터베이스/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이 출력됩니다.