MariaDB 10.0.X中,动态列支持 JSON 格式来获取数据
MariaDB 10.0.X中,动态列(Dynamic Columns),可以支持 JSON 格式来获取数据。
为了兼容传统SQL语法,MariaDB 10和MySQL5.7支持原生JSON格式,即关系型数据库和文档型NoSQL数据库集于一身。
使用说明:
###表结构
1
2
3
4
|
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格式数据
1
2
3
4
5
6
7
|
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(值):
1
2
3
4
5
6
7
8
|
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(键)
1
2
3
4
5
6
7
8
|
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
1
2
3
4
5
6
7
8
|
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
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)
|
本文转自hcymysql51CTO博客,原文链接: http://blog.51cto.com/hcymysql/1694181,如需转载请自行联系原作者
MariaDB 10.0.X中,动态列支持 JSON 格式来获取数据相关推荐
- 让ASMX支持Json格式的返回数据
默认情况下,ASMX的Web服务返回soap格式的数据 ajax调用一般使用Json格式的数据.要支持Json格式的数据返回值,可以取消Web服务类前面的 ScriptService注释.这样,该We ...
- MariaDB 10.0 和 MySQL 5.6 有何不同
去年的5月,我第一次在博客上介绍了关于MariaDB 10.0. 我们当时收到很多的反馈,在进行众人意见总结后,我们再次的更加深入的解释过MariaDB 10.0. 在新的一年的伊始,随着MariaD ...
- 谷歌手机升级android10,Android Q安卓10.0新特性,首批支持升级21款手机
原标题:Android Q安卓10.0新特性,首批支持升级21款手机 2019年5月8日,一年一度的谷歌I/O开发者大会在美国加州如期召开,并发布了全新系列Android Q(安卓10.0)操作系统, ...
- python的pandas库中如何计算每列出现最多的值_Python Pandas中根据列的值选取多行数据...
Pandas中根据列的值选取多行数据 # 选取等于某些值的行记录 用 == df.loc[df['column_name'] == some_value] # 选取某列是否是某一类型的数值 用 isi ...
- python选取列中数据的范围_Python Pandas中根据列的值选取多行数据
Pandas中根据列的值选取多行数据 # 选取等于某些值的行记录 用 == df.loc[df['column_name'] == some_value] # 选取某列是否是某一类型的数值 用 isi ...
- Retrofit动态设置支持JSON和XML格式转换工厂
Retrofit动态设置支持JSON和XML格式转换工厂 Retrofit-Converter.Factory转换工厂 导入相关依赖 创建ConverterFormat枚举类 声明RequestCon ...
- C语言函数sscanf:从一个字符串中读进与指定格式相符的数据
转载自:http://www.aiseminar.cn/html/07/t-407.html C的split string函数--sscanf sscanf 名称: sscanf() - 从一个字符串 ...
- 将Excel中的数据转换成JSON格式
将Excel中的数据转换成JSON格式 第一步:下载jxl.jar包 <dependency> <groupId>net.sourceforge.jexcelapi</g ...
- Pandas处理dataframe的文本数据列:使用str属性获取数据列的字符串方法类、split函数基于指定分隔符拆分数据列的内容为列表、使用len计算每个列表的长度
Pandas处理dataframe的文本数据列:使用str属性获取数据列的字符串方法类.split函数基于指定分隔符拆分数据列的内容为列表.使用len计算每个列表的长度 目录
最新文章
- 【技巧——windows】直接登陆到桌面,免去输入密码
- 文末福利|云原生下Java的变化与趋势?程序员为什么不喜欢低代码?答案在这里!...
- HTML学习03之列表,表格,媒体元素
- java stl分解_Java Thread 之間 記憶體空間分析
- firefox android 插件,Firefox for Android将很快迎来更多扩展插件
- 电脑电池修复_笔记本电脑充不进去电如何修复
- adb命令检测手机bl有无上锁_用adb命令解bl锁
- Java8 LocalDateTime 转时间戳 秒、毫秒
- 静态页面练习(pc和移动端两套)
- 模拟美式橄榄球比赛数据(R)
- linux drwxr-xr-x 什么意思
- android c++服务器端,c++服务器与android客户端进行文件传输功能的实现
- 物联卡需要实名认证吗?物联网卡实名认证有什么用?
- 『互联网架构』埋点基础知识
- 远程服务器证书过期怎么解决,关于演示win7远程桌面证书过期的具体操作方式...
- 润乾报表入门问题记录
- 永洪BI配置测试及遇到的一些问题
- 使用RNN模型构建人名分类器
- 减少博客吮吸的32种方法(博客世界2010)
- [Copy] Netlink Socket