O que é SQL?
O SQL, também conhecido como Structured Query Language (Linguagem de Consulta Estruturada), é uma ferramenta poderosa para pesquisar grandes quantidades de dados em bancos de dados e retornar informações específicas para análise. Aprender SQL é fundamental para qualquer pessoa que queira entrar no mundo dos dados, seja para funções de analista de negócios, analista de dados, cientista de dados ou engenheiro de dados.
Neste tutorial, você aprenderá sobre 25 dos comandos SQL mais comuns que serão suficientes para a maioria das tarefas relacionadas ao banco de dados.
Comandos SQL com exemplos
Exemplo de tabela
Ao longo deste tutorial, usaremos as tabelas films
e soundtracks.
filmes |
|||||
movie_name |
diretor |
receita |
data |
genre |
idioma |
Vingadores: Era de Ultron |
J. Whedon |
1400000000 |
2015 |
Ação |
Inglês |
Amelie |
Jean-Pierre Jeunet |
174000000 |
2002 |
Drama |
Francês |
trilhas sonoras |
||
trilha sonora |
compositor |
data |
Inception: Música do filme |
Hans Zimmer |
2010 |
O Fabuloso Destino de Amelie Poulain |
Yann Tiersen |
2001 |
1. SELECT
A instrução SELECT
é usada para especificar quais colunas de uma tabela de banco de dados devem ser incluídas no resultado.
Este exemplo seleciona apenas as colunas movie_name
e director
; outras colunas não são retornadas.
SELECT movie_name, director
FROM films;
Para selecionar todas as colunas de uma tabela, você pode executar SELECT *
(pronuncia-se "star"). Este exemplo seleciona todas as colunas da tabela films
tabela.
SELECT *
FROM films;
2. LIMIT
Limitar o número de linhas retornadas de uma tabela é um truque útil para acelerar o tempo de consulta. Para limitar o número de linhas, você pode usar o comando LIMIT
. Este exemplo seleciona todas as colunas da tabela films
e, em seguida, limita os resultados às dez primeiras linhas.
SELECT *
FROM films
LIMIT 10;
3. AS
Para renomear uma coluna ou uma tabela ao retornar os resultados, você pode usar o comando AS
para definir um alias para suas saídas. Este exemplo seleciona a coluna movie_name
e dá a ela o alias movie_title
.
SELECT movie_name AS movie_title
FROM films;
4. SELECT DISTINCT
Os conjuntos de dados geralmente contêm linhas ou valores duplicados em uma coluna. A combinação de SELECT
com DISTINCT
elimina as duplicatas. Este exemplo retorna os valores exclusivos da coluna director
.
SELECT DISTINCT director
FROM films;
5. COUNT
COUNT()
retorna o número de linhas na tabela ou no grupo. Este exemplo retorna o número de linhas na tabela films
e, em seguida, renomeia o resultado como number_of_films
.
SELECT COUNT(*) AS number_of_films
FROM films;
6. MIN
MIN()
retorna o valor mínimo em uma coluna numérica. Para colunas de texto, MIN()
retorna o primeiro valor em ordem alfabética. Esse exemplo retorna o filme com o menor valor de receita.
SELECT MIN(revenue) AS minimum_revenue,
FROM films;
7. MAX
MAX()
retorna o valor máximo em uma coluna numérica. Para colunas de texto, MAX()
retorna o último valor em ordem alfabética. Esse exemplo retorna o filme com o valor máximo de receita.
SELECT MAX(revenue) AS maximum_revenue,
FROM films;
8. SUM
SUM()
retorna o total de valores numéricos. Este exemplo retorna a receita total de todos os filmes listados na tabela films
.
SELECT SUM(revenue) AS total_revenue
FROM films;
9. AVERAGE
AVERAGE calcula a média aritmética de uma coluna. Este exemplo retorna a receita média de todos os filmes listados na tabela films
.
SELECT AVERAGE(revenue) AS average_earned
FROM films;
10. WHERE
A cláusula WHERE
filtra as linhas que correspondem a uma determinada condição. Por exemplo, abaixo, estamos filtrando filmes que ganharam mais de 500 milhões de dólares
SELECT revenue
FROM films
WHERE revenue > 500000000;
Outros operadores condicionais podem ser usados, como <
, >
, =>
, <=
, == (equals)
, != (not equals)
para filtragem.
11. HAVING
A cláusula HAVING é semelhante à cláusula WHERE, mas só pode ser usada com funções de agregação, enquanto a WHERE não pode. Por exemplo, na consulta abaixo, estamos escolhendo todos os gêneros de filmes que tenham pelo menos 50 filmes em sua categoria:
SELECT movie_name, director, date, COUNT(genre)
FROM films
GROUP BY genre
HAVING COUNT(genre) >= 50;
Aqui está outro exemplo que agrupa filmes por classificação etária e escolhe apenas as classificações com receita média de mais de 100 milhões:
SELECT movie_name, director, date, revenue
FROM films
GROUP BY age_rating
HAVING AVERAGE(genre) >= 100;
12. AND
AND
é usado ao filtrar linhas que correspondem a mais de uma condição. No exemplo abaixo, filtraremos os filmes ingleses que arrecadaram mais de 500 milhões de dólares.
SELECT *
FROM films
WHERE revenue > 500000000 AND
language == "English";
13. OR
OR
é outro operador condicional que permite que você faça um subconjunto de linhas se qualquer uma das condições separadas por OR
for verdadeira. Esse exemplo retorna filmes ingleses que ganharam menos de 100 milhões de dólares ou filmes franceses que ganharam mais de 500 milhões de dólares.
SELECT *
FROM films
WHERE (revenue < 100000000 AND language == "English") OR
(revenue > 500000000 AND language == “French”);
14. BETWEEN
BETWEEN
permite que você faça um subconjunto de linhas dentro de um determinado intervalo, o que torna as cláusulas WHERE
mais simples e fáceis de ler. No exemplo acima, escolhemos todos os filmes lançados entre 2020 e 2022.
SELECT *
FROM films
WHERE date BETWEEN 2020 AND 2022;
15. IN
O operador IN é uma abreviação para vários comandos OR
. Esse exemplo retorna todos os filmes que foram lançados em um desses anos: 1998, 1966, 2001 e 2012.
SELECT movie_name, date, revenue
FROM films
WHERE date IN (1998, 1966, 2001, 2012);
16. LIKE
O operador LIKE
permite que você pesquise padrões em uma coluna de texto usando sequências especiais chamadas curingas. Os curingas permitem que você encontre cadeias de texto que se encaixem em um padrão específico. Por exemplo, se você usar o curinga “A% W%”
na coluna do diretor, encontrará todos os diretores com o primeiro nome começando com A e o sobrenome começando com W.
SELECT *
FROM films
WHERE director LIKE "A% W%";
17. GROUP BY
GROUP BY
permite que você agrupe linhas com base nos valores da coluna. GROUP BY
é normalmente usado com funções de agregação como COUNT
, MIN
, MAX
, AVERAGE
, entre outras. No exemplo abaixo, encontramos a receita média de cada gênero de filme.
SELECT AVERAGE(revenue), movie_name, director, date
FROM films
GROUP BY genre;
Poderíamos ter usado MIN
, MAX
, ou COUNT(revenue)
para encontrar os filmes com menor ganho, maior ganho ou o número de filmes em cada gênero. Observe que a instrução GROUP BY
praticamente não afeta a consulta se não for usada com uma função agregada.
18. ORDER BY
ORDER BY
permite que você ordene as linhas com base em um valor de coluna. Você pode ordenar por ordem crescente (padrão) ou decrescente, adicionando ASC
ou DESC
. Este exemplo ordena a receita por ordem crescente.
SELECT *
FROM films
ORDER BY revenue ASC;
19. UPDATE
UPDATE
é usado para alterar os valores de células individuais em uma tabela existente. Ele é usado com a palavra-chave SET
. Este exemplo atualiza o diretor “J. Whedon”
, para “Joss Whedon”
.
UPDATE films
SET director = "Joss Whedon"
WHERE director = "J. Whedon"
A cláusula WHERE
é fundamental quando você escreve declarações UPDATE
. Sem ela, a consulta acima teria feito todos os filmes dirigidos por Joss Whedon.
20. ALTER TABLE
Você pode usar a instrução ALTER TABLE
para modificar as propriedades da tabela e de suas colunas (não os valores reais das células). Por exemplo, alterar os nomes das colunas, adicionar novas colunas, eliminá-las ou alterar seu tipo de dados. Os exemplos abaixo mostram como você pode eliminar a coluna date
e adicionar a coluna age_rating
.
ALTER TABLE films
DROP COLUMN date;
ALTER TABLE films
ADD COLUMN age_rating;
21. CREATE TABLE
CREATE TABLE
cria uma nova tabela em um banco de dados. Abaixo, estamos criando uma tabela "libraries" com quatro colunas: uma coluna inteira chamadaid
, uma coluna de caracteres chamada name
, uma coluna de caracteres chamada version
e uma coluna inteira chamada num_downloads
.
CREATE TABLE libraries (
lib_id int,
name varchar(100),
version varchar(100),
num_downloads int
)
22. INSERT INTO
INSERT INTO
pode ser usada para adicionar novas linhas a uma tabela. Neste exemplo, adicionamos o filme “Doctor Strange”
à tabela films
tabela.
INSERT INTO films (movie_name, director, revenue, date, genre, language)
VALUES ("Doctor Strange 2", “Sam Raimi”, 409000000, 2022, “Action”, “English”)
23. INNER JOIN
O comando INNER JOIN
seleciona as linhas que têm valores correspondentes em ambas as tabelas. Por exemplo, na consulta abaixo, somos as tabelas de filmes e trilhas sonoras em uma coluna comum date
que retorna filmes e trilhas sonoras que foram lançados nos mesmos anos.
SELECT *
FROM films
INNER JOIN soundtracks
ON films.date = soundtracks.date
LIMIT 10;
24. LEFT JOIN
Um LEFT JOIN
mantém todos os registros originais na tabela da esquerda e retorna valores ausentes para todas as colunas da tabela da direita em que o campo de união não encontrou uma correspondência.
SELECT *
FROM films
LEFT JOIN soundtracks
ON films.date = soundtracks.date
LIMIT 10;
25. RIGHT JOIN
Um RIGHT JOIN
mantém todos os registros originais na tabela correta e retorna valores ausentes para todas as colunas da tabela esquerda em que o campo de união não encontrou uma correspondência.
SELECT *
FROM films
LEFT JOIN soundtracks
ON films.date = soundtracks.date
LIMIT 10;
Folha de dicas de comandos SQL
Para saber mais sobre SQL, não deixe de conferir os seguintes recursos: