Dit artikel laat zien hoe u T-SQL kunt gebruiken om een berekende kolom toe te voegen aan een bestaande tabel in SQL Server.
Een berekende kolom is een virtuele kolom die een uitdrukking gebruikt om de waarde ervan te berekenen. De expressie gebruikt doorgaans gegevens uit andere kolommen. Een berekende kolom wordt niet fysiek opgeslagen in de tabel, tenzij deze is gemarkeerd als PERSISTED
.
Voorbeeld 1 – Maak een tabel ZONDER een berekende kolom
Laten we eerst een tabel maken zonder een berekende kolom.
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;
Resultaat:
+-------------+---------------+------------+---------+ | ProductID | ProductName | Quantity | Price | |-------------+---------------+------------+---------| | 1 | Hammer | 5 | 10.0000 | | 2 | Corkscrew | 2 | 7.5000 | | 3 | Kettle | 3 | 25.1500 | +-------------+---------------+------------+---------+
Voorbeeld 2 – Een berekende kolom toevoegen
Laten we nu een berekende kolom toevoegen.
ALTER TABLE Products ADD TotalValue AS (Quantity * Price);
We hebben zojuist een berekende kolom toegevoegd met de naam TotalValue
die de waarde in de Quantity
. vermenigvuldigt kolom met de waarde in de Price
kolom.
Dit is wat er gebeurt als we nu de inhoud van de tabel selecteren:
SELECT * FROM Products;
Resultaat:
+-------------+---------------+------------+---------+--------------+ | 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 | +-------------+---------------+------------+---------+--------------+
Voorbeeld 3 – Een waarde bijwerken
Als nu een waarde wordt bijgewerkt in de Quantity
of Price
kolommen, heeft dit invloed op de totale waarde die door de berekende kolom wordt geretourneerd.
Voorbeeld:
UPDATE Products SET Quantity = 4 WHERE ProductId = 1; SELECT * FROM Products;
Resultaat:
+-------------+---------------+------------+---------+--------------+ | 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 | +-------------+---------------+------------+---------+--------------+