MariaDB 10.0.X中,动态列支持 JSON 格式来获取数据。
admin
2023-04-11 19:43:48
0

MariaDB 10.0.X中,动态列(Dynamic Columns),可以支持 JSON 格式来获取数据。


为了兼容传统SQL语法,MariaDB 10和MySQL5.7支持原生JSON格式,即关系型数据库和文档型NoSQL数据库集于一身


使用说明:

###表结构

create table assets (
  item_name varchar(32) primary key, -- A common attribute for all items
  dynamic_cols  blob  -- Dynamic columns will be stored here
);


###插入JSON格式数据

mysql> INSERT INTO assets VALUES 
    ->   ('MariaDB T-shirt', COLUMN_CREATE('color', 'blue', 'size', 'XL'));
Query OK, 1 row affected (0.02 sec)

mysql> INSERT INTO assets VALUES
    ->   ('Thinkpad Laptop', COLUMN_CREATE('color', 'black', 'price', 500));
Query OK, 1 row affected (0.01 sec)


###获取Key(键)color的Value(值):

mysql> SELECT item_name, COLUMN_GET(dynamic_cols, 'color' as char) AS color FROM assets;
+-----------------+-------+
| item_name       | color |
+-----------------+-------+
| MariaDB T-shirt | blue  |
| Thinkpad Laptop | black |
+-----------------+-------+
2 rows in set (0.00 sec)


###获取全部Key(键)

mysql> SELECT item_name, column_list(dynamic_cols) FROM assets;
+-----------------+---------------------------+
| item_name       | column_list(dynamic_cols) |
+-----------------+---------------------------+
| MariaDB T-shirt | `size`,`color`            |
| Thinkpad Laptop | `color`,`price`           |
+-----------------+---------------------------+
2 rows in set (0.00 sec)


###获取全部Key-Value

mysql> SELECT item_name, COLUMN_JSON(dynamic_cols) FROM assets;
+-----------------+-------------------------------+
| item_name       | COLUMN_JSON(dynamic_cols)     |
+-----------------+-------------------------------+
| MariaDB T-shirt | {"size":"XL","color":"blue"}  |
| Thinkpad Laptop | {"color":"black","price":500} |
+-----------------+-------------------------------+
2 rows in set (0.01 sec)


###删除一个Key-Value:

mysql> UPDATE assets SET dynamic_cols=COLUMN_DELETE(dynamic_cols, "price") 
    -> WHERE COLUMN_GET(dynamic_cols, 'color' as char)='black';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT item_name, COLUMN_JSON(dynamic_cols) FROM assets;
+-----------------+------------------------------+
| item_name       | COLUMN_JSON(dynamic_cols)    |
+-----------------+------------------------------+
| MariaDB T-shirt | {"size":"XL","color":"blue"} |
| Thinkpad Laptop | {"color":"black"}            |
+-----------------+------------------------------+
2 rows in set (0.00 sec)


###增加一个Key-Value:

mysql> UPDATE assets SET dynamic_cols=COLUMN_ADD(dynamic_cols, 'warranty', '3 years')
    -> WHERE item_name='Thinkpad Laptop';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT item_name, COLUMN_JSON(dynamic_cols) FROM assets;                            
+-----------------+----------------------------------------+
| item_name       | COLUMN_JSON(dynamic_cols)              |
+-----------------+----------------------------------------+
| MariaDB T-shirt | {"size":"XL","color":"blue"}           |
| Thinkpad Laptop | {"color":"black","warranty":"3 years"} |
+-----------------+----------------------------------------+
2 rows in set (0.00 sec)


###更改一个Key-Value:

mysql> UPDATE assets SET 
dynamic_cols=COLUMN_ADD(dynamic_cols,'color', 'white') WHERE 
COLUMN_GET(dynamic_cols, 'color' as char)='black';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT item_name, COLUMN_JSON(dynamic_cols) FROM assets;
+-----------------+----------------------------------------+
| item_name       | COLUMN_JSON(dynamic_cols)              |
+-----------------+----------------------------------------+
| MariaDB T-shirt | {"size":"XL","color":"blue"}           |
| Thinkpad Laptop | {"color":"white","warranty":"3 years"} |
+-----------------+----------------------------------------+
2 rows in set (0.00 sec)



相关内容

热门资讯

终于明白“传送屋有挂吗?”(确... 终于明白“传送屋有挂吗?”(确实真的有挂)您好,传送屋这个游戏其实有挂的,确实是有挂的,需要了解加客...
今日重大消息“开心安徽比鸡可以... 有 亲,根据资深记者爆料开心安徽比鸡是可以开挂的,确实有挂(咨询软件无需...
【第一资讯】“阿道夫游戏开挂神... 您好:阿道夫游戏这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游...
玩家最新攻略“小闲川南棋牌开挂... 家人们!今天小编来为大家解答小闲川南棋牌透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里...
今日重大通报“友谊互娱有挂吗?... 今日重大通报“友谊互娱有挂吗?”(果然有透视挂)您好,友谊互娱这个游戏其实有挂的,确实是有挂的,需要...
今日重大通报“全民如意棋牌开挂... 您好:全民如意棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款...
终于明白“胡乐邯郸麻将开挂器?... 家人们!今天小编来为大家解答胡乐邯郸麻将透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里...
【今日要闻】“上海滩到底有挂吗... 家人们!今天小编来为大家解答上海滩透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买很多...
终于懂了“麦穗app推筒子究竟... 网上科普关于“麦穗app推筒子有没有挂”话题很是火热,小编也是针对麦穗app推筒子作*弊开挂的方法以...
终于了解“网易棋牌可以开挂吗?... 家人们!今天小编来为大家解答网易棋牌透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买很...