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 格式来获取数据相关推荐

  1. 让ASMX支持Json格式的返回数据

    默认情况下,ASMX的Web服务返回soap格式的数据 ajax调用一般使用Json格式的数据.要支持Json格式的数据返回值,可以取消Web服务类前面的 ScriptService注释.这样,该We ...

  2. MariaDB 10.0 和 MySQL 5.6 有何不同

    去年的5月,我第一次在博客上介绍了关于MariaDB 10.0. 我们当时收到很多的反馈,在进行众人意见总结后,我们再次的更加深入的解释过MariaDB 10.0. 在新的一年的伊始,随着MariaD ...

  3. 谷歌手机升级android10,Android Q安卓10.0新特性,首批支持升级21款手机

    原标题:Android Q安卓10.0新特性,首批支持升级21款手机 2019年5月8日,一年一度的谷歌I/O开发者大会在美国加州如期召开,并发布了全新系列Android Q(安卓10.0)操作系统, ...

  4. python的pandas库中如何计算每列出现最多的值_Python Pandas中根据列的值选取多行数据...

    Pandas中根据列的值选取多行数据 # 选取等于某些值的行记录 用 == df.loc[df['column_name'] == some_value] # 选取某列是否是某一类型的数值 用 isi ...

  5. python选取列中数据的范围_Python Pandas中根据列的值选取多行数据

    Pandas中根据列的值选取多行数据 # 选取等于某些值的行记录 用 == df.loc[df['column_name'] == some_value] # 选取某列是否是某一类型的数值 用 isi ...

  6. Retrofit动态设置支持JSON和XML格式转换工厂

    Retrofit动态设置支持JSON和XML格式转换工厂 Retrofit-Converter.Factory转换工厂 导入相关依赖 创建ConverterFormat枚举类 声明RequestCon ...

  7. C语言函数sscanf:从一个字符串中读进与指定格式相符的数据

    转载自:http://www.aiseminar.cn/html/07/t-407.html C的split string函数--sscanf sscanf 名称: sscanf() - 从一个字符串 ...

  8. 将Excel中的数据转换成JSON格式

    将Excel中的数据转换成JSON格式 第一步:下载jxl.jar包 <dependency> <groupId>net.sourceforge.jexcelapi</g ...

  9. Pandas处理dataframe的文本数据列:使用str属性获取数据列的字符串方法类、split函数基于指定分隔符拆分数据列的内容为列表、使用len计算每个列表的长度

    Pandas处理dataframe的文本数据列:使用str属性获取数据列的字符串方法类.split函数基于指定分隔符拆分数据列的内容为列表.使用len计算每个列表的长度 目录

最新文章

  1. 【技巧——windows】直接登陆到桌面,免去输入密码
  2. 文末福利|云原生下Java的变化与趋势?程序员为什么不喜欢低代码?答案在这里!...
  3. HTML学习03之列表,表格,媒体元素
  4. java stl分解_Java Thread 之間 記憶體空間分析
  5. firefox android 插件,Firefox for Android将很快迎来更多扩展插件
  6. 电脑电池修复_笔记本电脑充不进去电如何修复
  7. adb命令检测手机bl有无上锁_用adb命令解bl锁
  8. Java8 LocalDateTime 转时间戳 秒、毫秒
  9. 静态页面练习(pc和移动端两套)
  10. 模拟美式橄榄球比赛数据(R)
  11. linux drwxr-xr-x 什么意思
  12. android c++服务器端,c++服务器与android客户端进行文件传输功能的实现
  13. 物联卡需要实名认证吗?物联网卡实名认证有什么用?
  14. 『互联网架构』埋点基础知识
  15. 远程服务器证书过期怎么解决,关于演示win7远程桌面证书过期的具体操作方式...
  16. 润乾报表入门问题记录
  17. 永洪BI配置测试及遇到的一些问题
  18. 使用RNN模型构建人名分类器
  19. 减少博客吮吸的32种方法(博客世界2010)
  20. [Copy] Netlink Socket

热门文章

  1. 9大门类,99个系列课程,几乎所有AI免费课程都在这里啦
  2. 43岁的微软大重组:肢解Windows,拥抱AI,20年功臣离职
  3. 60秒ICO募资2.35亿,AI+区块链概念,这个风口上的公司有点怪
  4. 腾讯还在提高围棋AI绝艺的棋力,柯洁说已经超过当年AlphaGo
  5. TeeChart Pro VCL/FMX教程(三):图表分页
  6. 实现Kubernetes跨集群服务应用的高可用
  7. 《阿里巴巴Java开发手册》2018年完整资料下载!
  8. iOS开发之使用Git的基本使用(二)
  9. python拷贝list
  10. poi 技术动态更新 Excel模板内容,动态更新内容