久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

mysql5.7新增加的JSON數據類型特征介紹

下面一起來了解下MySQL5.7新增加的JSON數據類型特征,相信大家看完肯定會受益匪淺,文字在精不在多,希望mysql5.7新增加的JSON數據類型特征這篇短內容是你想要的。 

創新互聯專業為企業提供青田網站建設、青田做網站、青田網站設計、青田網站制作等企業網站建設、網頁設計與制作、青田企業網站模板建站服務,10余年青田做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。

一、json結構

創建測試表

CREATE TABLE `article` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `category` json NOT NULL,
  `tags` json NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

分析:article表中的字段category與tags均為json類型

填寫測試數據

INSERT INTO `article` VALUES 
(1,'{\"id\": 1, \"name\": \"php\"}','[\"php\", \"mysql\", \"linux\", \"nginx\", \"redis\", \"memcache\", \"MongoDB\"]'),
(2,'{\"id\": 2, \"name\": \"java\"}','[\"java\", \"mysql\", \"oracel\", \"linux\", \"nginx\", \"redis\", \"memcache\", \"mongodb\"]'),
(3,'{\"id\": \"3\", \"name\": \"c#\"}','[\"c\", \"c++\", \"OS\", \"linux\", \"unix\", \"IBM\"]');

總體預覽

mysql5.7新增加的JSON數據類型特征介紹

二、json查詢

select id,json_extract(category,'$.name') as name from test.article;#提取json字段里面的信息

# column->path形式 訪問json中的元素 category->'$.name'
select id,category->'$.name' as name from test.article;#提取json字段里面的信息(訪問json中的元素 category->'$.name')
select id,json_unquote(json_extract(category,'$.name')) as name from test.article;#提取json字段里面的信息,json_unqoute去雙引號
select id,json_unquote(category->'$.name') as name from test.article;#提取json字段里面的信息,json_unqoute去雙引號
select id,category->>'$.name' as name from test.article;

select * from test.article where category='{"id": 1, "name": "php"}'; #json不同于字符串,不能當作字符串做比較

select * from test.article where category=cast('{"id": 1, "name": "php"}' as JSON); #通過CAST將字符串轉換成JSON形式


select * from test.article where category->'$.name'='java';

select * from test.article where category->>'$.name'='java';

#JSON 中的元素搜索是嚴格區分變量類型的,比如說整型和字符串是嚴格區分的

select * from test.article where category->'$.id'='2';#字符號串

select * from test.article where category->'$.id'=2;#×××

select * from test.article where category->'$.id'='3';#字符號串


select * from test.article where json_extract(category,'$.id')='3';#字符號串

select * from test.article where json_contains(category,'2','$.id');#整數

select * from test.article where json_contains(category,'"3"','$.id');#字符號串


select * from test.article where json_contains(tags,'"linux"');#字符號串

2、查詢json格式的字段
mysql> select jsn_extract(data, '.name′),jsnextract(data,′.address') from user;  
+-----------------------------+-------------------------------+  
| jsn_extract(data, '.name′)|jsnextract(data,′.address') |  
+-----------------------------+-------------------------------+  
| "David" | "Shangahai" |  
| "Amy" | NULL |  
+-----------------------------+-------------------------------+  
2 rows in set (0.00 sec) 
3、給json格式的某個鍵字段創建索引。首先創建虛擬列,之后在改虛擬列上創建索引。
mysql> ALTER TABLE user ADD user_name varchar(128)  
    -> GENERATED ALWAYS AS (jsn_extract(data,'$.name')) VIRTUAL;  
Query OK, 0 rows affected (0.01 sec)  
Records: 0 Duplicates: 0 Warnings: 0  
   
mysql> select user_name from user;  
+-----------+  
| user_name |  
+-----------+  
| "Amy"     |  
| "David"   |  
+-----------+  
2 rows in set (0.00 sec)  
   
mysql> alter table user add index idx_username (user_name);  
Query OK, 2 rows affected (0.01 sec)  
Records: 2  Duplicates: 0  Warnings: 0  
4、之后通過虛擬列名對json特定列進行索引查詢:
mysql> explain select * from user where user_name='"Amy"'\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: user
   partitions: NULL
         type: ref
possible_keys: idx_username
          key: idx_username
      key_len: 131
          ref: const
         rows: 1
     filtered: 100.00
        Extra: NULL
1 row in set, 1 warning (0.00 sec)

三、json更新

更新 JSON

如果是整個 json 更新的話,和插入時類似的。

mysql> UPDATE lnmp SET tags = '[1, 3, 4]' WHERE id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT * FROM lnmp;
+----+------------------------------+-----------+ 
| id | category                     | tags      | 
+----+------------------------------+-----------+ 
| 1  | {"id": 1, "name": "lnmp.cn"} | [1, 3, 4] | 
| 2  | {"id": 2, "name": "php.net"} | [1, 3, 5] |
+----+------------------------------+-----------+
2 rows in set (0.00 sec)

但如果要更新 JSON 下的元素,MySQL 并不支持 column->path 的形式

mysql> UPDATE lnmp SET category->'$.name' = 'lnmp', tags->'$[0]' = 2 WHERE id = 1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '->'$.name' = 'lnmp', tags->'$[0]' = 2 WHERE id = 1' at line 1

則可能要用到以下幾個函數

JSON_INSERT() 插入新值,但不會覆蓋已經存在的值

mysql> UPDATE lnmp SET category = JSON_INSERT(category, '$.name', 'lnmp', '$.url', 'www.lnmp.cn') WHERE id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT * FROM lnmp;
+----+----------------------------------------------------+-----------+
| id | category                                           | tags      |
+----+----------------------------------------------------+-----------+
|  1 | {"id": 1, "url": "www.lnmp.cn", "name": "lnmp.cn"} | [1, 3, 4] |
|  2 | {"id": 2, "name": "php.net"}                       | [1, 3, 5] |
+----+----------------------------------------------------+-----------+
2 rows in set (0.00 sec)

可以看到 name 沒有被修改,但新元素 url 已經添加進去

JSON_SET() 插入新值,并覆蓋已經存在的值

mysql> UPDATE lnmp SET category = JSON_SET(category, '$.host', 'www.lnmp.cn', '$.url', 'http://www.lnmp.cn') WHERE id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT * FROM lnmp;
+----+----------------------------------------------------------------------------------+-----------+
| id | category                                                                         | tags      |
+----+----------------------------------------------------------------------------------+-----------+
|  1 | {"id": 1, "url": "http://www.lnmp.cn", "host": "www.lnmp.cn", "name": "lnmp.cn"} | [1, 3, 4] |
|  2 | {"id": 2, "name": "php.net"}                                                     | [1, 3, 5] |
+----+----------------------------------------------------------------------------------+-----------+
2 rows in set (0.00 sec)

可以看到 host 已經插入,url 已經被修改

JSON_REPLACE() 只替換存在的值

mysql> UPDATE lnmp SET category = JSON_REPLACE(category, '$.name', 'php', '$.url', 'http://www.php.net') WHERE id = 2;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT * FROM lnmp;
+----+----------------------------------------------------------------------------------+-----------+
| id | category                                                                         | tags      |
+----+----------------------------------------------------------------------------------+-----------+
|  1 | {"id": 1, "url": "http://www.lnmp.cn", "host": "www.lnmp.cn", "name": "lnmp.cn"} | [1, 3, 4] |
|  2 | {"id": 2, "name": "php"}                                                         | [1, 3, 5] |
+----+----------------------------------------------------------------------------------+-----------+
2 rows in set (0.00 sec)

可以看到 name 已經被替換,url 不存在被忽略。

JSON_REMOVE() 刪除 JSON 元素

mysql> UPDATE lnmp SET category = JSON_REMOVE(category, '$.url', '$.host') WHERE id = 1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT * FROM lnmp;
+----+------------------------------+-----------+
| id | category                     | tags      |
+----+------------------------------+-----------+
|  1 | {"id": 1, "name": "lnmp.cn"} | [1, 3, 4] |
|  2 | {"id": 2, "name": "php"}     | [1, 3, 5] |
+----+------------------------------+-----------+
2 rows in set (0.00 sec)

更多函數請參考:http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html

MySQL JSON 在 PHP 中的表現

雖然在 MySQL 是個JSON 類型,但實際在 PHP 應用中返回的是 JSON 格式的字符串

array(2) {
  [0]=>
  array(3) {
    ["id"]=>
    string(1) "1"
    ["category"]=>
    string(28) "{"id": 1, "name": "lnmp.cn"}"
    ["tags"]=>
    string(9) "[1, 3, 4]"
  }
  [1]=>
  array(3) {
    ["id"]=>
    string(1) "2"
    ["category"]=>
    string(24) "{"id": 2, "name": "php"}"
    ["tags"]=>
    string(9) "[1, 3, 5]"
  }
}

看完mysql5.7新增加的JSON數據類型特征這篇文章后,很多讀者朋友肯定會想要了解更多的相關內容,如需獲取更多的行業信息,可以關注我們的行業資訊欄目。

新聞標題:mysql5.7新增加的JSON數據類型特征介紹
網頁URL:http://www.js-pz168.com/article36/ihicsg.html

成都網站建設公司_創新互聯,為您提供自適應網站全網營銷推廣網站設計GoogleApp開發外貿網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

外貿網站制作
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
欧美一区二区三区四区在线观看| 日韩美女精品在线| 亚洲人午夜精品天堂一二香蕉| 天堂va蜜桃一区二区三区漫画版| 国产不卡在线视频| 麻豆传媒一区二区| 欧美日韩国产综合草草| 国产日韩高清在线| 日韩电影在线免费看| www.亚洲在线| 日本一区二区精品视频| 欧美一区二区三区视频免费| 国产精品超碰97尤物18| 蜜桃传媒麻豆第一区在线观看| 91在线小视频| 亚洲人成网站在线观看播放| 精品国产一区a| 亚洲成人三级小说| 99久久99久久精品免费观看 | 日韩精品中文字幕一区二区三区| 亚洲天堂精品在线观看| 韩国av一区二区三区在线观看| 国产乱码精品一区二区三区卡 | 国产专区一区二区| 欧美日韩不卡一区二区| 国产精品久久777777| 国产一区在线不卡| 欧美亚洲免费高清在线观看| 日韩亚洲欧美中文三级| 亚洲影视在线播放| 9色porny自拍视频一区二区| 在线亚洲美日韩| 亚洲国产经典视频| 国产最新精品精品你懂的| 欧美日产一区二区三区在线观看| 717成人午夜免费福利电影| 亚洲精品成人天堂一二三| 成人一区二区三区视频| 亚洲欧美影院| 国产精品天干天干在线综合| 黄色小说综合网站| 日本一区二区免费看| www亚洲一区| 麻豆国产欧美日韩综合精品二区| 精品乱码一区二区三区| 日韩欧美国产一区二区三区| 日日摸夜夜添夜夜添亚洲女人| 国产精品对白一区二区三区| 在线播放视频一区| 亚洲午夜av在线| 高清视频一区| 欧美一区二区黄| 首页欧美精品中文字幕| 精品国产一区二区三区日日嗨| 日韩欧美黄色影院| 看电影不卡的网站| 日本一区二区三区四区在线观看| 欧美mv日韩mv亚洲| 久久国产精品无码网站| 日韩偷拍一区二区| 国产精品水嫩水嫩| thepron国产精品| 在线观看日韩毛片| 亚洲国产成人av网| 精品国产一区二区三区麻豆免费观看完整版| 日韩一区二区三区电影| 蓝色福利精品导航| 亚洲视频sss| 亚洲精品欧美激情| 国产日韩欧美精品| 久久综合久久综合九色| 国产精品亚洲综合一区在线观看| 色综合久久综合网欧美综合网 | 日韩经典中文字幕一区| 老司机精品福利在线观看| 国产亚洲精品aa午夜观看| 国产精品18久久久久久久网站| 日本高清无吗v一区| 亚洲一区二区三区四区在线观看 | 国产婷婷色一区二区三区四区| 国产成人精品免费视频网站| 欧美在线三级电影| 日本欧美一区二区| 午夜久久资源| 一区二区三区在线观看国产| 久久99精品国产99久久| 中文字幕av一区二区三区高 | 欧美成人a∨高清免费观看| 国产在线精品国自产拍免费| 色呦呦一区二区三区| 亚洲福利一区二区三区| 欧美性xxxx69| 亚洲男同性恋视频| 久久亚洲综合网| 亚洲视频精选在线| 久久久久久艹| 亚洲日本一区二区三区| 久久精品午夜一区二区福利| 国产精品萝li| 国产在线观看一区| 国产精品激情偷乱一区二区∴| 成人一区二区三区四区| 国产日韩三级在线| 国产超碰91| 国产精品亲子乱子伦xxxx裸| 国产精品一区二区三区四区五区| 欧美激情资源网| 国产另类第一区| 最新中文字幕一区二区三区| 精品久久一区二区三区蜜桃| 最新欧美精品一区二区三区| 美国av一区二区三区| 亚洲精品欧美在线| 日韩中文字幕一区| 性久久久久久久| 综合久久国产| 裸体一区二区三区| 成人高清伦理免费影院在线观看| 91麻豆精品国产91久久久资源速度| 国产一区二区三区观看| 7777精品伊人久久久大香线蕉完整版 | 在线电影一区二区三区| 国产精品白丝jk白祙喷水网站 | 日韩欧美亚洲v片| 五月婷婷久久丁香| 欧美综合一区二区三区| 国产一区欧美一区| 欧美成人一区二区三区在线观看| 99精品国产视频| 亚洲国产成人私人影院tom| 久久av一区二区| 亚洲国产一区二区视频| 色一情一伦一子一伦一区| 激情综合色综合久久综合| 欧美一区二区成人| 91女人视频在线观看| 国产精品久久久久一区二区三区共| 好吊色欧美一区二区三区| 一区二区成人在线| 在线视频国内自拍亚洲视频| 国产精品自在欧美一区| 久久综合九色综合97婷婷女人| 国产精品免费在线播放| 亚洲一区在线看| 91成人网在线| 丁香网亚洲国际| 中文字幕国产一区二区| 日本黄网免费一区二区精品| 蜜臀精品一区二区三区在线观看| 91精品国产综合久久婷婷香蕉| 91美女在线看| 亚洲综合久久久久| 欧美性videosxxxxx| hitomi一区二区三区精品| 中文字幕在线不卡视频| 亚洲欧美成人一区| 国产成人精品免费网站| 国产精品色婷婷久久58| 亚洲看片网站| 粉嫩av一区二区三区| 国产精品国产三级国产aⅴ原创| 翔田千里亚洲一二三区| 国产精品一区二区不卡| 中文天堂在线一区| 中文字幕在线中文字幕日亚韩一区| 国产一本一道久久香蕉| 欧美激情资源网| 在线视频不卡一区二区三区| 国产精品一二三区在线| 国产精品久久久久精k8| 色屁屁一区二区| 99视频有精品| 亚洲国产日韩综合久久精品| 欧美精品在线视频| 国产一区自拍视频| 久久精品免费观看| 国产欧美日韩一区二区三区在线观看| 日韩av电影免费观看| 国产精品18久久久久久久久久久久| 中文一区一区三区高中清不卡| 色综合久久六月婷婷中文字幕| 成人av免费观看| 亚洲尤物在线视频观看| 日韩一区二区视频| 欧美日韩综合精品| 国产成人aaa| 亚洲一区二区在线观看视频| 欧美一区二区三区爱爱| 久久天天狠狠| 国产福利一区二区三区视频| 亚洲色图视频网| 91精品国产91久久久久久最新毛片| 国产一区二区精品免费| 久久99精品国产麻豆不卡| 国产精品系列在线| 欧美挠脚心视频网站| 欧美日本韩国国产| 成人福利视频网站| 午夜精品福利视频网站| 久久久精品国产免大香伊|