여러분이 사용하고 계신 브라우저는 HTML5를 지원하지 않기 때문에 몇몇 요소가 제대로 보이도록 JScript를 사용하고 있습니다. 하지만 여러분의 브라우저 설정에서 스크립트 기능이 꺼져있으므로, 현재 페이지를 제대로 확인하시려면 스크립트 기능을 켜주셔야 합니다. SQL - 데이터 유형
SQL – 데이터 유형
2년전 작성
1년전 수정

데이터 유형

데이터베이스 테이블의 각 열에는 이름과 데이터 유형이 있어야 한다.

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 바이트
참고

Mingg`s Diary
밍구
공부 목적 블로그