SQL 데이터 형식 알아보기(숫자형, 문자형, 날짜형)

 

SQL에서 테이블을 만들 때, 데이터 형식을 지정합니다. 다양한 데이터 형식은 각각의 데이터 유형에 맞게 최적화 되어 있고, 올바른 데이터 형식을 가진 테이블은 데이터의 효율성과 무결성을 보장합니다. 데이터 형식은 크게 (1)숫자형, (2)문자형, (3)날짜형이 있습니다. 각 데이터 형식에 대해 알아보겠습니다.

 

1. 데이터 형식

1.1 정수형

숫자형 데이터에서 정수형 데이터는 인원 수, 수량, 가격 등 데이터에 사용합니다. 정수형 데이터 형식들은 다음과 같습니다.

 

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

 

정수형 데이터 형식을 지정하여 테이블을 만드는 SQL 문은 다음과 같이 작성합니다. 만약, 데이터 형식의 범위를 넘어가는 데이터를 입력하면, Out of range 오류가 발생합니다.

USE Rec_db;
CREATE TABLE table_1(
	tinyint_col TINYINT,
    	smallint_col SMALLINT,
    	int_col INT,
    	bigint_col BIGINT);

 

* UNSIGNED 예약어 사용

만약 키(height)를 기록하는 열이 있다면, 어떤 데이터 형식을 적용해야 효율적일까요? 키가 30000cm를 넘어가는 일이 없으므로 제일 작은 단위인 TINYINT를 적용하는게 좋을 것 같습니다. 다만, TINYINT는 -128부터 127까지의 값을 가지기 때문에, 사람들의 키를 표현하기 부적합해 보입니다. 그렇다고 SMALLINT를 사용하는 것을 공간 낭비가 될 것 같습니다.

 

이때 사용할 수 있는게 UNSIGHNED 입니다. 예를 들어,TINYINT가 -128에서 128까지의 값을 갖는 반면, TINYINT UNSIGNED는 같은 공간을 차지하지만, 음수 값을 제외하고 0~255의 값을 갖습니다. 따라서 키를 나타내는 열은 TINYINT UNSIGHNED로 구성하는게 효율적입니다.

 

1.2 문자형

문자형은 글자로 이루어진 데이터를 저장하기 위해 사용됩니다. 문자형 데이터 형식 역시, 데이터 형식을 통해 최대 글자 개수를 지정합니다.

데이터 형식 바이트
CHAR(개수) 1~255
VARCHAR(개수) 1~16383

 

  • CHAR: 고정 길이 문자형 (최대 255자 까지 지정 가능)
    • 만약 '가나다' 데이터를 CHAR(8) 형식의 열에 저장하면 8자리 공간을 확보하고, 앞에 3자리를 사용함.

 

  • VARCHAR: 가변 길이 문자형 (최대 16383자 까지 지정 가능)
    • 만약 '가나다'데이터를 VARCHAR(8)에 저장할 경우, 데이터의 3자리만을 사용함. 단, 최대 길이는 8
    • VARCHAR이 CHAR보다 공간을 효율적으로 활용하지만, SQL 내부적으로 성능 면에서는 고정 길이의 문자열은 CHAR로 설정하는 것이 좋음.

 

* 대량의 데이터 형식

CHAR 형식과 VARCHAR 형식 모두 비교적 작은 데이터 공간을 제공하기 때문에, 다음과 같은 데이터 형식을 사용함.

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

 

TEXT로 지정하면 최대 65535자 까지, LONGTEXT로 지정하면 최대 약 42억자까지 지정이 가능합니다.

BLOB은 Binary Long Object의 약자로 글자가 아닌 이미지/동영상 데이터입니다.

 

1.3 날짜형

날짜형은 날짜 및 시간 데이터를 저장할 때 사용합니다.

데이터 형식 바이트 설명
DATE 3 날짜 데이터. YYYY-MM-DD 형식
TIME 3 시간 데이터. HH:MM:SS 형식
DATETIME 8 날짜 및 시간 데이터. YYYY-MM-DD HH:MM:SS 형식

 

2. 데이터 형 변환

데이터를 관리하다 보면, 데이터의 형식을 변환해야하는 경우가 있습니다. 테이블의 데이터 형식을 변환 할 때는 CAST(), CONVERT() 함수를 사용합니다. 다음은 가격(price 열)의 평균 값을 정수형으로 변환하는 코드입니다.

SELECT AVG(price) '평균 가격' FROM buy; --> 정수형

SELECT CAST(AVG(price) AS SIGNED) '평균 가격' FROM buy;
--> SIGNED는 부호가 있는 정수, UNSIGNED는 부호가 없는 정수를 의미

 

반응형

'SQL' 카테고리의 다른 글

SQL 시간 데이터 다루기  (1) 2024.01.14
SQL GROUP BY 절 이해하기: 주요 특징  (1) 2023.12.21
SQL 기본 문법 알아보기  (0) 2023.12.14
SQL 기초 알아보기  (0) 2023.12.14