Funzionalità del DBMS relazionale l Funzioni per –definizione della base di dati –inserimento / rimozione /aggiornamento di informazioni deve soddisfare.

Slides:



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

Structured Query Language
DBMS (DataBase Management System)
© 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
Sistemi per il recupero delle informazioni
SQL92 e XQuery1.0 a confronto1 SQL92 E XQUERY1.0 A CONFRONTO Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria - Sede di Modena Corso.
Biglietti e Ritardi: schema E/R
1 Misura Derivata: esempio dei biglietti CostoMedioBiglietto (CMB) calcolato come INCASSO/NUM_BIG. SUM AVG Implementazione in Analysis Services 1. Si definisce.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
SQL.
SQL Dati i seguenti schemi relazionali:
ESEMPI DI ARCHIVI DI DATI
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.
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.
Basi di dati. Vantaggi degli archivi digitali Risparmio di spazio: sono facilmente trasferibili e duplicabili Risparmio di tempo: si può accedere ai dati.
Access: Query semplici
Basi di dati Università Degli Studi Parthenope di Napoli
SQL: Lezione 7 Nataliya Rassadko
SQL Per la definizione di basi di dati SQL per definire ed amministrare Ogni utente puo definire una base di dati di cui diventa lamministratore potendo.
Esercitazione.
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
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.
SQL basato su ANSI (American National Standards Institute) – standard SQL SQL – Structured Query Language è un linguaggio dichiarativo e permette di comunicare.
Basi di dati Claudia Raibulet
Introduzione alle Basi di Dati. Overview Informazione = contenuto + struttura Informazione non strutturata Molto contenuto, poca struttura Un romanzo.
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.
L’algebra relazionale
MODELLO LOGICO DEI DATI
Progettare un database
Realizzato da Roberto Savino
Basi di Dati e Sistemi Informativi
SQL.
BIOINFO3 - Lezione 51 INSERIMENTO DEI DATI Visto come si creano le tabelle (sinora tristemente vuote), cominciamo ad occuparci di come riempirle con dei.
DATABASE Introduzione
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
DB- Sistemi Informativi
SQL Interrogazioni. 2 Interrogazioni in SQL Non esiste un SQL standard (vari dialetti) Formulazione di interrogazioni (query) è parte del Data Manipulation.
Microsoft Access (parte 5) Introduzione alle basi di dati Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Interrogare il database
SEFOC – SETTORE FORMAZIONE CONTINUA DEL PERSONALE CORSO MYSQL AVANZATO ROBERTO PENNOLINO – CARMELO MASSIMO PRIOLO PALERMO – 07 | 06 | 2011.
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,
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?
Raggruppamento in SQL Esempio di raggruppamento
Microsoft Access Query (III).
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,
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.
Approfondimenti SQL.
Microsoft Access Filtri, query. Filtri Un filtro è una funzione che provoca la visualizzazione dei soli record contenenti dati che rispondono a un certo.
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
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:

Funzionalità del DBMS relazionale l Funzioni per –definizione della base di dati –inserimento / rimozione /aggiornamento di informazioni deve soddisfare i vincoli! –Interrogazione

SQL (Structured Query Language) l SQL: Linguaggio standard per creazione e interrogazione di DB l Vediamo solamente come formulare interrogazioni con SQL l un’interrogazione produce come risultato una tabella l Clausola Base SELECT Lista di attributi FROM Elenco relazioni WHERE Condizione

Query l Selezionare Autore e Titolo dei libri editi da Einaudi SELECT Autore, Titolo FROM Libri WHERE Casa_ed = ”Einaudi"; l Sezionare Autore e Titolo dei libri di Feltrinelli pubblicati a partire dal 1990 SELECT Autore, Titolo FROM Libri WHERE (Casa_ed = "Feltrinelli") and (Anno_ed >=1990);

l Sleziona tutti i dati dei libri della Feltrinelli e Dell’Einaudi SELECT * FROM Libri WHERE (Casa_ed = "Feltrinelli") or (Casa_ed = "Einaudi");

Provare: l Trova i libri editi da Einaudi o Bompiani, pubblicati dopo 1980 (Autore,Titolo,Casa_ed,Anno_ed) l Trova i libri editi da Einaudi o editi da Bompiani dopo 1980

Ridenomina degli Attributi l E’ possible ridenominare i nomi degli attributi in una query mediante l’operatore as: Esempio SELECT Titolo AS Libro, Autore AS Scrittore FROM Libri WHERE Casa_ed="Einaudi";

Esempi: query parametriche l Trova tutti i libri presenti in biblioteca, dato il nome dell’autore, Il nome dell’autore viene introdotto dall’utente SELECT * FROM Libri WHERE Autore = dimmi il nome dell’autore ; l In esecuzione: > dimmi il nome dell’ autore Alessandro Manzoni

Matching approssimato l L’operatore like permette di confrontare il valore di un attributo con un valore specificato in modo incompleto l in ACCESS Si usa con gli operatori ? e * (In SQL puro _ e %) l ? indica un carattere qualsiasi l *una sequenza di caratteri qualunque

Esempio SELECT Autore, Titolo FROM Libri WHERE Autore like “*Man*”; l Seleziona tutti i libri in cui il nome dell’autore contiene “Man”

Esempio con like e parametri SELECT * FROM libri WHERE Autore like "*"& dimmi l'autore & "*”; l Seleziona tutti i libri in cui il nome dell’autore contiene la stringa introdotta dall’utente l & e’ l’operatore di concatenazione tra stringhe

Funzioni aggregate Funzioni aggregate: i valori dipendono da più tuple) l COUNT: conta il numero delle tuple selezionate l SUM: somma i valori di un attributo delle tuple selezionate l MAX: fornisce il massimo valore di un attributo delle tuple selezionate l MIN: fornisce il minimo valore di un attributo delle tuple selezionate l AVG: fornisce la media dei valori di un attributo delle tuple selezionate

ESEMPI l Contare i libri presenti in biblioteca editi da Feltrinelli SELECT Count(*) as TOTALE FROM Libri WHERE Casa_ed = "Feltrinelli”; l Qual è il prezzo del più costoso libro presente in biblioteca? SELECT Max(Prezzo) FROM Libri;

l Calcolare il costo totale dei libri presenti in biblioteca, scritti da Umberto Eco SELECT Sum (Prezzo)as TotaleEco FROM Libri WHERE Autore = "Umberto Eco"

Raggruppamento e operatori aggregati l Raggruppare le tuple in base a qualche attributo l applicare le funzioni aggregate a ciascun raggruppamento

Raggruppamento GROUP BY: l Contare quanti libri ci sono di ciascun editore SELECT Casa_ed, Count(*) as NumCopie FROM Libri GROUP BY Casa_ed; l Per ogni editore, indicare il costo totale dei libri presenti in biblioteca SELECT Casa_ed, Sum (Prezzo) as Totali FROM Libri GROUP BY Casa_ed;

Raggruppamento (2) l Per ogni autore, contare i libri presenti in biblioteca editi da Einaudi, ed indicarne il costo totale SELECT Autore, Count(*) as Numero, Sum (Prezzo) as Valori FROM Libri WHERE Casa_Ed = “Einaudi” GROUP BY Autore;

Raggruppamento (3) l La clausola HAVING consente di imporre una condizione sul risultato di una funzione aggregata l Indicare il numero di libri presenti in biblioteca degli editori di cui sono presenti almeno 3 libri SELECT Casa_ed, Count(*) AS Num_copie FROM libri GROUP BY Casa_ed HAVING Count(*) >=3;

Ordinamento dei risultati l Si può chiedere che le tuple del risultato siano ordinate in base ai valori dei campi: ORDER BY l Es. Restituire l’elenco dei libri in catalogo della Bompiani, secondo l’ordine alfabetico degli autori, per anno di edizione decrescente SELECT * FROM LIBRI WHERE Casa_ed = “Bompiani” ORDER BY Autore ASC, Anno_ed DESC;

Valori Unici l SQL restituisce una tabella che contiene tutte le righe che soddisfano una certa condizione, puo’ contenere duplicati l Per eliminare i duplicati si premette la parola chiave distinct l Esempio elenca i libri per autore e titolo senza ripetizioni (ignorando copie multiple e differenti edizioni) SELECT DISTINCT Autore, Titolo FROM libri ORDER BY Autore ASC;

Query con piu’ tabelle - join l Join: combinare le tuple di più tabelle i cui valori per attributi correlati soddisfano una condizione di confronto (caso più semplice: sono uguali) l Il join di due relazioni è il sottoinsieme del loro prodotto cartesiano specificato dalla condizione di selezione

Relazioni tra tabelle e Join l Le relazioni tra tabelle sono espresse da valori comuni di attributi correlati SELECT Utenti.Nome, Libri.Titolo FROM libri, prestiti, utenti WHERE Prestiti.Cod_utente=Utenti.Cod_utente AND Prestiti.N_inv=Libri.N_inv;

Libri presi in prestito da un utente il cui nome è un parametro SELECT Utenti.Nome, Libri.Titolo FROM libri, prestiti, utenti WHERE (Utenti.Nome like "*"& dimmi l'Utente & "*") AND Prestiti.Cod_utente=Utenti.Cod_Utente AND Prestiti.N_inv=Libri.N_inv;

Altro Esempio l Esempio Seleziona gli studenti e gli esami che hanno sostenuto con i rispettivi titoli e voti: SELECT Studenti.Nome, Studenti.Cognome, Corsi.Titolo, Esami.Voto. Esami.Lode FROM Studenti, Corsi, Esami WHERE Corsi.CodiceCorso=Esami.CodiceCorso and Studenti.Matricola = Esami.Matricola;

l Modo alternativo per specifcare JOIN: SELECT (Attributi) FROM Tabella1, Tabella2 WHERE Tabella1.At1 = Tabella2.At2 l diventa SELECT (Attributi) FROM Tabella1 INNER JOIN Tabella2 ON Tabella1.At1 = Tabella2.At2 INNER JOIN (Access)

SELECT (Attributi) FROM Tabella1, Tabella2, Tabella3 WHERE Tabella1.ATX = Tabella2.ATY and Tabella2.ATZ = Tabella3.ATW l diventa SELECT (Attributi) FROM Tabella1 INNER JOIN (Tabella2 INNER JOIN Tabella3 ON Tabella2.ATZ = Tabella3.ATW) ON Tabella1.At1 = Tabella2.At2 INNER JOIN (Access)

INNER JOIN l oppure SELECT (Attributi) FROM (Tabella1 INNER JOIN Tabella2 ON Tabella1.At1 = Tabella2.At2) INNER JOIN Tabella3 ON Tabella2.ATZ = Tabella3.ATW)

SELECT Studenti.Nome, Studenti.Cognome, Corsi.Titolo, Esami.Voto,Esami.Lode FROM Studenti INNER JOIN (Corsi INNER JOIN Esami ON Corsi.CodiceCorso = Esami. CodiceCorso) ON Studenti.Matricola = Esami.Matricola INNER JOIN (Access)

Per ogni studente determina quanti esami ha sostenuto (ordina per num. decrescente di esami sostenuti ) SELECT Studenti.Nome, Studenti.Cognome, Count(*) AS Esami_sostenuti FROM Studenti, Esami WHERE Studenti.Matricola = Esami.Matricola GROUP BY Studenti.Nome, Studenti.Cognome ORDER BY Count(*) DESC;

Versione con INNER JOIN SELECT Studenti.Nome, Studenti.Cognome, Count(*) AS Esami_sostenuti FROM Studenti INNER JOIN Esami ON Studenti.Matricola = Esami.Matricola GROUP BY Studenti.Nome, Studenti.Cognome ORDER BY Count(*) DESC;

Join e Aggregati esempi: 1. Per ogni corso determina il numero di studenti che ne hanno sostenuto l’esame 2. Per ogni studente determina la media dei voti 3. Elenca gli studenti che hanno una media >= Elenca gli studenti che hanno sostenuto almeno due esami (3 e 4 possono essere fatte riutilizzando e modificando altre query gia' fatte)

1:Soluzione SELECT Corsi. Titolo, Corsi.CodiceCorso, Count(*) AS EsamiSostenuti FROM Esami, Corsi WHERE Esami.CodiceCorso = Corsi.CodiceCorso GROUP BY Corsi.Titolo, Corsi.CodiceCorso;

2:Soluzione SELECT Studenti.Nome, Studenti.Cognome, Avg(Esami.Voto) AS Media FROM Studenti, Esami WHERE Studenti.Matricola=Esami.Matricola GROUP BY Studenti.Nome, Studenti.Cognome;

Select annidate l E’possibile utilizzare la tabella risultante da una query come condizione di selezione per un’altra query Esempi: l seleziona il libro con il prezzo massimo l seleziona gli autori i cui autori di libri compaiono in una tabella ma non in un’altra l Seleziona i libri (autore, titolo pubblicati da una casa editrice ma non da un’altra)

Select annidate l SELECT INTERNA produce tabella l SELECT ESTERNA usa tale tabella come condizione l RISULTATO è solo la tabella prodotta dalla select esterna

Seleziona libro con il prezzo massimo SELECT Autore, Titolo, Prezzo FROM libri WHERE Prezzo in (SELECT Max(Prezzo) FROM libri);

Libri pubblicati da Garzanti e Bompiani SELECT Titolo FROM libri WHERE Casa_ed = ”Bompiani"; Produce una tabella, chiamiamola LibriBompiani SELECT Autore, Titolo FROM libri WHERE Casa_ed = "Garzanti" and Titolo In (select Titolo from LibriBompiani);

Esempio intersezione con parametri Seleziona Autore e Titolo dei libri pubblicati sia da casa1 e da casa2 SELECT Autore, Titolo FROM libri WHERE Casa_ed = [casa1] and Titolo in (select Titolo from libri where Casa_ed = [casa2] );

Esempio differenza Seleziona Autore e Titolo, pubblicati da Casa che pubblica, ma non da Casa che non pubblica SELECT Autore, Titolo FROM libri WHERE Casa_ed = [Casa che pubblica] and Titolo not in (select Titolo from libri where Casa_ed = [Casa che non pubblica] );