Utilizando uma plataforma online para o aprendizado de consultas em SQL
- #SQL
Imagine ser capaz de executar consultas SQL diretamente do seu navegador web, sem a necessidade de instalar software em sua máquina. É nesse cenário que nasce o SQL OnLine IDE, uma plataforma projetada para facilitar a exploração de consultas SQL de maneira simples e acessível.
Embora seja uma ferramenta com recursos limitados, o SQL OnLine IDE se destaca como uma escolha ideal para estudantes que desejam aprimorar suas habilidades em consultas SQL. No entanto, é essencial lembrar que, devido à sua natureza baseada na web, a privacidade dos dados é uma consideração importante. Certifique-se de que as informações que você está manipulando não sejam confidenciais e esteja ciente das políticas de privacidade do site.
Outras plataformas online com a mesma proposta:
Nesse artigo, mergulharemos em algumas possibilidades oferecidas pelo SQL OnLine IDE, utilizando os recursos disponíveis no curso de Introdução a Banco de Dados Relacionais (SQL), ministrado pela instrutora Pâmela Apolinario. Este curso faz parte do Bootcamp de Ciência de Dados com Python, oferecido pela plataforma da Dio em parceria com o Banco Santander. Todo o código e scripts utilizados pela instrutora estão disponíveis no GitHub da Pâmela, proporcionando um recurso valioso para a nossa jornada de aprendizado. Vamos começar!
Começamos nossa jornada criando um diagrama de entidade-relacionamento (ERD) , utilizando a plataforma Creately (indicado pela instrutora), como mostrado a seguir.
A seguir mostrarei o passo a passo de alguns recursos utilizados em aula, usando a plataforma online.
1ª ETAPA: Criando tabelas para nosso database viagens
Aqui criaremos três tabelas nomeadas de 'usuarios', 'destinos' e 'reservas', baseando-se em um banco de dados fictício sobre reservas de viagens.
2ª ETAPA: Inserindo dados fictícios
-- Inserindo dados nas tabelas
-- Tabela usuarios
INSERT INTO usuarios (id, nome, email, data_nascimento, endereco) VALUES
(1, 'João Silva', 'joao@example.com', '1990-05-15', 'Rua A, 123, Cidade X, Estado Y'),
(2, 'Maria Santos', 'maria@example.com', '1985-08-22', 'Rua B, 456, Cidade Y, Estado Z'),
(3, 'Pedro Souza', 'pedro@example.com', '1998-02-10', 'Avenida C, 789, Cidade X, Estado Y');
-- Tabela destinos
INSERT INTO destinos (id, nome, descricao) VALUES
(1, 'Praia das Tartarugas', 'Uma bela praia com areias brancas e mar cristalino'),
(2, 'Cachoeira do Vale Verde', 'Uma cachoeira exuberante cercada por natureza'),
(3, 'Cidade Histórica de Pedra Alta', 'Uma cidade rica em história e arquitetura');
-- Tabela rereservas
INSERT INTO reservas (id, id_usuario, id_destino, data, status) VALUES
(1, 1, 2, '2023-07-10', 'confirmada'),
(2, 2, 1, '2023-08-05', 'pendente'),
(3, 3, 3, '2023-09-20', 'cancelada');
Para verificar a inserção dos dados podemos utilizar o comando SELECT para visualizar as tabelas.
TABELA USUARIOS
SELECT *
FROM usuarios;
TABELA DESTINOS
SELECT *
FROM destinos;
TABELA RESERVAS
SELECT *
FROM reservas;
3ª ETAPA: Criando chave estrangeira
-- Criando chave estrangeira
ALTER TABLE reservas
ADD CONSTRAINT fk_reservas_usuarios
FOREIGN KEY (id_usuario) REFERENCES usuarios (id);
ALTER TABLE reservas
ADD CONSTRAINT fk_reservas_destinos
FOREIGN KEY (id_destino) REFERENCES destinos (id);
Chaves estrangeiras criadas, como mostrado a seguir.
4ª ETAPA: Normalizando os dados
>> PROBLEMA 1: Como buscar todos os usuários da Cidade X?
Primeiro adicionamos novas colunas na tabela 'usuarios'.
ALTER TABLE usuarios
ADD rua VARCHAR(100),
ADD numero VARCHAR(10),
ADD cidade VARCHAR(50),
ADD estado VARCHAR(20);
Depois utilizamos o comando SELECT para visualizar a tabela, de modo a verificar se as colunas foram adicionadas.
Agora inserimos os dados de endereço nas colunas criadas, utilizando o comando SUBSTRING para separar os dados que queremos para cada coluna.
UPDATE usuarios
SET rua = SUBSTRING_INDEX(SUBSTRING_INDEX (endereco, ',', 1), ',', -1),
numero = SUBSTRING_INDEX(SUBSTRING_INDEX (endereco, ',', 2), ',', -1),
cidade = SUBSTRING_INDEX(SUBSTRING_INDEX (endereco, ',', 3), ',', -1),
estado = SUBSTRING_INDEX(endereco, ',', -1);
Em seguida, vamos remover a coluna 'endereco' com o comando a seguir.
ALTER TABLE usuarios
DROP COLUMN endereco;
Por fim, nossa tabela está normalizada, conforme o que precisamos. Agora vamos responder à pergunta do problema.
Temos outro problema!
Ao rodar o comando nada aconteceu, porque havia espaços após a vírgula no início dos dados das colunas cidade e estado, já que o endereço completo foi escrito dessa forma: "Rua A, 123, Cidade X, Estado Y". Com isso, vamos remover esses espaços usando o comando TRIM.
SELECT *
from usuarios
WHERE cidade = "Cidade X";
Agora, respondendo a pergunta do primeiro problema.
SELECT *
from usuarios
WHERE cidade = "Cidade X";
Por fim, vamos fazer mais algumas consultas.
>>PROPLEMA 2: Quais os usuários que possuem reserva confirmada e quais seus destinos?
SELECT us.id, us.nome, rs.data, ds.nome AS destino, rs.status
FROM usuarios us
INNER JOIN reservas rs ON us.id = rs.id_usuario
INNER JOIN destinos ds on rs.id_destino = ds.id
WHERE rs.status = "confirmada";
>> PROBLEMA 3: Quais usuários possuem ano de nascimento >= 1990?
SELECT *
FROM usuarios
WHERE EXTRACT(YEAR FROM data_nascimento) >= 1990;
>> PROBLEMA 4: Qual o total de reservas de cada usuário?
SELECT nome, (SELECT COUNT(*) FROM reservas WHERE id_usuario = usuarios.id) AS total_reservas
FROM usuarios;
>> PROBLEMA 5: Qual é o usuário de maior idade?
SELECT nome, MAX(TIMESTAMPDIFF (YEAR, data_nascimento, CURRENT_DATE())) AS idade
FROM usuarios;
>> PROBLEMA 6: Qual a quantidade de usuários por cidade?
select cidade, COUNT(*) AS num_usuarios
FROM usuarios
GROUP BY cidade;
>> PROBLEMA 7: Ordenar usuários de acordo com a idade, do mais velho ao mais novo.
SELECT nome, TIMESTAMPDIFF(YEAR, data_nascimento, CURRENT_DATE()) AS idade
FROM usuarios
ORDER BY idade DESC;
Nesse artigo, vimos como essa plataforma online pode ser uma aliada valiosa para estudarmos SQL. É importante ressaltar que meu objetivo aqui não é ensinar SQL, mas sim destacar as possibilidades de aprendizado disponíveis online, então espero que os sites disponibilizados possam ajudar aqueles que não podem instalar o programa em sua máquina.
Enjoy it. 😉