Tak jak w każdym innym przypadku musimy w jakiś sposób przechowywać dane w tabelach. W tym celu musimy zapoznać się z dostępnymi typami danych:
1) Dostępne liczbowe typy danych:
Nazwa typu
|
Zakres |
Potrzebna pamięć
|
TINYINT | 0 do 255 | 1 bajt |
SMALLINT | -32,768 do 32,767 | 2 bajty |
INT | -231 do 231-1 | 4 bajty |
BIGINT | -263 do 263-1 | 8 bajty |
DECIMAL(P,S) / NUMERIC (P,S) | -1038+1 do 1038-1 | 5-17 bajtów |
SMALLMONEY | -214,748.3648 do 214,748.3647 | 4 bajty |
MONEY |
-922,337,203,685,477.5808 do
922,337,203,685,477.5807 |
8 bajtów |
REAL | -3.40E38 do -1.18E38, 0 oraz 1.18E38 to 3.40E38 | 4 bajty |
FLOAT(N) |
-1.79E308 do -2.23E-308, 0, oraz 2.23E-308 do
1.79E308 |
4 lub 8 bajtów |
Poza standardowymi typami danych, mamy również takie wskazujące na zapisywanie wartości pieniężnych – MONEY oraz SMALLMONEY.
Poza typami reprezentującymi dane numeryczne, znajdują się również takie które pozwalają na przechowywanie danych tekstowych:
-CHAR(n) – przechowuje do 8000 znaków (inne niż Unicode),
–VARCHAR(n | max) – przechowuje do 8000 znaków max. 2GB (inne niż Unicode),
-NCHAR(n) – przechowuje do 4000 znaków (Unicode),
-NVARCHAR(n | max) – przechowuje do 4000 znaków max. 2GB (Unicode)
Posiadamy również możliwość nadzoru nad datami w naszej bazie, do tego służą poniższe typy:
Nazwa typu
|
Zakres |
Dokładność / Potrzebna pamięć
|
SMALLDATETIME | 01/01/1900 do 06/06/2079 | 1 minuta / 4 bajty |
DATETIME | 01/01/1753 do 12/31/9999 | 0.00333 sekundy / 8 bajtów |
DATETIME2 | 01/01/0001 do 12/31/9999 | 100 nanosekund / 6 do 8 bajtów |
DATETIMEOFFSET | 01/01/0001 do 12/31/9999 | 100 nanosekund / 8 do 10 bajtów |
DATE | 01/01/0001 do 12/31/9999 | 1 dzień / 3 bajty |
TIME |
00:00:00.0000000 do
23:59:59.9999999 |
100 nanosekund / 3 do 5 bajtów |
Na koniec mamy jeszcze dane binarne:
-BIT – Null / 0 oraz 1, który zajmuje bit,
-BINARY – stała długość, do 8000 bajtów,
-VARBINARY – zmienna długość, do 8000 bajtów
Dodatkowo do tabeli możemy wstawić kolumnę będącą identyfikatorem (IDENTITY) oraz kolumny rozrzedzonej (SPARCE), dzięki której możemy przechowywać wartości NULL bez powiększenia zajętości miejsca na dysku.Utworzymy testowy schemat dla naszej bazy oraz tabelę wykorzystującą ten mechanizm:
USE nazwa_naszej_bazy
GO
CREATE SCHEMA test AUTHORIZATION dbo
GO
CREATE TABLE test.Customer
(CustomerID INT IDENTITY(1,1),
LastName VARCHAR(50) NOT NULL,
FirstName VARCHAR(50) NOT NULL,
CreditLine MONEY SPARSE NULL,
CreationDate DATE NOT NULL)
GO
Możemy również utworzyć tabelkę, w której poza „normalnymi ” rekordami będą takie, których wynikiem jest suma innych ((1) kolumna wyliczeniowa) , oraz dodatkowo w celu zaoszczędzenia miejsca możemy użyć kompresji:
CREATE TABLE test.OrderHeader
(OrderID INT IDENTITY(1,1),
CustomerID INT NOT NULL,
OrderDate DATE NOT NULL,
OrderTime TIME NOT NULL,
SubTotal MONEY NOT NULL,
ShippingAmt MONEY NOT NULL,
OrderTotal AS (SubTotal + ShippingAmt)) — (1)
WITH (DATA_COMPRESSION = ROW) — kompresja wiersza
GO
Kompresji nie możemy użyć dla kolumn rozrzedzonych.
Dziękuję Ci, za poświęcony czas na przeczytanie tego artykułu. Jeśli był on dla Ciebie przydatny, to gorąco zachęcam Cię do zapisania się na mój newsletter, jeżeli jeszcze Cię tam nie ma. Proszę Cię także o “polubienie” mojego bloga na Facebooku oraz kanału na YouTube – pomoże mi to dotrzeć do nowych odbiorców. Raz w tygodniu (niedziela punkt 17.00) otrzymasz powiadomienia o nowych artykułach / projektach zanim staną się publiczne. Możesz również pozostawić całkowicie anonimowy pomysł na wpis/nagranie.
Link do formularza tutaj: https://beitadmin.pl/pomysly
Pozostaw również komentarz lub napisz do mnie wiadomość odpisuję na każdą, jeżeli Masz jakieś pytania:).