Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.

Slides:



Advertisements
Presentazioni simili
Interrogazioni Semplici Le operazioni di interrogazione vengono specificate per mezzo dellistruzione select select ListaAttributi from ListaTabelle [where.
Advertisements

DB -Algebra Relazionale
Ricorsione in SQL-99.
Principale limitazione di AR e SQL-92: interrogazioni ricorsive
Calcolo Relazionale.
Algebra e calcolo relazionale (parte 2)
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Algebra relazionale Presentazione 12.1
Principale limitazione di AR e SQL-92: interrogazioni ricorsive IMPIEGATO NOMENOMECAPO RossiVerdi NeriVerdi DeSio TucciDeSio DeLucaDeSio Lazio selezionare.
DML – Data Manipulation Language
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
SQL.
Operazioni Relazionali
SQL Structured Query Language
19/01/2014 Viste. 19/01/2014 Viste Le Viste Logiche o Viste o View possono essere definite come delle tabelle virtuali, i cui dati sono riaggregazioni.
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
1 Corso di Laurea in Biotecnologie Informatica (Basi di Dati) SQL: Data Manipulation Language (DML) Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi,
Laboratorio di Basi di Dati Introduzione ad Access 2ª Parte.
Esercitazione.
Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
Proiezione Dati una relazione r(X) e un sottoinsieme Y di X, la proiezione di r su Y si indica con Y ( r ) o PROJ Y ( r ) ed è linsieme di tuple su Y ottenute.
Vincoli di integrità generici Con i costrutti visti sinora, non è sempre possibile definire tutti i possibili vincoli di integrità. Per questo esiste listruzione.
Normalizzazione Le forme normali certificano che la base di dati soddisfa criteri di qualità che mirano ad evitare le ridondanze e i conseguenti effetti.
Manipolazione dei dati I comandi SQL che permettono di modificare il contenuto di una base di dati sono insertdeleteupdate insert ha la seguente sintassi:
Daniel Stoilov Tesi di Laurea
SELECT STATEMENT Clausola WHERE permette di limitare il numero di record da estrarre SELECT */ [DISTINCT] colonna/ espressione [alias],… FROM table [WHERE.
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
MySQL Query Performance Optimization
Basi di dati Claudia Raibulet
SQL: Structured Query Language
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL OPERATORI INSIEMISTICI IN SQL Siano due tabelle: GiochiSolitari(CodiceGioco, NomeGioco, PrezzoGioco)
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
MODELLO LOGICO DEI DATI
Gerarchie Ricorsive Una gerarchia ricorsiva deriva dalla presenza di una ricorsione o ciclo (un anello nel caso più semplice) nello schema operazionale.
Elenchi in Excel E’ possibile inserire le voci del nuovo elenco oppure
SQL.
Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione.
Informatica II – Basi di Dati (07/08) – Parte 2 Gianluca Torta Dipartimento di Informatica dell’Università di Torino
SQL Interrogazioni. 2 Interrogazioni in SQL Non esiste un SQL standard (vari dialetti) Formulazione di interrogazioni (query) è parte del Data Manipulation.
Informatica Introduzione alle basi di dati Lezione 8 Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Microsoft Access (parte 5) Introduzione alle basi di dati Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Basi di dati I Prof.ssa Rosalba Giugno Prof. Alfredo Pulvirenti SQL :Structured Query Language: SELECT (IV) SQL (Slide tratte in parte da da Atzeni, Ceri,
Esercitazione 7.
Le query in SQL Unità didattica sviluppata per l’ITIS “A. Volta” – Classe 5 sez. I Ing Domenico Liguori - Università degli studi di Napoli “Federico.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
Algebra relazionale (III). Esempi di Interrogazioni: 3 Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di Tutti gli impiegati?
Raggruppamento in SQL Esempio di raggruppamento
Interrogazioni (parte 2)
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere. L’interrogazione.
Basi di dati I Prof.ssa Rosalba Giugno Prof. Alfredo Pulvirenti SQL :Structured Query Language: SELECT (III) SQL (Slide tratte in parte da da Atzeni, Ceri,
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
Vincoli Interrelazionali Per i vincoli visti l’inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale,
Vincoli interrelazionali
Raggruppamenti e target list scorretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =
Lezione 6 - SQL. Linguaggi per DB Per interagire con le basi di dati occorre un linguaggio Linguaggio SQL (Structured Query Language), linguaggio standardizzato.
Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università.
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere. L’interrogazione.
Funzionalità del DBMS relazionale l Funzioni per –definizione della base di dati –inserimento / rimozione /aggiornamento di informazioni deve soddisfare.
Approfondimenti SQL.
L’Algebra Relazionale
Operazioni Relazionali
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
SQL Linguaggio per l’interrogazione di una base dati.
E. Tinelli SQL come linguaggio di manipolazione dei dati 1 DML – Data Manipulation Language.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Il linguaggio SQL (Structured Query Language) è il linguaggio standard per creare, manipolare e interrogare database relazionali. SQL non è case-sensitive:
Esercizi SQL Group by. CREATE TABLE dipendente (codDip CHAR(8) NOT NULL UNIQUE PRIMARY KEY, cognome CHAR(60) NOT NULL, nome CHAR(60) NOT NULL, stipendio.
Transcript della presentazione:

Il Linguaggio SQL

Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le interrogazioni in modo dichiarativo, cioè specifica l’obbiettivo dell’interrogazione e non il modo come ottenerlo. In tale caratteristica SQL si contrappone ai linguaggi ai linguaggi di interrogazione procedurali, come l’algebra relazionale. Le istruzioni di interrogazione in SQL vengono specificate per mezzo dell’istruzione SELECT.

Le interrogazioni SQL La struttura essenziale di SELECT è: SELECT ListaAttributi FROM ListaTabelle [where condizione] L’interrogazione SQL seleziona, tra le righe che appartengono al prodotto cartesiano delle tabelle elencate nella clausola “FROM”, quelle che soddisfano le condizioni espresse nell’argomento della clausola “WHERE”, le cui colonne si ottengono valutando le espressioni “ATTRESPR” contenute nella clausola SELECT.

Come si può notare la clausola SELECT può avere come argomenti: L’ * che rappresenta tutti gli attributi. Espressioni.

Interpretazione formale delle interrogazioni SQL E’ possibile costruire una corrispondenza tra le interrogazioni SQL ed equivalenti interrogazioni in algebra relazionale. Data una interrogazione SQL semplice: select T1.Attributo 11, ….,Th.Attributo hm from Tabella 1 T 1, ….., Tabella n T n where Condizione Diventa in algebra relazionale: π T1.Attributo11,….,Th.Attributoh (σ Condizione (Tabella 1 x…x Tabella n ) Naturalmente per interrogazioni SQL più complicate la formula sopra presentata non è direttamente applicabile.

Se si usa l’operatore ALL vengono mantenute tutte le tuple.

Una sintassi alternativa per la specifica del join (introdotta in SQL-2 e ancora in via di diffusione) permette di distinguere, tra le condizioni che compaiono nell’interrogazione, quelle che rappresentano condizioni di join e quelle che rappresentano condizioni di selezione sulle righe. In questo modo è possibile specificare le forme esterne dell’operatore di join. Inoltre, la condizione del join non compare come argomento della clausola where ma viene spostata nella clausola from. Il parametro TipoJoin specifica il tipo di join da usare: inner (che rappresenta il valore di default e quindi può essere omesso),right outer, left outer, full outer (il qualificatore outer è opzionale).

L’ordinamento in base al primo attributo. Per righe che hanno lo stesso valore nel primo attributo si considerano i valori degli altri attributi in sequenza. Se il qualificatore (asc o desc) è omesso si usa l’ordinamento ascendente.

Occorre notare che se le condizioni che i soottoinsiemi devono soddisfare sono verificabili al livello delle singole righe, allora basta usare dei predicati come argomento della clausola WHERE, altrimenti se le condizioni sono delle condizini di tipo aggregato occorre utilizzare un nuovo cotrutto: la clausola HAVING.

SQL ammette l’utilizzo di predicati con un struttura più complessa di quanto visto finora. Una struttura in cui si confronta un valore (ottenuto come risultato di un’espressione valutato sulla singola riga) con il risultato di un’interrogazione SQL.

La parola chiave ANY specifica che la riga soddisfa la condizione se risulta vero il confronto tra il valore dell’attributo per la riga e almeno uno degli elementi restituiti dalla sub-interrogazione.

Altri esempi … I dipartimenti in cui non lavorano persone di cognome “Rossi”: select Nome from Dipartimento where Nome <> all (select Dipart from Impegato where Cognome =“Rossi”) Occorre sottolineare che il controllo di appartenenza o esclusione ad un insieme può essere effettuato in SQL con gli operatori IN e NOT IN, che risultano del tutto identici a = ANY e <> ALL.

Interrogazioni nidificate: commenti Un interpretazione semplice ed intuitiva delle interrogazioni nidificate consiste nell’assumere che l’interrogazione nidificata venga eseguita prima di analizzare le righe dell’interrogazione esterna. Se però, l’interrogazione nidificata fa riferimento al contesto dell’interrogazione che la racchiude l’interpretazione semplice non può essere più applicata. Ciò accade quando una variabile, definita nell’ambito della query più esterna, è utilizzata nell’ambito della query più interna. In quest’ultimo caso si parla di subquery correlate o anche di passaggio di binding.

Esempio di subquery correlate Data la seguente relazione: PERSONA(CodFiscale, Nome, Cognome, Città) Trovare le persone che hanno degli omonimi(cioè stesso nome e cognome ma diverso codice fiscale): select * from Persona P where exists (select * from Persona P1 where P1.Nome = P.Nome and P1.Cognome = P.Cognome and P1CodFiscale <> P.CodFiscale ) In tal caso sarebbe impossibile eseguire l’interrogazione interna prima di valutare l’interrogazione più esterna.

Subquery correlate e scope La semantica delle subquery correlate dice che l’interrogazione interna viene eseguita una volta per ciascuna ennupla dell’interrogazione esterna. Per quanto riguarda la visibilità di una variabile SQL, vale la restrizione che una variabile è utilizzabile solo nella query in cui è definita o in una query nidificate (ad un qualsiasi livello) all’interno di essa. Se un’interrogazione possiede interrogazioni nidificate allo stesso livello (ma su predicati distinti), le variabili introdotte dalla clausola FROM di una query nidificata non potranno essere usate dall’altra di pari livello.

Uso di EXISTS Data la seguente relazione: PERSONA(CodFiscale, Nome, Cognome, Città) Trovare le persone che non hanno degli omonimi: select * from Persona P where not exists (select * from Persona P1 where P1.Nome = P.Nome and P1.Cognome = P.Cognome and P1CodFiscale <> P.CodFiscale ) Con gli opertori EXISTS e NOT EXISTS si verifica se la query annidata restituisce almeno una tupla (exists) o nessuna tupla (not exists)

La natura set-oriented di SQL presenta alcune particolarità di cui occorre tener conto quando si effettuano gli aggiornamenti. Le operazioni sopra indicate si riferiscono alla volontà di modificare gli stipendi dei dipendenti: aumentando del 10% quelli sotto i 30 mila e del 15% quelli sopra. Ad esempio usando il suddetto approccio si avrebbe per alcuni (ad esempio quelli che sono vicino alla soglia dei 30) un aumento complessivo del 26.5%.