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;

=, >

Related entries: