MySQL json应用

json基础应用

CREATE TABLE test_json(id INT PRIMARY KEY ,u_name VARCHAR(20),info json);

insert插入json记录

插入json数组

INSERT INTO test_json VALUES(1,'tom',json_array(99,'测试',NULL,TRUE,CURTIME()));

mysql> SELECT * FROM test_json;
+----+--------+-----------------------------------------------+
| id | u_name | info                                          |
+----+--------+-----------------------------------------------+
|  1 | tom    | [99, "测试", null, true, "23:03:35.000000"]   |
+----+--------+-----------------------------------------------+
1 row in set (0.00 sec)

插入json对象(自动转换成k-v形式)

INSERT INTO test_json VALUES(2,'jerry',json_object('age',15,'time',NOW()));

mysql> SELECT * FROM test_json;
+----+--------+---------------------------------------------------+
| id | u_name | info                                              |
+----+--------+---------------------------------------------------+
|  1 | tom    | [99, "测试", null, true, "23:03:35.000000"]       |
|  2 | jerry  | {"age": 15, "time": "2020-06-19 23:07:24.000000"} |
+----+--------+---------------------------------------------------+
2 rows in set (0.00 sec)
INSERT INTO test_json VALUES(3,'jerry','{"city":"北京市","`time`":"2020-06-19 23:07:28"}');

mysql> SELECT * FROM test_json;
+----+--------+--------------------------------------------------------+
| id | u_name | info                                                   |
+----+--------+--------------------------------------------------------+
|  1 | tom    | [99, "测试", null, true, "23:03:35.000000"]            |
|  2 | jerry  | {"age": 15, "time": "2020-06-19 23:07:24.000000"}      |
|  3 | jerry  | {"city": "北京市", "`time`": "2020-06-19 23:07:28"}    |
+----+--------+--------------------------------------------------------+

select查询json记录

mysql> SELECT json_extract(info,'$.age') FROM test_json;
+----------------------------+
| json_extract(info,'$.age') |
+----------------------------+
| NULL                       |
| 15                         |
| NULL                       |
+----------------------------+
3 rows in set (0.00 sec)

mysql> SELECT json_extract(info,'$.age','$.city') FROM test_json;
+-------------------------------------+
| json_extract(info,'$.age','$.city') |
+-------------------------------------+
| NULL                                |
| [15]                                |
| ["北京市"]                          |
+-------------------------------------+
3 rows in set (0.00 sec)

查询key

mysql> select id,json_keys(info) from test_json;
+----+--------------------+
| id | json_keys(info)    |
+----+--------------------+
|  1 | NULL               |
|  2 | ["age", "time"]    |
|  3 | ["city", "`time`"] |
+----+--------------------+
3 rows in set (0.00 sec)

update 修改记录

增加键

UPDATE test_json SET info = json_set(info,'$.ip','10.0.0.10') WHERE id =3;
mysql> SELECT * FROM test_json;
+----+--------+---------------------------------------------------------------------------+
| id | u_name | info                                                                      |
+----+--------+---------------------------------------------------------------------------+
|  1 | tom    | [99, "测试", null, true, "23:03:35.000000"]                               |
|  2 | jerry  | {"age": 15, "time": "2020-06-19 23:07:24.000000"}                         |
|  3 | jerry  | {"ip": "10.0.0.10", "city": "北京市", "`time`": "2020-06-19 23:07:28"}    |
+----+--------+---------------------------------------------------------------------------+
3 rows in set (0.00 sec)

删除键

mysql> UPDATE test_json SET info = json_remove(info,'$.ip') WHERE id = 3;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT * FROM test_json;
+----+--------+--------------------------------------------------------+
| id | u_name | info                                                   |
+----+--------+--------------------------------------------------------+
|  1 | tom    | [99, "测试", null, true, "23:03:35.000000"]            |
|  2 | jerry  | {"age": 15, "time": "2020-06-19 23:07:24.000000"}      |
|  3 | jerry  | {"city": "北京市", "`time`": "2020-06-19 23:07:28"}    |
+----+--------+--------------------------------------------------------+
3 rows in set (0.00 sec)

猜你喜欢

转载自www.cnblogs.com/zh-dream/p/13170344.html
今日推荐