技术文摘
MySQL GENERATED COLUMN 是什么以及创建表时如何使用它
MySQL GENERATED COLUMN 是什么以及创建表时如何使用它
在MySQL数据库中,GENERATED COLUMN(生成列)是一项强大且实用的功能。简单来说,生成列是一种虚拟列,它的值不是通过手动插入或更新来设置,而是基于表中其他列的值通过表达式计算得出。
GENERATED COLUMN 为数据库管理带来诸多便利。它能提升数据的一致性。比如在一个存储商品信息的表中,有“单价”和“数量”列,我们可以创建一个“总价”的生成列,其值自动通过“单价 * 数量”计算得到。这样无论何时单价或数量发生变化,总价都会实时更新,避免了人工计算可能产生的错误。使用生成列可以简化查询操作。开发人员无需在每次查询时都手动编写复杂的计算表达式,直接查询生成列就能获取计算结果。
接下来看看在创建表时如何使用 GENERATED COLUMN。假设我们要创建一个员工信息表,包含“基本工资”“奖金”和“总收入”列,其中“总收入”为生成列。代码如下:
CREATE TABLE employees (
id INT PRIMARY KEY AUTO_INCREMENT,
basic_salary DECIMAL(10, 2),
bonus DECIMAL(10, 2),
total_income DECIMAL(10, 2) GENERATED ALWAYS AS (basic_salary + bonus) VIRTUAL
);
在上述代码中,“total_income”列通过“GENERATED ALWAYS AS (basic_salary + bonus)”定义为生成列,其值由“基本工资 + 奖金”计算得出。“VIRTUAL”关键字表示这是一个虚拟生成列,不占用额外的存储空间。
生成列还有“STORED”类型。与“VIRTUAL”不同,“STORED”生成列会将计算结果存储在磁盘上,虽然会占用一定空间,但查询时无需重新计算,能提高查询性能。例如:
CREATE TABLE products (
id INT PRIMARY KEY AUTO_INCREMENT,
price DECIMAL(10, 2),
quantity INT,
total_price DECIMAL(10, 2) GENERATED ALWAYS AS (price * quantity) STORED
);
MySQL 的 GENERATED COLUMN 功能为数据库设计和操作提供了更多的灵活性和便捷性。合理运用生成列,能够优化数据库结构,提升数据处理效率。无论是小型项目还是大型企业级应用,这一功能都值得深入研究和使用。
TAGS: 使用方法 MySQL 创建表 MySQL_GENERATED_COLUMN
- Redis高并发数据写入丢失:怎样防止List消息队列出现“漏网之鱼”
- Laravel 8.x无法获取HTTP GET请求参数,Nginx配置问题解决方法
- Python函数参数默认值中append方法与 + 操作符的差异
- Go GORM自定义预加载排序 避免“invalid query condition”错误方法
- 我的电脑访问网站出现DNS_PROBE_FINISHED_NXDOMAIN错误,其他电脑却能正常访问是为何
- Golang中字符串转 []byte结果有时不同的原因
- Redis高并发写入数据丢失问题及消息队列数据丢失解决方法
- Go 语言中怎样正确将字符串特殊字符转换为 []byte
- 解决Go语言中syscall.SysProcAttr类型在Linux与Windows系统下的兼容性问题方法
- Python为何受机器学习青睐
- Python 中实现 JavaScript 代码生成 UUID 的方法
- YouCompleteMe安装时install.py脚本报错的解决方法
- Python里列表方法与加号操作符在函数参数传递时的差异
- Go 语言里 GORM 预加载怎样自定义关联数据的排序与过滤
- Redis高并发写入数据丢失应对10000线程挑战方法