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

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

CategoriaTipo SQLAplicação
IdentificadoresINT / UUIDChaves Primárias.
TextosVARCHAR(n)Nomes, E-mails.
NúmerosDECIMAL(10,2)Valores financeiros.
TemporalTIMESTAMPAuditoria (Data e Hora).
HíbridoJSON / JSONBDados flexíveis.

📗 PASSO 5: MySQL vs PostgreSQL (Auto-incremento)

📊 Divergência de Sintaxe para IDs

SGBDComando de Auto-incremento
MySQL 8.4ID INT PRIMARY KEY AUTO_INCREMENT
PostgreSQL 17ID 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. 🚀🛡️