SQL Flashcards
Cláusulas
Select
From
Where
Group by
Having
Ordem by
Cláusula Select
Sintaxe básica da cláusula select
SELECT coluna1, coluna2…
FROM tabela1
…
WHERE condições
…
… = pode ter outras
Cláusula Grup by
1 a cláusula do group by só pode agrupar registros repetidos, por exemplo, não poso agrupar id.
2 para ter group by precisa ter consultas que tenham agregação (média, contar, máximo, mínimo, soma)
3 SELECT cidades, AVG(valor)
FROM vendas
GRUPO BY cidades;
O resultado vai mostrar duas colunas, uma coluna é a representação do agrupamento das cidades da tabela, a outra coluna é a média dos valores de vendas para aqueles registros em que as cidades se repetem.
Cláusula HAVING e ON
Having: faz um filtro em cima do que foi grupado –> após o group by (a cláusula having só poder ser usada com o group by).
1 posso usar o having junto com o where
2
Cláusula ORDER BY
1 pode ser feito a ordenação em várias colunas ao mesmo tempo.
Sintaxe: ORDER BY coluna1 ASC, coluna2 ASC, coluna3 DESC…
2 no order by pode, ao invés de selecionar as colunas pelo nome, posso selecionar pela posição da esquerda (1) para a direita (n).
3 se nada estiver descrito na ordenação (asc ou desc), o default é o asc e ele que é aplicado.
4 posso usar expressões para ordenar.
4.1 order by right(cpf_cliente,3) –> isso quer dizer que existe uma coluna só de cpfs de clientes e quero que a consulta ordene esses cpfs pelos últimos 3 dígitos de forma ascendente (o right indica á direta, ou seja, os números mais a direitas, ou seja, os números do fim)
4,2 order by left(cpf_cliente,3) –> isso quer dizer que existe uma coluna só de cpfs de clientes e quero que a consulta ordene esses cpfs pelos primeiros 3 dígitos de forma ascendente (o left indica á esquerda, ou seja, os números mais á esquerda ou seja, os números do começo)
Para fazer correlações entre relações (operadores de conjuntos)
Union
Union all
Intersect
Except
Para aplicar esses operadores, todas as colunas que estão na tabela A devem também estar na tabela B e na mesma ordem e ter o mesmo tipo de dados.
Todas as tabelas devem ter o mesmo número de colunas.
Union
1 Junta todos os registros ou algumas que estão na tabela A com os da tabela B.
2 Os registros que forem repetidos nas tabelas, não serão mostrados 2 ou mais vezes, será apenas 1 vez.
Union all
É igual ao union, só que ao invés de juntar e não repetir os repetidos como no union, no union all há a repetição dos registros repetidos.
Intersect
A intersecção junta duas tabelas e o resultado é somente o que as duas tabelas têm em comum.
O que não é em comum não aparece na tabela resultado.
Except
O except entre duas tabelas A e B produz uma tabela resultado que mostra o que tem na tabela A e não tem em B
Funções de agregação e detalhe
COUNT
AVG
SUM
MIM
MAX
HAVING
As funções de agregação são usadas no select, exceto o having, que é usada depois do GRUP BY
Função COUNT
1 Conta a quantidade de valores, independente de se repetirem ou não.
2 o COUNT não conta os valores nuloa
3 se for COUNT * irá contar todas as linhas da tabela
4 se for COUNT(nome da coluna) irá contar todos os valores não nulos daquela coluna
4 se for COUNT(nome da coluna1), COUNT(NOME DA COLUNA2)… Irá contar todos os valores das colunas 1, 2…
5 posso usar o select com count e group by. Basicamente eu vou fazer a contagem e depois vou agrupar essa contagem em cada valor do group by.
5,1 usando um exemplo, posso fazer o count dos produtos vendidos e agrupar essa contagem por estados
Função AVG
Faz a média dos valores da coluna
Função MAX
Retorna o valor máximo
Função SUM
Faz a soma dos valores
Função MIN
Retorna o valor mínimo
Função HAVING
Preciso ver vídeo
Tipos de operadores
1) Relacionais = igual, maior, maior que ou igual…..
2) lógicos = and, or, not
3 especiais
Operadores especiais (são 5)
IS NULL
BETWEEN
LIKE
IN
DISTINCT
O DISTINCT é usado no select, os demais são usados no WHERE
IS NULL ou IS NOT NULL
Testa se um valor em todas as colunas, só em alguma coluna, ou só é algum registro, se ele é nulo (IS NULL) ou não (IS NOT NULL)
BETWEEN
Delimita um de pesquisa entre valores
LIKE
Define um padrão de cadeia de caracteres para pesquisar nos registros
Se quiser pesquisar por vários caracteres ao mesmo tempo na mesma posição, por exemplo usando [a,b,c]% dentro das aspas = pesquisar por nomes que comecem (tenham a primeira letra) com a ou b ou c
Se usar [a-f]%, estou dizendo qualquer nome que comece com a letra A ate a letra F.
Se usar [!acf]% estou dizendo que quero os nomes que não comecem com a ou c ou f.
IN
Pesquisa e compara se um valor X da pesquisa, se tem algum valor igual (correspondente) dele nos registros
O BETWEEN acha os valores interpolados e o IN acha os valores fixos e determinados (sem intervalo).