MySQL
JSON
Ricerca…
introduzione
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:
- 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 - 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 ;