Noções básicas sobre o banco de dados MySQL
Todos os dados das 27 lições anteriores ficavam na memória — e desapareciam assim que você atualizava a página. Um banco de dados é um local permanente para armazenar seus dados. Esta lição ensina o que é um banco de dados, como projetar tabelas e como criar seu primeiro banco de dados no MySQL.
1. O que é um banco de dados?
Um banco de dados = um sistema organizado de arquivamento eletrônico. É muito melhor do que arquivos de texto em termos de: consultas rápidas, leituras e gravações simultâneas e integridade dos dados.
Database Server (e.g., MySQL)
├── Database "blog" ← CREATE DATABASE blog;
│ ├── Table "users" ← CREATE TABLE users (...)
│ │ ├── Row: User 1 ← INSERT INTO users ...
│ │ ├── Row: User 2
│ │ └── Row: User 3
│ ├── Table "posts"
│ └── Table "comments"
└── Database "shop"
| Termo | Analogia | Descrição |
|---|---|---|
| Banco de dados | Pasta de trabalho do Excel | Repositório de dados de um projeto |
| Tabela | Planilha/Folha | Armazena um tipo de dados (tabela de usuários, tabela de publicações) |
| Coluna | Coluna A, B, C... | Um campo (nome, idade) |
| Linha | Uma linha de dados | Um registro (John, 25) |
| Chave primária (PK) | Número da linha | Identifica cada linha de forma exclusiva |
2. Instalação e conexão com o MySQL
(1) Windows com XAMPP
O XAMPP inclui o MySQL e o phpMyAdmin — instalação com um clique:
- Baixe em https://www.apachefriends.org → Instale → Inicie o Apache e o MySQL
- Acesse http://localhost/phpmyadmin
(2) Conectando-se ao MySQL
# Command-line connection
mysql -u root -p
# XAMPP's root has no password by default—just press Enter
-- List existing databases
SHOW DATABASES;
-- For security, set a root password
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_password';
3. Criação de bancos de dados e tabelas
▶ Exemplo: Criação de um banco de dados
-- Create a database
CREATE DATABASE myblog;
-- Select the database
USE myblog;
-- Check the current database
SELECT DATABASE();
-- Delete a database (use with caution!)
-- DROP DATABASE myblog;
▶ Exemplo: Criação de uma tabela de usuários
-- Create the users table
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
age INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- View table structure
DESCRIBE users;
-- Or
SHOW COLUMNS FROM users;
| Cláusula | Descrição |
|---|---|
AUTO_INCREMENT |
Autoincremento — aumenta automaticamente em +1 a cada nova linha |
PRIMARY KEY |
Chave primária — identifica cada linha de forma exclusiva |
NOT NULL |
Obrigatório — não pode ficar em branco |
UNIQUE |
Único — não pode haver duplicatas |
DEFAULT |
Valor padrão |
CURRENT_TIMESTAMP |
Carimbo de data/hora atual |
4. Tipos de dados comuns do MySQL
| Tipo | Finalidade | Exemplo |
|---|---|---|
INT |
Inteiro | age INT → 25 |
BIGINT |
Número inteiro grande | view_count BIGINT → 1000000 |
FLOAT / DOUBLE |
Ponto flutuante | price FLOAT → 19,99 |
DECIMAL(M,D) |
Decimal preciso (dinheiro) | price DECIMAL(10,2) → 19,99 |
VARCHAR(N) |
Sequência de comprimento variável | name VARCHAR(50) |
TEXT |
Texto longo | content TEXT |
DATE |
Data | birthday DATE → 29/06/2026 |
DATETIME |
Data e hora | created_at DATETIME |
TIMESTAMP |
Carimbo de data/hora | updated_at TIMESTAMP |
BOOLEAN |
Booleano (TINYINT(1)) | is_active BOOLEAN → 1/0 |
ENUM |
Enumerado (opções fixas) | status ENUM('active','banned') |
JSON |
Dados JSON | metadata JSON |
DECIMAL para valores monetários, nunca FLOAT — os números de ponto flutuante apresentam erros de precisão que podem custar-lhe centavos.
5. Operações CRUD básicas
| Operação | Instrução SQL | Descrição |
|---|---|---|
| Criar | INSERT INTO table VALUES (...) |
Adicionar novas linhas |
| Ler | SELECT * FROM table WHERE ... |
Consultar dados |
| Atualizar | UPDATE table SET col=val WHERE ... |
Alterar dados |
| Excluir | DELETE FROM table WHERE ... |
Excluir dados |
▶ Exemplo: CRUD básico
-- Insert data
INSERT INTO users (username, email, password, age) VALUES
('John', 'john@example.com', 'hashed_pw_1', 25),
('Jane', 'jane@example.com', 'hashed_pw_2', 22),
('Bob', 'bob@example.com', 'hashed_pw_3', 28);
-- Query
SELECT * FROM users;
SELECT username, email FROM users WHERE age > 23;
SELECT COUNT(*) FROM users; -- Count rows
SELECT * FROM users ORDER BY age DESC; -- Sort by age descending
SELECT * FROM users LIMIT 2; -- Only the first 2 records
-- Update
UPDATE users SET age = 26 WHERE username = 'John';
-- ⚠️ Forgetting WHERE updates ALL rows!
-- Delete
DELETE FROM users WHERE id = 3;
-- ⚠️ Forgetting WHERE deletes ALL rows!
UPDATE e DELETE sem uma cláusula WHERE afetam todas as linhas! Esse é o “botão nuclear” das operações em bancos de dados — sempre verifique duas vezes sua condição WHERE antes da execução.
6. Trabalhando com o phpMyAdmin
O phpMyAdmin é uma ferramenta gráfica para gerenciar o MySQL, perfeita para iniciantes que não se sentem à vontade com a linha de comando:
http://localhost/phpmyadmin
Steps:
1. Click "New" on the left → enter database name myblog → Create
2. Click the myblog database → "SQL" tab
3. Paste your CREATE TABLE statement → Execute
4. Click the users table → "Insert" tab → fill out the form to insert data
5. "Browse" tab → view your data
6. "Structure" tab → view/modify column definitions
7. Criando uma tabela de publicações
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
title VARCHAR(200) NOT NULL,
content TEXT NOT NULL,
status ENUM('draft', 'published') DEFAULT 'draft',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
FOREIGN KEY (user_id) REFERENCES users(id) garante que o autor de cada postagem seja um usuário existente. ON DELETE CASCADE significa que, ao excluir um usuário, todas as suas postagens são excluídas automaticamente.
❓ Perguntas Frequentes
P: Qual é a relação entre o MySQL e o SQL? R: O SQL é a linguagem (Structured Query Language). O MySQL é um sistema de gerenciamento de banco de dados (um dos muitos produtos de software que implementam o SQL). Da mesma forma que o JavaScript é a linguagem e o Chrome é o navegador que a executa.
P: Como faço para escolher entre VARCHAR e TEXT? R: Use VARCHAR para textos curtos (≤255 caracteres). Use TEXT para textos longos. VARCHAR pode ter valores padrão; TEXT não. Use VARCHAR para nomes de usuário, e-mails e títulos. Use TEXT para o conteúdo de artigos.
P: A partir de qual número o AUTO_INCREMENT começa? R: Por padrão, ele começa em 1 e aumenta em 1. Se você excluir a última linha e executar o INSERT novamente, o próximo ID será o ID máximo anterior + 1 (as lacunas não são preenchidas).
📖 Resumo
- Banco de dados = sistema de arquivamento eletrônico (armazenamento persistente + consultas rápidas + segurança contra acessos simultâneos)
CREATE DATABASE name;→USE name;→CREATE TABLE (...)- Tipos comuns: INT/VARCHAR/TEXT/DECIMAL/DATETIME/BOOLEAN
- A CHAVE PRIMÁRIA identifica cada linha de forma exclusiva, enquanto o AUTO_INCREMENT as numera automaticamente
- Operações CRUD: INSERT/SELECT/UPDATE/DELETE
UPDATE/DELETEsem WHERE é o botão nuclear ⚠️- O phpMyAdmin permite o gerenciamento visual do MySQL
📝 Exercícios
- No phpMyAdmin, crie o banco de dados myblog e a tabela users (com os campos id, username, email, password, age e created_at). Insira 5 registros de usuários de teste.
- Crie uma tabela “posts” (id/user_id/title/content/status/created_at). Insira três registros de artigos. Use a instrução SELECT para consultar todos os artigos publicados.
- Use o comando UPDATE para alterar o título de um artigo. Use o comando DELETE para excluir um artigo desatualizado. Verifique os resultados.



