Até agora, trabalhamos principalmente com tabelas já existentes e consultamos dados a partir delas. Mas, no trabalho real com bancos de dados, é importante não apenas ler informações, mas também saber criar a estrutura onde esses dados serão armazenados. É exatamente para isso que serve a instrução CREATE TABLE.
CREATE TABLE faz parte da Linguagem de Definição de Dados (DDL, Data Definition Language). Com ela, descrevemos como uma tabela será estruturada: quais colunas ela terá, quais tipos de dados essas colunas usarão e quais regras serão aplicadas aos valores armazenados.
A forma mais simples da instrução é esta:
CREATE TABLE table_name (
column1 data_type,
column2 data_type,
column3 data_type
);
Após o nome da tabela, as colunas são listadas entre parênteses. Para cada coluna, você precisa especificar:
NOT NULL, PRIMARY KEY, DEFAULT e outras.Vamos criar uma tabela students:
CREATE TABLE students (
student_id INT,
first_name VARCHAR(50),
last_name VARCHAR(50),
birth_date DATE,
created_at TIMESTAMP
);
Neste exemplo:
student_id é um número inteiro;first_name e last_name são valores de texto com até 50 caracteres;birth_date armazena a data de nascimento;created_at armazena a data e a hora de criação do registro.Depois de executar esse comando, a tabela será criada, mas continuará vazia.
Ao criar tabelas, é importante escolher tipos de dados adequados. Aqui estão alguns dos mais usados:
INT para números inteiros;VARCHAR(n) para strings de tamanho variável com até n caracteres;TEXT para textos longos;DATE para datas;TIMESTAMP para data e hora, frequentemente usado para registrar quando uma linha foi criada ou alterada;DECIMAL(p, s) para valores numéricos exatos, como quantias em dinheiro;BOOLEAN para valores lógicos TRUE ou FALSE.Escolher o tipo de dado correto ajuda a economizar espaço, manter a qualidade dos dados e evitar erros.
As restrições definem regras para os dados armazenados em uma tabela.
PRIMARY KEYUma chave primária identifica de forma única cada linha da tabela.
CREATE TABLE students (
student_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50)
);
A coluna student_id não pode conter valores duplicados nem NULL.
NOT NULLEssa restrição exige que uma coluna sempre contenha um valor.
CREATE TABLE students (
student_id INT PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL
);
Agora first_name e last_name não podem ficar vazios.
DEFAULTPermite definir um valor padrão que será usado caso nenhum valor seja informado durante a inserção.
CREATE TABLE products (
product_id INT PRIMARY KEY,
product_name VARCHAR(100) NOT NULL,
price DECIMAL(10, 2) DEFAULT 0.00
);
Se nenhum preço for informado ao adicionar um produto, o banco de dados usará automaticamente 0.00.
Aqui está um exemplo mais realista de uma tabela employees:
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
hire_date DATE NOT NULL,
salary DECIMAL(10, 2) DEFAULT 0.00
);
O que está acontecendo aqui:
employee_id é o identificador único do funcionário;first_name e last_name são obrigatórios;email deve ser único;hire_date é obrigatório;salary assume 0.00 por padrão.Essa estrutura já reflete melhor requisitos reais de dados.
IF NOT EXISTSEm muitos sistemas de banco de dados, você pode evitar um erro caso a tabela já exista usando IF NOT EXISTS:
CREATE TABLE IF NOT EXISTS departments (
department_id INT PRIMARY KEY,
department_name VARCHAR(100) NOT NULL
);
Isso é útil ao executar novamente scripts de estudo ou migrações.
Ao criar tabelas, vale a pena lembrar algumas regras:
PRIMARY KEY para tabelas em que cada linha precisa ser identificada de forma única;NOT NULL para campos realmente obrigatórios;DEFAULT quando uma coluna tiver um valor padrão natural;Uma tabela bem projetada reduz erros e facilita o trabalho posterior com INSERT, UPDATE e SELECT.
Imagine que queremos criar uma tabela para armazenar livros:
CREATE TABLE books (
book_id INT PRIMARY KEY,
title VARCHAR(200) NOT NULL,
author VARCHAR(100) NOT NULL,
published_date DATE,
price DECIMAL(8, 2) DEFAULT 0.00
);
Depois que essa tabela for criada, poderemos começar a adicionar linhas usando INSERT INTO.
Principais Conclusões desta Lição:
CREATE TABLE é usada para criar novas tabelas em um banco de dados.PRIMARY KEY, NOT NULL, UNIQUE e DEFAULT ajudam a controlar a qualidade dos dados.IF NOT EXISTS ajuda a evitar erros ao criar a mesma tabela mais de uma vez.Na próxima lição, aprenderemos como adicionar novas linhas às tabelas usando a instrução INSERT INTO.