osobní stránky / internetová prezentace ver.2.0
Panoramatická fotka v záhlaví stránky

Páté cvičení

Zadání cvičení

  • V tabulce oddeleni vytvořte primární klíč a podmínkou ošetřete sloupec odd_nazev (musí být vyplněn a je unikátní) a odd_sidlo (musí být vyplněno)
  • V tabulce zamestnanci vytvořte primární klíč a podmínkou ošetřete sloupce plat (nesmí být <0) a jmeno (musí být vyplněno). Vytvořte cizí klíč, který se odkazuje na tabulku oddeleni.
  • Změňte jméno sloupce v tabulce zamestnanci rc na rodne_cislo
  • Přidejte do tabulky zamestnanci sloupec dovol_dny (počet dnů vybraných na dovolenou) – počet dnů je >=0 a < =25

Test správnosti omezení tabulek a sloupců:

  • Zkuste do tabulky zaměstnanci (jmeno, rodne_cislo, plat, odd_cislo, dovol_dny) vložit pomocí příkazu INSERT hodnoty (‘Novák Jan‘,‘800321/3317‘,21000,20,5)
  • Zkuste do tabulky zaměstnanci (jmeno, rodne_cislo,plat, odd_cislo, dovol_dny) vložit pomocí příkazu INSERT hodnoty (‘Novák Jan‘,‘800321/3317‘,21000,20,30)
  • Zkuste do tabulky oddeleni (odd_cislo, odd_sidlo, odd_patro) vložit pomocí příkazu INSERT hodnoty (11,’Kotlářská 2, Brno’,2)
  • Do tabulky oddeleni (odd_cislo, odd_nazev, odd_sidlo, odd_patro) vložte pomocí příkazu INSERT hodnoty (11, ’údržba budov’, ’Kotlářská 2, Brno’ ,2) a do tabulky zaměstnanci (jmeno, rodne_cislo, plat, odd_cislo, dovol_dny) hodnoty (‘Novák Jan‘, ‘800321/3317‘, 21000, 11, 15)
  • Zkuste smazat oddělení s číslem 11 (odd_cislo=11)

CONSTRAINT – Omezení sloupců v tabulce

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:

  • NOT NULL - nedovolí neznámou hodnotu (viz 2.cvičení)
  • UNIQUE - ukazuje na unikátní hodnotu(viz 2.cvičení)
  • PRIMARY KEY - Primární klíč - ukazuje na sloupec nebo skupinu sloupců v tabulce, které jsou jedinečnými identifikátory řádků v tabulce (sémanticky jde o kombinaci omezení NOT NULL a UNIQUE)
  • FOREIGN KEY - Cizí klíč - ukazuje na sloupec nebo skupinu sloupců, které jsou použity v jiné tabulce, než ve které tvoří primární klíč
  • CHECK - Podmínka pro sloupec tabulky - podmínka musí být splněna všemi hodnotami zadanými do sloupce (v případě, kdy není dostačující vlastnost použitého datového typu)

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
);

ALTER TABLE

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)
databaze/pate.txt · Poslední úprava: 28.08.2008 21:39 autor: zbych
Tento web používá technologie Dokuwiki a OATG
© 1997 - 2012, Zbyšek Podhrázský, podhrazsky@zbych.cz