Co to jest constraint w SQL?
Constraint, czyli ograniczenie, to mechanizm w SQL, który pozwala na narzucenie pewnych reguł na dane w tabelach bazy danych. Dzięki constraintom możemy zapewnić integralność danych, co jest kluczowe dla zachowania spójności i poprawności informacji przechowywanych w bazie danych. Constrainty są definiowane podczas tworzenia tabeli lub mogą być dodane do istniejącej tabeli za pomocą odpowiednich poleceń SQL.
Rodzaje constraintów w SQL
W SQL istnieje kilka rodzajów constraintów, z których każdy pełni specyficzną funkcję. Poniżej przedstawiamy najważniejsze z nich:
- NOT NULL – Zapewnia, że kolumna nie może przechowywać wartości NULL.
- UNIQUE – Gwarantuje, że wszystkie wartości w kolumnie są unikalne.
- PRIMARY KEY – Kombinacja NOT NULL i UNIQUE. Identyfikuje unikalnie każdy rekord w tabeli.
- FOREIGN KEY – Zapewnia integralność referencyjną między dwiema tabelami.
- CHECK – Narzuca warunek, który musi być spełniony przez wszystkie wartości w kolumnie.
- DEFAULT – Ustawia domyślną wartość dla kolumny, jeśli nie zostanie podana żadna wartość.
NOT NULL
Constraint NOT NULL zapewnia, że kolumna nie może przechowywać wartości NULL. Jest to przydatne, gdy chcemy upewnić się, że dane w kolumnie są zawsze dostępne.
CREATE TABLE Pracownicy ( ID INT NOT NULL, Imie VARCHAR(50) NOT NULL, Nazwisko VARCHAR(50) NOT NULL );
UNIQUE
Constraint UNIQUE gwarantuje, że wszystkie wartości w kolumnie są unikalne. Można go również użyć do kombinacji kolumn, aby zapewnić unikalność w połączeniu kilku kolumn.
CREATE TABLE Pracownicy ( ID INT NOT NULL, Email VARCHAR(100) UNIQUE );
PRIMARY KEY
Constraint PRIMARY KEY to kombinacja NOT NULL i UNIQUE. Identyfikuje unikalnie każdy rekord w tabeli. Każda tabela może mieć tylko jeden klucz główny.
CREATE TABLE Pracownicy ( ID INT PRIMARY KEY, Imie VARCHAR(50) NOT NULL, Nazwisko VARCHAR(50) NOT NULL );
FOREIGN KEY
Constraint FOREIGN KEY zapewnia integralność referencyjną między dwiema tabelami. Oznacza to, że wartość w jednej tabeli musi odpowiadać wartości w innej tabeli.
CREATE TABLE Dzialy ( DzialID INT PRIMARY KEY, Nazwa VARCHAR(50) NOT NULL ); CREATE TABLE Pracownicy ( ID INT PRIMARY KEY, Imie VARCHAR(50) NOT NULL, Nazwisko VARCHAR(50) NOT NULL, DzialID INT, FOREIGN KEY (DzialID) REFERENCES Dzialy(DzialID) );
CHECK
Constraint CHECK narzuca warunek, który musi być spełniony przez wszystkie wartości w kolumnie. Jest to przydatne do zapewnienia, że dane spełniają określone kryteria.
CREATE TABLE Pracownicy ( ID INT PRIMARY KEY, Imie VARCHAR(50) NOT NULL, Nazwisko VARCHAR(50) NOT NULL, Wiek INT CHECK (Wiek >= 18) );
DEFAULT
Constraint DEFAULT ustawia domyślną wartość dla kolumny, jeśli nie zostanie podana żadna wartość. Jest to przydatne do zapewnienia, że kolumna zawsze ma wartość, nawet jeśli nie zostanie podana podczas wstawiania rekordu.
CREATE TABLE Pracownicy ( ID INT PRIMARY KEY, Imie VARCHAR(50) NOT NULL, Nazwisko VARCHAR(50) NOT NULL, DataZatrudnienia DATE DEFAULT GETDATE() );
Podsumowanie
Constrainty w SQL są kluczowym elementem zapewniającym integralność danych w bazach danych. Dzięki nim możemy narzucać różne reguły na dane, co pozwala na utrzymanie spójności i poprawności informacji. W artykule omówiliśmy najważniejsze rodzaje constraintów, takie jak NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK i DEFAULT, oraz przedstawiliśmy przykłady ich zastosowania. Zrozumienie i umiejętne wykorzystanie constraintów jest niezbędne dla każdego, kto pracuje z bazami danych.