Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да добавите изчислена колона в таблица на SQL Server - SQL Server / T-SQL урок, част 47

Сценарий:

Вие работите като разработчик на 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SSIS пакетът не иска да извлича метаданни на временна таблица

  2. SQL Server 2008:как да дам привилегии на потребителско име?

  3. SQL Server Тригер за работа върху множество вмъквания на ред

  4. Как можете да наименувате таблиците на набора от данни, които връщате в съхранена процедура?

  5. Как да предадете нулева променлива към SQL съхранена процедура от C#.net код