xquery y xpath for sql server 2012 itpros dc_chapter6

Post on 26-May-2015

605 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

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

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

Julian_castiblancop@hotmail.com

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

Líder ITPros-DC

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

• 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

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

• Recuperación de XML mediante FOR XML

• Fragmentación de XML mediante OPENXML

• Introducción a XQuery

Agenda

• 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

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

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

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

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

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

Demostración

• Recuperación de XML mediante FOR XML

• Fragmentación de XML mediante OPENXML

• Introducción a XQuery

Agenda

• 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

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

Fragmentación de XML mediante OPENXML

DECLARE @xmlDOC xml set @xmlDOC ='<hojadevida><datosbasicosnombre="Julián Castiblanco P"edad="31"correo="juliancastiblancop@gmail.com"/><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

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

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

Demostración

• Recuperación de XML mediante FOR XML

• Fragmentación de XML mediante OPENXML

• Introducción a XQuery

Agenda

Introducción a XQuery

Introducción a XQuery

RootInventarioCarrefo

ur

ElementNodeProductosdeaseo

ElementNodeProducto

Element Nombre

Text Node

Atribute node

Element Tamaño

Text Node

ElementPrecioDetal

TextNode

<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

Introducción a XQuery

declarativo

W3C estándar

Usa XpathCase

Sensitive

FLWOR

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

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.

Introducción a XQuery

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

Xpath Abreviaciones

• “default”

• @

• // , /

• *

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.

Modificación de XML con XQuery

insert

delete

Replace value of

Demostración

Introducción a Xquery-FLWOR

FLWOR

• For

• Let

• Where

• Order by

• Return

Permite especificar en que nodo del xmlquiero iniciar mi consulta

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.

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.

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.

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.

Demostración

top related