Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Ajouter une colonne calculée à une table existante dans SQL Server

Cet article montre comment utiliser T-SQL pour ajouter une colonne calculée à une table existante dans SQL Server.

Une colonne calculée est une colonne virtuelle qui utilise une expression pour calculer sa valeur. L'expression utilise généralement des données d'autres colonnes. Une colonne calculée n'est physiquement stockée dans la table que si elle est marquée PERSISTED .

Exemple 1 - Créer une table SANS colonne calculée

Commençons par créer une table sans une colonne calculée.

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;

Résultat :

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

Exemple 2 – Ajouter une colonne calculée

Ajoutons maintenant une colonne calculée.

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

Nous venons d'ajouter une colonne calculée appelée TotalValue qui multiplie la valeur dans la Quantity colonne avec la valeur dans le Price colonne.

Voici ce qui se passe lorsque nous sélectionnons maintenant le contenu du tableau :

SELECT *
FROM Products;

Résultat :

+-------------+---------------+------------+---------+--------------+
| 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      |
+-------------+---------------+------------+---------+--------------+

Exemple 3 - Mettre à jour une valeur

Maintenant, si une valeur est mise à jour dans la Quantity ou Price colonnes, cela affectera la valeur totale renvoyée par la colonne calculée.

Exemple :

UPDATE Products
SET Quantity = 4
WHERE ProductId = 1;

SELECT *
FROM Products;

Résultat :

+-------------+---------------+------------+---------+--------------+
| 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      |
+-------------+---------------+------------+---------+--------------+