当前位置:首页 > 数据库 > 正文

mysql 虚拟列,什么是MySQL虚拟列?

导语:MySQL中的虚拟列(VirtualColumns)是一种特别类型的列,它们不是物理存储在表中的数据,而是由表中的其他列核算得出的。虚拟列在MySQL5.7及今后的版别中引进,分为两种类型:耐久虚拟列和暂时虚拟列。1.耐久虚拟列...

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虚拟列是一种高效的数据处理东西,能够协助开发者进步查询功率、简化数据处理,并下降存储空间需求。在实践运用中,合理运用虚拟列能够带来许多优点,但也要留意其约束

免责申明:以上内容属作者个人观点,版权归原作者所有,如有侵权或内容不符,请联系我们处理,谢谢合作!
上一篇:java树立数据库,Java环境下树立数据库的具体过程 下一篇:大数据的了解,什么是大数据?