Introdução ao SQL - DataCamp

Capítulo 1º

Vamos aprender as funções básicas: SELECT, FROM, LIMIT, SELECT DISTINCT e SELECT COUNT.

  • Para selecionar uma coluna de uma determinada tabela, faremos:

SELECT name

FROM films;

  • Para selecionar mais de uma coluna de uma determinada tabela:

SELECT name, age

FROM people;

  • Para selecionar todas as colunas de uma determinada tabela:

SELECT *

FROM people

  • Agora, para selecionar a coluna e limitar o número de resultados usamos LIMIT:

SELECT *

FROM people

LIMIT 10;

  • Para selecionar todos os únicos valores da coluna de uma determinada tabela, usaremos:

SELECT DISTINCT language

FROM films;

  • Para contar o número de linhas ou colunas:

SELECT COUNT(*)

FROM people;

  • Para contar o número informações nas linhas de uma coluna:

SELECT COUNT (idade)

FROM people;

  • Para contar o número único de informações nas linhas:

SELECT COUNT (DISTINCT aniversario)

FROM people

Capítulo 2º

Vamos aprender as funções WHERE, AND, OR, BETWEEN, WHERE IN, NULL, LIKE e NOT LIKE.

  • Para filtar valores númericos podemos usar:

SELECT *

FROM films

WHERE budget > 10000

  • Também podemos filtrar texto:

SELECT title

FROM films

WHERE country = 'China'

  • Para datas faremos:

SELECT name, birthdate

FROM people

WHERE birthdate = '1974-11-11'

  • Se quisermos, filtrar mais de uma condição usamos o AND, mostra registro se todas as condições forem verdadeiras:

SELECT title

FROM films

WHERE release_year > 1994 AND

release_year < 2000

  • Para o OR, mostra um registro se pelo menos uma das condições for verdadeiras:

SELECT title, release_year

FROM films

WHERE releas_year >= 1990

AND release < 2000

AND ( language = 'French' OR language = 'Spanish'

AND gross > 2000000

  • Para filtrar valores númericos em um intervalo usamos o BETWEEN:

SELECT title, release_year

FROM films

WHERE release_year BETWEEN 1990 AND 2000

  • Outro exemplo:

SELECT title, release_year

FROM films

WHERE release_year BETWEEN 1990 AND 2000

AND budget > 100000000

AND (language ='Spanish' OR language = 'French')

  • Para filtrar informações em multiplos usaremos IN:

SELECT title, release_year

FROM films

WHERE release_year IN (1990, 2000)

  • NULL representa a ausência ou um valor inválido. Podemos usar para checak a existência de dados:

SELECT name

FROM peolpe

WHERE deathdate IS NULL

  • Exemplo com contagem:

SELECT COUNT (*)

FROM films

WHERE language IS NULL

  • Se quisermos, filtrar partes de uma texto ou valor, usamos o LIKE:

SELECT name

FROM people

WHERE name LIKE 'B%'

  • Quando queremos filtrar a segunda letra (LIKE) :

SELECT name

FROM people

WHERE name LIKE '_r%'

  • Quando queremos filtrar os que não começam com A LIKE) :

SELECT name

FROM people

WHERE name NOT LIKE 'A%'

Capítulo 3º

Neste capítulo iremos realizar algumas contas. As funções para isso é: AVG, MAX, SUM, MIN, contas básicas e AS:

  • Soma (SUM):

SELECT SUM (duration)

FROM films

  • Média (AVG):

SELECT AVG (duration)

FROM films

  • Mínino (MIN):

SELECT MIN ( duration )

FROM films

  • Máximo ( MAX ):

SELECT MAX ( duration )

FROM films

  • Vamos ver como usar essas funções junto com o WHERE:

SELECT AVG(gross)

FROM films

WHERE title LIKE 'A%'

  • Também conseguimos realizar contas básicas:

SELECT (4 * 3) AS results

  • Agora, se eu quero esses resultados organizados em uma coluna posso usar AS, vejamos:

SELECT title, (gross - budget) AS net_profit

FROM films

  • Outra exemplo:

SELECT title, (duration / 60.0) AS duration_hours

FROM films

  • Com outras funções:

SELECT AVG(duration) / 60.00 AS avg_duration_hours

FROM films

  • Se quisermos, realizar mais operações matemáticas mas usando outras funções, podemos fazer:

SELECT COUNT(deathdate) * 100.0 / COUNT(*) AS percentage_dead

FROM people

  • Outro exemplo:

SELECT MAX(release_year) - MIN(release_year) AS difference

FROM films

  • Vejamos de outra forma só que com decadas:

SELECT (MAX(release_year) - MIN(release_year)) / 10.0 AS number_of_decades

FROM films

Capítulo 4º

Vamos aprender nesse último capítulo: ORDER BY, DESC, GROUP BY, HAVING,

  • Para colocar em ordem alfabetica:

SELECT *

FROM people

ORDER BY name

  • Exemplo:

SELECT *

FROM films

WHERE release_year <> 2015

ORDER BY duration

  • Outro exemplo:

SELECT title, gross

FROM films

WHERE title LIKE 'M%'

ORDER BY title

  • Para colocar em ordem decrescente basta colocar DESC no final:

SELECT imdb_score, film_id

FROM reviews

ORDER BY imdb_score DESC

  • Também podemos colocar em ordem mais de uma coluna:

SELECT birthdate, name

FROM people

ORDER BY birthdate, name

  • Vamos aprender agora como usar o GROUP BY:

SELECT release_year, count (*)

FROM films

GROUP BY release_year

ORDER BY count DESC

  • Vejamos mais exemplos:

SELECT release_year, AVG( duration )

FROM films

GROUP BY release_year

  • O GROUP BY agrupa linhas baseado em semelhanças entre elas:

SELECT release_year, MAX(budget)

FROM films

GROUP BY release_year

  • Exemplo:

SELECT imdb_score, count(*)

FROM reviews

GROUP BY imdb_score

  • Agora, veremos o HAVING que usamos num modo grupo, ele serve para filtrar grupos quando estamos usando o GROUP BY. Já o WHERE usamos para filtrar linhas, estpá é a diferença. Vejamos um exemplo:

SELECT release_year, AVG(budget) AS avg_budget,

AVG(gross) AS avg_gross

FROM films

WHERE release_year > 1990

GROUP BY release_year

HAVING AVG(budget) > 60000000

ORDER BY avg_gross DESC;

  • Vejamos um exemplo mais completo:

SELECT country, AVG(budget) AS avg_budget, AVG(gross) AS avg_gross

FROM films

GROUP BY country

HAVING COUNT (title) > 10

ORDER BY country

LIMIT 5

  • Vamos para última função, JOIN (Podemos relacionar tabelas):

SELECT title, imdb_score

FROM films

JOIN reviews

ON films.id = reviews.film_id

WHERE title = 'To Kill a Mockingbird';