컴퓨터 공부/XML

[5월 22일 3교시] SQL을 사용하여 XML 데이터 받아오기

려리군 2009. 5. 22. 16:08

외래키 : 다른 테이블에 있는 기본키.

MSSQL에서는 원하는 외래키 속성값을 다른 테이블 기본키 값으로 드래그하면 테이블 간에 서로 관계가 형성된다.


SELECT...FOR XML 구문

형식

SELECT 열 리스트 FROM 테이블 원본 WHERE 검색 조건 FOR XML AUTO|RAW|EXPLICIT

[,XMLDATA][,ELEMENTS][,BINARYBASE64]


Raw모드

예시)

select orderid, productid, unitprice, quantity

from [order details]

where orderid=10248

for xml raw


결과)

<row orderid="10248" productid="11" unitprice="14.0000" quantity="12"/>

<row orderid="10248" productid="42" unitprice="9.8000" quantity="10"/>

<row orderid="10248" productid="72" unitprice="34.8000" quantity="5"/>


※ alias를 통해 해당 태그의 속성 이름을 지정할 수 있다.

※ aggregation 함수 = 집합함수.


조인할 경우 모든 속성을 한 element에 찍어준다.


Auto 모드

조회된 테이블 명을 XML의 엘레먼트 이름으로 사용

테이블 이름에 공백이 있으면 인코딩된 문자로 표현

컬럼 alias로 element명 재지정 가능


조인할 경우 더 큰쪽(예시의 왼쪽)에 대한 속성은 부모 element로 작은쪽(예시의 오른쪽)에 대한 속성은 자식 element들로 구성된 XML을 보여준다.


예시)

Select Invoice.OrderID InvoiceNo, OrderDate, ProductID, UnitPrice, Quantity 

FROM Orders Invoice JOIN [Order Details] Item

ON Invoice.OrderID = Item.OrderID

WHERE Invoice.OrderID=10248

FOR XML AUTO


결과)

<Invoice InvoiceNo="10248" OrderDate="1996-07-04T00:00:00">

<Item ProductID="11" UnitPrice="14.0000" Quantity="12"/>

<Item ProductID="42" UnitPrice="9.8000" Quantity="10"/>

<Item ProductID="72" UnitPrice="34.8000" Quantity="5"/>

</Invoice>


Explicit 모드

Tag 컬럼 : 각각의 열을 표현할 때 유일한 값으로 식별
Parent 컬럼 : element 중첩을 제어할 때 사용

Universal Table의 사용
형태
[ElementName!TagNumber!AttributeName!Directives]
[엘레먼트이름!Tag번호!속성이름!지시자]


'컴퓨터 공부 > XML' 카테고리의 다른 글

DOM 실습 소스  (0) 2009.05.23
[5월 22일 1교시] SAX  (0) 2009.05.22
[5월 20일 2교시] DOM  (0) 2009.05.20
[5월 19일 3교시] XSLT 실습  (0) 2009.05.19
[5월 19일 2교시] XSLT elements 2  (0) 2009.05.19