ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno...

34
ì SQL – aspetti essenziali Sommario ì Definizioni di dati e tipi di dato in SQL ì Specifica di vincoli in SQL ì Interrogazioni di base in SQL ì Istruzioni INSERT, DELETE, e UPDATE ì Funzionalità aggiuntive Giorgio Giacinto 2016 2

Transcript of ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno...

Page 1: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

ìSQL – aspetti essenziali

Sommario

ì Definizioni di dati e tipi di dato in SQL

ì Specifica di vincoli in SQL

ì Interrogazioni di base in SQL

ì Istruzioni INSERT, DELETE, e UPDATE

ì Funzionalità aggiuntive

Giorgio Giacinto 2016

2

Page 2: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

SQL

ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS

ì SQL

ì Structured Query Language

ì Istruzioni per la definizione dei dati, formulazione di interrogazioni e aggiornamenti (DDL e DML)

ì Due parti

ì Nucleo centrale di specifiche (core)

ì Estensioni

Giorgio Giacinto 2016

3

Storia

ì PropostoinizialmentedaIBMconilnomeSEQUEL(structuredenglish querylanguage)anni‘70

ì StandardizzatoANSInel1986eISOnel1987ì SQL-86(oSQL1)ì SQL-92(oSQL2)ì SQL:1999ì SQL:2003ì SQL:2006ì SQL:2008ì SQL:2011

Giorgio Giacinto 2016

4

Page 3: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

ì SuccessorediIngres,DBMSsviluppatodaMichaelStonebraker all’UniversitàdiBerkley (UCB)dal1977al1985ì M.Stonebraker,vincitoredelpremioACMTuring nel

2014

ì Postgres fusviluppatonelperiodo1986-1994daStonebreaker aUCB

ì Dal1996Postgres èstatosviluppatocomeprogettoopen-sourcecolnomePostgreSQL

Giorgio Giacinto 2016

5

ìDDL

Giorgio Giacinto 2016

6

Page 4: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

SQL

Definizione dei Dati e Tipi di Dati

ì Terminologia SQL – Modello relazionale

ì Tabella Relazione

ì Riga Tupla

ì Colonna Attributo

ì Istruzione CREATEì Comando principale per la definizione dei dati

ì Tutte le istruzioni SQL sono terminate con ;

Giorgio Giacinto 2016

7

SQL

Schema e Catalogo

ì Schema

ì nome

ì identificatore di autorizzazione

ì un descrittore per ciascun elemento

ì Elementi dello schema

ì Tabelle

ì Vincoli

ì Viste

ì Domini

ì Altri costruttiGiorgio Giacinto 2016

8

Page 5: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

SQL

Schema e Catalogo

ì Istruzione CREATE SCHEMACREATE SCHEMA COMPANY AUTHORIZATION ‘Jsmith’;

ì Catalogo

ì Raccolta di schemi cui è associato un nome in

un ambiente SQL

ì Ambiente SQL

ì Una installazione di un RDBMS con SQL in un

computer

Giorgio Giacinto 2016

9

CREATE TABLE

ì Creaunanuovarelazioneì Nomeì Attributievincoli

CREATE TABLE COMPANY.EMPLOYEE ...oppure

CREATE TABLE EMPLOYEE ...

ì Letabellecreateconl’istruzioneCREATE TABLEsonochiamatetabelledibase

Giorgio Giacinto 2016

10

Page 6: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Esempio

Giorgio Giacinto 2016

11

Esempio

Giorgio Giacinto 2016

12

Page 7: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Esempio

Giorgio Giacinto 2016

13

Foreign Key

ì Alcune definizioni di FOREIGN KEY possono creare errori

ì Riferimenti circolari

ì Riferimenti a tabelle non ancora create

ì Soluzione

ì Si creano inizialmente le tabelle omettendo i vincoli problematici

ì I vincoli mancanti si aggiungono successivamente usando l’istruzione ALTER TABLE

Giorgio Giacinto 2016

14

Page 8: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

ìTipi di Dato e Domini

Giorgio Giacinto 2016

15

Tipi di Dato di Base

ì Numeric

ì Numeri interi: INTEGER, INT, e SMALLINTì Floating-point (numeri reali) : FLOAT o REAL, e

DOUBLE PRECISION

ì Stringhe di caratteri

ì Lunghezza fissa: CHAR(n), CHARACTER(n)ì Lunghezza variabile

VARCHAR(n), CHAR VARYING(n),

CHARACTER VARYING(n)

Giorgio Giacinto 2016

16

Page 9: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Altri tipi di dato di base

ì Stringhe di bit

ì Lunghezza fissa: BIT(n)ì Lunghezza variabile:BIT VARYING(n)

ì BOOLEANì Valori TRUE o FALSE o UNKNOWN

ì DATEì Dieci elementi

ì Composto da YEAR, MONTH, e DAY nel formato YYYY-MM-DD

Giorgio Giacinto 2016

17

Ulteriori tipi di dato

ì TIMESTAMPì Formato dai campi DATE e TIME

ì Almeno 6 posizioni decimali per la rappresentazione delle frazioni di secondo

ì Qualificatore opzionale: WITH TIME ZONE

ì INTERVALì Specifica un valore relativo che può essere

usato per incrementare/decrementare un valore

assoluto di data, tempo e timestamp

Giorgio Giacinto 2016

18

Page 10: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Domini

ì Il nome del domiinio è utile per la definizione

degli attributi

ì Rende agevole la modifica del tipo di dato per

un dominio condiviso da più attributi.

ì Migliora la leggibilità dello schema

ì Esempio

CREATE DOMAIN SSN_TYPE AS CHAR(9);

Giorgio Giacinto 2016

19

ìSpecifica dei vincoli in SQL

Giorgio Giacinto 2016

20

Page 11: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Vincoli di base

ì Vincoli di chiave

ì Vincoli di integrità referenziale (FOREIGN KEY)

ì Restrizioni sui valori degli attributi (domini)

ì Restrizioni sulla presenza di valori NULL

ì Vincoli su singole tuple

Giorgio Giacinto 2016

21

Vincoli su attributi e valori predefiniti

ì NOT NULL ì Specificato per ciascun attributo per il quale non

è consentito l’uso del valore NULL

ì Valore predefinito (default)ì DEFAULT <value>

ì CHECKì Dnumber INT NOT NULL CHECK

(Dnumber > 0 AND Dnumber < 21);ì Può essere usato nella definizione di dominio

Giorgio Giacinto 2016

22

Page 12: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Esempio

Giorgio Giacinto 2016

23

Esempio

Giorgio Giacinto 2016

24

Page 13: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Vincoli di chiave

ì PRIMARY KEYì Specifica l’attributo (o gli attributi) che

costituiscono la chiave primaria della relazione

Dnumber INT PRIMARY KEY,

ì UNIQUEì Specifica altre chiavi candidate

Dname VARCHAR(15) UNIQUE,

Giorgio Giacinto 2016

25

Vincoli di integrità referenziale

ì FOREIGN KEYì Comportamento di default

ì Aggiornamenti e cancellazioni nella tabella riferita

non sono consentite

ì Si possono prevedere azioni alternativeON DELETE e ON UPDATEcon le azioniSET NULL,CASCADE,oSET DEFAULT

Giorgio Giacinto 2016

26

Page 14: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Attribuzione di un nome ai vincoli

ì Facoltativo

ì CONSTRAINTì Consente di fare riferimento a un vincolo al di

fuori dello schema nel quale è definito

ì Utile per successive modiche o cancellazioi del

vincolo

Giorgio Giacinto 2016

27

Vincoli su tuple con CHECK

ì CHECK può essere usato alla fine

dell’istruzione CREATE TABLEì Effettua la verifica su ciascuna tupla

ì Esempio

ì Se nella tabella Dipartimento ci fosse un attributo DATA_CREAZ_DIP, allora

CHECK (Data_creaz_dip <= Data_inizio_dir);

Giorgio Giacinto 2016

28

Page 15: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

ìInterrogazioni fondamentali in SQL

Giorgio Giacinto 2016

29

Istruzione SELECT

ì Istruzione fondamentale per recuperare

infomazioni da una base di dati

ì Il linguaggio SQL permette che in una tabella vi

siano più tuple identiche

ì Comportamento difforme dalla definizione di relazione nel modello relazionale

ì Comportamento compatibile con il concetto di

multinsieme (bag di tuple)

Giorgio Giacinto 2016

30

Page 16: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Struttura di base di una interrogazione

SELECT <elencoattributi>FROM <elencotabelle>WHERE <condizioni>

Principalioperatorilogiciusatiperesprimerele<condizioni><<=>==><>

Utilizzatipertuttiitipididatoordinati(numerici,testo,data,ora,ecc.)

Giorgio Giacinto 2016

31

Interrogazione 0

ì Mostraredatadinascitaeindirizzodi‘JohnSmith’

ì GliattributinellaclausolaSELECT sonoanchechiamatiattributidiproiezione

ì LecondizioninellaclausolaWHERE sonoanchechiamatecondizionidiselezione

ì Possiamopensareall’esecuzionediunainterrogazionecomesefosseuncicloiterativo

Giorgio Giacinto 2016

32

Page 17: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Risultato Interrogazione 0

Giorgio Giacinto 2016

33

Interrogazione 1

ì Mostrarenomeeindirizzodeidipendentichelavoranoneldipartimento‘Ricerca’

ì LacondizioneDnumber =Dno èdettacondizionedijoin

Giorgio Giacinto 2016

34

Page 18: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Risultato Interrogazione 1

Giorgio Giacinto 2016

35

Interrogazione 2

ì Perogniprogettoconsedea‘Stafford’elencareilnumerodelprogetto,ilnumerodeldipartimentochelocontrolla,ilcognome,l’indirizzoeladatadinascitadeldirettoredeldipartimento

Giorgio Giacinto 2016

36

Page 19: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Risultato Interrogazione 2

Giorgio Giacinto 2016

37

Nomi di attributi ambigui

ì Lo stesso nome può essere usato per due o

più attributi in tabelle diverse

ì Se in una interrogazione si deve usare un

attributo il cui nome compare in più di una delle

tabelle nel FROM, occorre qualificarlo con il

nome della tabella

Giorgio Giacinto 2016

38

Page 20: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Alias e variabili di tupla

ì È possibile assegnare nomi alternativi per le relazioni presenti nel FROMì abbreviare la scrittura delle interrogazioni

SELECT E.nameFROM Employee AS E

ì In genere la parola ‘AS’ si omette

SELECT E.name

FROM Employee E

ì è possibile anche rinominare gli attributi di una

relazione

ì conoscendo l’ordine degli attributi nella definizione

Giorgio Giacinto 2016

39

Interrogazione 8

ì Perciascundipendentemostrareilnomeeilcognome,eilnomeeilcognomedelsuoimmediatosupervisoreSELECT E.fname, E.lname, S.fname, S.lname

FROM Employee E, Employee S

WHERE E.superssn = S.ssn;

Giorgio Giacinto 2016

40

Page 21: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Risultato Interrogazione 8

Giorgio Giacinto 2016

41

Clausola WHERE mancante

ì Nessuna condizione di selezione

Risultato:CROSS PRODUCTì tutte le possibili combinazioni di tuple

Giorgio Giacinto 2016

42

Page 22: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Interrogazione 9 e 10

ì I9: MostraregliSSNdituttigliimpiegatiSELECT ssn

FROM Employee;

ì I10: MostraretuttelepossibilicombinazionifragliSSNdegliimpiegatieinomideidipartimenti

SELECT ssn, dname

FROM Employee, Department;

Giorgio Giacinto 2016

43

Risultato Interrogazione 9

Giorgio Giacinto 2016

44

Page 23: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Risultato Interrogazione 10

Giorgio Giacinto 2016

45

Uso di * nella clausola SELECT

ì Permettedimostraretuttigliattributidelletupleselezionate

Giorgio Giacinto 2016

46

Page 24: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

ìOperatori Insiemistici

Giorgio Giacinto 2016

47

Tabelle e insiemi in SQL

ì SQL non elimina automaticamente eventuali

tuple duplicate fra i risultati di una interrogazioe

ì Per eliminare duplicati dai risultatisi usa la parola DISTINCT in SELECT

Giorgio Giacinto 2016

48

Page 25: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Interrogazione 11 e 11A

ì I11: MostrailsalariodituttiIdipendenti

ì I11A: Mostratuttiivaloridistintidisalario

Giorgio Giacinto 2016

49

Operatori insiemistici in SQL

ì UNION, EXCEPT (differenza), INTERSECTì Sono supportate anche operazioni multinsieme

UNION ALL, EXCEPT ALL, INTERSECT ALL

ì Gli operatori insiemistici sono utilizzabili solo se

le relazioni coinvolte hanno

ì stesso numero di attributi

ì stesso ordine dei domini degli attributi

Giorgio Giacinto 2016

50

Page 26: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Interrogazione 4

ì Creareunelencodituttiinumeridiprogettorelativiaprogettichecoinvolgonodipendentidicognome‘Smith’comepartecipanteocomedirettoredidipartimentochecontrollailprogetto

(SELECT DISTINCT pnumberFROM project,department,employeeWHERE dnum=dnumber ANDmgrssn=ss

AND lname =‘Smith’)UNION(SELECT DISTINCT pnoFROM works_on,employeeWHERE essn =ssn AND lname =‘Smith’)

Giorgio Giacinto 2016

51

ìConfronti di sottostringhe

Giorgio Giacinto 2016

52

Page 27: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

L’operatore LIKE

ì Usato per il confronto di sottostringhe rispetto a

un modello

(string pattern matching)

ì il carattere % sostituisce zero o un numero

arbitrario di caratteri

ì Il carattere _ (underscore) sostituisce un singolo

carattere

ì per utilizzare i caratteri %, _, apici, ecc. si può definire un carattere ESCAPE

Giorgio Giacinto 2016

53

Interrogazione 12

ì SitrovinotuttiidipendentiilcuiindirizzoèaHouston,inTexas

SELECT fname, lname

FROM Employee

WHERE address LIKE ‘%Houston, TX%’

Giorgio Giacinto 2016

54

Page 28: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Interrogazione 12A

ì Sitrovinotuttiidipendentinatineglianni50

SELECT fname, lname

FROM Employee

WHERE bdate LIKE ‘__5_______’

Giorgio Giacinto 2016

55

ìOperatori aritmetici e selezioni per intervallo

Giorgio Giacinto 2016

56

Page 29: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Operatori aritmetici

ì Nella clausola SELECT possono essere usati

ì addizione (+)

ì sottrazione (–)

ì moltiplicazione (*)

ì divisione (/)

Giorgio Giacinto 2016

57

Interrogazione 13

ì Mostrareglistipendirisultantidall’attribuzionediunaumentodel10%aidipendentichelavoranoalprogetto‘ProductX’

SELECT e.fname, e.lname, 1.1*e.salary AS new_salary

FROM employee e, project p,works_on w

WHERE e.ssn = w.essn ANDw.pno = p.pnumber ANDp.pname = ‘ProductX’

Giorgio Giacinto 2016

58

Page 30: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Selezione per intervallo

ì Quandolacondizionediselezioneèun’intervallodivalori,duealternativeì valore>=v_minANDvalore<=v_maxì valoreBETWEEN v_minANDv_max

Giorgio Giacinto 2016

59

Interrogazione 13

ì MostrareIdipendentiilcuistipendioècompresofra30.000e50.000euro

SELECT fname, lname

FROM employee

WHERE salary BETWEEN 30000 AND50000

Giorgio Giacinto 2016

60

Page 31: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

ìOrdinamento dei risultati

Giorgio Giacinto 2016

61

Clausola ORDER BY

ì Si inserisce al termine della interrogazione

ì Ordinamento discendente con DESCORDER BY D.Dname DESC

ì Ordinamento ascendente con ASCORDER BY E.Lname ASCì Comportamento predefinito

Giorgio Giacinto 2016

62

Page 32: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

Interrogazione 18

ì Mostraretuttiidipendentieiprogettiincuilavoranoordinandoirisultatiinbasealnomedeldipartimentoeidipendentiinordinealfabetico.

SELECT d.dname, e.fname, e.lname, p.pname

FROM department d, employee e,works_on w, project p,

WHERE e.dno = d.dnumber ANDe.ssn = w.essn ANDp.pnumber = w.pno

ORDER BY d.dname, e.lname, e.fname

Giorgio Giacinto 2016

63

In sintesi…

Giorgio Giacinto 2016

64

Page 33: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

ìInserimenti, Aggiornamenti e Cancellazioni di tuple in SQL

Giorgio Giacinto 2016

65

INSERT

ì Due alternative

ì Inserimento tuple singole

ì Inserimento di un insieme di valori risultato di

una interrogazione

Giorgio Giacinto 2016

66

Page 34: ì SQL –aspetti essenziali - people.unica.it€¦ · SQL ì SQL è una delle ragioni che hanno determinato il successo commerciale dei DBMS ì SQL ì StructuredQueryLanguage ì

DELETE

ì Cancella da una relazione le tuple che

soddisfano una certa condizione

ì clausola WHERE

Giorgio Giacinto 2016

67

UPDATE

ì Modifica gli attributi di una o più tuple che

soddisfano una certa condizione

ì clausola WHERE

ì Clausola SET per specificare gli attributi da

modificare e impostare il nuovo valore

Giorgio Giacinto 2016

68