데이터 유형
데이터베이스 테이블의 각 열에는 이름과 데이터 유형이 있어야 한다.
SQL 개발자는 테이블을 생성할 때 각 열에 저장할 데이터 유형을 결정해야 한다.
데이터 유형은 SQL이 각 열 내부에 예상되는 데이터 유형을 이해하기 위한 지침이며 SQL이 저장된 데이터와 상호 작용하는 방식도 식별한다.
⭐ 데이터 유형은 데이터베이스마다 이름이 다를 수 있다. 그리고 이름이 같아도 사이즈나 기타 디테일이 다를 수 있다.
MySQL 데이터 유형(버전 8.0)
MySQL에는 문자열, 숫자, 날짜 및 시간의 세 가지 주요 데이터 유형이 있다.
문자열 데이터 유형
데이터 형식 | 설명 |
---|---|
CHAR(크기) | 고정 길이 문자열(문자, 숫자 및 특수 문자를 포함할 수 있음). 크기 매개변수는 열 길이를 문자로 지정한다. 0에서 255 사이일 수 있다. 기본값은 1. |
VARCHAR(크기) | VARIABLE 길이 문자열(문자, 숫자 및 특수 문자를 포함할 수 있음). 크기 매개변수는 최대 문자열 길이를 문자로 지정한다. 0에서 65535 사이일 수 있다. |
BINARY(크기) | CHAR()와 같지만 이진 바이트 문자열을 저장한다. size 매개변수는 열 길이를 바이트 단위로 지정한다. 기본값은 1. |
VARBINARY(크기) | VARCHAR()와 같지만 이진 바이트 문자열을 저장한다. size 매개변수는 최대 열 길이를 바이트 단위로 지정한다. |
TINYBLOB | BLOB(Binary Large Objects)용. 최대 길이: 255바이트. |
TINYTEXT | 최대 길이가 255자인 문자열을 보유한다. |
TEXT(크기) | 최대 길이가 65,535바이트인 문자열을 보유한다. |
BLOB(크기) | BLOB(Binary Large Objects)용. 최대 65,535바이트의 데이터 보유한다. |
MEDIUMTEXT | 최대 길이가 16,777,215자인 문자열을 보유한다. |
MEDIUMBLOB | BLOB(Binary Large Objects)용. 최대 16,777,215바이트의 데이터 보유한다. |
LONGTEXT | 최대 길이가 4,294,967,295자인 문자열을 보유한다. |
LONGBLOB | BLOB(Binary Large Objects)용. 최대 4,294,967,295바이트의 데이터 보유한다. |
ENUM(val1, val2, val3, …) | 가능한 값 목록에서 선택한 하나의 값만 가질 수 있는 문자열 개체다. ENUM 목록에 최대 65535개의 값을 나열할 수 있다. 목록에 없는 값이 삽입되면 공백 값이 삽입된다. 값은 입력한 순서대로 정렬된다. |
SET(val1, val2, val3, …) | 가능한 값 목록에서 선택한 0개 이상의 값을 가질 수 있는 문자열 개체다. SET 목록에 최대 64개의 값을 나열할 수 있다. |
숫자 데이터 유형
데이터 형식 | 설명 |
---|---|
BIT( 크기 ) | 비트 값 유형이다. 값당 비트 수는 size 에 지정된다. 크기 매개변수는 1에서 64 사이의 값을 가질 수 있다. 크기 의 기본값 은 1. |
TINYINT( 사이즈 ) | 매우 작은 정수이다. 부호 있는 범위는 -128 ~ 127이다. 부호 없는 범위는 0 ~ 255이다. 크기 매개변수는 최대 표시 너비(255)를 지정한다 . |
BOOL | 0은 거짓으로 간주되고 0이 아닌 값은 참으로 간주된다. |
BOOLEAN | BOOL과 같다. |
SMALLINT( 사이즈 ) | 작은 정수. 부호 있는 범위는 -32768 ~ 32767이다. 부호 없는 범위는 0 ~ 65535이다. 크기 매개변수는 최대 표시 너비(255)를 지정한다 . |
MEDIUMINT( 사이즈 ) | 중간 정수. 부호 있는 범위는 -8388608 ~ 8388607이다. 부호 없는 범위는 0 ~ 16777215이다. 크기 매개변수는 최대 표시 너비(255)를 지정한다. |
INT( 크기 ) | 중간 정수. 부호 있는 범위는 -2147483648 ~ 2147483647이다. 부호 없는 범위는 0 ~ 4294967295이다. 크기 매개변수는 최대 표시 너비(255)를 지정한다. |
INTEGER( 크기 ) | INT(크기)와 같다. |
BIGINT( 크기 ) | 큰 정수. 부호 있는 범위는 -9223372036854775808 ~ 9223372036854775807이다. 부호 없는 범위는 0 ~ 18446744073709551615이다. 크기 매개변수는 최대 표시 너비(255)를 지정한다. |
FLOAT( 크기 , d ) | 부동 소수점 숫자다. 총 자릿수는 size 에 지정된다 . 소수점 이하 자릿수는 d 매개변수에 지정된다. 이 구문은 MySQL 8.0.17에서 더 이상 사용되지 않으며 향후 MySQL 버전에서 제거된다. |
FLOAT( p ) | 부동 소수점 숫자다. MySQL은 결과 데이터 유형에 대해 FLOAT 또는 DOUBLE을 사용할지 여부를 결정하기 위해 p 값을 사용한다. p 가 0에서 24 이면 데이터 유형은 FLOAT()가 된다. p 가 25에서 53이면 데이터 유형은 DOUBLE()이된다 . |
DOUBLE( 사이즈 , d ) | 일반 크기 부동 소수점 숫자다. 총 자릿수는 size 에 지정된다 . 소수점 이하 자릿수는 d 매개변수 에 지정된다. |
DOUBLE PRECISION( 크기 , d ) | |
DECIMAL( 크기 , d ) | 정확한 고정 소수점 수다. 총 자릿수는 size 에 지정된다 . 소수점 이하 자릿수는 d 매개변수에 지정된다. 크기 의 최대 수 는 65입니다. d 의 최대 수 는 30이다. 크기의 기본값은 10. d 의 기본값 은 0. |
DEC( 크기 , d ) | DECIMAL(크기,d)과 같다. |
⭐ 모든 숫자 데이터 유형에는 UNSIGNED 또는 ZEROFILL과 같은 추가 옵션이 있을 수 있다. UNSIGNED 옵션을 추가하면 MySQL은 열에 대해 음수 값을 허용하지 않는다. ZEROFILL 옵션을 추가하면 MySQL은 자동으로 UNSIGNED 속성도 열에 추가한다.
날짜 및 시간 데이터 유형
데이터 형식 | 설명 |
---|---|
DATE | 날짜. 형식: YYYY-MM-DD. 지원되는 범위는 ‘1000-01-01’부터 ‘9999-12-31’까지이다. |
DATETIME( fsp ) | 날짜 및 시간 조합. 형식: YYYY-MM-DD hh:mm:ss. 지원되는 범위는 ‘1000-01-01 00:00:00’부터 ‘9999-12-31 23:59:59’까지이다. 열 정의에 DEFAULT 및 ON UPDATE를 추가하여 자동 초기화를 가져오고 현재 날짜 및 시간으로 업데이트한다. |
TIMESTAMP( fsp ) | 타임스탬프. TIMESTAMP 값은 Unix epoch(‘1970-01-01 00:00:00’ UTC) 이후의 초 수로 저장된다. 형식: YYYY-MM-DD hh:mm:ss. 지원되는 범위는 ‘1970-01-01 00:00:01’ UTC부터 ‘2038-01-09 03:14:07’ UTC까지다. 열 정의에서 DEFAULT CURRENT_TIMESTAMP 및 ON UPDATE CURRENT_TIMESTAMP를 사용하여 현재 날짜 및 시간으로 자동 초기화 및 업데이트를 지정할 수 있다. |
TIME( fsp ) | 시간. 형식: hh:mm:ss. 지원되는 범위는 ‘-838:59:59’ ~ ‘838:59:59’다. |
YEAR | 4자리 형식의 연도다. 4자리 형식으로 허용되는 값: 1901 ~ 2155 및 0000. MySQL 8.0은 2자리 형식의 연도를 지원하지 않는다. |
SQL Server
문자열 데이터 형식
데이터 형식 | 설명 | 최대 크기 | 저장 |
---|---|---|---|
char(n) | 고정폭 문자열 | 8,000자 | 정의된 너비 |
varchar(n) | 가변폭 문자열 | 8,000자 | 2바이트 + 문자 수 |
varchar(최대) | 가변폭 문자열 | 1,073,741,824자 | 2바이트 + 문자 수 |
text | 가변폭 문자열 | 2GB의 텍스트 데이터 | 4바이트 + 문자 수 |
nchar | 고정 너비 유니코드 문자열 | 4,000자 | 정의된 너비 x 2 |
nvarchar | 가변 너비 유니코드 문자열 | 4,000자 | |
nvarchar(최대) | 가변 너비 유니코드 문자열 | 536,870,912자 | |
ntext | 가변 너비 유니코드 문자열 | 2GB의 텍스트 데이터 | |
binary(n) | 고정 너비 이진 문자열 | 8,000바이트 | |
varbinary | 가변 너비 이진 문자열 | 8,000바이트 | |
varbinary(최대) | 가변 너비 이진 문자열 | 2GB | |
image | 가변 너비 이진 문자열 | 2GB |
숫자 데이터 유형
데이터 형식 | 설명 | 저장 |
---|---|---|
bit | 0, 1 또는 NULL일 수 있는 정수. | |
tinyint | 0에서 255까지의 정수를 허용한다. | 1바이트 |
smallint | -32,768에서 32,767 사이의 정수 허용한다. | 2바이트 |
int | -2,147,483,648에서 2,147,483,647 사이의 정수 허용한다. | 4 바이트 |
bigint | -9,223,372,036,854,775,808에서 9,223,372,036,854,775,807 사이의 정수 허용한다. | 8바이트 |
decimal(p,s) | 고정 정밀도 및 스케일 숫자. -10^38 +1에서 10^38 -1 사이의 숫자를 허용한다. p 매개변수는 저장할 수 있는 최대 총 자릿수(소수점 왼쪽 및 오른쪽 모두)를 나타낸다. p는 1에서 38 사이의 값이어야 한다. 기본값은 18. s 매개변수는 소수점 오른쪽에 저장된 최대 자릿수를 나타낸다. s는 0에서 p 사이의 값이어야 한다. 기본값은 0. |
5-17바이트 |
numeric(p,s) | 고정 정밀도 및 스케일 숫자. -10^38 +1에서 10^38 -1 사이의 숫자를 허용합한다. p 매개변수는 저장할 수 있는 최대 총 자릿수(소수점 왼쪽 및 오른쪽 모두)를 나타낸다. p는 1에서 38 사이의 값이어야 한다. 기본값은 18. s 매개변수는 소수점 오른쪽에 저장된 최대 자릿수를 나타낸다. s는 0에서 p 사이의 값이어야 한다. 기본값은 0. |
5-17바이트 |
smallmoney | -214,748.3648에서 214,748.3647 사이의 통화 데이터 | 4 바이트 |
money | -922,337,203,685,477.5808부터 922,337,203,685,477.5807까지의 통화 데이터 | 8바이트 |
float(n) | -1.79E + 308에서 1.79E + 308 사이의 부동 정밀도 숫자 데이터.
n 매개변수는 필드가 4바이트 또는 8바이트를 보유해야 하는지 여부를 나타낸다. float(24)는 4바이트 필드를 보유하고 float(53)은 8바이트 필드를 보유한다. n의 기본값은 53. |
4 또는 8바이트 |
real | -3.40E + 38에서 3.40E + 38 사이의 부동 정밀도 숫자 데이터. | 4 바이트 |
날짜 및 시간 데이터 유형
데이터 형식 | 설명 | 저장 |
---|---|---|
datetime | 1753년 1월 1일부터 9999년 12월 31일까지 3.33밀리초의 정확도. | 8바이트 |
datetime2 | 0001년 1월 1일부터 9999년 12월 31일까지 100나노초의 정확도. | 6-8바이트 |
smalldatetime | 1900년 1월 1일부터 2079년 6월 6일까지 1분의 정확도. | 4 바이트 |
date | 날짜만 저장합니다. 0001년 1월 1일부터 9999년 12월 31일까지만 저장할 수 있다. | 3바이트 |
time | 100나노초의 정확도로만 시간을 저장한다. | 3-5바이트 |
datetimeoffset | 시간대 오프셋이 추가된 datetime2와 동일하다. | 8-10바이트 |
timestamp | 행이 생성되거나 수정될 때마다 업데이트되는 고유 번호를 저장한다. 타임스탬프 값은 내부 시계를 기반으로 하며 실시간과 일치하지 않는다. 각 테이블에는 하나의 타임스탬프 변수만 있을 수 있다. |
기타 데이터 유형
데이터 형식 | 설명 |
---|---|
sql_variant | text, ntext 및 timestamp를 제외한 다양한 데이터 유형의 데이터를 최대 8,000바이트까지 저장할 수 있다. |
uniqueidentifier | GUID(Globally Unique Identifier)를 저장한다. |
XML | XML 형식의 데이터를 저장한다. 최대 2GB까지 저장할 수 있다. |
cursor | 데이터베이스 작업에 사용되는 커서에 대한 참조를 저장한다. |
table | 나중에 처리할 수 있도록 결과 집합을 저장한다. |
MS Access 데이터 유형
데이터 형식 | 설명 | 저장 |
---|---|---|
Text | 텍스트 또는 텍스트와 숫자의 조합에 사용한다. 최대 255자를 저장할 수 있다. | |
Memo | 메모는 많은 양의 텍스트에 사용된다. 최대 65,536자를 저장할 수 있다. 참고: 메모 필드는 정렬할 수 없다. 그러나 검색은 가능하다. | |
Byte | 0에서 255까지의 정수를 허용한다. | 1바이트 |
Integer | -32,768에서 32,767 사이의 정수 허용한다. | 2바이트 |
Long | -2,147,483,648에서 2,147,483,647 사이의 정수 허용한다. | 4 바이트 |
Single | 단정밀도 부동 소수점. 대부분의 소수를 처리한다. | 4 바이트 |
Double | 배정밀도 부동 소수점. 대부분의 소수를 처리한다. | 8바이트 |
Currency | 통화에 사용한다. 최대 15자리의 전체 달러와 소수점 4자리를 포함한다. 팁: 사용할 국가의 통화를 선택할 수 있다. | 8바이트 |
AutoNumber | AutoNumber 필드는 자동으로 각 레코드에 고유한 번호를 부여하며 일반적으로 1부터 시작한다. | 4 바이트 |
Date/Time | 날짜 및 시간에 사용한다. | 8바이트 |
Yes/No | 논리 필드는 Yes/No, True/False 또는 On/Off로 표시될 수 있다. 코드에서 True 및 False 상수(-1 및 0에 해당)를 사용한다. 참고: 예/아니요 필드에는 Null 값이 허용되지 않는다. | 1비트 |
Ole Object | 사진, 오디오, 비디오 또는 기타 BLOB(Binary Large Objects)를 저장할 수 있다. | 최대 1GB |
Hyperlink | 웹 페이지를 포함한 다른 파일에 대한 링크 포함한다. | |
Lookup Wizard | 드롭다운 목록에서 선택할 수 있는 옵션 목록을 입력할 수 있다. | 4 바이트 |
참고
W3C School - SQL Data Types for MySQL, SQL Server, and MS Access
W3C School - SQL Tutorial