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).
DISTINCT
Elimina os valores repetidos dentro de uma tabela e mostra o resultado na tabela consulta
É usado no select –> SELECT DISTINCT nomecoluna1
Exemplo: uma tabela de vendas que consta as colunas do id da venda, id do cliente, valor da venda, compra. Para saber quais clientes compraram, posso fazer um select da coluna ID cliente e apareceram todos os registros dos clientes que compraram (com valores repetidos = o cliente 1 comprou 4 vezes, ele vai aparecer 4 vezes na consulta). Se usar a palavra reservado DITINCT no select, todos os valores repetidos serão ocultados na tabela resultado, então o cliente 1 só apareceria 1 vez e não mais 4 vezes.
DISTINCT X GROUP BY????? Tirar duvida se é isso mesmo
O distinct pega os valores repetidos e mostra só uma vez (em apenas uma linha) sem contar a quantidade de vezes que repete,
o grupo by pega os valores repetidos e mostra só uma vez (agrupados em uma linha) contando a quantidade de vezes que ele repete.
Tipos de Join
1 Inner join
2 Outer join
2.1 Left join
2.2 Right join
2.3 Full join
3 escrever o outer no codigo é optativo –> escrever left ou right + outer + join = escrever left ou tight + join
Inner join
1 Representa apenas a intersecção entre dois conjuntos = aquilo que é comum entre dois ou mais conjuntos (pensar no diagrama de venn)
Outer join
1 representa aquilo que não é comum entre dois ou mais conjuntos mais aquilo que é comum (pensar no diagrama de venn)
Left outer join
1 Representa o conjunto (tabelas) do lado esquerdo mais a intersecção (imaginar diagrama de venn)
2 se tiver duas colunas em duas tabelas separadas, em que a primeira coluna seja alunos e a segunda coluna da outra tabela seja curso, se usar o left outer join, vou representar todos os alunos que tem curso (a intersecção) e todos os alunos que não tem curso (o lado esquerdo).
3 Para os alunos sem curso que vão aparecer, o valor na coluna curso desses alunos será NULL
Right outer join
1 Representa o conjunto (tabelas) do lado direito mais a intersecção (imaginar diagrama de venn)
2 se tiver duas colunas em duas tabelas separadas, em que a primeira coluna seja alunos e a segunda coluna da outra tabela seja curso, se usar o right outer join, vou representar todos os curso que tem alunos (a intersecção) e todos os cursos mesmk que não tenham alunos (o lado direito).
3 Para os cursos sem aluno que vão aparecer, o valor na coluna aluno desses cursos será NULL
Full join
Comando truncate
Apaga todos os registros da tabela de uma só vez
Comando insert - sintaxe
● INSERT INTO nome da tabela
● *(atributos da tabela separados por vírgula)
● VALUES
● (valores a serem inseridos)
- = essa parte é opcional. Se for usada, posso inserir os valores na ordem que os atributos estiverem dentro dos parênteses, se não for usada, tenho que inserir os valores na ordem que os atributos vai estar na tabela.
Comando update - sintaxe
● UPDATE nome da tabela
● SET nome da coluna = valor novo, nome da coluna 2 = valor novo 2…
● WHERE *condição
- = na condição posso ter uma subquery (um select dentro de um comando insert, delete é update)
Comando delete - sintaxe
DELETE FROM nome da tabela
WHERE *condição
- = na condição posso ter uma subquery (um select dentro de um comando insert, delete é update)
Cláusula limit
SELECT [ coluna1, coluna2, … ]
FROM [ tabela1 ]
LIMIT [índice inicial , limite ]
Índice inicial = pode qual posição começa
Limite = até onde vai
Se começar da posição 0 e for até o limite 3, vai trazer 3 registros. Se começar da 1 e for até o limite 3, vai trazer 2 registros, ocultando o registro de posição 1.