Upcoming SlideShare
×

# Apostila de sql basico

19,147 views

Published on

3 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

Views
Total views
19,147
On SlideShare
0
From Embeds
0
Number of Embeds
15,805
Actions
Shares
0
193
0
Likes
3
Embeds 0
No embeds

No notes for slide

### Apostila de sql basico

2. 2. Versão: 2.0 www.marcelosincic.com.br Página 2 de 28www.marcelosincic.com.br Reprodução e distribuição livre1 Introdução ____________________________________________________ 41.1 Conceito de Banco de Dados_________________________________ 41.2 Comandos SQL ____________________________________________ 51.3 Tipos de Dados ____________________________________________ 51.3.1 Regras de Nomenclatura e Escrita __________________________ 51.3.2 Tipos Comuns __________________________________________ 61.3.3 Tipos Definidos Pelo Usuário_______________________________ 61.3.4 Variáveis_______________________________________________ 71.4 Tipos de Objetos ___________________________________________ 71.5 Batch e Script______________________________________________ 72 Consultas Básicas _____________________________________________ 92.1 SELECT...FROM____________________________________________ 92.1.1 SELECT DISTINCT ______________________________________ 92.1.2 CASE...WHEN...THEN…END _____________________________ 102.2 WHERE __________________________________________________ 102.2.1 Filtragem de Strings _____________________________________ 112.2.2 Operador IN ___________________________________________ 112.2.3 Operadores e Precedência _______________________________ 112.3 ALIAS ___________________________________________________ 122.4 ORDER BY _______________________________________________ 122.5 TOP...WITH TIES __________________________________________ 123 Agrupando Dados_____________________________________________ 143.1 Funções de Agregação_____________________________________ 143.2 GROUP BY _______________________________________________ 143.3 HAVING__________________________________________________ 154 Consultas com Múltiplas Tabelas________________________________ 164.1 INNER JOIN ______________________________________________ 164.2 LEFT/RIGHT JOIN _________________________________________ 174.3 FULL JOIN _______________________________________________ 174.4 JOIN com Chaves Composta ________________________________ 184.5 SELECT…INTO e Tabela Temporária _________________________ 185 Subqueries___________________________________________________ 205.1 Geração de Coluna ________________________________________ 205.2 Construção de WHERE _____________________________________ 215.3 Construção de IN__________________________________________ 216 Transações __________________________________________________ 22
3. 3. Versão: 2.0 www.marcelosincic.com.br Página 3 de 28www.marcelosincic.com.br Reprodução e distribuição livre6.1 BEGIN...COMMIT...ROLLBACK ______________________________ 226.2 LOCKs___________________________________________________ 227 Inserindo Dados ______________________________________________ 237.1 INSERT com SELECT ______________________________________ 238 Deletando Dados______________________________________________ 249 Alterando Dados ______________________________________________ 2510 Índices ____________________________________________________ 2610.1 Estrutura de Índices _______________________________________ 2610.2 Otimizando Performance ___________________________________ 2611 Diagramas _________________________________________________ 2711.1 PUBS____________________________________________________ 2711.2 Northwind________________________________________________ 28
8. 8. Versão: 2.0 www.marcelosincic.com.br Página 8 de 28www.marcelosincic.com.br Reprodução e distribuição livre(Nome char(30),Cidade varchar(50),Estado char(2))GOINSERT CLIENTES VALUES(‘Joao’, ‘Guarulhos’, ‘SP’)SELECT *FROM CLIENTESNote que a segunda instrução é a inserção do registro na tabela, portanto o uso do go força a tabelade clientes a ser criada para depois executar os comandos seguintes. Se não houvesse o gocorremos o risco do insert ser executado junto com o create, e neste caso a tabela ainda nãoexistiria.Scripts são arquivos textos que contem um batch para ser executado.Diversas ferramentas podem executar o script, por ler o seu conteúdo e enviar para o servidor a fimde execução.Também é possível executar comandos em string como o exemplo abaixo, utilizando a instruçãoexec:--COMANDOS DINAMICOSDECLARE @COMANDO VARCHAR(2000)DECLARE @TABELA VARCHAR(100)DECLARE @DATABASE VARCHAR(100)SET @TABELA=CUSTOMERSSET @DATABASE=NORTHWINDSET @COMANDO=USE + @DATABASE + SELECT * FROM +@TABELAEXECUTE(@COMANDO)PRINT @COMANDO
13. 13. Versão: 2.0 www.marcelosincic.com.br Página 13 de 28www.marcelosincic.com.br Reprodução e distribuição livree na quinta linha um dos três que venderam em segundo. Esta comparação pode ser prejudicialquando analisamos comissão, por exemplo.Para resolver casos em que a ultima linha contenha repetições, ou empates, e estes não sejamomitidos acrescentamos o with tiés:SELECT DISTINCT TOP 5 WITH TIES PRODUCTID,QUANTITYFROM [ORDER DETAILS]ORDER BY QUANTITY DESCAgora não retornaram mais apenas cinco produtos, mas sim sete, uma vez que o ultimo produtopossuia outros dois com a mesma colocação.A base para definir os empates no with ties é a coluna utilizada para fazer o order.