vuoi
o PayPal
tutte le volte che vuoi
DEFINIZIONE DEI DATI
Create table
Permette di creare istanza vuota di una tabella
sintassi
CREATE TABLE NomeTabella (
NomeAttributo Dominio [vincoli]
NomeAttributo Dominio [vincoli]
….
NomeAttributo Dominio [vincoli]
[AltriVincoli]
)
Tramite DEFAULT è possibile applicare 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
ATLER TABLE NomeTabella
ADD Attributo|Vincolo
CONSTRAINT permette di
dare un nome al vincolo 1
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 (ex. 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
e => definiscono vincoli di integrità referenziali, gli
attributi referenziati devono essere delle primary key (o unique) nella tabella di arrivo.
Può essere creato solo se tabella da referenziare esiste già, richiede utilizzo di alter
table ciclci 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 2
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
DEFERRED
WARNING anche se 1
- CASCADE => cancella tupla che referenzia e tupla referenziata
- SET DEFAULT => sostituisce referenziata con valore default
- SET NULL => sostituisce referenziata con NULL
Le transazioni
- Atomiche => le operazioni non si possono suddividere
- Consistenti => rispettano i vincoli
OSS I vincoli DEFERRED possono essere violati durante le operazioni ma devono
essere rispettati alla fine della transazione, altrimenti viene annulata per intero
- Isolate => gestiscono sezione critica nel caso di transazioni simultanee
- Durevoli => una volta effettuate sono definitive
sintassi
BEGIN;
BEGIN|UPDATE|DELETE SintassiOperazioneManipolazioneDati
COMMIT;
DEFERRED => applicabile sui vincoli di foreign key, permette di controllare il vincolo solo alla
1 fine della transazione 3
MANIPOLAZIONE DEI DATI
Insert
Permette di inserire tuple nella tabella
sintassi
INSERT INTO Tabella [(Attributi)]
VALUES
(valori),
(valori),
….
valori;
Se non specifico attributi prendo tutti, è possibile inserire elementi tramite select
Delete
Permette di eliminare tuple
sintassi
DELETE FROM Tabella
[WHERE Condizione]
Fare attenzione a vicoli cascade
Update
Permetti di modificare tuple
sintassi
UPDATE NomeTabella
SET Attributo = Espressione|select…|null|default
[WHERE Condizione] 4
Interrogazioni
La select
La versione base permette di effettuare le interrogazioni sugli attributi (o le espressioni
sugli attributi) inseriti nella clausola select appartenenti alle tabelle della clausola from,
aventi le condizioni indicate nella where.
sintassi
SELECT ListaAttributi o Espressioni
FROM ListaTabelle
[WHERE CondizioniSemplici]
[GROUP BY ListaAttributiRaggruppamento]
[HAVING CondizioniAggregate]
[ORDER BY ListaAttributiOrdinamento]
[LIMIT numero]
- Gli attributi si scrivono come “NomeTabella.NomeAttributo”
- Tramite l’espressione * si possono selezionare tutti gli attributi della tabella
Distinct
Permette di eliminare le ennuple ripetute, essendo le tabelle SQL un multinsieme.
sintassi
SELECT DISTINCT ListaAttributi o Espressioni
…
As
Permette di effettuare ridenominazione su attributi
sintassi
SELECT NomeAttributo AS NuovoNomeAttributo
…
OSS
La proiezione si effettua utilizzando s le clausole select e from;
la selezione tramite la clausola where;
il join implicito tramite la from;
2
Like
Permette di creare espressioni regolari da confrontare con stringhe degli attributi
sintassi
SELECT ListaAttributi o Espressioni
FROM ListaTabelle
WHERE attributo LIKE ‘espressione’
…
join implicito => equivalente ad operazione di prodotto cartesiano
2 5
Is null
Permette di gestire valori nulli
sintassi
SELECT ListaAttributi o Espressioni
FROM ListaTabelle
WHERE attributo IS NULL|IS NOT NULL
…
Join esplicito
Equivalente a join implicito (theta-join), permette però di esplicitare le condizioni di join
nella from separandole dalle condizione della where
sintassi
SELECT Attributi
FROM tabella1 JOIN tabella2 ON CondizioniJoin
…
Join naturale
Gli attributi uguali delle tabelle vengono messi direttamente in corrispondenza
sintassi
SELECT Attributi
FROM tabella1 NATURAL JOIN tabella2
…
Outer join
Include anche valori che della tabella che non verrebbero aggiunti a causa di valori null
sintassi
SELECT Attributi
FROM tabella1 LEFT|RIGHT|FULL OUTER JOIN tabella2
… 6
Operatori aggreganti
Permettono di calcolare valori a partire da insiemi di ennuple, il DISTINCT permette di non
riusare valori uguali provenienti da tuple differenti
Sintassi
SELECT FUNZIONE([DISTINCT] EspressioneSuAttributi)
…
funzioni principali:
- COUNT => conta ennuple nella tabella
OSS può usare ‘*’ come espressione che prende tutte le ennuple della tabella
- SUM => somma tutti i valori dell’attributo
- AVG => media valori dell’attributo
- MAX => valore massimo dell’attributo
- MIN => valore minimo dell’attributo
OSS gli attributi con valori NULL non vengono considerati
Group by
permette di creare sottoinsiemi di ennuple nella tabella prendendo tutti gli attributi con
valori uguali (per rendere attributo omogeneo con operatore)
sintassi
SELECT ListaAttributi o Espressioni WARNING se è presente nella SELECT
FROM ListaTabelle un attributo contenuto nella GROUP BY
… oppure un operatore aggregante, allora
[GROUP BY ListaAttributiRaggruppamento] anche tutti gli altri attributi dovranno far
… parte della GROUP BY oppure essere
operatori aggreganti 7