Il linguaggio SQL
Esempi

Tabella "anagrafica"

cognome
nome
tessera
età
peso
LottiDaniela X1X23AB 2354.5
Ferrari ClaudiaXX12T54 2456
Feltri GuglielmoAA32X67 4572
Feltri DanielaER58GH4 1948

Tabella "corsi"

tessera
corso
data_iscrizione
quota_iscrizione
data_ scadenza
X1X23AB nuoto
01/09/96
240.000
01/03/96
XX12T54 tennis
12/10/96
200.000
12/01/96
AA32X67 squash
05/11/96
100.000
05/01/96
ER58GH4 pallavolo
11/11/96
150.000
11/02/96
XX12T54 nuoto
01/12/96
120.000
01/03/96
X1X23AB scherma
15/12/96
175.000
15/03/96

SELECT

SELECT cognome, nome, tessera FROM anagrafica
Per ogni riga della tabella anagrafica restituisce i campi cognome, nome, tessera
cognome
nome
tessera
LottiDaniela X1X23AB
Ferrari ClaudiaXX12T54
Feltri GuglielmoAA32X67
Feltri DanielaER58GH4

SELECT DISTINCT nome FROM anagrafica
Restituisce i nomi diversi tra loro della tabella anagrafica
nome
Daniela
Claudia
Guglielmo

SELECT cognome, nome, età FROM anagrafica ORDER BY età DESC
Ordina le righe della tabella anagrafica in ordine decrescente di età
cognome
nome
età
Feltri Guglielmo45
Ferrari Claudia24
LottiDaniela 23
Feltri Daniela19

SELECT cognome, nome FROM anagrafica WHERE età > 23
Restituisce le righe della tabella anagrafica che soddisfano la condizione richiesta sull'età
cognome
nome
Ferrari Claudia
Feltri Guglielmo

SELECT cognome, nome, corso, data_iscrizione FROM anagrafica a, corsi c WHERE a.tessera = c.tessera ORDER BY cognome, nome
Esegue il prodotto cartesiano delle due tabelle anagrafica e corsi ed estrae le righe con lo stesso numero di tessera
cognome
nome
corso
data_iscrizione
Feltri Danielapallavolo
11/11/96
Feltri Guglielmosquash
05/11/96
Ferrari Claudiatennis
12/10/96
Ferrari Claudianuoto
01/12/96
LottiDaniela nuoto
01/09/96
LottiDaniela scherma
15/12/96

SELECT cognome, nome, tessera FROM anagrafica WHERE tessera in
(SELECT DISTINCT tessera FROM corsi WHERE quota_iscrizione BETWEEN 150000 AND 300000)
Query innestata (o subquery)
cognome
nome
tessera
LottiDaniela X1X23AB
Ferrari ClaudiaXX12T54
Feltri DanielaER58GH4

SELECT corso, count(tessera) as 'n. iscritti' FROM corsi GROUP BY corso
Restituisce il numero di iscritti a ciascun corso
corso
n. iscritti
nuoto 2
tennis 1
squash 1
pallavolo 1
scherma 1

SELECT corso, count(tessera) as 'n. iscritti' FROM corsi GROUP BY corso
HAVING corso like 's%'
Restituisce il numero di iscritti ai corso che iniziano con lettera 's'
corso
n. iscritti
squash 1
scherma 1

Data Manipulation Language

INSERT INTO anagrafica VALUES ('Fontana', 'Giorgio', 'XYZ826K', null, null)
Inserisce una nuova riga nella tabella anagrafica
cognome
nome
tessera
età
peso
LottiDaniela X1X23AB 2354.5
Ferrari ClaudiaXX12T54 2456
Feltri GuglielmoAA32X67 4572
Feltri DanielaER58GH4 1948
Fontana GiorgioXYZ826K
UPDATE anagrafica SET età=25 WHERE cognome=’Feltri’ and nome=’Daniela’
Aggiorna il contenuto della tabella anagrafica
cognome
nome
tessera
età
peso
LottiDaniela X1X23AB 2354.5
Ferrari ClaudiaXX12T54 2456
Feltri GuglielmoAA32X67 4572
Feltri DanielaER58GH4 2548
Fontana GiorgioXYZ826K
DELETE FROM anagrafica WHERE cognome=’Feltri’
Rimuove due righe dalla tabella anagrafica
cognome
nome
tessera
età
peso
LottiDaniela X1X23AB 2354.5
Ferrari ClaudiaXX12T54 2456
Fontana GiorgioXYZ826K

Data Definition Language

CREATE TABLE anagrafica
( cognome varchar(25),
nome varchar(25),
tessera varchar(10) CONSTRAINT id_unico UNIQUE,
età numeric(3),
peso numeric(5,2))

CREATE INDEX indice_anagrafica
ON anagrafica (cognome, nome)

CREATE VIEW conto (cognome, nome, numero_iscrizioni)
AS SELECT cognome, nome, count(c.tessera)
FROM anagrafica a, corsi c
WHERE a.tessera=c.tessera
Crea una vista con il cognome, nome dalla tabella anagrafica e il numero di corsi dalla tabella corsi
cognome
nome
numero_iscrizioni
LottiDaniela 2
Ferrari Claudia2
Fontana Giorgio0

ALTER TABLE anagrafica
ADD lavoro varchar(25)
DROP CONSTRAINT id_unico
Modifica la tabella anagrafica, aggiungendo il campo lavoro ed eliminando il constraint unico

DROP TABLE anagrafica Elimina la tabella anagrafica

Data Control Language

GRANT SELECT ON
anagrafica (cognome, nome)
TO PUBLIC
Concede la SELECT a tutti gli utenti sui campi cognome, nome della tabella anagrafica
REVOKE SELECT ON
anagrafica (cognome, nome)
TO PUBLIC
Revoca il privilegio di eseguire la SELECT a tutti gli utenti sui campi cognome, nome della tabella anagrafica