Il 0% ha trovato utile questo documento (0 voti)
5 visualizzazioni6 pagine

Standard SQL

SQL (Structured Query Language) è un linguaggio dichiarativo utilizzato per creare e gestire database relazionali, con funzioni che includono DDL, DML, DCL e interrogazioni. È stato sviluppato nel 1974 e ha diverse versioni standard, tra cui SQL-3, che introduce funzionalità per il trattamento degli oggetti. La sintassi di SQL è definita attraverso la Backus Naur Form e include regole specifiche per identificatori e tipi di dati.

Caricato da

rigantini.giulia
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
5 visualizzazioni6 pagine

Standard SQL

SQL (Structured Query Language) è un linguaggio dichiarativo utilizzato per creare e gestire database relazionali, con funzioni che includono DDL, DML, DCL e interrogazioni. È stato sviluppato nel 1974 e ha diverse versioni standard, tra cui SQL-3, che introduce funzionalità per il trattamento degli oggetti. La sintassi di SQL è definita attraverso la Backus Naur Form e include regole specifiche per identificatori e tipi di dati.

Caricato da

rigantini.giulia
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd

Lo standard SQL

SQL (Structured Query Language) è un linguaggio non procedurale e dichiarativo, usato


per creare, manipolare e interrogare database relazionali.
Dichiarativo (non-procedurale): si speci ca cosa si vuole ottenere, non come ottenerlo.

Esistono diversi dialetti di SQL aderenti agli standard ANSI (American National
Standards Institute) e ISO (International Organization for Standardization), basati sulle
versioni SQL-2 e SQL-92, adottate nel 1992.

SQL svolge diverse funzioni:


• DDL (Data De nition Language): de nisce la struttura del database (creazione di
tabelle e vincoli).=> CREAT, ALTER, DROP
• DML (Data Manipulation Language): manipola i dati presenti nelle tabelle
(inserimento, aggiornamento, cancellazione).=> INSERT, UPDATE, DELETE
• DCL (Data Control Language): gestisce il controllo degli accessi e i permessi degli
utenti.
• Query language: interrogazione dei dati.=> SELECT

SQL può essere usato:


• Standalone: come linguaggio indipendente.
• Embedded: come linguaggio ospite all’interno di altri programmi.

Origini
Nel 1974, Donald Chamberlin sviluppa SEQUEL, uno strumento per interrogare database
relazionali.

Sintassi: Forma normale di Backus (BNF)


Per descrivere la sintassi dei linguaggi si usa la Backus Naur Form (BNF):
• Parole chiave in grassetto
• Categorie sintattiche tra < >
• Opzionalità tra [ ]
• Ripetizioni tra { }
• Alternativa simbolo |

Versioni SQL importanti


fi
fi
fi
• La versione più importante è SQL-3, che introduce funzionalità per il trattamento
degli oggetti.

Identi catori e tipi di dati


• SQL non è case sensitive: comandi possono essere scritti in maiuscolo o minuscolo.
Alcune versioni possono invece distinguere maiuscole/minuscole nei nomi di tabelle
o variabili.
• Gli identi catori (nomi di tabelle o colonne) devono rispettare alcune regole:
◦ lunghezza massima: 18 caratteri
◦ iniziare con una lettera
◦ contenere al massimo un underscore _
• Relazioni tabelle
• Tuple righe/record
• Attributi colonne

Tipi di dati principali

Tipo Descrizione
CHAR(n) stringa di lunghezza fissa
SMALLINT intero 2 byte
INTEGER intero 4 byte
numeri con precisione definita (fino a 1000 cifre
NUMERIC
significative)
REAL numeri in virgola mobile
TIMESTAM
data e ora
P
BOOLEAN valori logici (TRUE/FALSE)

• Alcune versioni possono avere tipi leggermente diversi.


• Le costanti stringa si racchiudono tra ' ' o " ".
• Gli operatori possono essere aritmetici, relazionali o logici.

I confronti tra dati alfanumerici vengono effettuati basandosi sul codice ASCII dei
caratteri, da sinistra verso destra.

• Standard SQL-92:
◦ Non esiste BOOLEAN puro; esiste BIT (0 = FALSE, 1 = TRUE)
fi
fi
◦ Separatore decimale = punto .

Istruzioni DDL (Data De nition Language)


Creare un database
CREATE DATABASE <nomebasedati> [AUTHORIZATION <proprietario>];

• Crea un nuovo database.


• [AUTHORIZATION <proprietario>] speci ca l’utente proprietario. Se non
speci cato, si assume l’utente connesso.

Per selezionare il database su cui operare:


USE <nomebasedati>;

Creare una tabella e vincoli


CREATE TABLE <nometabella>(
<attributo1> <tipo1> [<vincoloattributo>],
<attributo2> <tipo2> [<vincoloattributo>],
...
);

Vincoli su singolo attributo (vincoli di dominio)


• NOT NULL il valore è obbligatorio
• DEFAULT <valore> valore prede nito
• CHECK(<condizione>) vincolo personalizzato

Esempi:
-- 1: stipendio deve essere uno tra i valori speci cati
CHECK(Stipendio IN (1500, 3000, 4500))

-- 2: stipendio deve essere compreso tra 1500 e 3000


CHECK(Stipendio BETWEEN 1500 AND 3000)

-- 3: codice articolo deve iniziare con "Codice"


CHECK(CodiceArticolo LIKE 'Codice%')
fi
fi
fi
fi
fi
Vincoli multi-attributo
PRIMARY KEY(<attributo1>, <attributo2>) -- chiave primaria, valori unici e NOT NULL
UNIQUE(<attributo1>, <attributo2>) -- chiave candidata
CHECK(<condizione>) -- condizione su più attributi

Vincolo di integrità referenziale


FOREIGN KEY(<attr1>, <attr2>)
REFERENCES <nometabella>(<attr1>, <attr2>)
ON DELETE <RESTRICT|CASCADE|SET NULL|SET DEFAULT|NO ACTION>
ON UPDATE <RESTRICT|CASCADE|SET NULL|SET DEFAULT|NO ACTION>

• CASCADE cancellazione/modi ca in tutte le tabelle collegate


• SET NULL imposta le righe collegate a NULL
• SET DEFAULT imposta al valore prede nito
• RESTRICT azione limitata alla riga corrente
• NO ACTION nessuna azione (default)

Indici
Gli indici accelerano le ricerche ma rallentano modi che e occupano memoria.
CREATE [UNIQUE] INDEX <nomeindice>
ON <nometabella>(<attr1>, <attr2>);
• UNIQUE crea indice su attributi chiave

Modi care una tabella


ALTER TABLE <nometabella>
ADD <nomecolonna> <tipo> [BEFORE <nomecolonna2>];

ALTER TABLE <nometabella>


DROP COLUMN <nomecolonna>;

ALTER TABLE <nometabella>


MODIFY <nomecolonna> <nuovotipo>;
fi
fi
fi
fi
Eliminare tabelle, indici e database
DROP TABLE <nometabella> [RESTRICT|CASCADE|SET NULL];

DROP INDEX <nomeindice> ON <nometabella>;

DROP DATABASE <nomedatabase>;

Istruzioni DML (Data Manipulation Language)


Inserire dati

INSERT INTO <nometabella> [(<attr1>, <attr2>, ...)]


VALUES (<val1>, <val2>, ...);

• Se non si speci cano gli attributi, i valori devono seguire l’ordine della tabella.

Aggiornare dati
UPDATE <nometabella>
SET <attr1> = <espr1>,
<attr2> = <espr2>,
...
WHERE <condizione>;

Cancellare righe
DELETE FROM <nometabella>
WHERE <condizione>;

Reperire dati: SELECT


SELECT [DISTINCT] <attr1>, <attr2>, ...
FROM <tabella1>, <tabella2>
[WHERE <condizione>];

• [DISTINCT] elimina righe duplicate


• * seleziona tutti gli attributi
• Alias colonne:
SELECT Nome, Citta AS "Numeroposti"
FROM Cinema;
fi
Valore NULL
• Indica dato mancante o sconosciuto
• Non è zero o stringa vuota.
• Comparazioni con NULL restituiscono UNKNOWN.
• Ignorato nelle funzioni di aggregazione.

Controllo NULL:
WHERE attr IS NULL
WHERE attr IS NOT NULL

Potrebbero piacerti anche