Tworzenie, usuwanie i modyfikacja tabel w SQL

Dane w typowych bazach danych (np. MySQL, MsSQL) przechowywane są w tak zwanych relacjach czyli inaczej mówiąc tabelach. Tabele oczywiście składają się z wierszy (rekordów) i określonego typu kolumn. W tym artykule zapoznamy się z funkcjami SQL umożliwiającymi tworzenie tabel.

Fot: n3wjack, CC BY-SA 2.0.

Fot: n3wjack, CC BY-SA 2.0.

Tworzymy pierwszą tabelę w SQL

Na początek stwórzmy tabelę składającą się z trzech kolumn (jedna kolumna będzie typu int, druga i trzecia typu varchar – czyli będzie przystosowana do przechowywania tekstu):

ID Imie Nazwisko
1 Jan Kowalski
2 Marta Nowak

Aby stworzyć powyższą tabelę w SQL musimy skorzystać z funkcji CREATE TABLE, przykład:

Powyższy kod stworzył nam tabelę o nazwie nazwaTabeli. Oczywiście nie zawiera ona żadnych danych.

Ogólna składnia:

Typy danych

Jak pewnie zauważyliście SQL oferuje różne typy przechowywanych danych, w tabeli poniżej zamieszczam te najbardziej popularne:

TYP Opis
VARCHAR(200) Typ tekstowy, w nawiasach podajmy liczbę znaków jakie maksymalnie będzie można zapisać w danej kolumnie (do 8 000)
INT Liczba całkowita (od -231 do 231-1)
FLOAT(2) Liczby rzeczywiste z określoną w nawiasach dokładnością (1-24 – 7 cyfr, 25-53 – 15 cyfr)
DATETIME Data i czas (Format: YYYY-MM-DD HH:mm:SS, Y – Rok, M – Miesiąc, D – Dzień, H – Godzina, m – Minuta, S – sekunda)
CHAR Łańcuch znaków o długości do 8000 znaków
TEXT Typ tekstowy (maksymalna liczba znaków: 231 – 2 147 483 647)
MONEY Typ danych służący do przechowywania wartości pieniężnych (dokładność do jednej dziesięciotysięcznej jednostki, przechowuje liczby z zakresu: od -263 do 263-1

Usuwanie tabeli

Tabelę usuwamy stosując instrukcję DROP TABLE:

Modyfikacja utworzonej tabeli

Modyfikując utworzoną już tabelę, musimy zastosować instrukcję ALTER TABLE. Umożliwia ona między innymi dodanie nowej kolumny, skasowanie już utworzonej kolumny czy też dodać lub usunąć dane ograniczenie.

Dodanie nowej kolumny do już istniejącej tabeli:

Usunięcie kolumny z istniejącej tabeli:

Ograniczenia

W tabelach tworzonych w bazach danych można narzucić pewne ograniczenia określające dokładnie strukturę danych jakie mogą zostać zapisane w danej kolumnie.

Zabraniamy wstawianie wartości NULL (czyli po prostu nie wstawienie niczego):

Jak widać na powyższym przykładzie robimy to wstawiając po typie danej kolumny klauzulę NOT NULL.

Można to oczywiście zrobić na utworzonej już tabeli:

Aby jawnie zezwolić na wstawianie NULL można po prostu pominąć słowo NOT:

Klucz podstawowy

Klucz podstawowy w tabelach odgrywa bardzo ważną rolę, bowiem służy do jednoznacznego identyfikowania wierszy (rekordów) w danej tabeli. Logiczne jest zatem to, że dane w tej kolumnie (lub kolumnach) nie mogą się powtarzać (lub nie mogą występować w takim samym układzie wielokrotnie).

Klucz podstawowy to oczywiście zwykła kolumna o jakimś typie danych (najczęściej jest to INT) zawierająca stosowne ograniczenia (dane muszą być unikalne, czyli nie mogą się powtarzać).

Tworzenie tabeli z kluczem podstawowym:

Jak widać po typie podajemy informację iż jest to klucz podstawowy – PRIMARY KEY.

Dodanie klucza podstawowego do istniejącej tabeli:

Automatyczna inkrementacja klucza podstawowego

Dobrze by było, żeby przy wstawianiu nowych danych do tabeli nikt nie myślał, jaką wartość podać dla klucza gdyż ktoś po prostu może nie wiedzieć jakie ID posiada ostatnio dodany rekord. Przydało by się, żeby wartość tej kolumny była automatycznie uzupełniana przez serwer bazodanowy.

MsSQL

W bazie danych firmy Microsoft (MsSQL) auto-inkrementacje uzyskuje się za pomocą komendy IDENTITY (UWAGA: Dodanie tej własności dla kolumny jest możliwe tylko przy jej tworzeniu, nie ma możliwości zaktualizowania utworzonej już kolumny):

MySQL

W bazie danych MySQL efekt ten uzyskujemy przez zastosowanie komendy AUTO_INCREMENT:

Niepowtarzalność danych

Jeżeli zdecydujemy się na używanie jako klucza podstawowego danych, które nie są automatycznie generowane przez serwer bazodanowy musimy oczywiście zagwarantować ich niepowtarzalność (unikalność) tak aby można było jednoznacznie zidentyfikować poszczególnych rekord w tabeli.

W bazach MsSQL oraz MySQL wykonuje się to za pośrednictwem słowa kluczowego UNIQUE:

, , , , , , , , , , , , , , , ,