Esercizi - Corsi a Distanza
Transcript
Esercizi - Corsi a Distanza
Sistemi informativi Gestione delle tabelle Esercizi di SQL È riportato di seguito un insieme di esercizi risolti in SQL in cui viene richiesto di eseguire delle operazioni per la gestione delle tabelle di uno schema relazionale. Ogni esercizio è caratterizzato dallo schema relazionale sul quale deve essere eseguito, dal testo in linguaggio naturale dell’operazione che deve essere eseguita e da una soluzione espressa in SQL. Esercizio 1. È dato lo schema relazionale costituito dalle seguenti tabelle (le chiavi primarie sono sottolineate) CD(IdCD, Titolo, Prezzo) AUTORICD(IdArtista, IdCD) Operazione di gestione da eseguire. Scrivere i comandi SQL necessari per creare tutte le tabelle riportate nello schema relazionale. Selezionare per ogni attributo il tipo di dato ritenuto più opportuno e indicare i vincoli di integrità ritenuti necessari. Soluzione CREATE TABLE CD ( IdCD SMALLINT, Titolo VARCHAR(20) NOT NULL, Prezzo NUMBER(5,2) NOT NULL, PRIMARY KEY(IdCD) ); CREATE TABLE AUTORICD ( IdArtista SMALLINT, IdCD SMALLINT, PRIMARY KEY(IdArtista, IdCD), FOREIGN KEY IdCD REFERENCES CD(IdCD) ON DELETE CASCADE ON UPDATE CASCADE ); Esercizio 2. È dato lo schema relazionale costituito dalle seguenti tabelle (le chiavi primarie sono sottolineate) DOCENTE(CodDocente, Nome, Cognome, DataNascita) CORSI(CodCorso, NomeCorso, Sede, CodDocente) LEZIONI SVOLTE(CodCorso, Data, OraInizio, Aula, Durata) Operazione di gestione da eseguire. Scrivere i comandi SQL necessari per creare tutte le tabelle riportate nello schema relazionale. Selezionare per ogni attributo il tipo di dato ritenuto più opportuno e indicare i vincoli di integrità ritenuti necessari. c 2007 Politecnico di Torino 1 Sistemi informativi Gestione delle tabelle Soluzione CREATE TABLE DOCENTE ( CodDocente SMALLINT, Nome VARCHAR(20) NOT NULL, Cognome VARCHAR(20) NOT NULL, DataNascita DATE NOT NULL, PRIMARY KEY(CodDocente) ); CREATE TABLE CORSI ( CodCorso SMALLINT, NomeCorso VARCHAR(20) NOT NULL, Sede VARCHAR(20) NOT NULL, CodDocente SMALLINT, PRIMARY KEY(CodCorso), FOREIGN KEY Docente REFERENCES DOCENTE(Docente) ON DELETE SET NULL ON UPDATE CASCADE ); CREATE LEZIONI_SVOLTE ( CodCorso SMALLINT, Data DATE, OraInizio TIMESTAMP, Aula VARCHAR(5) NOT NULL, Durata FLOAT, PRIMARY KEY(CodCorso, Data, OraInizio), FOREIGN KEY CodCorso REFERENCES CORSI(CodCorso) ON DELETE NO ACTION ON UPDATE CASCADE ); Esercizio 3. È dato lo schema relazionale costituito dalle seguenti tabelle (le chiavi primarie sono sottolineate) DOCENTE(CodDocente, Nome, Cognome, DataNascita) CORSI(CodCorso, NomeCorso, Sede, CodDocente) LEZIONI SVOLTE(CodCorso, Data, OraInizio, Aula, Durata) Operazione di gestione da eseguire. Scrivere il comando SQL necessario per eliminare la tabella LEZIONI SVOLTE. Soluzione DROP TABLE LEZIONI_SVOLTE; Esercizio 4. È dato lo schema relazionale costituito dalla seguente tabella (le chiavi primarie sono sottolineate) c 2007 Politecnico di Torino 2 Sistemi informativi Gestione delle tabelle DOCENTE(CodDocente, Nome, Cognome, DataNascita) Operazione di gestione da eseguire. Scrivere il comando SQL necessario per aggiungere la colonna StatoDiNascita alla tabella DOCENTE. Soluzione ALTER TABLE DOCENTE ADD COLUMN StatoDiNascita VARCHAR(10); Esercizio 5. È dato lo schema relazionale costituito dalla seguente tabella (le chiavi primarie sono sottolineate) DOCENTE(CodDocente, Nome, Cognome, DataNascita) Operazione di gestione da eseguire. Scrivere il comando SQL necessario per eliminare la colonna DataNascita dalla tabella DOCENTE. Soluzione ALTER TABLE DOCENTE DROP COLUMN StatoDiNascita; Esercizio 6. È dato lo schema relazionale costituito dalla seguente tabella (le chiavi primarie sono sottolineate) CORSI(CodCorso, NomeCorso, Sede, NumeroCrediti) Operazione di gestione da eseguire. Scrivere il comando SQL necessario per creare la tabella riportata nello schema relazionale. Selezionare per ogni attributo il tipo di dato ritenuto più opportuno e indicare i vincoli di integrità ritenuti necessari. Si specifichi nel comando di creazione della tabella che per ogni corso il numero di crediti deve essere compreso tra 1 e 10. Soluzione CREATE TABLE CORSI ( CodCorso SMALLINT, NomeCorso VARCHAR(20) NOT NULL, Sede VARCHAR(20) NOT NULL, NumeroCrediti SMALLINT NOT NULL CHECK(NumeroCrediti>=1 and NumeroCrediti<=10), PRIMARY KEY(CodCorso) ); Esercizio 7. È dato lo schema relazionale costituito dalla seguente tabella (le chiavi primarie sono sottolineate) SALA RIUNIONI(CodiceSala, CodiceSede, NomeSala) SEDE(CodiceSede, Nome, Indirizzo) c 2007 Politecnico di Torino 3 Sistemi informativi Gestione delle tabelle Operazione di gestione da eseguire. Scrivere i comandi SQL necessari per creare tutte le tabelle riportate nello schema relazionale. Selezionare per ogni attributo il tipo di dato ritenuto più opportuno e indicare i vincoli di integrità ritenuti necessari. Si specifichi nei comandi di creazione delle tabelle che non possono esistere sale riunioni con lo stesso nome all’interno della stessa sede. Soluzione CREATE TABLE SEDE ( CodiceSede SMALLINT, Nome VARCHAR(20) NOT NULL, Indirizzo VARCHAR(30) NOT NULL, PRIMARY KEY(CodiceSede) ); CREATE TABLE SALA_RIUNIONI ( CodiceSala SMALLINT, CodiceSede SMALLINT, NomeSala VARCHAR(20) NOT NULL, PRIMARY KEY(CodiceSala, CodiceSede), UNIQUE (NomeSala, CodiceSede), FOREIGN KEY CodiceSala REFERENCES SEDE(CodiceSala) ON DELETE CASCADE ON UPDATE CASCADE ); Esercizio 8. È dato lo schema relazionale costituito dalla seguente tabella (le chiavi primarie sono sottolineate) SALA RIUNIONE(CodiceSala, CodiceSede, NomeSala, NumeroPosti) SEDE(CodiceSede, Nome, Indirizzo) Operazione di gestione da eseguire. Scrivere il comando SQL necessario per aggiungere un vincolo tale da imporre che non possano esistere nella base di dati sale riunione con meno di 15 posti. Soluzione ALTER TABLE SALA_RIUNIONE ADD CONSTRAINT MinPosti CHECK(NumeroPosti>=15); c 2007 Politecnico di Torino 4