JSON Support in MySQL
From the MySQL Advanced Features cheat sheet · MySQL Data Types & Storage · verified Jul 2026
JSON Support
Working with JSON data in MySQL 5.7+
sql
-- Create table with JSON
CREATE TABLE events (
id INT AUTO_INCREMENT PRIMARY KEY,
data JSON NOT NULL
);
-- Insert JSON
INSERT INTO events (data) VALUES
('{"user": "john", "action": "login"}'),
(JSON_OBJECT('user', 'jane', 'action', 'purchase'));
-- Query JSON
SELECT data->>'$.user' AS username
FROM events
WHERE data->>'$.action' = 'login';
-- Update JSON field
UPDATE events
SET data = JSON_SET(data, '$.status', 'processed')
WHERE id = 1;
-- DETAILED_TAB:
-- JSON functions
SELECT
JSON_EXTRACT(data, '$.user') AS user,
JSON_TYPE(data),
JSON_VALID(data),
JSON_LENGTH(data),
JSON_KEYS(data)
FROM events;
-- JSON array operations
SELECT data->>'$.items[0]' AS first_item
FROM events
WHERE JSON_CONTAINS(data, '"book"', '$.items');
-- Create generated column from JSON
ALTER TABLE events
ADD COLUMN username VARCHAR(255)
GENERATED ALWAYS AS (data->>'$.user') STORED,
ADD INDEX idx_username(username);
-- JSON aggregation
SELECT JSON_ARRAYAGG(data) AS all_events
FROM events;💡 JSON support added in MySQL 5.7
📌 ->> extracts and unquotes, -> keeps quotes
⚡ Index generated columns for JSON queries
🟢 Essential for flexible schema needs
⚠️ JSON validation happens on insert
jsonnosql