Banco de Dados I — 2026.2

Aula 5
Introdução ao SQL & DDL: CREATE TABLE

👨‍🏫 Prof. Gustavo Pinto 🏛️ UFPA 📅 05 de maio de 2026 🕣 7h30 – 9h10

Agenda de hoje

O que é SQL?

Structured Query Language — linguagem padrão para interagir com bancos de dados relacionais. Criada nos anos 70 na IBM, padronizada pela ANSI/ISO.

DDL

Data Definition Language

CREATE, ALTER, DROP

DML

Data Manipulation Language

INSERT, UPDATE, DELETE

DQL

Data Query Language

SELECT

DCL

Data Control Language

GRANT, REVOKE

Ferramenta: DB Fiddle (db-fiddle.com) — selecione PostgreSQL

Tipos de Dados — PostgreSQL

Numéricos

INTEGER — inteiro (4 bytes)
SERIAL — inteiro auto-incremento
NUMERIC(p,s) — decimal exato
REAL / FLOAT — ponto flutuante

Texto

VARCHAR(n) — texto com limite
CHAR(n) — texto fixo
TEXT — texto sem limite

Data / Hora

DATE — data (YYYY-MM-DD)
TIMESTAMP — data + hora
TIME — apenas hora

Outros

BOOLEAN — TRUE / FALSE
UUID — identificador único
JSON / JSONB — dados JSON

CREATE TABLE — Sintaxe

CREATE TABLE aluno (
    matricula  SERIAL       PRIMARY KEY,
    nome       VARCHAR(100) NOT NULL,
    email      VARCHAR(150) UNIQUE,
    dt_nasc    DATE,
    ativo      BOOLEAN      DEFAULT TRUE
);

Constraints (Restrições)

PRIMARY KEY

Identifica unicamente cada linha. Pode ser simples ou composta.

PRIMARY KEY (aluno_id, disc_id)

FOREIGN KEY

Referencia a PK de outra tabela. Garante integridade referencial.

cod_depto INTEGER REFERENCES departamento(codigo)

NOT NULL & UNIQUE

NOT NULL — campo obrigatório
UNIQUE — valores não se repetem

CHECK

Validação customizada no valor da coluna.

nota NUMERIC(4,2) CHECK (nota >= 0 AND nota <= 10)

ON DELETE CASCADE — ao deletar a linha referenciada, deleta as dependentes também.
ON DELETE SET NULL — seta a FK para NULL.

Exemplo Completo — E-commerce

CREATE TABLE cliente (
    cpf        CHAR(11)     PRIMARY KEY,
    nome       VARCHAR(100) NOT NULL,
    email      VARCHAR(150) UNIQUE NOT NULL
);

CREATE TABLE pedido (
    id         SERIAL       PRIMARY KEY,
    data       DATE         NOT NULL DEFAULT CURRENT_DATE,
    cli_cpf    CHAR(11)     NOT NULL REFERENCES cliente(cpf)
);

CREATE TABLE produto (
    codigo     SERIAL       PRIMARY KEY,
    descricao  VARCHAR(200) NOT NULL,
    preco      NUMERIC(10,2) NOT NULL CHECK (preco > 0)
);
Exercício

Crie as tabelas no DB Fiddle

Uma universidade tem departamentos (código, nome), professores (SIAPE, nome, departamento) e disciplinas (código, nome, créditos, professor responsável). Um professor pertence a um departamento e pode lecionar várias disciplinas.

① Escreva os CREATE TABLE

Defina PKs, FKs, NOT NULL e CHECK onde apropriado. Crie as tabelas na ordem correta (dependências).

② Teste no DB Fiddle

Execute no db-fiddle.com (PostgreSQL). Se der erro, leia a mensagem e corrija.

Próxima Aula — 07/05 (Qui)

DDL — Continuação
ALTER TABLE & DROP TABLE