SQL Server 2005에는 xml 이라는 데이터 형식이 새롭게 추가되었습니다.
xml 데이터 형식의 도입으로 XML document와 fragment를 SQL Server 데이터베이스에 저장할 수 있게 되었습니다. xml 데이터 유형이 있다는 걸 기억해 두시고, xml 데이터 형식을 활용하시기 바랍니다. 참고로 xml 데이터 형식에는 최대 2GB까지 저장할 수 있습니다.
xml 형식의 변수는 다음과 같이 정의합니다.
declare @x xml
xml 열은 다음과 같이 정의하면 됩니다.
CREATE TABLE XmlTest (id int identity, xcol xml);
XQuery를 사용하면 xml 형식의 열, 매개 변수, 변수에 저장된 XML 인스턴스를 쿼리할 수 있습니다. 또한 XML DML(XML 데이터 조작 언어)을 사용하여 XML 인스턴스에 업데이트를 적용할 수도 있습니다.
xml 데이터 형식을 사용하면 열에 데이터가 저장될 때 well-formed인지 SQL Server가 점검하고 만일 well-formed가 아닌 경우에는 데이터 저장이 실패합니다. 예를 들어 다음과 같이 시작 태그와 끝 태그의 짝이 맞지 않는 데이터는 INSERT가 실패합니다.
INSERT INTO XmlTest VALUES ('');
xml 데이터는 xml 데이터 형식을 사용하는 것이 데이터 유효성 측면이나 쿼리의 편의성 측면에서 좋습니다. 만일 xml 데이터 형식을 몰라서 varchar로 정의하여 사용하고 있는 테이블의 열을 max로 변경하고 싶다면 다음과 같이 ALTER TABLE을 사용하여 변경 가능합니다. 열 유형을 문자열에서 형식화된 xml로 변경하는 경우에는 열에 이미 저장되어 있는 문서의 유효성을 점검하므로, 이와 같이 문자열을 xml 형식으로 변경하고자 하는 경우에는 xml 문서가 올바른 형식이어야 합니다.
CREATE TABLE T (Col1 int primary key, Col2 nvarchar(max))
GO
-- 데이터INSERT
ALTER TABLE T ALTER COLUMN Col2 xml
GO
xml 열에 저장된 데이터는 다양한 형태로 조회 가능합니다.
SELECT xcol FROM XmlTest for xml auto, type, xmlschema
이미 CHECK 제약 조건에서 설명한 사항인데 xml 형식의 열에 제약 조건을 정의할 수는 있지만 제약 조건을 지정할 때 XML 데이터 유형 메서드를 사용할 수는 없습니다. 사용자 정의 함수인 래퍼를 만들어 xml 데이터 유형 메서드를 래핑하고 CHECK 제약 조건에 사용자 정의 함수를 지정해야 한다는 거 잊지 마세요. 예제는 CHECK 제약 조건에 있으므로 참고하세요.
'연구개발 > SQL2005' 카테고리의 다른 글
[SQL 2005 GUIDE] 큰 값 데이터 형식과 문자열 함수 (0) | 2009.07.24 |
---|---|
[SQL 2005 GUIDE] varchar(max) 열이 행 내에 저장되는지 확인하는 스크립트 (0) | 2009.07.24 |
[SQL 2005 GUIDE] Wait 점검 스크립트 (0) | 2009.07.23 |
[SQL 2005 GUIDE] SQL Server TCP 포트 변경하기 (0) | 2009.07.23 |
[SQL 2005 GUIDE] 추적 데이터를 테이블에 저장하기 (0) | 2009.07.23 |