Supabase SQL DDL Guia & Prática

Laboratório Completo de SQL DDL (PostgreSQL / Supabase)

Aprenda a Estruturar Bancos de Dados com Relacionamentos Reais e 32 Desafios Práticos

Entenda palavra por palavra a anatomia do CREATE TABLE, ALTER TABLE e das Chaves Estrangeiras (FOREIGN KEY). Depois, teste seus conhecimentos criando conjuntos de 3 tabelas no SQL Editor do Supabase.

1. Passo a Passo: Onde Executar os Comandos no Supabase

Siga este roteiro visual para acessar o console SQL do seu projeto no Supabase.

1

Acessar o Projeto

Acesse seu painel no supabase.com e escolha seu projeto ativo.

Dashboard Cloud
2

Abrir o SQL Editor

No menu lateral esquerdo, clique no ícone de código SQL Editor (>_).

Menu Lateral
3

Criar Nova Consulta

Clique no botão verde + New query para abrir uma aba em branco.

New Query
4

Digitar o Script

Cole ou digite os comandos DDL (CREATE TABLE ou ALTER TABLE).

Editor DDL
5

Executar (Run)

Clique em Run ou atalho Ctrl + Enter para aplicar a alteração física.

Executar

2. Anatomia do Comando CREATE TABLE

Passe o mouse ou clique sobre cada trecho do código abaixo para inspecionar seu significado técnico.

script_criacao.sql PostgreSQL / Supabase
CREATE TABLE clientes (

    id uuid PRIMARY KEY DEFAULT gen_random_uuid(),

    nome varchar(100) NOT NULL,

    email varchar(150) UNIQUE NOT NULL,

    status varchar(20) DEFAULT 'ativo',

    data_cadastro timestamptz DEFAULT now()

);
Painel de Inspeção da Sintaxe Clique no código

Clique em qualquer palavra do script

O comando CREATE TABLE instrui o sistema gerenciador do Postgres a alocar uma nova estrutura de tabela física na base de dados com suas devidas restrições de integridade.

💡 Selecione os elementos destacados à esquerda para visualizar a explicação técnica individual.

3. Anatomia do Comando ALTER TABLE

Utilize o ALTER TABLE para evoluir tabelas sem apagar dados em produção. Escolha a operação desejada:

Adicionar uma Nova Coluna na Tabela

ADD COLUMN

Aplica-se quando o sistema evolui e precisa armazenar um novo atributo em uma tabela existente.

// Estrutura Geral e Exemplo:

ALTER TABLE clientes

ADD COLUMN telefone varchar(20);

Integridade Referencial & Chaves Estrangeiras (FK)

4. Anatomia do Relacionamento entre Tabelas (1:N e N:N)

Aprenda a lógica, a ordem de criação correta e a anatomia da sintaxe para ligar tabelas no PostgreSQL / Supabase.

1. Ordem de Criação no Supabase

Regra de Ouro: Crie primeiro a Tabela Pai (independente). Você NÃO pode criar uma Chave Estrangeira apontando para uma tabela que ainda não existe no banco!

2. Compatibilidade de Tipos

A coluna da FK deve ter o mesmo tipo de dado exato da PK de destino. Se o id for uuid, a FK DEVE ser uuid.

3. Regras de Exclusão (ON DELETE)

Defina o que acontece com os filhos quando o pai for deletado: CASCADE (apaga em cascata), RESTRICT (bloqueia deleção) ou SET NULL.

relacao_1_para_n.sql 1 Cliente -> N Pedidos
// 1º Criar a Tabela PAI (clientes)
CREATE TABLE clientes (
    id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
    nome varchar(100) NOT NULL
);

// 2º Criar a Tabela FILHA (pedidos) com a Chave Estrangeira
CREATE TABLE pedidos (
    id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
    
    cliente_id uuid NOT NULL,
    valor_total numeric(10,2) NOT NULL,
    criado_em timestamptz DEFAULT now(),

    CONSTRAINT fk_pedidos_cliente
    FOREIGN KEY (cliente_id)
    REFERENCES clientes(id)
    ON DELETE CASCADE
);
Anatomia do Relacionamento Clique no código

Clique nas linhas destacadas da FK

Uma Chave Estrangeira (FOREIGN KEY) cria um vínculo de integridade no banco. Ela impede que um pedido seja salvo com um cliente_id inexistente.

📌 Dica Supabase: Você também pode usar a sintaxe inline reduzida:
cliente_id uuid REFERENCES clientes(id) ON DELETE CASCADE

Anatomia de Relacionamento N:N (Tabela Associativa Intermediária)

Exemplo clássico de 3 tabelas: Alunos (Pai 1) + Cursos (Pai 2) conectados pela tabela Matrículas (Filha Intermediária).

Relação N:N
// 1. Tabela Pai 1

CREATE TABLE alunos (

id uuid PRIMARY KEY DEFAULT gen_random_uuid(),

nome varchar(100) NOT NULL

);

// 2. Tabela Pai 2

CREATE TABLE cursos (

id uuid PRIMARY KEY DEFAULT gen_random_uuid(),

titulo varchar(100) NOT NULL

);

// 3. Tabela Associativa (2 FKs)

CREATE TABLE matriculas (

aluno_id uuid REFERENCES alunos(id) ON DELETE CASCADE,

curso_id uuid REFERENCES cursos(id) ON DELETE CASCADE,

data_matricula timestamptz DEFAULT now(),

PRIMARY KEY (aluno_id, curso_id)

);

Atividade Individual: 1 Exercício por Aluno (1 a 32)

5. Central de Desafios Individuais de DDL (1 a 32)

Cada aluno possui 1 exercício exclusivo atribuído ao seu número de chamada (de 1 a 32). Você deve resolver apenas o seu respectivo exercício no SQL Editor do Supabase!

Seu Nº de Aluno
Instrução da Aula: O Aluno 01 faz o Exercício 01, o Aluno 02 faz o Exercício 02, e assim sucessivamente até o Aluno 32. Selecione seu número para focar diretamente no seu desafio.
Categoria Exercício #1

Carregando exercício...

Contexto & Requisito do Negócio:

Descrição do negócio...

As 3 Tabelas a Serem Criadas: Crie na ordem recomendada abaixo
Mapeamento das Chaves Estrangeiras (FK):
Regra extra de negócio...
Checklist antes de clicar em "RUN" no Supabase:

6. Construtor & Gerador Visual de DDL (Para Apoio)

Se tiver dúvida sobre a sintaxe de alguma tabela isolada, use este gerador visual para conferir.

CÓDIGO DDL GERADO AUTOMATICAMENTE:
-- O código SQL aparecerá aqui...
                        
Sintaxe Supabase/PostgreSQL: As chaves primárias são tipadas preferencialmente com o tipo `uuid` e função nativa `gen_random_uuid()`.

Tipos de Dados Mais Utilizados no Supabase

Comparativo de alocação de armazenamento e casos de uso típicos.

Tipo Tamanho Uso Recomendado
uuid 16 bytes Chaves Primárias (PK) e Estrangeiras (FK) globais únicas.
varchar(N) Variável Textos curtos com limite (nomes, emails, status).
numeric(P,S) Variável Valores monetários exatos (preços, taxas, salários).
timestamptz 8 bytes Datas completas com fuso horário (created_at).

Quiz de Fixação DDL & Relacionamentos

Pontuação: 0 pts

Carregando pergunta...

Questão 1 de 4