sql >> Base de Datos >  >> RDS >> Mysql

Cómo almacenar datos JSON en MySQL

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.