'SQL'에 해당되는 글 36건

  1. 2009.10.24 SQL Server 2005 TSQL - 1. 새로운 데이터 타입

 
내용

•새로운 데이터 타입
•새로운 함수 – Ranking 함수
•새로운 관계형 연산자
•Except와 Intersect
•TOP - 매개 변수 지원
•OUTPUT 절
•Common Table Expression
•스냅샷 격리
•DDL 트리거
•향상된 오류 처리
 
 

•새로운 데이터 타입
 
1.. varchar(max)
 
문자열/이진 데이터의 크기가 상당히 가변적이며 8,000 바이트를 초과할 수 있는 경우에 사용함
문자열 함수 사용 가능함
작은 데이터와 큰 데이터가 혼합된 환경에서 단일화된 프로그래밍 모델을 제공함
비교
트리거
문자열 결합
집계
매개 변수
변수
Included Column 인덱스
Text 타입보다 varchar(max) 타입의 사용을 권장함
 
SQL Server 2000
CREATE TABLE test1 (
  c1 int,
  c2 varchar(5000),
  c3 varchar(5000)
);
CREATE TABLE test2 (
 c1 int,
 c2 varchar(5000),
 c3 text
);

경고: 'test' 테이블이 만들어졌으나 최대 행 크기(10029)가 행 당 최대 바이트 수(8060)를 초과합니다. 결과 행 길이가 8060바이트를 넘으면 이 테이블의 행에서 INSERT 또는 UPDATE가 실패합니다.

INSERT test1 VALUES (1, replicate('a', 5000), replicate('b', 5000))

서버: 메시지 511, 수준 16, 상태 1, 줄 1
허용된 최대값(8060)보다 큰 크기의 행(10017)을 만들 수 없습니다.

 
SQL Server 2005
CREATE TABLE test1 (
  c1 int,
  c2 varchar(5000),
  c3 varchar(5000));

INSERT test1 VALUES (1, replicate('a', 5000), replicate('b', 5000));
 
CREATE TABLE test2 (
  c1 int,
  c2 varchar(5000),
  c3 varchar(max));

INSERT test2 VALUES (1, replicate('a', 5000), replicate('b', 9000));
 

2.. varbinary(max)
 
varbinary의 확장
2GB까지 지원됨
MAX라는 크기 지정자를 사용함
컬럼에 저장되는 데이터의 길이가 8,000 바이트를 초과할 때 사용함
 
데이타타입
용도
binary
컬럼에 저장되는 데이터의 크기가 일정한 경우
varbinary
컬럼에 저장되는 데이터의 크기가 상당히 가변적인 경우
varbinary(max)
컬럼에 저장되는 데이터의 크기가 8,000 바이트를 초과하는 경우
image 타입 대체
 
3.. 행 오버플로 데이터
 
SQL Server 2005에서는 8KB를 초과하는 행 오버플로 데이터가 지원됨
varchar, nvarchar, varbinary,  sql_variant 컬럼이 있는 테이블의 경우에는 8K 페이지 크기의 제약이 완화됨
이 컬럼들이 결합된 경우에는 8,060 바이트의 제한을 초과할 수 있음
이들 각각의 컬럼의 길이는 여전히 8,000 바이트 이내이어야 함
테이블에 저장되는 행의 전체 길이가 8,060 바이트 한계를 초과하면 SQL Server 가 하나 이상의 가변 길이 컬럼을 가장 너비가 넓은 컬럼부터 ROW_OVERFLOW_DATA 할당 단위에 있는 페이지로 동적으로 이동시킴
참고
varchar(max), nvarchar(max), varbinary(max), text, image, xml 컬럼은 길이가 8,000 바이트 이내이어야 하는 제한 사항이 적용되지 않음

 
4.. XML 데이터 타입
 
T-SQL 에서 다른 데이터 타입과 동일하게 사용 가능함
테이블의 컬럼
저장 프로시저 또는 사용자 정의 함수(UDF)의 매개 변수
변수
인덱스 생성 가능
데이터 조작
XQuery (W3C 표준) + DML
XQuery를 이용한 XML 데이터의 조회 및 수정이 가능함
예:
  CREATE TABLE T (
   ProductID            int primary key,
   CatalogDescription  xml)
  insert into T values(1,'<ProductDescription ProductID="1" ProductName="SomeName" />')


Posted by 펀펀