La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:

Presentazioni simili


Presentazione sul tema: "Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:"— Transcript della presentazione:

1 Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/

2 Il Linguaggio SQL SQL ( Structured Query Language ) e il linguaggio di riferimento per le basi di dati relazionali. Diverse versioni del linguaggio: SQL-86 Costrutti base SQL-89 Integrita referenziale SQL-92 (SQL2) Modello relazionale, struttura a livelli SQL:1999 (SQL3) Modello ad oggetti SQL:2003 (SQL3) Nuove parti: SQL/JRT, SQL/XML SQL:2006 (SQL3) Estensione di SQL/XML SQL:2008 (SQL3) Lievi aggiunte

3 Il Linguaggio SQL Due componenti principali: DDL ( Data Definition Language ) Contiene i costrutti necessari per la creazione/modifica dello schema della base di dati. DML ( Data Manipulation Language ) Contiene i costrutti per le interrogazioni e di inserimento/eliminazione/modifica di dati.

4 Il Linguaggio SQL Due componenti principali: DDL ( Data Definition Language ) Contiene i costrutti necessari per la creazione/modifica dello schema della base di dati. DML ( Data Manipulation Language ) Contiene i costrutti per le interrogazioni e di inserimento/eliminazione/modifica di dati.

5 SQL: DML MatricolaNomeCognomeDataNascita 4566MarcoRossi3/5/1989 4678MicheleBianchi2/5/1989 4900AntonioRossi14/3/1990 STUDENTI NomeCognome MicheleBianchi Esempio di interrogazione ( query ) Recuperare nome e cognome dello studente con numero di matricola pari a 4678…

6 Le operazioni di interrogazione vengono implementate dal costrutto di select. select Attributo 1, … Attributo M from Tabella 1, …,Tabella N where Condizione SQL: DML SEMANTICA : Effettua il prodotto cartesiano delle Tabella 1,.., Tabella N. Da queste, estrai le righe che rispettano la Condizione. Di questultime, preleva solo le colonne corrispondenti a: Attributo 1, …,Attributo M.

7 SQL: DML Attributo 1 …Attributo i …Attributo j …. Attributo m TABELLA Nel caso di una sola tabella: select Attributo i, Attributo j, … Attributo m from Tabella where Condizione e1e1 e2e2 e4e4 e3e3 STEP1 : Si selezionano le ennuple della tabella che soddisfano la condizione …

8 SQL: DML Attributo 1 …Attributo i …Attributo j …. Attributo m TABELLA Nel caso di una sola tabella: select Attributo i, Attributo j, … Attributo m from Tabella where Condizione e1e1 e2e2 e4e4 e3e3 STEP2 : Si selezionano le colonne/attributi specificati dalla SELECT …

9 SQL: DML Attributo 1 Attributo i Attributo m Nel caso di una sola tabella: select Attributo i, Attributo j, … Attributo m from Tabella where Condizione STEP3 : Si costruisce la tabella risultato … { Numero di righe definito dalla clausola WHERE { Numero di colonne definito dalla clausola SELECT

10 SQL: DML CodiceNomeCognomeUfficioStipendio 123MarcoMarchiA15000 125MicheleMontiB18000 134AntonioVerdiA25000 156GiorgioRossiA32000 IMPIEGATI SELECT NOME FROM IMPIEGATI WHERE (UFFICIO=A) Nome Marco Antonio Giorgio Esempio1. Selezionare i nomi degli impiegati che lavorano nellufficio A.

11 SQL: DML CodiceNomeCognomeUfficioStipendio 123MarcoMarchiA15000 125MicheleMontiB18000 134AntonioVerdiA25000 156GiorgioRossiA32000 IMPIEGATI SELECT NOME FROM IMPIEGATI WHERE (STIPENDIO>20000) Nome Antonio Giorgio Esempio2. Selezionare i codici degli impiegati che guadagnano piu di 20000 euro annui.

12 SQL: DML CodiceNomeCognomeUfficioStipendio 123MarcoMarchiA15000 125MicheleMontiB18000 134AntonioVerdiA25000 156GiorgioRossiA32000 IMPIEGATI SELECT NOME,COGNOME FROM IMPIEGATI WHERE ((STIPENDIO>20000) AND (UFFICIO=B)) NomeCognome Esempio3. Selezionare nomi e cognomi degli impiegati che lavorano nellufficio B e guadagnano piu di 20000 euro annui.

13 SQL: DML La clausola where specifica quali righe delle tabelle devono comparire nel risultato finale. La condizione della clausola puo contenere un espressione booleana, o una combinazione di espressioni mediante gli operatori and, or, not. SELECT CODICE FROM IMPIEGATI WHERE NOT((NOME=Marco) AND (UFFICIO=A))

14 SQL: DML Nella clausola where, e possibile fare confronti tra stringhe usando loperatore like e lutilizzo di wildcard : _ carattere arbitrario % sequenza di caratteri arbitraria. In questo modo, e possibile trovare tutte le stringhe che rispettano un certo pattern. Es: selezionare il codice di tutti gli impiegati il cui nome inizi per M, abbia una r come terzo carattere, e termini per o. SELECT CODICE FROM IMPIEGATI WHERE (NOME LIKE M_R%O)

15 SQL: DML Nella clausola where, loperatore in consente di verificare lappartenenza ad un certo insieme di valori. Es. Trovare i codici degli impiegati il cui stipendio sia compreso tra i 24000 ed i 34000 euro annui. CodiceNomeCognomeUfficioStipendio 123MarcoMarchiA15000 125MicheleMontiB18000 134AntonioVerdiA25000 156GiorgioRossiA32000 IMPIEGATI Nome Antonio Giorgio SELECT NOME FROM IMPIEGATI WHERE STIPENDIO IN (24000,34000)

16 SQL: DML Q. Cosa accade nella clausola where in caso di valori NULL… Vengono inclusi nel risultato finale? NO! CodiceNomeCognomeUfficioStipendio 123MarcoMarchiA15000 125MicheleMontiB18000 134AntonioVerdiA NULL 156GiorgioRossiA32000 IMPIEGATI Nome Giorgio SELECT NOME FROM IMPIEGATI WHERE STIPENDIO > 20000

17 SQL: DML In generale, SQL utilizza una logica a tre valori : true ( T ), false ( F ), unknown ( U ). Esistono gli operatori IS NULL ed IS NOT NULL. CodiceNomeCognomeUfficioStipendio 123MarcoMarchiA15000 125MicheleMontiB18000 134AntonioVerdiANULL 156GiorgioRossiA32000 IMPIEGATI Nome Antonio Giorgio SELECT NOME FROM IMPIEGATI WHERE (STIPENDIO > 20000) OR (STIPENDIO IS NULL)

18 SQL: DML La clausola select specifica quali colonne delle righe selezionate devono comparire nel risultato finale. Lasterisco ( * ) indica tutte le colonne della tabella. SELECT * FROM IMPIEGATI WHERE (NOME=Marco) AND (UFFICIO=A) CodiceNomeCognomeUfficioStipendio 123MarcoMarchiA15000 IMPIEGATI

19 SQL: DML E possibile ridenominare le colonne del risultato di una query attraverso il costrutto as. SELECT NOME as Name, Cognome as LastName FROM IMPIEGATI WHERE (NOME=Marco) CodiceNomeCognomeUfficioStipendio 123MarcoMarchiA12000 145MarcoBianchiB24000 167LuciaDi LuciaC36000 NameLastName MarcoMarchi MarcoBianchi IMPIEGATI

20 SQL: DML E possibile usare espressioni aritmetiche (semplici) sui valori degli attributi di una SELECT. SELECT NOME as Name, Stipendio/12 as SalaryM FROM IMPIEGATI WHERE (NOME=Marco) CodiceNomeCognomeUfficioStipendio 123MarcoMarchiA12000 145MarcoBianchiB24000 167LuciaDi LuciaC36000 NameSalaryM Marco1000 Marco2000 IMPIEGATI

21 SQL: DML La clausola from specifica la lista delle tabelle cui si deve accedere (nel caso #tabelle>1, si effettua il prodotto cartesiano delle stesse). E possibile specificare degli alias per i nomi delle tabelle, mediante il costrutto as : SELECT CODICE FROM IMPIEGATI AS I WHERE (NOME=MARCO)

22 SQL: DML Vediamo come funziona la SELECT su piu tabelle. Es. Selezionare il numero di telefono dellimpiegato con codice 145. … CodiceNomeCognomeUfficioStipendio 123MarcoMarchiA12000 145MarcoBianchiB24000 167LuciaDi LuciaA36000 187GiorgioRossiB12000 UffNumTelefono A2034333 B2035434 IMPIEGATI SEDI

23 SQL: DML SELECT TELEFONO AS TEL FROM IMPIEGATI, SEDI WHERE (UFFICIO=UFFNUM) AND (CODICE=145) CodiceNomeCognomeUfficioStipendio 123MarcoMarchiA12000 145MarcoBianchiB24000 167LuciaDi LuciaA36000 187GiorgioRossiB12000 UffNumTelefono A2034333 B2035434 IMPIEGATI SEDI … COSA FA QUESTA QUERY??

24 SQL: DML SELECT TELEFONO AS TEL FROM IMPIEGATI, SEDI WHERE (UFFICIO=UFFNUM) AND (CODICE=145) CodiceNomeCognomeUfficioStipendioUffNumTelefono 123MarcoMarchiA12000A2034333 145MarcoBianchiB24000A2034333 167LuciaDi LuciaA36000A2034333 187GiorgioRossiB12000A2034333 123MarcoMarchiA12000B2035434 145MarcoBianchiB24000B2035434 167LuciaDi LuciaA36000B2035434 187GiorgioRossiB12000B2035434 STEP1. Si effettua il prodotto cartesiano delle due tabelle …

25 SQL: DML SELECT TELEFONO AS TEL FROM IMPIEGATI, SEDI WHERE (UFFICIO=UFFNUM) AND (CODICE=145) CodiceNomeCognomeUfficioStipendioUffNumTelefono 123MarcoMarchiA12000A2034333 145MarcoBianchiB24000A2034333 167LuciaDi LuciaA36000A2034333 187GiorgioRossiB12000A2034333 123MarcoMarchiA12000B2035434 145MarcoBianchiB24000B2035434 167LuciaDi LuciaA36000B2035434 187GiorgioRossiB12000B2035434 STEP2. Si selezionano le righe con valori comuni nelle tue tabelle …

26 SQL: DML SELECT TELEFONO AS TEL FROM IMPIEGATI, SEDI WHERE (UFFICIO=UFFNUM) AND (CODICE=145) CodiceNomeCognomeUfficioStipendioUffNumTelefono 123MarcoMarchiA12000A2034333 145MarcoBianchiB24000A2034333 167LuciaDi LuciaA36000A2034333 187GiorgioRossiB12000A2034333 123MarcoMarchiA12000B2035434 145MarcoBianchiB24000B2035434 167LuciaDi LuciaA36000B2035434 187GiorgioRossiB12000B2035434 STEP3. Si selezionano le righe relative allimpiegato 145 …

27 SQL: DML SELECT TELEFONO AS TEL FROM IMPIEGATI, SEDI WHERE (UFFICIO=UFFNUM) AND (CODICE=145) CodiceNomeCognomeUfficioStipendioUffNumTelefono 123MarcoMarchiA12000A2034333 145MarcoBianchiB24000A2034333 167LuciaDi LuciaA36000A2034333 187GiorgioRossiB12000A2034333 123MarcoMarchiA12000B2035434 145MarcoBianchiB24000B2035434 167LuciaDi LuciaA36000B2035434 187GiorgioRossiB12000B2035434 STEP4. Si seleziona la colonna dellattributo Telefono …

28 SQL: DML SELECT TELEFONO AS TEL FROM IMPIEGATI, SEDI WHERE (UFFICIO=UFFNUM) AND (CODICE=145) TEL 2035434 STEP5. Si costruisce il risultato finale …

29 SQL: DML Q. Che accade se le tabelle della clausola from hanno attributi con nomi uguali ? CodiceNomeCognomeUfficioStipendio 123MarcoMarchiA12000 145MarcoBianchiB24000 167LuciaDi LuciaA36000 187GiorgioRossiB12000 UfficioTelefono A2034333 B2035434 IMPIEGATI SEDI SELECT TELEFONO AS TEL FROM IMPIEGATI, SEDI WHERE (UFFICIO=UFFICIO) AND (CODICE=145)

30 SQL: DML In questi casi, si puo utilizzare la notazione NomeTabella.NomeAttributo per far riferimento ad un attributo in maniera non ambigua. SELECT TELEFONO AS TEL FROM IMPIEGATI, SEDI WHERE (IMPIEGATI.UFFICIO=SEDE.UFFICIO) AND (CODICE=145) SELECT TELEFONO AS TEL FROM IMPIEGATI AS I, SEDI AS S WHERE (I.UFFICIO=S.UFFICIO) AND (CODICE=145)

31 SQL: DML ATTENZIONE : Il risultato di una query SQL potrebbe avere righe duplicate! SELECT NOME AS NAME FROM IMPIEGATI AS I WHERE (STIPENDIO >20000) CodiceNomeCognomeUfficioStipendio 123MarcoMarchiA12000 145MarcoBianchiB24000 167LuciaDi LuciaC36000 Name Marco IMPIEGATI

32 SQL: DML SELECT DISTINCT NOME AS NAME FROM IMPIEGATI AS I WHERE (STIPENDIO >20000) Il costrutto distinct (nella select ) consente di rimuovere i duplicati nel risultato. Il costrutto all (nella select ) NON rimuove i duplicati (comportamento di default). Name Marco

33 SQL: DML Nella clausola where possono comparire piu istanze della stessa tabella mediante gli alias … Es. Selezionare i nomi dei nonni di Matteo Bianchi. NomeCognomeNomeGenCognome Gen MatteoBianchiMicheleBianchi MicheleBianchiGianniBianchi MatteoBianchiLuciaRossi LuciaRossiSaraRossi NicolaVerdiSimoneVerdi GENITORI

34 SQL: DML SELECT NOME, COGNOME FROM GENITORI, GENITORI WHERE (GENITORI.NOME=GENITORI.NOMEGEN) … NomeCognomeNomeGenCognomeGen MatteoBianchiMicheleBianchi MicheleBianchiGianniBianchi MatteoBianchiLuciaRossi LuciaRossiSaraRossi NicolaVerdiSimoneVerdi GENITORI

35 SQL: DML SELECT G2.NOME, G2.COGNOME FROM GENITORI AS G1, GENITORI AS G2 WHERE (G1.NOMEGEN=G2.NOME) AND (G1.COGNOMEGEN=G2.COGNOME) AND (G1.NOME=MATTEO) AND (G1.COGNOME=BIANCHI) NomeCognomeNomeGenCognomeGen MatteoBianchiMicheleBianchi MicheleBianchiGianniBianchi MatteoBianchiLuciaRossi LuciaRossiSaraRossi NicolaVerdiSimoneVerdi GENITORI

36 SQL: DML SELECT * FROM IMPIEGATI WHERE (UFFICIO=A) ORDER BY STIPENDIO Il costrutto order by consente di ordinare le righe del risultato di uninterrogazione in base al valore di un attributo specificato. order by Attributo 1 [asc|desc], …, Attributo N [asc|desc] Deve comparire sempre dopo la clausola where !

37 SQL: DML Supponiamo di voler scrivere una query per contare il numero di Impiegati che lavorano nellufficio A. Problema: La SELECT vista fin qui opera a livello di tuple, e non a livello di colonne... CodiceNomeCognomeUfficioStipendio 123MarcoMarchiA12000 145MarcoBianchiB24000 167LuciaDi LuciaA36000 187GiorgioRossiB12000 IMPIEGATI Da questa colonna dovremmo estrarre un solo valore!

38 SQL: DML Gli operatori aggregati si applicano a gruppi di tuple (e non tupla per tupla), e producono come risultato un solo valore. Vengono in genere inseriti nella select, e valutati DOPO la clausola where e from. count (* | [distinct|all] Lista Attributi) * si applica su tutti gli attributi, in pratica conta il numero di righe …

39 SQL: DML Gli operatori aggregati si applicano a gruppi di tuple (e non tupla per tupla), e producono come risultato un solo valore. sum Lista Attributi avg Lista Attributi min Lista Attributi max Lista Attributi

40 SQL: DML CodiceNomeCognomeTipo DipartimentoStipendio 123MarcoMarchiAssociatoChimica20000 124MicheleMicheliAssociatoFisica20000 125LuciaDi LuciaOrdinarioFisica30000 126DarioRossiOrdinarioInformatica32000 127MarioRossiRicercatoreInformatica15000 129MicheleBianchiAssociatoFisica20000 STRUTTURATI Es. Contare il numero di professori associati che lavorano nel Dipartimento di Fisica.

41 SQL: DML SELECT COUNT(*) AS CONTATORE FROM STRUTTURATI WHERE (TIPO=ASSOCIATO) AND (DIPARTIMENTO=FISICA) Contatore 2

42 SQL: DML CodiceNomeCognomeTipo DipartimentoStipendio 123MarcoMarchiAssociatoChimica20000 124MicheleMicheliAssociatoFisica20000 125LuciaDi LuciaOrdinarioFisica30000 126DarioRossiOrdinarioInformatica32000 127MarioRossiRicercatoreInformatica15000 129MicheleBianchiAssociatoFisica20000 STRUTTURATI Es. Contare la somma complessiva degli stipendi degli strutturati di Fisica.

43 SQL: DML SELECT SUM(STIPENDIO) AS TOTALE FROM STRUTTURATI WHERE (DIPARTIMENTO=FISICA) Totale 70000

44 SQL: DML Es. Estrarre codice e stipendio del professore associato che ha lo stipendio piu alto... SELECT CODICE, MAX(STIPENDIO) FROM STRUTTURATI WHERE (TIPO=ASSOCIATO) Loperatore aggregato restituisce un solo valore, mentre la prima parte della select restituisce un valore per ogni tupla selezionata !!! ERRORE! COME FARE? Con interrogazioni annidate (vedi dopo …)

45 SQL: DML CodiceNomeCognomeTipo DipartimentoStipendio 123MarcoMarchiAssociatoChimica20000 124MicheleMicheliAssociatoFisica20000 125LuciaDi LuciaOrdinarioFisica30000 126DarioRossiOrdinarioInformatica32000 127MarioRossiRicercatoreInformatica15000 129MicheleBianchiAssociatoFisica20000 STRUTTURATI Es. Contare il numero di strutturati (ricercatori + professori) di ciascun dipartimento.

46 SQL: DML Loperatore di raggruppamento consente di dividere la tabella in gruppi, ognuno caratterizzata da un valore comune dellattributo specificato nelloperatore. SELECT ListaAttributi1 FROM ListaTabelle WHERE Condizione GROUP BY ListaAttributi2 Ogni gruppo produce una sola riga nel risultato finale! ListaAttributi1 deve essere un sottoinsieme di ListaAttributi2, puo contenere operatori aggregati!

47 SQL: DML SELECT DIPARTIMENTO AS DIP, COUNT(*) AS NUMERO FROM STRUTTURATI GROUP BY DIPARTIMENTO DIPNumero Chimica1 Fisica3 Informatica2

48 SQL: DML SELECT DIPARTIMENTO AS DIP, COUNT(*) AS NUMERO FROM STRUTTURATI GROUP BY DIPARTIMENTO CodiceNomeCognomeTipo DipartimentoStipendio 123MarcoMarchiAssociatoChimica20000 124MicheleMicheliAssociatoFisica20000 125LuciaDi LuciaOrdinarioFisica30000 126DarioRossiOrdinarioInformatica32000 127MarioRossiRicercatoreInformatica15000 129MicheleBianchiAssociatoFisica20000 STRUTTURATI STEP1 : Partizionamento della tabella

49 SQL: DML SELECT DIPARTIMENTO AS DIP, COUNT(*) AS NUMERO FROM STRUTTURATI GROUP BY DIPARTIMENTO CodiceNomeCognomeTipo DipartimentoStipendio 123MarcoMarchiAssociato Chimica 20000 STEP1 : Partizionamento della tabella CodiceNomeCognomeTipo DipartimentoStipendio 124MicheleMicheliAssociato Fisica 20000 125LuciaDi LuciaOrdinario Fisica 30000 129MicheleBianchiAssociato Fisica 20000 CodiceNomeCognomeTipo DipartimentoStipendio 126DarioRossiOrdinario Informatica 32000 127MarioRossiRicercatore Informatica 15000

50 SQL: DML SELECT DIPARTIMENTO AS DIP, COUNT(*) AS NUMERO FROM STRUTTURATI GROUP BY DIPARTIMENTO CodiceNomeCognomeTipo DipartimentoStipendio 123MarcoMarchiAssociato Chimica 20000 STEP2 : Si applica la select su ciascun gruppo CodiceNomeCognomeTipo DipartimentoStipendio 124MicheleMicheliAssociato Fisica 20000 125LuciaDi LuciaOrdinario Fisica 30000 129MicheleBianchiAssociato Fisica 20000 CodiceNomeCognomeTipo DipartimentoStipendio 126DarioRossiOrdinario Informatica 32000 127MarioRossiRicercatore Informatica 15000 DipartimentoNumero Chimica 1 DipartimentoNumero Fisica 3 DipartimentoNumero Informatica 2

51 SQL: DML SELECT DIPARTIMENTO AS DIP, COUNT(*) AS NUMERO FROM STRUTTURATI GROUP BY DIPARTIMENTO STEP3 : Si costruisce il risultato finale DipNumero Chimica 1 Fisica 3 Informatica 2

52 SQL: DML E possibile filtrare i gruppi in base a condizioni che devono essere soddisfatte, attraverso il costrutto having. SELECT ListaAttributi1 … GROUP BY ListaAttributi2 HAVING Condizione clausola where valutata riga per riga. clausola having valutata su ciascun gruppo, spesso contiene operatori aggregati.

53 SQL: DML CodiceNomeCognomeTipo DipartimentoStipendio 123MarcoMarchiAssociatoChimica20000 124MicheleMicheliAssociatoFisica20000 125LuciaDi LuciaOrdinarioFisica30000 126DarioRossiOrdinarioInformatica32000 127MarioRossiRicercatoreInformatica15000 129MicheleBianchiAssociatoFisica20000 STRUTTURATI Es. Estrarre il nome dei dipartimenti che hanno almeno due strutturati nel suo organico.

54 SQL: DML SELECT DIPARTIMENTO AS DIP FROM STRUTTURATI GROUP BY DIPARTIMENTO HAVING COUNT(*) > 2 DIP Fisica Informatica

55 SQL: DML SELECT ListaAttributi FROM ListaTabelle WHERE Condizione GROUPBY AttributiRaggruppamento HAVING CondizioniGruppi ORDERBY ListaAttributiOrdinamento Costrutto select nella sua forma piu generale.

56 SQL: DML CodiceNomeCognomeRuolo 123MarcoMarchiAssociato 124MicheleMicheliOrdinario 125LuciaDi LuciaRicercatore 126DarioRossiOrdinario 127MarioRossiOrdinario 129MicheleBianchiAssociato STRUTTURATI Es. Estrarre nome e cognome di tutto il personale universitario (strutturati + tecnici). TECNICI CodiceNomeCognomeLivello 445MicheleMarini5 356DanieleMarini6 154Giovann a Bianchi5 156LuciaDi Lucia4

57 SQL: DML UNION [ALL] INTERSECT [ALL] EXCEPT [ALL] In SQL, e possibile effettuare operazioni insiemistiche tra tabelle o in generale tra risultati di SELECT : Gli attributi della SELECT devono avere tipi di dato compatibili e (possibilmente) gli stessi nomi.

58 SQL: DML Es. Estrarre nome e cognome di tutto il personale universitario (strutturati + tecnici). SELECT NOME, COGNOME FROM STRUTTURATI UNION SELECT NOME, COGNOME FROM TECNICI NomeCognome MarcoMarchi MicheleMicheli LuciaDi Lucia DarioRossi MarioRossi MicheleBianchi MicheleMarini ……

59 SQL: DML Es. Estrarre nome e cognome degli strutturati che hanno degli omonimi che lavorano come tecnici... SELECT NOME, COGNOME FROM STRUTTURATI INTERSECT SELECT NOME, COGNOME FROM TECNICI NomeCognome LuciaDi Lucia

60 SQL: DML Attenzione. Gli attributi delle SELECT nelle due tabelle devono avere tipi compatibili … SELECT RUOLO FROM STRUTTURATI UNION SELECT LIVELLO FROM TECNICI ERRORE! STRUTTURATO.Ruolo e una stringa TECNICI.Livello e un intero.

61 SQL: DML Oltre ad i comandi di interrogazione, la parte DML definisce anche le operazioni per la modifca dellistanza della base di dati. insert inserisce una o piu riga. delete cancella una o piu righe. update aggiorna un attributo o piu.

62 SQL: DML E possibile inserire una riga esplicitando i valori degli attributi oppure estraendo le righe da altre tabelle del database. insert into NomeTabella [ListaAttributi] values (ListaValori) INSERT INTO IMPIEGATI(Codice, Nome, Cognome, Ufficio) values (8,Vittorio,Vittori,A)

63 SQL: DML E possibile inserire una riga esplicitando i valori degli attributi oppure estraendo le righe da altre tabelle del database. insert into NomeTabella [ListaAttributi] values (ListaValori) INSERT INTO IMPIEGATI(Codice, Nome, Cognome) values(8,Vittorio,Vittori) Ufficio non specificato, NULL

64 SQL: DML E possibile inserire una riga esplicitando i valori degli attributi oppure estraendo le righe da altre tabelle del database. insert into NomeTabella SQLSelect INSERT INTO IMPIEGATI (Codice,Nome,Cognome,Ufficio) ( SELECT * FROM IMPIEGATICOMUNE )

65 SQL: DML E possibile cancellare tutte le righe che soddisfano una condizione (cancella tutto se non specificata). delete from Tabella where Condizione DELETE FROM IMPIEGATI DELETE FROM IMPIEGATI WHERE (UFFICIO=A) DELETE FROM TABELLA WHERE NOME IN ( SELECT NOME FROM IMPIEGATICOMUNE)

66 SQL: DML E possibile aggiornare il contenuto di uno o piu attributi di una tabella che rispettano una certa condizione. update NomeTabella set attributo=expr|SELECT|null|default [where Condizione] UPDATE IMPIEGATI SET NOME=Mario WHERE (CODICE=5)

67 SQL: DML E possibile aggiornare il contenuto di uno o piu attributi di una tabella che rispettano una certa condizione. UPDATE IMPIEGATI SET NOME=DEFAULT WHERE (CODICE=5) UPDATE IMPIEGATI SET NOME=(SELECT NOME FROM IMPIEGATICOMUNE WHERE CODICE=5) WHERE (CODICE=5)


Scaricare ppt "Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:"

Presentazioni simili


Annunci Google