W SQL Server kolumna obliczona to wirtualna kolumna, która używa wyrażenia do obliczenia swojej wartości.
Kolumna wyliczana zazwyczaj używa w swoich obliczeniach danych z innych kolumn. Jeśli dane w którejkolwiek z tych kolumn zostaną zaktualizowane, obliczona kolumna automatycznie odzwierciedli aktualizację w swoich obliczeniach.
Przykład kolumny wyliczanej
+------------+-------------+------------+----------------+ | PersonID | FirstName | LastName | FullName | |------------+-------------+------------+----------------| | 1 | Homer | Seinfeld | Homer Seinfeld | | 2 | Bart | Costanza | Bart Costanza | | 3 | Marge | Kramer | Marge Kramer | +------------+-------------+------------+----------------+
W tym przykładzie FullName
kolumna jest kolumną wyliczaną. Łączy wartości z FirstName
i LastName
kolumny, aby obliczyć pełną nazwę.
Bez kolumny obliczeniowej, jeśli chcesz wybrać pełną nazwę, musisz zrobić coś takiego:
SELECT FirstName + ' ' + LastName AS FullName FROM Person;
Możesz też użyć CONCAT()
funkcja, tak:
SELECT CONCAT(FirstName, ' ', LastName) AS FullName FROM Person;
Za każdym razem, gdy chcesz wybrać pełne imię i nazwisko z tabeli, musisz uwzględnić w zapytaniu konkatenację.
Ale używając kolumny obliczeniowej, takiej jak ta powyżej, możesz to zrobić:
SELECT FullName FROM Person;
Zalety kolumn obliczanych
Kolumny obliczane mogą zaoszczędzić czas podczas pisania zapytań, zmniejszyć liczbę błędów, a nawet poprawić wydajność.
Kolumny obliczane mogą być przydatne, jeśli wielokrotnie uruchamiasz to samo zapytanie, zwłaszcza jeśli to zapytanie jest oparte na regułach biznesowych, które rzadko się zmieniają.
Obliczona kolumna w poprzednim przykładzie może zaoszczędzić nam wiele czasu w przyszłości, ponieważ nie będziemy musieli łączyć imienia i nazwiska za każdym razem, gdy chcemy wybrać czyjeś imię i nazwisko.
Przykłady przypadków użycia
Przykłady sytuacji, w których kolumna wyliczana może być przydatna, to:
- Obliczanie wieku osoby na podstawie jej daty urodzenia w innej kolumnie
- Łączenie imienia i nazwiska w oparciu o imię znajdujące się w jednej kolumnie, a nazwisko w drugiej
- Obliczanie wartości zapasów produktu na podstawie liczby produktów w magazynie w jednej kolumnie i ceny w drugiej
- Oblicz BMI (wskaźnik masy ciała) danej osoby na podstawie jej wzrostu i wagi w innej kolumnie
- Tworzenie kolumny „Ranking”, która porządkuje wiersze na podstawie wartości w innych kolumnach
- Obliczanie czasów biegu maratończyków na podstawie czasu rozpoczęcia i zakończenia w innych kolumnach
Trwałość kolumn obliczanych
Obliczona kolumna nie jest fizycznie przechowywana w tabeli, chyba że jest oznaczona jako PERSISTED
.
Jeśli to nie utrwaloną kolumną obliczeniową, obliczenia będą wykonywane przy każdym dostępie do tabeli.
Jeśli jest utrwalona kolumna wyliczona, obliczona wartość jest fizycznie przechowywana w tabeli. Oznacza to, że nie musi obliczać jego wartości za każdym razem, gdy uruchamiasz zapytanie. Jeśli dane są aktualizowane w jednej z kolumn, dla których czerpią swoją wartość, wartość obliczonej kolumny jest aktualizowana i przechowywana w tabeli. Może to pomóc w poprawie wydajności.
Należy pamiętać, że kolumna wyliczana może być utrwalona tylko wtedy, gdy jest deterministyczna. Jeśli jest niedeterministyczny, otrzymasz błąd, jeśli spróbujesz go utrwalić.
niedeterministyczny kolumna to taka, która zwraca różne wartości nawet przy tych samych danych wejściowych. Na przykład, jeśli w obliczeniach użyjesz bieżącej daty, wartość będzie codziennie inna i zostanie uznana za niedeterministyczną.
Jeśli po prostu łączysz imię i nazwisko, byłoby to deterministyczne i możesz zachować taką kolumnę.
Tworzenie kolumny wyliczanej
Kolumny obliczane można tworzyć z interfejsu GUI programu SSMS lub za pomocą języka Transact-SQL.
W SSMS
W SSMS, będąc w Projekcie tabel , utwórz kolumnę, która ma być kolumną wyliczaną (lub po prostu wybierz ją, jeśli już istnieje), a następnie w sekcji Właściwości kolumny wprowadź formułę w Specyfikacji kolumny obliczeniowej pole właściwości.
Nie martw się o nadanie wyliczonej kolumnie typu danych – SQL Server nada jej typ danych na podstawie Twojej formuły.
Możesz także wybrać Tak dla jest utrzymywane Jeśli chcesz.
Korzystanie z T-SQL
Zobacz Tworzenie kolumny obliczanej w SQL Server przy użyciu T-SQL, aby zapoznać się z przykładem tworzenia kolumny obliczanej przy użyciu języka Transact-SQL.