0% acharam este documento útil (0 voto)
2 visualizações8 páginas

Aula de SQL (MySQL)

Aula de SQL

Enviado por

Caio Primo
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
2 visualizações8 páginas

Aula de SQL (MySQL)

Aula de SQL

Enviado por

Caio Primo
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 8

Aula de SQL (MySQL)

Introdução ao SQL
SQL (Structured Query Language, Linguagem de Consulta Estruturada) é a linguagem padrão para
bancos de dados relacionais. Comandos SQL são usados para definir e manipular dados em tabelas. Em
geral, consultas para recuperar dados usam o comando SELECT 1 . Por exemplo, podemos criar um
banco de dados e usá-lo com:

CREATE DATABASE meus_dados;


USE meus_dados;

(como em 2 ). Em seguida definimos tabelas com DDL (Data Definition Language), como CREATE
TABLE . Por exemplo:

CREATE TABLE pessoas (


id INT PRIMARY KEY AUTO_INCREMENT,
nome VARCHAR(100),
email VARCHAR(100)
);

Este comando cria uma tabela chamada pessoas com colunas id , nome e email . Podemos
alterar ( ALTER TABLE ) ou apagar ( DROP TABLE ) estruturas de tabelas quando necessário.

Comandos DML básicos (CRUD)


Para inserir dados usamos INSERT , para atualizar usamos UPDATE , e para deletar usamos
DELETE (sempre com WHERE para evitar apagar tudo 3 4 ). Exemplos práticos:

• INSERT: adiciona linhas. Exemplo em uma tabela clientes :

INSERT INTO clientes (nome, email)


VALUES ('João', 'joao@exemplo.com');

Veja que listamos colunas e então os valores correspondentes 5 . Se a tabela tem campo
AUTO_INCREMENT (como id ), não precisamos inserir ele manualmente 6 .

• UPDATE: modifica registros. Exemplo alterando o email:

1
UPDATE clientes
SET email = 'novoemail@exemplo.com'
WHERE id = 1;

Sem WHERE , o UPDATE mudaria todos os registros! Por isso sempre especifique quais linhas
atualizar 7 .

• DELETE: remove registros. Exemplo:

DELETE FROM clientes


WHERE id = 1;

Isso apaga apenas o cliente com id = 1 . Sem o WHERE , apagaria tudo 4 .

Comando SELECT – Recuperando dados


O comando SELECT é a base das consultas. Sua sintaxe básica é:

SELECT colunas FROM tabela WHERE condição;

Onde colunas são os campos a retornar e tabela é onde buscar. Por exemplo, para mostrar todos
os nomes na tabela pessoas :

SELECT nome FROM pessoas;

Isso retornará a coluna nome de todos os registros 8 . Podemos selecionar várias colunas separadas
por vírgula:

SELECT nome, email FROM pessoas;

Assim o resultado terá duas colunas. Para retornar todas as colunas usamos * :

SELECT * FROM pessoas;

Isso é equivalente a listar cada coluna manualmente 9 .

Filtros com WHERE

Para filtrar registros usamos WHERE . Por exemplo, para mostrar apenas pessoas de uma certa cidade:

SELECT nome FROM pessoas


WHERE cidade = 'São Paulo';

2
Neste caso, só virão linhas em que cidade = 'São Paulo' . A cláusula WHERE elimina as linhas que
não atendem à condição 10 . Em WHERE usamos operadores de comparação padrão: = , != (ou
<> ), < , > , <= , >= , e os especiais BETWEEN , IN , LIKE , etc. Por exemplo: - LIKE : busca por
padrão em texto. % representa qualquer sequência.

SELECT nome FROM pessoas


WHERE email LIKE '%@dominio.com';

Retorna nomes cujos emails terminam com @dominio.com 11 .


- IN : testa se o valor está em um conjunto.

SELECT * FROM pedidos


WHERE status IN ('pendente', 'enviado');

- BETWEEN : intervalo numérico ou de datas.

SELECT * FROM vendas


WHERE valor BETWEEN 100 AND 200;

- NULL: para checar nulos: WHERE coluna IS NULL (ou IS NOT NULL ).

Também podemos atribuir alias (apelidos) às colunas ou tabelas para simplificar. Por exemplo:

SELECT nome AS cliente, email AS contato


FROM pessoas AS p;

Isso fará as colunas aparecerem como “cliente” e “contato” no resultado 12 . O alias p para a tabela
pessoas permite escrever p.nome .

Ordenação (ORDER BY) e Limite (LIMIT)

Para ordenar resultados, use ORDER BY . Por padrão é crescente; para decrescente adiciona-se DESC .
Exemplo:

SELECT nome, data_nascimento


FROM pessoas
ORDER BY data_nascimento DESC;

Isso lista as pessoas da mais velha para a mais nova 13 . Podemos ordenar por múltiplas colunas (e.g.
ORDER BY coluna1 ASC, coluna2 DESC ). Em MySQL, podemos usar LIMIT n para pegar apenas
as primeiras n linhas:

SELECT * FROM pessoas


ORDER BY nome
LIMIT 10;

3
Isso traria apenas os 10 primeiros nomes em ordem alfabética.

Agregação e GROUP BY

SQL permite funções de agregação para cálculos sobre colunas: COUNT() , SUM() , AVG() ,
MIN() , MAX() , etc. Por exemplo, para contar quantos pedidos cada cliente fez:

SELECT cliente_id, COUNT(*) AS total_pedidos


FROM pedidos
GROUP BY cliente_id;

Isso agrupa as linhas por cliente e mostra a quantidade de pedidos de cada um. Em geral, quando
usamos GROUP BY , todas as colunas não-agrupadas devem estar em agregações 14 . Exemplo real
com nossa base de amostra:

SELECT COUNT(nome), entrada


FROM refeicoes
GROUP BY entrada;

Isso contou quantas pessoas preferem cada entrada 14 . Para filtrar grupos use HAVING (funciona
como WHERE mas após GROUP BY ). Exemplo: mostrar só entradas escolhidas por pelo menos 3
pessoas:

SELECT COUNT(nome), entrada


FROM refeicoes
GROUP BY entrada
HAVING COUNT(nome) >= 3;

Isso retornaria apenas os grupos com 3 ou mais ocorrências 15 .

Também podemos fazer cálculos diretos em colunas no SELECT, sem função agregada. Por exemplo,
se tivéssemos preço e quantidade:

SELECT nome_produto, preco * quantidade AS total


FROM vendas;

Isso multiplica as colunas para cada linha.

Consultas em várias tabelas (JOIN)


Bancos relacionais têm várias tabelas. Para combinar dados de duas (ou mais) tabelas relacionando-as
por uma chave, usamos JOIN. A sintaxe básica em MySQL é:

SELECT t1.colunaA, t2.colunaB


FROM tabela1 AS t1

4
JOIN tabela2 AS t2
ON t1.coluna_rel = t2.coluna_rel;

A cláusula JOIN combina linhas de tabela1 e tabela2 quando a condição ON é satisfeita


(valores iguais na coluna relacionada) 16 17 . Por exemplo, dado duas tabelas torneios(nome,
tamanho) e refeicoes(nome, data_nascimento) , podemos juntar pelos nomes:

SELECT t.nome, t.tamanho, r.data_nascimento


FROM torneios AS t
JOIN refeicoes AS r
ON t.nome = r.nome;

Isso retornará linhas somente onde o nome aparece em ambas as tabelas (INNER JOIN) 18 . No
exemplo acima, sairiam Dolly, Etta, Irma, Barbara e Gladys com seus tamanhos e datas de nascimento.

Podemos usar outros tipos de JOIN:


- LEFT JOIN: traz todas as linhas da tabela da esquerda (antes do FROM ) e as correspondências da
direita. Se não houver correspondência, os campos da direita ficam NULL . No exemplo:

SELECT t.nome, t.tamanho, r.data_nascimento


FROM torneios AS t
LEFT JOIN refeicoes AS r
ON t.nome = r.nome;

Aqui aparece Bettye (que só estava em torneios ) com data_nascimento = NULL 19 20 .


- RIGHT JOIN: análogo, mas traz todas da tabela da direita (depois do JOIN ).
- FULL JOIN (não nativo em MySQL, pode simular com UNION ).

Também há o CROSS JOIN (produto cartesiano) e UNION de múltiplos SELECTs, mas o mais comum
para relacionar dados é o INNER/LEFT/RIGHT JOIN acima. Em consultas complexas podemos usar alias
para tabelas (como fizemos com t e r acima) para facilitar a leitura.

Variáveis no MySQL
No MySQL podemos usar variáveis de usuário (de sessão) para guardar valores temporários entre
comandos. Elas começam com @ . Por exemplo:

SET @minhaVar = 10;


SELECT @minhaVar;

Isto armazena 10 em @minhaVar e depois exibe o valor 21 . Também podemos atribuir valores
vindos de um SELECT a variáveis:

SELECT @maxId := MAX(id) FROM tabela;

ou diretamente:

5
SELECT @id := id, @nome := nome
FROM pessoas
WHERE id = 5;

Isso define @id e @nome com os valores retornados (note que, se o SELECT retorna várias linhas, a
variável ficará com o valor da última linha) 22 . Em geral, variáveis de usuário são úteis para passar
valores de uma consulta para outra sem precisar de tabela temporária 23 . Elas existem apenas na
sessão atual e são liberadas quando a conexão termina 24 .

As variáveis também podem ser usadas em procedimentos armazenados ( DECLARE nomeTipo no


contexto de uma stored procedure), mas isso é mais avançado. Para fins de consultas simples, o
método acima com @nomeVariavel e SET ou := cobre a maioria dos casos 25 21 .

Exemplos Práticos
• Seleção simples:

SELECT id, nome, email


FROM pessoas
WHERE cidade = 'Rio de Janeiro';

Traz as colunas id , nome , email de todas as pessoas que moram no Rio (outras linhas são
ignoradas pelo WHERE ).

• Cálculo e alias:

SELECT nome, salario, salario * 1.10 AS novo_salario


FROM funcionarios
WHERE salario > 3000;

Lista o nome, o salário atual e o salário aumentado em 10% (apelidado de novo_salario )


para quem ganha mais de 3000.

• Join entre tabelas:

SELECT c.cliente, p.produto, p.preco


FROM pedidos AS c
JOIN produtos AS p ON c.produto_id = p.id;

Retorna nome do cliente, nome do produto e preço, combinando a tabela de pedidos com a
de produtos via o campo relacionado 16 .

• Agregação por grupo:

6
SELECT categoria, SUM(valor) AS total_vendas
FROM vendas
GROUP BY categoria
HAVING SUM(valor) > 1000;

Soma o valor das vendas por categoria , mostrando apenas categorias com venda total
acima de 1000.

• Uso de variáveis:

SET @quant = 0;
SELECT @quant := COUNT(*)
FROM usuarios
WHERE ativo = 1;
SELECT @quant AS total_ativos;

Conta quantos usuários ativos existem e armazena em @quant , depois exibe esse número.

Resumo
• SELECT é usado para consultar dados; combinações com WHERE , ORDER BY , GROUP BY e
funções permitem filtrar e resumir os resultados 8 14 .
• JOINs combinam tabelas relacionadas, permitindo buscar colunas de duas ou mais tabelas em
uma única consulta 16 .
• Variáveis ( @var ) guardam valores entre comandos na mesma sessão, úteis para cálculos
intermediários 23 21 .
• DML completo inclui INSERT , UPDATE , DELETE para manipular dados (sempre use WHERE
em UPDATE / DELETE para não afetar tudo) 7 4 .
• DDL ( CREATE , ALTER , DROP ) define a estrutura de bancos e tabelas antes de inserir/
consultar dados 26 5 .

Com esses comandos e conceitos você poderá “conversar” com o banco de dados MySQL: escrever
queries para selecionar informações, combinar tabelas, atualizar registros e gerenciar a estrutura do
banco. Praticar com exemplos reais (como os acima) ajuda a fixar o funcionamento completo de cada
comando.

Fontes: Material de tutoriais e documentações oficiais do MySQL e guias SQL 1 9 14 16 23 21

(estes recursos explicam em detalhes cada comando e cláusula mencionados).

1 2 5 8 9 10 11 12 13 14 15 16 17 18 19 20 26 Uma Introdução às consultas no MySQL |


DigitalOcean
https://www.digitalocean.com/community/tutorials/uma-introducao-as-consultas-no-mysql-pt

3 4 6 7 Comandos básicos do MySQL (Insert, Delete, Update e Select)


https://www.rlsystem.com.br/select-insert-delete-update-mysql

21 22 sql - MySQL usando variáveis no select - Stack Overflow em Português


https://pt.stackoverflow.com/questions/253674/mysql-usando-vari%C3%A1veis-no-select

7
23 Utilizando Variáveis definidas pelo usuário no MySQL
https://doh.ms/2006/09/27/criando-chaves-primarias-em-tabelas-com-dados/

24 25 MySQL :: MySQL 8.4 Reference Manual :: 11.4 User-Defined Variables


https://dev.mysql.com/doc/refman/8.4/en/user-variables.html

Você também pode gostar