Você está na página 1de 2

Resumo de SQL básico

SQL, ou Structured Query Language (Linguagem de Consulta FULL JOIN


Estruturada), é uma linguagem para comunicação com bancos de FILTRANDO RESULTADOS CONSULTANDO VÁRIAS TABELAS
FULL JOIN (ou explicitamente FULL OUTER JOIN) retorna
dados. Ela é usada para selecionar dados específicos e criar OPERADORES DE COMPARAÇÃO INNER JOIN todas as linhas de ambas as tabelas – se não houver uma linha
relatórios complexos. Atualmente, o SQL é uma linguagem de Recuperar os nomes das cidades cuja classificação é maior que 3: JOIN (ou explicitamente INNER JOIN) retorna linhas cujos correspondente na segunda tabela, valores NULL serão
dados universal, sendo usada em praticamente todas as SELECT nome valores em ambas as tabelas são correspondentes. retornados.
tecnologias que processam dados. FROM cidade SELECT cidade.nome, pais.nome SELECT cidade.nome, pais.nome
DADOS DE EXEMPLO WHERE classificacao > 3; FROM cidade
[INNER] JOIN pais
FROM cidade
FULL [OUTER] JOIN pais
PAIS ON cidade.id_pais = pais.id; ON cidade.id_pais = pais.id;
Recuperar os nomes das cidades que não são nem Berlim nem
id nome populacao area CIDADE PAIS CIDADE PAIS
Madrid:
id nome id_pais id nome id nome id_pais id nome
1 França 66600000 640680 SELECT nome
1 Paris 1 1 França 1 Paris 1 1 França
2 Alemanha 80700000 357000 FROM cidade
WHERE nome != 'Berlim' 2 Berlim 2 2 Alemanha 2 Berlim 2 2 Alemanha
... ... ... ... AND nome != 'Madrid'; 3 Varsóvia 4 3 Islândia 3 Varsóvia 4 NULL NULL
CIDADE NULL NULL NULL 3 Islândia

id nome id_pais populacao classificacao


OPERADORES DE TEXTO
1 Paris 1 2243000 5 Pesquisar nomes de cidades que comecem com um "P" ou CROSS JOIN
2 Berlim 2 3460000 3 terminem com um "s": LEFT JOIN CROSS JOIN retorna todas as combinações possíveis de linhas
SELECT nome LEFT JOIN retorna todas as linhas da tabela da esquerda com das duas tabelas. Há duas sintaxes disponíveis.
... ... ... ... ...
FROM cidade as linhas correspondentes na tabela da direita. Se não houver SELECT cidade.nome, pais.nome
CONSULTANDO UMA ÚNICA WHERE nome LIKE 'P%'
OR nome LIKE '%s';
linhas correspondentes, os valores retornados da segunda tabela FROM cidade
serão NULL. CROSS JOIN pais;
TABELA SELECT cidade.nome, pais.nome
Recuperar todas as colunas da tabela pais: Pesquisar nomes de cidades que comecem com qualquer letra FROM cidade SELECT cidade.nome, pais.nome
SELECT * seguida de "ublin" (como Dublin, na Irlanda, ou Lublin, na LEFT JOIN pais FROM cidade, pais;
FROM pais; Polônia): ON cidade.id_pais = pais.id; CIDADE PAIS

Recuperar as colunas id e nome da tabela cidade: SELECT nome CIDADE PAIS id nome id_pais id nome
SELECT id, nome FROM cidade id nome id_pais id nome 1 Paris 1 1 França
FROM cidade; WHERE nome LIKE '_ublin'; 1 Paris 1 1 França 1 Paris 1 2 Alemanha
Recuperar os nomes das cidades ordenados pela coluna 2 Berlim 2 2 Alemanha 2 Berlim 2 1 França
classificacao em ordem crescente (ASC) padrão: 3 Varsóvia 4 NULL NULL 2 Berlim 2 2 Alemanha
SELECT nome OUTROS OPERADORES
FROM cidade Recuperar os nomes das cidades com uma população entre
ORDER BY classificacao [ASC]; 500.000 e 5 milhões:
SELECT nome
NATURAL JOIN
Recuperar os nomes das cidades ordenados pela coluna NATURAL JOIN une as tabelas de acordo com todas as colunas
FROM cidade
classificacao em ordem decrescente (DESC):
WHERE populacao BETWEEN 500000 AND 5000000;
RIGHT JOIN com o mesmo nome.
SELECT nome RIGHT JOIN retorna todas as linhas da tabela da direita com as SELECT cidade.nome, pais.nome
FROM cidade linhas correspondentes na tabela da esquerda. Se não houver FROM cidade
ORDER BY classificacao DESC; Recuperar os nomes das cidades que não têm um valor de linhas correspondentes, os valores retornados da segunda tabela NATURAL JOIN pais;

APELIDOS/ALIAS classificação:
SELECT nome
serão NULL.
SELECT cidade.nome, pais.nome
CIDADE
id_pais id nome
PAIS
nome id
COLUNAS FROM cidade FROM cidade 6 6 São Marino São Marino 6
SELECT nome AS nome_cidade WHERE classificacao IS NOT NULL; RIGHT JOIN pais 7 7 Cidade do Vaticano Cidade do Vaticano 7
FROM cidade; ON cidade.id_pais = pais.id; 5 9 Grécia Grécia 9
TABELAS Recuperar os nomes das cidades localizadas em países cujo
CIDADE PAIS
10 11 Mônaco Mônaco 10
id nome id_pais id nome
SELECT pa.nome, ci.nome identificador é 1, 4, 7 ou 8: NATURAL JOIN usa essas colunas para fazer a correspondência
1 Paris 1 1 França
FROM cidade AS ci SELECT nome entre as linhas:
JOIN pais AS pa FROM cidade 2 Berlim 2 2 Alemanha cidade.id, cidade.nome, pais.id, pais.nome.
ON ci.id_pais = pa.id; WHERE id_pais IN (1, 4, 7, 8); NULL NULL NULL 3 Islândia Na prática, NATURAL JOIN raramente é usado.

LearnSQL.com.br é propriedade de Vertabelo SA


Experimente o curso interativo SQL para iniciantes em LearnSQL.com.br e confira nossos outros cursos de SQL. vertabelo.com | CC BY-NC-ND Vertabelo SA
Resumo de SQL básico
AGREGAÇÃO E AGRUPAMENTO SUBCONSULTAS OPERAÇÕES DE CONJUNTO
GROUP BY agrupa linhas com os mesmos valores em colunas especificadas. Ele gera Uma subconsulta é uma consulta aninhada em outra consulta ou em outra subconsulta. As operações de conjunto são usadas para combinar os resultados de duas ou mais
resumos (agregados) para cada combinação exclusiva de valores. Há diferentes tipos de subconsultas. consultas em um único resultado. As consultas combinadas devem retornar o mesmo
CIDADE número de colunas e tipos de dados compatíveis. Os nomes das colunas correspondentes
podem ser diferentes.
id nome id_pais VALOR ÚNICO
A subconsulta mais simples retorna exatamente uma coluna e uma linha. Ela pode ser CICLISMO PATINACAO
1 Paris 1
CIDADE usada com os operadores de comparação =, <, <=, > ou >=. id nome pais id nome pais
101 Marselha 1 A consulta a seguir é usada para encontrar cidades com a mesma classificação de Paris:
id_pais contagem 1 YK DE 1 YK DE
102 Lyon 1 SELECT nome
1 3 FROM cidade 2 ZG DE 2 DF DE
2 Berlim 2
2 3 WHERE classificacao = ( 3 WT PL 3 AK PL
103 Hamburgo 2 SELECT classificacao
4 2 ... ... ... ... ... ...
104 Munique 2 FROM cidade
3 Varsóvia 4 WHERE nome = 'Paris' UNION
); UNION combina os resultados de dois conjuntos de resultados e exclui os duplicados.
105 Cracóvia 4
UNION ALL não exclui linhas duplicadas.

FUNÇÕES DE AGREGAÇÃO VALORES MÚLTIPLOS


Essa consulta exibe ciclistas e patinadores alemães:
Uma subconsulta também pode retornar várias colunas ou várias linhas. Essas
avg(expr) – valor médio das linhas do grupo SELECT nome
subconsultas podem ser usadas com os operadores IN, EXISTS, ALL ou ANY.
count(expr) – número de valores para as linhas no grupo FROM ciclismo
Essa consulta encontra cidades em países com população de mais de 20 milhões:
max(expr) – valor máximo no grupo WHERE pais = 'DE'
SELECT nome
min(expr) – valor mínimo no grupo UNION / UNION ALL
FROM cidade
sum(expr) – soma dos valores do grupo SELECT nome
WHERE id_pais IN (
FROM patinacao
SELECT id_pais
EXEMPLOS DE CONSULTAS FROM pais
WHERE pais = 'DE';
Encontrar o número de cidades: WHERE populacao > 20000000
SELECT COUNT(*) );
INTERSECT
FROM cidade; INTERSECT retorna apenas as linhas que aparecem em ambos os conjuntos de
resultados.
Encontrar o número de cidades com uma classificação diferente de zero: SUBCONSULTA CORRELACIONADA
SELECT COUNT(classificacao) Uma subconsulta correlacionada refere-se às tabelas inseridas na consulta externa. Uma Essa consulta exibe ciclistas alemães que também são patinadores alemães:
FROM cidade; subconsulta correlacionada depende da consulta externa. Ela não pode ser executada SELECT nome
independentemente da consulta externa. FROM ciclismo
Encontrar o número de valores distintos para países: Essa consulta pesquisa cidades cuja população é maior do que a população média do WHERE pais = 'DE'
SELECT COUNT(DISTINCT id_pais) país: INTERSECT
FROM cidade; SELECT * SELECT nome
FROM cidade cidade_principal FROM patinacao
Encontrar os países com as menores e maiores populações: WHERE pais = 'DE';
WHERE populacao > (
SELECT MIN(populacao), MAX(populacao)
SELECT AVG(populacao)
FROM pais;
FROM cidade cidade_media EXCEPT
WHERE cidade_media.id_pais = cidade_principal.id_pais EXCEPT retorna somente as linhas que aparecem no primeiro conjunto de resultados,
Determinar a população total de cidades nos respectivos países:
); mas não aparecem no segundo conjunto de resultados.
SELECT id_pais, SUM(populacao)
FROM cidade Essa consulta exibe ciclistas alemães, desde que eles não sejam patinadores alemães:
GROUP BY id_pais; Essa consulta pesquisa países com pelo menos uma cidade:
SELECT nome
SELECT nome
FROM ciclismo
Determinar a classificação média das cidades nos respectivos países se a média for maior FROM pais
WHERE pais = 'DE'
que 3,0: WHERE EXISTS (
EXCEPT / MINUS
SELECT id_pais, AVG(classificacao) SELECT *
SELECT nome
FROM cidade FROM cidade
FROM patinacao
GROUP BY id_pais WHERE id_pais = pais.id
WHERE pais = 'DE';
HAVING AVG(classificacao) > 3.0; );

LearnSQL.com.br é propriedade de Vertabelo SA


Experimente o curso interativo SQL para iniciantes em LearnSQL.com.br e confira nossos outros cursos de SQL. vertabelo.com | CC BY-NC-ND Vertabelo SA

Você também pode gostar