中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL 中怎么操作JSON數據類型

發布時間:2021-07-26 15:28:05 來源:億速云 閱讀:307 作者:Leah 欄目:數據庫

今天就跟大家聊聊有關MySQL 中怎么操作JSON數據類型,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

創建一個 JSON 字段的表

首先先創建一個表,這個表包含一個 json 格式的字段:

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

上面的語句,主要注意 json_col 這個字段,指定的數據類型是 JSON。

插入一條簡單的 JSON 數據

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

上面這個 SQL 語句,主要注意 VALUES 后面的部分,由于 json 格式的數據里,需要有雙引號來標識字符串,所以,VALUES  后面的內容需要用單引號包裹。

插入一條復雜的 JSON 數據

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

這地方,我們插入了一個 json 數組。主要還是注意單引號和雙引號的問題。

修改 JSON 數據

之前的例子中,我們插入了幾條 JSON 數據,但是如果我們想修改 JSON 數據里的某個內容,怎么實現了?比如我們向 variations  數組里增加一個元素,可以這樣:

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

這個 SQL 語句中,$ 符合代表 JSON 字段,通過. 號索引到 variations 字段,然后通過 JSON_ARRAY_APPEND  函數增加一個元素。現在我們執行查詢語句:

SELECT * FROM myjson

得到的結果是:

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

關于 MySQL 中,JSON 數據的獲取方法,參照官方鏈接 JSON Path Syntax

創建索引

MySQL 的 JSON  格式數據不能直接創建索引,但是可以變通一下,把要搜索的數據單獨拎出來,單獨一個數據列,然后在這個字段上鍵一個索引。下面是官方的例子:

mysql> CREATE TABLE jemp (     ->     c JSON,     ->     g INT GENERATED ALWAYS AS (c-> "$.id" ),     ->     INDEX i (g)     -> ); Query  OK,  0  rows affected ( 0.28  sec) mysql> INSERT INTO jemp (c) VALUES      >   ( '{"id": "1", "name": "Fred"}' ), ( '{"id": "2", "name": "Wilma"}' ),      >   ( '{"id": "3", "name": "Barney"}'), ('{"id": "4", "name": "Betty"}' ); Query  OK,  4  rows affected ( 0.04  sec) Records :  4 Duplicates:  0 Warnings :  0 mysql> SELECT c->> "$.name"  AS name      >     FROM jemp WHERE g >  2 ; +--------+ | name   | +--------+ |  Barney  | |  Betty   | +--------+ 2  rows  in set ( 0.00  sec) mysql> EXPLAIN SELECT c->> "$.name"  AS name      >    FROM jemp WHERE g >  2 \G ***************************  1.  row ***************************            id:  1   select_type: SIMPLE         table: jemp    partitions: NULL          type: range possible_keys: i           key: i       key_len:  5                     ref : NULL          rows:  2      filtered: 100.00                  Extra:  Using where 1  row  in set ,  1  warning ( 0.00  sec) mysql> SHOW WARNINGS\G ***************************  1.  row ***************************    Level :  Note     Code :  1003 Message :  /* select#1 */ select  json_unquote(json_extract( `test` . `jemp` . `c` , '$.name')) AS  `name` from `test` . `jemp`where  ( `test` . `jemp` . `g`  >  2 ) 1 row  in set ( 0.00  sec)

這個例子很簡單,就是把 JSON 字段里的 id 字段,單獨拎出來成字段 g,然后在字段 g 上做索引,查詢條件也是在字段 g 上。

字符串轉 JSON 格式

把 json 格式的字符串轉換成 MySQL 的 JSON 類型:

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

所有 MYSQL JSON 函數

Name  Description JSON_APPEND()  Append data to JSON document JSON_ARRAY()  Create JSON array JSON_ARRAY_APPEND()  Append data to JSON document JSON_ARRAY_INSERT()  Insert into JSON array-> Return value from JSON column after evaluating path; equivalent to JSON_EXTRACT(). JSON_CONTAINS()  Whether JSON document contains specific object at path JSON_CONTAINS_PATH()  Whether JSON document contains any data at path JSON_DEPTH()  Maximum depth of JSON document JSON_EXTRACT()  Return data from JSON document->> Return value from JSON column after evaluating path and unquoting the result; equivalent to JSON_UNQUOTE(JSON_EXTRACT()). JSON_INSERT()  Insert data into JSON document JSON_KEYS()  Array of keys from JSON document JSON_LENGTH()  Number of elements in JSON document JSON_MERGE()  Merge JSON documents, preserving duplicate keys. Deprecated synonym for JSON_MERGE_PRESERVE() JSON_MERGE_PRESERVE()  Merge JSON documents, preserving duplicate keys JSON_OBJECT()  Create JSON object JSON_QUOTE()  Quote JSON document JSON_REMOVE()  Remove data from JSON document JSON_REPLACE()  Replace values in JSON document JSON_SEARCH()  Path to value within JSON document JSON_SET()  Insert data into JSON document JSON_TYPE()  Type of JSON value JSON_UNQUOTE()  Unquote JSON value JSON_VALID()  Whether JSON value is valid

看完上述內容,你們對MySQL 中怎么操作JSON數據類型有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洛南县| 华容县| 沧源| 临沧市| 图木舒克市| 安陆市| 嘉鱼县| 讷河市| 嵊州市| 桦南县| 阿图什市| 毕节市| 永新县| 永和县| 贞丰县| 无棣县| 且末县| 安远县| 定安县| 五莲县| 西畴县| 朝阳区| 永吉县| 莒南县| 南靖县| 永丰县| 松滋市| 禄丰县| 宜君县| 自治县| 怀宁县| 梅河口市| 神池县| 武邑县| 贞丰县| 高州市| 北票市| 司法| 新邵县| 泰顺县| 得荣县|