MS SQL XML 데이터 저장

[Microsoft SQL XML 데이터 타입]
-XML 형식으로 데이터를 지원, XML 형식의 데이터를 찾고, 입력하고, 수정하고, 삭제 가능
-SQL Server 2000 이후 부터 지원
-XML 데이터는 내부적으로 Binary로 저장되며 일반적인 경우 약간의 압축이 제공되어 인스턴스당 2GB 저장 가능
-참고
 http://technet.microsoft.com/ko-kr/library/ms177454.aspx
-예제
/*
테이블 생성 시 XML 형식의 열을 포함하도록 한다.
XML 키워드로 만든 xmldata 로 여러가지 쿼리를 수행한다.
*/
create table YsoftmanTable(id int not null, xmldata xml)
/* id가 1인 행에 XML 형식의 데이터 입력하기 */
insert into YsoftmanTable select 1, '
<?Employee Info?>
<Employee>
 <Name>YoonByoungHoon</Name>
 <Sex>Male</Sex>
 <Phone>123456789</Phone>
</Employee>
'
/* id가 2인 행에 XML 형식의 데이터 입력하기 */
insert into YsoftmanTable select 2, '
<?Employee Info?>
<Employee>
 <Name>BillGates</Name>
 <Sex>Male</Sex>
 <Phone>55555</Phone>
</Employee>
'
/* 내용 확인 */
select * from YsoftmanTable
/* id가 2인 행에서 Employee 하위 요소인 Name 요소의 모든 내용 찾기 */
select xmldata.query('/Employee/Name') from YsoftmanTable where id=2
/* id가 2인 행에서 Employee 하위에 Address 요소를 첫번째 위치로 추가 */
update YsoftmanTable set xmldata.modify('insert <Address>Seattle</Address> as first into (/Employee)[1]') where id=2
/* id가 2인 행에서 Employee 하위에 Mobile 요소를 Phone 요소 앞에 추가 */
update YsoftmanTable set xmldata.modify('insert <Mobile>2222</Mobile> before (/Employee/Phone)[1]') where id=2
/* id가 2인 행에서 Employee 하위에 Mobile 요소의 값을 변경 */
update YsoftmanTable set xmldata.modify('replace value of (/Employee/Mobile/text())[1] with "333"') where id=2
/* id가 2인 행에서 Employee 하위 요소인 Name 요소의 모든 내용 삭제 */
update YsoftmanTable set xmldata.modify('delete /Employee/Name') where id=2
/* id가 2인 행 삭제 */
delete from YsoftmanTable where id=2
/* 테이블 삭제 */
drop table "YsoftmanTable"


comments:

댓글 쓰기