1 Basi di Dati S tructured Q uery L anguage Appunti Matteo Longhi.

Slides:



Advertisements
Presentazioni simili
TIPI STANDARD DI SQL BOOLEAN Valori: vero, falso CHAR(n)
Advertisements

Structured Query Language
SQL applicato a SQL Server
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
1 Comandi per la manipolazione dei dati. 2 Tipi di comandi INSERT UPDATE DELETE COMANDI COMANDI 2.
Sistemi per il recupero delle informazioni
DML – Data Manipulation Language
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Basi di Dati prof. A. Longheu
SCUOLA INTERUNIVERSITARIA SICILIANA DI SPECIALIZZAZIONE PER LINSEGNAMENTO SECONDARIO Classe di Concorso: 42A Massimo Mancino MODULO DIDATTICO - Ambienti.
SQL.
SQL Dati i seguenti schemi relazionali:
SQL Structured Query Language
Sistemi di Elaborazione delle Informazioni Modello Relazionale
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.
Corso di Informatica (Basi 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,
SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.
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
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.
SQL1 Modifica dei dati inserimento cancellazione modifica.
Esercitazione.
Equivalenza di espressioni
Vincoli di integrità generici Con i costrutti visti sinora, non è sempre possibile definire tutti i possibili vincoli di integrità. Per questo esiste listruzione.
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.
SQL SQL (pronunciato anche come l’inglese sequel) è l’acronimo di Structured Query Language (linguaggio di interrogazione strutturato) E’ un linguaggio.
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:
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.
Creazione e manipolazione tabelle. TABELLE una tabella può essere creata in qualsiasi momento,anche quando gli utenti stanno usando il database la struttura.
SQL basato su ANSI (American National Standards Institute) – standard SQL SQL – Structured Query Language è un linguaggio dichiarativo e permette di comunicare.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, Capitolo 4:SQL 16/10/2002.
Basi di dati Claudia Raibulet
SQL: Structured Query Language
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Creazione di un database MySQL
Corso di Basi di Dati Il Linguaggio SQL Home page del corso:
1 Il Linguaggio SQL Il Linguaggio SQL Prof. Lorenzo Vita, Ing. Luigi Testa.
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:
BIOINFO3 - Lezione 51 INSERIMENTO DEI DATI Visto come si creano le tabelle (sinora tristemente vuote), cominciamo ad occuparci di come riempirle con dei.
Elaborazione dati informatici
Microsoft Access (parte 5) Introduzione alle basi di dati Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
SEFOC – SETTORE FORMAZIONE CONTINUA DEL PERSONALE CORSO MYSQL AVANZATO ROBERTO PENNOLINO – CARMELO MASSIMO PRIOLO PALERMO – 07 | 06 | 2011.
SQL (IV) Data Definition Language/ Data Manipulation Language.
Pagine ASP parte 3 I data base Stefano Schacherl.
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?
Microsoft Access Query (III).
Interrogazioni (parte 2)
SQL (III) Data Definition Language/ Data Manipulation Language.
MySQL Database Management System
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
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.
© 2015 Giorgio Porcu - Aggiornamennto 28/03/2015 UdA 1A Database Progettazione Fisica G IORGIO P ORCU
Basi di Dati e Sistemi Informativi Esercitazione: Il Linguaggio SQL (DDL+DML) Home page del corso:
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.
SQLite. Introduzione a SQLite Oltre alla possibilità di memorizzare informazioni persistenti attraverso Preferences e files, Android mette a disposizione.
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:

1 Basi di Dati S tructured Q uery L anguage Appunti Matteo Longhi

2 Introduzione Standard creato nel 1976 da IBM Aggiornato (versione 2) nel 1992 (ANSI X3.135 e ISO 9075) Consente di: –DDL: definire la struttura del DB –DML: modificare i dati contenuti nel DB

3 DDL: Data Definition Language CREATE TABLE Personale ( matricola char(5), cognome char(30), nome char(20), codFiscalechar(16) not null, dataAssunzionedate, filialesmallint, Funzionechar(15), livellosmallint, stipBasefloat, viachar(25), capchar(5), cittachar(20), provchar(2) ); Esempio:

4 Tipi di dato CHARACTER(n) CHAR(n)Stringa di lunghezza n DATEData nella forma mm/gg/aa TIMEOra nel formato hh:mm INTEGER Numero intero da a SMALLINTNumero da a REAL FLOAT

5 Modifica dei Dati Per inserire un nuovo record: INSERT INTO Personale (matricola,cognome,nome,…,prov) VALUES (‘AB541’,’Rossi’,’Mario’,…,’CO’); Per aggiornare record esistenti: UPDATE Personale SET livello = 6 WHERE livello=5; Per cancellare record esistenti: DELETE FROM Personale WHERE stipBase<750;

6 Query Le principali operazioni di query (interrogazione) sono: Proiezione: visualizzare solo le colonne (campi) specificati Selezione: visualizzare solo le righe (record) che soddisfano una certa condizione Congiunzione (Join): unire più tabelle

7 Simple Query Sintassi generale: SELECT [DISTINCT] { [AS ] } FROM { [AS ] } [WHERE ] Legenda: […]Opzionale {…}Almeno uno, separati dalla virgola

8 Simple Query: esempi Tabelle: PERSONALE (matricola, cognome, nome, codFiscale, dataAssunzione, filiale, funzione, livello, stipBase, via, cap, citta, prov) DIPENDENZA (codFiliale, descrizione, indirizzo) Query - cognome, nome e codice fiscale di tutto il personale: SELECT cognome, nome, codFiscale FROM Personale Query - cognome, nome e codice fiscale degli impiegati: SELECT cognome, nome, codFiscale FROM Personale WHEREfunzione=‘impiegato’

9 Simple Query: DISTINCT DISTINCT: elimina le righe duplicate nella tabella risultante. Query – elenco delle professioni presenti in azienda: SELECT DISTINCT funzione FROM Personale Senza l’uso il distinct: SELECT funzione FROM Personale funzione Impiegato Dirigente Segretario … funzione Impiegato Dirigente Segretario …

10 Simple Query: * e AS Il simbolo * sostituisce l’elenco di tutti i campi. Query – tutti i dati dei dipendenti che abitano in provincia di milano: SELECT * FROM Personale WHERE prov=‘MI’ La clausola AS permette di modificare l’intestazione di una colonna. Query – l’elenco delle province da cui provengono i dipendenti: SELECT DISTINCT prov AS Provincia FROM Personale

11 Query : congiunzione (JOIN) Query – cognome, nome e indirizzo della filiale in cui lavora ogni dipendente SELECT Personale.cognome, Personale.nome, Dipendenza.indirizzo FROM Personale, Dipendenza WHERE Personale.filiale=Dipendenza.codFiliale E’ necessario specificare la corrispondenza tra la chiave primaria di una tabella e la chiave esterna dell’altra (condizione di join).

12 Query : JOIN (2) Query – cognome, nome e indirizzo della filiale in cui lavora ogni dipendente SELECT P.cognome, P.nome, D.indirizzo FROM Personale AS P, Dipendenza AS D WHERE P.filiale=D.codFiliale

13 Query : JOIN (3) Nel caso sia necessario effettuare la congiunzione di tre tabelle: SELECT * FROM Tab1, Tab2, Tab3 WHERE Tab1.chiave=Tab2.chiaveExt AND Tab2.chiave=Tab3.chiaveExt

14 Query : Funzioni di Aggregazione FunzioneValore restituito COUNT numero di righe SUM somma AVG media MIN valore minimo MAX valore massimo Il risultato è UN SOLO valore!

15 Query : Funzioni di Aggregazione (2) Query – Numero di impiegati SELECT COUNT(*) FROM Personale WHERE funzione=‘impiegato’ Query – Numero di province di provenienza degli impiegati SELECT COUNT( DISTINCT(prov) ) FROM Personale WHERE funzione=‘impiegato’

16 Query : Funzioni di Aggregazione (3) Query – La somma degli stipendi che appartengono al livello 3 SELECT SUM(StipBase) FROM Personale WHERE livello=3 Query – Lo stipendio medio degli impiegati SELECT AVG(StipBase) FROM Personale WHERE funzione=‘impiegato’ Query – Lo stipendio minimo e massimo SELECT MIN(StipBase), MAX(StipBase) FROM Personale

17 Query : Condizioni di ricerca (1) BETWEEN: controlla se un valore è compreso in un intervallo, estremi compresi Query – Cognome e nome dei dipendenti assunti nel 2002 SELECT Cognome, Nome FROM Personale WHERE dataAss BETWEEN 01/01/2001 AND 31/12/2001 (NOT) IN: controlla se un valore appartiene ad un insieme Query – Cognome e nome dei dipendenti che risiedono nelle province di Milano, Como, Lecco e Bergamo. SELECT Cognome, Nome FROM Personale WHERE prov IN (‘MI’, ‘CO’, ‘LC’, ‘BG’)

18 Query : Condizioni di ricerca (2) (NOT) LIKE: confronta un valore usando caratteri jolly Query – I cognomi dei dipendenti che iniziano per “Ros”. SELECT Cognome FROM Personale WHERE Cognome LIKE ‘Ros%’ IS (NOT) NULL: controlla se un campo non è stato compilato Query – Cognome e nome dei dipendenti di cui non si conosce la provincia di residenza. SELECT Cognome, Nome FROM Personale WHERE prov IS NULL

19 Query : Ordinamenti ORDER BY ASC|DESC: ordina i risultati in senso crescente (ASC, di default) o decrescente (DESC) Query – I cognomi dei dipendenti in ordine crescente SELECT Cognome FROM Personale ORDER BY Cognome Query – I cognomi degli impiegati in ordine di decrescente di stipendio e, a parità di stipendio, in ordine di cognome crescente SELECT Cognome, stipBase FROM Personale WHERE funzione=‘impiegato’ ORDER BY stipBase DESC, Cognome

20 Query : Raggruppamenti GROUP BY: raggruppa le righe aventi lo stesso valore nelle colonne indicate.  le funzioni di aggregazione restituiscono un valore per ogni raggruppamento Query – Il numero di impiegati in ciascuna filiale. SELECT filiale, COUNT(*) AS NumeroDipendenti FROM Personale WHERE funzione=‘impiegato’ GROUP BY filiale

21 Query : Raggruppamenti (2) HAVING: aggiunge una condizione al GROUP BY. Si possono usare le funzioni di aggregazione (anche in questo caso riferite ad ogni singolo raggruppamento). Query – Lo stipendio medio degli impiegati nelle filiali con più di 10 dipendenti. SELECT filiale, AVG(stipBase) AS StipendioMedio FROM Personale WHERE funzione=‘impiegato’ GROUP BY filiale HAVING COUNT(*)>10

22 Query nidificate Nella condizione (WHERE) è possibile confrontare un valore con il risultato di un’altra query. Query – Cognome e nome dei dipendenti con stipendio inferiore alla media SELECT cognome, nome FROM Personale WHERE stipBase <( SELECT AVG(stipBase) FROM Personale ) NB: il confronto “<“ è possibile perché la seconda query, grazie alla funzione di aggregazione, restituisce UN SOLO risultato.

23 Query nidificate (2) Query – Cognome, nome e indirizzo della filiale in cui lavorano i dipendenti per i quali lo stipendio è superiore alla media degli stipendi degli impiegati. SELECT P.cognome, P.nome, D.indirizzo FROM Personale AS P, Dipendenza AS D WHERE P.filiale=D.codFiliale AND P.stipBase > ( SELECT AVG(stipBase) FROM Personale WHERE funzione=‘impiegato’ )

24 Query nidificate: ANY ANY: la condizione è vera se il confronto è vero per almeno uno dei valori restituiti dalla seconda query. Query – Dipendenti che non sono impiegati e che hanno lo stipendio superiore a quello di un qualsiasi impiegato. SELECT cognome, nome, funzione FROM Personale WHERE funzione <>’impiegato’ AND stipBase > ANY ( SELECT stipBase FROM Personale WHERE funzione=‘impiegato’ )

25 Query nidificate: ALL ALL: la condizione è vera se il confronto è vero per ciascuno dei valori restituiti dalla seconda query. Query – Dipendenti che non sono impiegati e che hanno lo stipendio superiore a quello di tutti gli impiegati. SELECT cognome, nome, funzione FROM Personale WHERE funzione <>’impiegato’ AND stipBase > ALL ( SELECT stipBase FROM Personale WHERE funzione=‘impiegato’ )

26 Query nidificate: IN (NOT) IN: la condizione è vera se il valore è compreso tra i valori restituiti dalla seconda query Query – Cognome e nome dei dipendenti che lavorano in filiali con più di 10 dipendenti. SELECT cognome, nome FROM Personale WHERE filiale IN ( SELECT filiale FROM Personale GROUP BY Filiale HAVING count(*)>10 )

27 Query nidificate: EXIST (NOT) EXIST: la condizione è vera se la seconda query restituisce almeno un risultato Query – Elenco dei dipendenti solo se non esistono dipendenti di sesto livello. SELECT cognome, nome FROM Personale WHERE NOT EXIST ( SELECT * FROM Personale WHERE livello=6 )