- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MariaDB新特性剖析;内容提要;1、MariaDB发展历程;2、MariaDB扩展和新特性概要;虚拟列
CREATE TABLE example_virtual_columns(a INT(11) PRIMARY KEY, b VARCHAR(32),c INT(11) AS (a mod 10) VIRTUAL,d VARCHAR(5) as (left(b, 5)) PERSISTENT);虚拟列c的值将会在查询时计算,而虚拟列d的值被存储在表中,查询的时候直接从表里取出。
在执行插入操作时,虚拟列使用default关键字代替就可以。如果为虚拟列指定值,将会导致错误的发生:mariadb[dbtest] INSERT INTO example_virtual_columns VALUES (16, abcdefghijkl, default, default);Query OK, 1 row affected (0.01 sec)mariadb[dbtest] SELECT * FROM example_virtual_columns;+-------+-------------------+--------+------------------+| a | b | c | d |+-------+-------------------+--------+------------------+| 16 | abcdefghijkl | 6 | abcde |+-------+-------------------+--------+------------------+1 row in set (0.00 sec)mariadb[dbtest] INSERT INTO example_virtual_columns VALUES (17, abcdefghijkl, default, there);ERROR 1906 (HY000): The value specified for computed column d in table example_virtual_columns ignored;动态列(1)
动态列适合于某些不确定的场景,例如某个商品的属性个数不确定并且将来可能还会添加。
想要使用动态列,首先表中必须包含blob类型的列:create table assets (item_name varchar(32) primary key,dynamic_cols blob);
接下来,就可以使用MariaDB定义的动态列操作函数对动态列进行存取操作:INSERT INTO assets VALUES (MariaDB T-shirt, COLUMN_CREATE(color, blue, size, XL));INSERT INTO assets VALUES (Thinkpad Laptop, COLUMN_CREATE (color, black, price, 500));以上两条语句往assets表中插入了两行记录,接下来查询商品的颜色情况:mariadb[dbtest] 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)
此外,还可以动态删除或者增加某行的动态列:mariadb[dbtest] UPDATE assets SET dynamic_cols = COLUMN_DELETE(dynamic_cols, price) WHERE COLUMN_GET(dynamic_cols,color as char)= black;mariadb[dbtest] UPDATE assets SET dynamic_cols = COLUMN_ADD(dynamic_cols, warranty, 3 years) WHERE
文档评论(0)