← Cheatsheets
Tags: mariadb, mysql, compatibility, sequence, json,
analyze, uuid, database
Last updated: 2026-06-26
MariaDB Cheatsheet
Quick Reference
| Concept | MariaDB |
| SEQUENCE | CREATE SEQUENCE s START WITH 1 |
| JSON | JSON_VALUE(), JSON_QUERY() |
| ANALYZE | ANALYZE FORMAT=JSON SELECT ... |
| UUID | Native UUID type (10.7+) |
| Temporal tables | WITH SYSTEM VERSIONING |
| RETURNING | INSERT ... RETURNING * (10.5+) |
MySQL Compatibility
| Area | MySQL | MariaDB |
| Default engine | InnoDB (8.0) | InnoDB (10.2+) |
| Window functions | 8.0+ | 10.2+ |
| CTEs | 8.0+ | 10.2+ |
| JSON | Full in 8.0 | Full (10.2+) |
| UUID | 36-char string | Native type (10.7+) |
| Sequences | No | CREATE SEQUENCE |
| CHECK constraints | 8.0.16+ | 10.2+ |
| Invisible columns | 8.0.23+ | 10.3+ |
SEQUENCE
CREATE SEQUENCE user_id_seq
START WITH 1000 INCREMENT BY 1 CYCLE;
SELECT NEXT VALUE FOR user_id_seq;
INSERT INTO users VALUES
(NEXT VALUE FOR user_id_seq, 'Max');
ALTER TABLE users MODIFY id INT
DEFAULT (NEXT VALUE FOR user_id_seq);
JSON Functions
SELECT JSON_VALUE(doc, '$.name') FROM t;
SELECT JSON_QUERY(doc, '$.address') FROM t;
SELECT JSON_EXISTS(doc, '$.phone') FROM t;
SELECT JSON_SET(doc, '$.name', 'Max');
SELECT JSON_REMOVE(doc, '$.temp');
SELECT JSON_ARRAYAGG(name) FROM users;
SELECT JSON_OBJECTAGG(id, name) FROM users;
ANALYZE Statement
ANALYZE SELECT u.name, COUNT(*)
FROM users u JOIN orders o
ON u.id = o.user_id
WHERE o.status = 'completed'
GROUP BY u.name;
ANALYZE FORMAT=JSON SELECT ...;
UUID (10.7+)
CREATE TABLE events (
id UUID DEFAULT UUID() PRIMARY KEY,
payload TEXT
); -- 16 bytes internally vs 36 chars
System-Versioned Tables
CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10,2),
valid_from TIMESTAMP(6) AS ROW START,
valid_to TIMESTAMP(6) AS ROW END,
PERIOD FOR SYSTEM_TIME(valid_from, valid_to)
) WITH SYSTEM VERSIONING;
SELECT * FROM products
FOR SYSTEM_TIME AS OF '2026-01-01';
Tips
- Use
ANALYZE FORMAT=JSON for actual
row counts and timings per operation.
- Prefer native
UUID type (10.7+) over
CHAR(36) — 60% smaller index footprint.
RETURNING (10.5+) eliminates
LAST_INSERT_ID().
- MariaDB JSON functions follow the SQL/JSON standard — more
portable than MySQL operators.