--01) Elencare tutti i dati della tabella EDITORI SELECT * FROM editori; --02) Elencare codice, nome, citta, stato dalla tabella EDITORI SELECT codice, nome, citta, stato FROM editori; --03) Elencare i nomi di tutti gli editori che risiedono nello stato di New York SELECT nome FROM editori WHERE stato='NY'; --04) Elencare i nomi di tutti gli editori che non risiedono nella città di New York SELECT nome FROM editori WHERE citta not like 'New York'; --05) Elencare tutti i dati delle filiali SELECT * FROM filiali; --06) Elencare i dati delle filiali che hanno almeno 10 dipendenti SELECT * FROM filiali WHERE (numero_dipendenti>10 OR numero_dipendenti=10); --07) Elencare i dati delle filiali con meno di 10 dipendenti e quelle che hanno più di 12 SELECT * FROM filiali WHERE (numero_dipendenti<10 OR numero_dipendenti>10); --08) Inserire la filiale Harry Italy, avente sede in Roma, con 32 dipendenti; insert into filiali values (5,'Harry Italy','Roma',32); --09) Ripetere l’interrogazione al punto 7 SELECT * FROM filiali WHERE (numero_dipendenti<10 OR numero_dipendenti>10); --10) Portare il numero di dipendenti di Harry Brentwood a 28; UPDATE filiali SET numero_dipendenti=28 WHERE nome='Harry Brentwood'; --11) Elencare le filiali che hanno più di 20 dipendenti SELECT * FROM filiali WHERE numero_dipendenti>20; --12) Elencare le filiali il cui nome al 7° carattere hanno una B oppure una I; select nome from filiali where nome like '______b%' or nome like '______i%'; --13) Elencare le filiali il cui nome finisce con aly select nome from filiali where nome like '%aly'; --14) Elencare il numero di filiali select count(*) from filiali; --15) Elencare somma di dipendenti totali della Harry books; select sum(numero_dipendenti) from filiali; --16) Elencare nome e sede delle filiali; select nome,sede from filiali; --17) Elencare numero_autore, cognome, nome degli autori; SELECT numero_autore,cognome,nome FROM autori; --18) Elencare tutti i dati di libri; SELECT * FROM libri; --19) Elencare il codice e il titolo di tutti i libri; select codice,titolo from libri; --20) Elencare i nomi delle filiali che hanno almeno 10 dipendenti; SELECT nome FROM filiali WHERE numero_dipendenti >= 10; --21) Elencare il codice e il titolo di tutti i libri il cui tipo sia HOR; select codice,titolo from libri where tipo='HOR'; --22) Elencare il codice e il titolo di tutti i libri il cui tipo sia HOR e che siano paperback select codice,titolo from libri where tipo='HOR' and paperback='Y'; --23) Elencare il codice e il titolo di tutti i libri il cui tipo inizi per H e quelli che hanno PB come codice editore; select codice,titolo from libri where tipo='H%' or Codice_editore='PB'; --24) Elencare codice, titolo e prezzo di ciascun libro che abbia un prezzo compreso tra 10 e 20 Euro; select codice,titolo,prezzo from libri where prezzo>=10 and prezzo<=20; --25) Elencare il codice e il titolo di ciascun libro il cui tipo sia MYS e che abbia un prezzo inferiore a 20 Euro; select codice,titolo from libri where tipo='MYS' and prezzo<=20; --26) Elencare codice, titolo e prezzo scontato del 15% di ciascun libro; select codice,titolo,prezzo/100*85 from libri; --27) Trovare i nomi di tutti gli editori che contengono la stringa "and"; select nome from editori where nome like '%and%'; --28) Elencare codice e titolo di tutti i libri il cui tipo sia FIC, MYS o ART. Utilizzare l'operatore IN nel vostro comando; select codice,titolo from libri where tipo IN ('FIC','MYS','ART'); --29) Ripetere l’interrogazione precedente elencando i libri in ordine alfabetico per titolo; select codice,titolo from libri where tipo IN ('FIC','MYS','ART') order by title; --30) Ripetere la stessa interrogazione elencando, però, i libri in ordine alfabetico decrescente per titolo; select codice,titolo from libri where tipo IN ('FIC','MYS','ART') order by titolo desc; --31) Elencare nome e cognome di tutti gli autori. Ordinare l'output in base al cognome; SELECT nome,cognome FROM autori ORDER BY cognome; --32) Elencare nome e cognome di tutti gli autori. Ordinare l'output in base al cognome, quindi in base al nome; select nome,cognome from autori order by cognome,nome; --33) Elencare tutti i tipi di libri disponibili (Non includere duplicati); select distinct tipo from libri,scorte where num_copie_disponibili>0; --34) Visualizzare quanti libri sono del tipo MYS; SELECT SUM(num_copie_disponibili) as totale_libri FROM scorte,libri WHERE codice=codice_libro AND tipo='Mys'; --{oppure where tipo in ('mys')}; --35) Calcolare i prezzi medi per ciascun tipo di libro; SELECT AVG(prezzo) AS PrezzoMedio FROM libri GROUP BY tipo; --36) Ripetere l'esercizio precedente, prendendo in considerazione solo i paperback; SELECT AVG(prezzo) AS PrezzoMedio FROM libri WHERE paperback='y'GROUP BY tipo; --37) Trovare il nome dell'editore del libro più costoso; SELECT nome FROM editori,libri WHERE codice_editore=editori.codice AND prezzo = (select max(prezzo) from libri); --38) Visualizzare nome e media dei prezzi dei libri; --non applicabile --39) Visualizzare la filiale con il minor numero di dipendenti. select nome from filiali where numero_dipendenti = (select min(numero_dipendenti) from filiali); --40) Visualizzare il titolo del libro più costoso pubblicato da Pocket Books. SELECT titolo FROM libri,editori WHERE codice_editore=editori.codice AND nome='pocket books' and prezzo = (select max(prezzo) from libri,editori WHERE codice_editore=editori.codice AND nome='pocket books'); ----esercitazione 2 --41) Per ogni libro, elencare codice libro, titolo, codice editore e nome dell'editore. select libri.codice,titolo,codice_editore,nome from libri,editori where libri.codice_editore=editori.codice; --42) Per ogni libro pubblicato da Signet, elencare titolo e prezzo. select titolo,prezzo from libri,editori where libri.codice_editore=editori.codice AND nome='Signet'; --43) Per ogni libro pubblicato da Signet, elencare titolo, prezzo e prezzo scontato (assumendo che si applica uno sconto del 15%). select titolo,prezzo,prezzo*85/100 from libri,editori where libri.codice_editore=editori.codice AND nome='Signet'; --44) Elencare titolo e codice di ogni libro pubblicato da Bantam Books il cui prezzo sia maggiore di 10 Euro. select titolo,prezzo from libri,editori where libri.codice_editore=editori.codice AND nome='Bantam Books' AND prezzo>10; --45) Elencare codice, titolo e copie disponibili di ogni libro esistente nella filiale numero 3. select codice,titolo,num_copie_disponibili from libri,scorte where scorte.codice_libro=libri.codice AND numero_filiale='3'; --46) Elencare i titoli di ogni libro di tipo CS che sia stato pubblicato da "Best and Furrow". select titolo from libri,editori where libri.codice_editore=editori.codice AND tipo='CS' AND nome='Best and Furrow'; --47) Elencare i titoli di ogni libro di tipo PSY che sia stato pubblicato da una casa editrice che nel nome ha la sottostringa 'ke'. select titolo from libri,editori where libri.codice_editore=editori.codice AND tipo='PSY' AND nome like '%ke%'; --48) Elencare i titoli di tutti i libri scritti dall'autore 01. Utilizzare l'operatore IN nella formulazione. select titolo from libri,hascritto,autori where hascritto.numero_autore=autori.numero_autore AND hascritto.codice_libro=libri.codice AND autori.numero_autore IN ('1'); --49) Ripetere l'esercizio 5 utilizzando EXISTS nella formulazione SELECT titolo FROM libri WHERE EXISTS (SELECT * FROM hascritto where numero_autore=1 AND codice=codice_libro); --50) Trovare il titolo e il codice di ogni libro localizzato nella filiale numero 2. select titolo,codice from libri,scorte where scorte.codice_libro=libri.codice AND numero_filiale=2; --51) Elencare ogni coppia di codici di libro che ha lo stesso numero di filiale nella tabella SCORTE. SELECT scorte.codice_libro, scorte2.codice_libro,scorte.numero_filiale,scorte2.numero_filiale FROM scorte,scorte as scorte2 WHERE scorte.codice_libro>scorte2.codice_libro AND scorte.numero_filiale=scorte2.numero_filiale; --52) Trovare le copie disponibili, i titoli e il cognome dell'autore per ogni libro nella filiale numero 4. SELECT num_copie_disponibili,titolo,cognome FROM scorte,libri,autori,hascritto WHERE scorte.codice_libro=libri.codice AND hascritto.numero_autore=autori.numero_autore AND hascritto.codice_libro=libri.codice AND numero_filiale=4; --53) Ripetere l'esercizio 5 elencando solo i libri in paperback. SELECT num_copie_disponibili,titolo,cognome FROM scorte,libri,autori,hascritto WHERE scorte.codice_libro=libri.codice AND hascritto.numero_autore=autori.numero_autore AND hascritto.codice_libro=libri.codice AND numero_filiale=4 AND paperback='Y'; --54) Trovare codice e titolo di ogni libro con un prezzo superiore a 5 Euro o che sia stato pubblicato a New York. select libri.codice,titolo from libri,editori where libri.codice_editore=editori.codice AND (prezzo>5 OR citta='New York');