Istruzioni DML di SQL



Похожие документы
Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

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

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

Operazioni sui database

SQL (STRUCTURED QUERY LANGUAGE)

Interrogazioni complesse. SQL avanzato 1

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

Data management a.a Il linguaggio SQL

SQL - Funzioni di gruppo

********************* MODIFICA STRUTTURA DI UNA TABELLA (inserimento di un nuovo campo) ALTER TABLE Personale ADD Nascita date;

PROGRAMMA DI CLASSE 5AI

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

Il linguaggio SQL e Access

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

DBMS (Data Base Management System)

CONCETTO DI ANNIDAMENTO

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

OR true null false true true true true null true null null false true null false NOT

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia:

Il Domino Character Il domino CHARACTER permette di definire attributi che contengono un singolo carattere o stringhe di caratteri di lunghezza

Informatica per le discipline umanistiche 2 lezione 10

Il linguaggio SQL: viste e tabelle derivate

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf

Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica


Istruzioni SQL 1. Query di selezione 2 Istruzione SELECT 2 Istruzione SELECT DISTINCT 2 ORDER BY 3 WHERE 3 La condizione LIKE 4 BETWEEN AND 5

Domini Numerici Esatti (1) I domini numerici esatti permettono di definire attributi che contenegono valori esatti interi o con parte frazionaria.

Structured Query Language. Informatica Generale - SQL Versione 1.0, aa p.1/172

Corso di Laboratorio di Basi di Dati

SQL/OLAP. Estensioni OLAP in SQL

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

Le query di raggruppamento

SQL IL LINGUAGGIO DI INTERROGAZIONE

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

Definizione di domini

MAX, SUM, AVG, COUNT)

Documentazione SQL. Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema}

SQL. Alcune note sulla definizione dei dati

Volumi di riferimento

Il linguaggio SQL: query innestate

Il linguaggio SQL. ing. Alfredo Cozzi 1

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004

Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

PHP e Structured Query Language

Il linguaggio SQL: le basi

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

SQL (STRUCTURED QUERY LANGUAGE)

Il linguaggio SQL. Evoluzione del linguaggio. I linguaggi dentro SQL. I dialeu SQL. U@lizzo di SQL SQL. A. Ferrari 1

OSSIF WEB. Manuale query builder

I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER

Data base relazionale ed SQL. Modello relazionale dei data base e il linguaggio standard per la loro gestione

Dispensa DB Mercato del Lavoro

MODULO 5 ACCESS Basi di dati. Lezione 4

Archivi e Basi di Dati

Tipi MULTISET: accesso

Appunti di MySql. Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov.

SQL Sintassi Dei Comandi

Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI

IL LINGUAGGIO SQL. Caratteristiche generali. Il comando Select. Le basi di dati ed il linguaggio SQL A.Lorenzi D.Rossi - ATLAS. Pag.

16. IL LINGUAGGIO SQL

SQL. Linguaggio di interrogazione per basi di dati relazionali. Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL:

Basi Di Dati, 09/12/2003

Corso Sistemi Informativi Avanzati. Programma 30 set Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12

Compito Basi di Dati. Tempo concesso: 90 minuti 08 Giugno 2006 Nome: Cognome: Matricola:

Concetti fondamentali dei database database Cos'è un database Principali database

4 SQL : Interrogazioni nidificate

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

Create la tabella Dipendenti:

User Tools: DataBase Manager

CAPITOLO 4 ESERCIZI SU SQL

SQL -DDL. FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza)

Dispense Corso Access

SQL: le funzioni di aggregazione

Basi di Dati: Corso di laboratorio

Introduzione a MySQL

Le query. Lezione 6 a cura di Maria Novella Mosciatti

Linguaggio SQL. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Basi di Dati. S Q L Lezione 5

Lezione V. Aula Multimediale - sabato 29/03/2008

Sistemi per la gestione di database: MySQL ( )

Structured Query Language parte 1

Ricorsione in SQL-99. Introduzione. Idea di base

CAPITOLO 5: DATABASE INTRODUZIONE

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

SOLUZIONI COMMENTATE

Транскрипт:

Istruzioni DML di SQL Pag. 99 par.4 1

Sintassi: Costrutto: INSERT INTO (Inserimento di dati in tabelle) INSERT INTO <Nome_Tabella> [(<Attributo1>, <Attributo2>,, <AttributoN>)] VALUES (<Valore1>, <Valore2>, <ValoreN); Se si omette l elenco degli attributi allora l ordine ed il numero dei valori inseriti deve corrispondere alla sequenza precisamente delle colonne della tabella. 2

Es: Costrutto: INSERT INTO (Inserimento di dati in tabelle) INSERT INTO visita (Id_Visita, DataVisita, Peso, Altezza, PressMin, PressMax, Id_Paziente) VALUES (NULL, '2005-02-12', 82, 1.72, 80, 160, 4); INSERT INTO visita (Id_Visita, DataVisita, Id_Paziente) VALUES (NULL, '2005-02-12', 5); INSERT INTO visita VALUES (NULL, '2005-02-13', 64, 1.58, 56, 115, 9); 3

Sintassi: Costrutto: UPDATE (Modifica dati di una singola tupla o più tuple) UPDATE <Nome_Tabella> SET <Attributo1> = <Espressione1>, <Attributo2> = <Espressione2>,, <AttributoN> = <EspressioneN> [WHERE <Condizione>]; La condizione determina eventualmente su quale tupla o insieme di tuple è necessario agire. 4

Es: UPDATE visita SET Peso= 69, Altezza= 1.7, PressMin= 48, PressMax= 96, Id_Paziente= 7 WHERE Id_Visita=10; Costrutto: UPDATE (Modifica dati di una singola tupla o più tuple) UPDATE Alunno SET Nome= Cristian WHERE Matricola=50; UPDATE Dipendente SET Stipendio = Stipendio + 100; 5

Sintassi: Costrutto: DELETE (Per eliminare una o più tuple) DELETE FROM <Nome_Tabella> [WHERE <Condizione>]; La condizione determina eventualmente su quale tupla o insieme di tuple è necessario agire. 6

Es: DELETE FROM alunno WHERE nome = Noemi ; Costrutto: DELETE (Per eliminare una o più tuple) DELETE FROM alunno; DELETE FROM dipendente WHERE StipendioLordo > 5000.00; DELETE FROM dipendente WHERE Data <= 1990/12/31 ; 7

Costrutto: SELECT (Per estrarre dei dati dal database effettuare una query o interrogazione) Sintassi: SELECT [DISTINCT] <Attributo1>, <Attributo2>,, <AttributoN> FROM <Tabella1> [,<Tabella2>,, <TabellaN>] [WHERE <Condizione>]; La query restituisce una tabella con le colonne relative agli attributi indicati (* indica tutte le colonne) della tabella specificata (se sono presenti più di una tabella allora l estrazione avverrà dalla tabella prodotto cartesiano di quelle indicate) La condizione ci determina quali righe visualizzare La clausola DISTINCT consente di visualizzare esclusivamente righe non duplicate 8

Costrutto: SELECT (Per estrarre dei dati dal database effettuare una query o interrogazione) Es: select * from Paziente; (vedi file 23-02-2009.txt riga 129) select Nome, Cognome from Paziente; (vedi file 23-02-2009.txt riga 146) select Nome, Cognome, CodASL from Paziente where Provincia="MI"; (vedi file 23-02-2009.txt riga 180) select * from visita, paziente; (vedi file 12-03-2009.txt riga 42) select Nome, Cognome, Peso from visita, paziente where Peso <= 80 And Peso >= 70; (vedi file 12-03-2009.txt riga 4) 9

Costrutto: SELECT (Per estrarre dei dati dal database effettuare una query o interrogazione) Operazione di Selezione (o restrizione ) Es: L operazione viene eseguita grazie al costrutto select * con la clausola inserita nel where Nome = Gabriele (Alunni) Select * from Alunni where Nome= Gabriele ; Matricola >= 60 (Alunni) Select * from Alunni where Matricola>=60; 10

Costrutto: SELECT (Per estrarre dei dati dal database effettuare una query o interrogazione) Operazione di Proiezione () Es: L operazione viene eseguita grazie al costrutto select elencando ghi attributi da estrapolare e senza la clausola where matricola, nome (Alunni) Select matricola, nome from Alunni 11

Costrutto: SELECT (Per estrarre dei dati dal database effettuare una query o interrogazione) Operazione di Proiezione di Selezione ( <campi> <clausola> (<Tabella>) ) Es: L operazione viene eseguita grazie al costrutto select elencando gli attributi e specificando la clausola where matricola, nome ( matricola<=60 (Alunni)) Select matricola, nome from Alunni where matricola<60; 12

Costrutto: SELECT (Per estrarre dei dati dal database effettuare una query o interrogazione) Operazione di creazione nuova tabella da dati estrapolati grazie al costrutto select create table prova select * from visita where Altezza < 1.70; (vedi file 23-02-2009.txt riga 436 e successive) 13

Operazione di join Vi sono vari tipi di join noi ne analizzeremo solo tre tipi: Join utilizzato per effettuare il prodotto cartesiano Lo stesso risultato si può ottenere con la, fra le tabelle interessate Oppure con inner join senza la clausola ON Inner Join utilizzato per effettuare il join semplice (con ON e clausola) Lo stesso risultato si può ottenere con la select * e condizione opportuna where Natural Join utilizzato per effettuare Equi-join Lo stesso risultato si può ottenere con select <Attribui> e condizione opportuna where 14

Costrutto join (Per effettuare il prodotto cartesiano) Sintassi join: SELECT * FROM <Tabella1> JOIN <Tabella2>; Con l utilizzo del costrutto select * e, SELECT * FROM <Tabella1>,<Tabella2>; Con l utilizzo del costrutto Inner Join SELECT * FROM <Tabella1> INNER JOIN <Tabella2>; 15

Es: Costrutto join (Per effettuare il prodotto cartesiano) select * from paziente join visita; (vedi file 12-03-2009.txt riga 325) select * from paziente,visita; (vedi file 12-03-2009.txt riga 462) select * from paziente inner join visita; (vedi file 12-03-2009.txt riga 599) 16

Costrutto Inner join (Per effettuare il join semplice) Sintassi Inner join: SELECT * FROM <Tabella1> INNER JOIN <Tabella2> ON <Tabella1.Attributo> = <Tabella2.Attributo>; Con l utilizzo del costrutto select * e where SELECT * FROM <Tabella1>, <Tabella2> where <Tabella1.Attributo> = <Tabella2.Attributo>; 17

Es: Costrutto Inner join (Per effettuare il join semplice) select * from paziente inner join visita ON paziente.id_paziente=visita.id_paziente; (vedi file 12-03-2009.txt riga 738) select * from paziente, visita where paziente.id_paziente=visita.id_paziente; (vedi file 12-03-2009.txt riga 759) 18

Costrutto Natural join (Per effettuare Equi-join fra tabelle legate con chiave esterne) Sintassi Natural join: SELECT * FROM <Tabella1> NATURAL JOIN <Tabella2> ; Con l utilizzo del costrutto select <Attributi> e where SELECT <Attriuto1>, <Attributo2>,.<AttributoN> FROM <Tabella1>, <Tabella2> where <Tabella1.Attributo> = <Tabella2.Attributo>; 19

Es: Costrutto Natural join (Per effettuare Equi-join fra tabelle legate con chiave esterne) select * from paziente natural join visita; (vedi file 12-03-2009.txt riga 779) 20

Costrutto: INTERSECT (Per effettuare l operazione di INTERSEZIONE fra relazioni compatibili) Es: Consideriamo le seguenti due relazioni compatibili: REGISTA (CodRegista, Cognome, Nome) ATTORE (CodAttore, Cognome, Nome) Per ottenere una tabella che mi fornisca i registi che sono stati anche attori: (Select Cognome, Nome From REGISTA) INTERSECT (Select Cognome, Nome From ATTORE); Nota: Le parentesi sono obbligatorie 21

Costrutto: EXCEPT (Per effettuare l operazione di DIFFERENZA fra relazioni compatibili) Es: Consideriamo le seguenti due relazioni compatibili: REGISTA (CodRegista, Cognome, Nome) ATTORE (CodAttore, Cognome, Nome) Per ottenere una tabella che mi fornisca i registi che NON sono MAI stati attori: (Select Cognome, Nome From REGISTA) EXCEPT (Select Cognome, Nome From ATTORE); Nota: Le parentesi sono obbligatorie 22

Es: Costrutto: UNION (Per effettuare l operazione di UNIONE fra relazioni compatibili) Consideriamo le seguenti due relazioni compatibili: REGISTA (CodRegista, Cognome, Nome) ATTORE (CodAttore, Cognome, Nome) Per ottenere una tabella che mi fornisca TUTTI i registi e TUTTI gli attori: (Select Cognome, Nome From REGISTA) UNION (Select Cognome, Nome From ATTORE); Nota: Le parentesi sono obbligatorie 23

Funzioni di aggregazione In SQL vi sono alcune funzioni predefinite utili nelle circostanze in cui risulta necessario effettuare dei conteggi, somme, calcoli di medie o altro. COUT Effettua il CONTEGGIO delle tuple con eventualmente una restrizione sulle tuple data da condizioni su una o più colonne MIN Determina il valore MINIMO inserito all interno di una determinata colonna con eventualmente una restrizione sulle tuple data da condizioni su una o più colonne MAX Determina il valore MASSIMO inserito all interno di una determinata colonna con eventualmente una restrizione sulle tuple data da condizioni su una o più colonne SUM Determina il valore SOMMA dei dati di una determinata colonna con eventualmente una restrizione sulle tuple data da condizioni su una o più colonne AVG Determina LA MEDIA dei dati all interno di una determinata colonna con eventualmente una restrizione sulle tuple data da condizioni su una o più colonne 24

Funzioni di aggregazione COUT Effettua il CONTEGGIO delle tuple con eventualmente una restrizione sulle tuple data da condizioni su una o più colonne Es: select count(*) from paziente; Conteggio numero di tuple (vedi file 13-03-2009.txt riga 79) select count(*) from visita where PressMin<80; Con condizione PressMin<80 (vedi file 13-03-2009.txt riga 96) select count(*) from visita where PressMin<=60 And Peso<=80; Con condizione Composta (vedi file 13-03-2009.txt riga 114) select count(*) from paziente where DataNascita >="1970-01-01"; Con condizione su una data (vedi file 13-03-2009.txt riga 123) 25

Funzioni di aggregazione MIN Determina il valore MINIMO inserito all interno di una determinata colonna con eventualmente una restrizione sulle tuple data da condizioni su una o più colonne Es: select min(peso) from visita; Individua il minimo peso rilevato nelle varie visite (vedi file 13-03-2009.txt riga 148) select min(cognome) from paziente; Individua il minimo cognome (in ordine alfabetico) fra i vari pazienti (vedi file 13-03-2009.txt riga 156) select min(datanascita) from paziente; Individua la minima DataNascita (relativo al più anziano) fra i vari pazienti (vedi file 13-03-2009.txt riga 172) 26

Funzioni di aggregazione MAX Determina il valore MASSIMO inserito all interno di una determinata colonna con eventualmente una restrizione sulle tuple data da condizioni su una o più colonne Es: select max(peso) from visita; Individua il massimo peso rilevato nelle varie visite (vedi file 13-03-2009.txt riga 140) select max(cognome) from paziente; Individua il massimo cognome (in ordine alfabetico) fra i vari pazienti (vedi file 13-03-2009.txt riga 164) select max(datanascita) from paziente; Individua la massima DataNascita (relativo al più giovane) fra i vari pazienti (vedi file 13-03-2009.txt riga 180) 27

Funzioni di aggregazione SUM Determina il valore SOMMA dei dati di una determinata colonna con eventualmente una restrizione sulle tuple data da condizioni su una o più colonne Es: select sum(peso) from visita; Somma di tutti i pesi rilevati nelle varie visite (vedi file 13-03-2009.txt riga 132) 28

Funzioni di aggregazione AVG Determina LA MEDIA dei dati all interno di una determinata colonna con eventualmente una restrizione sulle tuple data da condizioni su una o più colonne Es: select avg(peso) from visita; Determina la media fra i vari pesi rilevati nelle varie visite (vedi file 13-03-2009.txt riga 188) select avg(peso) from visita where Altezza < 1.70; Determina la media fra i vari pesi rilevati relativamente alle visite dove si è rilevato un altzza<1,70 (vedi file 13-03-2009.txt riga 197) 29

Clausola di raggruppamento Le funzioni di aggregazione sono generalmente abbinate alla clausola di raggruppamento. Ci consente di raggruppare le tuple in funzione del valore che assumono in una determinata colonna. Inoltre con la clausola Having riusciamo a filtrare solo alcuni gruppi e scartarne altri. La clausola di raggruppamento viene inserita come ultima parte di un eventuale interrogazione. Sintassi: GROUP BY <Attributo1>,.<AttributoN> [Having <Condizione gruppo>] Es: vedi testo a pag. 113 30

Funzioni di Ordinamento In SQL vi sono alcune funzioni predefinite utili nelle circostanze in cui risulta necessario effettuare l ordinamento dei dati in ordine crescente o decrescente rispetto ai valori inseriti in una o più colonne, con eventualmente una restrizione sulle tuple data da opportune condizioni su una o più colonne Si tratta di operare su opportune tabelle ottenute secondo le varie esigenze e come ultima parte della query inserire l esigenza di ordinamento. L ultima parte dovrà essere scritta secondo la seguente sintassi: ORDER BY <Attributo1>[ASC DESC],.<AttributoN>[ASC DESC] ASC Ordinamento Crescente DESC Ordinamento Decrescente Qualora non si dovesse indicare [ASC DESC] di default viene inteso ASC 31

Es: Funzioni di Ordinamento select * from paziente order by cognome; Ordinamento delle tuple in base al cognome (Crescente AZ) (vedi file 13-03-2009.txt riga 206) select * from paziente order by cognome desc; Ordinamento delle tuple in base al cognome (Decrescente ZA) (vedi file 13-03-2009.txt riga 224) select * from paziente where Provincia = "MI order by cognome asc; Ordinamento delle tuple in base al cognome (Crescente AZ) dei pazienti che hanno come provincia di residenza MI (vedi file 13-03-2009.txt riga 243) 32

Funzioni di Ordinamento Es: select * from paziente order by CodAsl desc, Cognome desc; Ordinamento delle tuple prima in base al CodAsl (Decresente ZA) e fra quelli aventi lo stesso CodAsl, ordinati in base al cognome (Decresente ZA) (vedi file 13-03-2009.txt riga 254) select * from paziente order by CodAsl asc, Cognome asc; Ordinamento delle tuple prima in base al CodAsl (Crescente AZ) e fra quelli aventi lo stesso CodAsl, ordinati in base al cognome (Crescente AZ) (vedi file 13-03-2009.txt riga 272) select * from paziente where CodAsl = "A040" order by Cognome asc, Nome asc; Filtraggio delle sole tuple con CodAsl=A040 e queste proposte con Ordinamento delle tuple prima in base al Cognome (Crescente AZ) e fra quelli aventi lo stesso cognome, ordinati in base al Nome (Crescente AZ) (vedi file 13-03-2009.txt riga 292) 33

Interrogazioni e sottointerrogazioni annidate Per rispondere a query complesse è possibile strutturare opportunamente più comandi SELECT. Ciò consente di costruire un interrogazione al cui interno sono presenti altre interrogazioni, dette sottointerrogazioni o subquery. La query secondaria o anche detta sottoquery può essere un solo valore (tabella scalare) o una sola riga (con una sola colonne) o una tabella con più righe e più colonne. Spesso si preferisce dare un nuovo nome alla tabella derivante dalla sottoquery utilizzando la clausole AS Es: vedi testo a pag. 114 34

Interrogazioni e sottointerrogazioni annidate Per rispondere a query complesse è possibile strutturare opportunamente più comandi SELECT. Ciò consente di costruire un interrogazione al cui interno sono presenti altre interrogazioni, dette sottointerrogazioni o subquery. La query secondaria o anche detta sottoquery può essere un solo valore (tabella scalare) o una sola riga (con più colonne) o una tabella con più righe e più colonne. Spesso si preferisce dare un nuovo nome alla tabella derivante dalla sottoquery utilizzando la clausole AS Es: vedi testo a pag. 114 35

Conservazione dei risultati parziali A volte è necessario conservare in una opportuna nuova tabella i risultati di una interrogazione per successive interrogazioni. Per far questo occorre far precedere il comando Select dal comando Create Table seguito dal nome della nuova tabella che si vuole creare. La nuova tabella così creata entra a far parte del Database. Se possibile è sempre preferibile utilizzare il sistema dell annidamento piuttosto che creare tabelle aggiuntive. Es: vedi testo a pag. 115 36