La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "SQL Language Introduction Main features Standard Datatypes CREATE TABLE command INSERT, UPDATE and DELETE commands BETWEEN, LIKE, IN, IS NULL operators."— Transcript della presentazione:

1 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 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 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 4 SQL=DDL+DML+QL DDL QL DML SQL

5 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 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 -2 32 a 2 32 -1 - 4 byte) SMALLINTSmall IntegerSMALLINTIntero (da -2 16 a +2 16 -1 - 2 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 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 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 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 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 11 CREATE TABLE command CREATE TABLE is a DDL command because it creates a new table.

12 12 Il comando INSERT INTO Il comando INSERT INTO serve a inserire nuove righe nelle tabelle: INSERT INTO (nomecampo1, nomecampo2,…., nomecampoN) VALUES (valorecampo1,valorecampo2,valorecampoN); Ad esempio: INSERT INTO Impiegati (CodiceImpiegato,Cognome,Nome) VALUES (17,’Rossi’,’Mario’) Inserisce una nuova riga nella tabella ‘Impiegati’ dove il campo CodiceImpiegato è 17, Cognome è ‘Rossi’ e Nome è ‘Mario’

13 13 Il comando INSERT INTO I testi e le date devono essere delimitati dall’apice (ad es: ‘Rossi’ ) I numeri ed i valori logici (Sì e No) non devono essere delimitati dall’apice Ad esempio: INSERT INTO ANAGRAFICA (CodicePersona,Cognome,Nome,DataNascita,Sposato,Reddito) VALUES (24,’Verdi’,’Giuseppe’,’1970-10-27’,False,13500.85) La INSERT INTO è un comando di manipolazione di dati quindi è un comando DML.

14 14 Il comando UPDATE Il comando UPDATE permette di modificare una o più righe presenti in una tabella: UPDATE NomeTabella SET nomecampo1=NuovoValoreCampo1, Nomecampo2=NuovoValoreCampo2, … NomecampoN=NuovoValoreCampoN WHERE ElencoCondizioni

15 15 Il comando UPDATE: esempio 1/4 Ad es.: UPDATE ANAGRAFICA SET Reddito=19000.56, DataNascita='1980-12-31' WHERE ANAGRAFICA.CodicePersona=24; Modifica la tabella ANAGRAFICA mettendo nel campo Reddito il valore 19000.56 e nel campo DataNascita il valore '1980- 12-31‘ (31/12/1980) in tutte le righe che contengono CodicePersona uguale a 24.

16 16 Il comando UPDATE: esempio 2/4 Ad es.: UPDATE ANAGRAFICA SET DataNascita='1980-12-01' WHERE ANAGRAFICA.Reddito >= 1000; Modifica la tabella ANAGRAFICA mettendo nel campo DataNascita il valore '1980-12-01‘ (01/12/1980) in tutte le righe che contengono nel campo Reddito un valore maggiore uguale (>=) di 1000.

17 17 Il comando UPDATE: esempio 3/4 Ad es.: UPDATE ANAGRAFICA SET Sposato=True WHERE Cognome='Verdi' AND Nome='Giuseppe‘; Modifica la tabella ANAGRAFICA mettendo nel campo Sposato il valore True in tutte le righe che contengono contemporaneamente (AND) Cognome uguale a 'Verdi' e Nome uguale a 'Giuseppe'.

18 18 Il comando UPDATE: esempio 4/4 Ad es,: UPDATE ANAGRAFICA SET Sposato=True WHERE Cognome='Verdi' OR Nome='Giuseppe‘; Modifica la tabella ANAGRAFICA mettendo nel campo Sposato il valore True in tutte le righe che contengono Cognome uguale a 'Verdi' oppure (OR) Nome uguale a 'Giuseppe'.

19 19 Esercizio sulla UPDATE Esercizio: “Metti a 0,77 il prezzo dell’articolo con codice uguale a 55” CodiceArticoloDescrizionePrezzoCategoria 55Molletta mod. 780.90Mollette 771Tappo mod. Jessica0.23Tappi 13Chiodo a testa larga0.11Chiodi 61Chiodo a testa stretta0.09Chiodi ARTICOLO UPDATE ARTICOLO SET Prezzo=0.77 WHERE CodiceArticolo=55

20 20 Esercizio sulla UPDATE CodiceArticoloDescrizionePrezzoCategoria 55Molletta mod. 780.90Mollette 771Tappo mod. Jessica0.23Tappi 13Chiodo a testa larga0.11Chiodi 61Chiodo a testa stretta0.09Chiodi ARTICOLO CodiceArticoloDescrizionePrezzoCategoria 55Molletta mod. 780.77Mollette 771Tappo mod. Jessica0.23Tappi 13Chiodo a testa larga0.11Chiodi 61Chiodo a testa stretta0.09Chiodi UPDATE ARTICOLO SET Prezzo=0.77 WHERE CodiceArticolo=55

21 21 Il comando DELETE 1/2 Come cancellare una o più righe da una tabella? DELETE FROM WHERE ; Esempio: Cancella le righe in STUDENTI in cui COGNOME è uguale a ‘Williams’ DELETE FROM STUDENTI WHERE COGNOME=‘Williams’

22 22 Il comando DELETE 2/2 Esempio n.1: Cancella i clienti che risiedono a Bari Supponiamo di aver creato le seguente relazione: CLIENTI(CodiceCliente,RagioneSociale,Indirizzo,Cap,Città,Fatturato ) Esempio n.2: Cancella i clienti che risiedono a Bari e che hanno fatturato maggiore di 10000 euro DELETE FROM CLIENTI WHERE CITTA’=‘BARI’ DELETE FROM CLIENTI WHERE CITTA’=‘BARI’ AND FATTURATO > 10000

23 23 L’operatore BETWEEN Esempio: Cancella i clienti che hanno fatturato compreso tra 10000 e 40000 euro Senza operatore BETWEEN DELETE FROM CLIENTI WHERE FATTURATO>=10000 AND FATTURATO<=40000 Con operatore BETWEEN DELETE FROM CLIENTI WHERE FATTURATO BETWEEN 10000 AND 40000 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.

24 24 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 ‘*’.

25 25 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.’

26 26 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.’

27 27 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’

28 28 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

29 29 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 10000 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*'

30 30 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

31 31 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 10000 euro SELECT RagioneSociale,Indirizzo,Cap,Città FROM CLIENTI WHERE città=‘Bari’ and fatturato>10000

32 32 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

33 33 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

34 34 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 srl125.190,10F. Gancia s.a.s. Inchingolo snc45.300,00AutoRap s.n.c.

35 35 Le join interne Es. 2: elenca la ragione sociale, il fatturato, la ragione sociale del rappresentante dei clienti che hanno fatturato maggiore di 100.000 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 srl125.190,10F. Gancia s.a.s.

36 36 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 30.000 e 50.000 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 30000 AND 50000) AND CLIENTI.RagioneSociale LIKE ‘Inc*’ ORDER BY CLIENTI.RagioneSociale ASC; CLIENTI.RagioneSocialeCLIENTI.FatturatoRAPPRESENTANTI.RagioneSociale Inchingolo snc45.300,00AutoRap s.n.c.

37 37 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.

38 38 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.

39 39 Π ( ( 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

40 40 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

41 41 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 2008. 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 #2008-07-01# AND #2008-12-31#

42 42 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 #2008-07-01# AND #2008-12-31#

43 43 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 > #2009-01-01# ORDER BY FATTURE.datafattura asc,PRODOTTI.nomeprodotto ASC, VOCIFATTURE.quantità desc

44 44 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 > #2009-01-01# ORDER BY FATTURE.datafattura asc,PRODOTTI.nomeprodotto ASC, VOCIFATTURE.quantità desc

45 45 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

46 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 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

47 47 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

48 48 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

49 49 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

50 50 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

51 51 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

52 52 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

53 53 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 > #2008-07-01# SQL standard e SQL di Access a confronto

54 54 Le join interne CodClienteRagioneSocialeFatturatoCodRap 34 Autostar srl125.190,102 56 Inchingolo snc45.300,0071 189 LaRapida sas30.160,59 CodRapprRagioneSocialeZonaDataInizio 2F. Gancia s.a.s.SUD12/10/2000 89Detersivi M2 sncEST08/07/1997 71AutoRap 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 srl125.190,10F. Gancia s.a.s. Inchingolo snc45.300,00AutoRap s.n.c.

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

56 56 La left-join CodClienteRagioneSocialeFatturatoCodRap 34 Autostar srl125.190,102 56 Inchingolo snc45.300,0071 189 LaRapida sas30.160,59 CodRapprRagioneSocialeZonaDataInizio 2F. Gancia s.a.s.SUD12/10/2000 89Detersivi M2 sncEST08/07/1997 71AutoRap 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 srl125.190,10F. Gancia s.a.s. Inchingolo snc45.300,00AutoRap s.n.c. LaRapida sas30.160,59

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

58 58 La right-join CodClienteRagioneSocialeFatturatoCodRap 34 Autostar srl125.190,102 56 Inchingolo snc45.300,0071 189 LaRapida sas30.160,59 CodRapprRagioneSocialeZonaDataInizio 2F. Gancia s.a.s.SUD12/10/2000 89Detersivi M2 sncEST08/07/1997 71AutoRap 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

59 59 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


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

Presentazioni simili


Annunci Google