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-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