LINGUAGGIO SQL (Structured Query Language)
Classificazione dei linguaggi che il DBMS (Data Base Management System) mette a
disposizione
 DDL (Data Definition Language) per la creazione dello schema del database
(creazione di tabelle, delle associazioni tra tabelle, dei vincoli di integrità e dei
controlli relativi alla sicurezza, ossia le autorizzazioni agli accessi e tipi di
permessi consentiti agli utenti)
 DML (Data Manipulation Language) che consente le operazioni di inserimento,
modifica e cancellazione dei dati contenuti nel database
 Query language (linguaggio di interrogazione) per estrarre dal database i dati
che soddisfano criteri di ricerca richiesti dall’utente
Con il modello relazionale si è imposto come standard il linguaggio SQL
(Structured Query Language), un linguaggio dichiarativo che offre tutte le
funzionalità di DDL, DML e query language.
Un linguaggio dichiarativo NON richiede la scrittura di
procedure (algoritmi) per ritrovare i dati richiesti (WHAT,
NOT HOW).
Esempio: comando SQL usato come query language.
Select Cognome, Nome
From Studenti
Where CodFac = “mat”
ANSI (American National Standard Institute) ha standardizzato varie versioni di SQL
negli anni ’86, ’98, ’92 e 2002.
La versione più diffusa è lo standard SQL/92 (anche standard ISO).
I vari produttori implementano SQL con numerose variazioni e adottano lo standard
soltanto ad un livello minimo detto Entry Level.
1
QUERY LANGUAGE
Comando SELECT
SELECT [DISTINCT] [TOP N] attributo1 AS alias1, attributo2 AS alias2, ...
FROM tabella1, tabella2, …
WHERE criterio di selezione
GROUP BY attributo1, attributo2, …
HAVING condizione sul raggruppamento
ORDER BY attributo1 [DESC], ...
Spiegazioni:
 '*' per 'selezionare tutti gli attributi
 clausola AS si usa per ridenominare i nomi delle colonne con un ALIAS
 clausola DISTINCT per eliminare le righe duplicate
 clausola TOP N per includere nel risultato le prime N righe selezionate dalla query
 clausola DESC per ottenere l’ordinamento decrescente
 clausola ORDER BY per ottenere l’ordinamento crescente (default) o decrescente (DESC)
 i parametri da input sono racchiusi tra parentesi quadre [ ]
Operatori:
 aritmetici: +, -,*,/ , \ (q uoz i ent e senz a rest o), ^ (elevamento a potenza)
 operatori di confronto =, <> , <, >, <=, >=
 logici: NOT, AND, OR
 speciali SQL: LIKE, IN, IS NULL e IS NOT NULL
- BETWEEN <valore1> AND <valore2>
- inclusione IN (<valore1>, <valore2>, …)
- IS NULL e IS NOT NULL per gli attributi opzionali
- LIKE “pattern” (carattere jolly *  qualsiasi sequenza di caratteri; carattere jolly ?
 qualsiasi carattere)

funzioni e operazioni con le date
Year ( <campo_data>)
Restituisce l’anno della data
Month ( <campo_data>) Restituisce il mese della data
Day(<campo_data>)
Restituisce il giorno della data
Date()
Restituisce la data corrente (di sistema)
Weekday(<campo_data>) Restituisce il giorno della settimana (1 = dom; 2 = lun; …)
<data1> – <data2>
Restituisce il numero di giorni compresi tra le due date
<data1> +/- <numero>
Restituisce una data posteriore / anteriore

Funzioni di aggregazione:
COUNT(*)
Conteggio delle righe
SUM(<campo numerico>) Calcolo della somma
AVG(<campo numerico>) Calcolo della media
MAX(<campo numerico>) Calcolo del massimo
MIN(<campo numerico>) Calcolo del minimo
2
DML
Comando INSERT
INSERT INTO tabella (attributo1, attributo2, …)
VALUES (valore1, valore2, …)
N.B.: il campo di tipo counter è auto-incrementato e quindi non deve essere incluso nel
comando
Comando UPDATE
UPDATE tabella
SET attr = espressione,
…
WHERE condizione
Comando DELETE
DELETE *
FROM tabella
WHERE condizione
Query di creazione tabella (contenente i dati selezionati da una tabella esistente)
SELECT attributo1, attributo2, … INTO nuova-tabella
FROM tabella
Query di accodamento (per accodare in una tabella i dati selezionati da un’altra tabella)
INSERT INTO tabella
SELECT *
FROM altra-tabella
3
DDL
Tipi di dati previsti dall’SQL









SMALLINT: interi su 2 byte
INT/INTEGER: interi su 4 byte
DEC(P, S) / DECIMAL (P, S): numeri reali con P cifre in totale di cui S dopo la virgola
CHAR(N) / CHARACTER(N): stringa lunghe N caratteri fino ad un massimo di 15.000
DATE: formato MM/GG/AA
TIME: formato HH:MM
COUNTER: contatore
BIT: valori sì/no (SQL/02)
IMAGE: immagine collegata o incorporata (SQL/02)
Mapping tra i tipi di dati SQL/Access e SQL
Tipo di dato fornito da Access
TESTO
MEMO
NUMERICO (BYTE)
NUMERICO (INTERO)
NUMERICO (INTERO
LUNGO)
CONTATORE
NUMERICO (PRECISIONE
SINGOLA)
NUMERICO (PRECISIONE
DOPPIA)
VALUTA
DATA E ORA (DATA IN
CIFRE)
DATA E ORA (ORA BREVE
24H)
OGGETTO OLE
SÌ/NO
COLLEGAMENTO
IPERTESTUALE
Descrizione
Tipo SQL
fino a 255 caratteri
fino a 65535 caratteri
interi tra 0 e 255 (1 byte)
interi tra -32768 e 32767 (2 byte)
interi (4 byte)
CHAR(N)
CHAR(N)
SMALLINT
SMALLINT
INT
numeri univoci sequenziali con
incremento unitario corrispondente al
tipo Numerico /Intero
Reali su 4 byte
COUNTER
Reali su 8 byte
DECIMAL (P, S)
Valori per valuta (8 byte)
Formato GG/MM/AAAA
DECIMAL (P, S)
DATE
Formato OO.MM
TIME
Immagine collegata o incorporata
Campo contenente un solo valore tra 2
(on/off, vero/falso, sì/no)
Indirizzo internet nel formato URL
(Uniform Resource Locator)
IMAGE
BIT
CREATE TABLE
CREATE TABLE tabella
(attr1 tipo1 [NOT NULL],
…..
attrN tipoN [NOT NULL],
PRIMARY KEY (attr1, …),
FOREIGN KEY (attr1, …) REFERENCES tabella(attr1, …), …
)
4
DECIMAL (P, S)
CHAR(N)