MySQL le permite almacenar datos JSON en tipo de datos JSON nativo desde la versión 5.7.8. Esto le permite almacenar documentos JSON fácilmente y extraer elementos de datos JSON sin conversión de datos. En este artículo, veremos cómo almacenar datos JSON en MySQL.
El tipo de datos JSON de MySQL le permite almacenar datos JSON de modo que pueda leerlos o buscar valores fácilmente en ellos mediante una clave o un índice de matriz, lo que lo hace realmente rápido. No es necesario convertir texto a JSON o viceversa para consultar datos.
Cómo almacenar datos JSON en MySQL
Veremos cómo almacenar datos JSON en MySQL y también cómo consultar columnas con tipo de datos JSON.
Esta es la sintaxis para definir una columna JSON
column_name JSON
Tenga en cuenta que una columna de tipo de datos JSON no puede tener un valor predeterminado ni un índice.
Lea también:Cómo comparar valores nulos en MySQL
Ejemplo de tipo de datos MySQL JSON
Aquí hay un ejemplo de una tabla usuarios(id, detalles) donde id es un número entero y clave principal mientras que detalles es una columna de tipo de datos JSON.
create table users( id int auto_increment primary key, details json );
Cómo insertar JSON en MySQL
Aquí está la consulta SQL para almacenar el documento JSON en MySQL.
insert into users(details) values( '{ "page": "/" , "name": "Safari", "os": "Mac", "spend": 100, "resolution": { "x": 1920, "y": 1080 } }' ), ( '{ "page": "/products", "name": "Chrome", "os": "Windows", "spend": 150, "resolution": { "x": 1680, "y": 1050 } }' ), ( '{ "page": "/shoes", "name": "Firefox", "os": "Windows", "spend": 200, "resolution": { "x": 1280, "y": 800 } }' );
Extraeremos datos de columnas JSON utilizando el operador de ruta de columna (->)
Aquí hay un ejemplo para recuperar los nombres de navegador para cada usuario.
mysql> select id, details->'$.name' details from users; +----+-----------+ | id | details | +----+-----------+ | 1 | "Safari" | | 2 | "Chrome" | | 3 | "Firefox" | +----+-----------+ 3 rows in set (0.00 sec)
Verá que las columnas de detalles tienen comillas dobles. Si desea eliminar las comillas dobles, use el operador ->> en su lugar
mysql> select id, details->>'$.name' details from users; +----+-----------+ | id | details | +----+-----------+ | 1 | Safari | | 2 | Chrome | | 3 | Firefox | +----+-----------+ 3 rows in set (0.00 sec)
También puede agregar funciones de agregación y cláusula GROUP BY de datos JSON. Aquí hay un ejemplo para contar el número de navegadores en nuestros datos.
mysql> SELECT details->>'$.name' detail, count(detail) FROM users GROUP BY details->>'$.name';
Verá el siguiente resultado
+---------+----------------+ | details | count(details) | +---------+----------------+ | Safari | 1 | | Firefox | 1 | | Chrome | 1 | +---------+----------------+ 3 rows in set (0.02 sec)
Del mismo modo, también puede usar datos JSON en la cláusula WHERE. Este es un ejemplo para seleccionar datos con gasto> 100
mysql> SELECT id, SUM(details->>'$.spend') spend FROM users WHERE details->>'$.spend' > 100 GROUP BY id;
Con suerte, este artículo lo ayudará a trabajar con datos JSON en MySQL. Ubiq facilita la visualización de datos y la supervisión en paneles en tiempo real. Prueba Ubiq gratis.