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