Сценарий:
Вие работите като разработчик на SQL сървър за една от адвокатските кантори. Създадохте таблица 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 и да я отбележим с 1, ако е над 65, друго 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 )Свързахме име и фамилия за пълно име и написахме изявлението на случая за колоната IsSenior Computer. Нека да продължим и да вмъкнем няколко записа.
insert into dbo.Customer(FirstName,LastName,Age) Values('Aamir','Shahzad',66), ('Raza','M',44)
Забелязах, че не съм вмъкнал нищо за колони FullName и IsSenior. Стойностите за тези колони ще бъдат изчислени, когато изберем данните.
Как да добавите изчислени колони в таблица на SQL Server - T-SQL урок
Ако трябва да добавите изчислена колона към излизащата таблица, можете да използвате по-долу синтаксис
Промяна на Table SchemaName.TableName
Add ColumnName AS Logic (като FistName +''+LastName)
Да кажем, ако искаме добавете компютърна колона с пълно име към таблицата на клиентите, можем да използваме скрипта по-долу.
Alter table dbo.Customer Add FullName AS FirstName+' '+LastName
Изхвърлете изчислената колона от таблицата на SQL Server:
Синтаксисът за отпадане на изчислена или нормална колона е един и същ.
Променете името на схемата на таблицата.Име на таблица
изпуснете ColumnName
Да кажем, ако искаме да премахнем Изчислена колона с пълно име от dbo.Customer Table. Можем да използваме скрипта по-долу.
Alter table dbo.Customer drop column FullName