image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF
Suellen
Suellen12/10/2023 09:56
Compartilhe

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.

image

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.

image

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;

image

TABELA DESTINOS

SELECT *
FROM destinos;

image

TABELA RESERVAS

SELECT *
FROM reservas;

image

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.

image

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.

image

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);

image

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";

image

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";

image

>> PROBLEMA 3: Quais usuários possuem ano de nascimento >= 1990?

SELECT *
FROM usuarios
WHERE EXTRACT(YEAR FROM data_nascimento) >= 1990;

image

>> 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;

image

>> PROBLEMA 5: Qual é o usuário de maior idade?

SELECT nome, MAX(TIMESTAMPDIFF (YEAR, data_nascimento, CURRENT_DATE())) AS idade
FROM usuarios;

image

>> PROBLEMA 6: Qual a quantidade de usuários por cidade?

select cidade, COUNT(*) AS num_usuarios
FROM usuarios
GROUP BY cidade;

image

>> 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;

image

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. 😉

Compartilhe
Comentários (0)