Il 0% ha trovato utile questo documento (0 voti)
27 visualizzazioni4 pagine

Pag142 1112

Il documento descrive la creazione di tabelle in una base di dati per gestire informazioni su squadre di calcio, giocatori, procuratori e le relazioni tra loro. Vengono inoltre forniti esempi di query per estrarre e connettere i dati.

Caricato da

8tcttkbygn
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato TXT, PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
27 visualizzazioni4 pagine

Pag142 1112

Il documento descrive la creazione di tabelle in una base di dati per gestire informazioni su squadre di calcio, giocatori, procuratori e le relazioni tra loro. Vengono inoltre forniti esempi di query per estrarre e connettere i dati.

Caricato da

8tcttkbygn
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato TXT, PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 4

pag142 11,12

-- Creazione delle tabelle

CREATE TABLE squadre (


ID_squadra INT PRIMARY KEY,
nome VARCHAR(50),
citta VARCHAR(50),
budget INT,
abbonati INT
);

CREATE TABLE giocatori (


ID_giocatore INT PRIMARY KEY,
nome VARCHAR(50),
cognome VARCHAR(50),
ruolo VARCHAR(20),
data_nascita DATE,
valore_di_mercato DECIMAL(10, 2),
ingaggio_annuale DECIMAL(10, 2),
squadra_appartenenza INT,
ID_procuratore INT
);

CREATE TABLE procuratori (


ID_procuratore INT PRIMARY KEY,
nome VARCHAR(50),
cognome VARCHAR(50),
assistito_da_capitano INT
);

-- Creazione delle relazioni

ALTER TABLE squadre


ADD CONSTRAINT FK_capitano
FOREIGN KEY (abbonati) REFERENCES giocatori(ID_giocatore);

ALTER TABLE giocatori


ADD CONSTRAINT FK_squadra
FOREIGN KEY (squadra_appartenenza) REFERENCES squadre(ID_squadra);

ALTER TABLE giocatori


ADD CONSTRAINT FK_procuratore
FOREIGN KEY (ID_procuratore) REFERENCES procuratori(ID_procuratore);

-- Query di congiunzione

-- Elencare tutti i calciatori che militano in squadre che hanno più di 10.000
abbonati.
SELECT g.*
FROM giocatori g
JOIN squadre s ON g.squadra_appartenenza = s.ID_squadra
WHERE s.abbonati > 10000;

-- Elencare tutti i procuratori di giocatori di serie B.


SELECT p.*
FROM procuratori p
JOIN giocatori g ON p.ID_procuratore = g.ID_procuratore
JOIN squadre s ON g.squadra_appartenenza = s.ID_squadra
WHERE s.serie = 'B';

-- Elencare i procuratori argentini.


SELECT p.*
FROM procuratori p
JOIN giocatori g ON p.ID_procuratore = g.ID_procuratore
WHERE g.nazione = 'Argentina';

-- Elencare tutti i procuratori che hanno come assistito un capitano.


SELECT p.*
FROM procuratori p
JOIN giocatori g ON p.ID_procuratore = g.ID_procuratore
WHERE g.ID_giocatore = p.assistito_da_capitano;

-- Elencare tutti i calciatori disoccupati che valgono più di €10.000.


SELECT g.*
FROM giocatori g
LEFT JOIN squadre s ON g.squadra_appartenenza = s.ID_squadra
WHERE s.ID_squadra IS NULL AND g.valore_di_mercato > 10000;

-- Elencare tutti i calciatori, anche quelli senza procuratore, ma riferito ai soli


giocatori di serie A.
SELECT g.*
FROM giocatori g
LEFT JOIN procuratori p ON g.ID_procuratore = p.ID_procuratore
JOIN squadre s ON g.squadra_appartenenza = s.ID_squadra
WHERE s.serie = 'A';

-- Elencare tutte le squadre con i relativi procuratori.


SELECT s.*, p.*
FROM squadre s
JOIN giocatori g ON s.ID_squadra = g.squadra_appartenenza
JOIN procuratori p ON g.ID_procuratore = p.ID_procuratore;

12)

-- Creazione delle tabelle

CREATE TABLE autori (


ID_autore INT PRIMARY KEY,
nome VARCHAR(50),
cognome VARCHAR(50),
data_nascita DATE,
ultimo_premio VARCHAR(50)
);

CREATE TABLE argomenti (


ID_argomento INT PRIMARY KEY,
nome VARCHAR(50)
);

CREATE TABLE articoli (


ID_articolo INT PRIMARY KEY,
titolo VARCHAR(100),
anno INT,
ID_autore INT,
FOREIGN KEY (ID_autore) REFERENCES autori(ID_autore)
);
CREATE TABLE riviste (
ID_rivista INT PRIMARY KEY,
titolo VARCHAR(50),
numero INT,
mese VARCHAR(20),
anno INT
);

CREATE TABLE autori_articoli (


ID_autore INT,
ID_articolo INT,
numero_righe INT,
PRIMARY KEY (ID_autore, ID_articolo),
FOREIGN KEY (ID_autore) REFERENCES autori(ID_autore),
FOREIGN KEY (ID_articolo) REFERENCES articoli(ID_articolo)
);

CREATE TABLE argomenti_articoli (


ID_articolo INT,
ID_argomento INT,
PRIMARY KEY (ID_articolo, ID_argomento),
FOREIGN KEY (ID_articolo) REFERENCES articoli(ID_articolo),
FOREIGN KEY (ID_argomento) REFERENCES argomenti(ID_argomento)
);

-- Query di congiunzione

-- Elencare tutti gli autori, gli articoli scritti e le riviste in cui compaiono,
anche quelli che non hanno mai scritto un articolo.
SELECT a.*, ar.*, r.*
FROM autori a
LEFT JOIN autori_articoli aa ON a.ID_autore = aa.ID_autore
LEFT JOIN articoli ar ON aa.ID_articolo = ar.ID_articolo
LEFT JOIN riviste r ON ar.ID_articolo = r.ID_articolo;

-- Elencare tutti gli autori che hanno scritto articoli dal 1990 al 2000, senza
ripeterne i nomi.
SELECT DISTINCT a.*
FROM autori a
JOIN autori_articoli aa ON a.ID_autore = aa.ID_autore
JOIN articoli ar ON aa.ID_articolo = ar.ID_articolo
WHERE ar.anno BETWEEN 1990 AND 2000;

-- Elencare tutte le riviste che hanno articoli scritti da autori nati prima del
1970.
SELECT DISTINCT r.*
FROM autori a
JOIN autori_articoli aa ON a.ID_autore = aa.ID_autore
JOIN articoli ar ON aa.ID_articolo = ar.ID_articolo
JOIN riviste r ON ar.ID_articolo = r.ID_articolo
WHERE a.data_nascita < '1970-01-01';

-- Elencare tutti i titoli degli articoli scritti da più autori.


SELECT ar.titolo, COUNT(aa.ID_autore) AS numero_autori
FROM autori_articoli aa
JOIN articoli ar ON aa.ID_articolo = ar.ID_articolo
GROUP BY ar.titolo
HAVING COUNT(aa.ID_autore) > 1;
-- Elencare tutti gli articoli scritti dall'autore "Verdi".
SELECT ar.*
FROM autori a
JOIN autori_articoli aa ON a.ID_autore = aa.ID_autore
JOIN articoli ar ON aa.ID_articolo = ar.ID_articolo
WHERE a.cognome = 'Verdi';

-- Elencare tutti gli articoli scritti nel settembre 2001 e pubblicati lo stesso
anno.
SELECT ar.*
FROM riviste r
JOIN articoli ar

Potrebbero piacerti anche