sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan tilføjes Computed Column i SQL Server Table - SQL Server / T-SQL vejledning del 47

Scenarie:

Du arbejder som SQL Server-udvikler for en af ​​Advokatfirmaet. Du har oprettet en dbo.Kundetabel ved at bruge nedenstå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 skal have fulde navn, der skal bestå af fornavn og efternavn. Du ønsker ikke at gemme de duplikerede data i tabellen ved at tilføje en ny kolonne for Fuldt navn. Hvad er dine muligheder?

Også afhængigt af alder, vil vi gerne tilføje en ny kolonne, ring til IsSenior og marker den som 1, hvis over 65 ellers 0.

Løsning:

SQL Server giver os Computed Column, det vil sige virtuel kolonne, og den gemmer ikke data, medmindre den er markeret som persisted. Det betyder, at vi kan oprette beregnet kolonne (Fuldt navn), der vil bruge data for fornavn og efternavn. Ved at oprette Computed Column behøver vi ikke at gemme duplikerede data til kolonnen fuldt navn.

Lad os gå videre og oprette Computed Columns Full Name og IsSenior afhængigt af vores 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 sammenkædede fornavn og efternavn for fulde navn og skrev sagserklæringen for IsSenior Computer Column. Lad os gå videre og indsætte et par poster.

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

Bemærket, at jeg ikke har indsat noget for FullName- og IsSenior-kolonner. Værdierne for disse kolonner vil blive beregnet, når vi vælger dataene.

Sådan tilføjer du beregnede kolonner i SQL Server-tabel - T-SQL-vejledning

Hvis du skal føje Computed Column til den afsluttende tabel du kan bruge nedenstående syntaks

Alter Table SchemaName.TableName
Add ColumnName AS Logic(såsom FistName +''+LastName)

Lad os sige, om vi vil føj FullName Computer Column til kundetabellen, vi kan bruge nedenstående script.

Alter table dbo.Customer
    Add FullName AS FirstName+' '+LastName
 
Slip beregnet kolonne fra SQL Server-tabel:
Syntaksen for at droppe beregnet eller normal kolonne er den samme.

Alter Table SchemaName.TableName
slip Column ColumnName

Lad os sige, om vi vil droppe Fuldt navn beregnet kolonne fra dbo.Customer Table. Vi kan bruge nedenstående script.

Alter table dbo.Customer
    drop column FullName


  1. Introduktion til SQL-gruppering og sammenlægning

  2. Hvordan importerer jeg CSV-fil til en MySQL-tabel?

  3. FEJL 2003 (HY000):Kan ikke oprette forbindelse til MySQL-server på '127.0.0.1' (111)

  4. Vis navne på alle begrænsninger for en tabel i Oracle SQL