Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard...

25
Linguaggio non procedurale o di tipo dichiarativo. È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 16/06/22 1 Daniela Musio

Transcript of Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard...

Page 1: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Linguaggio non procedurale o di tipo dichiarativo.

È ormai da tempo uno degli standard tra i

linguaggi per basi di dati relazionali.

11/04/23 1Daniela Musio

Page 2: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

VersioniPrima versione introdotta da IBM alla fine

degli anni 1970Negli anni 1980 viene introdotto il termine

SQLSQL-2 (1992)SQL-3 (implementa nuove caratteristiche come la ricorsione e

funzionalità per il trattamento degli oggetti)

11/04/23 2Daniela Musio

Il linguaggio SQL è presente in diverse versioni o dialetti, che sono in genere aderenti agli standard internazionali ANSI (American National Standards Institute) e ISO (International Standards Organization).Le differenze tra tali versioni possono essere facilmente individuate attraverso la documentazione elettronica o cartacea fornita dai prodotti software che le implementano. Tutte si rifanno alla versione dello standard adottato nel 1992, detto SQL-2.

Page 3: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Modalità di utilizzo

Il linguaggio SQL può essere utilizzato in modalità:

stand-alone o a sé stante embedded o linguaggio ospite

11/04/23 Daniela Musio 3

Page 4: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Identificatori

Identificatori = nomi di tabelle e di attributimax 18 caratteri

(devono iniziare con una lettera e possono contenere il carattere “_”)

Nome Tabella.NomeAttributoQuando è necessario identificare il nome di un attributo della

tabella occorre indicare sia il nome della tabella sia il nome dell’attributo separati dal “.”

11/04/23 Daniela Musio 4

Page 5: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Tipi di datiCharacter(n), Char(n) Stringhe di caratteri di lunghezza

n, con n che può variare da 1 a 15.000

Date Data nella forma MM/GG/AA

Time Ora nella forma HH:MM

Integer(p), Int(p) Numero intero con precisione p (numero max di cifre che il numero può contenere), con p che può variare da 1 a 45

Integer Numero intero con precisione 10

Smallint Numero intero con precisione 5

Decimal(p,d), Dec(p,d) Numero reale in fixed point con precisione p cifre intere e d cifre decimali.

Float(p), Float, Real Numeri reali in floating point con precisione p, 15, 7 per la mantissa

11/04/23 Daniela Musio 5

Le costanti si rappresentano con gli apici ‘ ’,o i doppi apici” “

Page 6: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Funzioni di SQLIl linguaggio SQL assolve alle funzioni di:DDL (Data Definition Language), che prevede le

istruzioni per definire la struttura delle relazioni della base di dati. Serve quindi per creare tabelle, vincoli, viste e indici;

DML (Data Manipulation Language), che prevede le istruzioni per manipolare i dati contenuti nelle diverse tabelle. In particolare permette inserimenti, cancellazioni e modifiche dei record delle tabelle;

DCL (Data Control Language), che prevede istruzioni per controllare gli accessi e i permessi per gli utenti;

Query Language, consente di porre interrogazioni al database.

11/04/23 Daniela Musio 6

Page 7: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Istruzioni del DDLCreate Table consente di creare una tabellaAlter Table consente di modificare la struttura

di una tabellaDrop Table consente di eliminare una tabellaCreate/Drop Index consente di creare/cancellare

un indice su una tabella esistente, indicando il nome degli attributi cui associare tale indice

Create/Drop View consente di creare/cancellare delle viste = modalità con le quali gli utenti possono vedere le tabelle del database

11/04/23 Daniela Musio 7

Page 8: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Create Table (creazione di una tabella)

Create Table <nome tabella> ( < attributo1> <tipo> [not null],

< attributo2> <tipo> [not null],………………………… < attributoN> <tipo> [not null] [Primary Key <nome attributo chiave>],

[Foreign Key <attributo> References<tabella(attributo)>]

);11/04/23 Daniela Musio 8

Page 9: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Alter Table (modifica di una tabella)

Alter Table <nome tabella>Add <nuovo attributo> <tipo>; Consente di inserire un nuovo attributo

Alter Table <nome tabella>Drop <nome attributo da cancellare>;Consente di cancellare un attributo

Alter Table <nome tabella>Modify <nome attributo> <nuovo tipo attributo>;Consente di modificare il tipo di un attributo

11/04/23 Daniela Musio 9

Page 10: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Drop Table (cancellazione di una tabella)

Drop Table <nome tabella>;

11/04/23 Daniela Musio 10

Page 11: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Istruzioni del DMLInsert consente di inserire i valori in

una tabella Update consente di modificare i dati

presenti in una tabella

Delete consente di eliminare le righe da una tabella

11/04/23 Daniela Musio 11

Page 12: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Insert

Insert into <nome tabella>(<attributo1>, <attributo2>, …, <attributoN>)

Values(<valore1>,<valore2>, … ,<valoreN>);

11/04/23 Daniela Musio 12

Page 13: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Update

Update <nometabella>Set <attributo1>=<espressione1>,

<attributo2>=<espressione2>,……………………..<attributoN>=<espressioneN>

[where <condizione>]

11/04/23 Daniela Musio 13

Page 14: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Delete

Delete From <nome tabella>[where <condizione>]

11/04/23 Daniela Musio 14

Page 15: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Istruzioni del DCLGrant consente di concedere i permessi

di accesso al database, specificando i tipi di accesso e l’elenco degli utenti cui sono riconosciuti tali accessi.

Lock/unlock TableRecover TableCheck TableRepair Table

11/04/23 Daniela Musio 15

Insieme di comandi che consentono di salvaguardare l’integrità dei dati contro eventuali malfunzionamenti del sistema

Page 16: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Query Language

11/04/23 Daniela Musio 16

Page 17: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Predicati ALL e DISTINCT

ALL indica la richiesta di ottenere come risultato dell’interrogazione tutte le righe che soddisfano le condizioni presenti nel comando Where (è un predicato di default, quindi non è necessario specificarlo)

DISTINCT le righe duplicate nella tabella, risultante dall’operazione di selezione dei dati, vengono ridotte ad una.

11/04/23 Daniela Musio 17

Page 18: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Clausola ASAS consente di modificare l’intestazione delle

colonne della tabella risultante dall’operazione di selezione. Per default l’intestazione riprende il nome dell’attributo visualizzato nella colonna.

Con questa clausola è anche possibile intestare le nuove colonne derivanti dal calcolo di espressioni su attributi presenti nella tabella.

11/04/23 Daniela Musio 18

Page 19: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Le condizioni di ricercaOperatori utilizzabili=, <, >, <>, >=, <=, AND, OR, NOT Between controlla se un valore è compreso

all’interno di un intervallo di valori, inclusi gli estremi

IN controlla se un valore appartiene ad un insieme specificato di valori

LIKE controlla il valore di un attributo di tipo carattere con un modello di stringa che può contenere caratteri jolly (metacaratteri: _,%)

IS NULL controlla che il valore di una colonna sia pari al valore Null

11/04/23 Daniela Musio 19

Page 20: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Operazioni relazionali Selezione

11/04/23 Daniela Musio 20

Page 21: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Operazioni relazionaliProiezione

11/04/23 Daniela Musio 21

Page 22: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Operazioni relazionaliCongiunzione

11/04/23 Daniela Musio 22

Page 23: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Funzioni di aggregazioneCOUNT conta il numero di righe presenti in una

tabella

SUM calcola la somma dei valori numerici presenti in una colonna specificata come argomento della funzione

AVG calcola la media dei valori numerici presenti in una colonna specificata come argomento della

funzione

MIN, MAX individuano rispettivamente il valore minimo e il valore massimo dei valori numerici presenti in una colonna specificata come argomento della funzione

11/04/23 Daniela Musio 23

Page 24: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Ordinamenti e raggruppamentiOrder By (Asc, Desc)

Consente di ottenere i risultati di una interrogazione ordinati secondo i valori contenuti in una o più colonne, tra quelle elencate con la Select. L’ordinamento è crescente per default, se si vuole un ordinamento decrescente occorre specificare la parola chiave DESC.

Group By È una clausola aggiuntiva che si utilizza quando la Select contiene funzioni di aggregazione; consente di raggruppare un insieme di righe aventi lo stesso valore nelle colonne indicate, producendo una riga di risultati per ogni raggruppamento.

La struttura del comando Select con raggruppamenti può essere ampliata con la clausola HAVING, che consente di sottoporre a condizione i gruppi creati con la Group By

11/04/23 Daniela Musio 24

Page 25: Linguaggio non procedurale o di tipo dichiarativo.dichiarativo È ormai da tempo uno degli standard tra i linguaggi per basi di dati relazionali. 15/01/20141Daniela.

Linguaggio dichiarativoLe istruzioni si limitano a descrivere “cosa” si

vuol fare , al “come” ci pensa il sistema.Differenza rispetto ai linguaggi procedurali attraverso i quali vengono descritte singole

istruzioni elementari.

11/04/23 Daniela Musio 25