mysql5.7版本
时间: 2025-01-02 21:32:53 浏览: 8
### MySQL 5.7 版本特性及使用说明
#### 新增的 Generated Column 功能
MySQL 5.7 引入了 generated column 的概念,这使得数据库可以基于其他列自动生成新列的内容。此功能分为两种类型:Virtual Generated Column 和 Stored Generated Column[^1]。
对于 Virtual Generated Column 来说,它仅存储于数据字典中而不实际写入磁盘,这意味着每次查询该列时都会重新计算其值。相反,Stored Generated Column 则会把生成的结果存放在磁盘上,尽管这样可能会占用更多空间,并且在某些情况下性能不如虚拟列好[^4]。
#### 使用示例
下面是一个简单的例子来展示如何定义这两种类型的 generated column:
```sql
CREATE TABLE products (
id INT NOT NULL,
name VARCHAR(255),
price DECIMAL(10, 2),
tax_rate DECIMAL(3, 2), /* 假设税率 */
-- 定义一个虚列用于表示含税价格
total_price_with_tax AS (price * (1 + tax_rate)) VIRTUAL,
-- 存储型虚列表示折扣后的最终售价
final_sale_price AS (total_price_with_tax * IF(discount IS NULL OR discount = 0, 1, 1-discount)) STORED,
discount DECIMAL(3, 2) DEFAULT 0 CHECK (discount >= 0 AND discount <= 1),
PRIMARY KEY(id)
);
```
在这个表格设计里,`total_price_with_tax` 是一个 virtual generated column,而 `final_sale_price` 被设置为了 stored generated column 并且可以在上面创建索引来提高查询效率。
阅读全文