SQL Server Data Types Tutorial (Polski)

w SQL kolumny tabeli są zdefiniowane w celu przechowywania określonego rodzaju wartości, takich jak liczby, daty lub tekst; są to tzw. typy danych. Z ponad trzydziestu typów danych SQL server do wyboru, typy danych mogą wydawać się zastraszające, ale w rzeczywistości istnieje tylko kilka powszechnie używanych w bazach danych.

po ogólnym zrozumieniu typów danych nie jest to skomplikowany temat. Zrozumiesz również, dlaczego istnieje potrzeba typów danych i dlaczego jest tak wiele odmian.,

w tym artykule omówimy najpopularniejsze typy danych i najlepsze praktyki ich wykorzystania.

wszystkie przykłady tej lekcji są oparte na Microsoft SQL Server Management Studio i Bazie Danych AdventureWorks2012. Zacznij korzystać z tych bezpłatnych narzędzi z moim przewodnikiem pierwsze kroki przy użyciu SQL Server.

czym są typy danych SQL Server?

zanim przejdziemy do typów danych używanych w SQL serverze, myślę, że ważne jest, aby każdy zrozumiał, czym jest typ danych i dlaczego są one potrzebne do użycia w komputerach.

na naszym przykładzie porozmawiamy o osobie., Jeśli zastanawiałeś się nad informacjami, których możesz użyć do opisania osoby, możesz pomyśleć o zebraniu jej imienia, daty urodzenia, wagi i liczby dzieci. Dla każdego z tych atrybutów dane zazwyczaj dzielą się na kilka kategorii.

nazwy są zapisywane jako tekst, daty urodzenia jako daty kalendarzowe, waga jako wartości dziesiętne, a liczba dzieci jako liczby całkowite. Każda z tych kategorii wartości jest typem danych.

jak typy SQL pomagają

typy danych definiują charakterystykę danych, które mogą być przechowywane w lokalizacji takiej jak Kolumna bazy danych., Typ danych definiuje możliwy zestaw wartości, które są akceptowane. Na przykład typ INT, który oznacza liczbę całkowitą w SQL server może akceptować tylko liczby całkowite, wartości dziesiętne nie są dozwolone.

oto lista niektórych osób i ich wieku

Wiek – tylko wartości tekstowe

Czy widzisz problem z tymi wiekami? Wszystkie są w niespójnym formacie. Nie tylko są one trudne do odczytania, ale sortowanie i obliczanie danych jest trudne., Używając typów danych SQL Server, które wymuszają oczekiwany typ danych do przechowywania, możemy osiągnąć znacznie lepszy wynik. Oto ta sama tabela z wiekami pokazanymi jako liczby całkowite

wiek zgodny z typem danych INT

gdy wiek jest zdefiniowany jako liczba całkowita, oczekiwane dane są wprowadzane jako liczby całkowite.

ponadto, bez wdawania się w szczegóły techniczne, możesz zobaczyć, że przechowywanie wieku jako liczby całkowitej zajmuje znacznie mniej miejsca niż wiek w pierwszej tabeli., Może to nie wydawać się wielkim problemem w przypadku małych baz danych, ale podczas pracy z danymi na smartfonach lub scenariuszami „big data” rozważania te sumują się.

gdy system zrozumie typ danych, może następnie sortować dane w kolejności, która ma sens, a także wykonywać obliczenia.

powody używania typów danych SQL Server

oto kilka powodów, dla których typy danych są ważne:

  1. dane są przechowywane w spójnym i znanym formacie.
  2. znajomość typu danych pozwala wiedzieć, które obliczenia i formuły można wykorzystać w kolumnie.,
  3. typy danych wpływają na pamięć masową. Niektóre wartości zajmują więcej miejsca, gdy są przechowywane w jednym typie danych w porównaniu z innym. Weźmy na przykład nasze tabele wiekowe Powyżej.
  4. typy danych wpływają na wydajność. Im mniej czasu baza danych ma na wnioskowanie wartości lub ich konwersję, tym lepiej. „Czy 32 grudnia 2015 roku to data?”

powszechnie używane typy danych SQL Server

w SQL definiujesz, jakie dane mają być przechowywane w kolumnach. Niektóre przykłady zawierają dane tekstowe lub liczbowe.,

jest to typ danych kolumny i jedna z jej najważniejszych właściwości, ponieważ sama określa, czy wartość jest ważna do przechowywania w kolumnie.

istnieje ponad trzydzieści różnych typów danych, z których można wybierać podczas definiowania kolumn, niektóre mają określone zastosowania, takie jak przechowywanie obrazów.

w tym artykule omówimy siedem typów danych, z którymi najczęściej spotykasz się w codziennym użytkowaniu SQL., Są to:

  • INT
  • VARCHAR, NVARCHAR
  • DATETIME
  • DECIMAL, FLOAT
  • BIT

INT – Integer typ danych

integer przechowuje liczby całkowite. Przykłady obejmują -23, 0, 5 i 10045. Liczby całkowite nie zawierają miejsc po przecinku. Ponieważ serwer SQL używa wielu słów komputerowych do reprezentowania liczby całkowitej, istnieją maksymalne i minimalne wartości, które może reprezentować. Typ danych INT może przechowywać wartość od -2,147,483,648 do 2,147,483,647.,

praktyczne zastosowania typu danych INT obejmują użycie go do liczenia wartości, przechowywania wieku osoby lub użycia jako klucza ID do tabeli.

ale INT nie byłoby tak dobre, aby śledzić terabajt przestrzeni adresowej dysku twardego, ponieważ typ danych INT idzie tylko do 2 miliardów i będziemy musieli śledzić do bilionów. Do tego możesz użyć BIGINTA.

typ danych INT jest używany w obliczeniach., Ponieważ DaysToManufacture jest zdefiniowany jako INT, możemy łatwo obliczyć godziny mnożąc je przez 24:

SELECT Name, DaysToManufacture, DaysToManufacture * 24 as Hourstomanufacture from Production.Produkt
/* Answer */SELECT Name, DaysToManufacture, DaysToManufacture * 24 as HoursToManufactureFROM Production.Product

tutaj możesz zobaczyć wyniki

wyniki obliczeń INT

istnieje wiele operacji i funkcji, których możesz użyć z liczbami całkowitymi, które omówimy, gdy zagłębimy się w funkcje.,

VARCHAR i nvarchar – wartości tekstowe

używają VARCHAR i NVARCHAR do przechowywania wartości tekstowych o zmiennej długości. „VARCHAR” oznacza znak zmiennej długości.

określa liczbę znaków, które mają być zapisane w VARCHARZE lub NVARCHARZE, gdy kolumna jest zdefiniowana. Zauważ, jak nazwa jest zdefiniowana tak, aby zawierała pięćdziesiąt znaków:

definicja VARCHAR pokazana w Eksploratorze obiektów SSMS

to, co sprawia, że VARCHAR jest popularny, to fakt, że wartości mniejsze niż pięćdziesiąt znaków zajmują mniej miejsca. Miejsce jest przydzielane w razie potrzeby., Różni się to od typu danych CHAR, który zawsze przydziela określoną długość, niezależnie od długości faktycznie przechowywanych danych.

typ danych VARCHAR może zazwyczaj przechowywać maksymalnie 8000 znaków. Użyj typu danych NVARCHAR do przechowywania tekstu Unicode. Ponieważ znaki UNICODE zajmują dwa razy więcej miejsca, kolumny NVARCHAR mogą przechowywać maksymalnie 4000 znaków.

zaletą NVARCHAR nad VARCHAR jest możliwość przechowywania znaków Unicode. Dzięki temu można przechowywać rozszerzone zestawy znaków, takie jak te używane w językach takich jak Kanji.,

bazy danych zaprojektowane przed SQL 2008 zazwyczaj używają VARCHAR; jednak bardziej nowoczesne bazy danych lub te o charakterze globalnym zwykle używają NVARCHAR.

DATETIME – Data i czas

używa typu danych DATETIME do przechowywania daty i czasu. Przykład wartości DATATIME jest

1968-10-23 1:45:37.123

jest to wartość dla października 23rd, 1968 at 1:45 AM. Właściwie czas jest bardziej precyzyjny. Czas to naprawdę 45 minut, 37.123 sekund.

w wielu przypadkach wystarczy zapisać datę. W takich przypadkach element czasowy jest zerowany., Tak więc, 5 listopada 1972 jest

1972-11-05 00:00:00.000

DATETIME może przechowywać daty od 1 stycznia 1753 do 31 grudnia 9999. To sprawia, że DATETIME jest dobry do nagrywania dat w dzisiejszym świecie, ale nie tak bardzo w William Shakespeare ' a.

jak bardziej zaznajomić się z różnymi wbudowanymi funkcjami SQL, będziesz w stanie manipulować danymi. Aby dać ci wgląd, użyjemy funkcji roku do liczenia pracowników zatrudnionych każdego roku. Gdy podano wartość DATETIME, funkcja YEAR zwraca rok.,

zapytanie, którego użyjemy to

zaletą jest typ DATETIME, który zapewnia, że wartości są poprawnymi datami. Po upewnieniu się, jesteśmy w stanie użyć wielu funkcji do obliczenia liczby dni między datami, miesiąca daty i tak dalej.

szczegółowo omówimy te różne funkcje w innym artykule na blogu.

DECIMAL i FLOAT – Decimal Points

używają zarówno dziesiętnych, jak i zmiennoprzecinkowych typów danych do pracy z wartościami dziesiętnymi, takimi jak 10.3.,

dodałem DECIMAL i FLOAT do tej samej kategorii, ponieważ obie mogą obsługiwać wartości z punktami dziesiętnymi; jednak obie robią to inaczej:

Jeśli potrzebujesz dokładnych wartości, takich jak podczas pracy z danymi finansowymi lub księgowymi, użyj DECIMAL. Powodem jest dziesiętny typ danych pozwala określić liczbę punktów dziesiętnych do utrzymania.

dziesiętne

dziesiętne typy danych są definiowane przez precyzję i skalę. Precyzja określa liczbę wszystkich cyfr do przechowywania; natomiast skala określa liczbę cyfr na prawo od punktu dziesiętnego.,

a DECIMAL datatype is specified as DECIMAL(precision,scale).

typ danych dziesiętnych nie może być większy niż 38 cyfr. Dokładność i skala muszą być zgodne z następującą relacją

0 <= scale <= precision <= 38 digits

w produkcji.Tabela produktowa, Typ danych kolumny wagowej jest zdefiniowany jako dziesiętny(8,2). Pierwsza cyfra to precyzja, druga skala.

waga jest zdefiniowana tak, aby miała osiem całkowitych cyfr, z których dwie znajdują się na prawo od miejsca dziesiętnego. Wykonamy następujące przykładowe zapytanie, aby zilustrować, w jaki sposób ten typ danych.,

SELECT DISTINCT weight from Production.ProductWHERE Waga między 29.00 a 189.00 ORDER BY Weight DESC
/* Answer */SELECT DISTINCT WeightFROM Production.ProductWHERE Weight BETWEEN 29.00 and 189.00ORDER BY Weight DESC

FLOAT

gdzie dziesiętne typy danych są świetne dla dokładnych liczb, pływaki są naprawdę dobre dla długich wartości liczbowych. Chociaż wartość dziesiętna może mieć łącznie 38 cyfr, w wielu zastosowaniach inżynieryjnych i naukowych jest to niewystarczające. FLOAT wznosi się na szczyt w zastosowaniach naukowych, w których napotykane są ekstremalne wartości liczbowe!

pływaki mają zakres od – 1.,79E + 308 do 1.79 E + 308. Oznacza to, że największa wartość może wynosić 179, a następnie 306 zer(rzeczywiście duże!).

ze względu na sposób przechowywania danych zmiennoprzecinkowych w komputerze (patrz specyfikacja zmiennoprzecinkowa IEEE 754) liczba przechowywana jest bardzo blisko. Dla wielu zastosowań jest to wystarczająco dobre.

ze względu na przybliżone zachowanie, unikaj używania<> I = operatorów w klauzuli WHERE. To oświadczenie spaliło May dba!

WHERE mass = 2.5

ich oczekiwanie jest przerywane, gdy masa ma być równa 2.,5, ale tak naprawdę na komputerze jest on przechowywany jako 2.49999999999999999; dlatego nie równa się 2.5000000000000000!

taka jest natura zmiennoprzecinkowych i komputerów. Widzimy 2.499999999999999 i uważamy, że dla celów praktycznych jest to 2.5, ale aby komputer był wyłączony całkiem sporo. J

wartości bit – Boolean lub Yes/No

są chwile, kiedy po prostu trzeba zapisać, czy coś „jest” lub „nie jest.”Na przykład, czy pracownik jest aktywny. To właśnie w tych przypadkach typ danych bitowych przychodzi do siebie. Ten typ danych jest jednym z trzech stanów: 1, 0 lub NULL.,

wartość 1 oznacza TRUE, a 0 FALSE.

w tym zapytaniu wymieniamy wszystkie dostępne stanowiska pracy

wybierz odrębny tytuł pracy z zasobów ludzkich.EmployeeWHERE SalariedFlag = 1
SELECT DISTINCT JobTitleFROM HumanResources.EmployeeWHERE SalariedFlag = 1

mogliśmy również użyć 'True' zamiast 1. Oto ten sam przykład z użyciem’True'

Leave a Comment