Buscar..


Introducción

A partir de MySQL 5.7.8, MySQL es compatible con un tipo de datos JSON nativo que permite un acceso eficiente a los datos en documentos JSON (Notación de Objetos de JavaScript). https://dev.mysql.com/doc/refman/5.7/en/json.html

Observaciones

A partir de MySQL 5.7.8, MySQL se envía con un tipo JSON. Muchos desarrolladores han estado guardando datos JSON en columnas de texto durante un tiempo de registro, pero el tipo JSON es diferente, los datos se guardan en formato binario después de la validación. Eso evita la sobrecarga de analizar el texto en cada lectura.

Crear una tabla simple con una clave principal y un campo JSON

CREATE TABLE table_name (
    id INT NOT NULL AUTO_INCREMENT, 
    json_col JSON,
    PRIMARY KEY(id)
);

Insertar un simple JSON

INSERT INTO
    table_name (json_col) 
VALUES
    ('{"City": "Galle", "Description": "Best damn city in the world"}');

Eso es simple como se puede obtener, pero tenga en cuenta que debido a que las claves del diccionario JSON deben estar entre comillas dobles, todo debe estar entre comillas simples. Si la consulta tiene éxito, los datos se almacenarán en un formato binario.

Insertar datos mixtos en un campo JSON.

Esto inserta un diccionario json donde uno de los miembros es una matriz de cadenas en la tabla que se creó en otro ejemplo.

INSERT INTO myjson(dict) 
VALUES('{"opening":"Sicilian","variations":["pelikan","dragon","najdorf"]}');

Tenga en cuenta, una vez más, que debe tener cuidado con el uso de comillas simples y dobles. Todo el asunto tiene que estar envuelto en comillas simples.

Actualizando un campo JSON

En el ejemplo anterior vimos cómo se pueden insertar tipos de datos mixtos en un campo JSON. ¿Qué pasa si queremos actualizar ese campo? Vamos a agregar scheveningen a la matriz denominada variations en el ejemplo anterior.

UPDATE 
    myjson 
SET 
    dict=JSON_ARRAY_APPEND(dict,'$.variations','scheveningen') 
WHERE 
    id = 2;

Notas:

  1. La matriz $.variations en nuestro diccionario json. El símbolo $ representa la documentación de json. Para obtener una explicación completa de las rutas json reconocidas por mysql, consulte https://dev.mysql.com/doc/refman/5.7/en/json-path-syntax.html
  2. Dado que aún no tenemos un ejemplo sobre la consulta mediante los campos json, este ejemplo utiliza la clave principal.

Ahora si hacemos SELECT * FROM myjson veremos

+----+-----------------------------------------------------------------------------------------+
| id | dict                                                                                    |
+---+-----------------------------------------------------------------------------------------+
| 2  | {"opening": "Sicilian", "variations": ["pelikan", "dragon", "najdorf", "scheveningen"]} |
+----+-----------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

Datos CAST a tipo JSON

Esto convierte las cadenas json válidas al tipo MySQL JSON:

 SELECT CAST('[1,2,3]' as JSON) ;
 SELECT CAST('{"opening":"Sicilian","variations":["pelikan","dragon","najdorf"]}' as JSON);

Crear Json Object y Array

JSON_OBJECT crea objetos JSON:

 SELECT JSON_OBJECT('key1',col1 , 'key2',col2 , 'key3','col3') as myobj;

JSON_ARRAY crea JSON Array también:

 SELECT JSON_ARRAY(col1,col2,'col3') as myarray;

Nota: myobj.key3 y myarray [2] son ​​"col3" como cadena fija.

También mezclan datos JSON:

 SELECT JSON_OBJECT("opening","Sicilian", "variations",JSON_ARRAY("pelikan","dragon","najdorf") ) as mymixed ;


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow