Folha de consulta MySQL
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
10SELECT * 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
8INNER 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
9COUNT(*)
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
8INSERT 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
9CREATE 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
8PRIMARY 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
9INT, 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
20TINYINT
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
9NOW(), 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
9START 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.