22nd May 2023 Tempo di lettura: 9 minuti 10 esercizi pratici di SQL per principianti con soluzioni Tihomir Babic sql imparare sql esercizi online Indice Il set di dati Esercizio 1: Selezione di tutte le colonne di una tabella Esercizio 2: Selezione di alcune colonne da una tabella Esercizio 3: Selezione di poche colonne e filtraggio di dati numerici in WHERE Esercizio 4: Selezione di alcune colonne e filtraggio di dati testuali in WHERE Esercizio 5: Selezione di alcune colonne e filtraggio dei dati mediante due condizioni in WHERE Esercizio 6: Filtrare i dati con WHERE e ordinare l'output Esercizio 7: Raggruppare i dati per una colonna Esercizio 8: Raggruppare i dati per più colonne Esercizio 9: Filtrare i dati dopo il raggruppamento Esercizio 10: Selezione di colonne da due tabelle È stato divertente! Ora è il momento di fare SQL Practice da soli! Risolvete questi dieci problemi pratici di SQL e verificate a che punto siete con le vostre conoscenze di SQL! Questo articolo è dedicato alla pratica di SQL. È il modo migliore per imparare l'SQL. Vi mostriamo dieci esercizi pratici di SQL in cui dovete applicare i concetti essenziali di SQL. Se siete alle prime armi con l'SQL, non preoccupatevi: questi esempi sono per i principianti. Utilizzateli per esercitarvi o per imparare nuovi concetti di SQL. Per ulteriori nozioni teoriche ed esercizi (ancora più numerosi!), c'è il nostro corso interattivo. SQL per principianti interattivo. Vi insegna a selezionare i dati da una o più tabelle, ad aggregare e raggruppare i dati, a scrivere subquery e a utilizzare le operazioni di set. Il corso comprende 129 esercizi interattivi, quindi non mancano le opportunità di esercitarsi con l'SQL, soprattutto se si aggiungono alcuni dei 12 modi per imparare l'SQL online. A proposito di pratica, iniziamo con i nostri esercizi! Il set di dati La domanda è sempre quella di dove trovare i dati per esercitarsi con l'SQL. Utilizzeremo il nostro set di dati per tutti gli esercizi. Non c'è bisogno di limitarsi a questo: è possibile trovare altri dataset online gratuiti per esercitarsi con l'SQL. Il nostro dataset è composto da due tabelle. La tabella distribution_companies elenca le società di distribuzione cinematografica con le seguenti colonne: id - L'ID della società di distribuzione. È la chiave primaria della tabella. company_name - Il nome della società di distribuzione. La tabella è mostrata di seguito. idcompany_name 1Columbia Pictures 2Paramount Pictures 3Warner Bros. Pictures 4United Artists 5Universal Pictures 6New Line Cinema 7Miramax Films 8Produzioni Europee Associate 9Buena Vista 10StudioCanal La seconda tabella è movies. Queste sono le colonne: id - L'ID del film. È la chiave primaria della tabella. movie_title - Il titolo del film. imdb_rating - La valutazione del film su IMDb. year_released - L'anno di uscita del film. budget - Il budget del film in milioni di dollari. box_office - I guadagni del film in milioni di dollari. distribution_company_id - L'ID della società di distribuzione, con riferimento alla tabella distribution_companies (chiave esterna). language - La lingua o le lingue parlate nel film. La tabella è mostrata di seguito. idmovie_titleimdb_ratingyear_releasedbudgetbox_officedistribution_company_idlanguage 1The Shawshank Redemption9.2199425.0073.301English 2The Godfather9.219727.20291.002English 3The Dark Knight9.02008185.001,006.003English 4The Godfather Part II9.0197413.0093.002English, Sicilian 512 Angry Men9.019570.342.004English 6Schindler's List8.9199322.00322.205English, German, Yiddish 7The Lord of the Rings: The Return of the King8.9200394.001,146.006English 8Pulp Fiction8.819948.50213.907English 9The Lord of the Rings: The Fellowship of the Ring8.8200193.00898.206English 10The Good, the Bad and the Ugly8.819661.2038.908English, Italian, Spanish Esercizio 1: Selezione di tutte le colonne di una tabella Esercizio: Selezionare tutti i dati dalla tabella distribution_companies. Soluzione: SELECT * FROM distribution_companies; Spiegazione della soluzione: Selezionare i dati utilizzando l'istruzione SELECT. Per selezionare tutte le colonne, utilizzare un asterisco (*). La tabella da cui vengono selezionati i dati è specificata nella clausola FROM. Soluzione in uscita: idcompany_name 1Columbia Pictures 2Paramount Pictures 3Warner Bros. Pictures 4United Artists 5Universal Pictures 6New Line Cinema 7Miramax Films 8Produzioni Europee Associate 9Buena Vista 10StudioCanal Esercizio 2: Selezione di alcune colonne da una tabella Esercizio: Per ogni film, selezionare il titolo del film, la valutazione IMDb e l'anno di uscita del film. Soluzione: SELECT movie_title, imdb_rating, year_released FROM movies; Spiegazione della soluzione: Elencare tutte le colonne necessarie (movie_title, imdb_rating e year_released) nell'istruzione SELECT, separate da una virgola. Fare riferimento alla tabella movies nella clausola FROM. Soluzione in uscita: movie_titleimdb_ratingyear_released The Shawshank Redemption9.21994 The Godfather9.21972 The Dark Knight9.02008 The Godfather Part II9.01974 12 Angry Men9.01957 Schindler's List8.91993 The Lord of the Rings: The Return of the King8.92003 Pulp Fiction8.81994 The Lord of the Rings: The Fellowship of the Ring8.82001 The Good, the Bad and the Ugly8.81966 Esercizio 3: Selezione di poche colonne e filtraggio di dati numerici in WHERE Esercizio: Selezionare le colonne movie_title e box_office dalla tabella movies. Mostrare solo i film con guadagni superiori a 300 milioni di dollari. Soluzione: SELECT movie_title, box_office FROM movies WHERE box_office > 300; Spiegazione della soluzione: Elencare le colonne in SELECT e fare riferimento alla tabella in FROM. Utilizzare una clausola WHERE per filtrare i dati - scrivere la colonna box_office e utilizzare l'operatore "maggiore di" (>) per mostrare solo i valori superiori a 300 milioni di dollari. Soluzione in uscita: movie_titlebox_office The Dark Knight1,006.00 Schindler's List322.20 The Lord of the Rings: The Return of the King1,146.00 The Lord of the Rings: The Fellowship of the Ring898.20 Esercizio 4: Selezione di alcune colonne e filtraggio di dati testuali in WHERE Esercizio: Selezionare le colonne movie_title, imdb_rating e year_released dalla tabella movies. Mostrare i film che hanno la parola 'Padrino' nel titolo. Soluzione: SELECT movie_title, imdb_rating, year_released FROM movies WHERE movie_title LIKE '%Godfather%'; Spiegazione della soluzione: Elencare le colonne in SELECT e fare riferimento alla tabella nella clausola FROM. Utilizzare una clausola WHERE per filtrare i dati. Dopo aver scritto il nome della colonna, utilizzare l'operatore logico LIKE per cercare 'Godfather' nel titolo del film, scritto tra virgolette singole. Per trovare la parola in qualsiasi punto del titolo del film, inserire il carattere jolly (%) prima e dopo la parola. Soluzione in uscita: movie_titleimdb_ratingyear_released The Godfather9.21972 The Godfather Part II9.01974 Esercizio 5: Selezione di alcune colonne e filtraggio dei dati mediante due condizioni in WHERE Esercizio: Selezionare le colonne movie_title, imdb_rating e year_released dalla tabella movies. Mostrare i film usciti prima del 2001 e con una valutazione superiore a 9. Soluzione: SELECT movie_title, imdb_rating, year_released FROM movies WHERE year_released < 2001 AND imdb_rating > 9; Spiegazione della soluzione: Elencare le colonne in SELECT e fare riferimento alla tabella in FROM. Impostare la prima condizione che l'anno di uscita sia precedente al 2001 utilizzando l'operatore "meno di" (<). Per aggiungere un'altra condizione, utilizzate l'operatore logico AND. Utilizzate la stessa logica della prima condizione, questa volta utilizzando l'operatore "maggiore di" con la colonna imdb_rating. Soluzione in uscita: movie_titleimdb_ratingyear_released The Shawshank Redemption9.21994 The Godfather9.21972 Esercizio 6: Filtrare i dati con WHERE e ordinare l'output Esercizio: Selezionare le colonne movie_title, imdb_rating e year_released dalla tabella movies. Mostrare i film usciti dopo il 1991. Ordinare l'output in base all'anno di uscita in ordine crescente. Soluzione: SELECT movie_title, imdb_rating, year_released FROM movies WHERE year_released > 1991 ORDER BY year_released ASC; Spiegazione della soluzione: Elencare le colonne in SELECT e fare riferimento alla tabella in FROM. Filtrare i dati con WHERE applicando l'operatore "maggiore di" alla colonna year_released. Per ordinare i dati, utilizzate la clausola ORDER BY e scrivete il nome della colonna in base alla quale desiderate ordinare. Il tipo di ordinamento viene specificato scrivendo ASC (ascendente) o DESC (discendente). Se il tipo viene omesso, l'output viene ordinato in ordine crescente per impostazione predefinita. Soluzione di output: movie_titleimdb_ratingyear_released Schindler's List8.91993 The Shawshank Redemption9.21994 Pulp Fiction8.81994 The Lord of the Rings: The Fellowship of the Ring8.82001 The Lord of the Rings: The Return of the King8.92003 The Dark Knight9.02008 Esercizio 7: Raggruppare i dati per una colonna Esercizio: Mostrare il numero di film per ogni categoria linguistica. Soluzione: SELECT language, COUNT(*) AS number_of_movies FROM movies GROUP BY language; Spiegazione della soluzione: Selezionare la colonna language dalla tabella movies. Per contare il numero di film, utilizzare la funzione aggregata COUNT(). Utilizzare l'asterisco (*) per contare le righe, che equivalgono al numero di film. Per dare un nome a questa colonna, utilizzare la parola chiave AS seguita dal nome desiderato. Per mostrare il conteggio in base alla lingua, è necessario raggruppare i dati per essa, quindi scrivere la colonna language nella clausola GROUP BY. Soluzione in uscita: languagenumber_of_movies English7 English, German, Yiddish1 English, Sicilian1 English, Italian, Spanish1 Esercizio 8: Raggruppare i dati per più colonne Esercizio: Mostrare il conteggio dei film per anno di uscita e lingua. Ordinare i risultati in base alla data di uscita in ordine crescente. Soluzione: SELECT year_released, language, COUNT(*) AS number_of_movies FROM movies GROUP BY year_released, language ORDER BY year_released ASC; Spiegazione della soluzione: Elencare le colonne year_released e language dalla tabella movies in SELECT. Usate COUNT(*) per contare il numero di film e date un nome a questa colonna usando la parola chiave AS. Specificate le colonne in base alle quali volete raggruppare nella clausola GROUP BY. Separare ogni nome di colonna con una virgola. Ordinare l'output usando ORDER BY con la colonna year_released e la parola chiave ASC. Soluzione in uscita: year_releasedlanguagenumber_of_movies 1957English1 1966English, Italian, Spanish1 1972English1 1974English, Sicilian1 1993English, German, Yiddish1 1994English2 2001English1 2003English1 2008English1 Esercizio 9: Filtrare i dati dopo il raggruppamento Esercizio: Mostrare le lingue parlate e il budget medio dei film per categoria linguistica. Mostrare solo le lingue con un budget medio superiore a 50 milioni di dollari. Soluzione: SELECT language, AVG(budget) AS movie_budget FROM movies GROUP BY language HAVING AVG(budget) > 50; Spiegazione della soluzione: Selezionare la colonna language dalla tabella movies. Per calcolare il budget medio, utilizzare la funzione aggregata AVG() con la colonna budget tra parentesi. Nominare la colonna nell'output utilizzando la parola chiave AS. Raggruppare i dati per rating utilizzando GROUP BY. Per filtrare i dati dopo il raggruppamento, utilizzare una clausola HAVING. In essa, utilizzare lo stesso costrutto AVG() di SELECT e impostare i valori superiori a 50 utilizzando l'operatore "maggiore di". Soluzione in uscita: languagemovie_budget English59.01 Esercizio 10: Selezione di colonne da due tabelle Esercizio: Mostrare i titoli dei film della tabella moviesognuno con il nome della sua casa di distribuzione. Soluzione: SELECT movie_title, company_name FROM distribution_companies dc JOIN movies m ON dc.id = m.distribution_company_id; Spiegazione della soluzione: Elencare le colonne movie_title e company_name in SELECT. Nella clausola FROM, fare riferimento alla tabella distribution_companies. Assegnatele un alias dc per abbreviare il nome da usare in seguito. La parola chiave AS viene omessa; se lo si desidera, è possibile utilizzarla. Per accedere ai dati dell'altra tabella, usare JOIN (può anche essere scritto come INNER JOIN) e scrivere il nome della tabella dopo di essa. Assegnare a questa tabella anche un alias. La join utilizzata in questo caso è di tipo interno; restituisce solo le righe che corrispondono alla condizione di join specificata nella clausola ON. Le tabelle vengono unite se la colonna id della tabella distribution_companies è uguale alla colonna distribution_company_id della tabella movies. Per specificare quale colonna proviene da quale tabella, utilizzare l'alias corrispondente di ciascuna tabella. Soluzione in uscita: movie_titlecompany_name The Shawshank RedemptionColumbia Pictures The Godfather Part IIParamount Pictures The GodfatherParamount Pictures The Dark KnightWarner Bros. Pictures 12 Angry MenUnited Artists Schindler's ListUniversal Pictures The Lord of the Rings: The Fellowship of the RingNew Line Cinema The Lord of the Rings: The Return of the KingNew Line Cinema Pulp FictionMiramax Films The Good, the Bad and the UglyProduzioni Europee Associate È stato divertente! Ora è il momento di fare SQL Practice da soli! Questi dieci esercizi pratici di SQL vi danno un assaggio dell'aspetto pratico di SQL. Che siate a livello principiante, intermedio o avanzato, è la stessa cosa. Ciò che cambia è la complessità dei problemi da risolvere e del codice da scrivere. Cercate altre sfide nel SQL per principianti corso e nella traccia mensile SQL Practice. Entrambi sono eccellenti per la pratica di SQL online. Questo è vero soprattutto se non avete l'opportunità di usare SQL quotidianamente nel vostro lavoro. Quindi, non provate a verificare quanto tempo ci vuole per dimenticare ciò che sapevate in SQL! Sfruttate ogni occasione per risolvere il maggior numero possibile di problemi di esercitazione su SQL. Tags: sql imparare sql esercizi online