Escolar Documentos
Profissional Documentos
Cultura Documentos
MOCHILEIRO SQL:
INICIANDO SUA
VIAGEM PELO
BANCO DE DADOS
Hélio Rodrigues
índice
Introdução
O que é e por que aprender SQL?
Fundamentos do SQL
O que é um banco de dados?
O que é uma tabela?
Tipos de dados em SQL
Criando uma tabela em SQL
Inserindo dados
Consultas
O que são consultas?
SELECT
WHERE
ORDER BY
LIMIT
Consultas avançadas
INNER JOIN
LEFT JOIN
RIGHT JOIN
FULL OUTER JOIN
SUBQUERIES
Funções de Agregação
COUNT
SUM
AVG
MAX
MIN
Otimizando o GROUP BY com HAVING
1
índice
Manipulação de dados
INSERT
UPDATE
DELETE
Melhores práticas
Como proteger seus dados com SQL
Conclusão
2
Introdução
3
O que é SQL
4
ao invés disso, o programador informa
quais dados devem ser buscados e o
SQL se encarrega de executar a busca
de forma otimizada. Além disso, o SQL é
utilizado em diversos tipos de
aplicações, desde pequenas aplicações
pessoais até grandes sistemas
empresariais.
O SQL é amplamente utilizado em
aplicações de gerenciamento de dados,
tais como sistemas de gestão de
estoques, sistemas de gestão de
recursos humanos, sistemas de gestão
de vendas, sistemas de gestão de
finanças e muitos outros.
5
e sistemas de software modernos.
Mesmo que no seu dia a dia profissional
você trabalhe com frameworks que
abstraiam essa camada, ou seja, lidam
internamente com o SQL. É
extremamente importante ter
conhecimento no assunto. Alguns
motivos incluem:
7
Fundamentos
de SQL
8
O que é um banco de dados?
9
Focaremos em bancos de dados
relacionais, pois, como já sabemos, SQL
é uma linguagem de programação
utilizada para gerenciar e manipular
bancos de dados relacionais.
10
Por exemplo, em uma tabela de
clientes, cada linha pode representar
um cliente individual e cada coluna
pode representar informações sobre
esse cliente. Veja o exemplo a seguir:
Texto:
CHAR: armazena strings com
tamanho fixo.
VARCHAR: armazena strings com
tamanho variável.
12
TEXT: armazena strings de
comprimento variável, mas com
limitação máxima.
Data e hora:
DATE: armazena uma data.
TIME: armazena um horário.
DATETIME: armazena uma data e
um horário.
TIMESTAMP: armazena uma data e
um horário com precisão de frações
de segundos.
Booleanos
BOOLEAN: armazena valores
booleanos (TRUE/FALSE ou 0/1).
Outros tipos:
BLOB: armazena dados binários
grandes.
ENUM: armazena um conjunto de
valores pré-definidos.
JSON: armazena dados no formato
JSON.
13
Criando uma tabela em SQL
Inserindo dados
Para inserir dados em uma tabela
usando SQL, é preciso utilizar o
comando INSERT INTO, que tem a
seguinte sintaxe básica:
15
INSERT INTO tabela
(nome_da_coluna1, nome_da_coluna2, ...)
VALUES
(valor_da_coluna1, valor_da_coluna2, ...,);
16
Consultas
17
O que são consultas?
18
SELECT
19
Exemplo de uma consulta SQL básica
usando o comando SELECT:
WHERE
ORDER BY
21
Ela é usada para classificar os registros
retornados por uma consulta em ordem
crescente ou decrescente com base em
uma, ou mais colunas de uma tabela.
Por exemplo, se você quiser listar os
nomes dos clientes em ordem
alfabética, você pode usar a seguinte
consulta SQL:
22
Tem o mesmo efeito do comando:
SELECT Nome
FROM Clientes
ORDER BY Nome DESC;
23
A cláusula ORDER BY também pode ser
usada para classificar os resultados
com base em várias colunas. Por
exemplo, se você quiser listar os nomes
dos clientes em ordem alfabética
decrescente, e para clientes com o
mesmo nome, classificá-los por país em
ordem alfabética, você pode usar a
seguinte consulta SQL:
24
classificados em ordem decrescente
com base na coluna "Nome", e para
clientes com o mesmo nome, classificá-
los em ordem crescente com base na
coluna "Pais".
LIMIT
26
Consultas
Avançadas
27
JOIN
INNER JOIN:
Retorna apenas as linhas com valores
correspondentes nas duas tabelas.
28
Para obter os nomes dos clientes e as
datas dos pedidos, podemos usar um
INNER JOIN da seguinte forma:
29
LEFT JOIN:
Retorna todas as linhas da tabela à
esquerda (from) e as linhas
correspondentes da tabela à direita
(join). Se não houver uma
correspondência na tabela à direita, a
coluna correspondente terá um valor
nulo.
Seguindo o exemplo de CLIENTE e
PEDIDOS. Queremos obter o nome de
todos os clientes e a data de seu último
pedido. Podemos usar um LEFT JOIN da
seguinte forma:
SELECT
clientes.nome,
MAX(pedidos.data) AS ultima_data
FROM clientes
LEFT JOIN pedidos
ON clientes.id = pedidos.id_cliente
GROUP BY clientes.nome;
30
duas tabelas usando LEFT JOIN, através
da coluna comum. Isso nos permite
selecionar todos os registros da tabela
"clientes" e apenas os registros
correspondentes da tabela "pedidos".
Se um cliente não tiver feito nenhum
pedido, a coluna "ultima_data" terá um
valor nulo.
31
RIGHT JOIN:
Retorna todas as linhas da tabela à
direita (a segunda tabela especificada
na declaração) e as correspondentes
linhas da tabela à esquerda (a primeira
tabela especificada), se houver.
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;
32
Para obter uma lista de todos os
departamentos e seus respectivos
funcionários, mesmo que um
funcionário não tenha sido atribuído a
um departamento, você pode usar um
right join da seguinte maneira:
33
Observe que o resultado inclui todos os
departamentos, mesmo aqueles sem
funcionários atribuídos a eles, graças
ao uso do right join.
34
SELECT *
FROM tabela1
FULL OUTER JOIN tabela2 ON tabela1.coluna =
tabela2.coluna;
SELECT *
FROM clientes
FULL OUTER JOIN pedidos ON clientes.id_cliente
= pedidos.id_cliente;
35
Essa consulta retornará todos os
registros da tabela "clientes" e da
tabela "pedidos", incluindo os registros
correspondentes e os registros que não
têm correspondência em nenhuma das
tabelas. Se um cliente não tiver feito
nenhum pedido, os campos da tabela
"pedidos" para esse cliente serão nulos,
e se um pedido não tiver um cliente
correspondente, os campos da tabela
"clientes" para esse pedido serão nulos.
O resultado será dessa forma:
36
SUBQUERIES:
Subqueries (ou subconsultas) são
consultas que são "alojadas" dentro de
outras consultas. Elas são usadas para
filtrar e manipular dados em uma
consulta com base em resultados de
outra consulta.
Existem dois tipos de subqueries:
Correlacionadas e não correlacionadas.
SELECT nome
FROM funcionarios
WHERE salario > (SELECT AVG(salario)
FROM funcionarios);
37
No exemplo anterior, a subquery é:
SELECT AVG(salario)
FROM funcionarios
38
No exemplo, a subquery é:
SELECT AVG(salario)
FROM funcionarios
WHERE departamento = f.departamento
SELECT
produtos.nome,
produtos.preco,
(SELECT SUM(vendas.quantidade)
FROM vendas
WHERE vendas.id_produto = produtos.id)
as total_vendas
FROM produtos;
40
"produtos". Também estamos usando
uma subquery na cláusula SELECT para
obter o total de vendas para cada
produto. A subquery seleciona a
quantidade total de vendas para o
produto correspondente na tabela
"vendas" usando a função de
agregação SUM e a cláusula WHERE
para filtrar apenas as vendas
relacionadas ao produto atual.
O resultado dessa consulta será uma
lista de todos os produtos, com seu
nome, preço e total de vendas para
cada produto.
41
Funções de
Agregação
42
Funções de agregação em SQL são
usadas para realizar cálculos em um
conjunto de valores e retornar valor.
Essas funções são frequentemente
usadas em consultas que envolvem
grupos de dados, como cálculos de
média, soma, contagem, máximo e
mínimo.
43
Nesse exemplo, a função COUNT(*)
conta o número de linhas na tabela
"clientes" e retorna o número total de
clientes.
Podemos usar a função COUNT para
contar o número de valores em uma
coluna específica. Por exemplo, se
quisermos contar o número de clientes
que forneceram um número de
telefone, podemos usar a seguinte
consulta:
SELECT COUNT(telefone) as
clientesl_com_telefone
FROM clientes
WHERE telefone IS NOT NULL;
44
SELECT cidade, COUNT(*) as clientes_na_cidade
FROM clientes
GROUP BY cidade;
45
Nesse exemplo, a função
SUM(valor_pedido) soma todos os
valores da coluna "valor_pedido" da
tabela "pedidos" e retorna o valor total
dos pedidos realizados.
Podemos usar a função SUM
combinada com a cláusula GROUP BY.
Por exemplo, se quisermos obter o valor
total dos pedidos realizados em cada
mês, podemos usar a seguinte consulta:
SELECT
DATE_FORMAT(data_pedido, '%Y-%m') AS mes,
SUM(valor_pedido) as valor_total
FROM pedidos
GROUP BY mes;
46
Nesse exemplo, a função
SUM(valor_pedido) soma todos os
valores da coluna "valor_pedido" da
tabela "pedidos" e retorna o valor total
dos pedidos realizados.
Podemos usar a função SUM
combinada com a cláusula GROUP BY.
Por exemplo, se quisermos obter o valor
total dos pedidos realizados em cada
mês, podemos usar a seguinte consulta:
SELECT
DATE_FORMAT(data_pedido, '%Y-%m') AS mes,
SUM(valor_pedido) as valor_total
FROM pedidos
GROUP BY mes;
47
Também podemos usar a função SUM
para calcular a soma dos valores em
uma coluna com base em uma
condição específica. Por exemplo, se
quisermos obter o valor total dos
pedidos realizados por um cliente
específico, podemos usar a seguinte
consulta:
49
Podemos também calcular a média de
apenas um aluno, para isso basta
utilizar a cláusula WHERE:
SELECT AVG(nota)
FROM notas
WHERE id_aluno = 1;
50
Para encontrar o produto com o preço
mais alto, podemos usar a seguinte
consulta SQL:
51
Otimizando o GROUP BY com HAVING
SELECT
coluna1,
colunaN,
funcao_agregacao(coluna)
FROM tabela
GROUP BY coluna1, ..., colunaN HAVING condicao;
54
Manipulação
de dados
55
Manipulação de dados em SQL é o
processo de alterar, atualizar, inserir ou
excluir informações em um banco de
dados relacional. Existem quatro tipos
principais de operações de
manipulação de dados em SQL:
UPDATE clientes
SET endereco = 'Rua Nova, 123'
WHERE id = 1;
57
para especificar qual linha ou conjunto
de linhas deve ser atualizado. Neste
exemplo, a cláusula WHERE especifica
que apenas o registro com um valor de
id igual a 1 será atualizado.
Após a execução, todos os registros que
correspondem aos critérios definidos na
cláusula WHERE serão atualizados. É
importante lembrar que sempre que
você executar um comando UPDATE, é
recomendável fazer um backup do
banco de dados antes de executar a
operação. Isso é especialmente
importante se você estiver atualizando
muitos registros ou alterando dados
críticos em seu banco de dados.
(NUNCA FAÇA UPDATE SEM WHERE).
João, com id 1
Maria, com id 2
Pedro, com id 3
59
Essas operações de manipulação de
dados são usadas para gerenciar
informações em bancos de dados,
sendo executadas por meio de
consultas SQL. As consultas permitem
que você especifique as informações
que deseja alterar, atualizar, inserir,
excluir ou selecionar, bem como as
condições que devem ser atendidas
para a consulta ser executada
corretamente. Com as operações de
manipulação de dados em SQL, você
pode gerenciar efetivamente as
informações armazenadas em um
banco de dados relacional.
60
Melhores práticas
61
Existem várias práticas recomendadas
para escrever código SQL eficiente e de
alta qualidade. Aqui estão algumas das
melhores práticas em SQL:
64
Como proteger
seus dados
65
Existem várias técnicas que você pode
usar para proteger seus dados com
SQL. Aqui estão algumas práticas
recomendadas:
66
evitar que hackers insiram código
malicioso em suas consultas SQL.
67
Use firewalls: Use firewalls para
proteger seu banco de dados contra
ataques de rede.
68
Conclusão
69
No decorrer deste livro exploramos os
fundamentos do SQL, incluindo a
criação e manipulação de tabelas, a
realização de consultas simples e
avançadas, e a manipulação de dados.
Também aprendemos sobre as funções
de agregação, como COUNT, SUM, AVG,
MAX e MIN, as quais são muito úteis
para resumir e analisar grandes
conjuntos de dados.
Além disso, abordamos tópicos
importantes, como otimização de
consultas, proteção de dados e
melhores práticas para escrita de
consultas eficientes.
71