linguaggio di tipo non procedurale
consente di operare sui dati di un database
utilizza parole chiave prese dal linguaggio corrente
consente di inserire un’interrogazione all’interno di un’altra
(query innestate)
SELECT
DML - Data Manipulation Language
DDL - Data Definition Language
DCL - Data Control Language
SELECT [ ALL | DISTINCT ] lista_scelte
FROM lista_tabelle
[ WHERE condizioni ]
[ GROUP BY lista_attributi ]
[ HAVING condizioni ]
[ ORDER BY lista_attributi [ ASC | DESC ] ]
Restituisce i valori prescelti delle tabelle che soddisfano ai requisiti indicati.
ALL (default) restituisce tutti i valori
risultanti, DISTINCT solo quelli diversi tra loro
lista delle espressioni (separate da virgole) che si
desidera ottenere:
FROM indica la/e tabella/e da cui estrarre
i valori
WHERE specifica le restrizioni o condizioni che
devono essere soddisfatte dai valori risultanti
GROUP BY permette di raggruppare i risultati
per omogeneità degli attributi, utile nelle funzioni di aggregazione
HAVING è l’equivalente del WHERE applicata ai
gruppi ottenuti dal GROUP BY
ORDER BY ordina i valori risultanti
rispetto a uno o più campi in modo ascendente (default) o discendente
è possibile cambiare il
nome di una colonna nel seguente modo:
[INTO nuovo_nome_tabella]
prima di FROM permette di creare una nuova tabella con i valori risultanti dalla SELECT
FROM non è più obbligatoria, SELECT viene
usata per attribuire valori a variabili
lista_tabelle può contenere
tabelle e view ed è possibile indicare il nome dell’indice da utilizzare
SELECT
INSERT aggiunge nuove righe in una tabella o in
una vista
INSERT INTO {nome_tabella | nome_vista}
[(lista_colonne)]
{ VALUES (lista_valori) | subquery }
UPDATE modifica i valori esistenti in una tabella
o in una vista
UPDATE {nome_tabella | nome_vista}
SET
nome_colonna = {espressione | subquery}
[, nome_colonna = {espressione | subquery}]
[, ...]
[WHERE condizione]
DELETE cancella righe da una tabella o da una vista
DELETE FROM {nome_tabella | nome_vista}
[WHERE condizione]
CREATE crea oggetti di un database -
tabelle, indici, viste
CREATE TABLE nome_tabella
(
nome_colonna tipo_colonna costrizioni_colonna
[, nome_colonna tipo_colonna costrizioni_colonna]
[ ... ]
)
CREATE [UNIQUE] INDEX nome_indice
ON nome_tabella (lista_colonne)
CREATE VIEW nome_view
[ lista_nomi_colonne ]
AS subquery
Esempi
ALTER modifica la definizione di una tabella
ALTER TABLE nome_tabella
[ ADD nome_colonna tipo_colonna [costrizioni_colonna]
[, nome_colonna tipo_colonna [costrizioni_colonna] ] [, ...] ]
[ DROP clausole_drop]
GRANT consente al proprietario di un oggetto
di accordare privilegi su di esso ad altri utenti
GRANT {ALL | lista_privilegi}
ON { nome_tabella [lista_colonne] | nome_vista [lista_colonne] }
TO {lista_utenti | PUBLIC}
REVOKE revoca i privilegi concessi in precedenza
REVOKE {ALL | lista_privilegi}
ON { nome_tabella [lista_colonne] | nome_vista [lista_colonne] }
FROM {lista_utenti | PUBLIC}