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.

Slides:



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

Come si fa a visualizzare una query? Attivato lelenco delle query, si fa doppio clic sullopzione Attivato lelenco delle query, si fa doppio clic sullopzione.
Calcolo Relazionale.
DBMS (DataBase Management System)
Stored Procedure Function Trigger
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Algebra relazionale Presentazione 12.1
Nana Mbinkeu Rodrigue Carlos 1 DB unimo OTTIMIZZAZIONE DI QUERY IN MOMIS Università degli studi di Modena e Reggio Emilia Relatore: Prof. Sonia.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Algoritmo di Query Optimization. Espressione Algebrica di Query LAlgebra Relazionale può essere utilizzata come linguaggio per interrogare una base di.
SQL Dati i seguenti schemi relazionali:
Operazioni Relazionali
ESEMPI DI ARCHIVI DI DATI
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.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
Basi di dati Università Degli Studi Parthenope di Napoli
SQL: Lezione 7 Nataliya Rassadko
SQL Per la modifica di basi di dati
Memento Chi seguirà il modulo di e-learning?
Algoritmo di Query Optimization
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.
Vincoli di integrità generici Con i costrutti visti sinora, non è sempre possibile definire tutti i possibili vincoli di integrità. Per questo esiste listruzione.
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.
Basi di dati Claudia Raibulet
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.
L’algebra relazionale
1 Il Linguaggio SQL Il Linguaggio SQL Prof. Lorenzo Vita, Ing. Luigi Testa.
SQL.
BIOINFO3 - Lezione 51 INSERIMENTO DEI DATI Visto come si creano le tabelle (sinora tristemente vuote), cominciamo ad occuparci di come riempirle con dei.
Lavorare con le query Federica Scarrione 18/05/2009 fonte:
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:
Microsoft Access Query (II), filtri.
1 Università della Tuscia - Facoltà di Scienze Politiche.Informatica 2 - a.a Prof. Francesco Donini Accesso a basi di dati con ASP.
SCHEDA INFORMATIVA DI UNITÀ. Progettare una base di dati PROGETTAZIONE DI UNA BASE DI DATI -Identificazione delle informazioni salienti -Creazione di.
1 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Informatica per laurea triennale.
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
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?
Interrogazioni (parte 2)
SCHEDA INFORMATIVA DI UNITÀ. PROGETTAZIONE DI UN DATABASE Identificazione delle informazioni salienti Definizione di relazioni fra i dati.
Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema.
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.
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.
Tipo Documento: unità didattica 2 Modulo 14 Compilatore: Antonella Bolzoni Supervisore: Data emissione: Release: Indice: A.Scheda informativa B.Introduzione.
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.
Access Breve introduzione. Componenti E’ possibile utilizzare Access per gestire tutte le informazioni in un unico file. In un file di database di Access.
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:

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 II” Novembre 2005

Sommario degli argomenti 1a parte Query di interrogazione Proiezione Selezione Ridenominazione Join

Query di selezione Come avevamo già anticipato, le istruzioni di interrogazione permettono di estrarre da una o più tabelle le informazioni a cui si è interessati, organizzando la risposta in una tabella ideale (dynaset) cap città prov Ambiente di esecuzione SQL nome cogn città nome Cogn tel indir cap Select Nome, Cognome città From … Where …

L’istruzione SELECT Seleziona, tra le tuple appartenenti alle tabelle specificate, soltanto quelle che soddisfano il criterio indicato, visualizzandone i valori degli attributi esiderati. SELECT TabellaN.attributoP,.. TabellaM.attributoR FROM TabellaN,..TabellaM WHERE <condizione booleana>; Elenco attributi di cui è richiesta la visualizzazione Nomi tabelle cui appartengono gli attributi Condizione vero/falso che determina l’appartenenza o meno alla tabella risultato delle righe coinvolte nell’ interrogazione

Operatori algebrici relazionali con SELECT: la Proiezione Attraverso questa istruzione, è possibile manipolare le relazioni applicando su di esse gli operatori tipici dell’al- gebra relazionale. Il seguente impiego dell’istruzione SELECT: SELECT attributoX,.. attributoW FROM Tabella; Permette di applicare alla relazione Tabella, l’operatore Algebrico di PROIEZIONE

SELECT Destinazione, Data, Costo Select: proiezione Consideriamo ad esempio la tabella viaggi, e supponiamo di voler eseguire una proiezione sugli attributi Destinazione,Data, Costo Tabella Origine: viaggi Forniremo un’istruzione specifica: SELECT Destinazione, Data, Costo FROM Viaggi;

Select: proiezione Il cui risultato è il seguente:

Operatori algebrici relazionali con SELECT: la Selezione Analogamente, è possibile realizzare l’operazione algebrica relazionale di Selezione. La sintassi cui faremo riferimento è la seguente: Seleziona Tutti gli attributi SELECT * FROM Tabella WHERE <condizione booleana>; Applica per Ciascuna tupla La condizione booleana Questa istruzione permette di applicare alla relazione Tabella, l’operatore algebrico di SELEZIONE

Select: Selezione Supponiamo di ‘selezionare’ dalla tabella viaggi, tutte le Tuple per le quali il costo del viaggio è <= 400 Euro SELECT * FROM Viaggi WHERE Costo <=400; Che restituisce:

L’istruzione SELECT: esempio Naturalmente è possibile comporre nell’ordine la Selezione e la Proiezione: Tabella Origine: viaggi SELECT Destinazione, Costo, DurataGG, Data FROM Viaggi WHERE Costo <= 500;

…in sintesi L’istruzione applica la condizione booleana (clausola WHERE) a ciascuna riga della tabella viaggi, e laddove il risultato sia vero preleva gli attributi richiesti e li scrive nella tabella risultato: La condizione dunque, rappresenta il criterio in base alla quale vengono filtrate le informazioni che non sono di interesse

…segue clausola WHERE Il criterio di selezione, quantunque possa essere complesso, avrà sempre 2 valori risultanti, cioè VERO/FALSO SELECT Destinazione, Costo, DurataGG, Data FROM Viaggi WHERE (Costo <= 500) and (Data > Now()); Funzione che Ritorna la data odierna (25/11/2005) Il recordset risultante diventa:

Ancora sulla clausola ‘Where’ SQL mette a disposizione un operatore like per il confronto di stringhe. Sono forniti inoltre due caratteri speciali: _ : rappresenta un carattere arbitrario (? In Access) %: stringa di un numero arbitrario di caratteri (* in Access) L’op. Like può Essere preceduto dall’operatore Not che complementa, Nega, l’insieme restituito da like SELECT Destinazione, Data FROM Viaggi WHERE Destinazione like ‘_a%’; che restituisce:

Select: Ridenominazione Anche l’operazione di ridenominazione degli attributi Previsto dall’algebra relazionale è realizzato dalla istruzione SELECT: SELECT Attributo1, AttributoN AS MIOAttributo, Attributo M FROM Tabella; Specifichiamo ad esempio, la durata dei viaggi come Numero di settimana e giorni residui: SELECT Destinazione, Data, int(durataGG/7) AS Settimane, (durataGG mod 7) AS giorni FROM Viaggi;

Select: Ridenominazione Che restituisce:

Alcune caratteristiche Supponiamo di specificare la seguente interrogazione: SELECT Destinazione FROM Viaggi; Il cui risultato è: Compaiono dei duplicati. Una tabella relazionale è un insieme di elementi righe (tuple), per cui ogni elemento distinto deve essere unico

…segue Per restituire alla tabella il suo significato insiemistico, esiste in SQL la parola chiave “distinct”: SELECT distinct Destinazione FROM Viaggi; Se è richiesta esplicitamente la presenza dei duplicati, si usa nella query la parola chiave “all”

Select tra più tabelle Supponiamo che esista un’altra tabella, Prenotazioni, e che tra esse vi sia una relazione 1 a molti, ovvero 1 Viaggio -> più Prenotazioni Viaggi Prenotazioni 1 ¥ Cod_viaggio Destinazione Nro-prenotazione Durata_giorni Nro_posti-prenotati Data_partenza Cliente Partenza Indirizzo_cliente Mezzo Anticipo Nro_posti Costo

Select tra più tabelle La tabella delle Prenotazioni potrebbe essere la seguente: Potremmo chiederci ad esempio, quali sono le mete dei Clienti prenotati In questo caso però, le mete (‘Destinazioni’) compaiono nella tabella Viaggi, mentre i ‘Clienti’ figurano nella tabella Prenotazioni: cioè due tabelle distinte

Select: Tabelle correlate L’ideale sarebbe disporre di un’unica tabella in grado di contenere entrambe le informazioni, e sulla quale svolgere l’interrogazione. Dobbiamo cioè correlare dati in tabelle diverse identificando un attributo che abbia valori uguali sulle due tabelle. Qual è questo attributo con valori uguali? Viaggi Prenotazioni codViaggio A1B0 Destinazione Parigi Data 1505/1999 Partenza Roma Mezzo Aereo NumPosti 30 Costo 300 Nro-Prenot 432312 Nro_psti-Ptr 1 Cliente Caio Rossi Indirizzo Via Verdi Anticipo 100 432313 4 Adele Nari Via Font AMP2 Amsterdam 17/05/2005 Napoli 18 500 334311 Giusp Esp Cso Italia 150 334312 Vito Fonta Via C.Cort … .. ...

Select: Inner Join Abbiamo cioè costruito il prodotto cartesiano Viaggi X Prenotazioni, con il vincolo di considerare solo le righe che presentano l’uguaglianza nell’attributo comune codViaggio. L’SQL è in grado di generare una tale relazione; l’operatore binario corrispondente è noto come INNER JOIN SELECT * FROM Viaggi INNER JOIN Prenotazioni ON Viaggi.CodViaggio=Prenotazioni.codViaggio; SELECT * FROM Viaggi, Prenotazioni WHERE Viaggi.CodViaggio=Prenotazioni.codViaggio;

…segue Da questa tabella, restringendo l’insieme degli attributi osservati, otteniamo la risposta al quesito da cui eravamo partiti: Le mete dei clienti SELECT Prenotazioni.Cliente, Prenotazioni.Indirizzo, Viaggi.Destinazione, FROM Prenotazioni, Viaggi WHERE viaggi.codViaggio=prenotazioni.CodViaggio;

Varianti join: LEFT JOIN Un’alternativa all’INNER JOIN è quella di costruire una tabella che ne ampli il risultato, estendendolo cioè con le righe della tabella di sinistra per le quali non esiste una corrispondente riga nella tabella di destra SELECT * FROM Viaggi LEFT JOIN Prenotazioni ON Viaggi.CodViaggio=Prenotazioni.codViaggio; Valori NULL

Varianti join: LEFT JOIN Su questo esempio allora ci si potrebbe chiedere quali siano i pacchetti Viaggio che siano rimasti invenduti: Ordine crescente Del dynaset SELECT Viaggi.CodViaggio,Viaggi.Destinazione, Viaggi.Data FROM Viaggi LEFT JOIN Prenotazioni ON Viaggi.CodViaggio=Prenotazioni.codViaggio WHERE (Prenotazioni.codViaggio IS NULL) AND (Viaggi.Data < Date()) ORDER BY Viaggi.Data;

Varianti join: RIGHT JOIN Il RIGHT JOIN ha un comportamento anologo al LEFT JOIN: aggiunge alla tabella restituita dall’INNER JOIN le righe della tabella di destra per le quali non esiste una corrispondente riga nella tabella di sinistra Il risultato coincide con l’inner Join perché per ogni record della tabella di destra (Prenotazioni) esiste un record corrispondente nella tabella di sinistra (Viaggi). La sintassi è: SELECT * FROM Viaggi RIGHT JOIN Prenotazioni ON Viaggi.CodViaggio=Prenotazioni.codViaggio;

Fine 1a parte