SQL/XML로 관계형 데이터와 XML을 함께 다루는 방법

SQL/XML의 XML 생성·질의·변환 기능과 XMLELEMENT, XMLTABLE을 활용한 관계형 데이터 통합 방식을 정리한다.

2026-08-14 · 최초 발행 2025-10-14

SQL 안에서 XML을 생성하고 질의하는 방식

SQL/XML은 관계형 데이터베이스의 표준 질의 언어인 SQL에 XML 처리를 결합한 기술이다. 관계형 데이터와 XML 데이터를 서로 변환하고, 두 형식을 섞어 질의할 수 있다. XML 기반 데이터 교환, 웹 서비스, 시스템 간 연계처럼 데이터 표현 방식이 다른 환경에서 쓰인다.

SQL 환경에서 XML 문서를 만들고, XML 데이터를 질의·변환·저장하는 표준 확장 기능으로 볼 수 있다. XML 문서 생성, 관계형 데이터의 XML 변환, XPath·XQuery 기반 질의, 양방향 데이터 매핑을 지원한다.

이 기능은 이기종 시스템 사이의 데이터 호환성을 확보하고 XML 기반 데이터를 통합하기 위한 수단이다. 웹 서비스와 SOA 환경을 지원하며, 비정형·반정형 데이터를 다루거나 표준 기반 데이터 교환이 필요한 경우에 적용할 수 있다.

생성부터 테이블 변환까지의 기능

관계형 데이터를 XML 문서로 구성할 때는 XMLELEMENT, XMLFOREST, XMLAGG, XMLCONCAT 등을 사용한다. XML 문서 내부를 찾거나 조건을 적용해야 한다면 XMLQUERY로 XPath/XQuery 문법 기반 질의를 수행한다.

XML 데이터 저장을 위한 전용 데이터 타입으로는 XMLTYPE과 같은 형태가 제공된다. 반대로 XML 문서를 관계형 테이블 구조로 옮길 때는 XMLTABLE을 사용한다. 이 기능들을 표준 SQL과 함께 사용하면 관계형 데이터와 XML 데이터를 혼합해 질의할 수 있다.

관계형 DB와 외부 XML이 만나는 지점

SQL/XML 함수XMLTABLE 변환관계형 데이터베이스XML 문서 생성 서비스 / 시스템 연계외부 XML 데이터

SQL/XML은 관계형 데이터에서 XML을 만들고, 외부 XML을 다시 테이블 형식으로 가져오는 흐름을 제공한다. 데이터 교환과 통합 처리에 필요한 변환 과정을 SQL 계층에서 다룰 수 있다는 점이 핵심이다.

XML 형식이 필요한 연계 업무

웹 서비스에서는 DB에서 XML 형식의 응답 데이터를 바로 생성해 SOAP/REST 서비스로 전달할 수 있다. 서로 다른 DBMS 사이에서는 XML 문서를 교환 형식으로 사용해 데이터를 전달할 수 있다.

전자정부 표준 프레임워크처럼 XML 기반 표준 데이터 포맷으로 정보를 주고받는 환경도 적용 대상이다. IoT·산업 데이터 처리에서는 XML 기반 센서 데이터와 관계형 데이터를 함께 분석하는 데 활용할 수 있다.

관계형 행을 XML 문서로 구성하기

SELECT XMLELEMENT(NAME "Customer",
           XMLFOREST(cust_id AS "ID", cust_name AS "Name", city AS "City"))
FROM customers;

XMLELEMENT는 XML 태그를 생성한다. XMLFOREST는 여러 컬럼을 각각 XML 요소로 변환한다.

XML 문서를 행과 열로 매핑하기

SELECT *
FROM XMLTABLE(
    '/Customers/Customer'
    PASSING xml_data
    COLUMNS
        cust_id   NUMBER       PATH 'ID',
        cust_name VARCHAR2(50) PATH 'Name',
        city      VARCHAR2(50) PATH 'City'
);

XMLTABLE은 XML 문서를 행·열 형태의 데이터로 매핑한다.

데이터 교환 계층으로서의 SQL/XML

XML 기반 데이터 포맷을 사용하면 다양한 시스템과의 호환성을 확보할 수 있다. DB에서 XML 생성과 변환을 직접 처리하므로 개발 생산성을 높이고, 표준 SQL에 통합된 방식으로 데이터 일관성을 유지할 수 있다. SOA/ESB 환경에서는 메시지 변환과 통합 로직을 단순화하는 데 적합하다.

SQL/XMLXML데이터베이스데이터 통합XQuery