Dotazy
- tabulka Inventory (pocet knih na sklade, cena, minimalni mnozstvi pred znovuobjednanim) - tabulka Orders (knihy, ktere je podreba doobjednat z velkoobchodu) - tabulka Best (automaticky udrzovana tabulka obsahujici aktualni zebrizek nejlepsich prodeju knih) SQL dotazy: - Knihy, ktere napsali autori do 50 let a ktere vydelaly vic jak 3000 - Autor, jehoz kniha vydelala nejvic - Autor, jehoz knihy vydelaly celkove nejvic - Autori a jejich celkove vydelky - Kniha, ktera vydelala druha nejvic - Knihy, ktere napsalo 0 nebo vic jak 1 autor Kursory: - kontrola objednavek v tabulce Orders, pokud je objednavka starsi jak 1 mesic, preobjedna se - z tabulky Books vybere prvni tri knihy, ktere vydelaly v dosavadni historii knihkupectvi nejvic Triggery: - Kontrola, zda se neprodava vic knih, nez je na sklade - Smazani objednavky z Orders, pokud jiz pocet knih na skllade v Inventory dosahl pozadavaneho mnozstvi - Vytvoreni nove objednavky v Orders, pokud je v Inventory mene knih, nez stanoveny limit.
- Armadni sklad + kontrola stavu zbrani. - Kartoteka vezenskeho zarizeni + kontrola pristupu. - Kartoteka katastralniho uradu - Databaze Jihomoravskych plynarem + odebery plynu jednotlivych koncovek + vyuctovani - Databaze transfuziologicke stanice + obednavky na odber, evidence odebrane plasmy a krve - ...
Prikaz INSERT INTO ucitele (SELECT id, jmeno FROM lide); vlozi do tabulky 'ucitele' vsechny osoby, kteri jsou ulozeni v tabulce 'lide'. Pro opakovane volani prikazu INSERT lze take pouzit cyklus LOOP jazyka PL/SQL. Pro interaktivni dotaz uzivatele na hodnotu lze pouzit prikaz INSERT INTO ucitele(id, jmeno) VALUES (&identifikace, '&jmeno_ucitele');
Napriklad ... IF nesplnena_podminka THEN RETURN; END IF;
Prihlaseni pro pocitace nymfe: nymfe17: module add gqlplus nymfe17: gqlplus login@db10Prihlaseni pro aisu: aisa: module add gqlplus-1.8 aisa: gqlplus login@db10
CREATE TABLE a (pk NUMBER PRIMARY KEY);
CREATE TABLE b (jmeno VARCHAR2(10), apk CONSTRAINT fk_apk REFERENCES a(pk) ON DELETE CASCADE);
INSERT INTO a VALUES (1);
INSERT INTO a VALUES (2);
INSERT INTO b VALUES ('tom', 1);
INSERT INTO b VALUES ('pepa', 2);
SELECT * FROM b;
DELETE FROM a WHERE pk = 1;
SELECT * from b;
Je však nutné dobře zvážit zamýšlené chování, aby nedošlo k nechtěnému smazání dat. Někteří databázový programátoři tuto konstrukci z tohoto důvodu nepoužívají.
SELECT * FROM tabulka WHERE rownum < 11; Číslo řádku však není fixní hodnota a průběžně se mění v závislosti na průběhu vyhodnocení dotazu, tak aby první řádek na výstupu měl vždy číslo 1. Pro zobrazení řádků tabulky od desátého výše (dle pozice v původní tabulce) musíme použít odlišnou konstrukci využívající vnořený dotaz, během kterého si do proměnné prom_r uložíme původní očíslování řádků: SELECT column_name FROM (SELECT column_name, rownum prom_r FROM tabulka) WHERE prom_r > 10; Bližší informace lze nalézt na http://www.adp-gmbh.ch/ora/sql/rownum.html
Tedy pokud máme sekvenci seq s aktuální hodnotou 5 a inkrementem o 1, příkaz INSERT INTO tabulka VALUES (seq.NEXTVAL, 'pokus', seq.NEXTVAL); vloží hodnoty (6, 'pokus', 6).
SELECT * FROM tab WHERE stroj LIKE 'stroj\_nymfe__' ESCAPE '\'; Znak '\' funguje jako specialni priznak, ze bezprostredne nasledujici znak nema byt interpretovan v jeho specialnim vyznamu, ale jako bezny znak.
|
|
OpenPGP klíc : 0x89CEB31C |