SQL SQL
SQL SQL
• Structured Query Language
• è un linguaggio con varie funzionalità:
– contiene sia il DDL sia il DML;
• esistono varie versioni dell’SQL;
• vediamo gli aspetti essenziali, non i dettagli
• “storia”:
– prima proposta SEQUEL (IBM Research, 1974);
– prima implementazione in SQL/DS (IBM, 1981);
– dal 1983 ca., “standard di fatto”
– standard (1986, poi 1989 e infine 1992) recepito in parte;
– standard SQL:2003 (SQL3) approvato recentemente 2
SQL Domini
• Domini elementari (predefiniti)
• Domini definiti dall‘utente (semplici, ma riutilizzabili) 3
SQL Domini elementari
• Carattere: singoli caratteri o stringhe, anche di lunghezza
variabile [ ] [ Lunghezza ]
character varying ( )
[ NomeFamigliaCaratteri ]
character set
• Bit: singoli booleani o stringhe
[ ] [ Lunghezza ]
bit varying ( )
• Numerici, esatti e approssimati:
[( Precisione [ Scala ] ]
numeric , )
integer
[( Precisione
float )]
double precision 4
SQL Domini elementari, 2
• Data, ora, intervalli:
date [( Precisione [ ]
time )] with time zone
[( Precisione [ ]
timestamp )] with time zone
UnitàDiTempo [ UnitàDiTempo ]
interval to 5
SQL Definizione di schemi
• In un database non ci sono solo tabelle:
[NomeSchema] [ [authorization]
• create schema
autorizzazione]{elemento schema}
• ‘elemento schema’ può essere: dominio, tabella, indice,
asserzione, vista, privilegio
• ‘autorizzazione’ è il nome dell’utente proprietario dello schema
• non è necessario definire tutto all’inizio 6
SQL Definizione di tabelle
NomeTabella Dominio
• create table (NomeAttributo
[Default] [Vincoli]
{, NomeAttributo Dominio
[Default] [Vincoli] }
AltriVincoli)
• Default (utilizzabili anche nella create domain)
< Valore >
default | user | null 7
SQL Esempio
• create table Dipartimento
( nome char(20) primary key,
indirizzo char(50),
città char(20)
) 8
SQL Definizione di domini
• Istruzione CREATE DOMAIN:
– definisce un dominio (semplice), utilizzabile in definizioni di
relazioni
• Sintassi NomeDominio Tipo
create domain as
[ Default ]
[ Vincoli ]
• Esempio
create domain Voto as smallint default null
check ( value >=18 and value <= 30 ) 9
SQL Vincoli intrarelazionali
(su singoli attributi)
• not null
permette di definire chiavi; sintassi:
• unique:
– per singoli attributi: dopo il dominio
unique
– chiavi formate da più attributi:
Attributo { Attributo }
unique ( , )
definizione della chiave primaria (una sola,
• primary key:
implica sintassi, come per
not null); unique
vedremo più avanti
• check, 10
SQL Vincoli intrarelazionali, esempi
Nome character(20) not null,
Cognome character(20) not null,
unique (Cognome,Nome)
• è diverso da:
Nome character(20) not null unique,
Cognome character(20) not null unique 11
SQL Vincoli interrelazionali
e (chiave esterna) permettono di
• references foreign key
definire vincoli di integrità referenziale; sintassi:
– per singoli attributi: dopo il dominio
references
– riferimenti su più attributi:
Attributo { Attributo }
foreign key( , )
references ...
• è possibile associare politiche di reazione alla violazione dei vincoli
(causate da modifiche sulla tabella esterna, cioè quella cui si fa
riferimento) 12
SQL Richiamo: base di dati
con vincoli di integrità referenziale 13
SQL Vincoli interrelazionali, esempio
create table Infrazioni(
Codice character(6) primary key,
Data date not null,
Vigile integer not null
references Vigile(Matricola),
Provincia character(2),
Numero character(6) ,
foreign key(Provincia, Numero) references
Automobili(Provincia, Numero)
) e’ una tabella interna, e sono
Infrazioni Vigile Automobili
esterne 14
SQL Violazione dei vincoli
• per tutti i vincoli visti fino ad ora si assume che se violati a causa
di un aggiornamento, il comando di aggiornamento venga
rifiutato segnalando l’errore all’utente.
• per i vincoli di integrità referenziale, SQL permette di scegliere
altre reazioni da adottare quando viene rilevata una violazione
• la reazione è possibile solo per le operazioni sulla tabella
esterna che si propagano secondo una certa politica verso la
tabella interna
• le violazioni possibili sono causate da modifiche del valore
dell’attributo riferito e dalla cancellazione di righe (es. modifiche
dell’attributo e cancellazione di righe da
Pr
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Gestione dati e archivi - Esercizi SQL
-
Gestione dati e archivi - progettazione ER e SQL
-
Gestione dati e archivi - Esercizi SQL/2
-
Gestione dati e archivi - Esercizi