Tworzenie tabel w SQL Server jest możliwe na dwa sposoby: poprzez uruchomienie napisanego ręcznie polecenia SQL lub z wykorzystaniem graficznym aplikacji SQL Server Management Studio Express. Omówimy krótko obie możliwości prezentując je we wspomnianej aplikacji. Wykorzystamy przy tym bazę danych utworzoną w poprzedniej części kursu.
Aby utworzyć tabelę w ramach danej bazy, należy użyć na odpowiednim elemencie drzewa obiektów prawego klawisza myszy oraz wybrać polecenie New Table":
Spowoduje to wyświetlenie dwóch dodatkowych okien: okna, w którym definiujemy poszczególne pola tabeli (nazwy, typy oraz inne szczególne właściwości) - wyświetlane centralnie oraz pole właściwości (z prawej strony ekranu) zawierające ogólne opcje tworzonej tabeli.:
W oknie tworzenia tabeli (centralnym) mamy dwie sekcje: w górnej tabeli wpisujemy kolejno nazwy pól (Column Name), typ pola (Data Type) oraz oznaczamy, czy pole może być puste (Allow Nulls). W dolnej części ekranu nazwanej Column Properties definiujemy natomiast dodatkowe właściwości związane z definiowanym polem.
Zatrzymajmy się w tym miejscu nad typami pól w SQL Server:
Liczby dokładne
Typ | Wartości od | Wartości do |
bigint | -9 223 372 036 854 775 808 | 9 223 372 036 854 775 807 |
int | -2 147 483 648 | 2 147 483 647 |
smallint | -32 768 | 32 767 |
tinyint | 0 | 255 |
bit | 0 | 1 |
decimal | -1038 +1 | 1038 "1 |
numeric | -1038 +1 | 1038 "1 |
money | -922 337 203 685 477,5808 | +922 337 203 685 477,5807 |
smallmoney | -214 748,3648 | +214 748,3647 |
Typy danych decimal oraz numeric są identyczne jeśli chodzi o ich zastosowanie.
Liczby przybliżone
Typ | Wartości od | Wartości do |
float | -1.79E + 308 | 1.79E + 308 |
real | -3.40E + 38 | 3.40E + 38 |
Data i czas
Typ | Wartości od | Wartości do |
datetime (dokładność 3.33 milisekundy) | 1. styczeń 1753 | 31. grudzień 9999 |
smalldatetime (dokładność 1 minuty) | 1. styczeń 1900 | 6. czerwiec 2079 |
Łańcuchy znaków
Typ | Opis |
char | Tekst o stałej długości - max. 8 000 znaków długości |
varchar | Tekst o zmiennej długości - max. 8 000 znaków długości |
varchar(max) | Tekst o zmiennej długości - max. 231 znaków długości |
text | Tekst o zmiennej długości - max. 2 147 483 647 znaków długości |
Tekst Unicode
Typ | Opis |
nchar | Tekst Unicode o stałej długości - max. 4 000 znaków |
nvarchar | Tekst Unicode o zmiennej długości - max. 4 000 znaków |
nvarchar(max) | Tekst Unicode o zmiennej długości - max. 230 znaków |
ntext | Tekst Unicode o zmiennej długości - max. 1 073 741 823 znaków |
Dane binarne
Typ | Opis |
binary | Dane binarne o stałej wielkości - max. wielkość 8 000 bajtów |
varbinary | Dane binarne o zmiennej wielkości - max. wielkość 8 000 bajtów |
varbinary(max) | Dane binarne o zmiennej wielkości - max. wielkość 231 bajtów |
image | Dane binarne o zmiennej wielkości - max. wielkość 2 147 483 647 bajtów |
Inne typy danych
- sql_variant: Przechowuje dane różnego typu zgodne z SQL Server za wyjątkiem text. ntext. i timestamp.
- timestamp: Przchowuje unikatowy numer symbolizujący datę i godzinę odświeżany za każdym razem kiedy ma miejsce zmiana wartości rekordu.
- uniqueidentifier: Przechowuje globalny unikalny identyfikator (GUID)
- xml: Przechowuje informacje w formacie XML
- cursor: Odwołanie do kursora
- table:Przechowuje wyniki zapytania do późniejszego wykorzystania
Po powyższym przeglądzie typów możemy wrócić do tworzenia samej tabeli. Jako pierwsze ustawimy pole, które będzie zawierało kolejne numery rekordów, począwszy od 1.:
Czerwonym kolorem zaznaczona jest ta część właściwości pola o nazwie "id", która pozwala zdefiniować, iż określone pole będzie zawierać unikatowe wartości ("Is Identity" = True), począwszy od 1 ("Identity Seed"), wzrastające o 1 ("Identity Increment"). W kolejnych polach, które nazwiemy "klient", "produkt" oraz "ilosc" nie będziemy już wykorzystywać tej funkcjonalności. Używamy jeszcze tylko skrótu Ctrl+S lub klikamy ikonę dyskietki w celu zapisania projektu tabeli, podajemy nazwę (domyślną zmienimy na "sprzedaz") i gotowe:
Teraz dla utrwalenia oraz przygotowania środowiska dla kolejnych rozdziałów, stwórzmy kolejną prostą tabelę o nazwie "produkty":
Zmodyfikujmy jeszcze poprzednią tabelę o pole "id_prod" tak, aby wraz z polem "id" (z tabeli "produkty") zawierały indeksy produktów, które będą służyć do łączenia tabel podczas tworzenia zapytań do bazy danych (innymi słowy w polu "id_prod" znajdzie się taka liczba, która odpowiada produktowi o tej samej nazwie z tabeli "produkty"):
W ten prosty sposób zaprezentowaliśmy przy okazji jak można modyfikować wcześniej stworzoną tabelę wraz ze wstawianiem w niej dodatkowych pól.
Zobaczmy teraz co się stanie w momencie, kiedy użyjemy polecenia Script Table as > Create To, jak na obrazie poniżej:
Program wygenerował nam polecenie SQL, dzięki któremu możemy utworzyć identyczną jak przed chwilą tabelę, jednak bez używania graficznego interfejsu wyboru pól i ustawiania ich właściwości - używając okna edytora SQL. Kluczowym poleceniem jest tu:
Jest to standardowa składnia polecenia tworzącego tabele w SQL Server (i nie tylko).
Na koniec tego rozdziału wypełnimy tabele danymi. W tym celu musimy ją otworzyć odpowiednim poleceniem:
W centralnym oknie pojawi się zawartość otwartej tabeli. W tej chwili możemy zacząć po prostu wpisywać do niej dane. Możemy też (o ile mamy przygotowane dane w innym miejscu, jak np. w Excelu) zaznaczyć myszką cały pierwszy rekord tabeli i wkleić dane Ctrl+V, które wcześniej skopiowaliśmy do schowka Ctrl+C:
i druga tabela:
Mamy przygotowane dwie, pierwsze tabele wraz z danymi - w kolejnych rozdziałach zaczniemy tworzyć zapytania do danych w nich umieszczonych.