Ricerca…


introduzione

A partire da MySQL 5.7.8, MySQL supporta un tipo di dati JSON nativo che consente un accesso efficiente ai dati nei documenti JSON (JavaScript Object Notation). https://dev.mysql.com/doc/refman/5.7/en/json.html

Osservazioni

A partire da MySQL 5.7.8, MySQL viene fornito con un tipo JSON. Un sacco di sviluppatori hanno salvato i dati JSON nelle colonne di testo per un tempo di registrazione ma il tipo JSON è diverso, i dati vengono salvati in formato binario dopo la convalida. Questo evita il sovraccarico di analizzare il testo su ogni lettura.

Crea una tabella semplice con una chiave primaria e un campo JSON

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

Inserisci un semplice JSON

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

È semplice come si può ottenere, ma si noti che, poiché le chiavi del dizionario JSON devono essere circondate da virgolette doppie, l'intera cosa deve essere racchiusa tra virgolette singole. Se la query ha esito positivo, i dati verranno archiviati in un formato binario.

Inserisci dati misti in un campo JSON.

Questo inserisce un dizionario json in cui uno dei membri è una matrice di stringhe nella tabella creata in un altro esempio.

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

Nota, ancora una volta, che devi fare attenzione con l'uso di virgolette singole e doppie. Il tutto deve essere racchiuso tra virgolette singole.

Aggiornamento di un campo JSON

Nell'esempio precedente abbiamo visto come tipi di dati misti possono essere inseriti in un campo JSON. Cosa succede se vogliamo aggiornare quel campo? Stiamo andando ad aggiungere scheveningen alla matrice denominata variations nell'esempio precedente.

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

Gli appunti:

  1. L'array $.variations nel nostro dizionario json. Il simbolo $ rappresenta la documentazione di JSON. Per una spiegazione completa dei percorsi json riconosciuti da mysql, consultare https://dev.mysql.com/doc/refman/5.7/en/json-path-syntax.html
  2. Poiché non abbiamo ancora un esempio sull'interrogazione utilizzando i campi JSON, questo esempio utilizza la chiave primaria.

Ora se facciamo SELECT * FROM myjson vedremo

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

Dati CAST a tipo JSON

Converte stringhe json valide in tipo JSON MySQL:

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

Crea oggetti e matrici Json

JSON_OBJECT crea oggetti JSON:

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

JSON_ARRAY crea anche JSON Array:

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

Nota: myobj.key3 e myarray [2] sono "col3" come stringa fissa.

Anche dati JSON misti:

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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow