Todas as ferramentas
Gratuito

Uma referência pesquisável e imprimível de MySQL — consultas, joins, índices, funções, tipos de dados e comandos de administração. Grátis.

Consultas

10
SELECT * FROM users;
Selecionar todas as colunas e linhas
SELECT id, name FROM users;
Selecionar colunas específicas
SELECT DISTINCT city FROM users;
Apenas valores únicos
WHERE age > 18 AND active = 1
Filtrar linhas por condições
WHERE name LIKE 'A%'
Correspondência de padrão (% = quaisquer caracteres)
WHERE id IN (1, 2, 3)
Corresponder a qualquer valor de um conjunto
WHERE age BETWEEN 18 AND 30
Filtro de intervalo inclusivo
ORDER BY created_at DESC
Ordenar de forma decrescente
LIMIT 10 OFFSET 20
Paginar resultados
WHERE email IS NULL
Corresponder valores null

Joins

8
INNER JOIN orders ON orders.user_id = users.id
Linhas correspondentes nas duas tabelas
LEFT JOIN orders ON ...
Todas as linhas da esquerda + correspondências
RIGHT JOIN orders ON ...
Todas as linhas da direita + correspondências
CROSS JOIN colors
Produto cartesiano
SELF JOIN: FROM emp e JOIN emp m ON e.mgr = m.id
Juntar uma tabela a ela mesma
USING (user_id)
Juntar por coluna de mesmo nome
UNION / UNION ALL
Combinar conjuntos de resultados
SELECT u.*, o.total FROM users u JOIN orders o
Apelidar tabelas para clareza

Agregação

9
COUNT(*)
Contar linhas
SUM(amount)
Total de uma coluna numérica
AVG(price)
Valor médio
MIN(price), MAX(price)
Menor e maior
GROUP BY country
Agrupar linhas para agregação
HAVING COUNT(*) > 5
Filtrar grupos agregados
GROUP_CONCAT(name)
Concatenar valores agrupados
COUNT(DISTINCT city)
Contar valores únicos
ROW_NUMBER() OVER (ORDER BY id)
Ranqueamento com função de janela

Modificar dados

8
INSERT INTO users (name) VALUES ('Sam');
Inserir uma única linha
INSERT INTO users (name) VALUES ('A'),('B');
Inserir várias linhas
UPDATE users SET active = 1 WHERE id = 5;
Atualizar linhas correspondentes
DELETE FROM users WHERE id = 5;
Excluir linhas correspondentes
TRUNCATE TABLE logs;
Remover todas as linhas rapidamente
INSERT ... ON DUPLICATE KEY UPDATE
Upsert por chave única
REPLACE INTO users ...
Excluir + inserir em conflito
INSERT IGNORE INTO ...
Pular linhas que dariam erro

Esquema / DDL

9
CREATE TABLE users (id INT PRIMARY KEY);
Criar uma nova tabela
AUTO_INCREMENT
Coluna de numeração automática
ALTER TABLE users ADD COLUMN age INT;
Adicionar uma coluna
ALTER TABLE users DROP COLUMN age;
Remover uma coluna
ALTER TABLE users MODIFY name VARCHAR(100);
Alterar o tipo de uma coluna
DROP TABLE IF EXISTS users;
Excluir uma tabela
FOREIGN KEY (user_id) REFERENCES users(id)
Referenciar outra tabela
ON DELETE CASCADE
Excluir em cascata para os filhos
CREATE TABLE t2 LIKE t1;
Copiar a estrutura de uma tabela

Índices e chaves

8
PRIMARY KEY (id)
Identificador único de linha
UNIQUE (email)
Forçar valores únicos
CREATE INDEX idx_name ON users (name);
Acelerar buscas em uma coluna
CREATE INDEX idx_ab ON t (a, b);
Índice composto (multicoluna)
DROP INDEX idx_name ON users;
Remover um índice
FULLTEXT (body)
Índice de busca de texto completo
EXPLAIN SELECT ...;
Mostrar o plano de consulta
SHOW INDEX FROM users;
Listar índices de uma tabela

Tipos de dados

9
INT, BIGINT, TINYINT
Tipos inteiros por tamanho
DECIMAL(10, 2)
Números exatos de ponto fixo
VARCHAR(255)
String de tamanho variável
TEXT, LONGTEXT
Grandes blocos de texto
DATE, DATETIME, TIMESTAMP
Tipos de data e hora
BOOLEAN (TINYINT(1))
True/false armazenado como 0/1
JSON
Coluna nativa de documento JSON
ENUM('a', 'b')
Um de um conjunto fixo de valores
UNSIGNED
Modificador numérico não negativo

Type sizes & limits

20
TINYINT
1 byte: -128..127 (0..255 UNSIGNED)
SMALLINT
2 bytes: -32,768..32,767 (0..65,535)
MEDIUMINT
3 bytes: -8.39M..8.39M (0..16.78M)
INT
4 bytes: -2.15B..2.15B (0..4.29B)
BIGINT
8 bytes: ±9.22×10^18 (0..1.84×10^19)
DECIMAL(M, D)
Exact: M up to 65 digits, D up to 30
FLOAT / DOUBLE
4 / 8 bytes approximate floating point
CHAR(M)
Fixed length, 0..255 characters
VARCHAR(M)
0..65,535 bytes (shared 64KB row limit)
TINYTEXT
Up to 255 bytes (~255 chars)
TEXT
Up to 65,535 bytes (64 KB)
MEDIUMTEXT
Up to 16,777,215 bytes (16 MB)
LONGTEXT
Up to 4,294,967,295 bytes (4 GB)
BLOB types
TINY/—/MEDIUM/LONG: 255B..4GB (binary)
JSON
Stored as LONGBLOB, up to ~4 GB
ENUM / SET
ENUM: 65,535 members; SET: 64 members
DATE
1000-01-01 to 9999-12-31 (3 bytes)
DATETIME
1000 to 9999, microseconds (5–8 bytes)
TIMESTAMP
1970-01-01 to 2038-01-19 UTC (4 bytes)
TIME / YEAR
±838:59:59 / 1901..2155

Funções

9
NOW(), CURDATE()
Data-hora / data atual
DATE_FORMAT(d, '%Y-%m-%d')
Formatar uma data
DATEDIFF(a, b)
Dias entre duas datas
CONCAT(a, ' ', b)
Juntar strings
COALESCE(a, b, 'n/a')
Primeiro valor não nulo
IFNULL(x, 0)
Substituir null por um padrão
CASE WHEN x > 0 THEN '+' ELSE '-' END
Expressão condicional
CAST(x AS CHAR)
Converter o tipo de um valor
ROUND(x, 2)
Arredondar para decimais

Transações e administração

9
START TRANSACTION;
Iniciar uma transação
COMMIT;
Persistir a transação
ROLLBACK;
Desfazer a transação
SAVEPOINT sp1;
Definir um ponto de rollback
SHOW TABLES;
Listar tabelas do banco de dados
DESCRIBE users;
Mostrar a estrutura de uma tabela
SHOW PROCESSLIST;
Listar conexões ativas
GRANT ALL ON db.* TO 'u'@'%';
Conceder privilégios ao usuário
mysqldump -u root db > db.sql
Fazer backup de um banco de dados (CLI)

Nenhuma entrada corresponde a “:q”.


Precisa de ajuda?
Encontrou um problema com esta ferramenta? Avise a nossa equipa.
Relatar um problema

Adicione esta ferramenta gratuita ao seu próprio site — copie e cole o código abaixo.