DADOS DE AMOSTRA PADRÃO TEXTUAL COMBINAÇÃO DE CONDIÇÕES AGREGAÇÃO E AGRUPAMENTO
LIKE busca um padrão textual em uma coluna. Buscar nomes de cidades que possuam nota 5 E FUNÇÕES
pais
% substitui um nº qualquer de caracteres. população menor que 300 mil: MIN Menor valor de uma coluna
id nome populacao area _ substitui um único caractere. SELECT nome MAX Maior valor de uma coluna
1 França 66600000 640680 Buscar nomes de cidades que começam com ‘P’: FROM cidade COUNT Número de linhas
2 Alemanha 80700000 357000 SELECT nome WHERE nota = 5 AVG Média de valores de coluna numérica
... ... ... ... FROM cidade AND populacao < 300000; SUM Soma de valores de coluna numérica
WHERE nome LIKE 'P%';
cidade
Buscar cidades que comecem com 'R' OU 'S': Descobrir o número de cidades:
id nome id_pais populacao nota Buscar nomes de cidades que começam com SELECT nome SELECT COUNT(*)
1 Paris 1 2243000 5 qualquer letra seguidos de 'ublin': FROM cidade FROM cidade;
SELECT nome WHERE nome LIKE 'R%'
2 Berlin 2 3460000 3
FROM cidade OR nome LIKE 'S%'; Descobrir o número de cidades sem notas nulas:
... ... ... ... ...
WHERE nome LIKE '_ublin'; SELECT COUNT(nota)
CONSULTA EM ÚNICA TABELA ALIASES FROM cidade;
OUTROS OPERADORES
Buscar todas as colunas da tabela pais: BETWEEN busca registros em intervalo. COLUNAS
SELECT * SELECT nome AS nome_cidade FROM cidade; Buscar a menor e a maior população dos países:
Buscar nomes de cidades que possuam nota no SELECT MIN(populacao), MAX(populacao)
FROM pais; intervalo de 3 a 5:
TABELAS FROM pais;
SELECT nome
Buscar colunas id e nome da tabela cidade: FROM cidade SELECT [Link], [Link] FROM cidade AS c
SELECT id, nome JOIN pais AS p ON c.id_pais = [Link]; GRUPOS
WHERE nota BETWEEN 3 AND 5; GROUP BY agrupa registros que possuem os
FROM cidade;
mesmos valores em colunas especificadas.
IN busca registros em uma lista de valores. ORDENAÇÃO
Buscar notas distintas da tabela cidade: Buscar a população total de cidades de cada país:
Buscar nomes de cidades que possuam nota entre Buscar cidades ordenados pela nota na forma
SELECT DISTINCT(nota) SELECT id_pais, SUM(populacao)
4 ou 5: padrão crescente:
FROM cidade; FROM cidade
SELECT nome SELECT nome FROM cidade
GROUP BY id_pais;
FROM cidade ORDER BY nota [ASC];
FILTRANDO OS RESULTADOS WHERE nota IN (4, 5); HAVING define uma condição para os grupos,
OPERADORES DE COMPARAÇÃO Buscar cidades ordenados pela nota decrescente: operando com as funções agregadas.
= < <= IS NULL testa se um valor é nulo. SELECT nome FROM cidade
<> ou != > > Buscar nomes de cidades que não possuam valor ORDER BY nota DESC;
Descobrir a classificação média das cidades nos
em nota:
países se a média estiver acima de 3:
Buscar nome de cidades com nota maior que 3: SELECT nome TESTAR CONDIÇÕES SELECT id_pais, AVG(nota)
SELECT nome FROM cidade Retornar o nome das cidades e uma classificação FROM cidade
FROM cidade WHERE nota IS NULL; textual avaliada com base em condições de nota: GROUP BY id_pais
WHERE nota > 3; SELECT nome, HAVING AVG(nota) > 3;
NEGAÇÃO DE CONDIÇÃO CASE
Buscar nomes de cidades que não tem nota 5: Buscar nomes de cidades que não possuam notas WHEN nota > 3 THEN 'Avaliação boa'
SELECT nome 1 e 2: WHEN nota = 3 THEN 'Avaliacão Média'
FROM cidade SELECT nome ELSE 'Avaliação ruim'
WHERE nota <> 5; FROM cidade END AS Classificacao
WHERE nota NOT IN (1, 2); FROM cidade;
Traduzido e adaptado de [Link]
CONSULTA EM VÁRIAS TABELAS LEFT JOIN (LEFT OUTER JOIN) OPERAÇÕES DE CONJUNTOS SUBCONSULTAS
PRODUTO CARTESIANO (CROSS JOIN) O LEFT JOIN retorna todos os registros da tabela Combinam resultados de duas ou mais consultas. Uma subconsulta é uma consulta aninhada
O produto cartesiano (ou o CROSS JOIN) faz da esquerda e os correspondentes da direita. Se não ciclistas skatistas dentro de outra consulta ou dentro de outra
o cruzamento de todos os pares de linhas das houver correspondência, os campos da direita serão subconsulta.
id nome pais id nome pais
preenchidos com NULL.
tabelas, independente de correspondência. 1 João BR 1 João BR
SELECT *
SELECT * 2 Maria BR 2 Júlio BR VALORES SIMPLES
FROM cidade
FROM cidade, pais; 3 Peter US 3 Zaz FR Retorna exatamente uma coluna e uma linha. Ela
LEFT JOIN pais ON cidade.id_pais = [Link];
cidade pais pode ser usada com operadores de comparação
SELECT * como =, <, <=, >, ou >=.
id nome id_pais id nome UNION
FROM cidade Buscar cidades com a mesma nota de Paris:
1 Paris 1 1 França O UNION combina os resultados de dois
CROSS JOIN pais; SELECT nome
2 Berlin 2 2 Alemanha conjuntos de dados e remove duplicatas. O
cidade pais
3 Warsaw 4 NULL NULL UNION ALL não remove as duplicatas. FROM cidade
id nome id_pais id nome
Buscar o nome de ciclistas e de skatistas do Brasil: WHERE nota = (
1 Paris 1 1 França SELECT nome FROM ciclistas
RIGHT JOIN (RIGHT OUTER JOIN) SELECT nota
1 Paris 1 2 Alemanha WHERE pais = ‘BR’
O RIGHT JOIN retorna todos os registros da FROM cidade
2 Berlin 2 1 França UNION / UNION ALL
tabela da direita e os correspondentes da esquerda. WHERE nome = 'Paris'
2 Berlin 2 2 Alemanha
Se não houver correspondência, os campos da SELECT nome FROM skatistas
);
... ... ... ... ... esquerda serão preenchidos com NULL. WHERE pais = ‘BR’
SELECT *
FROM cidade INTERSECT VALORES MÚLTIPLOS
RIGHT JOIN pais ON cidade.id_pais = [Link]; O INTERSECT retorna somente as linhas que Retorna várias colunas ou várias linhas. Esse
INNER JOIN (JOIN)
cidade pais aparecem em ambos os resultados. tipo de subconsulta pode ser usado com os
O INNER JOIN retorna somente os registros
Buscar o nome dos brasileiros que são ciclistas e operadores IN, EXISTS, ALL ou ANY.
que possuem valores relacionados em ambas as id nome id_pais id nome
tabelas, isto é, as intersecções. 1 Paris 1 1 França skatistas: Buscar países que possuem ao menos uma cidade:
SELECT * 2 Berlin 2 2 Alemanha
SELECT nome FROM ciclistas SELECT nome
FROM cidade WHERE pais = ‘BR’ FROM pais
NULL NULL NULL 3 Islândia
INNER JOIN pais ON cidade.id_pais = [Link]; INTERSECT WHERE EXISTS (
cidade pais SELECT nome FROM skatistas
FULL JOIN (FULL OUTER JOIN) SELECT *
id nome id_pais id nome WHERE pais = ‘BR’
O FULL JOIN retorna todas as linhas de ambas as FROM cidade
1 Paris 1 1 França tabelas. Se não houver correspondência na outra WHERE id_pais = [Link]
EXCEPT
2 Berlin 2 2 Alemanha tabela, os valores serão retornados como NULL. );
SELECT * O EXCEPT retorna linhas que aparecem no
3 Warsaw 4 3 Islândia
FROM cidade primeiro resultado e não aparecem no segundo.
FULL JOIN pais ON cidade.id_pais = [Link]; Buscar o nome dos brasileiros ciclistas que não OUTROS COMANDOS DML
cidade pais são skatistas: Excluir: DELETE FROM tabela WHERE...;
id nome id_pais id nome SELECT nome FROM ciclistas Atualizar UPDATE tabela SET coluna=valor
1 Paris 1 1 França WHERE pais = ‘BR’ WHERE...;
2 Berlin 2 2 Alemanha EXCEPT Inserir: INSERT INTO tabela VALUES (valor1,
3 Warsaw 4 NULL NULL
SELECT nome FROM skatistas valo2, ....); ou INSERT INTO tabela (coluna1,
WHERE pais = ‘BR’ coluna2) VALUES (valor1, valor2);
NULL NULL NULL 3 Islândia
Traduzido e adaptado de [Link]