실무에서 자주 사용되는 데이터 타입에 대해 알아보자!
정수
Tinyint
: 소형 테이블의 PK 타입으로 자주 사용된다.Bigint
: 대략 920경 정도이다.
실수
🚨 위 부동소수점 타입들은 소수점 표현 시 근사치를 나타내게 된다. 표현 가능한 소숫점 자릿수가 제한되기 때문이다.
돈 계산과 같이 정확한 소수점 표현이 필요하다면 decimal
타입을 사용하자.
decimal
타입은 4~16byte로 비교적 메모리를 많이 사용하긴 하지만, 소수점을 정확히 표현하기 때문에, 돈 계산과 같이 정확한 수치를 다뤄야 하는 경우에는 실수 타입으로 deciaml
사용을 권고하고 있다. numeric
이라는 타입도 존재하는데, deciaml
하고 똑같다고 보면된다. 그러니깐 decimal
을 그냥 사용하자.
문자
char
: 고정길이 타입이다.char(10) = 'ab'
와 같이 2글자만 할당해도 10byte 모두 사용한다.varchar
: 가변길이 타입이다.varchar(50) = 'ab'
와 같이 2글자만 할당하면 2byte만 사용하여 메모리를 효율적으로 사용한다. 따라서varchar
를 보통 많이 사용한다. 보통 50 정도로 할당해준다.Text
: 가변길이 타입이다.varchar(max)
와 같다고 보면된다. 엄청 큰 내용들의 문자들을 집어넣을 때 사용한다.
🚨 주의
varchar(max)
와Text
타입은 크기가 매우 클 수 있기 때문에 PK로 정하거나, 인덱스 생성하거나 정렬 등을 할 수 없게 되므로 주의하자. 매우 큰 문자열을 가지고 인덱싱, 정렬 등을 하는 것은 성능 상 매우 안 좋기 때문이다.
유니코드(unicode)
문자 타입에 접두사로 n
만 붙여주면 유니코드 문자데이터로 인코딩된다.
날짜, 시간, 화폐
- 날짜와 시간을 표현할 때는 표현하려는 시간 범위와 메모리량을 고려하여
datetime
과smalldatetime
둘 중에 하나를 알맞게 사용하자. - 타임존을 고려한 글로벌한 서비스의 경우
timestamp
타입을 사용하는 것이 권장되고 있다. - 화폐 단위는 사용하지 말자. 대신
decimal
을 사용하자.
unique identifier
NEWID()
함수는 GUID를 생성해준다. 이것을 사용할 바에 차라리 범위가 매우 큰 bigint
를 사용하자.
1 |
|
GUID ???
SQL Server에서 NEWID() 함수는 새로운 GUID(전역 고유 식별자)를 생성해준다. GUID는 전 세계적으로 고유한 값을 나타내는 128비트 숫자이다.