SQL: Definizione dei dati
Create table
Permette di creare un'istanza vuota di una tabella.
Sintassi:
CREATE TABLE NomeTabella (NomeAttributo Dominio [vincoli] NomeAttributo Dominio [vincoli] …. NomeAttributo Dominio [vincoli] [AltriVincoli])
Tramite DEFAULT è possibile applicare un valore di default all’attributo.
WARNING: È importante definire una primary key o attributi unique, altrimenti la tabella potrà avere ennuple completamente uguali.
Create domain
Permette di creare domini personalizzati da domini predefiniti tramite check.
Sintassi:
CREATE DOMAIN NomeDominio AS DominioPresistente [Default] [Vincoli]
Alter table
Permette di modificare una tabella, essenziale per creare vincoli foreign key.
Sintassi:
ALTER TABLE NomeTabella ADD Attributo|Vincolo
CONSTRAINT permette di dare un nome al vincolo.
Drop table
Permette di eliminare una tabella.
Sintassi:
DROP TABLE NomeTabella RESTRICT|CASCADE
I parametri RESTRICT e CASCADE specificano come eliminare le tabelle collegate:
- RESTRICT => elimina solo se non ci sono riferimenti ad essa
- CASCADE => elimina tabella e tutte le tabelle che si riferiscono ad essa
Vincoli intrarelazionali
Esprimono condizioni sui valori di ogni tupla:
- PRIMARY KEY => assegna chiave primaria, valore univoco identificativo (NOT NULL)
- NOT NULL => il valore non può essere NULL
- UNIQUE => permette di creare una superchiave per l’attributo
OSS Attributo1 UNIQUE … attribuito2 UNIQUE ≠ UNIQUE( attributo1, attributo2)
CHECK => vincoli sulle tuple (es. permette di assegnare valori predefiniti nelle quali possono rientrare i valori delle tuple)
Vincoli interrelazionali
Permettono di associare informazioni su relazioni differenti:
- CHECK => permette di creare vincoli complessi tra tabelle, tra cui vincoli di inclusione.
- REFERENCES FOREIGN KEY => definiscono vincoli di integrità referenziali, gli attributi referenziati devono essere delle primary key (o unique) nella tabella di arrivo. Può essere creato solo se la tabella da referenziare esiste già, richiede utilizzo di alter table ciclico per doppia referenziazione.
Sintassi:
- REFERENCES Attributo
- FOREIGN KEY (Attributo, Attributo, …) REFERENCES NomeTabella(Attr, Attr, …)
OSS il dominio di un attributo referenziato corrisponde con il dominio dell’attributo nell’altra tabella.
Extra foreign key
Il vincolo di foreign key permette inoltre di settare le azioni nel caso di aggiornamento (ON UPDATE) o cancellazione (ON DELETE) della tabella.
Sintassi:
- ON UPDATE NO ACTION|RESTRICT|CASCADE|SET DEFAULT|SET NULL
- ON DELETE NO ACTION|RESTRICT|CASCADE|SET DEFAULT|SET NULL
- NO ACTION => genera errore al momento della verifica del vincolo
- RESTRICT => genera errore immediato, non aspetta fine transazione
- CASCADE => cancella tupla che re