La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

SQL: Lezione 2 Esercitazione per il corso Basi di Dati Gabriel Kuper Nataliya Rassadko

Presentazioni simili


Presentazione sul tema: "SQL: Lezione 2 Esercitazione per il corso Basi di Dati Gabriel Kuper Nataliya Rassadko"— Transcript della presentazione:

1 SQL: Lezione 2 Esercitazione per il corso Basi di Dati Gabriel Kuper Nataliya Rassadko (rassadko@dit.unitn.it)

2 Lezione 2 Compito da casa WHERE: LIKE NULL UNKNOWN ORDER BY Esercizi

3 ESERCIZIO Data la seguente tabella: Movie(title, year, length, inColor, studioName, producerC#) Visualizzare in una tabella con intestazione (Anno,titolo, Studio),tutti i film in bianco e nero, prodotti dopo lanno 1990 ma prima del 1995. SELECT yeas as Anno, title as Titolo, studioName as Studio FROM movie WHERE not inColor AND year>1990 AND year<1995

4 ESERCIZIO Data la seguente tabella: Movie(title, year, length, inColor, studioName, producerC#) Visualizzare tutti gli attributi dei film della serie shrek SELECT * FROM movie WHERE title=shrek or title=shrek 2 or title=shrek 3

5 ESERCIZIO Data la seguente tabella Scrivere la query che restituisce i nomi presenti Scrivere la query che restituisce i cognomi presenti Scrivere la query che restituisce le età presenti Scrivere la query che restituisce nome, cognome e residenza di tutti i clienti Scrivere la query che restituisce tutti i dati dei clienti Clienti CognomeNomeCittàSalarioEtà

6 ESERCIZI Data la seguente tabella Scrivere la query che restituisce nome e cognome di chi guadagna più di 2000; Scrivere la query che restituisce cognome e nome dei clienti che abitano a Trento; Scrivere la query che restituisce cognome e nome dei clienti che abitano a Trento e guadagnano più di 2500; Scrivere la query che restituisce cognome, nome e salario dei clienti che hanno età compresa fra 20 e 40 anni (estremi compresi); Scrivere la query che restituisce cognome, nome e salario dei clienti che risiedono a Milano e hanno meno di 20 anni o più di 30. Clienti CognomeNomeCittàSalarioEtà

7 INTERROGAZIONI SQL La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le interrogazioni in modo dichiarativo, ovvero si specifica lobiettivo dellinterrogazione e non il modo in cui ottenerlo. Esistono molti modi diversi per esprimere la stessa interrogazione in SQL: il programmatore dovrà effettuare una scelta basandosi non (o non solo) sullefficienza, ma anche su altri aspetti quali la leggibilità e la modificabilità dellinterrogazione.

8 INTERROGAZIONI SEMPLICI Le operazioni di interrogazione in SQL vengono specificate per mezzo della gia vista istruzione select. select ListaAttributi from ListaTabelle [ where Condizioni]

9 Paragono di Stringhe Due stringhe sono uguali se contengono simboli uguali nello stesso ordine Operatori >, >=, <, <= controllono ordine lessicografico (alfabetico) bar<bargain<barracuda In SQL, possiamo paragonare non solo stringa con stringa, ma anche stringa con campione s LIKE p

10 LIKE Il campione può contenere caratteri specifici e caratteri jolly. I normali caratteri devono corrispondere esattamente ai caratteri specificati nella stringa di caratteri del modello. I caratteri jolly possono venire abbinati a frammenti arbitrari della stringa.

11 LIKE _ (underscore) per indicare un singolo carattere qualsiasi in quella posizione della stringa; % (percento) per indicare una sequenza qualsiasi di caratteri in quella posizione della stringa.

12 LIKE LIKE 'xyz%' vengono ricercate tutte le stringhe che iniziano con i caratteri xyz LIKE '%xyz' serve a ricercare tutte le stringhe che finiscono con i caratteri xyz LIKE '%xyz%' per tutte le stringhe che contengono al loro interno i caratteri xyz LIKE '_xyz' controlla le stringhe di 4 caratteri che finiscono con xyz

13 ESERCIZIO 1 Visualizzare titolo e anno dei film che sono stati prodotti dagli studi cinematografici che hanno una ch allinterno del nome. SELECT title FROM Movie WHERE studioName LIKE %ch%; Movie(title,year,length,inColor,studioName,producerC#) StarsIn(movieTitle,movieYear,starName) MovieStar(name,address,gender,birthdate) MovieExec(name,address,cert#,netWorth) Studio(name,address,presC#)

14 ESERCIZIO 2 Estrarre tutti gli studi cinemantografici che hanno prodotto film con titoli che contengono la parola pace. SELECT studioName FROM movie WHERE title LIKE %PACE%;

15 ESERCIZIO 3 Estrarre tutti i film in cui hanno lavorato attori che hanno come iniziali del nome Fr. SELECT title FROM Movie, StarsIn, WHERE starName LIKE FR%;

16 ESERCIZIO 4 Estrarre tutti i film il titolo di quali contiene s. SELECT title FROM Movie WHERE title LIKE %s%;

17 ESCAPE E se campione contiene simboli % e _ come simboli definiti? s LIKE x%x% ESCAPE x x è il simbolo di controllo Qualsiasi stringa che ha % come il simbolo iniziale e finale % + qualsiasi_stringa + %

18 NULL e UNKNOWN Il valore NULL significa: unknown: esiste un valore ma non e conosciuto valore inapplicable: non ci sono valori che abbiano senso (e.g., il valore dellattributo studioName per un video amatoriale) valore |_|: non si e autorizzati a conoscere il valore (e.g. netWorth value for some producers)

19 NULL Dal punto di vista di teoria delle relazioni, non cè bisogna di NULL, perchè non ci possono essere le celle senza valore, se DB è progettata correttamente Però DB ideale non è efficace DB in 3NF è efficace ma richiede la presenza di NULL Che cosè 3NF? Esempi di non-3NF

20 NULL e UNKNOWN Quando NULL e una parte di un operazione aritmetica, il risultato e un NULL, e.g. 5*x=NULL, se x = NULL Quando NULL e parte di un espressione di comparazione, il risultato e UNKNOWN, e.g., 5 > x = UNKNOWN, se x = NULL NULL non e costante IS NULL ritorna true se un valore è nullo IS NOT NULL ritorna true se un valore non è nullo

21 NULL & UNKNOW Supponiamo di avere la seguente query: Intuitivamente immaginiamo che tutte le tuple dovrebbero essere ritornate Select title From Movie Where lenght>=90 or lenght<90;

22 NULL & UNKNOW In realtà non tutti valori saranno ritornati con questa query. In questo caso, veranno ritornati solo le tuple con valore non nullo dellattributo length La query è equivalente a (esercizio): Select * From Movie Where lenght is not NULL or length is NULL;

23 NULL e UNKNOWN

24 ORDER BY È possibile utilizzare lopzione order by su più di un attributo. Quando due valori sono uguali per il primo attributi vengono ordinati in base al secondo.

25 ORDER BY il risultato puo essere ordinato secondo uno specifico attributo: ORDER BY Per default lordine e crescente, per ordinare il risultato in maniera decrescente si usa la keyword: DESC e.g.:

26 ORDER BY Visualizzare i titoli dei film ordinati in basi alla durata del film. SELECT title FROM Movie ORDER BY length;

27 ORDER BY Visualizza i film (title, year, length) ordinati per anno, se più film sono stati prodotti nello stesso anno lordinamento deve essere fatto per durata. SELECT "title", "year", "length" FROM "Movie" ORDER BY "year", "length;

28 ORDER BY Visualizzare tutti i film ordinati in maniera decrescente per anno. SELECT "title", "year", "length" FROM "Movie" ORDER BY "year" DESC ;

29 ESERCIZIO Visualizzare lindirizzo dello studio cinematografico Dream Works SKG [us] SELECT address FROM Studio WHERE name LIKE Dream Works SKG [us]";

30 ESERCIZIO Visualizzare il compleanno dellattore Robert De Niro (De Niro, Robert). SELECT birthdate FROM MovieStar" WHERE name LIKE De Niro, Robert";

31 ESERCIZIO Data la tabella: Impiegato (Nome,Cognome, Dipart, Ufficio, Stipendio,Città) Restituire lo stipendio mensile dellimpiegato di cognome Bianchi SELECT Stipendio/12 as StipendioMensile FROM Impiegato WHERE Cognome = Bianchi

32 ESERCIZIO Visualizzare, in ordine di produzione, tutti i film, se più film sono stati prodotti nello stesso anno ordinarli per ordine alfabetico rispetto al titolo. SELECT * FROM Movie ORDER year, title;

33 ESERCIZIO Estrarre gli impiegati che hanno un cognome che termina con la vocale i e che ha una o in seconda posizione. Impiegato (Nome,Cognome, Dipart, Ufficio, Stipendio,Città) SELECT * FROM Impiegato WHERE Cognome LIKE _o%i

34 ESERCIZIO Trovare tutte le star che appaiono nei film prodotti prima del 1979 o con un titolo che contiene la parola WAR SELECT starName FROM StarIn, Movie WHERE movieTitle = title and (year<1979 or title LIKE %WAR%);

35 ESERCIZIO: compito da casa Visualizzare in una tabella con intestazione, Nome, tutti gli attori che hanno partecipato almeno ad un film in bianco e nero.

36 Compito da casa 1 Product (maker, model, type) PC (model, speed, ram, hd, rd, price) Laptop (model, speed, ram, hd, screen, price) Printer (model, color, type, price) Trovare tutti model del PC, speed del loro processore e capacità di hd, che costano ( price ) meno di 1200 Trovare tutti i maker dei printer del tipo type Trovare tutti model, ram, screen di laptop con prezzo meno 1200

37 Compito da casa 2 Classes (class, type, country, numGuns, bore, displacement) Ships (name, class, launched) Battles (name, date) Outcomes (ship, battle, result) Trovare i classi ( class ) ed i paesi ( country ) che producono le navi ( Ships ) con almeno 10 numGuns Trovare tutti i nomi ( name ) delle navi ( Ships ) varati ( launched ) prima 1918 e rinomire la colonna del risultato come shipName Trovare i nomi delle navi ( Ships ) affondati (attributo result =sunk) nelle battaglie marine e i nomi di quelle battaglie ( battle ) Trovare i nomi di tutte le navi che hanno la lettere iniziale R Trovare i nomi di tutte le navi che hanno almento tre parole (per esempio King George V)


Scaricare ppt "SQL: Lezione 2 Esercitazione per il corso Basi di Dati Gabriel Kuper Nataliya Rassadko"

Presentazioni simili


Annunci Google