SELECT


Struttura comando

SELECT [DINSTINCT] lista_attributi
FROM lista_tabelle
WHERE condizioni
ORDER BY condizioni_ordinamento;

Tabella Dipendente

codDcognomedipartimentostipendio
d1RossiMarketing100
d2RossiAmministrazione60
d3NeriProduzione80
d4VerdiProduzione120
d5GialliMarketing90

Singolo attributo

SELECT cognome FROM Dipendente;
cognome
Rossi
Rossi
Neri
Verdi
Gialli

Attributi multipli

SELECT cognome, codD codice FROM Dipendente
cognomecodice
Rossid1
Rossid2
Nerid3
Verdid4
Giallid5

Clausola WHERE

SELECT cognome, dipartimento
FROM Dipendente
WHERE dipartimento='Marketing' OR dipartimento='Produzione'

SELECT stipendio/12
FROM Dipendente
WHERE codD='d3';
stipendio/12
6,67

Possiamo rinominarlo

SELECT stipendio/12 stipendio_mensile
FROM Dipendente
WHERE codD='d3';
stipendio_mensile
6,67

Clausola ORDER BY

SELECT cognome, dipartimento
FROM Dipendente
ORDER BY cognome;
cognomedipartimento
GialliMarketing
NeriProduzione
RossiMarketing
RossiAmministrazione
VerdiProduzione

Posso usare ASC e DESC per scegliere il tipo di ordinamento: ORDER BY cognome DESC


Clausola DISTINCT

SELECT DISTINCT cognome
FROM Dipendente;

Prenderà tutti i cognomi in modo univoco


Clausola LIKE

SELECT *
FROM Dipendente
WHERE cognome LIKE 'R%i';

Prende tutti i dipendenti con cognome che inizia per R e finisce per i (case sensitive).

SELECT *
FROM Dipendente
WHERE cognome LIKE 'R___i';

Prende tutti i dipendenti con cognome che inizia per R e finisce per i con 3 caratteri nel mezzo, indicati dal numero di underscore _.


Operatori di aggregazione

  1. SUM
  1. AVG
  1. MAX
  1. MIN
  1. COUNT

Tabelle multiple

Tabella Dipartimento

nomesedebudget
MarketingMilano1000
AmministrazionePadova800
ProduzioneLegnago600

Join tra tabelle

SELECT *
FROM Dipendente, Dipartimento
WHERE Dipendente.dipartimento=Dipartimento.nome;
d1RossiMarketing100MarketingMilano1000
d2RossiAmministrazione60AmministrazionePadova800
etc...

Per un singolo valore

SELECT Dipartimento.sede
FROM Dipendente, Dipartimento
WHERE Dipendente.dipartimento=Dipartimento.nome;

Rinominando

SELECT d2.sede
FROM Dipendente d1, Dipartimento d2
WHERE d1.dipartimento=d2.nome;

Per tutti i valori di una tabella

SELECT d2.*
FROM Dipendente d1, Dipartimento d2
WHERE d1.dipartimento=d2.nome;

Il . non è necessario se l’attributo a cui bisogna fare riferimento compare in una sola tabella

Join avanzato

SELECT attributi FROM tabella1 as alias tipo-join join tabella2 as alias on condizioni

Il tipo-join può essere:

Esempio:

SELECT *
FROM Dipartimento d INNER JOIN Dipendente di ON d.nome=d.dipartimento

All & Any

SELECT *
FROM [tabella]
WHERE attributo = [ANY or IN] [SELECT SQL]

Interrogazioni insiemistiche

Riprendono i concette dell’algebra relazionale. Gli operatori utilizzati sono:

[SELECT SQL] UNION | EXCEPT | INTERSECT (ALL) [SELECT SQL]

ALL è opzionale ed include i ripetuti degli elementi in comune