🚀 MÃO NA MASSA COM SQL (DDL)
Seja bem-vindo à nossa jornada prática! Começaremos a construção da estrutura de um sistema profissional de Agenda de Contatos. 🛡️🧩
Objetivo: Aplicar comandos de Definição de Dados (DDL) para criar esquemas, tabelas e gerenciar a evolução da estrutura do banco de dados.
📗 PASSO 1: Organizando com SCHEMAS
Antes de criar tabelas, criamos um SCHEMA. Isso organiza o banco de dados em "bibliotecas" separadas, evitando conflitos.
-- Criando o espaço de nomes (Namespace)
CREATE SCHEMA AGENDA;
📗 PASSO 2: Criando a Tabela Principal
A SQL permite especificar tipos e restrições (Constraints) para garantir que apenas dados válidos entrem no sistema.
-- Criando a tabela com restrições profissionais
CREATE TABLE AGENDA.CONTATO (
ID INT PRIMARY KEY, -- Identificador Único
NOME VARCHAR(50) NOT NULL, -- Obrigatório
EMAIL VARCHAR(100) UNIQUE, -- Não repetido
NASCIMENTO DATE, -- Formato AAAA-MM-DD
ATIVO BOOLEAN DEFAULT TRUE -- Valor automático
);
💡 Por que usar Constraints?
- 🛡️ PRIMARY KEY: Garante unicidade e impede nulos.
- 🚫 NOT NULL: Torna o preenchimento obrigatório.
- 🔑 UNIQUE: Impede duplicidade (ex: E-mails).
- ⚙️ DEFAULT: Define um valor padrão automático.
📗 PASSO 3: Modificando a Estrutura (ALTER e DROP)
O projeto de banco de dados evolui. O DDL permite mudanças seguras:
📗 Evoluindo a Tabela (ALTER)
-- Adicionando uma nova coluna
ALTER TABLE AGENDA.CONTATO ADD COLUMN CPF CHAR(11);
⚠️ Removendo Estruturas (DROP)
Cuidado! Estes comandos apagam os dados e estruturas permanentemente. 🛡️
🐬 MySQL 8.4
No MySQL, SCHEMA e DATABASE são sinônimos. Apagar um schema apaga tudo o que está nele automaticamente.
-- Remove a tabela específica
DROP TABLE AGENDA.CONTATO;
-- Remove o schema (banco de dados) completo
DROP SCHEMA AGENDA;
🐘 PostgreSQL 17
No Postgres, um SCHEMA é um namespace dentro de um banco. Se houver tabelas, você deve usar CASCADE.
-- Remove a tabela específica
DROP TABLE AGENDA.CONTATO;
-- Remove o schema e força a exclusão de tudo o que estiver dentro (CASCADE)
DROP SCHEMA AGENDA CASCADE;
📗 PASSO 4: Tipos de Dados (Referência Rápida)
| Categoria | Tipo SQL | Aplicação |
|---|---|---|
| Identificadores | INT / UUID | Chaves Primárias. |
| Textos | VARCHAR(n) | Nomes, E-mails. |
| Números | DECIMAL(10,2) | Valores financeiros. |
| Temporal | TIMESTAMP | Auditoria (Data e Hora). |
| Híbrido | JSON / JSONB | Dados flexíveis. |
📗 PASSO 5: MySQL vs PostgreSQL (Auto-incremento)
📊 Divergência de Sintaxe para IDs
| SGBD | Comando de Auto-incremento |
|---|---|
| MySQL 8.4 | ID INT PRIMARY KEY AUTO_INCREMENT |
| PostgreSQL 17 | ID INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY |
💡 Dica do Especialista: No PostgreSQL, o CREATE SCHEMA facilita a gestão de permissões para diferentes equipes. 🚀🛡️