sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man lägger till beräknad kolumn i SQL Server Table - SQL Server / T-SQL självstudie del 47

Scenario:

Du arbetar som SQL Server-utvecklare för en av Advokatbyrån. Du har skapat en dbo.Customer-tabell genom att använda nedanstående definition

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

Du måste ha ett fullständigt namn som ska bestå av förnamn och efternamn. Du vill inte spara dubblettdata i tabellen genom att lägga till en ny kolumn för Fullständigt namn. Vilka är dina alternativ?

Också beroende på ålder, skulle vi vilja lägga till ny kolumn, ring IsSenior och markera den som 1 om över 65 annars 0.

Lösning:

SQL Server tillhandahåller oss Computed Column, det vill säga virtuell kolumn och den lagrar inte data om den inte är markerad som bevarad. Det betyder att vi kan skapa en beräknad kolumn (fullständigt namn) som kommer att använda data för förnamn och efternamn. Genom att skapa Computed Column behöver vi inte spara dubbletter av data för fullständigt namnkolumn.

Låt oss gå vidare och skapa Computed Columns Fullständigt namn och IsSenior beroende på våra kriterier.

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
    )
 Vi sammanfogade förnamn och efternamn för fullständigt namn och skrev ärendeutlåtandet för IsSenior Computer Column. Låt oss gå vidare och infoga ett par poster.

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

Märde att jag inte har infogat något för FullName och IsSenior kolumner. Värdena för dessa kolumner kommer att beräknas när vi väljer data.

Hur man lägger till beräknade kolumner i SQL Server Table - T-SQL självstudier

Om du måste lägga till Beräknad kolumn i den avslutande tabellen du kan använda nedanstående syntax

Alter Table SchemaName.TableName
Lägg till kolumnnamn AS Logic( såsom FistName +''+LastName)

Låt oss säga om vi vill lägg till FullName Computer Column till kundtabellen, vi kan använda nedanstående skript.

Alter table dbo.Customer
    Add FullName AS FirstName+' '+LastName
 
Släpp beräknad kolumn från SQL Server-tabell:
Syntaxen för att ta bort beräknad eller normal kolumn är densamma.

Alter Table SchemaName.TableName
släpp kolumn ColumnName

Låt oss säga om vi vill ta bort FullName beräknad kolumn från dbo.Customer Table. Vi kan använda nedanstående skript.

Alter table dbo.Customer
    drop column FullName


  1. Hur lagrar och hämtar man en byte-array (bilddata) till och från en SQLite-databas?

  2. php/mysql med flera frågor

  3. Anslut ODBC-applikationer på Windows till SugarCRM

  4. PostgreSQL datum och tid funktioner