Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

🏗️ CAPÍTULO 11: ECOSSISTEMA SQL E DDL

A primeira ideia que define um desenvolvedor experiente é entender que a SQL (Structured Query Language) não é apenas uma ferramenta, mas uma linguagem declarativa de escala global, capaz de gerenciar desde pequenos aplicativos até a bolsa de valores. 🛡️🧩


🎯 Objetivo Curricular

Compreender a filosofia declarativa da SQL (o papel do otimizador de consultas) e aplicar comandos de Definição de Dados (DDL) para criar schemas, tabelas e gerenciar a evolução da arquitetura.


🏢 O Cenário Prático (Seu Desafio)

A TecProExpress decidiu criar um módulo de "Agenda de Contatos" para os fornecedores logísticos. Os analistas desenharam o MER, mas o banco de dados ainda está vazio.

"Seu desafio é abrir o terminal (ou a interface DBeaver/pgAdmin) e usar a linguagem SQL para construir as fundações do prédio: criar o espaço de trabalho (Schema) e a tabela que armazenará os fornecedores, com regras rígidas."


🧠 Fundamentos: As 5 Famílias da SQL

A SQL é dividida em 5 subconjuntos. Todo o nosso trabalho até agora na criação de tabelas pertenceu ao primeiro grupo.

SiglaSignificadoComandos PrincipaisO que faz?
DDLData Definition LanguageCREATE, ALTER, DROPMonta o "esqueleto" do banco.
DMLData Manipulation LanguageINSERT, UPDATE, DELETEManipula os "órgãos" (dados).
DQLData Query LanguageSELECTFaz as consultas e relatórios.
DCLData Control LanguageGRANT, REVOKESegurança (Dá e tira permissão).
TCLTransaction Control LanguageCOMMIT, ROLLBACKSalva ou Cancela um lote de ações.

📊 Fluxo de Processamento Declarativo

Diferente do Java ou Python (onde você diz como fazer o laço de repetição), a SQL é Declarativa. Você diz o que quer, e o SGBD se vira para otimizar.

flowchart LR
    A["📜 Declaração SQL"] --> B{"⚙️ Otimizador SGBD"}
    B -- "Calcula a Rota" --> C["🗺️ Plano de Execução"]
    C --> D["📊 Resultado Final"]

📖 Exemplo Guiado: O DDL em Ação (Criando a Base)

Sempre organize seus projetos criando um SCHEMA. Ele funciona como uma "pasta" dentro do banco de dados, evitando que as tabelas da logística se misturem com as do RH.

🛠️ Código do Exemplo

-- PASSO 1: DDL (Criação do Namespace/Schema)
CREATE SCHEMA logistica;

-- PASSO 2: DDL (Criação da Tabela com Constraints Base)
CREATE TABLE logistica.fornecedor (
    id INT PRIMARY KEY,
    nome_fantasia VARCHAR(100) NOT NULL,
    cnpj CHAR(14) UNIQUE
);

-- PASSO 3: DDL (Evoluindo a tabela - ALTER)
ALTER TABLE logistica.fornecedor ADD COLUMN email VARCHAR(100);

-- PASSO 4: DML (Carga Inicial)
INSERT INTO logistica.fornecedor (id, nome_fantasia, cnpj, email) 
VALUES (1, 'Baterias Moura', '12345678901234', 'contato@moura.com');

🔍 Detalhamento do Código:

  • CREATE SCHEMA logistica;: Cria a área de trabalho. No Postgres, isso cria uma divisão lógica no mesmo banco. (Nota: No MySQL, Schema e Database são sinônimos).
  • logistica.fornecedor: Boa prática! Sempre referenciamos a tabela pelo nome do schema seguido de um ponto.
  • ALTER TABLE ... ADD COLUMN: A vida real muda! O comando ALTER permite colocar uma nova coluna (email) sem ter que apagar (DROP) a tabela e perder os dados.

🛠️ Prática Obrigatória: Construção e Destruição

Cenário: A base de teste para a equipe de desenvolvimento.

  1. Crie um schema chamado treinamento.
  2. Crie a tabela teste_dev dentro dele.
  3. Insira 1 linha de dados.
  4. Destrua a tabela completamente usando o comando de aniquilação do DDL.

🚀 Script de Seed (Gabarito de Ciclo de Vida)

-- 1. Cria o ambiente
CREATE SCHEMA treinamento;

-- 2. Cria a estrutura (DDL)
CREATE TABLE treinamento.teste_dev (
    id INT PRIMARY KEY,
    descricao VARCHAR(50)
);

-- 3. Insere dados (DML)
INSERT INTO treinamento.teste_dev VALUES (1, 'Cobaia 01');

-- 4. Aniquila a estrutura (DDL Destrutivo)
-- CUIDADO! O DROP apaga a tabela e todos os dados dentro dela sem aviso!
DROP TABLE treinamento.teste_dev;

📤 Instruções de Entrega (Microsoft Teams)

Após validar seus códigos práticos e de estudo:

Use o operador e para critérios rigorosos e ou para critérios flexíveis. Salve os arquivos com a extensão .sql (Ex: Atividade_XX_SeuNome.sql ou Atividade_XX_SeuNome.png ou Atividade_XX_SeuNome.drawio


💡 Checkpoint de Lógica

[!WARNING] Dica do Arquiteto: Qual a diferença entre DELETE (DML) e DROP (DDL)? O DELETE FROM tabela apaga apenas as linhas (os dados), mas o esqueleto da tabela continua existindo para receber novos registros. O DROP TABLE é uma bomba atômica: apaga a estrutura, as colunas, as regras e, por consequência, todos os dados de uma vez. Use com extrema cautela! 🚀🛡️