SQL: STRUCTURED QUERY LANGUAGE
Appunti di Carriere Luca e De Lorenzis Piero
Lezione dell’Ing. Lucia Vaira 30/04/2014
L’SQL è un linguaggio standardizzato per database che può essere suddiviso in:
-
DDL: Data Definition Language, crea e modifica la struttura del database attraverso i comandi
(Create, Alter, Drop);
DML: Data Manipulation Language, manipola dati attraverso i comandi (Insert, Update, Delete);
DCL: Data Control Language, gestisce i permessi di accesso ai dati attraverso i comandi (Grant,
Revoke);
DQL: Data Query Language, crea Query per estrarre informazioni dal Database attraverso il
comando Select;
Vincoli dell’SQL:
-
NOT NULL: il tipo di dato inserito nel campo non deve essere incompatibile con il tipo dichiarato
(NULL: valore sconosciuto, nascosto o con attributo incompatibile);
DEFAULT: inserisce un valore di Default se il campo è Null;
UNIQUE: assicura l’univocità di un campo;
PRIMARY KEY: definisce una chiave primaria;
FOREIGN KEY: definisce una chiave esterna;
CHECK: controlla un campo;
INDEX: indicizza un campo;
Funzioni Principali SQL (C.R.U.D.)
Questo acronimo che sta per (Create, Read, Update, Delete) contiene in sé tutte le principali operazioni
che si possono effettuare su un Database descrivendone il suo ciclo di vita, dalla sua creazione alla sua
cancellazione.
CREATE (Creare una tabella dati)
CREATE TABLE nome_tabella (
col1 tipodato,
col2 tipodato,
…
colN tipodato,
PRIMARY KEY (ID)
);
Esempio: creazione di una tabella contenente i dati del cliente;
CREATE TABLE cliente(
id int NOT NULL,
nome varchar(20) NOT NULL,
anni int,
PRIMARY KEY (ID));
READ  SELECT (From, Where, Select) (Selezionare dati da tabelle esprimendo o meno determinate
condizioni)
Esempio: selezionare un certo elemento all’interno di una tabella
SELECT anni
FROM cliente
WHERE nome=”Mario”;
Restituisce gli anni di tutti i clienti di nome Mario; se dopo il SELECT si inserisce il simbolo * il comando
restituirà tutti i campi presenti, non solo gli anni;
UPDATE (Modificare i dati presenti in una tabella, una volta caricata)
UPDATE nome_tabella
SET col1=[val1]
SET col2=[val2]
…
WHERE condizione;
Esempio: Impostare a 23 gli anni di tutti i clienti che si chiamano Mario;
UPDATE cliente
SET anni=23
WHERE nome=”Mario”;
DELETE (Cancellare un dato in base a una condizione)
DELETE FROM nome_tabella
WHERE condizione;
ALIAS E NOTAZIONE CON PUNTO
Alias di Colonna: consentono di agevolare l’organizzazione dell’output, rendendoli più facili da leggere.
Alias di Tabella: consente di ottenere informazioni contenute in due tabelle diverse attraverso il comando
FROM
SELECT nome_tabella1.attributo, nome_tabella2.attributo
FROM tabella1, tabella2 AS nome_tabella1;
FUNZIONI DI AGGREGAZIONE
Sono delle tipiche funzioni chiamate anche deterministiche, che una volta ricevuti N dati in input
restituiscono un solo output.
Sono Funzioni di Aggregazione:
SUM (Somma), AVG (Media), MIN (Minimo), MAX (Massimo), COUNT (Conta elementi)
GROUP BY
Consente di raggruppare una tabella secondo un certo ordine espresso dall’utente
SELECT col1, col2
FROM nome_tabella
WHERE condizione
GROUP BY col1, col2
ORDER BY col1, col2; (L’ordinamento può essere crescente “ASC” o decrescente “DISC”)
Esempio: sommare gli stipendi dei singoli clienti e ordinarli per nome.
SELECT nome, SUM stipendio
FROM cliente
GROUP BY nome;
HAVING
Consente di limitare l’output in base alla funzione di aggregazione espressa.
SELECT col1, col2
FROM tabella1, tabella2
WHERE condizione1
GROUP BY col1, col2
(dopo aver raggruppato “GROUP BY” viene inserita questa post-condizione
HAVING condizione2
diversa dalla condizione1 che filtra nuovamente gli elementi)
ORDER BY col1, col2;
Esempio: prende tutti gli elementi da cliente, prende tutti i valori dalla colonna anni e filtra tutti i valori >=2.
SELECT *
FROM cliente
GROUP BY anni
HAVING COUNT anni>=2;
JOIN
Le Join vengono utilizzate per combinare il risultato di due o più tabelle.
Supponendo quindi di avere due tabelle (A e B)
Tipi di Join:
-
INNER JOIN: combina i risultati comuni in A e B;
LEFT JOIN: combina i risultati nella tabella di sinistra con le condizioni della tabella di destra;
RIGHT JOIN: combina i risultati nella tabella di destra con le condizioni della tabella di sinistra;
FULL JOIN: combina i risultati di tutta A e tutta B;
SELF JOIN: combina i risultati di una tabella con se stessa;
CARTESIAN JOIN: combina tutte le possibili combinazioni tra A e B;
Il FULL JOIN in Microsoft Access non esiste ma può essere scritta così
Procedura del LEFT JOIN
UNION ALL
Procedura del RIGHT JOIN