Tags: mariadb, mysql, compatibility, sequence, json, analyze, uuid, database Last updated: 2026-06-26

MariaDB Cheatsheet

Quick Reference

ConceptMariaDB
SEQUENCECREATE SEQUENCE s START WITH 1
JSONJSON_VALUE(), JSON_QUERY()
ANALYZEANALYZE FORMAT=JSON SELECT ...
UUIDNative UUID type (10.7+)
Temporal tablesWITH SYSTEM VERSIONING
RETURNINGINSERT ... RETURNING * (10.5+)

MySQL Compatibility

AreaMySQLMariaDB
Default engineInnoDB (8.0)InnoDB (10.2+)
Window functions8.0+10.2+
CTEs8.0+10.2+
JSONFull in 8.0Full (10.2+)
UUID36-char stringNative type (10.7+)
SequencesNoCREATE SEQUENCE
CHECK constraints8.0.16+10.2+
Invisible columns8.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