1. Vypište datum narození čtenářů se jménem Petr. SELECT DATUM_NAROZENI FROM CTENAR WHERE JMENO='Petr'; 2. Vypište počet různých příjmení čtenářů. SELECT COUNT(DISTINCT PRIJMENI) FROM CTENAR; 3. Zjistěte počet knih vydaných mezi roky 1990 a 2000 včetně. SELECT COUNT(*) FROM KNIHA WHERE ROK_VYDANI >= 1990 AND ROK_VYDANI <= 2000; SELECT COUNT(*) FROM KNIHA WHERE ROK_VYDANI BETWEEN 1990 AND 2000; 4. Zjistěte počet čtenářů, jejichž příjmení začíná na N a obsahuje písmeno X. Předpoklad - všechna písmena velká. SELECT COUNT(*) FROM CTENAR WHERE PRIJMENI LIKE 'N%X%'; 5. Zjistěte počet čtenářů, u kterých není vyplněna položka DATUM_NAROZENI. SELECT COUNT(*) FROM CTENAR WHERE DATUM_NAROZENI IS NULL; 6. Vypište pro každého čtenáře seznam půjčených knih. SELECT c.JMENO, c.PRIJMENI, k.NAZEV FROM CTENAR C, EXEMPLAR E, KNIHA K WHERE e.CISLO_CTENARE=c.CISLO_CTENARE AND e.ISBN=k.ISBN; 7. Vypište seznam čtenářů s počtem půjčených knih. Seznam seřaďte sestupně podle počtu půjčených knih. SELECT c.jmeno, c.prijmeni, count(e.signatura) FROM ctenar c, exemplar e WHERE c.cislo_ctenare=e.cislo_ctenare GROUP BY c.cislo_ctenare ORDER BY count(e.signatura) DESC; 8. Zjistěte rok vydání nejstarší a nejnovější knihy. SELECT MAX(ROK_VYDANI), MIN(ROK_VYDANI) FROM KNIHA; 9. Zjistěte počet čtenářů, kteří nemají žádnou výpůjčku. select count(*) from ctenar where cislo_ctenare not in (select cislo_ctenare from exemplar) 10. Vypište jména a příjmení čtenářů, kteří mají rezervováno více jak 10 knih. select c.jmeno, c.prijmeni from ctenar c, rezervace r where c.cislo_ctenare = r.cislo_ctenare group by c.cislo_ctenare having count(r.isbn) > 10; 11. Přidejte nového čtenáře. INSERT INTO CTENAR VALUES(99,'Petr','Pavel',1900); 12. Změňte novému čtenáři příjmení. UPDATE CTENAR SET PRIJMENI='Pavel II.' WHERE JMENO='Petr' AND PRIJMENI='Pavel' AND DATUM_NAROZENI=1900; 13. Zrušte všechny knihy vydané po roce 2000; DELETE FROM KNIHA WHERE ROK_VYDANI >= 2000; 14. U všech knih zvyšte rok vydání o 1. UPDATE KNIHA SET ROK_VYDANI = ROK_VYDANI + 1; 15. Vytvořte tabulku CTENAR se sloupci CISLO_CTENARE, JMENO, PRIJMENI a DATUM_NAROZENI. CISLO_CTENARE je primární klíč, JMENO a PRIJMENI jsou povinné. CREATE TABLE CTENAR ( CISLO_CTENARE NUMBER(5) PRIMARY KEY, JMENO VARCHAR2(20) NOT NULL, PRIJMENI VARCHAR2(20) NOT NULL, DATUM_NAROZENI DATE ); 16. Vytvořte tabulku EXEMPLAR, primarnim klicem je SIGNATURA. Zajistěte referenční integritu - k exempláři musí existovat kniha. CREATE TABLE EXEMPLAR ( SIGNATURA VARCHAR2(10) PRIMARY KEY, CISLO_CTENARE NUMBER(5), ISBN NUMBER(10) NOT NULL, DATUM_VYPUJCKY DATE, DATUM_CRACENI DATE CONSTRAINT fk_isbn FOREIGN KEY (ISBN); ); 17. Napište, jak lze zajistit, aby při zrušení knihy byla automaticky zrušeny i její exempláře, ale existluje-li alespoň jedna výpůjčka, knihu zrušit nelze. 18. Zajistěte, aby nebylo možné zadat knihu s rokem vydání, který není mezi rokem 1900 a 2100. CREATE TABLE KNIHA ( ISBN NUMBER(10) PRIMARY KEY, AUTOR VARCHAR2 (30) NAZEV VARCHAR2 (30) ROK_VYDANI NUMBER(4) CHECK (ROK_VYDANI >= 1900 AND ROK_VYDANI <= 2100) ); 19. Uzamkněte tabulku EXEMPLAR tak, aby z ní ostatní uživatelé mohli číst. LOCK TABLE EXEMPLAR IN SHARE MODE; 20. Uzamkněte všechny rezervace (záznamy) pro knihy s ISBN 12345 a opět je odemkněte; SELECT * FROM REZERVACE WHERE ISBN=12345 FOR UPDATE; *