Select From Where...

Похожие документы
SQL: le funzioni di aggregazione

Caratteristiche dei linguaggi per Database

QL (Query Language) Alice Pavarani

Linguaggio SQL seconda parte

Structured Query Language

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

Manuale SQL. Manuale SQL - 1 -

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

CORSO ACCESS 2000 PARTE VI

Microsoft Access (parte 5) Query. Query. Query. Query. Creare una query

Filtri. Microsoft Access. Filtri. Filtri

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Select Anagrafiche, Movimenti From Descrizione? Where Anagrafiche.Codice=Codice And Cognome=' Bianchi ';

<Nome Tabella>.<attributo>

MODULO 2. Query normali e parametriche Query di:

ESERCITAZIONI ACCESS

PROGETTAZIONE DI DATABASE Linguaggio SQL

Appunti su SQL. Query Language. Comando Select

Corso di Access Modulo L2 A (Access) I tipi di query

Le query di comando e di servizio in Access

Modelli di Base Dati

SQL - Structured Query Language

Linguaggio SQL: fondamenti D B M G

Basi di Dati: Corso di laboratorio

Esempi SQL con Access. Orazio Battaglia

Microsoft Access. Microsoft Access. Maurizio Rebaudengo, Paolo Garza 1. Microsoft Access. Creazione base di dati. Apertura di una base dati

Interrogazioni complesse. SQL avanzato 1

Elena Baralis 2007 Politecnico di Torino 1

SQL DDL. Create database. Alter database. Drop database

SQL - Sottointerrogazioni

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Tipi di sottoquery SQL

Istruzioni DML di SQL

Elena Baralis 2007 Politecnico di Torino 1

Interrogazioni nidificate

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento

Corso di Access. Prerequisiti. Modulo L2 A (Access) Le query

Data warehouse Analisi dei dati

Database Lezione 2. Sommario. - Progettazione di un database - Join - Valore NULL - Operatori aggregati

Il linguaggio SQL: raggruppamenti

Ordinare dati. Microsoft Access. Ordinare dati. Ordinare dati. Ordinare dati. Ordinare dati. Query (II), filtri. L ordinamento crescente:

SQL (STRUCTURED QUERY LANGUAGE)

MODULO 5 - USO DELLE BASI DI DATI 2 FINALITÁ

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Prova Pratica di Informatica, Modulo Basi di dati Appello 23/07/2018

DATABASE CLIENTIRAPPRESENTANTI

Basi di Dati: Corso di laboratorio

2.4. Creare ed operare con le query

Транскрипт:

Select From Where... SELECT Le colonne che saranno mostrate e in che ordine. Calcoli su colonne FROM La tabella o le tabelle usate dall interrogazione WHERE Condizione che deve essere soddisfatta dalle righe delle tabelle

Select From Where... SELECT Proiezioni, Ridenominazioni, Calcoli FROM Prodotti cartesiani Join WHERE Selezioni Condizioni di Join

La congiunzione SQL in Access SQL standard SELECT NomeSocietà, Città, DataOrdine FROM Clienti, Ordini WHERE Clienti.IDCliente = Ordini.IDCliente; SQL di Access SELECT Clienti.NomeSocietà, Clienti.Città, Ordini.DataOrdine FROM Clienti INNER JOIN Ordini ON Clienti.IDCliente = Ordini.IDCliente;

SQL: le funzioni di aggregazione funzioni predefinite che agiscono sui valori contenuti in insiemi di righe della tabella: Conteggi Somme Medie Massimi, minimi

Funzione Count La funzione COUNT conta il numero di righe presenti in una tabella con eventuale controllo di una condizione. SELECT Count(*) FROM NomeTabella (incluse quelle con campi di tipo Null) SELECT Count (NomeCampo) FROM NomeTabella (escluse le righe che hanno valore Null nella colonna dell attributo specificato)

Anagrafiche (Codice, Cognome, Nome, Indirizzo) Movimenti (ID, Descrizione, Data, Importo, Codice) Numero dei movimenti con importo superiore a una cifra prefissata. Select Count(*) From Movimenti Where Importo > [Quale importo minimo]

Anagrafiche (Codice, Cognome, Nome, Indirizzo) Movimenti (ID, Descrizione, Data, Importo, Codice) Select Count(Descrizione) From Movimenti Where Importo > [Quale importo minimo]

Anagrafiche (Codice, Cognome, Nome, Indirizzo) Movimenti (ID, Descrizione, Data, Importo, Codice) Somma degli importi per i movimenti superiori a una cifra prefissata. Sum(Importo) Select From Movimenti Where Importo > [Quale importo minimo]

Anagrafiche (Codice, Cognome, Nome, Indirizzo) Movimenti (ID, Descrizione, Data, Importo, Codice) Somma degli importi per i movimenti che si riferiscono alle anagrafiche di un indirizzo prefissato. Select Sum(Importo) From Movimenti M, Anagrafiche A Where M.Codice = A.Codice And Indirizzo = [Quale indirizzo]

Anagrafiche (Codice, Cognome, Nome, Indirizzo) Movimenti (ID, Descrizione, Data, Importo, Codice) Media degli importi per i movimenti aventi una descrizione prefissata. Select Avg (Importo) From Movimenti Where Descrizione = [Quale descrizione]

Funzioni Min e Max Restituiscono rispettivamente il valore minimo e il valore massimo tra i valori della colonna specificata come argomento della funzione (anche per campi di tipo carattere). SELECT Min(NomeCampo), Max(NomeCampo) FROM NomeTabella (ignorando i campi con valore Null)

Anagrafiche (Codice, Cognome, Nome, Indirizzo) Movimenti (ID, Descrizione, Data, Importo, Codice) Valore massimo per gli importi dei movimenti di un anagrafica avente un nome prefissato. Select Max (Importo) From Movimenti, Anagrafiche Where Movimenti.Codice =Anagrafiche.Codice And Nome = [Quale nome]

Anagrafiche (Codice, Cognome, Nome, Indirizzo) Movimenti (ID, Descrizione, Data, Importo, Codice) Valore minimo e numero degli importi dei movimenti di un anagrafica avente un nome prefissato. Select Min(Importo), Count(Importo),Importo From Movimenti M, Anagrafiche A Where M.Codice =A.Codice And Nome = [Quale nome]

Ordinamenti La clausola ORDER BY consente di ottenere i risultati di un interrogazione ordinati secondo i valori contenuti in una o più colonne, tra quelle elencate accanto alla parola Select. SELECT Colonna1, Colonna2 FROM NomeTabella ORDER BY Colonna1

Ordinamento:esempio Elenco alfabetico delle anagrafiche SQL Select Codice, Cognome, Nome, Indirizzo From Anagrafiche Order By Cognome, Nome

Crescente / Decrescente Ordinamento crescente : ASC stringhe dalla A alla Z, numeri dal minore al maggiore Ordinamento decrescente : DESC stringhe dalla Z alla A, numeri dal maggiore al minore N.B. L ordinamento crescente è per default (non occorre specificare ASC).

Ordinamento decrescente: esempio Codice delle anagrafiche e importo dei movimenti in ordine decrescente di valore. SQL Select Codice, Importo From Movimenti Order By Importo DESC

Anagrafiche (Codice, Cognome, Nome, Indirizzo) Movimenti (ID, Descrizione, Data, Importo, Codice) Elenco dei movimenti con importo superiore a 300 in ordine crescente di importo. Select * From Movimenti Where Importo > 300 Order By Importo

SQL Le Condizioni di Ricerca

SQL: Le condizioni di ricerca Utilizzate insieme a Where per determinare i criteri di selezione delle righe Segni del confronto =, <, >, <>, >=, <=. Più condizioni legate tra loro con gli operatori AND e OR, precedute eventualmente dall operazione NOT. Predicati : BETWEEN, LIKE, IN

BETWEEN Controlla se un valore è compreso all interno di un intervallo di valori, inclusi gli estremi. Esempio: elenco dei movimenti con importo compreso tra 1000 e 2000. SQL Select * From Movimenti Where Importo Between 1000 And 2000

IN Controlla le righe che hanno i valori di un attributo compresi in una lista di valori indicati dopo la parola In. Esempio: elenco delle anagrafiche con indirizzo Milano, Torino o Venezia SQL Select * From Anagrafiche Where Indirizzo IN ( Milano, Torino, Venezia )

LIKE Confronta il valore di un attributo di tipo carattere con un modello di stringa che può contenere caratteri jolly :? per indicare un singolo carattere qualsiasi in quella posizione della stringa; * per indicare una sequenza qualsiasi di caratteri in quella posizione della stringa. N.B.: In SQL standard i caratteri jolly sono _ (underscore) e % (percento)

Uso di LIKE LIKE xyz* vengono ricercate tutte le stringhe che iniziano con i caratteri xyz LIKE *xyz serve a ricercare tutte le stringhe che finiscono con i caratteri xyz LIKE *xyz* per tutte le stringhe che contengono al loro interno i caratteri xyz LIKE?xyz controlla le stringhe di 4 caratteri che finiscono con xyz

LIKE: esempio Elenco delle anagrafiche con Cognome che inizia con Ros (Rossi, Rosi, Rossini,...) SQL Select * From Anagrafiche Where Cognome Like 'Ros%'

Esercizi Anagrafiche (Codice, Cognome, Nome, Indirizzo) Movimenti (ID, Descrizione, Data, Importo, Codice) Elenco delle anagrafiche che hanno indirizzo uguale a Roma, Bologna o Torino. Cognome delle anagrafiche che hanno fatto movimenti con importo compreso tra 3000 e 6000. Elenco delle anagrafiche che hanno l iniziale del nome uguale ad A.

Access Condizioni di ricerca in QBE Database Auto con le tabelle: Modelli, Marche

Esempio di dati

Esempio 1(Between And ) Marca e modello: intervallo di prezzi Access minimo = 15000, massimo = 100000

Esempio 2 (Like) Access Modello il cui nome inizia con le cifre da 1 a 9 Like [1-9]* Modello e casa per nome della casa costruttrice che finisca per t o inizi per F Like *t Oppure Like F*

Like con parametro Access Ricerca di numeri telefonici con un prefisso fornito come parametro Criterio sul campo telefono LIKE [quale prefisso] + *

Access Soluzione (rapida) degli esercizi sulle condizioni di ricerca in SQL Elenco dei modelli di auto che hanno l iniziale del nome uguale a una lettera prefissata. WHERE Modelli.nome LIKE [quale iniziale] + * Nome e prezzo dei modelli aventi cilindrata compresa tra due limiti prefissati. WHERE Modelli.CC BETWEEN [lim1] AND [lim2] Elenco delle case automobilistiche che hanno la sede a Milano o Torino o Roma. WHERE Marche.Citta IN ( Milano, Torino, Roma )

SQL: raggruppamenti Clausola GROUP BY per raggruppare un insieme di righe aventi lo stesso valore nelle colonne indicate: produce una riga di risultati per ogni raggruppamento. Usata con le funzioni di aggregazione (Sum, Count...) : per ciascuna riga della tabella risultante viene prodotto un valore di raggruppamento. SELECT Colonna, Funzione FROM NomeTabella GROUP BY Colonna

Group By: esempio Anagrafiche (Codice, Cognome, Nome, Indirizzo) Movimenti (ID, Descrizione, Data, Importo, Codice) SQL Totale degli importi dei movimenti per ciascun codice anagrafico Select Codice, Sum(Importo) From Movimenti Group By Codice

Group By: esempio Totale degli importi dei movimenti per ciascun codice anagrafico Select Codice,Sum(Importo),Importo From Movimenti Group by Codice

Esercizio Numero dei movimenti per ogni città e cognome. Select Indirizzo,Cognome, Count(*) AS Numero From Anagrafiche A, Movimenti M Where A.Codice=M.Codice Group by Indirizzo, Cognome

Esercizio Numero dei movimenti per ogni città e cognome. Select Indirizzo, Cognome, Count(*) AS Numero From Anagrafiche A,Movimenti M Where A.Codice=M.Codice Group by Indirizzo, Cognome

Condizioni sui raggruppamenti Uso della clausola HAVING per sottoporre al controllo di una o più condizioni i gruppi creati con la clausola Group by. La condizione scritta dopo Having normalmente controlla il valore restituito dalle funzioni di aggregazione (Count, Sum, Avg, Min, Max). SELECT Colonna, Funzione FROM NomeTabella GROUP BY Colonna HAVING Condizione

Having: esempio Importo medio dei movimenti per i codici aventi più di 20 movimenti registrati SQL Select Codice, Avg(Importo) From Movimenti Group By Codice Having Count(*) > 20

Having: esempio Importo medio dei movimenti per i codici aventi più di un movimento registrato Select Codice,Avg(Importo),Importo From Movimenti Group by Codice Having Count(*)>1;

Where vs Having Where pone condizioni sulle righe della tabella Having controlla condizioni su gruppi di righe

Esempio Conta quante persone sono di Milano (Where) Select Count(*) From Anagrafiche Where Indirizzo = Milano Elenco delle città con più di 10 persone (Having) Select Indirizzo From Anagrafiche Group By Indirizzo Having Count(*) > 10

CLAUSOLE DI SELECT Select From Where Group by Having Order by FROM WHERE GROUP BY HAVING SELECT ORDER BY

Esercizi Raggruppare le anagrafiche per indirizzo e fornirne il numero per ogni indirizzo. Nome delle anagrafiche che hanno almeno 30 movimenti registrati nella tabella dei movimenti.

Access Raggruppamenti in QBE Database Auto con le tabelle: Modelli, Marche

Esempio 1 (Group by) Access Per ogni tipologia di modello, indicare la media di prezzo corrispondente

Access Esempio 2 (Group by, Having) Città di case produttrici e numero di modelli quando viene prodotto più di un modello

Esercizi Access Database con anagrafica e movimenti Movimento N Essere correlato 1 Anagrafica Anagrafiche (KCodice, Nome, Indirizzo) Movimenti (KNumero, Descrizione, Data, Importo, Codice) Realizzare in QBE le seguenti query già scritte in SQL Raggruppare le anagrafiche per indirizzo e fornire il numero per ogni indirizzo. Nome delle anagrafiche che hanno almeno 30 movimenti registrati nella tabella dei movimenti.

Access Clausola Dove (nella riga Formula) Numero di studenti, aventi matricola superiore a 20 000, raggruppati per Facoltà. La riga Mostra del campo usato per Dove non ha il segno di spunta

Access In SQL (Group by, Where) Numero di studenti, aventi matricola superiore a 20000, raggruppati per Facoltà. SELECT Facoltà.Descrizione, Count(Matricola) FROM Facoltà INNER JOIN Studenti ON Facoltà.KCodFac = Studenti.CodFac WHERE Studenti.Matricola > "20000" GROUP BY Facoltà.Descrizione;

Access Perché si usa Dove Per porre condizioni sia sui campi sia sui risultati delle funzioni di aggregazione.

Access Esempio Numero degli studenti, aventi matricola superiore a 200, raggruppati per Facoltà, solo per le Facoltà che hanno più di 200 iscritti Più di 200 Studenti (HAVING) Numero di Matricola Superiore a 200 (WHERE)

In SQL (Where, Group by, Having) Numero degli studenti, aventi matricola superiore a 200, raggruppati per Facoltà, solo per le Facoltà che hanno più di 200 iscritti. SELECT Facoltà.Descrizione, Count(Matricola) FROM Facoltà INNER JOIN Studenti ON Facoltà.KCodFac = Studenti.CodFac WHERE Studenti.Matricola > "200" GROUP BY Facoltà.Descrizione HAVING Count(Matricola) >200 Access Where: condizioni sulle righe Having:condizioni sui gruppi

Query nidificata Serve per utilizzare nei criteri di una query i valori restituiti dalla sottoquery. La sottoquery è rappresentata con un comando SQL racchiuso tra due parentesi tonde nella riga dei Criteri Si possono usare anche i segni del confronto: > <

Access Esempio di query nidificata Nome e prezzo dei modelli di auto che hanno il prezzo superiore alla media di tutti i prezzi >(SELECT AVG(Prezzo) FROM Modello) Zoom sulla riga Criteri: Maiuscolo + F2

Query nidificata in SQL Nome e prezzo dei modelli di auto che hanno il prezzo superiore alla media di tutti i prezzi SELECT Modelli.Nome, Modelli.Prezzo FROM Modelli WHERE Modelli.Prezzo > (SELECT AVG(Prezzo) FROM Modelli);

QBE: altri tipi di query Creare una query: fare clic su Query nell'elenco degli oggetti di Access, poi clic su Crea una query in visualizzazione struttura. scegliere poi le tabelle da usare e il tipo di query (dal menu Query)

Query di creazione crea una nuova tabella inserendo alcuni record provenienti dalla tabella scelta Dare il nome della tabella da creare e dell eventuale database in cui inserirla

Query di creazione: le righe e i criteri Salvare ed eseguire la query Visualizzare finestra database (F11 o )

Query di creazione: SQL Crea una nuova tabella con i dati degli studenti di Milano o Bergamo SELECT Studenti.* INTO StudLombardia FROM Studenti WHERE Studenti.Indirizzo ="Milano" OR Studenti.Indirizzo = "Bergamo";

Query di eliminazione per eliminare alcuni record da una tabella scelta Nella riga Elimina selezionare Da o Dove

Query di eliminazione da due tabelle collegate Relazione uno-molti: uso delle clausole Da e Dove su tabelle diverse nella riga Elimina

Query di eliminazione: SQL Elimina dalla tabella gli studenti di Milano DELETE Studenti.* FROM Studenti WHERE Indirizzo = "Milano";

Query di accodamento per aggiungere ad una tabella alcuni record estratti da un altra tabella Scegliere la tabella con i dati di origine Dare il nome della tabella a cui accodare i record della tabella selezionata

Query di accodamento: SQL Aggiunge alla tabella Studenti i dati degli studenti di Roma contenuti nella tabella Studenti2 INSERT INTO Studenti SELECT Studenti2.* FROM Studenti2 WHERE Studenti2.Indirizzo = "Roma";

C +[KCodice] Query di aggiornamento per modificare alcuni valori di una tabella scelta Scegliere il campo o i campi in cui modificare i valori Inserire l aggiornamento nella riga Aggiorna a Inserire gli eventuali criteri

Query di aggiornamento: SQL Aggiunge una V davanti alla matricola degli studenti aventi numero di matricola inferiore a 35000 UPDATE Studenti SET Studenti.Matricola = "V"+[Matricola] WHERE Studenti.Matricola <"35000";

Query a campi incrociati per creare una tabella a doppia entrata da una tabella scelta Inserire i campi Scegliere la funzione di aggregazione Scegliere fra Intestazione riga, Intestazione colonna, Valore nella riga Campi incrociati

Query a campi incrociati: SQL Numero studenti per Facoltà suddivisi per città di provenienza TRANSFORM Count(Studenti.Matricola) AS ConteggioDiMatricola SELECT Facoltà.Descrizione FROM Facoltà INNER JOIN Studenti ON Facoltà.KCodFac = Studenti.CodFac GROUP BY Facoltà.Descrizione PIVOT Studenti.Indirizzo;

Campi incrociati: sintassi SQL Transform: funzione di aggregazione (Conteggio, Somma, Media) Group By: intestazione di riga Pivot: intestazione di colonna