Sök…


Introduktion

Från och med MySQL 5.7.8 stöder MySQL en inbyggd JSON-datatyp som möjliggör effektiv åtkomst till data i JSON-dokument (JavaScript Object Notation). https://dev.mysql.com/doc/refman/5.7/en/json.html

Anmärkningar

Från och med MySQL 5.7.8, skickas MySQL med en JSON-typ. Många devs har sparat JSON-data i textkolumner under en loggtid men JSON-typen är annorlunda, data sparas i binärt format efter validering. På så sätt undviks överhead för att analysera texten på varje läst.

Skapa enkel tabell med en primär nyckel och JSON-fält

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

Sätt i en enkel JSON

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

Det är enkelt eftersom det kan bli, men observera att eftersom JSON-ordbokstangenter måste vara omgiven av dubbla citat bör hela saken lindas i enstaka citat. Om frågan lyckas lagras data i binärt format.

Infoga blandad data i ett JSON-fält.

Detta infogar en json-ordlista där en av medlemmarna är en rad strängar i tabellen som skapades i ett annat exempel.

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

Observera än en gång att du måste vara försiktig med att använda enstaka och dubbla citat. Hela saken måste förpackas i enstaka citat.

Uppdatering av ett JSON-fält

I föregående exempel såg vi hur blandade datatyper kan sättas in i ett JSON-fält. Tänk om vi vill uppdatera det fältet? Vi kommer att lägga till scheveningen i matrisen med namnet variations i föregående exempel.

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

Anmärkningar:

  1. $.variations i vår json-ordlista. Symbolen $ representerar json-dokumentationen. För en fullständig förklaring av json-vägar som erkänns av mysql, se https://dev.mysql.com/doc/refman/5.7/sv/json-path-syntax.html
  2. Eftersom vi ännu inte har ett exempel på fråga med jsonfält använder detta exempel den primära nyckeln.

Nu om vi SELECT * FROM myjson kommer vi att se

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

CAST-data till JSON-typ

Detta konverterar giltiga json-strängar till MySQL JSON-typ:

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

Skapa Json-objekt och array

JSON_OBJECT skapar JSON-objekt:

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

JSON_ARRAY skapar också JSON Array:

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

Obs: myobj.key3 och myarray [2] är "col3" som fast sträng.

Också blandade JSON-data:

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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow