SQL Language Introduction Main features Standard Datatypes CREATE TABLE command INSERT, UPDATE and DELETE commands BETWEEN, LIKE, IN, IS NULL operators.

Slides:



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

TIPI STANDARD DI SQL BOOLEAN Valori: vero, falso CHAR(n)
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)
Sviluppo di programmi strutturati
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.
DML – Data Manipulation Language
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
1 SQL come linguaggio di definizione di dati Eugenio Di Sciascio.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
SCUOLA INTERUNIVERSITARIA SICILIANA DI SPECIALIZZAZIONE PER LINSEGNAMENTO SECONDARIO Classe di Concorso: 42A Massimo Mancino MODULO DIDATTICO - Ambienti.
SQL.
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 IT FOR BUSINESS AND FINANCE ACCESS INTRODUCTION.
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,
Laboratorio di Basi di Dati Introduzione ad Access 2ª Parte.
Basi di dati Università Degli Studi Parthenope di Napoli
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.
Equivalenza di espressioni
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
SQL SQL (pronunciato anche come l’inglese sequel) è l’acronimo di Structured Query Language (linguaggio di interrogazione strutturato) E’ un linguaggio.
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.
Basi di dati Claudia Raibulet
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:
sql: esempi di linguaggio sql nell'implementazione mysql
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre Utenti e privilegi del database - 1 Root è lutente amministratore predefinito, ma.
Informatica II – Basi di Dati (07/08) – Parte 2 Gianluca Torta Dipartimento di Informatica dell’Università di Torino
SEFOC – SETTORE FORMAZIONE CONTINUA DEL PERSONALE CORSO MYSQL AVANZATO ROBERTO PENNOLINO – CARMELO MASSIMO PRIOLO PALERMO – 07 | 06 | 2011.
Microsoft Access Query (II), filtri.
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.
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
1 Basi di Dati S tructured Q uery L anguage Appunti Matteo Longhi.
Interrogazioni (parte 2)
Esercizio ODBC. Configurare il driver ODBC Start  Control Panel  Administrative Tools Aprire: Data Source(ODBC) User DSN  Add…. Selezionare il driver.
SQL (III) Data Definition Language/ Data Manipulation Language.
MySQL Database Management System
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
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.
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.
© 2015 Giorgio Porcu - Aggiornamennto 28/03/2015 UdA 1A Database Progettazione Fisica G IORGIO P ORCU
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.
Approfondimenti SQL.
Basi di Dati e Sistemi Informativi Esercitazione: Il Linguaggio SQL (DDL+DML) Home page del corso:
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.
SQL Linguaggio per l’interrogazione di una base dati.
SQL Language Introduction Main features Standard Datatypes CREATE TABLE command INSERT, UPDATE and DELETE commands BETWEEN, LIKE, IN, IS NULL operators.
Access Breve introduzione. Componenti E’ possibile utilizzare Access per gestire tutte le informazioni in un unico file. In un file di database di Access.
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.
Studente : Andrea Cassarà Classe: 5AII A.S. 2014/2015 Link Sito
Transcript della presentazione:

SQL Language Introduction Main features Standard Datatypes CREATE TABLE command INSERT, UPDATE and DELETE commands BETWEEN, LIKE, IN, IS NULL operators and NOT connective SELECT command

2 Introduction to SQL SQL (Structured Query Language) is a language for relational databases management (RDBMS) created in the early 1970s by two IBM researchers: Donald D. Chamberlin and Raymond F. Boyce Donald. RDBMS as Relational Database Management System

3 SQL=DDL+DML+QL SQL contains all commands belonging to RDBMS languages: DDL (Data Definition Language) to create new databases and to create/modify relationships schemas. DML (Data Manipulation Language) to manipulate (to insert, update and delete) data contained into relationships QL (Query Language) to search for data into databases.

4 SQL=DDL+DML+QL DDL QL DML SQL

5 SQL Identifiers SQL identifiers (table names e table fields) consist of a sequence of maximum 18 characters starting with a letter containing (and not starting with) ‘_’ (underscore) symbol. A field identifier format is the following: TableName.FieldName For example: STUDENTS.StudentID indicates that StudentID belongs to STUDENTS relationship.

6 Standard SQL DataTypes SQL StandardDescriptionSQL MS ACCESSMS ACCESS BOOLEANBoolean valueBITSì/No CHAR(n)N chars maximum textCHAR(n)Testo (max 255 chars) DATEDate GG/MM/AAAADATEData/Ora TIMETime with format HH:MM:ssTIMEData/Ora INTEGER(p)p-precision ItegerINT or INTEGERIntero lungo (da a byte) SMALLINTSmall IntegerSMALLINTIntero (da a byte) DECIMAL / NUMERIC Long Decimal NumberREALSingle (single precision – 4 byte) FLOATNumero floating pointFLOATDouble (double precision – 8 byte) --CounterCOUNTER o AUTOINCREMENT Numerazione automatica --Monetary amountCURRENCYValuta

7 CREATE TABLE command This command creates a new table. The syntax is: CREATE TABLE (, …, PRIMARY KEY ( ) ); NOT NULL= mandatory (In MS Access, Richiesto=Sì) NULL = not mandatory (In MS Access, Richiesto=No)

8 CREATE TABLE command For example, the following command creates a new table named PHONES containing the following fields: PhoneID (PK), Brand (mandatory) e Model (mandatory): CREATE TABLE PHONES ( PhoneID INTEGER, Brand CHAR(20) NOT NULL, Model CHAR(20) NOT NULL, PRIMARY KEY (PhoneID) ); NOT NULL= mandatory (In MS Access, Richiesto=Sì) NULL = not mandatory (In MS Access, Richiesto=No)

9 CREATE TABLE command The Foreign key is declared as shown: CREATE TABLE (, …, PRIMARY KEY ( ), FOREIGN KEY ( ) REFERENCES ( ) ); NOT NULL= mandatory (In MS Access, Richiesto=Sì) NULL = not mandatory (In MS Access, Richiesto=No)

10 CREATE TABLE command The following example creates a new table named PHONES where ProducerID field is foreign key towards la tabella PRODUCERS table which has ID as primary key: CREATE TABLE PHONES ( PhoneID INTEGER, Model CHAR(20) NOT NULL, ProducerID INTEGER, PRIMARY KEY (PhoneID), FOREIGN KEY (ProducerID) REFERENCES PRODUCERS(ID) );

11 CREATE TABLE command CREATE TABLE is a DDL command because it creates a new table.

SQL DML statements INSERT INTO statement UPDATE statement DELETE statement 12

13 INSERT INTO statement INSERT INTO statement adds new rows into an existing table. The command syntax is: INSERT INTO (field1, field2,….,fieldN) VALUES (fieldvalue1,fieldvalue2,…,fieldvalueN); For example: INSERT INTO Employees (EmployeeID,Surname,Name) VALUES (17,’Rossi’,’Mario’) Adds a new row into the Employees table where EmployeeID value is 17, Surname value is ‘Rossi’ and Name value is ‘Mario’.

14 INSERT INTO statement CHAR() and DATE datatypes must be delimitated by single quotation mark ‘’’ (for ex.: ‘ Rossi ’ ) Numbers and boolean values (True/False) must not be delimitated by any symbol The numbers format uses dot symbol (‘.’) as decimal separator. For example: INSERT INTO PERSON_DETAILS (PersonID,Surname,Name,BirthDate,Married,Incomes) VALUES (24,’Verdi’,’Giuseppe’,’ ’,False, ) INSERT INTO is DML command because adds new data so it manipulates data.

15 UPDATE statement The UPDATE statement is used to update one or more existing rows in a table: UPDATE SET =, =, … = WHERE

16 Exercise on UPDATE statement Exercise: “Update the price to 0,77 for the items with id equal to 55” ItemIDDescriptionPriceCategory 55Clothespin mod Clothespins 771Bottle cap mod. Jessica0.23Bottle Caps 13Large-head Nails0.11Nails 61Small-head Nails0.09Nails ITEMS UPDATE ITEMS SET Price=0.77 WHERE ItemID=55

17 Exercise on UPDATE statement ARTICOLO ItemIDDescriptionPriceCategory 55Clothespin mod Clothespins 771Bottle cap mod. Jessica0.23Bottle Caps 13Large-head Nails0.11Nails 61Small-head Nails0.09Nails ItemIDDescriptionPriceCategory 55Clothespin mod Clothespins 771Bottle cap mod. Jessica0.23Bottle Caps 13Large-head Nails0.11Nails 61Small-head Nails0.09Nails UPDATE ITEMS SET Price=0.77 WHERE ItemID=55

18 UPDATE statement: example 1/4 Example 1 UPDATE PERSON_DETAILS SET Incomes= ,BirthDate=' ' WHERE PERSON_DETAILS.PersonID=24; It updates PERSON_DETAILS table by changing Incomes value to and BirthDate value to ' ‘ in all rows containing PersonID equal to 24.

19 UPDATE statement: example 2/4 Example 2: Update PERSON_DETAILS table by changing the BirthDate in valore ' ’ in all rows with Incomes greater or equal to UPDATE PERSON_DETAILS SET BirthDate=' ' WHERE PERSON_DETAILS.Incomes>=1000;

20 UPDATE statement: example 3/4 Example 3: Update PERSON_DETAILS table by setting the Married to True in all rows with surname equal to 'Verdi' and Name equal to 'Giuseppe'. UPDATE PERSON_DETAILS SET Married=True WHERE Surname='Verdi' AND Name='Giuseppe';

21 UPDATE statement: example 4/4 Example 4: Update PERSON_DETAILS table by setting the Married value to False in all rows with Surname equal to 'Verdi' or Name equal to 'Giuseppe'. UPDATE PERSON_DETAILS SET Married=False WHERE Surname='Verdi' OR Name='Giuseppe';

22 The DELETE statement The DELETE statement is used to delete rows in a table. DELETE FROM WHERE ; Example: Delete rows from STUDENTS table where Surname is equal to ‘Williams’ DELETE FROM STUDENTS WHERE Surname=‘Williams’

23 DELETE statement examples Example #1: Delete the customers which live in Bari Starting from the following CUSTOMERS table: CUSTOMERS(ID,CompanyName,Address,ZipCode,City,Revenues) Example #2: Delete the customers which live in Bari with revenues greater than euro DELETE FROM CUSTOMERS WHERE City=‘BARI’ DELETE FROM CUSTOMERS WHERE City=‘BARI’ AND REVENUES > 10000

24 L’operatore BETWEEN Esempio: Cancella i clienti che hanno fatturato compreso tra e euro Senza operatore BETWEEN DELETE FROM CLIENTI WHERE FATTURATO>=10000 AND FATTURATO<=40000 Con operatore BETWEEN DELETE FROM CLIENTI WHERE FATTURATO BETWEEN AND La clausola BETWEEN traduce il ‘compreso tra’ e sostituisce la condizione più complessa ‘ valore1<=x<=valore2 ’. L’operatore si può usare con la UPDATE, DELETE ed i comandi QL.

25 L’operatore LIKE 1/3 Esempi di uso del simbolo jolly Se ho tre parole, ad esempio: CAVALLO, CAVALIERE e STALLIERE 1.L’espressione ‘CAV*’ estrae CAVALLO e CAVALLIERE 2.L’espressione ‘*LIERE’ estrae CAVALIERE E STALLIERE e non CAVALLO 3.L’esperessione ‘C*LIERE’ estrae solo CAVALIERE La clausola LIKE è usata nelle condizioni per indicare come inizia e come finisce un testo. L’operatore si può usare con la UPDATE, la DELETE ed i comandi QL. Il simbolo che viene usato (detto simbolo jolly) è l’asterisco ‘*’.

26 L’operatore LIKE 2/3 Esempio n.1: Cancella i clienti con ragione sociale che inizia con ‘LOS’ DELETE FROM CLIENTI WHERE RagioneSociale LIKE ‘LOS*’ Esempio n.2: Cancella i clienti con ragione sociale che finisce con ‘s.r.l.’ DELETE FROM CLIENTI WHERE RagioneSociale LIKE ‘*s.r.l.’

27 L’operatore LIKE 3/3 Esempio n.3: Cancella i clienti con ragione sociale che inizia con ‘LOS’ e finisce con ‘s.p.a.’ DELETE FROM CLIENTI WHERE RagioneSociale LIKE ‘LOS*s.p.a.’

28 L’operatore IN L’operatore IN serve a rendere più sintetico un enunciato composto da più OR su uno stesso campo. L’operatore si può usare nella clausola WHERE (UPDATE, DELETE e QL). Ad esempio: Cancella i clienti che risiedono a Bari oppure a Torino oppure a Trieste Con operatore IN DELETE FROM CLIENTI WHERE Città IN (‘Bari’,’Torino’,’Trieste’) Senza operatore IN DELETE FROM CLIENTI WHERE Città=‘Bari’ or Città=‘Torino’ or Città=‘Trieste’

29 L’operatore IS NULL L’operatore IS NULL indica che si vuole considerare il valore nullo in un certo campo. L’operatore si può usare nella clausola WHERE (UPDATE, DELETE e QL). Esempio 1 Cancella i clienti per i quali non è indicata la città di residenza DELETE FROM CLIENTI WHERE Città IS NULL Esempio 2 Cancella i clienti per i quali è indicata la città di residenza DELETE FROM CLIENTI WHERE Città IS NOT NULL

30 Il connettivo NOT Il connettivo NOT corrisponde al connettivo booleano della negazione e lo si può usare nella clausola WHERE (UPDATE, DELETE e QL). Esempio 1...WHERE NOT Fatturato>10000 Considera tutte le righe in cui il fatturato NON è maggiore di Esempio 2...WHERE NOT (FATTURATO<10000 AND RAGIONESOCIALE LIKE 'Cart*') Considera le righe nelle quali NON è verificata la condizione FATTURATO<10000 AND RAGIONESOCIALE LIKE 'Cart*'

31 Il comando SELECT Il comando SQL rappresenta il comando di interrogazione (QL). Implementa sia l’operatore di proiezione che di selezione. SELECT,,..., FROM WHERE Esempio 1: Elenca tutti i clienti SELECT * FROM CLIENTI * = estrae tutti i campi della tabella CLIENTI Se la clausola WHERE non è presente significa che vengono selezionate tutte le righe della tabella

32 Il comando SELECT Esempio 2: Elenca la ragione sociale, l’indirizzo, il cap e la città di tutti i clienti SELECT RagioneSociale,Indirizzo,Cap,Città FROM CLIENTI Esempio 3: Elenca la ragione sociale e la città dei clienti che risiedono a Bari ed il fatturato è maggiore di euro SELECT RagioneSociale,Indirizzo,Cap,Città FROM CLIENTI WHERE città=‘Bari’ and fatturato>10000

33 Il comando SELECT: ordinamento L’ordinamento crescente (ASC) nella SELECT Esempio 4: Elenca la ragione sociale ed il fatturato dei clienti ordinati in modo crescente per ragione sociale SELECT RagioneSociale,fatturato FROM CLIENTI ORDER BY RagioneSociale asc L’ordinamento decrescente (DESC) nella SELECT Esempio 5: Elenca la ragione sociale ed il fatturato dei clienti ordinati per fatturato in modo decrescente SELECT RagioneSociale,fatturato FROM CLIENTI ORDER BY fatturato desc

34 Le join interne Le join interne (equi-join e natural-join) si traducono facendo il prodotto cartesiano tra le due tabelle ed imponendo la condizione di join sugli attributi comuni. SELECT FROM, WHERE

35 Le join interne Es. 1: elenca la ragione sociale, il fatturato, la ragione sociale e la zona del rappresentante di tutti i clienti SELECT CLIENTI.RagioneSociale,CLIENTI.Fatturato, RAPPRESENTANTI.RagioneSociale FROM CLIENTI, RAPPRESENTANTI WHERE CLIENTI.CodRap=RAPPRESENTANTI.CodRappr CLIENTI.RagioneSocialeCLIENTI.FatturatoRAPPRESENTANTI.RagioneSociale Autostar srl ,10F. Gancia s.a.s. Inchingolo snc45.300,00AutoRap s.n.c.

36 Le join interne Es. 2: elenca la ragione sociale, il fatturato, la ragione sociale del rappresentante dei clienti che hanno fatturato maggiore di euro ordinati per la ragione sociale del cliente in modo crescente SELECT CLIENTI.RagioneSociale, CLIENTI.Fatturato, RAPPRESENTANTI.RagioneSociale FROM CLIENTI, RAPPRESENTANTI WHERE (CLIENTI.CodRap=RAPPRESENTANTI.CodRappr) AND (CLIENTI.Fatturato>100000) ORDER BY CLIENTI.RagioneSociale ASC; CLIENTI.RagioneSocialeCLIENTI.FatturatoRAPPRESENTANTI.RagioneSociale Autostar srl ,10F. Gancia s.a.s.

37 Le join interne Es. 3: elenca la ragione sociale, il fatturato, la ragione sociale del rappresentante dei clienti che hanno ragione sociale che inizia con ‘Inc’ oppure fatturato compreso tra e euro ordinati per la ragione sociale del cliente in modo crescente SELECT CLIENTI.RagioneSociale, CLIENTI.Fatturato, RAPPRESENTANTI.RagioneSociale FROM CLIENTI, RAPPRESENTANTI WHERE (CLIENTI.CodRap=RAPPRESENTANTI.CodRappr) AND (CLIENTI.Fatturato BETWEEN AND 50000) AND CLIENTI.RagioneSociale LIKE ‘Inc*’ ORDER BY CLIENTI.RagioneSociale ASC; CLIENTI.RagioneSocialeCLIENTI.FatturatoRAPPRESENTANTI.RagioneSociale Inchingolo snc45.300,00AutoRap s.n.c.

38 Le join multiple Ci possono essere casi in cui i dati richiesti sono presenti in tabelle che non sono direttamente associate. Ad es. A partire dalle relazioni FATTURE(codfattura,datafattura,cliente) VOCIFATTURE(codfattura,codprodotto,quantità,prezzo) PRODOTTI(codprodotto,nomeprodotto) si vuole ottenere per ogni nome del prodotto, i corrispondenti codici e date delle fatture.

39 Le join multiple1/3 Supponiamo di avere le seguenti relazioni: FATTURE(codfattura,datafattura,cliente) VOCIFATTURE(codfattura,codprodotto,quantità,prezzo) PRODOTTI(codprodotto,nomeprodotto) e di voler associare ad ogni ad ogni prodotto i corrispondenti codice della fattura ed data della fattura.

40 Π ( ( PRODOTTI > < FATTURE ) codprodotto codfattura PRODOTTI.Nomeprodotto, VOCIFATTURE.Codfattura, FATTURE.DataFattura In SQL: SELECT PRODOTTI.nomeprodotto, VOCIFATTURE.codfattura, FATTURE.datafattura FROM ( (PRODOTTI INNER JOIN VOCIFATTURE ON PRODOTTI.codprodotto = VOCIFATTURE.codprodotto) INNER JOIN FATTURE ON VOCIFATTURE.codfattura = FATTURE.codfattura) In pseudocodifica: Le join multiple2/3

41 Oppure nel modo seguente (usando il prodotto cartesiano, solo per inner-join): SELECT PRODOTTI.nomeprodotto, VOCIFATTURE.codfattura, FATTURE.datafattura FROM PRODOTTI,VOCIFATTURE,FATTURE WHERE PRODOTTI.codprodotto = VOCIFATTURE.codprodotto AND (VOCIFATTURE.codfattura = FATTURE.codfattura) Π ( ( PRODOTTI > < FATTURE ) codprodotto codfattura PRODOTTI.Nomeprodotto, VOCIFATTURE.Codfattura, FATTURE.DataFattura Le join multiple3/3

42 Esempio di query con join Esempio 1: elencare il nome,la quantità acquistata, il prezzo di acquisto dei prodotti, la data della fattura ed il nome del cliente, in cui l’acquisto è stato effettuato nel secondo semestre del In SQL: SELECT PRODOTTI.nomeprodotto,VOCIFATTURE.quantità, VOCIFATTURE.prezzo, FATTURE.datafattura,FATTURE.cliente FROM ( (PRODOTTI INNER JOIN VOCIFATTURE ON PRODOTTI.codprodotto = VOCIFATTURE.codprodotto) INNER JOIN FATTURE ON VOCIFATTURE.codfattura = FATTURE.codfattura ) WHERE FATTURE.datafattura BETWEEN # # AND # #

43 Esempi di query con join...Oppure, usando il prodotto cartesiano: SELECT PRODOTTI.nomeprodotto,VOCIFATTURE.quantità, VOCIFATTURE.prezzo, FATTURE.datafattura,FATTURE.cliente FROM PRODOTTI,VOCIFATTURE,FATTURE WHERE PRODOTTI.codprodotto = VOCIFATTURE.codprodotto AND VOCIFATTURE.codfattura = FATTURE.codfattura AND FATTURE.datafattura BETWEEN # # AND # #

44 Esempi di query con join multiple ed ordinamento composto Esempio 2: elencare il nome,la quantità acquistata, il prezzo di acquisto dei prodotti, la data della fattura, in cui l’acquisto è stato effettuato dal cliente ‘Mario Rossi’ dopo il 01/01/2009. Ordinare tale elenco per data fattura (in modo crescente), per nome prodotto (in modo crescente) e per quantità (in modo decrescente). In SQL: SELECT FATTURE.datafattura, PRODOTTI.nomeprodotto, VOCIFATTURE.quantità,VOCIFATTURE.prezzo FROM ( (PRODOTTI INNER JOIN VOCIFATTURE ON PRODOTTI.codprodotto = VOCIFATTURE.codprodotto) INNER JOIN FATTURE ON VOCIFATTURE.codfattura = FATTURE.codfattura ) WHERE FATTURE.cliente=‘Mario Rossi’ AND FATTURE.datafattura > # # ORDER BY FATTURE.datafattura asc,PRODOTTI.nomeprodotto ASC, VOCIFATTURE.quantità desc

45 Esempi di query con join multiple ed ordinamento composto....Oppure usando il prodotto cartesiano: SELECT FATTURE.datafattura, PRODOTTI.nomeprodotto, VOCIFATTURE.quantità,VOCIFATTURE.prezzo FROM PRODOTTI,VOCIFATTURE,FATTURE WHERE PRODOTTI.codprodotto = VOCIFATTURE.codprodotto AND VOCIFATTURE.codfattura = FATTURE.codfattura AND FATTURE.cliente=‘Mario Rossi’ AND FATTURE.datafattura > # # ORDER BY FATTURE.datafattura asc,PRODOTTI.nomeprodotto ASC, VOCIFATTURE.quantità desc

46 Quando una query viene eseguita all’interno di un’altra si parla di query nidificata. Esempio 1: elencare i prodotti che sono stati fatturati Le query nidificate

47 Quando una query viene eseguita all’interno di un’altra si parla di query nidificata. Esempio 1: elencare i prodotti che sono stati fatturati SELECT codprodotto, nomeprodotto FROM PRODOTTI WHERE codprodotto IN (SELECT codprodotto FROM VOCIFATTURE) 1.La query SELECT codprodotto FROM VOCIFATTURE è la query che viene eseguita per prima (quindi detta sottoquery) e fornisce l’elenco dei codici dei prodotti che sono stati fatturati 2.l’operatore IN verifica per ogni prodotto che il codice sia presente nel precedente elenco Le query nidificate

48 Esempio 2: elencare i prodotti che non sono stati ancora fatturati SELECT codprodotto, nomeprodotto FROM PRODOTTI WHERE codprodotto NOT IN (SELECT codprodotto FROM VOCIFATTURE) Le query nidificate

49 L’operatore di Aliasing permette di rinominare un campo oppure assegnare un nome ad un campo calcolato o ad una sottoquery. SELECT CLIENTI.RagioneSociale,CLIENTI.Fatturato, RAPPRESENTANTI.RagioneSociale AS RsRappresentante FROM CLIENTI INNER JOIN RAPPRESENTANTI ON CLIENTI.CodRap=RAPPRESENTANTI.CodRappr Rinomina il campo ragionesociale di RAPPRESENTANTI con RsRappresentante L’aliasing

50 Con join multiple non omogenee si intendono quelle query composte da più join di tipo diverso (left-join, inner-join, right-join). Ad esempio la seguente pseudo-query Le join multiple non omogenee si può tradurre nel modo seguente usando una sottoquery con aliasing SELECT PRODOTTI.Nomeprodotto,VOCIFATTURE.Codfattura, FATTURE.DataFattura FROM ( (SELECT * FROM PRODOTTI LEFT JOIN VOCIFATTURE ON PRODOTTI.CodProdotto = VOCIFATTURE.CodProdotto) AS V LEFT JOIN FATTURE ON V.CodFattura = FATTURE.CodFattura) Π ( ( PRODOTTI > < FATTURE ) codprodotto codfattura PRODOTTI.Nomeprodotto, VOCIFATTURE.Codfattura, FATTURE.DataFattura LEFT

51 Esempio 1: Elencare il codice del prodotto, la quantità, il prezzo dei prodotti della fattura di codice ‘189/99’ e calcolare per ognuno di essi il totale parziale. SELECT CodiceFattura,Quantità,Prezzo, (Quantità*Prezzo) as TotaleParziale FROM VOCIFATTURE WHERE CodiceFattura=‘189/99’ I campi calcolati1/2

52 Esempio 2: Elencare il codice del prodotto, il nome del prodotto,la quantità, il prezzo dei prodotti della fattura di codice ‘189/99’. Calcolare per ognuno di essi il totale parziale con IVA al 20% ed ordinarli per nome prodotto in modo descrescente. SELECT VOCIFATTURE.CodiceFattura,PRODOTTI.NomeProdotto, VOCIFATTURE.Quantità, VOCIFATTURE.Prezzo, ((Quantità*Prezzo)*120/100) as TotaleParziale FROM VOCIFATTURE INNER JOIN PRODOTTI ON VOCIFATTURE.CodiceProdotto=PRODOTTI.CodiceProdotto WHERE CodiceFattura=‘189/99’ ORDER BY PRODOTTI.NomeProdotto desc I campi calcolati 2/2

53 Le query parametriche sono quelle query in cui alcuni dati di ricerca sono richiesti all’utente al momento dell’esecuzione delle query stesse. Il parametro viene indicato con una frase delimitata da parentesi quadre nel punto in cui è necessario. Esempio 1: Elencare il codice, la data ed il cliente delle fatture emesse dopo una certa data. La data non è specificata nell’esempio, ma deve essere decisa dall’utente SELECT CodiceFattura,Datafattura,Cliente FROM FATTURE WHERE DataFattura > [Inserire la data] Le query parametriche

54 1.Il tipo di dato Contatore (AutoNumber) in SQL di Access si traduce con COUNTER o AUTOINCREMENT CODSTUDENTE COUNTER oppure CODSTUDENTE AUTOINCREMENT 2.Il tipo di dato Importo (Currency) in SQL di Access si traduce con MONEY o CURRENCY Importo MONEY oppure Importo CURRENCY 3.Una data nella clausola WHERE deve essere delimitata dai cancelletti (‘#’) DataFattura > # # SQL standard e SQL di Access a confronto

55 Le join interne CodClienteRagioneSocialeFatturatoCodRap 34 Autostar srl , Inchingolo snc45.300, LaRapida sas30.160,59 CodRapprRagioneSocialeZonaDataInizio 2F. Gancia s.a.s.SUD12/10/ Detersivi M2 sncEST08/07/ AutoRap s.n.c.NORD11/04/1995 CLIENTI RAPPRESENTANTI Esempio 6: Elenca la ragione sociale ed il fatturato dei clienti ed i relativi nomi dei rappresentanti SELECT CLIENTI.RagioneSociale,CLIENTI.Fatturato, RAPPRESENTANTI.RagioneSociale FROM CLIENTI INNER JOIN RAPPRESENTANTI ON CLIENTI.CodRap=RAPPRESENTANTI.CodRappr CLIENTI.RagioneSocialeCLIENTI.FatturatoRAPPRESENTANTI.RagioneSociale Autostar srl ,10F. Gancia s.a.s. Inchingolo snc45.300,00AutoRap s.n.c.

56 La left-join La left-join si traduce nel modo seguente: SELECT FROM LEFT JOIN ON

57 La left-join CodClienteRagioneSocialeFatturatoCodRap 34 Autostar srl , Inchingolo snc45.300, LaRapida sas30.160,59 CodRapprRagioneSocialeZonaDataInizio 2F. Gancia s.a.s.SUD12/10/ Detersivi M2 sncEST08/07/ AutoRap s.n.c.NORD11/04/1995 CLIENTI RAPPRESENTANTI Esempio 7: Elenca la ragione sociale ed il fatturato dei clienti ed i relativi nomi dei rappresentanti SELECT CLIENTI.RagioneSociale,CLIENTI.Fatturato, RAPPRESENTANTI.RagioneSociale FROM CLIENTI LEFT JOIN RAPPRESENTANTI ON CLIENTI.CodRap=RAPPRESENTANTI.CodRappr CLIENTI.RagioneSocialeCLIENTI.FatturatoRAPPRESENTANTI.RagioneSociale Autostar srl ,10F. Gancia s.a.s. Inchingolo snc45.300,00AutoRap s.n.c. LaRapida sas30.160,59

58 La right-join La right-join si traduce nel modo seguente: SELECT FROM RIGHT JOIN ON

59 La right-join CodClienteRagioneSocialeFatturatoCodRap 34 Autostar srl , Inchingolo snc45.300, LaRapida sas30.160,59 CodRapprRagioneSocialeZonaDataInizio 2F. Gancia s.a.s.SUD12/10/ Detersivi M2 sncEST08/07/ AutoRap s.n.c.NORD11/04/1995 CLIENTI RAPPRESENTANTI Esempio 7: Elenca la ragione sociale e la zona dei rappresentanti e le ragioni sociali dei relativi clienti SELECT CLIENTI.RagioneSociale,RAPPRESENTANTI.RagioneSociale, RAPPRESENTANTI.Zona FROM CLIENTI RIGHT JOIN RAPPRESENTANTI ON CLIENTI.CodRap=RAPPRESENTANTI.CodRappr CLIENTI.RagioneSocialeRAPPRESENTANTI.RagioneSocialeRAPPRESENTANTI.Zona Autostar srlF. Gancia s.a.s.SUD Detersivi M2 sncEST Inchingolo sncAutoRap s.n.c.NORD

60 La full-join La right-join si traduce nel modo seguente: SELECT FROM FULL JOIN ON La full join non è realizzabile con il comando SQL ma attraverso l’unione insiemistica tra la left-join e la right-join