1 / 42

SQL/XML

SQL/XML. Bases de Datos Avanzadas. Almacenamiento y Gestión de datos XML. Generalmente los datos se almacenan empleando SGBDR, y para gestionar y consultarlos se utiliza el lenguaje SQL .

imaran
Download Presentation

SQL/XML

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SQL/XML Bases de Datos Avanzadas

  2. Almacenamiento y Gestión de datos XML Generalmente los datos se almacenan empleando SGBDR, y para gestionar y consultarlos se utiliza el lenguaje SQL. En la actualidad, se hace uso de XML para representar los datos de una manera más natural, y necesitan un nuevo lenguaje para la gestión y consulta de los datos; un lenguaje que tenga en cuenta la estructura de un documento XML, así como los valores de sus datos.

  3. Almacenamiento y Gestión de datos XML Hoy en dia, es evidente la supremacía de los SGBDRspara almacenar, actualizar y consultar datos haciendo uso del lenguaje SQL. Sin embargo, actualmente se presentan situaciones en las que se hace necesaria la utilización de datos XML. Así nacen los SGBDR extendidas para dar soporte a XML, que además de dar la posibilidad de almacenar este nuevo tipo de datos, también permite gestionarlos a través de una extensión del lenguaje SQL tradicional.

  4. Almacenamiento y Gestión de datos XML

  5. Funciones de SQL/XML

  6. Generación de datos XML a partir de datos relacionales

  7. Funciones del estándar suministradas por ORACLE SQL/XML

  8. Funciones del estándar suministradas por ORACLE SQL/XML

  9. <Nombre_elemento><Nombre_subelemento>Contenido de la columna es el valor textual</Nombre_subelemento></Nombre_elemento> • <Nombre_elemento><Nombre_subelemento>Contenido de la columna es el valor textual</Nombre_subelemento></Nombre_elemento> • <Nombre_elemento><Nombre_subelemento>Contenido de la columna es el valor textual</Nombre_subelemento></Nombre_elemento> • SELECT XMLELEMENT(“Nombre _elemento", XMLELEMENT(“Nombre_subelemento”, nombre_columna)).getstringval() as "Resultado" • FROM Tabla; • Función XMLELEMENT() La función XMLELEMENT(), permite que se especifique un nombre para el elemento Por cada fila seleccionada se crea un fragmento XML

  10. Función XMLELEMENT() La función getstringval recupera un documento en forma de VARCHAR (por defecto el tamaño del buffer es de 4000 byte) getclobval() permite trabajar con más de 4000 Bytes o caracteres Por cada fila seleccionada se crea un fragmento XML

  11. <Nombre_elemento><Nombre_subelemento>Contenido de la columna es el valor textual</Nombre_subelemento></Nombre_elemento> • <Nombre_elemento><Nombre_subelemento>Contenido de la columna es el valor textual</Nombre_subelemento></Nombre_elemento> • <Nombre_elemento><Nombre_subelemento>Contenido de la columna es el valor textual</Nombre_subelemento></Nombre_elemento> • SELECT XMLELEMENT(“Nombre _elemento", XMLELEMENT(“Nombre_subelemento”, funcion_agregadas(nombre_columna))).getstringval() as "Resultado" • FROM Tabla; • Función XMLELEMENT() La función XMLELEMENT(), permite que se especifique un nombre para el elemento Por cada fila seleccionada se crea un fragmento XML

  12. Función XMLELEMENT() Consulta: Devolver el id de departamento junto a la cantidad de empleados, de acuerdo a la siguiente estructura <Departamento><ID>…</ID> <Cant_empleados>…</Cant_empleados> </Departamento> Por cada fila seleccionada se crea un fragmento XML

  13. <Nombre_elementoNombre_atributo=“Contenido de la columna es el valor”><Nombre_subelemento>Contenido de la columna es el valor textual</Nombre_subelemento></Nombre_elemento> • Nombre_elementoNombre_atributo=“Contenido de la columna es el valor”><Nombre_subelemento>Contenido de la columna es el valor textual</Nombre_subelemento></Nombre_elemento> • Nombre_elementoNombre_atributo=“Contenido de la columna es el valor”><Nombre_subelemento>Contenido de la columna es el valor textual</Nombre_subelemento></Nombre_elemento> • SELECT XMLELEMENT(“Nombre _elemento", XMLATTRIBUTES(Nombre_columna as “Nombre_atributo”),XMLELEMENT(“Nombre_subelemento”,nombre_columna)).getstringval() as "Resultado" • FROM Tabla; • Función XMLELEMENT() y XMLATTRIBUTES() Por cada fila seleccionada se crea un fragmento XML

  14. Función XMLELEMENT() y XMLATTRIBUTES() Por cada fila seleccionada se crea un fragmento XML

  15. SELECT XMLFOREST(Nombre_columna1).getstringval() as “Resultado" • FROM Tabla; • <Nombre_columna1><Contenido de la columna es el valor textual</Nombre_columna1> • <Nombre_columna1><Contenido de la columna es el valor textual</Nombre_columna1> • <Nombre_columna1><Contenido de la columna es el valor textual</Nombre_columna1> • Función XMLFOREST() Todos los elementos se encuentran anidados al mismo nivel. Está función, es una forma fácil de retornar un fragmento que será parte de un documento XML agregado o concatenado, pero no es útil para crear documentos XML por sí solo.

  16. Función XMLFOREST()

  17. SELECT XMLELEMENT(“Nombre_elemento_raiz", XMLAGG(XMLELEMENT(“Nombre_subelemento“, Nombre_columna))).getstringval() as "Resultado" • FROM Tabla; • <Nombre_elemento_raiz> • <Nombre_subelemento><Contenido de la columna es el valor textual</Nombre_subelemento> • <Nombre_subelemento><Contenido de la columna es el valor textual</Nombre_subelemento> • <Nombre_subelemento><Contenido de la columna es el valor textual</Nombre_subelemento> • </Nombre_elemento_raiz> • Función XMLELEMENT() y XMLAGG() La función XMLAGG agrega filas múltiples de resultado en un documento XML, junto a la función XMLELEMENT permiten construir un documento XML.

  18. Función XMLELEMENT() y XMLAGG()

  19. SELECT XMLELEMENT(“Nombre_elemento", XMLCOLATTVAL( • Nombre_columna1,Nombre_columna2)).getstringval()as "Resultado" • FROM Tabla; • <Nombre_elemento> • <columnname = “Nombre_columna1">Contenido de la columna1 es el valor textual </column> • <columnname = "Nombre_columna2"> Contenido de la columna2 es el valor textual </column> • </Nombre_elemento> • <Nombre_elemento> • <columnname = “Nombre_columna1">Contenido de la columna1 es el valor textual </column> • <columnname = "Nombre_columna2"> Contenido de la columna2 es el valor textual </column> • </Nombre_elemento> • Función XMLELEMENT() y XMLCOLATTVAL() Por cada fila seleccionada se crea un fragmento XML

  20. Función XMLELEMENT() y XMLCOLATTVAL() • Crea elemento/s denominado/s column para cada valor de columna/s y un atributo denominado name para cada nombre de columna/s. El valor de la columna es el valor de texto del elemento.

  21. Almacenamiento de datos XML y consultas en un motor de base de datos extendido

  22. Almacenamiento de datos XML y consultas en un motor de base de datos extendido CREATE USER HR_XML IDENTIFIED BY VALUES 'D199B3E88E3FA920' DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK; -- 1 TablespaceQuotafor HR_XML ALTER USER HR_XML QUOTA UNLIMITED ON USERS;

  23. Almacenamiento de datos XML y consultas en un motor de base de datos extendido Createtablehr_xml.empcom (id number(6)primarykey, datos_emp XMLTYPE, departamento number(4)); insertinto hr_xml.empcom1(id,datos_emp,departamento) Selectemployee_id,XMLELEMENT("datos_de_empleado", XMLELEMENT("apellido_nombre",last_name||' '||first_name), XMLELEMENT("mail",email)).getstringval(),department_id Fromhr.employees;

  24. Funciones de manipulación de ORACLE: utilizando XPath y/o XQuery:

  25. SELECT Nombre_columna, extract(Nombre_columna_XMLTYPE,‘XPath’) • FROM Tabla_XML; • Función extract()

  26. Función extract() Consulta: Devolver el id y los datos de los empleados

  27. Función extract() Consulta: Devolver el id y el mail de los empleados como xml

  28. Función extract() Consulta: Devolver el id del empleado con mail JRUSSEL

  29. SELECT Nombre_columna, extractvalue(Nombre_columna_XMLTYPE,‘XPath’) • FROM Tabla_XML; • Función extractVALUE()

  30. Función extractVALUE() Consulta: Devolver el id y el mail de los empleados

  31. Función extractVALUE() Consulta: Devolver el id del empleado con mail JRUSSEL

  32. Función extractVALUE() Consulta: Obtener los datos del empleado con mail JRUSSEL

  33. SELECT Nombre_columna, Nombre_columna_XMLTYPE • FROM Tabla_XML • WHERE existsnode(Nombre_columna_XMLTYPE ,‘XPath’)=1; • Función EXISTSNODE()

  34. Función EXISTSNODE() Consulta: Devolver el id, datos del empleado y departamento del empleado con mail JRUSSEL

  35. Funciones de manipulación de ORACLE: utilizando XPath y/o XQuery:

  36. SELECT Nombre_columna, XMLQUERY(‘XQUERY’ • passing Nombre_columna_XMLTYPEreturning content) • FROM Tabla_XML; • Función XMLQUERY()

  37. Función XMLQUERY() Consulta: Devolver el id de departamento junto al apellido y nombre de los empleados, de acuerdo a la siguiente estructura: <datos_empayn=“valor_atributo"></datos_emp>

  38. Generación de datos relacionales a partir de datos XML

  39. Funciones de manipulación de ORACLE: utilizando XPath y/o XQuery:

  40. SELECT Nombre_columna1,Nombre_columna2,XMLTABLE(‘XQUERY’ • passing Nombre_columna_XMLTYPE • COLUMNS Nombre_columna1 tipo PATH ‘Nombre_elemento1 o @Nombre_atributo’, • Nombre_columna2 tipo PATH ‘Nombre_elemento2’ returning content) • FROM Tabla_XML; • Función XMLTABLE()

  41. Función XMLTABLE() Consulta: Obtener una tabla con los datos de los empleados

  42. Función XMLTABLE() Consulta: Obtener una tabla con los datos del empleado con mail JRUSSEL

More Related