terça-feira, 15 de novembro de 2011

Sql/Comandos



RETORNANDO CONSULTA EM XML
select id_contato,
primeiro_nome,
sobrenome,
email,
sexo,
aniversário,
local
from meus_contatos
where primeiro_nome like '%Anne%'
order by id_contato
FOR XML AUTO

TOP
Limitar o número de linhas é usado quando não queremos listar todas as linhas de uma tabela, seja pelo volume de linhas ou por não haver necessidade.
Começa da posição 0, então 7 já é o oitavo resultado.


Em SQL Server use o Top para indicar o limite de linhas desejado na consulta.
SELECT top 7 * FROM empregados
Ex:
SELECT TOP 2 SUM(venda) AS total, primeiro_nome  FROM venda_biscoito
GROUP BY primeiro_nome
ORDER BY total DESC


GETDATE()  
Para descobrir a indade de uma pessoa pela data de nascimento.
SELECT * FROM meus_contatos
WHERE (GETDATE()- aniversário >=  "idade" * 365)


SUBSTRING 
Populando uma tabela com SUBSTRING no UPDATE.
 


Tabela Anterior

Primeiro Interesse
update interesses
set interesse1 = SUBSTRING(interesses,1,8)

Segundo Interesse
update interesses
set interesse2 = SUBSTRING(interesses,11,7)

Terceiro Interesse
update interesses
set interesse3 = SUBSTRING(interesses,20,8)

Quarto Interesse.
update interesses
set interesse4 = SUBSTRING(interesses,30,6)

Tabela Depois dos Comandos.

Excluindo a coluna interesses desnormalizada.
ALTER TABLE interesses
DROP COLUMN interesses


EXISTS e NOT EXISTS
Da mesma forma que o comando IN e NOT IN, você pode utilizar ambos EXISTS e NOT EXISTS com suas subconsultas. A consulta abaixo retorna dados de meus_contatos onde o id_contato aparece pelo menos uma vez na tabela interesse_contato.

SELECT mc.primeiro_nome primeironome, mc.sobrenome sobrenome, mc.email email
FROM meus_contatos mc
WHERE EXISTS
(SELECT * FROM contato_interesse ci WHERE mc.id_contato = ci.id_contato);
 
UNION
Uma UNION combina de duas ou mais consultas em uma tabela baseada no que você especifica na lista de colunas SELECT.

Regra UNION para SQL:
Só pode ter um ORDER BY ao final do comando. Isto porque UNION concatena e agrupa os resultados dos múltiplos comandos SELECT.

O número de colunas em cada comando SELECT deve combinar. Você não pode selecionar duas colunas do primeiro comando e uma do próximo.

Você deve ter também as mesmas expressões e agregar funções em cada comando SELECT.

Você pode colocar o comando SELECT em qualquer ordem; Isto não altera os resultados.
Por padrão, SQL suprime valores duplicados dos resultados da UNION.

Os tipos de dados nas colunas precisam ser os mesmos ou serem conversíveis entre si.

Se por alguma razão você quer ver resultados duplicados, você pode utilizar o operador UNION ALL. Ele retorna cada resultado, não só os diferentes.

·     SELECT cargo FROM emprego_atual
·     UNION
·     SELECT cargo FROM emprego_desejado
·     UNION
·     SELECT cargo FROM lista_empregos
·     ORDER BY cargo;

UNION ALL
UNION ALL funciona exatamente como o UNION, exceto que eles retornam todos os valores das colunas, ao invés de apenas uma instancia de cada valor e duplicado.

SELECT cargo FROM emprego_atual
UNION ALL
SELECT cargo FROM emprego_desejado
UNION ALL
SELECT cargo FROM lista_empregos
ORDER BY cargo;

Crie uma tabela a partir da UNION.

O comando CREATE TABLE AS pega o resultado de uma consulta SELECT e cria uma tabela a partir deste resultados. No exemplo abaixo, estamos colocando nosso titulo UNION em uma nova tabela chamada minha_union.

CREATE TABLE minha_union AS
SELECT cargo FROM emprego_atual UNION
SELECT cargo FROM emprego_desejado UNION
SELECT cargo FROM lista_empregos;


INTERSECT e EXCEPT
INTERSECT e EXCEPT são usados quase da mesma forma que UNION – para encontrar partes de consultas sobrepostas.
Estas clausulas não existem no MySql.


INTERSECT retorna apenas os valores que estão na primeira consulta e na segunda.

SELECT cargo FROM emprego_atual
INTERSECT
SELECT cargo FROM emprego_desejado;

SELECT cargo FROM emprego_atual
EXCEPT
SELECT cargo FROM emprego_desejado;