본문 바로가기
SQL

SQL - 데이터의 형식

by hyeon1016 2024. 11. 6.

데이터의 형식

데이터의 형식은 크게 숫자형, 문자형(날짜형)으로 나누어진다.

 

정수형

데이터 형식 바이트 범위
TINYINT 1 -128 ~ 127
SMALLINT 2 -32,768 ~ 32.767
INT 4 약 -21억 ~ +21억
BIGINT 8 약 -900경 ~ +900경

 

*INT를 가장 많이 사용한다.

*UNSIGNED 예약어 : 값의 범위가 0부터 시작된다.

 

실수형

소수점이 있는 숫자를 저장할 때 사용한다.

데이터 형식 바이트 설명
FLOAT 4 소수점 아래 7자리까지 표현
DOUBLE 8 소수점 아래 15자리까지 표현

 

문자형

데이터 형식 바이트 설명
CHAR(개수) 1~255 - 고정길이 문자형으로 자릿수가 고정되어 있다.
- 공간이 낭비될 수 있다.
- 성능이 빠르다.
- 전화번호 같은 개수가 고정된 문자에 사용한다. 
VARCHAR(개수) 1~16383 - 가변길이 문자형으로 VARCHAR(10)에 3글자만 저장할 경우
  3자리만 사용한다.
- 공간을 효율적으로 활용할 수 있다.
- 사용하지 않는 공간은 반납해야하므로 성능이 느리다.
- 동적인 문자에 사용한다.

 

전화번호, 등번호처럼 숫자로서의 의미가 없는 숫자는 문자로 사용할 수 있다. 숫자로서 의미를 가지려면 다음 2 가지중 1 가지는 충족해야 한다.

  • 더하기/빼기 등의 연산에 의미가 있다.(산술 연산자)
  • 크다/작다 또는 순서에 의미가 있다.(비교 연산자)

 

대량의 데이터 형식

사진, 영상, 자막과 같은 큰 데이터를 저장하기 위해서는 다음과 같은 형식을 사용해야 한다.

데이터 형식 바이트
TEXT형식 TEXT 1~65535
LONGTEXT 1~4294967395
BLOB형식 BLOB 1~65535
LONGBLOB 1~4294967295

 

*BLOB은 Binary Long Object의 약자로 사진, 영상 같은 파일을 뜻한다.

 

날짜형

날짜 및 시간을 저장할 때 사용한다.

데이터 형식 바이트 설명
DATE 3 날짜만 저장. YYYY-MM-DD 형식으로 사용
TIME 3 시간만 저장. HH:MM:SS 형식으로 사용
DATETIME 8 날짜 및 시간을 저장. YYYY-MM-DD HH:MM:SS 형식으로 사용

 

변수

SQL도 다른 프로그래밍 언어처럼 변수를 선언하고 사용할 수 있다.

*@는 지역변수 @@는 전역변수를 뜻한다.

SET @변수 = 값; ==> 변수 선언 및 초기화
SELECT @변수; ==> 변수의 값 출력
SET @myVar1 = 10;
SET @myVar2 = 4.25;

SELECT @myVar1;
SELECT @myVar1+@myVar2;

SET @txt = '가수 이름=>';
SET @height = 166;

SELECT @txt, mem_name, height 
	FROM member
	WHERE height > @height;

 

특징

- 변수를 선언할 때 데이터 타입을 지정해주지 않아도 된다.

- 변수끼리의 연산이 가능하다.

- 변수를 다른 명령어에서 사용할 수 있다.

 

PREPARE / EXECUTE

LIMIT절에는 변수를 사용할 수 없는데 이를 해결하는 것이 바로 PREPARE / EXECUTE다. JAVA의 PreparedStatement와 똑같은 기능을 하며 사용 방법도 비슷하다. 

SET @count=3;
PREPARE mySQL FROM 'SELECT mem_name, height FROM member ORDER BY height LIMIT ?';
EXECUTE mySQL USING @count;

 

- SET @count = 3;로 LIMIT에 사용할 변수를 설정한다.
- PREPARE 명령으로 SQL 쿼리를 미리 준비한다.. 이때, LIMIT 절에서 사용할 자리 표시자?를 설정한다.
- EXECUTE 명령으로 준비한 쿼리를 실행한다. USING @count를 통해 @count 변수의 값을 쿼리에 전달한다.

 

 

데이터 형 변환

데이터의 형식을 변환시키는 것을 형 변환이라고 하며, 함수를 사용하여 변환하는 명시적 형 변환과, 자연스럽게 변환되는 암시적인 변환이 있다.

 

명시적 형 변환

CAST(), CONVERT() 함수를 사용하여 데이터의 형식을 변환할 수 있다.

함수 안에 올 수 있는 데이터 타입은 CHAR, SIGNED, UNSIGNED, DATE, TIME, DATETIME등이 있으며, SIGNED는 부호( - )가 있는 정수 UNSIGNED는 부호( - )가 없는 정수를 의미한다.

CAST(값 AS 데이터형식)
CONVERT(값, 데이터형식)
CONVERT()
SELECT CONVERT(AVG(price), SIGNED) AS '평균 가격' 
	FROM buy; 

CAST()
SELECT CAST(AVG(price) AS SIGNED) AS '평균 가격' 
	FROM buy;

 

- 평균 가격의 소수점을 없애기 위한 형 변환이다.

 

SELECT CAST('2022%10%12' AS DATE) AS '날짜';
SELECT CAST('2022*12*12' AS DATE) AS '날짜';
SELECT CONVERT('2021/10/23', DATE) AS '날짜';
SELECT CONVERT('2010^12@04', DATE) AS '날짜';

 

- 특정 문자열을 날짜형으로 변경하는 형 변환이다.

 

SELECT num, CONCAT(CONVERT(price, CHAR), 'X', CAST(amount AS CHAR), '=')
	AS '가격X수량', price*amount AS '구매액'
	FROM buy;

 

- CONCAT()함수 안에서 형 변환을 진행할 수 있다.

 

암시적 형변환

함수를 사용하지 않고도 자연스럽게 형이 변환되는 것을 의미하며, SQL에서 자동으로 데이터형식을 인식하여 변환해 준다.

SELECT '100' + '200'; ==> 300
SELECT CONCAT(100, '200'); ==> 100200
SELECT '100' + 200; ==> 300

'SQL' 카테고리의 다른 글

SQL - 뷰(VIEW)  (0) 2024.11.07
SQL - JOIN  (0) 2024.11.07
SQL - 기본 문법(데이터 변경)  (0) 2024.11.06
SQL - 기본 문법(SELECT)  (4) 2024.11.06
SQL - 기본 문법  (0) 2024.11.05