데이터형이란?
컬럼이 가질 수 있는 정보의 종류와 데이터가 저장되는 방법을 지정한다.
시스템 데이터형
- SQL서버가 제공하는 데이터형들
사용자 정의 데이터형, systypes
- 특정한 데이터베이스를 위해 사용자가 정의한 데이터형
시스템 데이터형을 사용하여 정의한다.
데이터형의 분류
데이터 종류 및 시스템 데이터형입니다.
Binary
:binary[(n)], varbinary[(n)]
Character
:char[(n)], varchar[(n)]
Date and time
:datetime, smalldatetime
Exact numeric
:decimal[(p[,s])], numeric[(p[,s])]
Approximate numeric
:float[(n]), real
Integer
:int, smallint, tinyint
Special
:bit, timestamp, user-defined datatypes
Text and image
:text, image
문자 데이터형
char
- 고정된 길이의 문자열을 저장한다.
varchar
- 가변 길이 문자열을 저장한다.
열의 정의보다 큰 문자열들은 끝부분을 생략하고 저장한다.
CREATE TABLE chars( id INT NOT NULL, c1 CHAR(10) NOT NULL)
INSERT chars VALUES(1, 'abc') INSERT chars VALUES(2, 'abcdefg') INSERT chars VALUES(3, ' ef') INSERT chars VALUES(4, 'ab ef')
|
Binary 데이터형
문자 데이터형과 유사
CREATE TABLE binary_example( id INT NOT NULL, bin_column BINARY(4) NOT NULL)
INSERT binary_example VALUES(19, 0xa134c2ff)
|
Timestamp 데이터형
timestamp의 모든 갱신은 자동적이다.
- 사용자가 직접 timestamp 값을 지정할 수 없다.
하나의 테이블은 오직 한개의 timestamp 열만을 가진다.
Text, Image 데이터형
많은 양의 데이터 자장을 필요로하는 응용을 위해 제공되는 데이터형
- 긴문장, 디지털 사진 등을 저장한다.
여기서 잠간..... 이미지 자료형에 대해서는 논란이 많습니다. ^_^
특히 MSSQL DB에 이미지를 저장하고 ASP나 VB로 불러올 경우 이지요...
결론을 먼저 말씀 드리면... 아주아주 안 조은 방법이라고 합니다... 우지게 느리대요..
MSSQL에 이미지를 저장하면... 이상하게 저장이 됩니다.
저역시 각종 문서를 참조해.... MSSQL에 저장된 이미지를 불러 오려고 하는데...
실패를 하고 현재는 다른 작업을 하는 중입니다... ^_^
이해해 주시구.........
정확히 제가 이미지를 저장후 ASP나 VB로 불러오는 프로그램을 제작하게 되면
꼭 공개하겠습니다... ^_^ 긴말을 못드려 죄송...
VARYING 키워드
VARYING 키워드
- 가변길이 문자와 이진 문자를 허용한다.
- character, char, binary 등의 데이터형에서 유효하다.
성능 향상을 위해 사용하지 않는 것이 좋다.
- 가능하면 작은 자료형을 사용하는 것이 좋다.
정의된 데이터형 시스템 데이터형
binary VARYING varbinary
char VARYING varchar
character(n) char(n)
character char(1)
character VARYING var char(n)
dec decimal
double precision float
float[(n)] for n=1-7 real
float[(n)] for n=8-15 float
integer int
논리 데이터형
bit 데이터형
- 0과 1값을 가지는 플래그 열을 나타내기 위해 사용된다.
- NULL값을 가질 수 없다.
- 여러개의 bit열이 하나의 바이트에 저장된다.
CREATE TABLE bit_example( id INT NOT NULL, description VARCHAR(30) NULL, active BIT NOT NULL)
|
수치 데이터형
정수 데이터형
- int, smallint, tinyint
근사수치 데이터형
- float, real
정밀수치 데이터형
- numeric, decimal
금액을 나타내는 데이터형
- money, smallmoney
수치 데이터형 - 근사 수치 데이터
이진 수치 시스템이 허용하는 정도의 정확성을 가지는 수치데이터
- 유동 소수점 값들의 표현을 위한 것
real
- 정확도 : 1~7
float
- 정확도 : 8~15
수치 데이터형 - 정밀 수치 데이터
최소 유효 자리까지 정확도를 보존할 수 있는 수치데이터
- 근사 오류가 발생하기 쉬운 회계 응용등에서 유용하다.
두가지 정밀 수치 데이터형의 제공
- decimal[(p[,s])] ( = real)
- numeric [(p[,s])]( = float)
- precision(p)
- 전체 정확도
- 소수점을 기준으로 양쪽에 저장될 수 있는 자리 수의 최대 값
- scale(s)
- 소수점의 오른쪽에 저장될 자리수의 최대 합계
사용자 정의 데이터형
새로운 사용자 정의 데이터형 추가
- sp_addtype 프로시져 또는 SQL EM의 사용
기존의 사용자 정의 데이터형 삭제
- sp_droptype 프로시져 또는 SQL EM사용
정의된 사용자 정의 데이터형의 목록보기
- sp_help 프로시져
사용자 정의 데이터형의 추가
sp_addtype 프로시져
sp_addtype typename, phystype[,nulltype]
- typename
생성할 사용자 정의 데이터형의 이름
- phystype[(length)]
사용자 정의 데이터형을 구성하는 시스템 데이터형
char, varchar, binary, varbinary의 경우에는 반드시 길이가 명시되어야한다.
- nulltype
NULL이나 NOT NULL 옵션의 지시
CREATE TABLE 문에서 명시된 경우에는 이 조건은 무시된다.
EXEC sp_addtype ssn, 'VARCHAR(11)', 'NOT NULL'
go
sp_help ssn
go
|
사용자 정의 데이터형의 삭제
/*EXEC sp_droptype 'ssn' */
sp_help ssn
| |