Diplomati

Il problema

Schema relazionale

  • STUDENTE(Matricola, Cognome, Nome, Data di nascita, Indirizzo, Cap, Città, Telefono, …)
  • DIPLOMATO(Matricola, Sezione, Indirizzo di studio, Voto, Anno, Data ritiro, Pagato, …)

Query

  1. Creare la tabella ANAGRAFE
    CREATE TABLE STUDENTE
    (
       Matricola         char(5),
       Cognome           char(20),
       Nome              char(15),
       [DATA di nascita] date,
       Indirizzo         char(30),
       Cap               char(5),
       Città             char(20),
       Telefono          char(11)
    )
  2. Creare la tabella DIPLOMATO
    CREATE TABLE DIPLOMATO
    (
       Matricola             char(5),
       Sezione               char(1),
       [Indirizzo di studio] char(1),
       Voto                  integer,
       Anno                  integer
    )
  3. Modificare il codice relativo al sesso del record con codice 10100
    UPDATE STUDENTE
    SET    Sesso = 'M'
    WHERE  Matricola = "10100"
  4. Eliminare il record con codice 10100
    DELETE *
    FROM   STUDENTE
    WHERE  MATRICOLA = "10100"
  5. Eliminare la tabella STUDENTE
    DROP TABLE STUDENTE
  6. Aggiungere il campo Sesso alla tabella STUDENTE
    ALTER TABLE STUDENTE ADD Sesso char(1)
  7. Eliminare il campo Sesso dalla tabella STUDENTE
    ALTER TABLE STUDENTE DROP Sesso
  8. Inserire un nuovo studente
    INSERT INTO STUDENTE VALUES
       ("10100", "De Nuccio", "Michele", "22/02/78", "Largo Beethoven, 1", "21013", "Gallarate", "0331/551412", "F")
  9. Creazione di TABTEMP
    SELECT   Cognome, Voto INTO TABTEMP
    FROM     STUDENTE INNER JOIN DIPLOMATO ON STUDENTE.Matricola = DIPLOMATO.Matricola
    ORDER BY Voto DESC
  10. Accodamento in TABTEMP
    INSERT INTO TABTEMP
      SELECT   Cognome, Voto
      FROM     STUDENTE INNER JOIN DIPLOMATO ON STUDENTE.Matricola = DIPLOMATO.Matricola
      ORDER BY Voto DESC
  11. Matricole e voti
    SELECT Matricola, Voto
    FROM   DIPLOMATO
  12. Cognomi e voti
    SELECT Cognome, Voto
    FROM   STUDENTE, DIPLOMATO
  13. o meglio
    SELECT Cognome, Voto
    FROM   STUDENTE, DIPLOMATO
    WHERE  STUDENTE.Matricola = DIPLOMATO.Matricola
    
  14. o meglio
    SELECT Cognome, Voto
    FROM   STUDENTE INNER JOIN DIPLOMATO ON STUDENTE.Matricola = DIPLOMATO.Matricola
  15. Cognomi e voti, dei diplomati con voto compreso tra 70 e 80
    SELECT Cognome, Voto
    FROM   STUDENTE INNER JOIN DIPLOMATO ON STUDENTE.Matricola = DIPLOMATO.Matricola
    WHERE  Voto BETWEEN 70 AND 80
  16. Cognomi e voti, dei diplomati di Milano o Legnano
    SELECT Cognome, Voto
    FROM   STUDENTE INNER JOIN DIPLOMATO ON STUDENTE.Matricola = DIPLOMATO.Matricola
    WHERE  Città IN ("Milano", "Legnano")
  17. Cognomi e voti, dei diplomati il cui cognome comincia con la lettera A
    SELECT Cognome, Voto
    FROM   STUDENTE INNER JOIN DIPLOMATO ON STUDENTE.Matricola = DIPLOMATO.Matricola
    WHERE  Cognome LIKE "A*"
  18. Cognomi e voti, dei diplomati che abitano in una città con la I come seconda lettera
    SELECT Cognome, Voto
    FROM   STUDENTE INNER JOIN DIPLOMATO ON STUDENTE.Matricola = DIPLOMATO.Matricola
    WHERE  Città LIKE "?I*"
  19. Cognomi e voti ordinati rispetto al voto
    SELECT   Cognome, Voto
    FROM     STUDENTE INNER JOIN DIPLOMATO ON STUDENTE.Matricola = DIPLOMATO.Matricola
    ORDER BY Voto DESC
  20. Tabella DIPLOMATI
    SELECT *
    FROM   DIPLOMATI
  21. Tutto sui diplomati…
    SELECT *
    FROM   STUDENTE INNER JOIN DIPLOMATO ON STUDENTE.Matricola = DIPLOMATO.Matricola
  22. Tutto su tutti…
    SELECT *
    FROM   STUDENTE LEFT JOIN DIPLOMATO ON STUDENTE.Matricola = DIPLOMATO.Matricola
  23. La media dei voti
    SELECT Avg(Voto)
    FROM   DIPLOMATO
  24. La media dei voti per città
    SELECT   Città, Avg(Voto)
    FROM     STUDENTE INNER JOIN DIPLOMATO ON STUDENTE.Matricola = DIPLOMATO.Matricola
    GROUP BY Città
  25. La media dei voti per città, con almeno 80 di media

    SELECT   Città, Avg(Voto)
    FROM     STUDENTE INNER JOIN DIPLOMATO ON STUDENTE.Matricola = DIPLOMATO.Matricola
    GROUP BY Città
    HAVING   Avg(Voto) >= 80
  26. La classifica della media dei voti per città
    SELECT   Città, AVG(Voto)
    FROM     STUDENTE INNER JOIN DIPLOMATO ON STUDENTE.Matricola = DIPLOMATO.Matricola
    GROUP BY Città
    ORDER BY Avg(Voto) DESC