15 de August de 2026
Guia Prático de MySQL: Estrutura de Tabelas, Colunas e Comandos Essenciais
Aprenda os fundamentos do MySQL para aplicações web e jogos: entenda tabelas, colunas, tipos de dados, chaves primárias e como manipular dados com comandos SQL práticos.
Guia Prático de MySQL: Estrutura de Tabelas, Colunas e Comandos Essenciais
O MySQL é um dos bancos de dados relacionais mais utilizados no desenvolvimento de aplicações web, sistemas administrativos e servidores de jogos.
Neste guia prático, você vai aprender como o MySQL organiza os dados, como funcionam tabelas e colunas, quais são os principais tipos de dados e quais comandos são essenciais para criar e modificar estruturas.
Ao final, você também terá uma base para trabalhar com o banco de dados através da MuCRM.
1. O que é uma Tabela no MySQL?
Uma tabela é uma estrutura utilizada para armazenar informações relacionadas a uma determinada entidade ou finalidade dentro do banco de dados.
Uma forma simples de visualizar uma tabela é como uma planilha organizada:
Tabela: characters
┌────┬────────────────┬───────┬───────┐
│ id │ player_name │ level │ class │
├────┼────────────────┼───────┼───────┤
│ 1 │ DragonKnight │ 400 │ 1 │
│ 2 │ DarkWizard │ 350 │ 2 │
│ 3 │ ElfMaster │ 300 │ 3 │
└────┴────────────────┴───────┴───────┘
Cada parte possui uma função:
- Tabela: representa um conjunto de informações.
- Linha: representa um registro.
- Coluna: representa uma característica do registro.
Por exemplo:
users→ usuários ou contas.characters→ personagens.guilds→ guildas.game_purchases→ compras realizadas no jogo.
2. O que é uma Coluna?
Uma coluna representa uma informação que será armazenada para cada registro.
Por exemplo, uma tabela de personagens pode possuir:
characters
│
├── id
├── player_name
├── level
├── class
├── reset_count
└── created_at
Cada coluna possui um tipo de dado, que determina quais valores podem ser armazenados.
3. Principais Tipos de Dados do MySQL
Escolher corretamente o tipo de dado é importante para manter o banco organizado e evitar consumo desnecessário de espaço.
VARCHAR
Utilizado para textos com tamanho variável.
VARCHAR(100)
Exemplos:
Nome do personagem
Login
E-mail
Nome da guild
Nome de item
INT
Utilizado para números inteiros.
INT
Exemplos:
ID
Level
Reset
Quantidade
Pontuação
TINYINT
Utilizado para números inteiros pequenos.
TINYINT
É bastante utilizado para valores como:
Status
Ativo / Inativo
Flags
Tipos
Classes
BIGINT
Utilizado para números inteiros que podem atingir valores muito maiores que um INT.
BIGINT
Pode ser útil para:
- IDs com grande volume.
- Contadores.
- Identificadores distribuídos.
- Dados que podem ultrapassar o limite do
INT.
DECIMAL
Utilizado quando precisamos trabalhar com valores decimais com precisão.
DECIMAL(10,2)
Por exemplo:
49.90
1500.50
9999.99
É especialmente recomendado para valores financeiros.
DATETIME
Armazena data e horário.
DATETIME
Exemplo:
2026-08-15 17:00:00
Pode ser utilizado para:
- Data de criação.
- Último login.
- Data de compra.
- Data de eventos.
- Logs.
TIMESTAMP
Também permite armazenar data e horário.
TIMESTAMP
Um uso bastante comum é registrar automaticamente o momento em que um registro foi criado:
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
TEXT
Utilizado para textos maiores.
TEXT
Pode ser utilizado para:
- Descrições.
- Conteúdo de notícias.
- Logs extensos.
- Textos administrativos.
4. Criando uma Tabela
Para criar uma tabela utilizamos:
CREATE TABLE
Por exemplo:
CREATE TABLE game_purchases (
id INT AUTO_INCREMENT PRIMARY KEY,
player_id INT NOT NULL,
item_name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL,
status VARCHAR(20) DEFAULT 'pending',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Essa tabela representa um registro de compras realizadas no jogo.
5. Entendendo a Estrutura da Tabela
AUTO_INCREMENT
AUTO_INCREMENT
Faz com que o MySQL gere automaticamente o identificador do registro.
Por exemplo:
1
2
3
4
5
No nosso exemplo:
id INT AUTO_INCREMENT PRIMARY KEY
Não precisamos informar o id manualmente ao inserir uma compra.
PRIMARY KEY
PRIMARY KEY
Define a chave primária da tabela.
Ela é utilizada para identificar exclusivamente cada registro.
Exemplo:
id INT PRIMARY KEY
Dessa forma, dois registros não podem possuir o mesmo valor de chave primária.
NOT NULL
NOT NULL
Indica que o campo é obrigatório.
Por exemplo:
player_id INT NOT NULL
Uma compra não poderá ser criada sem informar o jogador.
DEFAULT
DEFAULT
Define um valor padrão caso nenhum valor seja enviado.
Exemplo:
status VARCHAR(20) DEFAULT 'pending'
Se o status não for informado durante o INSERT, o MySQL utilizará:
pending
6. ENGINE=InnoDB
No final da criação da tabela podemos definir:
ENGINE=InnoDB
O InnoDB é o mecanismo de armazenamento mais utilizado no MySQL e oferece recursos importantes, como suporte a transações e integridade referencial.
Exemplo:
CREATE TABLE game_purchases (
id INT AUTO_INCREMENT PRIMARY KEY,
player_id INT NOT NULL,
item_name VARCHAR(100) NOT NULL
) ENGINE=InnoDB;
7. CHARSET=utf8mb4
Também podemos definir o conjunto de caracteres da tabela:
DEFAULT CHARSET=utf8mb4
O utf8mb4 possui suporte amplo a caracteres Unicode, incluindo caracteres especiais e emojis.
Exemplo:
CREATE TABLE game_purchases (
id INT AUTO_INCREMENT PRIMARY KEY,
item_name VARCHAR(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
8. Alterando uma Tabela Existente
Quando uma aplicação cresce, é comum precisar adicionar novas informações.
Por exemplo:
- Sistema VIP.
- Pontos.
- Tags.
- Novas configurações.
- Informações de eventos.
- Novos campos administrativos.
Não é necessário apagar e recriar a tabela.
Utilizamos:
ALTER TABLE
8.1. Adicionando uma Coluna
Para adicionar uma coluna:
ALTER TABLE characters
ADD vip_level INT DEFAULT 0 NOT NULL AFTER player_name;
Nesse exemplo, adicionamos:
vip_level
com valor padrão:
0
O AFTER player_name indica a posição da nova coluna na estrutura da tabela.
9. Modificando uma Coluna
Para alterar a definição de uma coluna no MySQL utilizamos:
MODIFY
Exemplo:
ALTER TABLE users
MODIFY email VARCHAR(150) NOT NULL;
Nesse caso, o campo email passa a aceitar até 150 caracteres e continua sendo obrigatório.
10. Renomeando uma Coluna
No MySQL 8+, podemos utilizar:
RENAME COLUMN
Exemplo:
ALTER TABLE characters
RENAME COLUMN nick TO player_name;
A coluna:
nick
passará a se chamar:
player_name
11. Removendo uma Coluna
Para remover uma coluna:
ALTER TABLE characters
DROP COLUMN temp_flag;
Isso remove a coluna temp_flag da tabela.
Atenção: ao utilizar
DROP COLUMN, os dados armazenados naquela coluna serão removidos. Sempre faça um backup antes de executar alterações destrutivas em um banco de produção.
12. Inserindo Registros
Para inserir dados utilizamos:
INSERT INTO
Exemplo:
INSERT INTO game_purchases (
player_id,
item_name,
price,
status
)
VALUES (
1042,
'Asa Nível 3',
49.90,
'completed'
);
O id não precisa ser informado porque ele utiliza AUTO_INCREMENT.
Da mesma forma, created_at será preenchido automaticamente por:
DEFAULT CURRENT_TIMESTAMP
13. Consultando Registros
Para consultar dados utilizamos:
SELECT
Por exemplo:
SELECT
id,
player_id,
item_name,
price
FROM game_purchases;
Também podemos utilizar filtros.
Utilizando WHERE
O WHERE permite retornar somente os registros que atendem a determinada condição.
SELECT
id,
player_id,
item_name,
price
FROM game_purchases
WHERE status = 'completed';
Nesse caso, somente as compras com status completed serão retornadas.
14. Ordenando os Resultados
Podemos utilizar ORDER BY para definir a ordem dos resultados.
SELECT
id,
player_id,
item_name,
price,
created_at
FROM game_purchases
WHERE status = 'completed'
ORDER BY created_at DESC;
O:
DESC
ordena do mais recente para o mais antigo.
Já:
ASC
ordena do menor para o maior ou do mais antigo para o mais recente, dependendo da coluna.
15. Atualizando Registros
Para alterar informações existentes utilizamos:
UPDATE
Por exemplo:
UPDATE game_purchases
SET status = 'delivered'
WHERE id = 1;
Esse comando altera o status da compra cujo id seja 1.
Atenção: tenha muito cuidado com
UPDATEsemWHERE. Sem uma condição, você pode alterar todos os registros da tabela.
16. Estrutura Básica de um Banco de Dados
Uma aplicação normalmente trabalha com diversas tabelas relacionadas.
Um projeto de servidor de jogo pode possuir uma estrutura semelhante a:
Banco de Dados
│
├── users
│ └── Contas
│
├── characters
│ └── Personagens
│
├── guilds
│ └── Guildas
│
├── game_purchases
│ └── Compras
│
└── game_events
└── Eventos
Cada tabela possui uma responsabilidade específica.
A aplicação pode então consultar essas estruturas para construir funcionalidades maiores.
17. MySQL e a MuCRM
A MuCRM pode utilizar diferentes bancos de dados conforme a necessidade do projeto.
Quando o MySQL é utilizado, a aplicação pode trabalhar com as tabelas e registros através da camada de banco de dados da framework.
O fluxo conceitual pode ser representado assim:
MySQL
│
▼
Tabelas
│
▼
Models / Query Builder
│
▼
Controllers
│
├── Views
│
└── API
Isso permite utilizar os dados do banco para construir funcionalidades como:
- Players Online.
- Rankings.
- Personagens.
- Guildas.
- Eventos.
- Sistemas de compra.
- Sistemas administrativos.
- APIs.
- Dashboards.
18. Comandos Essenciais
Os principais comandos apresentados neste guia são:
| Comando | Função |
|---|---|
CREATE TABLE |
Cria uma tabela |
ALTER TABLE |
Altera uma tabela existente |
INSERT INTO |
Insere registros |
SELECT |
Consulta registros |
WHERE |
Filtra resultados |
ORDER BY |
Ordena resultados |
UPDATE |
Atualiza registros |
DROP COLUMN |
Remove uma coluna |
RENAME COLUMN |
Renomeia uma coluna |
Conclusão
Compreender tabelas, colunas, tipos de dados e comandos SQL é fundamental para trabalhar com aplicações que utilizam MySQL.
Os conceitos apresentados neste guia formam uma base para começar a estruturar e manipular bancos de dados:
CREATE TABLE
↓
ALTER TABLE
↓
INSERT INTO
↓
SELECT
↓
WHERE
↓
UPDATE
Com essa base, você já consegue criar novas estruturas, adicionar funcionalidades ao banco, inserir informações, consultar registros e modificar dados existentes.
Conforme o projeto cresce, novos conceitos como JOIN, índices, relacionamentos, chaves estrangeiras, transações, migrations e otimização de consultas tornam-se importantes para manter o banco organizado, seguro e performático.