O comando CREATE TABLE é utilizado para criar uma nova tabela em um banco de dados.
Ele define o nome da tabela, os nomes das colunas, seus tipos de dados e as restrições de integridade.
Esse comando pertence à categoria DDL – Data Definition Language, usada para definir a
estrutura do banco.
CREATE TABLE alunos (
id INTEGER PRIMARY KEY,
nome TEXT,
idade INTEGER,
status TEXT DEFAULT 'ativo'
);
Esse exemplo cria uma tabela chamada alunos com quatro colunas:
id – identificador único do aluno.nome – nome do aluno.idade – idade do aluno.status – situação do aluno, com valor padrão 'ativo'.INTEGER – números inteirosREAL – números decimaisTEXT – textos e palavrasBLOB – dados binários (ex: imagens)BOOLEAN – verdadeiro (1) ou falso (0)Para gerar IDs automaticamente, usamos AUTOINCREMENT com INTEGER PRIMARY KEY:
CREATE TABLE alunos (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
idade INTEGER,
status TEXT DEFAULT 'ativo'
);
Com isso, o banco atribui um número crescente à coluna id sempre que um novo aluno é inserido.
Você pode definir um valor padrão para uma coluna. Se ela for omitida no INSERT, o valor padrão
será usado:
CREATE TABLE produtos (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
preco REAL DEFAULT 0.0
);
Agora veja esse INSERT omitindo o preco:
INSERT INTO produtos (nome) VALUES ('Caneta');
produtos:| id | nome | preco |
|---|---|---|
| 1 | Caneta | 0.0 |
✅ Isso evita erros quando a coluna é obrigatória mas nem sempre o dado está disponível.
⚠️ Atenção: se você tentar omitir uma coluna obrigatória (sem
DEFAULT ou NULL), ocorrerá erro:
INSERT INTO produtos (preco) VALUES (2.50);
-- ERRO: a coluna 'nome' é obrigatória
PRIMARY KEYNOT NULL para campos obrigatóriosDEFAULT para valores automáticosCrie a tabela livros com os seguintes campos:
id – INTEGER, chave primária autoincrementotitulo – TEXT, obrigatórioautor – TEXTano_publicacao – INTEGERestoque – INTEGER, com valor padrão 10CREATE TABLE livros (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
autor TEXT,
ano_publicacao INTEGER,
estoque INTEGER DEFAULT 10
);
INSERT INTO livros (titulo, autor)
VALUES ('Memórias Póstumas', 'Machado de Assis');
| id | titulo | autor | ano_publicacao | estoque |
|---|---|---|---|---|
| 1 | Memórias Póstumas | Machado de Assis | NULL | 10 |
O comando INSERT INTO é utilizado para adicionar novos registros (linhas) a uma tabela
existente.
Ele pertence à categoria DML – Data Manipulation Language, que lida com a manipulação de
dados no banco.
INSERT INTO nome_da_tabela (coluna1, coluna2, ...)
VALUES (valor1, valor2, ...);
Você deve indicar os nomes das colunas e fornecer os respectivos valores.
INSERT INTO alunos (id, nome, idade, status)
VALUES (1, 'Maria', 17, 'ativo');
alunos:| id | nome | idade | status |
|---|---|---|---|
| 1 | Maria | 17 | ativo |
INSERT INTO alunos (nome, idade)
VALUES
('João', 18),
('Ana', 16),
('Carlos', 19);
alunos atualizada:| id | nome | idade | status |
|---|---|---|---|
| 2 | João | 18 | ativo |
| 3 | Ana | 16 | ativo |
| 4 | Carlos | 19 | ativo |
INSERT INTO alunos (nome, idade)
VALUES ('Paulo');
-- ERRO: falta valor para a coluna idade
INSERT INTO alunos (id, nome, idade)
VALUES (1, 'Bruna', 18);
-- ERRO: id 1 já existe
INSERT INTO alunos (nome, idade)
VALUES ('Pedro', 'dezessete');
-- ERRO: idade deve ser um número
No tópico anterior, vimos que é possível definir um valor padrão para uma coluna ao criar a tabela, como:
status TEXT DEFAULT 'ativo'
Quando uma coluna tem DEFAULT, você pode omití-la no INSERT — o
valor padrão será usado automaticamente:
INSERT INTO alunos (nome, idade)
VALUES ('Lúcia', 20);
status preenchido automaticamente):| id | nome | idade | status |
|---|---|---|---|
| 5 | Lúcia | 20 | ativo |
❗ Atenção: se a coluna for NOT NULL e não tiver DEFAULT, o valor é
obrigatório:
INSERT INTO alunos (idade)
VALUES (22);
-- ERRO: a coluna 'nome' é obrigatória e não possui valor padrão
TEXT (ex: 'João')id pode ser omitido se for AUTOINCREMENT
O comando SELECT é utilizado para consultar os dados armazenados em tabelas.
Ele pertence à categoria DQL – Data Query Language, usada para recuperar informações de
forma organizada.
SELECT colunas
FROM nome_da_tabela;
Você pode escolher quais colunas deseja visualizar ou usar * para trazer todas.
SELECT * FROM alunos;
Esse comando retorna todas as colunas e todos os registros da tabela alunos:
| id | nome | idade | status |
|---|---|---|---|
| 1 | Maria | 17 | ativo |
| 2 | João | 18 | ativo |
| 3 | Ana | 16 | ativo |
| 4 | Carlos | 19 | ativo |
| 5 | Lúcia | 20 | ativo |
Você pode buscar apenas algumas colunas da tabela:
SELECT nome, idade FROM alunos;
| nome | idade |
|---|---|
| Maria | 17 |
| João | 18 |
| Ana | 16 |
| Carlos | 19 |
| Lúcia | 20 |
Use o WHERE para buscar registros com uma condição específica:
SELECT * FROM alunos
WHERE idade >= 18;
| id | nome | idade | status |
|---|---|---|---|
| 2 | João | 18 | ativo |
| 4 | Carlos | 19 | ativo |
| 5 | Lúcia | 20 | ativo |
Você pode ordenar os registros por uma ou mais colunas:
SELECT nome, idade FROM alunos
ORDER BY idade DESC;
O DESC ordena do maior para o menor. Para ordem crescente (padrão), use ASC ou
simplesmente omita.
| nome | idade |
|---|---|
| Lúcia | 20 |
| Carlos | 19 |
| João | 18 |
| Maria | 17 |
| Ana | 16 |
* apenas quando quiser visualizar todas as colunas.WHERE pode usar operadores como
=, >, <,
>=, <=, != e LIKE.
WHERE com ORDER BY para refinar ainda mais os resultados.
Tente consultar:
SELECT nome FROM alunos WHERE idade < 18;
SELECT * FROM alunos ORDER BY nome;
SELECT * FROM alunos WHERE nome LIKE 'C%';
Agora que você aprendeu os comandos CREATE, INSERT e SELECT, que tal
montar
um banco de dados divertido com a sua turma?
O professor irá criar a tabela no ambiente de prática e compartilhar com a turma. Cada aluno deverá enviar um comando INSERT com seus dados através da plataforma Mentimeter (ou outro canal combinado).
Vamos construir juntos uma tabela chamada galera com informações curiosas (e respeitosas) dos
colegas.
CREATE TABLE galera (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
comida_favorita TEXT,
hobby TEXT,
idade INTEGER
);
🎉 Use sua criatividade nas respostas, o importante é participar e praticar SQL!
INSERT INTO galera (nome, comida_favorita, hobby, idade)
VALUES ('Carlos', 'Lasanha', 'Jogar futebol', 16);
Depois que todos inserirem seus dados, vamos explorar juntos com consultas SQL, como:
SELECT * FROM galera; – Veja todos os dados da turmaSELECT nome, hobby FROM galera; – Descubra o hobby de cada umSELECT nome FROM galera WHERE comida_favorita = 'Pizza'; – Quem ama pizza?Experimente criar consultas para responder perguntas como: