シナリオ:
あなたは、ある法律事務所の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