sql >> Database >  >> RDS >> Sqlserver

Een berekende kolom toevoegen aan een bestaande tabel in SQL Server

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

  1. hoe vind je alle indexen en hun kolommen voor tabellen, views en synoniemen in oracle

  2. Geaggregeerde sleutel/waarde-paren uit een JSONB-veld afvlakken?

  3. Trends in databasehardware en -infrastructuur

  4. Hoe u een controlebeperking voor één kolom in SQL Server kunt maken - SQL Server / TSQL-zelfstudie, deel 83