Tworzenie tabel – MSSQL 2008 Server cz.4

Print Friendly, PDF & Email

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.


Print Friendly, PDF & Email

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:).

Dodaj komentarz

beitadmin.pl - Droga Administratora IT