sql >> Databáze >  >> RDS >> Sqlserver

Jak přidat vypočítaný sloupec do tabulky serveru SQL - SQL Server / Výukový program T-SQL, část 47

Scénář:

Pracujete jako SQL Server Developer pro jednu z advokátních kanceláří. Vytvořili jste tabulku dbo.Customer pomocí níže uvedené definice

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

Musíte mít celé jméno, které by se mělo skládat z křestního jména a příjmení. Nechcete ukládat duplicitní data do tabulky přidáním nového sloupce pro Celé jméno. Jaké jsou vaše možnosti?

V závislosti na věku bychom také rádi přidali nový sloupec volání IsSenior a označili jej 1, pokud je vyšší než 65, jinak 0.

Řešení:

SQL Server nám poskytuje Computed Column, což je virtuální sloupec a neukládá data, pokud není označen jako Trvalý. To znamená, že můžeme vytvořit vypočítaný sloupec (Celé jméno), který bude používat data Jméno a Příjmení. Vytvořením Computed Column nemusíme ukládat duplicitní data pro celý sloupec Name.

Pojďme do toho a vytvořte Computed Columns Full Name a IsSenior v závislosti na našich kritériích.

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
    )
 Zřetězili jsme jméno a příjmení pro celé jméno a napsali Case Statement pro IsSenior Computer Column. Pokračujme a vložíme několik záznamů.

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

Všiml jsem si, že jsem nevložil nic do sloupců FullName a IsSenior. Hodnoty pro tyto sloupce budou vypočteny, když vybereme data.

Jak přidat vypočítané sloupce do tabulky SQL Server – výukový program T-SQL

Pokud musíte přidat Computed Column do ukončující tabulky můžete použít níže uvedenou syntaxi

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

Řekněme, že pokud chceme přidat FullName Computer Column to Customer table, můžeme použít níže uvedený skript.

Alter table dbo.Customer
    Add FullName AS FirstName+' '+LastName
 
Vypustit vypočítaný sloupec z tabulky serveru SQL:
Syntaxe pro odstranění vypočítaného nebo normálního sloupce je stejná.

Změnit název schématu tabulky.název_tabulky
vypustit název sloupce

Řekněme, že chceme vypustit FullName vypočítaný sloupec z tabulky dbo.Customer. Můžeme použít níže uvedený skript.

Alter table dbo.Customer
    drop column FullName


  1. SQL Server Management Studio (SSMS)

  2. Automaticky otevírat výsledky dotazu SQLite v textovém editoru

  3. 4 způsoby, jak najít řádky, které obsahují velká písmena v PostgreSQL

  4. Jak volat uloženou proceduru Oracle, která obsahuje uživatelsky definovaný typ v jazyce Java?