SQLServerDF
Suporte XML nativo no
SQL Server 2014/2016
Rogério Moraes de Carvalho
Consultor e instrutor de TI
rogeriom.wordpress.com | @rogeriomc
Agenda
Suporte XML nativo no SQL Server 2014/2016
Debate inicial
Suas experiências: XML e SQL Server
XML e tecnologias relacionadas
O que é XML?
XML bem-formado
XML Schema e XML válido
XPath e XQuery
Algumas aplicações de XML
Suporte XML no SQL Server
Tipo de dado XML nativo
XML Schema Collections
Métodos do tipo de dados XML
Cláusula FOR XML
Debate final
Minhas experiências: XML e SQL Server
Suas experiências: XML e SQL Server
Debate inicial
XML sem SQL Server
Suas opiniões
O que você entende por XML?
Quando você usaria XML?
Você acha XML obsoleto?
Que desvantagens você destacaria?
Que vantagens você destacaria?
Casos de uso
Você tem casos de sucesso?
Você tem casos de fracasso?
XML no SQL Server
Suas opiniões
Você acha uma mistura possível?
Quando você usaria XML no SQL Server?
Você acha XML no SQL Server obsoleto?
Que desvantagens você destacaria?
Que vantagens você destacaria?
Casos de uso
Você tem casos de fracasso?
Você tem casos de sucesso?
O que é XML?
XML e tecnologias relacionadas
Linguagem de marcação
XML: Extensible Markup Language
Formato texto simples e flexível
Derivado do SGML
Criação e manutenção
W3C: World Wide Web Consortium
Comunidade internacional responsável
pelo desenvolvimento de padrões Web
Responsável pela especificação XML
Exemplo de documento XML
<?xml version="1.0" enconding="ISO-8859-1"?>
<Contato Id="1" Sexo="Feminino"
DataNascimento="1980-10-29">
<PrimeiroNome>Beatrice</PrimeiroNome>
<Sobrenome>Dias Lima</Sobrenome>
<Empresa Funcao="Gerente de Marketing">
Grupo Capivara
</Empresa>
<Endereco Tipo="Residencial"
CEP="08830-170" UF="SP">
<Logradouro Numero="1507">
Rua João Fernandes
</Logradouro>
<Cidade>Mogi das Cruzes</Cidade>
</Endereco>
</Contato>
XML bem formado
XML e tecnologias relacionadas
Todo documento XML com uma sintaxe correta
Principais regras para um documento bem formado
Deve ter um elemento raiz, que deve ser único
Todo elemento XML deve ter um marcador de abertura e outro de fechamento
Os marcadores de um elemento diferenciam letras maiúsculas de minúsculas
Elementos XML devem ser aninhados corretamente
Atributos de um elemento não podem ser repetidos
Valores de atributos devem ser delimitados por aspas ou apóstrofos
XML Schema e XML válido
XML e tecnologias relacionadas
XSD: XML Schema Definition
Linguagem baseada em XML para expressar as restrições de documentos XML
Define uma gramática para um conjunto de documentos XML
Um documento XML que satisfaz um XML Schema é denominado XML válido
XPath e XQuery
XML e tecnologias relacionadas
XPath
É uma sintaxe para definir partes de um documento XML
Usa expressões de caminho para navegar por documentos XML
Contém uma biblioteca padrão de funções
Recomendação do W3C: XML Path Language (XPath) 2.0 (Second Edition)
XQuery
É a linguagem padrão para consulta de dados XML
XQuery é para XML o que SQL é para bancos de dados relacionais
É construída com base em expressões XPath
Recomendação do W3C: XQuery 1.0: An XML Query Language (Second Edition)
Algumas aplicações de XML
XML e tecnologias relacionadas
Arquivos de configuração
Web.config (aplicações web ASP.NET)
Documentos de software para escritório
Microsoft Office 2007 ou superior (compactados no formato .zip)
OpenDocument - OpenOffice/LibreOffice (compactados no formato .zip)
Imagens vetoriais
SVG (Scalable Vector Graphics)
XML Web Services
Mensagens SOAP
...
Tipo de dado XML nativo
Suporte XML no SQL Server
Tipo de dado do SQL Server para armazenar dados XML
Instâncias de dados XML podem ser armazenados em:
Uma coluna do tipo XML
Uma variável do tipo XML
Exemplos
DECLARE @telefone xml = '<Telefone DDD="61">3222-2222</Telefone>';
CREATE TABLE Seguranca.Auditoria (IdAuditoria int PRIMARY KEY, Registro xml);
Sintaxe
xml ( [ CONTENT | DOCUMENT ] xml_schema_collection )
XML Schema Collections
Suporte XML no SQL Server
O SQL Server fornece armazenamento nativo para dados XML
Através do tipo de dado XML
Com uso de XML Schema Collection é possível associar esquemas XSD
Com uma coluna do tipo xml
Com uma variável do tipo xml
XML Schema Collections
Armazenam XML Schemas importados para o banco de dados
Objetivo dos XML Schema Collections
Validar instâncias XML
Definir tipo para os dados XML armazenados no banco de dados (XML tipado)
Métodos do tipo de dados XML
Suporte XML no SQL Server
Objetivos dos métodos
Para consultar uma instância XML
armazenada em uma variável ou uma
coluna do tipo XML
Cinco métodos do tipo XML
query()
value()
exist()
modify()
nodes()
Método query() do tipo XML
Descrição
Consulta XQuery em uma instância XML
Retorna um XML não tipado
Sintaxe
query('Xquery')
Método value() do tipo XML
Descrição
Consulta XQuery em uma instância XML
Retorna um valor escalar do tipo SQL
Sintaxe
value('Xquery', 'TipoSQL')
Métodos do tipo de dados xml
Suporte XML no SQL Server
Método exist() do tipo xml
Descrição
Consulta XQuery em uma instância XML
Retorna um bit
1: representa true (resultado não vazio)
0: representa false (resultado vazio)
NULL: instância XML nula (valor NULL)
Sintaxe
exist('Xquery')
Método modify() do tipo xml
Descrição
Modifica o conteúdo de uma instância XML
Utiliza XML Data Manipulation Language
XML DML: extensão da Microsoft ao XQuery
Sintaxe
modify('XML DML')
XML DML: insert
Sintaxe
insert
Expressao1
[ as first | as last ] into | after | before
Expressao2
Métodos do tipo de dados xml
Suporte XML no SQL Server
Método modify() do tipo xml
Sintaxe
modify('XML DML')
XML DML: delete
Sintaxe
delete Expressao
XML DML: replace value of
Sintaxe
replace value of
Expressao1
with
Expressao2
Método nodes() do tipo xml
Descrição
Útil para separar conteúdo de uma
instância XML em dados relacionais
Sintaxe
nodes('XQuery') as Tabela(Coluna)
Cláusula FOR XML
Suporte XML no SQL Server
Uma consulta SELECT retorna o resultado como um conjunto de linhas
Opcionalmente, é possível retornar o resultado como XML
Pela especificação da cláusula FOR XML
A cláusula FOR XML pode ser usada em consultas ou subconsultas
Em subconsultas, pode ser usado em instruções INSERT, UPDATE e DELETE
Modos da cláusula FOR XML
RAW: gera um elemento <row> por linha no conjunto de linhas
AUTO: gera um resultado aninhado baseado na instrução SELECT
EXPLICIT: permite maior controle do XML gerado
PATH: permite maior controle do XML gerado, porém mais simples que EXPLICIT
Minhas experiências: XML e SQL Server
Debate final
XML sem SQL Server
Minhas opiniões
O que eu entendo por XML?
Quando eu usaria XML?
Eu acho XML obsoleto?
Que desvantagens eu destacaria?
Que vantagens eu destacaria?
Casos de uso
Eu tenho casos de sucesso?
Eu tenho casos de fracasso?
XML no SQL Server
Minhas opiniões
Eu acho uma mistura possível?
Quando eu usaria XML no SQL Server?
Eu acho XML no SQL Server obsoleto?
Que desvantagens eu destacaria?
Que vantagens eu destacaria?
Casos de uso
Eu tenho casos de fracasso?
Eu tenho casos de sucesso?

Suporte XML nativo no SQL Server 2014/2016

  • 1.
    SQLServerDF Suporte XML nativono SQL Server 2014/2016 Rogério Moraes de Carvalho Consultor e instrutor de TI rogeriom.wordpress.com | @rogeriomc
  • 2.
    Agenda Suporte XML nativono SQL Server 2014/2016 Debate inicial Suas experiências: XML e SQL Server XML e tecnologias relacionadas O que é XML? XML bem-formado XML Schema e XML válido XPath e XQuery Algumas aplicações de XML Suporte XML no SQL Server Tipo de dado XML nativo XML Schema Collections Métodos do tipo de dados XML Cláusula FOR XML Debate final Minhas experiências: XML e SQL Server
  • 3.
    Suas experiências: XMLe SQL Server Debate inicial XML sem SQL Server Suas opiniões O que você entende por XML? Quando você usaria XML? Você acha XML obsoleto? Que desvantagens você destacaria? Que vantagens você destacaria? Casos de uso Você tem casos de sucesso? Você tem casos de fracasso? XML no SQL Server Suas opiniões Você acha uma mistura possível? Quando você usaria XML no SQL Server? Você acha XML no SQL Server obsoleto? Que desvantagens você destacaria? Que vantagens você destacaria? Casos de uso Você tem casos de fracasso? Você tem casos de sucesso?
  • 4.
    O que éXML? XML e tecnologias relacionadas Linguagem de marcação XML: Extensible Markup Language Formato texto simples e flexível Derivado do SGML Criação e manutenção W3C: World Wide Web Consortium Comunidade internacional responsável pelo desenvolvimento de padrões Web Responsável pela especificação XML Exemplo de documento XML <?xml version="1.0" enconding="ISO-8859-1"?> <Contato Id="1" Sexo="Feminino" DataNascimento="1980-10-29"> <PrimeiroNome>Beatrice</PrimeiroNome> <Sobrenome>Dias Lima</Sobrenome> <Empresa Funcao="Gerente de Marketing"> Grupo Capivara </Empresa> <Endereco Tipo="Residencial" CEP="08830-170" UF="SP"> <Logradouro Numero="1507"> Rua João Fernandes </Logradouro> <Cidade>Mogi das Cruzes</Cidade> </Endereco> </Contato>
  • 5.
    XML bem formado XMLe tecnologias relacionadas Todo documento XML com uma sintaxe correta Principais regras para um documento bem formado Deve ter um elemento raiz, que deve ser único Todo elemento XML deve ter um marcador de abertura e outro de fechamento Os marcadores de um elemento diferenciam letras maiúsculas de minúsculas Elementos XML devem ser aninhados corretamente Atributos de um elemento não podem ser repetidos Valores de atributos devem ser delimitados por aspas ou apóstrofos
  • 6.
    XML Schema eXML válido XML e tecnologias relacionadas XSD: XML Schema Definition Linguagem baseada em XML para expressar as restrições de documentos XML Define uma gramática para um conjunto de documentos XML Um documento XML que satisfaz um XML Schema é denominado XML válido
  • 7.
    XPath e XQuery XMLe tecnologias relacionadas XPath É uma sintaxe para definir partes de um documento XML Usa expressões de caminho para navegar por documentos XML Contém uma biblioteca padrão de funções Recomendação do W3C: XML Path Language (XPath) 2.0 (Second Edition) XQuery É a linguagem padrão para consulta de dados XML XQuery é para XML o que SQL é para bancos de dados relacionais É construída com base em expressões XPath Recomendação do W3C: XQuery 1.0: An XML Query Language (Second Edition)
  • 8.
    Algumas aplicações deXML XML e tecnologias relacionadas Arquivos de configuração Web.config (aplicações web ASP.NET) Documentos de software para escritório Microsoft Office 2007 ou superior (compactados no formato .zip) OpenDocument - OpenOffice/LibreOffice (compactados no formato .zip) Imagens vetoriais SVG (Scalable Vector Graphics) XML Web Services Mensagens SOAP ...
  • 9.
    Tipo de dadoXML nativo Suporte XML no SQL Server Tipo de dado do SQL Server para armazenar dados XML Instâncias de dados XML podem ser armazenados em: Uma coluna do tipo XML Uma variável do tipo XML Exemplos DECLARE @telefone xml = '<Telefone DDD="61">3222-2222</Telefone>'; CREATE TABLE Seguranca.Auditoria (IdAuditoria int PRIMARY KEY, Registro xml); Sintaxe xml ( [ CONTENT | DOCUMENT ] xml_schema_collection )
  • 10.
    XML Schema Collections SuporteXML no SQL Server O SQL Server fornece armazenamento nativo para dados XML Através do tipo de dado XML Com uso de XML Schema Collection é possível associar esquemas XSD Com uma coluna do tipo xml Com uma variável do tipo xml XML Schema Collections Armazenam XML Schemas importados para o banco de dados Objetivo dos XML Schema Collections Validar instâncias XML Definir tipo para os dados XML armazenados no banco de dados (XML tipado)
  • 11.
    Métodos do tipode dados XML Suporte XML no SQL Server Objetivos dos métodos Para consultar uma instância XML armazenada em uma variável ou uma coluna do tipo XML Cinco métodos do tipo XML query() value() exist() modify() nodes() Método query() do tipo XML Descrição Consulta XQuery em uma instância XML Retorna um XML não tipado Sintaxe query('Xquery') Método value() do tipo XML Descrição Consulta XQuery em uma instância XML Retorna um valor escalar do tipo SQL Sintaxe value('Xquery', 'TipoSQL')
  • 12.
    Métodos do tipode dados xml Suporte XML no SQL Server Método exist() do tipo xml Descrição Consulta XQuery em uma instância XML Retorna um bit 1: representa true (resultado não vazio) 0: representa false (resultado vazio) NULL: instância XML nula (valor NULL) Sintaxe exist('Xquery') Método modify() do tipo xml Descrição Modifica o conteúdo de uma instância XML Utiliza XML Data Manipulation Language XML DML: extensão da Microsoft ao XQuery Sintaxe modify('XML DML') XML DML: insert Sintaxe insert Expressao1 [ as first | as last ] into | after | before Expressao2
  • 13.
    Métodos do tipode dados xml Suporte XML no SQL Server Método modify() do tipo xml Sintaxe modify('XML DML') XML DML: delete Sintaxe delete Expressao XML DML: replace value of Sintaxe replace value of Expressao1 with Expressao2 Método nodes() do tipo xml Descrição Útil para separar conteúdo de uma instância XML em dados relacionais Sintaxe nodes('XQuery') as Tabela(Coluna)
  • 14.
    Cláusula FOR XML SuporteXML no SQL Server Uma consulta SELECT retorna o resultado como um conjunto de linhas Opcionalmente, é possível retornar o resultado como XML Pela especificação da cláusula FOR XML A cláusula FOR XML pode ser usada em consultas ou subconsultas Em subconsultas, pode ser usado em instruções INSERT, UPDATE e DELETE Modos da cláusula FOR XML RAW: gera um elemento <row> por linha no conjunto de linhas AUTO: gera um resultado aninhado baseado na instrução SELECT EXPLICIT: permite maior controle do XML gerado PATH: permite maior controle do XML gerado, porém mais simples que EXPLICIT
  • 15.
    Minhas experiências: XMLe SQL Server Debate final XML sem SQL Server Minhas opiniões O que eu entendo por XML? Quando eu usaria XML? Eu acho XML obsoleto? Que desvantagens eu destacaria? Que vantagens eu destacaria? Casos de uso Eu tenho casos de sucesso? Eu tenho casos de fracasso? XML no SQL Server Minhas opiniões Eu acho uma mistura possível? Quando eu usaria XML no SQL Server? Eu acho XML no SQL Server obsoleto? Que desvantagens eu destacaria? Que vantagens eu destacaria? Casos de uso Eu tenho casos de fracasso? Eu tenho casos de sucesso?