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

SQLServerテーブルに計算列を追加する方法-SQLServer/T-SQLチュートリアルパート47

    シナリオ:

    あなたは、ある法律事務所のSQLServer開発者として働いています。以下の定義を使用してdbo.Customerテーブルを作成しました

    CREATE TABLE Customer (
        CustomerId INT Identity(1, 1)
        ,FirstName VARCHAR(50)
        ,LastName VARCHAR(50)
        ,Age SMALLINT
        ,PhoneNumber CHAR(9)
        ,DOB DATE
        ,Gender CHAR(1)
        )

    ファーストネームとラストネームで構成されるフルネームが必要です。フルネームの新しい列を追加して、重複データをテーブルに保存したくない場合。オプションは何ですか?

    また、年齢に応じて、IsSeniorという新しい列を追加し、65を超える場合は1、それ以外の場合は0をマークします。

    解決策:

    SQL Serverは、計算列、つまり仮想列を提供し、永続としてマークされていない限りデータを格納しません。つまり、名と名のデータを使用する計算列(フルネーム)を作成できます。計算列を作成することで、フルネーム列の重複データを保存する必要がなくなります。

    先に進み、基準に応じて計算列のフルネームとIsSeniorを作成しましょう。

    CREATE TABLE Customer (
        CustomerId INT Identity(1, 1)
        ,FirstName VARCHAR(50)
        ,LastName VARCHAR(50)
        ,Age SMALLINT
        ,PhoneNumber CHAR(9)
        ,DOB DATE
        ,Gender CHAR(1)
        ,FullName AS FirstName + ' ' + LastName
        ,IsSenior AS CASE 
            WHEN Age > 65
                THEN 1
            ELSE 0
            END
        )
     フルネームの名と姓を連結し、IsSeniorComputerColumnのCaseステートメントを作成しました。先に進んで、いくつかのレコードを挿入しましょう。

      insert into dbo.Customer(FirstName,LastName,Age)
        Values('Aamir','Shahzad',66),
        ('Raza','M',44)

    気づいたFullName列とIsSenior列には何も挿入していません。これらの列の値は、データを選択するときに計算されます。

    SQLServerテーブルに計算列を追加する方法-T-SQLチュートリアル

    If 既存のテーブルに計算列を追加する必要があります 以下の構文を使用できます

    テーブルSchemaName.TableNameを変更します
    ColumnNameASロジックを追加します(FistName +'' + LastNameなど)

    FullNameComputerColumnをCustomerテーブルに追加します。以下のスクリプトを使用できます。

    Alter table dbo.Customer
        Add FullName AS FirstName+' '+LastName
     
    SQL Serverテーブルから計算列を削除する:
    計算列または通常の列を削除するための構文は同じです。

    テーブルSchemaName.TableNameを変更します
    列ColumnNameを削除します

    削除するかどうかを考えてみましょうdbo.CustomerテーブルからのFullName計算列。以下のスクリプトを使用できます。

    Alter table dbo.Customer
        drop column FullName


    1. シャーロットでのPASSサミットに参加しますか?

    2. MariaDBでのSHOWCOLLATIONの仕組み

    3. SQLServerのビュー

    4. 修正方法「関連付けられたパーティション関数は、スキームで言及されているファイルグループよりも多くのパーティションを生成します」SQLServerのメッセージ7707