この記事では、T-SQLを使用してSQLServerで計算列を作成する方法について説明します。
計算列 式を使用してその値を計算する仮想列です。式は通常、他の列のデータを使用します。計算列は、PERSISTEDとマークされていない限り、テーブルに物理的に保存されません。 。
例1-計算列を含むテーブルを作成する
これは、計算列を使用してテーブルを作成し、データを挿入してから、テーブルのコンテンツを選択する例です。
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;
結果:
+-------------+---------------+------------+---------+--------------+ | 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 | +-------------+---------------+------------+---------+--------------+
この場合、最後の列は計算列です。数量列に価格列を掛けます。これにより、現在在庫のある製品の合計値を取得できます。
例2–永続化された計算列を作成する
PERSISTEDを追加することで、永続化された計算列を作成できます 口論。これにより、計算値がテーブルに物理的に保存されます。永続化されていない場合は、計算された列を読み取るたびに値が計算されます。
これは前のコード例と同じですが、今回は永続化された計算列を作成します:
CREATE TABLE Products
(
ProductID int IDENTITY (1,1) NOT NULL,
ProductName varchar(255),
Quantity smallint,
Price money,
TotalValue AS Quantity * Price PERSISTED
);
唯一の違いは、PERSISTEDです。 引数。
例3–値を更新する
ここで、値がQuantityで更新された場合 またはPrice 列の場合、これは計算された列によって返される合計値に影響します。これは、列が永続化されているかどうかに関係なく発生します。
たとえば、誰かがハンマーを購入した場合、これは計算された列によって返される合計値に影響します:
UPDATE Products SET Quantity = 4 WHERE ProductId = 1; SELECT * FROM Products;
結果:
+-------------+---------------+------------+---------+--------------+ | 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 | +-------------+---------------+------------+---------+--------------+