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