🏗️ 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.
| Sigla | Significado | Comandos Principais | O que faz? |
|---|---|---|---|
| DDL | Data Definition Language | CREATE, ALTER, DROP | Monta o "esqueleto" do banco. |
| DML | Data Manipulation Language | INSERT, UPDATE, DELETE | Manipula os "órgãos" (dados). |
| DQL | Data Query Language | SELECT | Faz as consultas e relatórios. |
| DCL | Data Control Language | GRANT, REVOKE | Segurança (Dá e tira permissão). |
| TCL | Transaction Control Language | COMMIT, ROLLBACK | Salva 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.
- Crie um schema chamado
treinamento. - Crie a tabela
teste_devdentro dele. - Insira 1 linha de dados.
- 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) eDROP(DDL)? ODELETE FROM tabelaapaga apenas as linhas (os dados), mas o esqueleto da tabela continua existindo para receber novos registros. ODROP 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! 🚀🛡️