Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Aggiungere una colonna calcolata a una tabella esistente in SQL Server

Questo articolo illustra come utilizzare T-SQL per aggiungere una colonna calcolata a una tabella esistente in SQL Server.

Una colonna calcolata è una colonna virtuale che usa un'espressione per calcolarne il valore. L'espressione utilizzerà in genere i dati di altre colonne. Una colonna calcolata non viene archiviata fisicamente nella tabella a meno che non sia contrassegnata con PERSISTED .

Esempio 1:creare una tabella SENZA una colonna calcolata

Per prima cosa, creiamo una tabella senza una colonna calcolata.

CREATE TABLE Products
  (
    ProductID int IDENTITY (1,1) NOT NULL,
    ProductName varchar(255), 
    Quantity smallint,
    Price money
  );

INSERT INTO Products (ProductName, Quantity, Price)
VALUES 
  ('Hammer', 5, 10),
  ('Corkscrew', 2, 7.50),
  ('Kettle', 3, 25.15);

SELECT *
FROM Products;

Risultato:

+-------------+---------------+------------+---------+
| ProductID   | ProductName   | Quantity   | Price   |
|-------------+---------------+------------+---------|
| 1           | Hammer        | 5          | 10.0000 |
| 2           | Corkscrew     | 2          | 7.5000  |
| 3           | Kettle        | 3          | 25.1500 |
+-------------+---------------+------------+---------+

Esempio 2:aggiungere una colonna calcolata

Ora aggiungiamo una colonna calcolata.

ALTER TABLE Products 
ADD TotalValue AS (Quantity * Price);

Abbiamo appena aggiunto una colonna calcolata chiamata TotalValue che moltiplica il valore nella Quantity colonna con il valore nel Price colonna.

Ecco cosa succede quando selezioniamo il contenuto della tabella ora:

SELECT *
FROM Products;

Risultato:

+-------------+---------------+------------+---------+--------------+
| ProductID   | ProductName   | Quantity   | Price   | TotalValue   |
|-------------+---------------+------------+---------+--------------|
| 1           | Hammer        | 5          | 10.0000 | 50.0000      |
| 2           | Corkscrew     | 2          | 7.5000  | 15.0000      |
| 3           | Kettle        | 3          | 25.1500 | 75.4500      |
+-------------+---------------+------------+---------+--------------+

Esempio 3:aggiornamento di un valore

Ora, se un valore viene aggiornato nella Quantity o Price colonne, ciò influirà sul valore totale restituito dalla colonna calcolata.

Esempio:

UPDATE Products
SET Quantity = 4
WHERE ProductId = 1;

SELECT *
FROM Products;

Risultato:

+-------------+---------------+------------+---------+--------------+
| ProductID   | ProductName   | Quantity   | Price   | TotalValue   |
|-------------+---------------+------------+---------+--------------|
| 1           | Hammer        | 4          | 10.0000 | 40.0000      |
| 2           | Corkscrew     | 2          | 7.5000  | 15.0000      |
| 3           | Kettle        | 3          | 25.1500 | 75.4500      |
+-------------+---------------+------------+---------+--------------+