Mysql的组合字段Generated Column
所谓组合字段(自创的名字,没有在网上找到通用的名字),是MySQL5.7加入的新功能,可以定义一个字段,值是其他字段值的组合。
官网中举了一个勾股定理的例子:
CREATE TABLE triangle (sidea DOUBLE,sideb DOUBLE,sidec DOUBLE AS (SQRT(sidea * sidea + sideb * sideb)));INSERT INTO triangle (sidea, sideb) VALUES(1,1),(3,4),(6,8);
这个例子的意思是说sidec字段的值是sidea和sideb字段值的平方和再开方,在insert该表数据的时候可以不指定sidec的值,MySQL会自己计算。
这种组合字段有两种形式,Virtual Generated Column与Stored Generated Column,可以理解为虚拟组合列和存储组合列,Virtual Generated Column的数值不会存放在磁盘上,比较省空间,就是效率不高,如果需要查询建议加索引。
默认是Virtual Generated Column,如果要设置Stored Generated Column,需要在建表语句加上STORED关键字:
CREATE TABLE triangle (sidea DOUBLE,sideb DOUBLE,sidec DOUBLE AS (SQRT(sidea * sidea + sideb * sideb) STORED));
字段设置为组合字段之后,如果数据库操作出现明显的逻辑错误,操作将被阻止,比如:
情况1:
把字段C设置为字段A除以字段B,然后试图insert一条字段A是1,字段B是0的数据,MySQL会提示错误。
情况2:
把字段C设置为字段A除以字段B,并把字段B设置为varchar类型。
建表可以成功。
insert一条字段A为1,字段B为2的数据,可以成功。
insert一条字段A为1,字段B为abc的数据,MySQL会提示错误。
以上可以看到,除非遇见MySQL实在解决不了的问题,多数数据库操作还是可以被允许的。
另外,因为Virtual Generated Column在磁盘上不保存数据,所以带来了一些使用上的特点,比如聚簇索引、全文索引、空间索引,都不能用,外键也不能用。
Mysql的组合字段Generated Column相关推荐
- mysql字段 generated_MySQL 5.7新特性之generated column
MySQL 5.7引入了generated column,这篇文章简单地介绍了generated column的使用方法和注意事项,为读者了解MySQL 5.7提供一个快速的.完整的教程.这篇文章围绕 ...
- mysql计算三角形斜边_MySQL 5.7新特性之Generated Column(函数索引)
MySQL 5.7引入了Generated Column,这篇文章简单地介绍了Generated Column的使用方法和注意事项,为读者了解MySQL 5.7提供一个快速的.完整的教程.这篇文章围绕 ...
- mysql generated_MySQL 5.7新特性之Generated Column
这是IMG社区迎来的第一篇投稿,欢迎各位踊跃投稿,共同成长,一起打造最有态度的MySQL社区--IMG.IMG社区的网站,论坛也在完善中,后期会不断推出,目前就让我们在公众账号上讨论吧. IMG官方微 ...
- MySQL 5.7新特性之Generated Column
来源:https://www.cnblogs.com/lixigang/articles/5082589.html 本文概要 Generated Column是什么 Virtual Column与St ...
- MySQL5.7之Json Column和Generated Column使用介绍
目录 前言 一.MySQL中的Generated Column列(计算列) 二.JSON字段相关查询 三.JSON字段相关写操作 四.JSON字段索引以及Generated字段 五.结束语 前言 My ...
- mysql设置text字段为not null,并且没有默认值,插入报错:doesn't have a default value
一.问题描述 在往数据库写入数据的时候,报错: '字段名' doesn't have a default value 本来这个错误是经常见到的,无非就是字段没有设置默认值造成的.奇怪的是,我这边报错的 ...
- mysql中的字段类型
Mysql中的字段类型 MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间类型以及字符串(字符)类型.本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类 ...
- mysql在线增加字段_MySQL在线加字段实现原理
作者:vinchen 腾讯互娱内部维护了一个TMySQL分支,基于官方5.5.24,实现了类似于Oracle 11g的快速加字段功能.该功能通过扩展存储格式来实现,原理类似于Oracle 11g,以下 ...
- MySQL中查询字段为空或者为null方法
MySQL中查询字段为空或者为null方法 判断为null select * from table where column is null; 不为null: select * from table ...
最新文章
- 基于pytorch的模型稀疏训练与模型剪枝示例
- Laravel 任务调度(Console)
- doubleClick-v2-as3.0 学习笔记(2)--Video相关
- tcpdump抓包分析具体解释
- JDK源码系列(5)-StringBuffer
- html背景图片只显示一张图片,img只显示图片一部分 或 css设置背景图片只显示图片指定区域(示例代码)...
- 前端处理后台返回的流数据
- 《Javascript入门学习全集》 Javascript学习第一季(7)
- 机械工程师 舒尔电子_工程师专业分类,原来工程师也能这么“多才多艺”
- linux唤醒所有等待线程,转Linux多线程同步的几种方式
- 苹果手机屏幕助手_苹果手机屏幕坏点测试
- 小米4android8.0root,小米小米 5X(安卓8.0)手机完美获取root教程,最强root工具,亲测可用!...
- Linux 查看文件格式和更改文件格式
- morning 是字符串的内容变成good_小洁详解《R数据科学》--第十章 使用stringr处理字符串(上)...
- 如何申请成为企业微信,并成为第三方服务商
- 服务器2008r2启动修复,Windows Server 2008 R2原生启动试用
- python实现两个图片的叠加融合
- 跨世代保留精英遗传(基因)算法(intergenerational reserved Elitism Genetic Algorithm)
- scratch编程巡线小虫
- Tiled的qbs方式编译记录