Test správnosti omezení tabulek a sloupců:
SQL umožňuje definovat konkrétní omezení sloupců nebo celé tabulky. Tato omezení dávají uživateli větší možnost udržovat kontrolu nad databází a zajistit tak její integritu.
Existuje několik typů omezení - CONSTRAINT:
Syntaxe příkazu
CONSTRAINT nazev_omezeni TYP_OMEZENI (definice)
Příklad:
CREATE TABLE fakulty ( fak_id integer CONSTRAINT pk_fak PRIMARY KEY, nazev text NOT NULL UNIQUE, poc_stud integer CONSTRAINT stud_klad CHECK (poc_stud > 0) );
CREATE TABLE studenti ( rod_cislo varchar(11) CONSTRAINT pk_rc PRIMARY KEY, fak_id integer CONSTRAINT fk_fak REFERENCES fakulty (fak_id), rocnik integer NOT NULL );
nebo zkráceně…
CREATE TABLE fakulty ( fak_id integer PRIMARY KEY, nazev text NOT NULL UNIQUE, poc_stud integer CHECK (poc_stud > 0) );
CREATE TABLE studenti ( rod_cislo varchar(11) PRIMARY KEY, fak_id integer REFERENCES fakulty (fak_id), rocnik integer NOT NULL );
Příkaz slouží ke změně definice struktury tabulky, tj. přidávání/rušení sloupců, změně definice sloupce a integritního omezení.
Syntaxe příkazu ALTER TABLE (Změň tabulku):
ALTER TABLE nazev_tabulky ADD COLUMN|CONSTRAINT nazev_sloupce /parametry_sloupce/|definice omezení RENAME COLUMN|CONSTRAINT nazev_sloupce /parametry_sloupce/|definice omezení ALTER COLUMN|CONSTRAINT nazev_sloupce /parametry_sloupce/|definice omezení DROP COLUMN|CONSTRAINT nazev_sloupce /parametry_sloupce/|definice omezení
Příklady:
přidej sloupec:
ALTER TABLE "UCO".studenti ADD COLUMN bydliste varchar(30);
změň datový typ sloupce:
ALTER TABLE "UCO".studenti ALTER COLUMN bydliste TYPE varchar(80);
smaž sloupec:
ALTER TABLE "UCO".studenti DROP COLUMN bydliste;
přejmenuj tabulku:
ALTER TABLE "UCO".studenti RENAME TO Bc_studenti;
přejmenuj sloupec
ALTER TABLE "UCO".fakulty RENAME COLUMN nazev TO nazev_fak;
přidej CHECK omezení (rocnik<3):
ALTER TABLE Bc_studenti ADD CONSTRAINT stand_dob_st CHECK (rocnik<3);
smaž NOT NULL omezení u sloupce „rocnik“:
ALTER TABLE "UCO".Bc_studenti ALTER COLUMN rocnik DROP NOT NULL;
přidej NOT NULL omezení ke sloupci „rocnik“:
ALTER TABLE "UCO".Bc_studenti ALTER COLUMN rocnik SET NOT NULL¨
přidej UNIQUE omezení ke sloupci „rocnik“:
ALTER TABLE "UCO".Bc_studenti ADD CONSTRAINT unik_nazev UNIQUE (rocnik)
přidej cizí klíč do tabulky Bc_studenti:
ALTER TABLE "UCO".Bc_studenti ADD CONSTRAINT fak_fk FOREIGN KEY (fak_id) REFERENCES "UCO".fakulty (fak_id)