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.

TEXT
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:

  1. Baixe em https://www.apachefriends.org → Instale → Inicie o Apache e o MySQL
  2. Acesse http://localhost/phpmyadmin

(2) Conectando-se ao MySQL

BASH
# Command-line connection
mysql -u root -p
# XAMPP's root has no password by default—just press Enter
SQL
-- 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

SQL
-- 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;
▶ Experimente

▶ Exemplo: Criação de uma tabela de usuários

SQL
-- 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;
▶ Experimente
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
💡 Dica: Sempre use 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

SQL
-- 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!
▶ Experimente
🔥 Erro comum: 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:

TEXT
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
💡 Dica: Como iniciante, você pode usar o phpMyAdmin para operações visuais, mas as próximas aulas (PDO) vão ensinar como operar bancos de dados a partir do código PHP — é assim que as aplicações web de verdade funcionam.


7. Criando uma tabela de publicações

SQL
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
);
💡 Dica: 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

📝 Exercícios

  1. 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.
  2. 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.
  3. Use o comando UPDATE para alterar o título de um artigo. Use o comando DELETE para excluir um artigo desatualizado. Verifique os resultados.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%