Banco de Dados - DDL — Linguagem de Definição de Dados

Suporte a Banco de Dados

DDL — Linguagem de Definição de Dados

Tipos de dados, criação e alteração de tabelas, constraints, chave primária e integridade referencial

Classe Descentralizada de Piquete MySQL / XAMPP / phpMyAdmin
Aula de revisão. Este material consolida os principais comandos e conceitos da DDL. Os exemplos usam a sintaxe do MySQL, para você testar diretamente no phpMyAdmin (XAMPP).

01 O que é a DDL?

A DDL (Data Definition Language — Linguagem de Definição de Dados) é o subconjunto do SQL responsável por definir e modificar a estrutura do banco de dados: criar bancos, tabelas, colunas e restrições. Ela cuida do "esqueleto" — e não dos dados em si (isso é papel da DML).

CREATECria estruturas (banco, tabela)
ALTERAltera estruturas existentes
DROPRemove estruturas por completo
TRUNCATEEsvazia a tabela, mantendo a estrutura

02 Tipos de dados

Cada coluna precisa de um tipo de dado, que define o que ela pode armazenar e quanto espaço ocupa. Escolher bem o tipo garante economia e integridade.

CategoriaTipos comunsUso típico
Numéricos inteirosTINYINT, INT, BIGINTIdade, quantidade, códigos, chaves
Numéricos decimaisDECIMAL(p,s), FLOAT, DOUBLEPreços, salários (use DECIMAL para dinheiro)
TextoCHAR(n), VARCHAR(n), TEXTNomes, e-mails, descrições
Data e horaDATE, TIME, DATETIME, TIMESTAMPDatas de nascimento, registros
LógicoBOOLEAN (TINYINT(1))Ativo/inativo, sim/não
CHAR × VARCHAR: CHAR(10) reserva sempre 10 caracteres (tamanho fixo); VARCHAR(10) usa apenas o espaço necessário até 10 (tamanho variável). Para dados de tamanho irregular, prefira VARCHAR.

03 Criar, alterar e apagar tabelas

CREATE TABLE

Cria uma nova tabela definindo suas colunas, tipos e restrições.

CREATE TABLE cliente (
    id_cliente INT PRIMARY KEY AUTO_INCREMENT,
    nome       VARCHAR(100) NOT NULL,
    email      VARCHAR(120) UNIQUE,
    idade      INT,
    ativo      BOOLEAN DEFAULT TRUE
);

ALTER TABLE

Modifica a estrutura de uma tabela já existente — adicionar, alterar ou remover colunas.

-- Adicionar coluna
ALTER TABLE cliente ADD telefone VARCHAR(20);

-- Alterar o tipo de uma coluna
ALTER TABLE cliente MODIFY nome VARCHAR(150) NOT NULL;

-- Remover coluna
ALTER TABLE cliente DROP COLUMN telefone;

DROP × DELETE × TRUNCATE

Três comandos muito confundidos. Atenção à diferença:

ComandoO que removeCategoria
DROP TABLEEstrutura e dados (a tabela deixa de existir)DDL
TRUNCATE TABLETodos os dados, mas mantém a estruturaDDL
DELETE FROMLinhas específicas (com WHERE) ou todasDML

04 Constraints (restrições)

Constraints são regras aplicadas às colunas ou tabelas para garantir a integridade dos dados — ou seja, impedir que informações inválidas ou inconsistentes sejam armazenadas.

PKPRIMARY KEY

Identifica unicamente cada registro.

FKFOREIGN KEY

Relaciona uma tabela a outra.

UKUNIQUE

Impede valores repetidos na coluna.

NNNOT NULL

Torna o preenchimento obrigatório.

CKCHECK

Valida uma condição sobre o valor.

DFDEFAULT

Define um valor padrão automático.

05 Chave primária e restrições associadas (PK · UK · CK · NN)

PK PRIMARY KEY — Chave primária

  • Identifica unicamente cada registro da tabela;
  • Não aceita valores NULL;
  • Não aceita valores repetidos;
  • Cada tabela tem apenas uma chave primária.

UK UNIQUE — Chave única

Garante que os valores da coluna não se repitam (ex.: CPF, e-mail). Diferente da PK, aceita um valor nulo e podem existir várias por tabela.

ALTER TABLE cliente ADD CONSTRAINT uk_email UNIQUE (email);

CK CHECK — Verificação

Valida uma condição lógica antes de aceitar o dado (MySQL 8.0+).

ALTER TABLE cliente ADD CONSTRAINT ck_idade CHECK (idade >= 0);

NN NOT NULL — Não nulo

Torna o preenchimento da coluna obrigatório — ela nunca pode ficar vazia.

ALTER TABLE cliente MODIFY nome VARCHAR(100) NOT NULL;

06 Integridade referencial — FOREIGN KEY

A chave estrangeira (FOREIGN KEY) cria uma relação entre tabelas, referenciando a chave primária de outra tabela. Ela garante a integridade referencial: um valor só pode ser inserido se existir na tabela referenciada.

CREATE TABLE pedido (
    id_pedido  INT PRIMARY KEY AUTO_INCREMENT,
    data_venda DATE NOT NULL,
    id_cliente INT,
    CONSTRAINT fk_pedido_cliente
        FOREIGN KEY (id_cliente) REFERENCES cliente(id_cliente)
);

Assim, não é possível cadastrar um pedido para um cliente que não existe. As ações ON DELETE e ON UPDATE definem o que acontece quando o registro "pai" é alterado ou removido:

AçãoComportamento
CASCADEPropaga a alteração/exclusão para os registros filhos
SET NULLDefine a FK dos filhos como NULL
RESTRICT / NO ACTIONImpede a operação enquanto houver filhos vinculados

Resumo rápido

  • DDL define a estrutura: CREATE, ALTER, DROP, TRUNCATE.
  • Tipos de dados definem o conteúdo de cada coluna (use DECIMAL para dinheiro; VARCHAR para textos variáveis).
  • Constraints garantem a integridade: PK, FK, UNIQUE, NOT NULL, CHECK, DEFAULT.
  • PRIMARY KEY = único + não nulo; UNIQUE = não repete; CHECK = valida condição; NOT NULL = obrigatório.
  • FOREIGN KEY conecta tabelas e garante a integridade referencial.

Referências

  • ORACLE. MySQL 8.0 Reference Manual — Data Definition Statements. Disponível em: dev.mysql.com/doc. Acesso em: 10 ago. 2026.
  • ELMASRI, R.; NAVATHE, S. B. Sistemas de Banco de Dados. 7. ed. São Paulo: Pearson, 2018.
  • DATE, C. J. Introdução a Sistemas de Bancos de Dados. 8. ed. Rio de Janeiro: Elsevier, 2004.
  • W3SCHOOLS. SQL Constraints. Disponível em: w3schools.com/sql. Acesso em: 10 ago. 2026.

Conteúdo adaptado didaticamente para fins educacionais, com exemplos na sintaxe MySQL para uso em ambiente XAMPP/phpMyAdmin.

Comentários

Postagens mais visitadas deste blog

Introdução aos Sistemas de Gerenciamento de Banco de Dados

Comandos de Rede via CMD

Introdução ao HTML, CSS e JavaScript - Guia para Iniciantes