Em MySQL, os campos são configurados por padrão para aceitar valores nulos. Porém, em muitos cenários práticos, é necessário garantir que os campos não sejam nulos para manter a integridade dos dados.
-- Exemplo de tabela com campos não nulos
CREATE TABLE turma (
nome_turma VARCHAR(20) NOT NULL,
sala VARCHAR(20) NOT NULL
);
-- Tentativa de inserção falha devido à restrição NOT NULL
INSERT INTO turma(nome_turma) VALUES('Turma A');
-- Erro: O campo 'sala' não pode ser nulo
Valores Padrão (DEFAULT)
O MySQL permite definir valores padrão para campos que não recebem um valor explícito durante a inserção.
-- Tabela com valores padrão
CREATE TABLE pessoa (
nome VARCHAR(20) NOT NULL,
idade TINYINT UNSIGNED DEFAULT 0,
genero CHAR(2) DEFAULT 'M'
);
-- Inserção utilizando valores padrão
INSERT INTO pessoa(nome) VALUES('João');
-- Resultado: João, 0, M
Comentários em Colunas (COMMENT)
É possível adicionar descrições às colunas para documentação, visíveis apenas nos metadados da tabela.
-- Tabela com comentários
CREATE TABLE funcionario (
id INT PRIMARY KEY COMMENT 'Identificador único',
nome VARCHAR(50) NOT NULL COMMENT 'Nome completo'
);
-- Visualizando os comentários
SHOW CREATE TABLE funcionario;
Preenchimento com Zeros (ZEROFILL)
Esta propriedade formata a exibição numérica, preanchendo com zeros à eqsuerda até atingir o comprimento especificado.
-- Tabela com ZEROFILL
CREATE TABLE produtos (
codigo INT(5) UNSIGNED ZEROFILL,
nome VARCHAR(30)
);
INSERT INTO produtos VALUES(12, 'Caneta');
-- Exibição: 00012, Caneta
Chave Primária (PRIMARY KEY)
A chave primária identifica unicamente cada regisrto em uma tabela. MySQL suporta chaves primárias simples e compostas.
-- Tabela com chave primária simples
CREATE TABLE cliente (
id INT UNSIGNED PRIMARY KEY,
nome VARCHAR(30) NOT NULL
);
-- Tabela com chave primária composta
CREATE TABLE matricula (
aluno_id INT,
disciplina_id INT,
PRIMARY KEY(aluno_id, disciplina_id)
);
Auto Incremento (AUTO_INCREMENT)
Gera automaticamente valores sequenciais para a chave primária.
-- Tabela com auto incremento
CREATE TABLE pedido (
id INT PRIMARY KEY AUTO_INCREMENT,
descricao TEXT
);
-- Inserções com valores gerados automaticamente
INSERT INTO pedido(descricao) VALUES('Pedido 1');
INSERT INTO pedido(descricao) VALUES('Pedido 2');
Chave Única (UNIQUE)
Garante que os valores em uma coluna sejam distintos, permitindo valores nulos.
-- Tabela com chave única
CREATE TABLE usuario (
email VARCHAR(50) UNIQUE,
nome VARCHAR(30)
);
-- Inserções válidas e inválidas
INSERT INTO usuario VALUES('user@email.com', 'Ana'); -- OK
INSERT INTO usuario VALUES('user@email.com', 'Pedro'); -- Erro
INSERT INTO usuario VALUES(NULL, 'Carlos'); -- OK
Chave Estrangeira (FOREIGN KEY)
Estabelece relações entre tabelas, garantindo integridade referencial.
-- Tabela principal
CREATE TABLE departamento (
id INT PRIMARY KEY,
nome VARCHAR(30)
);
-- Tabela com chave estrangeira
CREATE TABLE funcionario (
id INT PRIMARY KEY,
nome VARCHAR(30),
depto_id INT,
FOREIGN KEY (depto_id) REFERENCES departamento(id)
);
-- Inserções válidas e inválidas
INSERT INTO departamento VALUES(1, 'TI');
INSERT INTO funcionario VALUES(100, 'Maria', 1); -- OK
INSERT INTO funcionario VALUES(101, 'José', 2); -- Erro (departamento inexistente)