Ecco come fare le interrogazioni di base ad un db Ansi sql 92. Saper estrarre i dati da un db oggi è una conoscenza considerata minimale nel lavoro di un IT. Al contrario il tuning dell’sql è una materia ancora non considerata minimale.
Utilizzare l’sql e semplice ma capire come fare il tuning delle query sql per velocizzare l’estrazione dei dati non è solitamente una conoscenza di base. Una lettura che consiglio vivamente è la seguente:
LE OPERAZIONI RELAZIONALI NEL LINGUAGGIO SQL
- SELEZIONE
SELECT * FROM NomeTabella WHERE Condizione |
Esempio:
Date le tabelle: Anagrafica (Codice, Nome, Indirizzo)
Movimento (Numero, Descrizione, Data, Importo, Codice)
si vuole ottenere: l’elenco delle anagrafiche con Indirizzo = ‘Milano’
L’operazione relazionale che consente di ottenere i dati richiesti è:
Selezione di Anagrafica per Indirizzo = ‘Milano’
SELECT * FROM Anagrafica WHERE indirizzo = ‘Milano’ |
- PROIEZIONE
SELECT Colonna1, Colonna2, … FROM NomeTabella |
Esempio: Date le tabelle:
Anagrafica (Codice, Nome, Indirizzo)
Movimento (Numero, Descrizione, Data, Importo, Codice)
si vuole ottenere:
a) Elenco dei codici e dei nomi delle anagrafiche
Operazione relazionale: proiezione di Anagrafica su Codice e Nome
SELECT Codice, Nome FROM Anagrafica |
- b) Elenco dei movimenti con data e importo
Operazione relazionale: proiezione di Movimento su Data e Importo
SELECT Data, Importo FROM Movimento |
- CONGIUNZIONE
SELECT * FROM Tabella1, Tabella2 WHERE Tabella1.Attrib1 = Tabella2.Attrib2 |
Esempio:
Date le tabelle: Anagrafica (Codice, Nome, Indirizzo)
Movimento (Numero, Descrizione, Data, Importo, Codice)
si vuole ottenere:
Elenco dei movimenti con i dati anagrafici ad essi relativi
Operazione relazionale: congiunzione di Anagrafica su Codice e di Movimento su Codice
SELECT * FROM Anagrafica, Movimento WHERE Anagrafica.Codice= Movimento.Codice |
LE OPERAZIONI RELAZIONALI NEL LINGUAGGIO SQL: uso di più operatori
SELECT Colonna1, Colonna2, … FROM Tabella1, Tabella2 WHERE Tabella1.Attrib1 = Tabella2.Attrib2 AND Condizione |
Esempio:
Date le tabelle: Anagrafica (Codice, Nome, Indirizzo)
Movimento (Numero, Descrizione, Data, Importo, Codice)
si vuole ottenere:
Elenco dei movimenti con Nome e Importo riferiti alle anagrafiche aventi un indirizzo prefissato
Operazioni relazionali:
- Selezione di Anagrafica per Indirizzo = prefissato
- Congiunzione della tabella ottenuta su Codice e di Movimento su Codice
- Proiezione della tabella ottenuta su Nome e Importo
SELECT Nome, Importo FROM Anagrafica, Movimento WHERE Anagrafica.Codice= Movimento.Codice AND Indirizzo = [Quale Indirizzo] |
Esercizio: Con riferimento al modello di database con Anagrafica e Movimento, risolvere la seguente interrogazione, specificando le operazioni relazionali e la codifica nel linguaggio SQL.
Tabelle derivate: Anagrafica (Codice, Nome, Indirizzo)
Movimento (Numero, Descrizione, Data, Importo, Codice)
- 1. Elenco dei movimenti relativi a un codice prefissato.
Operazione relazionale: Selezione di Movimento per Codice = [prefissato]
SELECT * FROM Movimento WHERE Codice = [prefissato] |
- 2. Elenco dei movimenti con codice, data, importo
Operazione relazionale: Proiezione di Movimento su Codice, Data, Importo
SELECT Codice, Data, Importo |
- 3. Elenco con Nome anagrafico e Numero di registrazione dei movimenti
Operazioni relazionali:
Congiunzione di Movimento su Codice e di Anagrafica su Codice
Proiezione della tabella ottenuta su Nome, Numero
SELECT Nome, Numero FROM Movimento, Anagrafica WHERE Movimento.Codice = Anagrafica.Codice |
- 4. Data dei movimenti con Indirizzo dell’anagrafica.
Operazioni relazionali:
Congiunzione di Movimento su Codice e di Anagrafica su Codice
Proiezione della tabella ottenuta su Data, Indirizzo
SELECT Data, Indirizzo FROM Movimento, Anagrafica WHERE Movimento.Codice = Anagrafica.Codice |
- 5. Numero di registrazione dei movimenti riferiti all’anagrafica avente un Nome prefissato.
Operazioni relazionali:
Selezione di Anagrafica per Nome = [prefissato]
Congiunzione della tabella ottenuta su Codice e di Movimento su Codice
Proiezione della tabella ottenuta su Numero
SELECT Numero |
- Nome anagrafico, Data e Importo dei movimenti riferiti a un indirizzo prefissato
Operazioni relazionali:
Selezione di Anagrafica per Indirizzo = [prefissato]
Congiunzione della tabella ottenuta su Codice e di Movimento su Codice
Proiezione della tabella ottenuta su Nome, Data, Importo
SELECT Nome, Data, Importo FROM Movimento, Anagrafica WHERE Movimento.Codice = Anagrafica.Codice AND Indirizzo = [prefissato] |
Continua…
autore: Marco Palladino