Typy danych
Typy danych w kontekście baz danych określają rodzaj danych, które mogą być przechowywane w określonym polu w tabeli bazy danych. Każdy typ danych ma swoje własne cechy, takie jak zakres wartości, wymagana ilość pamięci, sposób sortowania itp. Typy danych pomagają bazie danych w interpretacji i przechowywaniu informacji zgodnie z ich właściwościami. Oto kilka kluczowych cech typów danych w bazach danych:
-
Zakres wartości: Określa, jakie wartości mogą być przechowywane w danym polu, na przykład liczby całkowite, łańcuchy znaków, daty itp.
-
Wymagana pamięć: Każdy typ danych zajmuje określoną ilość pamięci w bazie danych. Na przykład, typ danych INT może wymagać mniej pamięci niż BIGINT.
-
Format danych: Określa format, w jakim dane są przechowywane i reprezentowane w bazie danych, na przykład liczby całkowite, zmiennoprzecinkowe, daty, czasy itp.
-
Operacje możliwe do wykonania: Niektóre typy danych pozwalają na określone operacje, takie jak dodawanie, odejmowanie, łączenie, porównywanie itp.
-
Porównywalność i sortowalność: Niektóre typy danych mogą być sortowane i porównywane, podczas gdy inne mogą mieć ograniczenia w tym zakresie.
Podział typów danych w Microsoft SQL Server według kategorii:
Typy numeryczne:
- BIT: Typ logiczny przechowujący wartości true/false lub 0/1
- TINYINT: Typ danych całkowitoliczbowy przechowujący liczby całkowite z zakresu od 0 do 255.
- SMALLINT: Typ danych całkowitoliczbowy przechowujący liczby całkowite z zakresu od -32,768 do 32,767.
- INT: Typ danych całkowitoliczbowy przechowujący liczby całkowite z zakresu od -2,147,483,648 do 2,147,483,647.
- BIGINT: Typ danych całkowitoliczbowy przechowujący bardzo duże liczby całkowite z zakresu od -9,223,372,036,854,775,808 do 9,223,372,036,854,775,807.
- DECIMAL(p, s): Typ danych do przechowywania liczb zmiennoprzecinkowych o stałej precyzji i skali, gdzie p to liczba cyfr całkowitych, a s to liczba cyfr po przecinku.
- FLOAT: Typ danych do przechowywania liczb zmiennoprzecinkowych o podwójnej precyzji.
Typy znakowe:
-
CHAR(n): Typ danych do przechowywania łańcuchów znaków o stałej długości do n znaków.
-
VARCHAR(n): Typ danych do przechowywania łańcuchów znaków o zmiennej długości do n maksymalnych bajtów.
-
NCHAR(n): Typ danych do przechowywania łańcuchów znaków Unicode o stałej długości do n znaków.
-
NVARCHAR(n): Typ danych do przechowywania łańcuchów znaków Unicode o zmiennej długości do n maksymalnych bajtów. Różnica między typami danych
CHARaNCHARdotyczy sposobu przechowywania znaków w bazie danych: -
CHAR:
- Typ danych
CHARsłuży do przechowywania łańcuchów znaków o stałej długości. - Wartość liczby w nawiasach określa liczbę znaków, które mogą być przechowywane w polu
CHAR. Na przykład,CHAR(10)oznacza, że pole będzie przechowywać dokładnie 10 znaków. - Jeśli wprowadzona wartość jest krótsza niż określona długość, pole
CHARzostanie wypełnione spacjami, aby osiągnąć określoną długość.
- Typ danych
-
NCHAR:
- Typ danych
NCHARsłuży do przechowywania łańcuchów znaków Unicode o stałej długości. - Podobnie jak w przypadku
CHAR, wartość liczby w nawiasach określa liczbę znaków, które mogą być przechowywane w poluNCHAR. - W przeciwieństwie do typu
CHAR, który przechowuje znaki w formacie jednobajtowym (ASCII), typNCHARprzechowuje znaki w formacie Unicode, co oznacza, że może obsługiwać znaki z różnych zestawów znaków, w tym znaki spoza standardowego zestawu ASCII, ale przez to zajmuje dwukrotnie więcej miejsca w pamięci. Podsumowując, główna różnica między typami danychCHARaNCHARpolega na tym, żeCHARprzechowuje łańcuchy znaków w formacie jednobajtowym, podczas gdyNCHARprzechowuje znaki w formacie Unicode. W przypadku stosowania typuNCHAR, należy pamiętać, że zajmuje on dwukrotnie więcej miejsca niżCHARze względu na obsługę Unicode.
- Typ danych
Typy datowe i czasowe:
- DATE: Typ danych do przechowywania daty w formacie YYYY-MM-DD.
- TIME: Typ danych do przechowywania czasu w formacie godzina:minuta:sekunda.
- DATETIME: Typ danych do przechowywania daty i czasu w formacie YYYY-MM-DD godzina:minuta:sekunda.
- DATETIME2: Rozszerzony typ danych do przechowywania daty i czasu z większą precyzją.
- SMALLDATETIME: Typ danych do przechowywania daty i czasu w formacie YYYY-MM-DD godzina:minuta.
- TIMESTAMP: Typ danych do przechowywania znacznika czasu, który automatycznie się aktualizuje po zmianie danych w wierszu. To są podstawowe typy danych w Microsoft SQL Server, uporządkowane według kategorii. Każdy typ danych ma swoje specyficzne zastosowanie, które można dopasować do wymagań projektu.
Brak wartości
W SQL, NULL to specjalna wartość reprezentująca brak danych lub nieokreśloność. Oznacza to, że pole w bazie danych nie posiada żadnej konkretnej wartości.
Oto kilka cech dotyczących NULL w kontekście baz danych:
-
Brak wartości:
NULLoznacza brak konkretnej wartości w danym polu. -
Nieokreśloność: Może oznaczać, że wartość jest nieznana, niezdefiniowana lub nie dotyczy danego rekordu.
-
Dopuszczalność: Pola w bazie danych mogą być zdefiniowane jako NULLABLE (dopuszczające wartość
NULL) lubNOT NULL(nie dopuszczające wartościNULL). -
Porównywanie z NULL: Operacje porównania z
NULLsą specjalne. Porównanie równości zNULLzwróciFALSE, a porównanie nierówności zwróciNULL. Jak już wiemy, musimy użyć operatoraIS NULLlubIS NOT NULLdo sprawdzenia, czy wartość jestNULL.
Przykład:
- Jeśli masz pole w tabeli, które przechowuje wiek użytkownika, a wiek nie został jeszcze podany, można to pole zostawić puste (
NULL). - W przypadku niezdefiniowanej wartości, na przykład w sytuacji, gdy niektóre informacje nie są jeszcze znane, można użyć wartości
NULL.NULLjest przydatny do obsługi przypadków, gdy nie wszystkie informacje są dostępne lub nie są jeszcze znane. Jednak należy pamiętać, że nadmierny użytek wartościNULLmoże prowadzić do trudności w zapytaniach SQL, ponieważ operacje porównania zNULLmają specjalne zachowanie. Dlatego ważne jest ostrożne stosowanie wartościNULLi odpowiednie zarządzanie nimi w bazie danych.