terça-feira, 19 de julho de 2011

Tutorial XPath

Tutorial XPath

XPath é um conjunto de regras de sintaxe para definir partes de um documento XML.
XPath é o elemento principal no padrão W3C XSLT. Sem o conhecimento de XPath você não será capaz de criar documentos XSLT.

Introdução ao XPath

XPath é um conjunto de regras de sintaxe para definir partes de um documento XML.

O que é XPath?

  • XPath é uma sintaxe para definir partes de um documento XML
  • XPath usa caminhos para definir elementos XML
  • XPath define uma biblioteca de funções padrão
  • XPath é o elemento principal em XSLT
  • XPath não é escrito em XML
  • XPath é um padrão W3C

Como caminhos de arquivos tradicionais

XPath usa expressões de caminho para identificar nós em um documento XML. Essas expressões de caminho se parecem muito com as expressões que você vê quando você trabalha num sistema de arquivos de um computador:   w3schools/xpath/default.asp
Exemplo de XPath
Veja esse documento XML simples:
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <catalog>
    <cd country="USA">
      <title>Empire Burlesque</title>
      <artist>Bob Dylan</artist>
      <price>10.90</price>
    </cd>
    <cd country="UK">
      <title>Hide your heart</title>
      <artist>Bonnie Tyler</artist>
      <price>9.90</price>
    </cd>
    <cd country="USA">
      <title>Greatest Hits</title> 
      <artist>Dolly Parton</artist> 
      <price>9.90</price> 
    </cd>
  </catalog>
A expressão XPath abaixo seleciona o elemento RAIZ catalog  /catalog
A expressão XPath abaixo seleciona todos os elementos cd do elemento catalog  /catalog/cd
A expressão XPath abaixo seleciona todos os elementos price de todos os elementos cd do elemento catalog  /catalog/cd/price
Nota: Se o caminho começa com uma barra ( / ) ele representa um caminho absoluto para um elemento!

XPath define uma biblioteca de funções padrão

XPath define uma biblioteca de funções padrão para trabalhar com strings, números e expressões booleanas.
A expressão XPath abaixo seleciona todos os elementos cd que tem um elemento price que tem um valor maior que 10.80:
  /catalog/cd[price>10.80]

XPath é usado em XSLT

XPath é o elemento principal do padrão XSLT. Sem o conhecimento de XPath você não será capaz de criar documentos XSLT.
Você pode ler mais sobre XSLT no nosso tutorial XSLT em inglês ou em português.

XPath é um padrão W3C

XPath foi liberado com uma recomendação W3C em 16 de novembro de 1999 como uma linguagem para endereçar partes de um documento XML.
XPath foi desenvolvido para ser usado por XSLT, XPointer e outros softwares XML parsing.
Você pode ler mais sobre padrões XML e XSl em nosso tutorial W3C

Sintaxe XPath

XPath usa expressões de caminho para localizar nós dentro de documentos XML.

Documento XML de Exemplo

Nós usaremos esse documento XML simples para descrever a sintaxe XPath:
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <catalog>
    <cd country="USA">
      <title>Empire Burlesque</title>
      <artist>Bob Dylan</artist>
      <price>10.90</price>
    </cd>
    <cd country="UK">
      <title>Hide your heart</title>
      <artist>Bonnie Tyler</artist>
      <price>9.90</price>
    </cd>
    <cd country="USA">
      <title>Greatest Hits</title> 
      <artist>Dolly Parton</artist> 
      <price>9.90</price> 
    </cd>
  </catalog>

Localizando Nós

Documentos XML podem ser representados como árvores de nós (muito similar à visão em árvore das pastas do seu computador).
XPath usa uma expressão padrão para identificar nós em um documento XML. Um padrão XPath é uma lista nomes de elementos filhos separada por barras que descreve o caminho através do documento XML. O padrão "seleciona" elementos que combinam com o caminho.
A expressão XPath a seguir seleciona todos os elementos preço de todos os elementos cd do elemento catalog  /catalog/cd/price
Nota: Se o caminho começa com uma barra ( / ) ele representa um caminho absoluto para um elemento!

Nota: Se o caminho começa com duas barras ( // ) então todos os elementos no documento que se encaixam no critério serão selecionados (mesmo que eles estejam em níveis diferentes da árvore XML)!
A expressão XPath a seguir seleciona todos os elementos cd no documento:   //cd
Selecionando elementos desconhecidos
Curingas ( * ) podem ser usados para selecionar elementos XML desconhecidos.
A expressão XPath a seguir seleciona todos os elementos filhos de todos os elementos cd do elemento catalog  /catalog/cd/*
A expressão XPath a seguir seleciona todos os elementos price que são elementos netos do elemento catalog
  /catalog/*/price
A expressão XPath a seguir seleciona todos os elementos price que têm dois ancestrais: 
  /*/*/price
A expressão XPath a seguir seleciona todos os elementos no documento: 
  //*
Selecionando Seções
Usando-se colchetes numa expressão XPath você pode especificar um elemento adiante.
A expressão XPath a seguir seleciona o primeiro elemento cd filho do elemento catalog  /catalog/cd[1]
A expressão XPath a seguir seleciona o último elemento cd filho do elemento catalog (Nota: não existe a função first()): 
  /catalog/cd[last()]
A expressão XPath a seguir seleciona todos os elementos cd do elemento catalog que tem um elemento price
  /catalog/cd[price]
A expressão XPath a seguir seleciona todos os elementos cd do elemento catalog que tem um elemento price com valor de 10.90: 
  /catalog/cd[price=10.90]
A expressão XPath a seguir seleciona todos os elementos price de todos os elementos cd do elemento catalog que tem um elemento price com valor de 10.90: 
 /catalog/cd[price=10.90]/price
Selecionando vários caminhos
Usando o operador "|" numa expressão XPath você pode selecionar vários caminhos.

A expressão XPath a seguir seleciona todos os elementos title e artist do elemento cd do elemento catalog
  /catalog/cd/title | /catalog/cd/artist
A expressão XPath a seguir seleciona todos os elementos title e artist do documento: 
  //title | //artist
A expressão XPath a seguir seleciona todos os elementos titleartist e price do documento: 
  //title | //artist | //price
A expressão XPath a seguir seleciona todos os elementos title do elemento cd do elemento catalog, e todos os elementos artist no documento: 
  /catalog/cd/title | //artist
Em XPath todos os atributos são especificados pelo prefixo "@".
Esta expressão XPath seleciona todos os atributos chamados country:   //@country
Esta expressão XPath seleciona todos os elementos cd que tem um atributo chamado country
  //cd[@country]
Esta expressão XPath seleciona todos os elementos cd que tem algum atributo: 
  //cd[@*]
Esta expressão XPath seleciona todos os elementos cd que tem um atributo chamado country com valor 'UK': 
  //cd[@country='UK']
XPath Location Paths (Caminho Locais XPath)

Uma expressão de caminho local (location path) resulta em um conjunto de nós.

Expressão de Caminho Local

Um caminho local pode ser absoluto ou relativo.
Um caminho local absoluto começa com uma barra ( / ) e um caminho local relativo não. Em ambos os casos o caminho local consiste de um ou mais níveis de localização, cada um separado por uma barra:
Um caminho local absoluto:    /step/step/...
  

Um caminho local relativo:  step/step

Os níveis de localização são avaliados em ordem um de cada vez, da esquerda pra direita. Cada nível é avaliado segundo os nós no conjunto de nós atual. Se o caminho local é absoluto, o conjunto de nós atual é o nó raiz. Se o caminho local é relativo, o conjunto de nós atual consiste do nó onde a expressão está sendo usada. Níveis de localização consistem de:

  • um eixo (especifica a relação de árvore entre os nós selecionados pelo nível de localização e o nó atual)
  • um nó teste (especifica o tipo de nó e o nome expandido dos nós selecionados pelo nível de localização)
  • zero ou mais predicados (usa expressões para refinar mais o conjunto de nós selecionado pelo nível de localização)
A sintaxe para um nível de localização é:   nomeeixo::noteste[predicado]
Exemplo:  
  child::price[price=9.90]
Eixos e Nós de Teste
Um eixo define um conjunto de nós relativo ao nó atual. Um nó de teste é usado para identificar um nó dentro de um eixo. Nós podemos executar um nó de teste por nome ou por tipo.
Nome do EixoDescrição
ancestorContém todos os ancestrais (pais, avós, etc) do nó atual. Nota: Este eixo incluirá sempre o nó raiz, a menos que o nó atual seja o nó raiz
ancestor-or-selfContém o nó atual mais todos os seus ancestrais (pai, avô, etc)
attributeContém todos os atributos do nó atual
childContém todos os filhos do nó atual
descendantContém todos os descendentes (filhos, netos, etc) do nó atual. Nota: Este eixo nunca contém atributos ou nós namespace
descendant-or-selfContém o nó atual mais todos os seus descendentes (filhos, netos, etc)
followingContém tudo no documento depois da tag de fechamento do nó atual
following-siblingContém todos os irmãos depois do nó atual. Nota: Se o nó atual é um nó atributo ou um nó namespace, este eixo estará vazio
namespaceContém todos os nós namespace do nó atual
parentContém o pai do nó atual
precedingContém tudo no documento que está antes da tag de abertura do nó atual
preceding-siblingContém todos os irmãos antes do nó atual. Nota: Se o nó atual é um nó atributo ou um nó namespace, este eixo estará vazio
selfContém o nó atual
Exemplos
ExemploResultado
child::cdSeleciona todos os elementos cd que são filhos do nó atual (se o nó atual não tem cds filhos, será selecionado um conjunto vazio de nós)
attribute::srcSeleciona o atributo src do nó atual (se o nó atual não tem atributo src, será selecionado um conjunto vazio de nós)
child::*Seleciona todos os elementos filhos do nó atual
attribute::*Seleciona todos os atributos do nó atual
child::text()Seleciona o nó texto filho do nó atual
child::node()Seleciona todos os filhos do nó atual
descendant::cdSeleciona todos os elementos cd descendentes do nó atual
ancestor::cdSeleciona todos os cds ancestrais do nó atual
ancestor-or-self::cdSeleciona todos os cds ancestrais do nó atual e, se o nó atual é um elemento cd, seleciona o nó atual também
child::*/child::priceSeleciona todos os preços netos do nó atual
/Seleciona a raiz do documento

Predicados

Um predicado filtra um conjunto de nós em um novo conjunto de nós. Um predicado fica dentro de colchetes ( [] ).
Exemplos
ExemploResultado
child::price[price=9.90]Seleciona todos os elementos price que são filhos do nó atual com um preço igual a 9.90
child::cd[position()=1]Seleciona o primeiro cd filho do nó atual
child::cd[position()=last()]Seleciona o último cd filho do nó atual
child::cd[position()=last()-1]Seleciona o penúltimo cd filho do nó atual
child::cd[position()<6]Seleciona os primeiros cinco cds filhos do nó atual
/descendant::cd[position()=7]Seleciona o sétimo elemento cd no documento
child::cd[attribute::type="classic"]Seleciona todos os cds filhos do nó atual que têm um atributo tipo com o valor "classic"

Sintaxe Abreviada dos Caminhos Locais

Abreviações podem ser usadas para descrever um caminho local.
A abreviação mais importante é que child:: pode ser omitido de um nível de localização.
Abrev.SignificadoExemplo
nadachild::cd é o mesmo que child::cd
@attribute::cd[@type="classic"] é o mesmo que child::cd[attribute::type="classic"]
.self::node().//cd é o mesmo que self::node()/descendant-or-self::node()/child::cd
..parent::node()../cd é o mesmo que parent::node()/child::cd
/////descendant-or-self::node()///cd é o mesmo que /descendant-or-self::node()/child::cd
Exemplos
ExemploResultado
cdSeleciona todos os elementos cd que são filhos do nó atual
*Seleciona todos os elementos filhos do nó atual
text()Seleciona todos os nós textos filhos do nó atual
@srcSeleciona o atributo src do nó atual
@*Seleciona todos os atributos do nó atual
cd[1]Seleciona o primeiro cd filho do nó atual
cd[last()]Seleciona o último cd filho do nó atual
*/cdSeleciona todos os cds netos do nó atual
/book/chapter[3]/para[1]Seleciona o primeiro parágrafo do terceiro capítulo do livro
//cdSeleciona todos os elementos cds descendentes da raiz do documento e assim seleciona
todos os elementos cds no mesmo documento como o nó atual
.Seleciona o nó atual
.//cdSeleciona os elementos cds descendentes do nó atual
..Seleciona o pai do nó atual
../@srcSeleciona o atributo src do pai do nó atual
cd[@type="classic"]Seleciona todos os cds filhos do nó atual que têm o atributo "type" com o valor "classic"
cd[@type="classic"][5]Seleciona o quinto cd filho do nó atual que tem o atributo "type" com o valor "classic"
cd[5][@type="classic"]Seleciona o quinto cd filho do nó atual se esse filho tem o atributo "type" com valor "classic"
cd[@type and @country ]Seleciona todos os cds filhos do nó atual que têm ambos os atributos "type" e "country"

Expressões XPath

XPath suporta expressões numéricas, de igualdade, relacionais e booleanas.

Expressões Numéricas

Expressões numéricas são usadas para realizar operações aritméticas em números.
OperadorDescriçãoExemploResultado
+Adição6 + 410
-Subtração6 - 42
*Multiplicação6 * 424
divDivisão8 div 42
modMódulo (resto da divisão)5 mod 21
Nota: XPath sempre converte cada operando em um número antes de realizar um expressão aritmética.

Expressões de Igualdade

Expressões de igualdade são usadas para testar a igualdade entre dois valores.
OperadorDescriçãoExemploResultado
=Igualprice=9.80true (se o preço é igual a 9.80)
!=Diferenteprice!=9.80false

Testando um conjunto de nós

Se é testada a igualdade do valor de teste em relação a um conjunto de nós, o resultado é verdadeiro se o conjunto de nós contém algum nó com um valor igual ao valor de teste.
Se é testada a desigualdade do valor de teste em relação a um conjunto de nós, o resultado é verdadeiro se o conjunto de nós contém algum nó com um valor diferente ao valor de teste.
O resultado é que o conjunto de nós pode ser igual e diferente ao mesmo tempo!!!

Expressões Relacionais

Expressões relacionais são usadas para comparar dois valores.
OperadorDescriçãoExemploResultado
<Menorprice<9.80false (se o preço é 9.80)
<=Menor ou igualprice<=9.80true
>Maiorprice>9.80false
>=Maior ou igualprice>=9.80true
Nota: XPath sempre converte cada operando em um número antes de fazer a avaliação.

Expressões Booleanas

Expressões booleanas são usadas para comparar dois valores.
OperadorDescriçãoExemploResultado
orOuprice=9.80 or price=9.70true (se o preço é 9.80)
andEprice<=9.80 and price=9.70false

Funções XPath

XPath contém uma biblioteca de funções para conversão de dados.

Biblioteca de Funções XPath

A biblioteca de funções XPath contém um conjunto de funções centrais para conversão e tradução de dados.

Funções para Conjunto de Nós

NomeDescriçãoSintaxe
count()Retorna o número de nós num conjunto de nósnumber=count(node-set)
id()Seleciona elementos pelo seu ID úniconode-set=id(value)
last()Retorna o número da posição do último nó na lista de nós processadosnumber=last()
local-name()Retorna a parte local de um nó. Um nó normalmente consiste de um prefixo, os dois pontos, seguidos pelo nome localstring=local-name(node)
name()Retorna o nome do nóstring=name(node)
namespace-uri()Retorna o namespace URI de um nó específicouri=namespace-url(node)
position()Retorna a posição na lista de nós do nó que está sendo processado atualmentenumber=position()

Funções de Strings

NomeDescriçãoSintaxeExemplo
concat()Retorna a concatenação de todos os argumentosstring=concat(val1,val2,...)concat('The',' ','XML') -> Resultado: 'The XML'
contains()Retorna verdadeiro se a segunda string está contida dentro da primeira string, senão retorna falsobool=contains(val,substr)contains('XML','X') -> Restultado: true
normalize-space()Remove espaços antes e depois de uma string e substitui todas as seqüências internas de espaços por um único espaço em brancostring=normalize-space(string)normalize-space(' The XML ') -> Resultado: 'The XML'
starts-with()Retorna verdadeiro se a primeira string começa com a segunda string, senão retorna falsobool=starts-with(string,substr)starts-with('XML','X') -> Resultado: true
string()Converte o argumento em stringstring(value)string(314) -> Resultado: '314'
string-length()Retorna o número de caracteres de uma stringnumber=string-length(string)string-length('Beatles') -> Resultado: 7
substring()Retorna um pedaço da stringstring=substring(string,start,length)substring('Beatles',1,4) -> Resultado: 'Beat'
substring-after()Retorna a parte da string que aparece depois do argumento substrstring=substring-after(string,substr)substring-after('12/10','/') -> Resultado: '10'
substring-before()Retorna a parte da string que aparece antes do argumento substrstring=substring-before(string,substr)substring-before('12/10','/') -> Resultado: '12'
translate()Realiza uma substituição caracter por caracter. Ela procura no argumento 'value' os caracteres contidos na 'string1' e substitui cada caractere pelo caractere da mesma posição na 'string2'string=translate(value,string1,string2)translate('12:30','30','45') -------> Resultado: '12:45' ----------------- translate('12:30','03','54') -------> Resultado: '12:45' ----------------- translate('12:30','0123','abcd') -------> Resultado: 'bc:da'

Funções Numéricas

NomeDescriçãoSintaxeExemplo
ceiling()Retorna o menor inteiro que não é menor que o argumento (função teto)number=ceiling(number)ceiling=(3.14) -> Resultado: 4
floor()Retorna o maior inteiro que não é maior que o argumento (função chão)number=floor(number)floor(3.14) -> Resultado: 3
number()Converte o argumento em um númeronumber=number(value)number('100') -> Resultado: 100
round()Arredonda o argumento para o inteiro mais próximointeger=round(number)round(3.14) -> Resultado: 3
sum()Retorna o valor total de um conjunto de valores numéricos num conjunto de nósnumber=sum(nodeset)sum(/cd/price)

Funções Booleanas

NomeDescriçãoSintaxe
boolean()Converte o argumento 'value' em Booleano e retorna verdadeiro ou falsobool=boolean(value)
false()Retorna falsofalse() Exemplo: number(false()) -> Resultado: 0
lang()Retorna verdadeiro se o argumento 'language' é igual ao idioma do elemento xsl:lang, senão retorna falsobool=lang(language)
not()Retorna verdadeiro se o argumento 'condition' é falso, e falso se o argumento é verdadeirobool=not(condition) Exemplo: not(false())
true()Retorna verdadeirotrue() Exemplo: number(true()) -> Resultado: 1

Exemplos XPath

Nós iremos usar o catálogo de CDs do nosso tutorial de XML para demonstrar alguns exemplos XPath.

O catálogo de CDs

Se você estudou o nosso tutorial de XML você lembrará de documento XML: (Uma fração do catalogo)
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <catalog>
    <cd>
      <title>Empire Burlesque</title>
      <artist>Bob Dylan</artist>
      <country>USA</country>
      <company>Columbia</company>
      <price>10.90</price>
      <year>1985</year>
    </cd>
    <cd>
      <title>Hide your heart</title>
      <artist>Bonnie Tyler</artist>
      <country>UK</country>
      <company>CBS Records</company>
      <price>9.90</price>
      <year>1988</year>
    </cd>
  .
  .
  .
  .
  </catalog>

Selecionando Nós

Nós demonstraremos como selecionar nós de um documento XML usando a função selectNodes no Internet Explorer. Esta função tem uma expressão de caminho local como argumento:
xmlobject.selectNodes(Xpath expression)

Selecionando Nós cd

O exemplo a seguir seleciona somente o primeiro nó do catálogo de cds:   xmlDoc.selectNodes("/catalog/cd[0]")
Se você tem o IE 5 ou superior você pode fazer mais testes.
Nota: IE 5 implementou que [0] deveria ser o primeiro nó, mas de acordo com o padrão W3C, deve ser [1].

Selecionando Nós price

O exemplo a seguir seleciona todos os nós price do catálogo de cds:   xmlDoc.selectNodes("/catalog/cd/price")
Se você tem o IE 5 ou superior você pode fazer mais testes.

Selecionando o texto dos Nós price

O exemplo a seguir seleciona apenas o texto dos nós price:   xmlDoc.selectNodes("/catalog/cd/price/text()")
Se você tem o IE 5 ou superior você pode fazer mais testes.

Selecionando Nós cd com price>10.80

O exemplo a seguir seleciona todos os nós cd com price>10.80:    xmlDoc.selectNodes("/catalog/cd[price>10.80]")
Se você tem o IE 5 ou superior você pode fazer mais testes.

Selecionando Nós price com price>10.80

O exemplo a seguir seleciona todos os nós price com price>10.80:   xmlDoc.selectNodes("/catalog/cd[price>10.80]/price")


PorJosé Carlos Macoratti
Disponível em http://www.macoratti.net/vb_xpath.htm

quinta-feira, 9 de junho de 2011

11 repositórios online gratuitos para seus projetos


Os repositórios online estão evoluindo bastante, passando de meros HDs virtuais para eficientes controladores de versão. Atualmente, temos muitas opções para hospedar nossos projetos na web, e relacionamos alguns deles para você guardar seu ‘precioso’ código. Caso já tenha utilizado algum destes, deixe suas impressões sobre o serviço nos comentários.
GitHub: O GitHub tem sido muito utilizado nos últimos tempos pelos desenvolvedores Rails, principalmente depois que o próprio framework passou a ser hospedado lá. Oferece ferramentas de colaboração, gerenciamento, revisão de código, wiki e outras coisas. Tem um plano gratuito para projetos open source.
Google Code: Se o Google já guarda seus contatos, seus documentos, seus vídeos e seus e-mails, porque não guardar também seus projetos? O Google oferece 2GB de espaço, ferramenta para criar wiki, visualização online dos códigos e feeds das atualizações, entre outros. É compatível com Subversion e Mercurial.
SourceForge: O bom (e velho) SourceForge está a mais de 10 anos hospedando projetos open source.  Oferece diversas ferramentas, como wiki, blog, estatísticas, mailing lists e mais um monte de coisas.
RubyForge: O RubyForge foi um dos primeiros repositórios voltado para aplicações Ruby. Oferece mailing lists, wikis, CVS/SVN, forum, e outras vantagens.
Assembla: O Assembla é um repositório pago, mas que oferece alguns planos free, voltados a projetos open source. Oferece 2GB de espaço, mais de 20 ferramentas e usuários ilimitados. Ao escolher o plano gratuito, tenha bastante atenção para as restrições, e não deixe de ler as letrinhas no final da página.
BitBucket: Pelo porte dos clientes que assinam os planos pagos, parece que o BitBucket é um lugar confiável para seu código. O plano gratuito (assim como os outros) oferece espaço ilimitado em disco, wiki, colaboradores (publicos) ilimitados e acesso a até 5 usuários registrados por projeto.
Beanstalkpo: Apesar de também oferecer serviços pagos, o Beanstalk tem um plano gratuito para você testar, com 100 MB de espaço, 1 usuário, 1 repositório e nada de SSL.
Freepository: Hospedando projetos desde 1999, o Freepository é compatível com Git ou SVN – mas o plano gratuito oferece acesso a um usuário com suporte apenas ao SVN.
unFuddle: Este site oferece um plano gratuito com 200MB de espaço, e 1 projeto para 2 usuários. Suporta SVN ou Git.
ProjectLocker: Pelo nome, percebemos que a segurança é o foco deste repositório. Oferece suporte a Git e SVN, com 500MB de espaço e acesso a 3 usuários por conta.
berliOS: O BerliOS Developer é um serviço gratuido para desenvolvedores em código aberto, com suporte a SVN/Mercurial/GIT. Tem listas, controle de bugs, quadro de mensagens/fórums, gerenciador de tarefas, e mais um monte de coisas.
No Google é possível encontrar muitos outros lugares para hospedar seus projetos. Caso você conheça algum que seja interessante (e gratuito), compartilhe conosco nos comentários.

sábado, 30 de abril de 2011

Configuração do Xj3D para integração com java

Para carregar o Browser Xj3D dentro de uma aplicação Java e tratar cenas X3D, são necessárias as seguintes configurações:
·         Instalar Xj3D 2.0 – http://www.xj3d.org/snapshots.html;
·         Copiar os arquivos “*.dll” do diretório “..\Xj3D\bin” para o diretório “..\jdk1.6.0_21\jre\bin”;
·         Criar um projeto e adicionar TODOS os arquivos “*.jar” do diretório “..\Xj3D\jars” para o classpath do projeto;

quinta-feira, 14 de abril de 2011

Principais comandos SQL


Gerenciando Tabelas: DDL - DATA DEFINITION LANGUAG
 
  •  Criando uma tabela:
 CREATE TABLE CLIENTES
 (ID VARCHAR(4) NOT NULL,
 NOME VARCHAR(30) NOT NULL,
   PAGAMENTO DECIMAL(4,2) NOT NULL); 
  • Deletando uma tabela:
 DROP TABLE CLIENTES; 
  • Alterando uma tabela, adicionando uma nova coluna:
 ALTER TABLE CLIENTES ADD COLUMN (TELEFONE VARCHAR(10) NOT NULL); 
  • Alterando uma tabela, modificando uma coluna:
 ALTER TABLE CLIENTES MODIFY COLUMN (TELEFONE VARCHAR(12)); 
  •  Apagando os dados de uma tabela, retornando-a ao estado de origem:
 TRUNCATE TABLE CLIENTES;
 
Manipulando Dados: DML - DATA MANIPULATION LANGUAGE 
  • Inserindo dados:
 INSERT INTO EMPREGADOS VALUES ('1111', 'João da Silva', 100.50); 
  •  Alterando dados:
 UPDATE EMPREGADOS SET PAGAMENTO = 120 WHERE ID = '1111';
  •   Deletando dados:
 DELETE FROM EMPREGADOS WHERE ID = '1111';
 
COMMIT;
ROLLBACK;
SAVEPOINT S1;
ROLLBACK TO S1;
 
Selecionando Dados: DQL - DATA QUERY LANGUAGE
 
 SELECT column1, column2, ...
 FROM table1, table2, ...
 [ WHERE column1 = 'value1'
                    AND column2 = 'value2'
                    OR (column1 = 'value3'
                    AND column2 = 'value4')]
 [GROUP BY column1, column2, ...]
 [HAVING function = 'value']
 [ORDER BY column1, column2, ...];
 
 SELECT COUNT(*) FROM EMPREGADOS;
 
 SELECT CIDADE, AVG(PAGAMENTO) FROM EMPREGADOS
 GROUP BY CIDADE
 HAVING AVG(PAGAMENTO) > 100;
 
 SELECT E.NOME, PE.PAGAMENTO
 FROM EMPREGADOS E, PAGAMENTO_EMPREGADOS PE
 WHERE E.EID = PE.EID;
 
 SELECT ID, NOME FROM EMPREGADOS
 WHERE PAGAMENTO > (SELECT AVG(PAGAMENTO) FROM EMPREGADOS);
 
Controlando o Acesso aosDados: DCL - DATA CONTROL LANGUAGE
 
 GRANT SELECT, INSERT, UPDATE, DELETE ON EMPREGADOS TD USER12;
 REVOKE DELETE ON EMPREGADOS FROM USER12;
 
Gerenciando Índices: DDL - DATA DEFINITION LANGUAGE
 
 CREATE INDEX EMPREGADOS_IDX ON EMPREGADOS(NOME);
 
 CREATE UNIQUE INDEX EMPREGADOS_IDX ON EMPREGADOS(NOME);
 
 CREATE INDEX EMPREGADOS_IDX ON EMPREGADOS(NOME, PAGAMENTO);
 
 DROP INDEX EMPREGADOS IDX;
 
Gerenciando Visões (views): DDL - DATA DEFINITION LANGUAGE
 
 CREATE VIEW MAIOR_PAGAMENTO_EMPREGADOS AS
 SELECT  FROM EMPREGADOS
 WHERE PAGAMENTO > 150;
 
 CREATE VIEW NOMES AS 
 SELECT NOME FROM EMPREGADOS;
 
 DROP VIEW NOMES;
 
Funções de Agregação:
 
 COUNT - Retorna o número de linhas
 SUM - Retorna a soma de uma coluna específica
 AVG - Retorna o valor médio de uma coluna específica
 MAX - Retorna o valor máximo de uma coluna específica
 MIN - Retorna o valor mínimo de uma coluna específica
 
     Exemplos:
 SELECT AVG(PAGAMENTO) FROM EMPREGADOS;
 
 SELECT COUNT(*) FROM EMPREGADOS;
 
Operadores Lógicos:
 
 IS NULL
 BETWEEN
 IN
 LIKE
 EXISTS
 UNIQUE
 ALL and ANY
 
    Exemplos: 
 SELECT * FROM EMPREGADOS
 WHERE PAGAMENTO BETWEEN 100 AND 150;
 
 SELECT NOME, PAGAMENTO
 FROM EMPREGADOS
 WHERE EID IN ('1111', '2222', '3333');
 
Negando Condições com o Operador NOT:
 
 NOT EQUAL
 NOT BETWEEN
 NOT IN
 NOT LIKE
 NOT EXISTS
 NOT UNIQUE
 
   Exemplos:
  SELECT * FROM EMPREGADOS
 WHERE PAGAMENTO NOT BETWEEN 100 AND 150;
 
 SELECT NOME, PAGAMENTO
 FROM EMPREGADOS
 WHERE EID NOT IN ('1111', '2222', '3333');
 
 SELECT NOME FROM EMPREGADOS
 WHERE NOME NOT LIKE 'S%'


Por Adriana Ferreira
Link: http://www.sqlmagazine.com.br/Artigos/sqlserver/02_Comandos_SQL.asp