Douglas Legramante

Douglas Legramante

Informática

Técnico em Informática · Banco de Dados

12-Tipos de Dados, Constraints, ALTER e DROP TABLE

12 — Tipos de Dados, Constraints, ALTER e DROP TABLE

1. Aprofundando os tipos de dados

No Encontro 11 vimos só o essencial (INT, VARCHAR, DATE, DECIMAL) para conseguir escrever um CREATE TABLE. Hoje vamos conhecer mais opções e, principalmente, aprender quando usar cada uma.

Tipos numéricos

TipoFaixa de valores (aproximada)TamanhoQuando usar
TINYINT-128 a 1271 byteValores bem pequenos (ex.: idade, quantidade de estrelas de avaliação)
SMALLINT-32.768 a 32.7672 bytesValores pequenos/médios (ex.: ano de fabricação)
INT±2,1 bilhões4 bytesO padrão para a maioria dos casos (IDs, matrículas, quantidades)
BIGINTNúmeros enormes8 bytesSistemas com bilhões de registros (ex.: IDs de rede social gigante)
DECIMAL(p,q)Exato, com casas decimaisVariaDinheiro e valores que precisam ser exatos — nunca usar FLOAT para preço
FLOAT / DOUBLEAproximado, com casas decimaisVariaCálculos científicos onde uma pequena imprecisão não importa

Critério de escolha: não gaste espaço à toa (um campo "quantidade de estrelas" de 1 a 5 não precisa de INT), mas na dúvida, INT é uma escolha segura para a maioria dos casos do dia a dia.

Tipos de texto

TipoComo funcionaQuando usar
CHAR(n)Tamanho fixo — sempre ocupa n caracteresCódigos de tamanho sempre igual (ex.: sigla de estado, "UF" sempre com 2 letras)
VARCHAR(n)Tamanho variável, até n caracteresA maioria dos casos: nomes, endereços, títulos
TEXTTexto longo, sem limite práticoDescrições, comentários, textos grandes

Cuidado: CPF e telefone não são INT

Um erro clássico de quem está começando: como CPF e telefone só têm dígitos, parece natural usar INT. Não use. Três motivos:

  1. Perde zeros à esquerda — "00123456789" guardado como INT vira 123456789, um valor diferente do original.
  2. Pode estourar o tamanho do INT — CPF tem 11 dígitos, e o INT do MySQL só aguenta até aproximadamente 10 dígitos (±2,1 bilhões).
  3. Não é uma quantidade — você nunca vai somar, calcular média ou fazer conta com um CPF ou telefone. Se não faz sentido matemático, não é um número "de verdade" para o banco.

O certo é usar CHAR(11) (tamanho sempre igual) ou VARCHAR para esses casos — trate como texto, mesmo que só tenha dígitos.

Tipos de data e hora

TipoGuardaExemplo
DATESó a data2026-09-01
TIMESó a hora14:30:00
DATETIMEData + hora2026-09-01 14:30:00
TIMESTAMPParecido com DATETIME, mas ajusta fuso horário automaticamente e tem faixa de datas menor (até 2038)Registro de "quando isso foi criado/alterado"

2. Constraints: NOT NULL e UNIQUE

Já usamos PRIMARY KEY e FOREIGN KEY. Hoje formalizamos mais duas restrições (constraints) no CREATE TABLE:

  • NOT NULL — impede que a coluna fique vazia. Por padrão, uma coluna pode ficar sem valor (NULL); com NOT NULL, o banco exige que sempre tenha algo.
  • UNIQUE — impede valores repetidos naquela coluna. Já vimos essa ideia lá no Encontro 8 (relacionamento 1:1) — agora vemos a sintaxe formal.

sql

CREATE TABLE aluno (
    matricula INT NOT NULL,
    nome VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE,
    PRIMARY KEY (matricula)
);

Nesse exemplo: matricula e nome são obrigatórios (NOT NULL); email pode ficar vazio, mas se for preenchido, não pode se repetir entre alunos (UNIQUE).

3. ALTER TABLE — alterando uma tabela já criada

-- Adicionar uma coluna nova
ALTER TABLE aluno ADD COLUMN telefone VARCHAR(20);

-- Remover uma coluna
ALTER TABLE aluno DROP COLUMN telefone;

-- Modificar o tipo/tamanho de uma coluna
ALTER TABLE aluno MODIFY COLUMN nome VARCHAR(150);

4. DROP TABLE — apagando uma tabela inteira

DROP TABLE nome_da_tabela;

⚠️ Cuidado: DROP TABLE apaga a tabela e todos os dados dentro dela, sem confirmação e sem volta. Sempre ter certeza (e, idealmente, um backup) antes de rodar.

5. Prévia do próximo encontro

No Encontro 13, vamos aprender sobre índices: o que são, para que servem, e como criá-los para deixar buscas mais rápidas.


Vídeos sobre o assunto

Para se aprofundar