10.06. SQL ograničenja (constraints) i ključne reči DISTINCT, CONVERT, UNION i EXCEPT
1. Šta su constraints (ograničenja)?
Constraints predstavljaju pravila koja određuju:
kakvi podaci smeju da budu upisani u tabelu.
Njihova svrha je da obezbede: tačnost podataka, konzistentnost, integritet baze.
Na primer: sprečiti prazna polja, sprečiti duplikate, ograničiti dozvoljene vrednosti, povezati tabele.
2. PRIMARY KEY
Primarni ključ jedinstveno identifikuje svaki zapis.
Karakteristike:
-
ne sme biti duplikata,
-
ne sme biti
NULL.
Primer:
CREATE TABLE Ucenik
(
ID INT PRIMARY KEY,
Ime VARCHAR(50)
);
3. FOREIGN KEY
FOREIGN KEY povezuje dve tabele.
Obezbeđuje da vrednost postoji u drugoj tabeli.
Primer
Tabela odeljenja:
CREATE TABLE Odeljenje
(
ID INT PRIMARY KEY,
Naziv VARCHAR(20)
);
Tabela učenika:
CREATE TABLE Ucenik
(
ID INT PRIMARY KEY,
Ime VARCHAR(50),
OdeljenjeID INT,
CONSTRAINT f1 FOREIGN KEY (OdeljenjeID)
REFERENCES Odeljenje(ID)
);
Učenik može imati samo postojeće odeljenje.
4. UNIQUE
Sprečava dupliranje vrednosti.
Primer:
Email VARCHAR(50) UNIQUE
Dva korisnika ne mogu imati isti email.
5. NOT NULL
Sprečava prazne vrednosti.
Primer:
Ime VARCHAR(50) NOT NULL
Kolona mora imati podatak.
6. CHECK
Postavlja uslov koji podaci moraju zadovoljiti.
Primer:
CHECK (Ocena >= 1 AND Ocena <= 5)
Ne može se upisati ocena 8 ili −1.
7. DISTINCT
DISTINCT uklanja duplikate iz rezultata upita.
Primer
Tabela:
| Grad |
|---|
| Novi Sad |
| Beograd |
| Novi Sad |
Upit:
SELECT DISTINCT Grad
FROM Kupac;
Rezultat:
Novi Sad
Beograd
⚠️ DISTINCT nije constraint.
8. CONVERT
Pretvara jedan tip podataka u drugi.
Primer:
SELECT CONVERT(INT, '100');
Rezultat:
100
⚠️ CONVERT nije constraint.
9. UNION
Spaja rezultate više SELECT upita.
Primer:
SELECT Ime FROM Ucenik
UNION
SELECT Ime FROM Profesor;
Dobija se jedna lista imena.
⚠️ UNION nije constraint.
10. EXCEPT
Prikazuje razliku između rezultata dva upita.
Primer:
SELECT Ime FROM Ucenik
EXCEPT
SELECT Ime FROM Maturanti;
Prikazuju se učenici koji nisu maturanti.
⚠️ EXCEPT nije constraint.
Pregled ključnih reči
| Ključna reč | Constraint? | Namena |
|---|---|---|
FOREIGN KEY |
✅ | Povezivanje tabela |
UNIQUE |
✅ | Jedinstvene vrednosti |
DISTINCT |
❌ | Uklanja duplikate u SELECT-u |
CHECK |
✅ | Provera uslova |
CONVERT |
❌ | Konverzija tipa podataka |
UNION |
❌ | Spajanje rezultata |
NOT NULL |
✅ | Zabranjuje NULL |
EXCEPT |
❌ | Razlika skupova |