CONSTRAINTS: MANUAL BÁSICO
- #SQL
Constraints são regras pré-definidas impostas às colunas de uma tabela. São usadas para controlar os dados que são inseridos, sendo úteis tanto para linhas quanto para colunas.
Elas determinam o tipo de dados que poderão ser inseridos, garantindo assim a integridade do banco de dados e contribuindo para que os dados ali armazenados possam ser agrupados e propiciem análises e utilização para diversos fins.
As constraints podem ser especificadas no momento da criação das tabelas, porém, caso seja necessário, estas regras podem ser adicionadas posteriormente, utilizando o comando `ALTER`.
Principais constraints no MySQL :
1. PRIMARY KEY
Define uma coluna (ou conjunto de colunas) como identificador exclusivo para cada linha da tabela.
Não permite valores nulos e não permite duplicatas.
CREATE TABLE employees (
id INT NOT NULL,
name VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
2. FOREIGN KEY
Estabelece uma relação entre duas tabelas, vinculando uma coluna em uma tabela a uma PRIMARY KEY (ou UNIQUE) em outra tabela.
Ajuda a manter a integridade referencial.
CREATE TABLE employees (
id INT NOT NULL,
department_id INT,
name VARCHAR(50),
PRIMARY KEY (id),
FOREIGN KEY (department_id) REFERENCES departments(id)
);
3. UNIQUE
Garante que todos os valores em uma coluna (ou combinação de colunas) sejam únicos.
Permite valores nulos, mas apenas um **NULL** por coluna.
CREATE TABLE users (
id INT NOT NULL,
email VARCHAR(100) NOT NULL,
UNIQUE (email)
);
4. NOT NULL
Garante que uma coluna não aceite valores nulos (**NULL**).
CREATE TABLE orders (
order_id INT NOT NULL,
product_name VARCHAR(100) NOT NULL
);
5. DEFAULT
Define um valor padrão para a coluna quando nenhum valor for especificado na inserção.
CREATE TABLE products (
id INT NOT NULL,
name VARCHAR(50),
price DECIMAL(10, 2) DEFAULT 0.00
);
6. CHECK (Introduzido no MySQL 8.0.16)
Restringe os valores que podem ser inseridos em uma coluna com base em uma condição lógica.
CREATE TABLE employees (
id INT NOT NULL,
age INT,
CHECK (age >= 18)
);
7. AUTO_INCREMENT
Usada para gerar valores únicos automaticamente para colunas, geralmente em conjunto com PRIMARY KEY.
CREATE TABLE orders (
order_id INT NOT NULL AUTO_INCREMENT,
order_date DATE NOT NULL,
PRIMARY KEY (order_id)
);
8. INDEX
Não é exatamente uma "*constraint*", mas é usado para melhorar a performance de consultas.
Pode ser usado em colunas com **UNIQUE** ou **PRIMARY KEY**.
CREATE TABLE products (
id INT NOT NULL,
name VARCHAR(100),
price DECIMAL(10, 2),
INDEX (name)
);