XQuery y XPath for SQL Server 2012 itpros dc_chapter6

34
Julián Castiblanco P. http://julycastiblanco.blogspot.com/ [email protected] MCT-MCSA-MCITP-MCTS SQL Server 2008/2005 Líder ITPros-DC Querying Microsoft SQL Server 2012 Exam 70-461 Capítulo 6 – XML

description

en esta presentación encontrará todo lo que necesita saber sobre XML en el motor de base de datos SQL Server 2012,2008,2005. Este material fue diseñado para adquirir los conocimientos y presentar el examen 70-461 Querying SQL Server 2012

Transcript of XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Page 1: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Julián Castiblanco P.http://julycastiblanco.blogspot.com/

[email protected]

MCT-MCSA-MCITP-MCTS SQL Server 2008/2005

Líder ITPros-DC

Querying Microsoft SQL Server 2012Exam 70-461Capítulo 6 – XML

Page 2: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

• Ingeniero de Diseño & Automatización Electrónica• Especialista en Gerencia y Tecnologías de Información• MCT-MCSA-MCITP-MCTS en SQL SERVER• Synergy TPC SAS como consultor especializado en

bases de datos SQL Server

Julián

Castiblanco

Andrés

Useche

• Ingeniero de Sistemas• Especialista en Teleinformática• MCP SQL SERVER 2012• Terpel como ingeniero de infraestructura IT - DBA

Page 3: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Material de trabajo

Windows Server 2012 trialhttp://www.microsoft.com/en-us/download/details.aspx?id=11093

SQL Server 2012 with SP1 trialhttp://www.microsoft.com/en-us/download/details.aspx?id=29066

AdventureWorks for SQL Server 2012http://msftdbprodsamples.codeplex.com/releases/view/55330

Training kit SQL Server Querying Microsoft SQL Server 2012 – exam 70-461http://www.amazon.com/Training-Kit-Exam-70-461-Microsoft/dp/0735666059/ref=sr_1_1?ie=UTF8&qid=1359206206&sr=8-1&keywords=querying+microsoft+sql+server+2012+training+kit+exam+70-461

Page 4: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

• Recuperación de XML mediante FOR XML

• Fragmentación de XML mediante OPENXML

• Introducción a XQuery

Agenda

Page 5: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

• Devuelve XML en lugar de filas y columnas

• Se puede configurar para que devuelva atributos, elementos y esquema

• Beneficia a las aplicaciones cliente que funcionan con XML

Cláusula FOR XML

Page 6: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

FOR XML RAW

SELECT b.Name Territorio, C.City,COUNT(*) AS numordersFROM sales.SalesOrderHeader AS AINNER JOIN SALES.SalesTerritory AS BON A.TerritoryID=b.TerritoryIDINNER JOIN [Person].[Address] AS CON A.ShipToAddressID=C.AddressIDINNER JOIN [Person].[StateProvince] AS DON C.StateProvinceID=D.StateProvinceIDWHERE b.Name='France'GROUP BY b.Name, C.CityFOR XML RAW

Page 7: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

FOR XML AUTO

SELECT b.Name Territorio, C.City,COUNT(*) AS numordersFROM sales.SalesOrderHeader AS AINNER JOIN SALES.SalesTerritory AS BON A.TerritoryID=b.TerritoryIDINNER JOIN [Person].[Address] AS CON A.ShipToAddressID=C.AddressIDINNER JOIN [Person].[StateProvince] AS DON C.StateProvinceID=D.StateProvinceIDWHERE b.Name='France'GROUP BY b.Name, C.CityFOR XML AUTO

Page 8: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

FOR XML EXPLICIT

SELECT top 10 1 AS Tag,NULL AS Parent,SalesOrderID AS[Invoice!1!InvoiceNo!Element],OrderDate AS [Invoice!1!Date!Element]FROMSales.SalesOrderheaderFOR XML EXPLICIT

Page 9: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

FOR XML PATH

------------------------------------FOR XML PATH----------------------------------

SELECT vC.BusinessEntityID"@customerID",sc.AccountNumber "@accountNumber",FirstName "Customer/FirstName",LastName "Customer/Lastname"

FROMSALES.vIndividualCustomer asvC INNER JOIN Sales.Customer as scON vC.BusinessEntityID=sc.PersonIDFOR XML PATH

Page 10: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

FUNCIONES ADICIONALES

ELEMENT Cambia atributos por Elementos

ROOTColoca un elemento Raiz

TYPEInforma al motor que la información generada es de tipo XML

ABSENT|XSINIL Decidir si se mostraran valores

en nulo

Page 11: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Demostración

Page 12: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

• Recuperación de XML mediante FOR XML

• Fragmentación de XML mediante OPENXML

• Introducción a XQuery

Agenda

Page 13: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

• OpenXML le permite consultar información de tipo XML y guardarlo en filas y columnas.

• Openxml es un proveedor de filas así que puede utilizarse el select o el selectinto en la sentencia

Fragmentación de XML mediante OPENXML

Page 14: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Fragmentación de XML mediante OPENXML

Document ObjectModel (DOM)MSXML parser (Msxmlsql.dll)

Xml Document

Sp_xml_preparedocument

OPENXML

Dinamic rowsetrepresentation

Representación dinámica del grupo de datos

Sp_xml_removedocument

Liberación de memoria

flags byte

Page 15: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Fragmentación de XML mediante OPENXML

DECLARE @xmlDOC xml set @xmlDOC ='<hojadevida><datosbasicosnombre="Julián Castiblanco P"edad="31"correo="[email protected]"/><estudios><estudio><institucion>Colegio Mayor de San Bartolomé</institucion><titulo>Bachiller Académico</titulo><fechaterminacion>1999</fechaterminacion></estudio><estudio><institucion>Universidad de la Salle</institucion><titulo>Ingeniero de Diseño Automatización electronica</titulo><fechaterminacion>2005</fechaterminacion></estudio><estudio><institucion>Universidad Externado de Colombia</institucion><titulo>Especialista en Gerencia y Tecnologías de Información</titulo><fechaterminacion>2011</fechaterminacion></estudio></estudios></hojadevida>'

ELEMENTOS

ATRIBUTOS

TEXTOS

Page 16: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Fragmentación de XML mediante OPENXML

declare @doc_handle intEXECUTE sp_xml_preparedocument@doc_handle OUTPUT, @xmlDOCSELECT @doc_handle

• El XML es cargado en memoria, dado que varios podrían estar en memoria la variable @doc_handlemaneja el identificado con que este documento puede ser consultado

Page 17: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Fragmentación de XML mediante OPENXML

• Con la sentencia OPENXML Recorro el xml cargado en memoria y a través de la sentencia WITH los elemento hijos que quiero mapear como columnas

SELECTinstitucion,titulo,fechaTerminacionFROM OPENXML(@doc_handle,'/hojadevida/estudios/estudio',2)WITH(Institucion varchar(90) 'institucion',titulo varchar(90) 'titulo',fechaTerminacion int 'fechaterminacion')

http://technet.microsoft.com/en-us/library/ms187897.aspx

Page 18: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Demostración

Page 19: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

• Recuperación de XML mediante FOR XML

• Fragmentación de XML mediante OPENXML

• Introducción a XQuery

Agenda

Page 20: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Introducción a XQuery

Page 21: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Introducción a XQuery

RootInventarioCarrefo

ur

ElementNodeProductosdeaseo

ElementNodeProducto

Element Nombre

Text Node

Atribute node

Element Tamaño

Text Node

ElementPrecioDetal

TextNode

Page 22: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

<InventarioCarrefour xmlns:p="http://www.inventario.com"><ProductosDeAseo>

<Producto><nombre>Jabón FAB</nombre><Tamano>Bolsa por 5 libras</Tamano><PrecioDetal>7890</PrecioDetal><UnidadesDisponibles>230</UnidadesDisponibles>

</Producto><Producto>

<nombre>Shampoo Pantene</nombre><Tamano>1000ml</Tamano><PrecioDetal>13000</PrecioDetal><UnidadesDisponibles>34</UnidadesDisponibles>

</Producto><Producto>

<nombre>Cepillo de Piso</nombre><Tamano>No aplica</Tamano><PrecioDetal>980</PrecioDetal><UnidadesDisponibles>1200</UnidadesDisponibles>

</Producto></ProductosDeAseo><encargado nombre="William Barrera" depto="AdministracionRecursos" />

</InventarioCarrefour>

Introducción a XQuery

Parent Node

Child Nodes

Text Node

Namespace

Root

Page 23: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Introducción a XQuery

declarativo

W3C estándar

Usa XpathCase

Sensitive

FLWOR

http://www.w3schools.com/xpath/xpath_intro.asp

Page 24: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Introducción a XQuery

OUTPUT• Query: xml• Exists : bit• Value: valor especifico• Nodes: salida tipo tabla• Modify: manipular el xml

INPUT

• Doc() documento xml

• Collection() varios xmls

Esquema XML • Basado en esquema ó no tipado.

Page 25: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Introducción a XQuery

Common Functions• Position()• Count()• Round()• Contains()• Substring()

Xpath Abreviaciones

• “default”

• @

• // , /

• *

Page 26: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Introducción a XQuery

OUTPUT• Query: xml• Exists : bit• Value: valor especifico• Nodes: salida tipo tabla• Modify: manipular el xml

INPUT

• Doc() documento xml

• Collection() varios xmls

Esquema XML • Basado en esquema o no tipado.

Page 27: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Modificación de XML con XQuery

insert

delete

Replace value of

Page 28: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Demostración

Page 29: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Introducción a Xquery-FLWOR

FLWOR

• For

• Let

• Where

• Order by

• Return

Permite especificar en que nodo del xmlquiero iniciar mi consulta

Page 30: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Introducción a Xquery-FLWOR

FLWOR

• For

• Let

• Where

• Order by

• Return

Se utiliza para asignar valor a una variable, combinado con funciones, puedo devolver una función que entre el número de nodos de un tipo dentro del xml.

Page 31: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Introducción a Xquery-FLWOR

FLWOR

• For

• Let

• Where

• Order by

• Return

Al igual que en el transact SQL convencional, esta función me permite filtrar la información que debo devolver.

Page 32: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Introducción a Xquery-FLWOR

FLWOR

• For

• Let

• Where

• Order by

• Return

Permite definir un ordenamiento diferente en el xmlconsultado. Por ejemplo que reorganice los nodos de salida, basado en el valor de un atributo.

Page 33: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Introducción a Xquery-FLWOR

FLWOR

• For

• Let

• Where

• Order by

• Return

Es el equivalente al SELECT en transact sqly define la información que va a ser retornada por la consulta.

Page 34: XQuery y XPath for SQL Server 2012 itpros dc_chapter6

Demostración