Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


SQL: Linguaggio di Programmazione per Interazione con Database Relazionali, Appunti di Informatica

Sql, o structured query language, è un linguaggio di programmazione per l'interazione con i database relazionali, nato nel 1976. Comprende quattro tipi di linguaggio: dml (data manipulation language), ddl (data definition language), ql (query language) e dcl (data control language). Le sintassi e i comandi di sql, inclusi i comandi dml per l'inserimento, aggiornamento e eliminazione di dati, i comandi ddl per la creazione, eliminazione e modifica di tabelle, e i comandi ql per la selezione e aggregazione di dati.

Tipologia: Appunti

2018/2019

Caricato il 14/05/2019

albertobaronti
albertobaronti 🇮🇹

3 documenti

1 / 5

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
- SQL -
SQL è un linguaggio di programmazione nato nel 1976 che permette l’interazione con i
Database relazionali. Il linguaggio ha avuto varie revisioni, ma la principale è stata SQL-92.
Tutti gli SGBD, come MSSQL, PostGreSQL e MySQL hanno un proprio linguaggio con delle
proprie funzioni, ma tutti includono tutte le funzioni e la sintassi dei comandi presenti in
SQL-92. È preferibile quindi utilizzare le sintassi e le funzioni di SQL-92 per facilitare
notevolmente il passaggio da un SGBD ad un altro.
SQL, Structured Query Language, comprende tre tipologie di linguaggio:
DML (Data Manipulation Language)
DDL (Data Definition Language)
QL (Query Language)
DCL (Data Control Language)
<...> indica la parte variabile del comando, da specificare al momento della formulazione
[...]indica parti di comando che sono opzionali
{...}indica parti di comando che contengono alternative
COMANDI DML (Data Manipulation Language)
INSERT
UPDATE
DELETE
Comandi per Utente esperto
- INSERT -
INSERT INTO <nome_tabella> [(<elenco_colonne)] VALUES
(<elenco_espressioni>)|<subQuery>
- UPDATE -
UPDATE <nome_tabella>
SET <nome_colonna> = <espressione>
{,<nome_colonna> = <espressione>}
[WHERE <condizione>]
- DELETE -
DELETE FROM <nome_tabella> [WHERE <condizione>]
- TRUNCATE - (drop + create)
TRUNCATE <nome_tabella>
pf3
pf4
pf5

Anteprima parziale del testo

Scarica SQL: Linguaggio di Programmazione per Interazione con Database Relazionali e più Appunti in PDF di Informatica solo su Docsity!

- SQL -

SQL è un linguaggio di programmazione nato nel 1976 che permette l’interazione con i Database relazionali. Il linguaggio ha avuto varie revisioni, ma la principale è stata SQL-92. Tutti gli SGBD, come MSSQL, PostGreSQL e MySQL hanno un proprio linguaggio con delle proprie funzioni, ma tutti includono tutte le funzioni e la sintassi dei comandi presenti in SQL-92. È preferibile quindi utilizzare le sintassi e le funzioni di SQL-92 per facilitare notevolmente il passaggio da un SGBD ad un altro.

SQL, Structured Query Language, comprende tre tipologie di linguaggio: ● DML (Data Manipulation Language) ● DDL (Data Definition Language) ● QL (Query Language) ● DCL (Data Control Language)

< ... > indica la parte variabile del comando, da specificare al momento della formulazione [ ... ] indica parti di comando che sono opzionali { ... } indica parti di comando che contengono alternative

COMANDI DML (Data Manipulation Language)

➔ INSERT

➔ UPDATE

➔ DELETE

● Comandi per Utente esperto

- INSERT -

INSERT INTO <nome_tabella> [(<elenco_colonne)] VALUES (<elenco_espressioni>)|

- UPDATE -

UPDATE <nome_tabella> SET <nome_colonna> = {,<nome_colonna> = } [WHERE ]

- DELETE -

DELETE FROM <nome_tabella> [WHERE ]

- TRUNCATE - (drop + create)

TRUNCATE <nome_tabella>

COMANDI DDL (Data Definition Language)

➔ CREATE

➔ DROP

➔ ALTER

● Comandi per Amministratore/DBA (DataBase Administrator)

- CREATE -

CREATE TABLE <nome_tabella> ( <definizione_colonna> {, <definizione_colonna>} {, <vincolo_tabella>} )

<definizione_colonna>::=[NOT NULL][DEFAULT<valore_default>][<vincolo_colonna>]

<valore_default>::= null||<var_sistema>

<var_sistema>::= CURRENT_DATE|CURRENT_USER|...

<vincolo_colonna>::= PRIMARY KEY|UNIQUE|REFERENCES <nome_tabella> (){<azione_referenziale>}|CHECK()

<azione_referenziale>::= ON UPDATE|DELETE

::= CASCADE|SET NULL|SET DEFAULT|NO ACTION|RESTRICT // la clausola CASCADE specifica che: ● se si tenta di eliminare una riga contenente una chiave a cui fanno riferimento chiavi esterne in righe esistenti in altre tabelle, verranno eliminate tutte le righe contenenti tali chiavi esterne ● se si tenta di aggiornare un valore di chiave in una riga e a tale valore fanno riferimento chiavi esterne in righe esistenti in altre tabelle, tutti i valori che compongono la chiave esterna verranno anch'essi aggiornati al nuovo valore specificato per la chiave // la clausola NO ACTION specifica che: ● se si tenta di eliminare una riga contenente una chiave a cui fanno riferimento chiavi esterne in righe esistenti in altre tabelle, verrà generato un errore e verrà eseguito il rollback dell'istruzione DELETE ● se si tenta di aggiornare un valore di chiave in una riga e alla chiave fanno riferimento chiavi esterne in righe esistenti in altre tabelle, verrà generato un errore e verrà eseguito il rollback dell'istruzione UPDATE // la clausola RESTRICT specifica che: ● se esistono dei vincoli di integrità o delle viste che si riferiscono alla tabella, l’operazione fallisce.

<vincolo_tabella>::= PRIMARY KEY|UNIQUE|FOREIGN KEY() REFERENCES <nome_tabella> (){<azione_referenziale>}|CHECK()

- DROP -

DROP <DATABASE|TABLE> <nome_database|nome_tabella>

- ALTER -

ALTER TABLE <nome_tabella> RENAME <nome_colonna> <nuovo_nome_colonna> ALTER TABLE <nome_tabella> DROP <nome_colonna> ALTER TABLE <nome_tabella> ADD <definizione_colonna> ALTER TABLE <nome_tabella> MODIFY <nome_colonna> <definizione_colonna> ALTER TABLE <nome_tabella> ADD CONSTRAIN <vincolo_tabella>

SubQuery

Una subquery è una query che si trova all’interno di un’altra query e può essere: ● correlata → quando utilizza degli attributi della query esterna e viene eseguita prima l’esterna e poi l’interna. ● annidata → quando non utilizza attributi della query esterna e viene eseguita prima l’interna e poi l’esterna.

EngineDB

È un software che permette di inserire, aggiornare o eliminare dati dal DB. In MySQL abbiamo InnoDB e MyIsam: il primo garantisce il vincolo di integrità referenziale, mentre il secondo no.

Stored Procedure

È una sequenza di istruzione che viene salvata nel server con un nome identificativo, viene invocata tramite il comando CALL e deve tornare un valore scalare. Vengono utilizzate per limitare l’eccessivo scambio di informazioni tra client e server eseguendo le operazioni direttamente sul server.

Sintassi CREATE per stored procedure CREATE [DEFINER = {|CURRENT_USER}] PROCEDURE <stored_procedure_name> ([]) <routine_body>

Sintassi parametri [IN|OUT|INOUT] <nome_parametro>

Sintassi per eliminare una stored procedure DROP PROCEDURE <stored_procedure_name>

Sintassi per modificare una stored procedure ALTER PROCEDURE SQL SECURITY { DEFINER | INVOKER } // con DEFINER è l’utente che ha definito la procedura a dover avere i permessi necessari alla sua esecuzione, con INVOKER è invece l’utente che la esegue

Stored Function

Una stored function può essere chiamata mediante il solo nome, e può ritornare un valore scalare. Rispetto alla definizione delle procedure si aggiunge la capacità di tornare un valore con la clausola RETURNS, e i parametri sono esclusivamente in input. In una stored function è obbligatorio tornare un valore.

Sintassi CREATE per stored function CREATE [DEFINER = {|CURRENT_USER}] FUNCTION <stored_function_name> ([]) RETURN <routine_body>

Trigger

Meccanismo che intercetta gli eventi in cui si verificano specifiche condizioni sul valore dei dati e indica le azioni da effettuare di conseguenza. Gli eventi a cui può essere associato sono: ➔ INSERT ➔ UPDATE ➔ DELETE

I trigger sono utilizzati per: ● mantenere l’integrità referenziale tra le tabelle ● mantenere l’integrità dei dati di una singola tabella ● verificare il contenuto dei campi di una tabella ● creare tabelle di registrazione delle modifiche o delle eliminazioni apportate

Sintassi di un Trigger CREATE [DEFINER = {|CURRENT_USER}] TRIGGER <nome_trigger> {BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON <nome_tabella> FOR EACH ROW <trigger_body>