所谓组合字段(自创的名字,没有在网上找到通用的名字),是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 ColumnStored 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相关推荐

  1. mysql字段 generated_MySQL 5.7新特性之generated column

    MySQL 5.7引入了generated column,这篇文章简单地介绍了generated column的使用方法和注意事项,为读者了解MySQL 5.7提供一个快速的.完整的教程.这篇文章围绕 ...

  2. mysql计算三角形斜边_MySQL 5.7新特性之Generated Column(函数索引)

    MySQL 5.7引入了Generated Column,这篇文章简单地介绍了Generated Column的使用方法和注意事项,为读者了解MySQL 5.7提供一个快速的.完整的教程.这篇文章围绕 ...

  3. mysql generated_MySQL 5.7新特性之Generated Column

    这是IMG社区迎来的第一篇投稿,欢迎各位踊跃投稿,共同成长,一起打造最有态度的MySQL社区--IMG.IMG社区的网站,论坛也在完善中,后期会不断推出,目前就让我们在公众账号上讨论吧. IMG官方微 ...

  4. MySQL 5.7新特性之Generated Column

    来源:https://www.cnblogs.com/lixigang/articles/5082589.html 本文概要 Generated Column是什么 Virtual Column与St ...

  5. MySQL5.7之Json Column和Generated Column使用介绍

    目录 前言 一.MySQL中的Generated Column列(计算列) 二.JSON字段相关查询 三.JSON字段相关写操作 四.JSON字段索引以及Generated字段 五.结束语 前言 My ...

  6. mysql设置text字段为not null,并且没有默认值,插入报错:doesn't have a default value

    一.问题描述 在往数据库写入数据的时候,报错: '字段名' doesn't have a default value 本来这个错误是经常见到的,无非就是字段没有设置默认值造成的.奇怪的是,我这边报错的 ...

  7. mysql中的字段类型

    Mysql中的字段类型 MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间类型以及字符串(字符)类型.本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类 ...

  8. mysql在线增加字段_MySQL在线加字段实现原理

    作者:vinchen 腾讯互娱内部维护了一个TMySQL分支,基于官方5.5.24,实现了类似于Oracle 11g的快速加字段功能.该功能通过扩展存储格式来实现,原理类似于Oracle 11g,以下 ...

  9. MySQL中查询字段为空或者为null方法

    MySQL中查询字段为空或者为null方法 判断为null select * from table where column is null; 不为null: select * from table ...

最新文章

  1. 基于pytorch的模型稀疏训练与模型剪枝示例
  2. Laravel 任务调度(Console)
  3. doubleClick-v2-as3.0 学习笔记(2)--Video相关
  4. tcpdump抓包分析具体解释
  5. JDK源码系列(5)-StringBuffer
  6. html背景图片只显示一张图片,img只显示图片一部分 或 css设置背景图片只显示图片指定区域(示例代码)...
  7. 前端处理后台返回的流数据
  8. 《Javascript入门学习全集》 Javascript学习第一季(7)
  9. 机械工程师 舒尔电子_工程师专业分类,原来工程师也能这么“多才多艺”
  10. linux唤醒所有等待线程,转Linux多线程同步的几种方式
  11. 苹果手机屏幕助手_苹果手机屏幕坏点测试
  12. 小米4android8.0root,小米小米 5X(安卓8.0)手机完美获取root教程,最强root工具,亲测可用!...
  13. Linux 查看文件格式和更改文件格式
  14. morning 是字符串的内容变成good_小洁详解《R数据科学》--第十章 使用stringr处理字符串(上)...
  15. 如何申请成为企业微信,并成为第三方服务商
  16. 服务器2008r2启动修复,Windows Server 2008 R2原生启动试用
  17. python实现两个图片的叠加融合
  18. 跨世代保留精英遗传(基因)算法(intergenerational reserved Elitism Genetic Algorithm)
  19. scratch编程巡线小虫
  20. Tiled的qbs方式编译记录

热门文章

  1. 继域名解析后------------我的网页进不去了!!!(修复方法)
  2. 未来世界,已经不在遥远
  3. 算法通识课发刊词:人机互动时代,懂点算法才能赢
  4. Flutter弹起键盘页面布局超限问题以及布局上移问题
  5. T语言与快速开发平台之天宇联3合1开发手册
  6. 爱奇艺攻防演练平台的探索实践(文末有直播福利)
  7. ArrayMap源码注释
  8. 服装内部条码和服装国标码的区别
  9. Java解压缩技术(三)BZIP2压缩-解压缩
  10. 长大后才知道,成年人的哭原来没有声音