anúncios

terça-feira, 22 de outubro de 2024

Aprenda SQL do zero ao avançado

SQL (Structured Query Language) é uma linguagem de programação utilizada principalmente para interagir com bancos de dados relacionais. É fundamental entender o conceito de Sistema Gerenciador de Banco de Dados (SGBD) antes de mergulhar na aprendizagem de SQL.

Conceito de SGBD

Um Sistema Gerenciador de Banco de Dados (SGBD) é um software que permite criar, organizar, armazenar, recuperar e manipular dados em um banco de dados. Os principais componentes de um SGBD incluem:

  • Motor de banco de dados
  • Linguagem de consulta
  • Interface de usuário
  • Sistema operacional

Exemplo prático: MySQL

MySQL é um dos SGBDs mais populares e amplamente utilizado. Ele oferece uma interface de linha de comando e suporta várias linguagens de programação.

MariaDB

O MariaDB é um SGBD multiplataforma lançado em 2009, fork do MySQL. Algumas de suas vantagens incluem:

  • Baseado no MySQL
  • Licença GNU GPL
  • Multiplataforma

PostgreSQL

O PostgreSQL é outro SGBD muito popular e avançado. Algumas de suas principais características incluem:

  • Open source, sob a licença BSD e multiplataforma
  • Suporta diferentes tipos de dados
  • Meios de consulta mais complexos
  • Chaves estrangeiras e outros recursos avançados
  • Escalável para projetos de maior escala

Oracle Database

O Oracle Database é um dos SGBDs mais utilizados em aplicações corporativas:

  • Desenvolvido pela Oracle Corporation
  • Multiplataforma
  • Licença comercial
  • Suporta desde demandas simples até complexas
  • Excelente para aplicações corporativas

Microsoft SQL Server

O Microsoft SQL Server é desenvolvido pela Microsoft:

  • Disponível para Windows e Linux
  • Possui licença proprietária
  • Atende desde demandas simples até complexas
  • Robustos recursos de segurança
  • Meios de criptografia avançados

Criação do container MySQL

É necessário ter o Docker instalado no SO (Windows, Linux). Caso estja no Windows, habilite o recurso WSL2 e na loja Microsoft, pesquise Ubuntu, após a instalação do Ubuntu no WSL2, abre o terminal do Linux (Ubuntu) e segue os procedimentos abaixo dos itens 1 até 4, caso já estiver com Docker, continue no item 5.

  1. Atualização do sistema
  2. sudo apt update && sudo apt upgrade -y
  3. Instalação do Docker
  4. sudo apt install docker.io -y
  5. Inicialização do serviço Docker
  6. sudo systemctl start docker
  7. Habilitar a inicializaçao do serviço Docker no boot do sistema
  8. sudo systemctl enable docker
  9. Criar o conteiner MySQL
  10.   sudo docker run -d \
      --name projeto1_mysql \
      -p 3306:3306 \
      -e MYSQL_ROOT_PASSWORD=secret \
      -e MYSQL_DATABASE=projeto1 \
      -v projeto1_data:/var/lib/mysql \
      mysql:8
      
      

Conectando ao banco de dados

Utilizando um cliente MySQL (DBeaver), conecte no banco de dados com as devidas credenciais (usuário e senha) definido na instalação e host/porta.

Host: 127.0.0.1

Port: 3306

Username: root

Password: secret

Database: projeto1

Criação das tabelas usuários e pedido

Utilizando o banco de dados projeto1, antes de criar as tabelas, precisa selecionar qual banco de dados que serão criadas. Para isso, execute:

USE projeto1;

CREATE TABLE usuarios (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(255),
    email VARCHAR(255) UNIQUE,
    data_nascimento DATE
);

CREATE TABLE pedidos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    usuario_id INT,
    produto VARCHAR(255),
    preco DECIMAL(10,2),
    quantidade INT,
    data_pedido DATE,
    FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);

A tabela pedidos tem as seguintes características:
  1. O campo id é o identificador principal da tabela, gerado automaticamente pelo MySQL.
  2. usuario_id é um campo que relaciona os pedidos aos usuários específicos.
  3. produto armazena o nome do produto comprado.
  4. preco armazena o preço do produto com duas casas decimais.
  5. quantidade indica quantos itens foram comprados.
  6. data_pedido registra a data em que o pedido foi feito.
  7. Adicionamos uma chave estrangeira (FOREIGN KEY) para estabelecer uma relação entre pedidos e usuarios.

Esta estrutura permite que você mantenha dados sobre os usuários e seus respectivos pedidos, facilitando análises e consultas mais complexas posteriormente.

Fundamentos básicos de SQL

Agora, vamos explorar alguns conceitos básicos de SQL:

SELECT

O comando SELECT é usado para recuperar dados de uma ou mais tabelas.

Exemplo prático:

SELECT * FROM usuarios;

Este comando retorna todos os registros da tabela usuarios.

INSERT

O comando INSERT é utilizado para inserir novos registros em uma tabela.

Exemplo prático:

INSERT INTO usuarios (nome, email, data_nascimento) VALUES ('Bjorn Cyril', 'bjorn.cyril@hotmail.com', '1990-11-07');

INSERT INTO pedidos (id, usuario_id, produto, preco, quantidade, data_pedido) VALUES (1, 1, 'Camiseta Azul', 29.99, 2, '2024-10-20');

UPDATE

O comando UPDATE é usado para modificar dados existentes em uma tabela.

WARNING: Sempre utilize o WHERE no comando UPDATE

Exemplo prático:

UPDATE usuarios SET email = 'bjorn.cyril@gmail.com' WHERE id = 1;

DELETE

O comando DELETE é utilizado para remover registros de uma tabela.

WARNING: Sempre utilize o WHERE no comando DELETE

Exemplo prático:

DELETE FROM usuarios WHERE id = 1;

Consultas Avançadas

Vamos explorar algumas técnicas mais avançadas de SQL:

JOIN

O JOIN é usado para combinar dados de duas ou mais tabelas relacionadas.

Exemplo prático:

SELECT u.nome, p.preco FROM usuarios u JOIN pedidos p ON u.id = p.usuario_id;

Este exemplo mostra como combinar dados dos usuários e seus pedidos.

GROUP BY

O GROUP BY agrupa resultados por valores específicos.

Exemplo prático:

SELECT COUNT(*) AS quantidade_pedidos, AVG(preco) AS media_preco FROM pedidos GROUP BY usuario_id;

Este comando retorna a quantidade de pedidos e a média de preço por usuário.

Conceitos avançados

Agora vamos mergulhar em alguns conceitos mais avançados de SQL:

Subquery

Uma subquery é uma consulta dentro de outra consulta.

Exemplo prático:


SELECT *
FROM usuarios
WHERE id IN (
    SELECT usuario_id
    FROM pedidos
    WHERE preco > 100
);

Esta consulta seleciona usuários que fizeram pedidos com valor superior a 100.

UNION

O UNION combina os resultados de duas ou mais consultas.

Exemplo prático:


SELECT nome, email
FROM usuarios
UNION
SELECT nome, email
FROM clientes;

Este comando combina os resultados das tabelas usuarios e clientes.

A tabela clientes não foi criada, antes de executar, crie a tabela clientes, com base dos exemplos das tabela pedidos.

Comandos úteis do Docker

Para parar o container

sudo docker stop projeto1_mysql

Para iniciar o container

sudo docker start projeto1_mysql

Para remover o container

sudo docker rm projeto1_mysql

Para remover o volume

sudo docker volume rm projeto1_data

Considerações finais

SQL é uma linguagem poderosa e versátil que forma a base de muitos sistemas de banco de dados modernos. Compreender esses conceitos básicos e avançados é fundamental para qualquer desenvolvedor ou analista de dados.

Pratique regularmente e explore diferentes bancos de dados para melhorar suas habilidades. Lembre-se de que a prática é a chave para dominar SQL efetivamente.

Feito!

Nenhum comentário:

Postar um comentário