插件窝 干货文章 SQL 如何添加计算列

SQL 如何添加计算列

计算 price 添加 quantity 118    来源:    2025-03-29

SQL 添加计算列的方法

计算列(Computed Column)是根据表中其他列的值通过表达式计算得出的列。以下是几种主流数据库中添加计算列的方法:

1. MySQL/MariaDB

-- 创建表时添加计算列
CREATE TABLE products (
    id INT PRIMARY KEY,
    price DECIMAL(10,2),
    quantity INT,
    total_price DECIMAL(10,2) AS (price * quantity)  -- 计算列
);

-- 为已有表添加计算列
ALTER TABLE products
ADD COLUMN discounted_price DECIMAL(10,2) AS (price * 0.9);

2. SQL Server

-- 创建表时添加计算列
CREATE TABLE products (
    id INT PRIMARY KEY,
    price DECIMAL(10,2),
    quantity INT,
    total_price AS (price * quantity)  -- 计算列
);

-- 为已有表添加计算列
ALTER TABLE products
ADD discounted_price AS (price * 0.9);

3. PostgreSQL

-- 创建表时添加计算列(GENERATED ALWAYS AS)
CREATE TABLE products (
    id SERIAL PRIMARY KEY,
    price DECIMAL(10,2),
    quantity INT,
    total_price DECIMAL(10,2) GENERATED ALWAYS AS (price * quantity) STORED
);

-- 为已有表添加计算列
ALTER TABLE products
ADD COLUMN discounted_price DECIMAL(10,2) GENERATED ALWAYS AS (price * 0.9) STORED;

4. Oracle

-- 创建表时添加计算列
CREATE TABLE products (
    id NUMBER PRIMARY KEY,
    price NUMBER(10,2),
    quantity NUMBER,
    total_price NUMBER(10,2) GENERATED ALWAYS AS (price * quantity) VIRTUAL
);

-- 为已有表添加计算列
ALTER TABLE products
ADD (discounted_price NUMBER(10,2) GENERATED ALWAYS AS (price * 0.9) VIRTUAL;

注意事项

  1. 存储方式

    • STORED:计算结果物理存储在表中
    • VIRTUAL:每次查询时动态计算(默认)
  2. 性能考虑

    • STORED列写入慢但读取快
    • VIRTUAL列写入快但读取时需要计算
  3. 不同数据库的语法差异较大,需要根据具体数据库调整

  4. 计算列通常不能直接插入或更新值

  5. 计算列可以像普通列一样用于查询条件

需要根据您的具体数据库类型选择合适的方法实现计算列。