Operazioni di base nell’Sql

palladino tuning sql

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:

 palladino tuning sql

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

 

  1. 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:

  1. Selezione di Anagrafica per Indirizzo = prefissato
  2. Congiunzione della tabella ottenuta su Codice e di Movimento su Codice
  3. 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. 1.       Elenco dei movimenti relativi a un codice prefissato.

Operazione relazionale: Selezione di Movimento per Codice = [prefissato]

 

SELECT *

FROM Movimento

WHERE Codice = [prefissato]

 

  1. 2.       Elenco dei movimenti con codice, data, importo

Operazione relazionale: Proiezione di Movimento su Codice, Data, Importo

 

SELECT Codice, Data, Importo
FROM Movimento

 

  1. 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

 

  1. 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

  1. 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
FROM Movimento, Anagrafica
WHERE Movimento.Codice = Anagrafica.Codice
AND Nome = [prefissato]

 

 

  1. 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

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.