sql >> データベース >  >> RDS >> Sqlserver

SQL Serverの計算列とは何ですか?

    SQL Serverでは、計算列 式を使用してその値を計算する仮想列です。

    計算列は通常、他の列のデータを計算に使用します。これらの列のいずれかのデータが更新されると、計算された列はその更新を計算に自動的に反映します。

    計算列の例

    +------------+-------------+------------+----------------+
    | PersonID   | FirstName   | LastName   | FullName       |
    |------------+-------------+------------+----------------|
    | 1          | Homer       | Seinfeld   | Homer Seinfeld |
    | 2          | Bart        | Costanza   | Bart Costanza  |
    | 3          | Marge       | Kramer     | Marge Kramer   |
    +------------+-------------+------------+----------------+
    

    この例では、FullName columnは計算列です。 FirstNameの値を連結します およびLastName フルネームを計算するための列。

    計算列がない場合、フルネームを選択する場合は、次のようにする必要があります。

    SELECT FirstName + ' ' + LastName AS FullName
    FROM Person;
    

    または、CONCAT()を使用することもできます このような機能:

    SELECT CONCAT(FirstName, ' ', LastName) AS FullName
    FROM Person;
    

    テーブルからフルネームを選択するたびに、クエリに連結を含める必要があります。

    ただし、上記のような計算列を使用すると、次のことが可能になります。

    SELECT FullName
    FROM Person;
    

    計算列の利点

    計算列は、クエリを作成する時間を節約し、エラーを減らし、さらにはパフォーマンスを向上させることができます。

    計算列は、同じクエリを何度も繰り返し実行する場合、特にそのクエリがめったに変更されないビジネスルールに基づいている場合に便利です。

    前の例の計算列は、誰かのフルネームを選択するたびに名前と名前を連結する必要がないため、将来的に多くの時間を節約できます。

    ユースケースの例

    計算列が役立つ場合の例は次のとおりです。

    • 別の列の生年月日に基づいて、人の年齢を計算する
    • ある列にある名と別の列にある姓に基づいて、名と名前を連結する
    • 1つの列の在庫数と別の列の価格に基づいて、製品の在庫値を計算します
    • 別の列の身長と体重に基づいて、人のBMI(ボディマス指数)を計算します
    • 他の列の値に基づいて行をランク付けする「ランク」列を作成する
    • 他の列の開始時間と終了時間に基づいて、マラソンランナーのレース時間を計算します

    計算列の永続性

    計算列は、PERSISTEDとマークされていない限り、テーブルに物理的に保存されません。 。

    そうでない場合 永続化された計算列の場合、テーブルにアクセスするたびに計算が行われます。

    の場合 永続化された計算列の場合、計算値は物理的にテーブルに格納されます。つまり、クエリを実行するたびにその値を計算する必要はありません。データがその値を取得する列の1つで更新されると、計算された列の値が更新され、テーブルに格納されます。これはパフォーマンスに役立ちます。

    計算列は、決定論的である場合にのみ永続化できることに注意してください。決定論的でない場合、それを永続化しようとするとエラーが発生します。

    非決定論的 列は、同じ入力でも異なる値を返す列です。たとえば、計算に現在の日付を使用する場合、値は毎日異なり、非決定的と見なされます。

    単に名と名前を連結している場合、それは決定論的であり、そのような列を永続化することができます。

    計算列の作成

    計算列は、SSMSGUIまたはTransact-SQLを使用して作成できます。

    SSMSの場合

    SSMSでは、 Table Designerにいる間 、計算列にしたい列を作成し(または、すでに存在する場合は単に選択します)、[列のプロパティ]の下に配置します。 タブで、数式を計算列の仕様に入力します プロパティフィールド。

    計算列にデータ型を指定する必要はありません。SQLServerは、数式に基づいて列にデータ型を指定します。

    はいを選択することもできます は永続化されます ご希望の場合。

    T-SQLの使用

    Transact-SQLを使用して計算列を作成する例については、T-SQLを使用してSQLServerで計算列を作成するを参照してください。


    1. カウントにギャップを残してプライマリを自動インクリメント

    2. PostgreSQLでスーパーユーザー権限を持つユーザーを作成する方法

    3. 書評:Benjamin Nevarez:クエリの調整と最適化

    4. SQLite Order By Date1530019888000