Databázové systémy Cvičení 5.2 SQL jako jazyk pro definici dat Detaily zápisu integritních omezení tabulek
Integritní omezení tabulek kromě integritních omezení sloupců lze zadat integritní omezení jako omezení celé tabulky zadává se za definici sloupců některá omezení sloupců mohou být zapsaná i jako omezení tabulky
integritní omezení pro výši maximálního platu jako omezení sloupce CREATE TABLE ZAMESTNANEC (ID INTEGER PRIMARY KEY, RC VARCHAR(11) NOT NULL, JMENO VARCHAR(20), PRIJMENI VARCHAR(20) NOT NULL, PLAT INT CHECK (plat<50000), USERNAME VARCHAR(10) UNIQUE );
integritní omezení pro výši maximálního platu jako omezení tabulky CREATE TABLE ZAMESTNANEC (ID INTEGER PRIMARY KEY, RC VARCHAR(11) NOT NULL, JMENO PRIJMENI PLAT USERNAME VARCHAR(20), VARCHAR(20) NOT NULL, INT, VARCHAR(10) UNIQUE, CONSTRAINT max_plat CHECK (plat<50000) );
Integritní omezení tabulek integritní omezení tabulek se testuje na neprázdné tabulce při vkládání dat, mazání, změně dat problém: integritní omezení typu požadavek na neprázdnost tabulky se po výmazu posledního záznamu neotestuje po vytvoření tabulky při vzniku databáze je samozřejmě prázdná, první záznam, po založení databáze musí nějaká procedura vložit alespoň jeden záznam
Integritní omezení tabulek řešení: zadat omezení ve tvaru tvrzení (ASSERTION) až po vzniku tabulky a vložení prvního záznamu CREATE ASSERTION jeden_ctenar CHECK (SELECT COUNT(*) FROM CTENAR > 0);
Vytvoření vlastních domén v SQL lze definovat vlastní domény a specifikovat tak vlastní datový typ např. omezením rozsahu hodnot CREATE DOMAIN rok_20_stoleti AS NUMERIC CHECK (VALUE BETWEEN 1900 AND 1999); porovnávání a kontrola legitimity spojení se provádí na základních typech
Vytvoření schématu schéma databáze kolekce tabulek, indexů, pohledů, uživatelských práv pojmenované schéma umožní logické seskupení tabulek, lze mít tabulky se stejným názvem v různých schématech, odkazujeme se na ně pomocí tečkové notace
Vytvoření schématu CREATE SCHEMA název_schématu [AUTHORIZATION username] seznam objektů schématu username jméno uživatele, který je vlastníkem schématu
Vytvoření schématu CREATE SCHEMA knihovna CREATE TABLE ctenar ( ) CREATE TABLE kniha ( ) ; na tabulky se můžeme odkazovat knihovna.ctenar
Vytvoření schématu lze zadat také jen CREATE SCHEMA knihovna; všechny další příkazy (CREATE TABLE, ), které SŘBD zadáváme, se automaticky provádějí v rámci schématu knihovna
Vytvoření schématu lze zadat také jen CREATE SCHEMA knihovna; všechny další příkazy (CREATE TABLE, ), které SŘBD zadáváme, se automaticky provádějí v rámci schématu knihovna
Vytvoření schématu v různých SŘBD se definice databáze mohou lišit v MySQL existuje ekvivalentní příkaz CREATE DATABASE, který musíme zadat jako první před tvorbou tabulek Microsoft SQL Server zná oba příkazy: CREATE DATABASE, CREATE SCHEMA jedna databáze může obsahovat několik schémat
Vytvoření indexů indexy jsou záznamy o tabulkách umožňující rychlé vyhledávání realizovány B-stromy pro jednu tabulku může být definováno více indexů, i podle více sloupců praktická představa: provede se seřazení řádků tabulky dle přílušných kritérií v indexu a tato informace o pařadí se zapíše vlastní data v tabulce se nepřehazují
Vytvoření indexů CREATE [UNIQUE] INDEX jméno_indexu ON jméno_tabulky ( jméno_atrib_1 [uspořádání], jméno_atrib_2 [uspořádání], ) [CLUSTER]; jako CLUSTER může být definován pro tabulku pouze jeden index data jsou podle něj uspořádány v tabulce
Vytvoření indexů uspořádání: ASC: vzestupně (implicitní) DESC: sestupně UNIQUE unikátní index, tj. žádné dva řádky dle tohoto indexu nesmí mít stejné hodnoty sloupcu(ů) v tomto indexu
Vytvoření a zrušení indexů CREATE INDEX prijmjmdat ON CTENAR ( prijmeni, jmeno, dat_nar DESC ); vytvoří index pro seřazení dle příjmení, jména vzestupně a data narození sestupně (od nejmladších) zrušení indexů DROP INDEX prijmjmdat