Scénář:
Pracujete jako SQL Server Developer pro jednu z advokátních kanceláří. Vytvořili jste tabulku dbo.Customer pomocí níže uvedené definiceCREATE 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-SQLPokud 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