mysql 虚拟列,什么是MySQL虚拟列?
MySQL 中的虚拟列(Virtual Columns)是一种特别类型的列,它们不是物理存储在表中的数据,而是由表中的其他列核算得出的。虚拟列在 MySQL 5.7 及今后的版别中引进,分为两种类型:耐久虚拟列和暂时虚拟列。
1. 耐久虚拟列(Persistent Virtual Columns):这种类型的虚拟列在表结构中被界说,但其值是在查询时核算得出的。耐久虚拟列在表创立时界说,能够运用 `CREATE TABLE` 或 `ALTER TABLE` 句子来添加。
2. 暂时虚拟列(Generated Virtual Columns):这种类型的虚拟列与耐久虚拟列相似,但它们在查询时才核算值,并且不会存储在磁盘上。暂时虚拟列一般用于简化查询,使查询句子愈加简练。
虚拟列的首要优势在于它们能够削减数据冗余,进步查询功用,并答应你根据现有数据创立杂乱的核算列。
创立虚拟列
耐久虚拟列
```sqlCREATE TABLE example , age INT, age_in_years AS STOREDqwe2;```
在这个比如中,`age_in_years` 是一个耐久虚拟列,它的值是根据 `age` 列核算得出的。
暂时虚拟列
```sqlSELECT id, name, age, age 365 AS age_in_yearsFROM example;```
在这个查询中,`age_in_years` 是一个暂时虚拟列,它仅在查询时核算。
运用虚拟列
虚拟列能够作为查询条件、排序条件、聚合函数的参数等。例如:
```sqlSELECT FROM exampleWHERE age_in_years > 5000;```
在这个查询中,耐久虚拟列 `age_in_years` 被用作查询条件。
虚拟列是 MySQL 中一个十分强壮的功用,它们答应你以灵敏的方法处理数据,一起坚持数据的共同性和准确性。
MySQL 虚拟列:高效数据处理的秘密武器
什么是MySQL虚拟列?
MySQL虚拟列,也称为生成列,是一种特别的列,它并不存储数据,而是在查询时动态生成数据。这种列的值一般是由其他列的值经过某种表达式核算得出的。虚拟列的首要作用是进步查询功率和数据处理的便利性,使咱们在不添加实践存储开支的情况下,对数据进行更高效的查询和办理。
虚拟列与一般列的差异

虚拟列与一般列在运用上有几个首要的差异:
存储方法:一般列的值在刺进或更新时会被实践存储在数据库中,而虚拟列的值并不会被存储,而是在查询时动态核算生成。
更新方法:一般列的值能够直接经过UPDATE句子进行修正,而虚拟列的值则不能直接修正,它的值是由界说它的表达式决议的。
索引运用:虚拟列能够被索引,这使得它在某些情况下能够进步查询功用。尽管虚拟列的值在查询时才生成,可是假如对虚拟列创立了索引,那么索引的值会被存储,然后进步查询功率。
MySQL虚拟列的类型

MySQL虚拟列分为两种类型:生成列和存储列。
生成列(Generated Columns):分为虚拟生成列和存储的生成列。
虚拟生成列(Virtual Generated Column):在查询时动态核算,不占用物理存储空间。
存储的生成列(Stored Generated Column):将核算成果存储在数据库中,占用物理存储空间。
怎么创立和运用MySQL虚拟列
创立含有虚拟列的表:
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
salary DECIMAL(10, 2),
department VARCHAR(50),
bonus DECIMAL(10, 2) AS (salary 0.1)
更新虚拟列的值:
UPDATE employees SET salary = 5000 WHERE id = 1;
查询虚拟列的值:
SELECT FROM employees;
MySQL虚拟列的运用场景
虚拟列在以下场景中十分有用:
联合索引优化:经过虚拟列创立复合索引,进步查询功率。
数据冗余办理:削减数据冗余,下降存储空间需求。
数据转化和核算:简化杂乱的核算公式,进步数据处理功率。
MySQL虚拟列的约束和留意事项
在运用虚拟列时,需求留意以下约束和留意事项:
数据类型约束:虚拟列的数据类型有必要与界说的表达式回来的数据类型共同。
更新和删去约束:虚拟列不能直接更新和删去,只能经过更新其依靠的列来完成。
其他留意事项:虚拟列不能作为外键,也不能被索引。
实战:运用MySQL虚拟列处理实践问题
问题描绘:
假设有一个出售数据表,其间包括产品价格(price)和出售数量(quantity)两个列。常常需求核算出售总额(产品数量乘以单价),每次查询都写这个核算式,不只繁琐,并且功率低下。
处理方案设计:
创立一个虚拟列,用于存储出售总额,简化查询句子。
完成过程:
CREATE TABLE sales (
id INT AUTO_INCREMENT PRIMARY KEY,
product_id INT,
price DECIMAL(10, 2),
quantity INT,
total DECIMAL(10, 2) AS (price quantity)
成果和作用剖析:
经过创立虚拟列total,简化了查询句子,进步了查询功率。一起,削减了数据冗余,下降了存储空间需求。
MySQL虚拟列是一种高效的数据处理东西,能够协助开发者进步查询功率、简化数据处理,并下降存储空间需求。在实践运用中,合理运用虚拟列能够带来许多优点,但也要留意其约束