Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Utwórz kolumnę obliczaną w SQL Server za pomocą T-SQL

Ten artykuł pokazuje, jak używać T-SQL do tworzenia obliczonej kolumny w SQL Server.

kolumna obliczona to wirtualna kolumna, która używa wyrażenia do obliczenia swojej wartości. Wyrażenie zazwyczaj używa danych z innych kolumn. Obliczona kolumna nie jest fizycznie przechowywana w tabeli, chyba że jest oznaczona jako PERSISTED .

Przykład 1 – Utwórz tabelę z obliczoną kolumną

Oto przykład tworzenia tabeli z obliczoną kolumną, wstawiania danych, a następnie wybierania zawartości tabeli.

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

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

SELECT *
FROM Products;

Wynik:

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

W tym przypadku ostatnia kolumna jest kolumną wyliczaną. Mnoży kolumnę ilości przez kolumnę ceny. Dzięki temu możemy uzyskać całkowitą wartość produktu aktualnie znajdującego się w magazynie.

Przykład 2 – Tworzenie trwałej kolumny obliczeniowej

Możesz utworzyć trwałą kolumnę obliczaną, dodając PERSISTED argument. Spowoduje to fizyczne przechowywanie obliczonej wartości w tabeli. Jeśli nie jest utrwalony, wartość jest obliczana za każdym razem, gdy czytasz obliczoną kolumnę.

Oto ten sam przykład kodu, co poprzedni, z tą różnicą, że tym razem tworzę utrwaloną kolumnę obliczeniową:

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

Jedyną różnicą jest PERSISTED argument.

Przykład 3 – Aktualizacja wartości

Teraz, jeśli wartość jest aktualizowana w Quantity lub Price kolumn, wpłynie to na całkowitą wartość zwróconą przez obliczoną kolumnę. Dzieje się tak niezależnie od tego, czy kolumna jest utrwalona, ​​czy nie.

Jeśli ktoś kupi na przykład młotek, wpłynie to na całkowitą wartość zwracaną przez obliczoną kolumnę:

UPDATE Products
SET Quantity = 4
WHERE ProductId = 1;

SELECT *
FROM Products;

Wynik:

+-------------+---------------+------------+---------+--------------+
| 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najszybszy sposób na znalezienie przestarzałych funkcji, które są nadal używane w wystąpieniu programu SQL Server (przykład T-SQL)

  2. 11 sposobów zwracania kluczy obcych w bazie danych SQL Server za pomocą T-SQL

  3. Zaktualizuj konto pocztowe bazy danych (SSMS)

  4. Zrozumienie blokad SQL Server w zapytaniach SELECT

  5. SQL Server — transakcje wycofują się w przypadku błędu?