Atrybuty kolumn
Analizując polecenie SQL, za pomocą którego tworzymy nową tabelę, możemy zauważyć, że niektóre kolumny posiadają atrybuty wyróżniające je spośród innych kolumn:
NOT NULL
– w każdym rekordzie kolumny oznaczonej tym atrybutem, musi znajdować się jakaś wartość. Jeżeli ten atrybut został pominięty, mamy sytuację przeciwną – w danej kolumnie, mogą znajdować się pola pusteNULL
.AUTO_INCREMENT
– dosłownie automatyczny przyrost. Stosuje się dla liczb całkowitych. Jeżeli utworzymy nowy rekord, to MYSQL automatycznie doda w tej kolumnie unikalny identyfikator – liczbę o jeden większą od największej z liczb znajdujących się w kolumnie. Jak łatwo się domyślić, taki atrybut stosujemy w kolumnie, która jest kluczem głównym tabeli. Kolumny z tym atrybutem muszą być indeksowane. Indeksy, to struktury danych umożliwiające szybkie wyszukiwanie danych w bazie danych. Mówiąc krótko – bez indeksów, baza danych działałaby bardzo powoli. Dobra wiadomość – w kolumnach, które zostały wskazane jako klucze, indeksy są tworzone automatyczne. Jest co prawda polecenie SQLCREATE INDEX
, ale na naszym poziomie nie będziemy go stosować.PRIMARY KEY
– kolumna jest kluczem głównym tabeli. Wynika z tego, że wartości tam wpisywane myszą być unikalne. Jak już powiedzieliśmy w poprzednim punkcie, MySQL automatycznie indeksuje takie kolumny. Dodając atrybutAUTO_INCREMENT
, powierzamy MySQL generowanie klucza – zapewnienie unikatowości oraz indeksowania. AtrybutPRIMARY KEY
, może być umieszczany za nazwą kolumny tylko w przypadku, gdy kluczem podstawowym tabeli jest tylko jedna kolumna. Jednak w tabeli ksiazki_zamowione, w skład klucza głównego wchodzą dwie kolumny, dlatego w tym przypadku klucz główny zdefiniowaliśmy następująco:PRIMARY KEY(zamowienie_id, isbn)
.
Po typie danych możesz określić inne opcjonalne atrybuty dla każdej kolumny:
- NOT NULL — każdy wiersz musi zawierać wartość dla tej kolumny, wartości null są niedozwolone
- Wartość domyślna – Ustaw wartość domyślną, która jest dodawana, gdy nie zostanie przekazana żadna inna wartość
- UNSIGNED – Używany do typów liczb, ogranicza przechowywane dane do liczb dodatnich i zera
- AUTO_INCREMENT – MySQL automatycznie zwiększa wartość pola o 1 za każdym razem, gdy dodawany jest nowy rekord
- PRIMARY KEY — używany do jednoznacznej identyfikacji wierszy w tabeli. Kolumna z ustawieniem PRIMARY KEY jest często numerem identyfikacyjnym i jest często używana z AUTO_INCREMENT
Każda kolumna tabeli może mieć zdefiniowane za pomocą atrybutów ograniczenia, które określają, jakie dane mogą zostać w niej zapisane. Ograniczenia dotyczące kolumn mogą być definiowane w trakcie tworzenia tabeli lub w trakcie jej modyfikowania.
PRIMARY KEY
Klucz podstawowy (Primary Key) to kolumna lub kombinacja kolumn, które w sposób jednoznaczny definiują wiersz w tabeli.
Do określenia, która kolumna tabeli będzie kluczem podstawowym, stosuje się atrybut PRIMARY KEY. Kolumna z tym atrybutem jest unikatowa i automatycznie indeksowana.
Przykład
Definiowanie klucza podstawowego podczas tworzenia tabeli Zamowienia:
NOT NULL
Atrybut NOT NULL oznacza, że w kolumnie nie mogą wystąpić wartości puste. Aby zabronić wstawiania do kolumny wartości NULL, podczas tworzenia tabeli należy po nazwie kolumny wpisać NOT NULL. Można również jawnie zezwolić na wprowadzanie do kolumny wartości NULL, wpisując po jej nazwie słowo NULL.
Przykład
Blokowanie wartości NULL podczas tworzenia tabeli Ksiazki:
IDENTITY
Atrybut IDENTITY oznacza automatyczny wzrost wartości w kolumnie, dla której został zdefiniowany. Na przykład IDENTITY( 1 , 1 ) oznacza wzrost wartości kolumny o 1, począwszy od wartości 1. Niemożliwe jest nadawanie atrybutu IDENTITY istniejącej kolumnie.
Przykład
Definiowanie ograniczeń dla kolumn podczas tworzenia tabeli Autor:
DEFAULT
Atrybut DEFAULT jest stosowany do wprowadzania do kolumny wartości domyślnej.
Przykład
Definiowanie wartości domyślnej podczas tworzenia tabeli Ksiazki:
UNIQUE
Atrybut UNIQUE jest stosowany, jeśli wartości w kolumnie nie mogą się powtarzać. Ograniczenie powtarzalności w kolumnie nie blokuje możliwości wpisania do niej wartości NULL.
Przykład
Definiowanie wartości unikatowych podczas tworzenia tabeli Ksiazki:
Warunek logiczny CHECK
Atrybut CHECK pozwala na zdefiniowanie warunków ograniczających zakres danych wprowadzanych do kolumny. Dla każdej kolumny można definiować wiele warunków. Można również tworzyć za pomocą operatorów NOT, AND i OR złożone warunki ograniczające.
Przykład
Definiowanie ograniczeń podczas tworzenia tabeli Ksiazki:
Przykład
Definiowanie atrybutów ograniczających podczas tworzenia tabeli Klient:
Przykład
Definiowanie atrybutów ograniczających podczas tworzenia tabeli Ksiazki: