Anteprima
Vedrai una selezione di 7 pagine su 27
Basi Di Dati - Riassunti Completi Pag. 1 Basi Di Dati - Riassunti Completi Pag. 2
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Basi Di Dati - Riassunti Completi Pag. 6
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Basi Di Dati - Riassunti Completi Pag. 11
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Basi Di Dati - Riassunti Completi Pag. 16
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Basi Di Dati - Riassunti Completi Pag. 21
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Basi Di Dati - Riassunti Completi Pag. 26
1 su 27
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

JOIN USING

applicabile quando le due relazioni hanno colonne col lo stesso nome

<nome relazione> JOIN <nome relazione> USING (<lista nomi colonne>)

NATURAL JOIN

Richiesta l' uguaglianza dei valori di tutte le colonne con lo stesso nome nelle due relazioni

<nome relazione> NATURAL JOIN <nome relazione>

OUTER JOIN

Aggiunge al risultato le tuple che non hanno partecipato al join completandole con NULL

T OUTER JOIN S

• FULL: sia le tuple di T che quelle di S che non partecipano vengono completate e inserite

• LEFT: le tuple di T che non partecipano al join vengono completate e inserite nel risultato

• RIGHT: le tuple di S che non partecipano al join vengono completate e inserite nel risultato

Funzioni di Gruppo

Nella clausola di proiezione possiamo avere anche espressioni che calcolano valori a partire da

insieme di tuple.

• Operano su un insieme di valori

• Producono come risultato un unico valore

• Sono indicate nella clausola di SELECT

Tutte le funzioni di gruppo possono essere usate col qualificatore DISTINCT

Raggruppamento

Le colonne da usare per il raggruppamento sono specificate tramite la parola chiave GROUP BY.

Usando il GROUP BY ogni tupla risultante rappresenta un gruppo di tuple della relazione.

Esistono delle condizioni sui gruppi

È possibile selezionare solo alcuni dei gruppi ottenuti dal parzionamento usando HAVING

• È seguita da un predicato o una combinazione booleana di predicati

• Solo predicati di funzioni di gruppo

Operazioni Insiemistiche

La select da sola non consente di fare unioni, intersezioni e differenze, quindi SQL prevede dei

costruttori per ciò: UNION, INTERSECT, MINUS

UNIONE

Operatore di unione: A UNION B

• Esegue l'unione delle due espressioni A e B

• Richiede la compatibilità di schemi tra A e B (stesso numero di attributi e dominio)

• Rimuove i duplicati (UNION rimuove i duplicati UNION ALL no)

• La tabella risultato ha di default come il nome della colonna il nome della prima query (se

non mi va bene rinomino le colonne delle query usando AS)

INTERSEZIONE

Operatore di intersione: A INTERSECT B

• Esegue l'intersezione delle due espressioni A e B

• Richiede la compatibilità di schemi tra A e B

• Tabella di risultato ha il nome di default della prima colonna

DIFFERENZA

Operatore di differenza A EXCEPT/MINUS B

• Esegue la differenza delle due espressioni A e B

• Richiede la compatibilità di schemi tra A e B

• Leva da A gli elementi di B

06 - Sotto-Interrogazioni

mercoledì 18 ottobre 2017

12:09

Sotto-interrogazioni (Subquery)

È un' istruzione select contenuta all'interno di un'altra interrogazione, permette di suddividere un

problema complesso in sotto problemi più semplici.

È possibili introdurle nella clausola WHERE, HAVING e nella clausola FROM.

Nella clausola WHERE usata per:

• Determinare uno o più valori da usare come valori di confronto di un predicato

dell'interrogazione

• Esprimere quantificazioni esistenziali (EXIST / NOT EXIST)

Tre tipi di Sotto-Interrogazioni

• Subquery Scalare: comando SELECT che restituisce un solo valore

SELECT Max(Valutazione) FROM Film;

È possibile esprimere interrogazioni complesse, prima il DBMS calcola la subquery

 Se restiuisce più di un valore genera un errore run-time

 Se voglio restituire più valori devono essere specificati nella clausola where

• Subquery di Colonna: comando SELECT che restituisce un colonna

SELECT Valutazione FROM Film;

Utilizzo operatori di confronto: ANY(almeno uno dei valori) | ALL(tutti i valori)| NOT

IN (non è in..)

Per concetto di esclusione si può utilizzare NOT IN ma anche le formule EXCEPT

• Subquey di Tabella: comando SELECT che restituisce una tabella

SELECT Titolo, Regista FROM Film;

Se restituisce come risultato una tabella con più di due attributi

 • Nel predicato va inserito il costruttore della tupla

• Elencare gli attributi tra () [ (NomeAttributo, NomeAttributo) ]

Sotto Interrogazioni Correlate

Sotto-interrogazione eseguita ripetutamente per ogni tupla candidati considerata nella valutazione;

ogni esecuzione è correlata al valore di uno o più attributi delle tuple candidate nella interrogazione

principale.

EXIST e NOT EXIST

Una sotto-interrogazione può essere usata con gli operatori:

EXIST(sq): TRUE se sq restituisce almeno una tupla

 NOT EXIST(sq): TRUE se sq non restituisce alcuna tupla

Questi due operazioni possono essere usate in altervia a intersezione e differenza

07 - SQL: DML - Istruzioni di Aggiornamento

mercoledì 1 novembre 2017

17:19

Tre comandi per la manipolazione del contenuto di relazioni:

• INSERT: inserimento di tuple

• UPDATE: modifica di tuple

• DELETE: cancellazione di tuple

Operazioni di Aggiornamento

Modifca dello stato della base di dati, quindi bisogna verificare che siano rispettati i vincoli.

Ogni istruzione può aggiornare il contenuto di una sola tabella

Operazioni di Inserimento

• Inserimento di una tupla: assegna di un valore costante ad ogni attributo

• Inserimento di più tuple: lette da altre tabelle mediante un'istruzione SELECT

Inserimento

INSERT INTO S [(C1,C2,…,Cn)]

{VALUES (v1,v2,…,Vn) | sq};

I valori da assegnare alla nuova tupla possono:

• Essere specificati esplicitamenti (clausola VALUES)

• Determinati tramite una sotto interrogazione (sq)

Cancellazione

DELETE FROM S [<alias>] [WHERE F];

Se non è specificata nessuna clausola di qualificazione vengono cancellate tutte le tuple

Modifica

UPDATE S [<alias>]

SET C1 = {e1 | NULL}, …, Cn = {en | NULL}

[WHERE F]

Se non è specificata alcuna clausola di qualificazione vengono modificate tutte le tuple

Usate per:

• Determinare le tuple da modificare

• Determinare i nuovi valori da assegnare alla tuple

08 - SQL: Vincoli di Integrità & Viste

giovedì 2 novembre 2017

14:05

Vincoli di Integrità

Oltre ai vincoli già identificati come NOT NULL, UNIQUE o PRIMARY KEY, FOREIGN KEY,

esistono altri vincoli che dipendono dal dominio applicativo.

• Nel comando CREATE TABLE è possibile definire:

Vincoli CHECK su colonna

o • Specifica affianco alla colonna CHECK più predicato

Vincoli CHECK su relazione

o • Aggiunta affianco alla relazione CHECK più predicato

• Può contenere sotto interrogazioni che riferiscono ad altre tabelle

È possibile specificare i vincoli associandone un nome usando CONSTRAINT e il nome del vincolo

[…

Colloc DECIMAL (4) CONSTRAINT Pkey PRIMARY KEY,

…]

Se si aggiunge una relazione mediante ALTER TABLE ADD CONSTRAINT è possibile solo se le

tuple soddisfano procedentemente il vincolo

Utilizzata per poter eliminare o modificare successivamente il vincolo chiamato per esempio "pkey"

Q di leggibilità:

È consigliabile espreimere con vincoli CHECK solo condizioni che fanno riferimento a singole tuple

della relazione cui associamo il vincolo (maggiore comprensibilità)

Devo sempre usare un asserzione se faccio riferimento a tuple di tabelle diverse

Asserzioni

Elementi dello schema che danno un nome al vincolo check

Obbligatorio se il vincolo coinvolge più relazioni

CREATE ASSERTION <nome asserzione>

CHECK (<condizione>)

Un vincolo CHECK è violato se la valutazione della condizione di controllo restituisce FALSE

In presenza di valori nulli per capire se è vero o falso uso una logica a 3 stati, quindi si ha anche il

valore di unknown(?) impossibile da determinare

Valori Nulli

• Se il risultato di un predicato è NULL restituisce ?

• Nelle espressioni se un argomento è NULL allora il valore dell' intera è NULL

• Nel calcolo delle funzioni di gruppo vengono escluse le tuple con valore nullo per la

colonna

Conseguenza: SUM(e1 + e2) pùò dare un risultato diverso da SUM(e1) + SUM(e2)

• Una tupla per cui il valore di verità è ? non viene resitutita dall'interrogazione

• In un vincolo di integrità se la valutazione della condizione restituisce ? Il vincolo non è

violato

IS NULL

• Applicato ad un dato restituisce true se la tupla ha valore nullo per l'attributo

IS NOT NULL

• Applicato ad un dato restituisce true se la tuple ha valore non nullo per l'attributo

09 - Viste

martedì 7 novembre 2017

11:10

Viste

Ulteriori astrazione del livello logico, permettono di vedere dati nel livello logico oppure campi

calcolati a partire dalle informazioni del livello logico

• Relazione virtuale (contenuto definito tramite interrogazione SQL)

• Contenuto non memorizzato fisicamente nella base di dati (non continene tuple)

• Può essere usata come una relazione

• Interrogazione valutata ogni volta

• Meccanismo delle viste è utile per

• Semplificare accesso dati

• Fornire indipendenza logica

• Garantire la protezione dei dati

Comando Viste:

Creazione viste:

CREATE VIEW <nome vista> [(<lista nomi colonne>)]

AS <interrogazione>

[WITH [{LOCAL | CASCADED }] CHECK OPTION];

Cancellazione di vista:

DROP VIEW <nome vista>;

Su una vista si possono eseguire sia interrogazioni che aggiornamenti sotto condizioni.

L'interrogazione può contenere operazioni di join e fare uso di funzioni di gruppo e espressioni

Ad esempio è possibile su una vista

• Effettuare proiezioni

• Specificare condizioni di ricerca

• Effetture join con altre relazioni

• Effettuare raggruppamenti

• Definire viste

Check Option

Una vista può contenere una condizione sul contenuto delle tuple, quindi solamente le tuple che

soddisfano questa condizione appartengono alla vista.

Per assicurarsi che le tuple inserite siano accettate solo se verificano la condizione si usa la

clausola CHECK OPTION

Nel caso in cui siamo in presenza di viste di altre viste si complica perché entrambe possono

essere definite con CHECK OPTION, quindi si utilizzano due alternative:

• LOCAL: verifica solo la query di definizione della vista in oggetto

• CASCADED: verifica ricorsivamente tutte le query delle viste coinvolte

10 - Sviluppo di Applicazioni per Basi di Dati

martedì 14 novembre 2017

11:07

Estensione linguaggi di Programmazione

Integrazione di due linguaggi

o: SQL e un linguaggio generico

• Impedance mismatch dovuto alle differenze tra i due lingu

Dettagli
Publisher
A.A. 2017-2018
27 pagine
2 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher biuzzo di informazioni apprese con la frequenza delle lezioni di Basi di dati e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi dell' Insubria o del prof Ferrari Elena.