Sintassi SQL Completa: DDL, DML, Join e Regole
Posted by ed123 and classified in Technology
Written on in
English with a size of 3.55 KB
Sintassi SQL: DDL e DML
Modifica delle Tabelle (ALTER TABLE)
ALTER TABLE nome_tabella {
ADD [COLUMN] nome_colonna tipo |
DROP [COLUMN] nome_colonna [{CASCADE | RESTRICT}] |
ALTER [COLUMN] nome_colonna SET DEFAULT valore |
ALTER [COLUMN] nome_colonna DROP DEFAULT |
ADD CONSTRAINT creditoMax CHECK (crediti ≤ 12); |
DROP CONSTRAINT nome_vincolo [{CASCADE | RESTRICT}] }
Inserimento, Eliminazione e Aggiornamento
INSERT INTO nome_tabella [ (colonne) ] VALUES (valori);
DELETE FROM nome_tabella [ WHERE condizione ];
UPDATE nome_tabella
SET colonna = { valore | DEFAULT }
WHERE condizione;
Chiavi Esterne (FOREIGN KEY)
REFERENCES tabella_riferimento [ (colonne) ]
[{ON DELETE | ON UPDATE}
{ NO ACTION | CASCADE | SET NULL | SET DEFAULT }]
FOREIGN KEY (colonne) REFERENCES tabella_riferimento (colonne)
[{ON DELETE | ON UPDATE}
{ NO ACTION | CASCADE | SET NULL | SET DEFAULT }]
Interrogazioni (SELECT)
SELECT [ ALL | DISTINCT ] { * | espressione [ AS alias ] }
FROM tabella [ [ AS ] alias ]
[ WHERE condizione [ LIKE 'i%i' ] ]
[ IN (SELECT corso.id_insegnante FROM corso) ]
[ GROUP BY colonne ]
[ HAVING condizione ]
[ { UNION | INTERSECT | EXCEPT [ ALL ] } ]
[ ORDER BY colonne [ ASC | DESC ] ];
Operatori SQL (Operands)
- = : è uguale a
- != o <> : è diverso da
- <, <=, >, >= : è minore, minore o uguale, maggiore, maggiore o uguale a
- BETWEEN x AND y : equivale a
>= x AND ≤ y - NOT BETWEEN x AND y : equivale a
< x OR > y - IS NULL : vero se il campo ha valore NULL
- IS NOT NULL : vero se il valore del campo non è NULL
- IS DISTINCT FROM : è diverso da (supporta valori NULL)
- IS NOT DISTINCT FROM : è uguale a (supporta valori NULL)
Tipi di Join
Natural Join (NJ):
SELECT * FROM insegnante JOIN corso USING (id_insegnante);
Condition Join (CJ):
SELECT id_corso, titolo FROM insegnante INNER JOIN corso ON insegnante.id_insegnante = corso.id_insegnante;
Gestione delle Viste (Views)
CREATE VIEW NumeroCorsi(id_insegnante, Numcorsi)
AS SELECT id_insegnante, COUNT(*)
FROM corso
GROUP BY id_insegnante;
SELECT id_insegnante FROM NumeroCorsi
WHERE Numcorsi = (SELECT MAX(Numcorsi) FROM NumeroCorsi);
DROP VIEW nome_vista [CASCADE | RESTRICT];
Regole (Rules)
CREATE [OR REPLACE] RULE nome_regola AS
ON { SELECT | INSERT | UPDATE | DELETE }
TO risorsa [ WHERE condizione ]
DO [INSTEAD] { NOTHING | comando | (comandi) };
Gestione Utenti e Privilegi
CREATE USER <nome_utente> [WITH PASSWORD 'password'];
ALTER USER <nome_utente> [WITH PASSWORD 'password'];
DROP USER <nome_utente>;
GRANT [SELECT | UPDATE | DELETE | INSERT | ALL PRIVILEGES] ON risorsa TO utenti [WITH GRANT OPTION];
REVOKE [SELECT | UPDATE | DELETE | INSERT | ALL PRIVILEGES] ON risorsa FROM utenti;
=, >