자료형 | 데이터 크기 (byte) | 설명 |
---|---|---|
bit | 1 | 불리언 형식으로 참 (TRUE, 1) 또는 거짓 (FALSE,0)으로 사용 |
tinyint | 1 | 정수 데이터를 사용하는 정확한 숫자 자료형으로 숫자를 저장할 때 가장 많이 사용 |
smallint | 2 | |
int | 4 | |
bigint | 8 | |
decimal(p,s) | 5~17 | 전체 자릿수와 소수 자릿수가 고정된 숫자로, 최대 38자리 사용 |
numberic(p,s) | 5~17 | |
float(n) | 4~8 | |
real | 4 | 부동 소수점 숫자 데이터에 사용하는 근사 숫자 자료형 |
smallmoney | 4 | 통화 단위에 주로 사용하며 1/10000까지 정확하게 표현 가능 |
money | 8 |
고정길이 : 실젯값을 입혁하지 않아도 지정한 만큼의 저장 공간을 사용
가변길이 : 실제 입력한 값의 크기만큼만 저장 공간을 사용
유니코드 : 한글이나 특수 문자 등을 저장할 때 사용하며 한 글자당 2byte
- 자료형에서 데이터 크기의 50% 정도만 저장 가능
자료형 | 데이터 크기 (byte) | 설명 |
---|---|---|
char(n) | 0~8000 | 고정 깉이 문자열 |
nchar(n) | 0~8000 | 유니코드 고정 길이 문자열로 4000자 입력 가능 |
varchar ( m┃max) | 0~2^31-1 (2GB) | 가변 길이 문자열로 n 만큼의 크기 지정가능; max를 지정하면 2GB까지 가능 |
nvarchar(n┃max | 0~2^31-1 | 고정 길이의 이진 데이터값 |
binary(n) | 0~8000 | 고정 길이의 이진 데이터값 |
varbinary(n┃max) | 0~2^31-1 | 가변 길이 이진 데이터값; N을 사용하면 1~8000까지 크기를 지정할 수 있고, max를 지정하면 2GB까지 크기 지정 가능; 동영상 이미지등 저장에 사용 |
CREATE TABLE char_table (
col_1 char(50),
col_2 varchar(5),
col_3 nchar(50),
col_4 nvarchar(50
)
GO
INSERT INTO char_table VALUES ('A', 'A', N'A', N'A')
GO
SELECT
col_1, LEN(col_1) AS char_length, DATALENGTH(col_1) AS data_length,
col_2, LEN(col_2) AS char_length, DATALENGTH(col_2) AS data_length,
col_3, LEN(col_3) AS char_length, DATALENGTH(col_3) AS data_length,
col_4, LEN(col_4) AS char_length, DATALENGTH(col_4) AS data_length
FROM char_table
use DoItSQL
GO
CREATE TABLE unicode_table(
col_1 varchar(50),
col_2 nvarchar(50)
)
GO
INSERT INTO unicode_table VALUES ('가',N'가')
GO
SELECT * FROM unicode_table
유니코드 :
문자 형식의 데이터를 저장하고 관리할 때 국가별 코드 페이지가 달라서 서로 호환되지 않는 문제가 있다
하나의 데이터베이스에 영어,한국어,중국어 등 여러 나라의 연어를 함깨 저장해 사용할 때는 코드에 따른 문자가 서로 달라 문제가 발생한다.
- 이러한 문제점을 해결하고자 유니코드 형식을 사용하는데 전 세계에서 사용되는 대부분의 문자에서 단일 인코딩 하는 방법을 정의한다
유니코드 특징 :
-- 테이블 생성
CREATE TABLE doit_unicode (
col_1 varchar(50),
col_2 nvarchar(50)
)
-- 데이터 입력
INSERT doit_unicode VALUES ('ABC', 'ABC')
INSERT doit_unicode VALUES ('가나다','가나다')
INSERT doit_unicode VALUES ('가나다', N'가나다')
--데이터 검색
SELECT * FROM doit_unicode
--테이블 삭제
DROP TABLE doit_unicode
자료형 | 데이터 크기 (byte) | 정확도 | 설명 |
---|---|---|---|
time | 3~5 | 100나노초 | 00:00:00.0000000 ~ 23:59:59.9999999까지 저장 |
date | 3 | 1일 | 0001-01-01~9999-12-31까지 저장되며 날짜만 저장 |
smalldatetime | 4 | 1분 | 1900-01-01 00:00:00 ~ 2079-06-06 23:59:59까지 저장 |
datetime | 8 | 0,00333초 | 1753-01-01 00:00:00.000 ~ 9999-12-31 23:59:59.997 |
datetime2 | 6~8 | 100나노초 | DATETIME 형식에서 확장된 형식; 0001-01-01 00:00:00.0000000 ~ 9999-12-31; 23:59:59.9999999까지 저장 |
datetimeoffset | 8~10 | 100나노초 | 0001-01-01 00:00:00.0000000 ~ 9999 -12-31; 23:59:59.9999999까지 저장; 타임존 시간을 함께 저장 |
CREATE TABLE data_table(
JustDate date,
JustTime time,
JustDateTime datetime,
JustDateTime2 datetime2);
INSERT INTO date_table
VALUES (SYSDATETIME(), SYSDATETIME(), SYSDATETIME(), SYSDATETIME());
SELECT * FROM date_table;