Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak dodać kolumnę obliczeniową w tabeli SQL Server — samouczek SQL Server / T-SQL, część 47

Scenariusz:

Pracujesz jako SQL Server Developer dla jednej z Kancelarii. Utworzyłeś tabelę dbo.Customer, korzystając z poniższej definicji

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

Musisz mieć pełne imię i nazwisko, które powinno składać się z imienia i nazwiska. Nie chcesz zapisywać zduplikowanych danych w tabeli, dodając nową kolumnę dla pełnego imienia i nazwiska. Jakie masz opcje?

Również w zależności od wieku, chcielibyśmy dodać nową kolumnę wywołać IsSenior i zaznaczyć ją jako 1, jeśli powyżej 65, inaczej 0.

Rozwiązanie:

SQL Server udostępnia nam Computed Column, czyli wirtualną kolumnę i nie przechowuje danych, chyba że jest oznaczona jako Persisted. Oznacza to, że możemy utworzyć kolumnę wyliczaną (Pełne imię), która będzie wykorzystywać dane Imię i Nazwisko. Tworząc kolumnę przeliczeniową nie musimy zapisywać zduplikowanych danych dla kolumny z pełną nazwą.

Przejdźmy dalej i utwórzmy kolumny przeliczane pełne imię i nazwisko oraz IsSenior w zależności od naszych kryteriów.

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
    )
 Połączyliśmy imię i nazwisko dla pełnego imienia i nazwiska i napisaliśmy Case Statement dla kolumny IsSenior Computer. Przejdźmy dalej i wstawmy kilka rekordów.

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

Zauważyłem, że nie wstawiłem niczego dla kolumn FullName i IsSenior. Wartości dla tych kolumn zostaną obliczone, gdy wybierzemy dane.

Jak dodać kolumny przeliczane w tabeli SQL Server — samouczek T-SQL

Jeśli musisz dodać kolumnę wyliczoną do tabeli wychodzącej, możesz użyć poniższej składni

Alter Table SchemaName.TableName
Dodaj ColumnName AS Logic (np. FistName +''+LastName)

Powiedzmy, że dodaj kolumnę FullName Computer do tabeli Customer, możemy użyć poniższego skryptu.

Alter table dbo.Customer
    Add FullName AS FirstName+' '+LastName
 
Upuść obliczoną kolumnę z tabeli SQL Server:
Składnia usuwania kolumny obliczonej lub normalnej jest taka sama.

Zmień nazwę schematu tabeli.Nazwa tabeli
upuść nazwę kolumny kolumny

Powiedzmy, czy chcemy usunąć Kolumna obliczana FullName z dbo.Customer Table. Możemy użyć poniższego skryptu.

Alter table dbo.Customer
    drop column FullName


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co to jest typ danych SYSNAME w SQL Server?

  2. Microsoft Access a SQL Server

  3. Jak utworzyć ograniczenie klucza obcego z opcją ON DELETE SET NULL w programie SQL Server — samouczek SQL Server / TSQL, część 81

  4. Jak zrobić deterministyczny RAND() w SQL Server

  5. Separator tysięcy w SQL Server 2008 dla kolumny