Nas primeiras aulas a gente viu o básico sobre bancos de dados relacionais e PostgreSQL, aprendeu a mexer com psql e pgAdmin, e também como criar e gerenciar bancos de dados. Agora chegou a hora de partir pro principal "bloco de construção" dos bancos relacionais – as tabelas. É nas tabelas que fica guardada toda a informação que depois a gente pode filtrar, ordenar ou juntar.
Pra criar tabelas no PostgreSQL, tu usa o comando CREATE TABLE. Esse comando define a estrutura da tabela: o nome dela, as colunas e os tipos de dados de cada uma.
Estrutura geral do comando
Olha só como é o básico da sintaxe:
CREATE TABLE tabela (
coluna1 tipo_de_dado constraints,
coluna2 tipo_de_dado constraints,
...
);
Vamos quebrar em partes:
tabela– nome da tabela (tipostudents).coluna1– nome da coluna (tipoid,name).tipo_de_dado– tipo de dado da coluna (tipoINTEGER,VARCHAR).constraints– restrições pros dados (tipoNOT NULL,PRIMARY KEY).
Bora criar nossa primeira tabela.
Exemplo de criação de tabela
Cenário: na base de dados da escola, a gente precisa guardar info dos estudantes. Pra isso, vamos criar a tabela students com os campos:
id: identificador único do estudante (aumenta automático);name: nome do estudante (até 100 caracteres);age: idade do estudante (número inteiro positivo).
CREATE TABLE students (
id SERIAL PRIMARY KEY, -- ID único do estudante
name VARCHAR(100), -- nome
age INTEGER -- idade
);
O que tá rolando aqui:
id SERIAL PRIMARY KEY: cria a colunaid, que gera números únicos automaticamente (1, 2, 3...) pra cada linha. Também é a chave primária da tabela.name VARCHAR(100): cria uma coluna de texto, ondeVARCHAR(100)quer dizer que a string pode ter até 100 caracteres.age INTEGER: cria uma coluna numérica pra guardar a idade.
Agora, se tu rodar esse comando no psql ou pgAdmin, a tabela students vai ser criada.
Tipos de dados pras colunas
Quando tu cria uma tabela, é importante escolher o tipo de dado certo pra cada coluna. O PostgreSQL tem vários tipos, mas vamos começar pelos mais usados.
| Tipo de dado | Descrição | Exemplo de valores |
|---|---|---|
INTEGER |
Números inteiros. Bom pra idade, quantidade de algo, identificadores. | 1, 42, 100 |
VARCHAR(n) |
String com até n caracteres. Ideal pra textos com tamanho limitado. |
'Alice', 'Bob' |
TEXT |
Strings sem limite. Usado pra textos longos (tipo descrição de produto). | 'Texto bem longo...' |
DATE |
Data sem hora. Usado pra datas de nascimento, eventos. | 2023-10-12 |
BOOLEAN |
Tipo lógico: TRUE ou FALSE. Usado pra flags (tipo feito/não feito). |
TRUE, FALSE |
Como escolher o tipo de dado certo
- Se tu vai guardar números – usa
INTEGER. - Pra strings com tamanho limitado – melhor usar
VARCHAR(n). - Pra texto sem limite – usa
TEXT. - Datas e horários guarda em
DATEouTIMESTAMP.
Exemplo: criando a tabela courses
Imagina que na nossa base também precisa guardar info dos cursos. Cada curso tem:
id: identificador único;name: nome do curso (string até 100 caracteres);description: descrição do curso (texto longo);start_date: data de início do curso.
SQL:
CREATE TABLE courses (
id SERIAL PRIMARY KEY, -- ID único do curso
name VARCHAR(100), -- nome do curso
description TEXT, -- descrição
start_date DATE -- data de início
);
Exercício prático
Agora é tua vez de criar uma tabela! Olha o desafio:
- Cria a tabela
teacherscom os campos:id: identificador único.name: nome do professor (string até 50 caracteres).subject: matéria que ele/ela ensina (string até 50 caracteres).hire_date: data de contratação.
Exemplo de código pra rodar:
CREATE TABLE teachers (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
subject VARCHAR(50),
hire_date DATE
);
Depois de rodar, usa o comando \d teachers no psql pra conferir se a tabela foi criada.
Erros comuns ao criar tabelas
Quando tu começa a mexer com tabelas, pode rolar uns erros. Olha só os mais comuns:
Erro no nome da tabela ou coluna. No PostgreSQL os nomes não diferenciam maiúscula/minúscula, mas se tu usar aspas " nos nomes, tem que ficar ligado. Por exemplo, CREATE TABLE "MyTable" cria a tabela "MyTable", e mytable não vai ser reconhecida como o nome dela.
Tipo de dado errado. Se tu colocar um tipo de dado que não existe, o comando vai dar erro.
CREATE TABLE exemplo (
coluna1 TIPO_ESTRANHO
);
Esse comando não vai funcionar porque TIPO_ESTRANHO não existe.
Esquecer o PRIMARY KEY. Se tu esquecer de botar a chave primária, a tabela até vai ser criada, mas vai ser mais difícil identificar as linhas depois.
GO TO FULL VERSION