Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como adicionar coluna computada na tabela do SQL Server - Tutorial SQL Server / T-SQL Parte 47

Cenário:

Você está trabalhando como SQL Server Developer para um escritório de advocacia. Você criou uma tabela dbo.Customer usando a definição abaixo

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

Você precisa ter um nome completo que deve consistir em nome e sobrenome. Você não deseja salvar os dados duplicados na tabela adicionando uma nova coluna para o nome completo. Quais são suas opções?

Também dependendo da idade, gostaríamos de adicionar nova coluna chamar IsSenior e marcá-la 1 se acima de 65 senão 0.

Solução:

O SQL Server nos fornece Coluna Computada, que é uma coluna virtual e não armazena dados, a menos que esteja marcada como Persistente. Isso significa que podemos criar uma coluna computada (Nome completo) que usará dados de Nome e Sobrenome. Ao criar a Coluna Computada, não precisamos salvar dados duplicados para a coluna Nome completo.

Vamos em frente e criar Colunas Computadas Nome Completo e IsSenior, dependendo de nossos critérios.

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
    )
 Concatenamos o nome e o sobrenome para o nome completo e escrevemos a declaração de caso para a coluna de computador IsSenior. Vamos inserir alguns registros.

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

Percebi que não inseri nada para as colunas FullName e IsSenior. Os valores dessas colunas serão calculados quando selecionarmos os dados.

Como adicionar colunas computadas na tabela do SQL Server - Tutorial T-SQL

Se você precisa adicionar Coluna Computada à Tabela de saída, você pode usar a sintaxe abaixo

Alter Table SchemaName.TableName
Add ColumnName AS Logic (como FistName +''+LastName)

Digamos que se queremos adicionar FullName Computer Column à tabela Customer, podemos usar o script abaixo.

Alter table dbo.Customer
    Add FullName AS FirstName+' '+LastName
 
Solte a coluna computada da tabela do SQL Server:
A sintaxe para descartar a coluna Computed ou normal é a mesma.

Alter Table SchemaName.TableName
drop Column ColumnName

Digamos se queremos descartar Coluna computada FullName da tabela dbo.Customer. Podemos usar o script abaixo.

Alter table dbo.Customer
    drop column FullName