07. Ottimizzare le istruzioni SQL

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "07. Ottimizzare le istruzioni SQL"

Transcript

1 07. Ottimizzare le istruzioni SQL

2 Introduzione Union, subquery e Join Il piano di esecuzione L ottimizzatore Le statistiche Il comando EXPLAIN Gli Hint A.A Laboratorio di basi di dati - LB 2

3 La UNION (1) L operazione di UNION esegue l unione insiemistica di 2 query aventi le stesse colonne (numero e tipo). A.A Laboratorio di basi di dati - LB 3

4 La UNION (2) La UNION DISTINCT (è il default), ritorna l unione dei due insiemi senza duplicati. La UNION ALL, ritorna l unione dei due insiemi, senza effettuare la DISTINCT. A.A Laboratorio di basi di dati - LB 4

5 La UNION: ESEMPIO (1) select empno, ename from emp; empno ename bianchi 2 rossi 3 neri A.A Laboratorio di basi di dati - LB 5

6 La UNION: ESEMPIO (2) select mgrno, mgrname from manager; mgrno mgrname bianchi A.A Laboratorio di basi di dati - LB 6

7 La UNION: ESEMPIO (3) SELECT empno, ename FROM emp UNION DISTINCT SELECT mgrno, mgrname FROM manager; La clausola DISTINCT è opzionale. A.A Laboratorio di basi di dati - LB 7

8 La UNION: ESEMPIO (4) empno ename rossi 1 bianchi 3 neri rows in set (0.00 sec) La riga (1,bianchi) è ripetuta una sola volta (la UNION effettua la distinct) A.A Laboratorio di basi di dati - LB 8

9 La UNION: ESEMPIO (5) SELECT empno, ename FROM emp UNION ALL SELECT mgrno, mgrname FROM manager; A.A Laboratorio di basi di dati - LB 9

10 La UNION: ESEMPIO (6) empno ename rossi 1 bianchi 3 neri 1 bianchi rows in set (0.00 sec) La riga (1,bianchi) è ripetuta 2 volte (la UNION ALL non effettua la distinct) A.A Laboratorio di basi di dati - LB 10

11 Le subquery Una subquery è una query annidata (interna) in un altra query (esterna). Sono supportate in mysql a partire dalla versione >= 4.1. A.A Laboratorio di basi di dati - LB 11

12 Subquery semplici Una subquery che viene eseguita una sola volta per tutte le righe della query esterna è detta subquery semplice. Normalmente viene utilizzata con l operatore di uguaglianza (=) A.A Laboratorio di basi di dati - LB 12

13 Le SUBQUERY semplici : un ESEMPIO SELECT * FROM emp WHERE deptno=(select max(deptno) FROM dept); A.A Laboratorio di basi di dati - LB 13

14 Subquery correlate/dipendenti Una subquery che fa riferimento alle colonne della query esterna è detta correllata o dipendente. Viene eseguita n volte una per ogni riga della query esterna. Normalmente viene utilizzata con gli operatori IN, EXISTS A.A Laboratorio di basi di dati - LB 14

15 Le SUBQUERY dipendenti : un ESEMPIO SELECT * FROM emp e WHERE EXISTS ( SELECT 1 FROM dept d WHERE d.deptno=e.deptno); A.A Laboratorio di basi di dati - LB 15

16 Subquery derivate Una subquery utilizzata nella clausola FROM di una query esterna. E necessario assegnare un alias alla subquery. A.A Laboratorio di basi di dati - LB 16

17 Le SUBQUERY derivate : un ESEMPIO SELECT AVG(s.summed_salary) FROM (SELECT sum(salary) summed_salary FROM emp GROUP BY deptno) s; A.A Laboratorio di basi di dati - LB 17

18 Il Join Consente di selezionare e confrontare dati presenti in diverse tabelle con un unica operazione di SELECT. La condizione di join (quando presente) mette in relazione colonne comuni di 2 o più tabelle, tipicamente colonne legate da una Foreign-Key. A.A Laboratorio di basi di dati - LB 18

19 Il Join: la sintassi Esistono 2 sintassi (largamente diffuse ed utilizzate) per scrivere una operazione di join: Theta-style ANSI-style A.A Laboratorio di basi di dati - LB 19

20 Il Join: theta-style (1) Le tabelle in join sono elencate nella clausola FROM separate dalla, (virgola). All interno della clausola WHERE sono espresse sia le condizioni di join che altre eventuali condizioni di filtro. A.A Laboratorio di basi di dati - LB 20

21 Il Join: theta-style (2) NON permette l outer join (se non tramite estensioni non ANSI). E stato largamente utilizzato come sintassi standard dall rdbms oracle fino alla versione 9. A.A Laboratorio di basi di dati - LB 21

22 Theta-style join: un ESEMPIO SELECT e.ename, d.descr FROM emp e, dept d WHERE e.deptno=d.deptno AND e.ename like B% ; A.A Laboratorio di basi di dati - LB 22

23 Il Join: ansi-style (1) Le tabelle in join sono elencate nella clausola FROM separate dalla clausola JOIN. La clausola ON è utilizzata per esprimere le condizioni di join. La clausola WHERE è utilizzata per altre, eventuali, condizioni di filtro. A.A Laboratorio di basi di dati - LB 23

24 Il Join: ansi-style (2) E supportato da tutti i maggiori rdbms (alcuni hanno estensioni proprietarie). Permette tutti i tipi di join. A.A Laboratorio di basi di dati - LB 24

25 Ansi-style join: un ESEMPIO SELECT e.ename, d.descr FROM emp e JOIN dept d ON e.deptno=d.deptno WHERE e.ename like B% ; A.A Laboratorio di basi di dati - LB 25

26 I diversi tipi Join (1) L operazione di join può essere di tipo diverso a secondo di come le tabelle sono messe in join e di come sono trattate le righe che non soddisfano la condizione di join. A.A Laboratorio di basi di dati - LB 26

27 I diversi tipi Join (2) CROSS JOIN Non viene specificata alcuna condizione di join, ossia viene effettuato il prodotto cartesiano delle tabelle. INNER JOIN Vengono restituite solo le righe che soddisfano la condizione di join. A.A Laboratorio di basi di dati - LB 27

28 I diversi tipi Join (3) LEFT (OUTER) JOIN Vengono restituite tutte le righe della left-table che soddisfano o meno la condizione di join. Per le righe che non soddisfano la condizione di join, le colonne della right-table sono impostate a NULL. RIGHT (OUTER) JOIN Speculare al left-join. A.A Laboratorio di basi di dati - LB 28

29 I diversi tipi Join (4) FULL JOIN Vengono restituite tutte le righe delle tabelle in join, che soddisfano o meno la condizione di join. Per le righe che non soddisfano la condizione di join, le colonne della left/right-table sono impostate a NULL. NON è supportato come ANSI sql. A.A Laboratorio di basi di dati - LB 29

30 I diversi tipi Join (5) NATURAL JOIN La condizione di join è data dall uguaglianza di tutte le colonne in comune. E una estensione NON ANSI di Mysql. La query dipende dalla struttura delle tabelle (dalle colonne in comune). SELF JOIN Le tabella viene messa in join con se stessa. A.A Laboratorio di basi di dati - LB 30

31 tipi di join: un ESEMPIO (1) SELECT * FROM emp; empno ename deptno rossi 15 1 bianchi 10 3 bassi A.A Laboratorio di basi di dati - LB 31

32 tipi di join: un ESEMPIO (2) SELECT * FROM dept; deptno descr dept sales 20 dept A.A Laboratorio di basi di dati - LB 32

33 cross join: un ESEMPIO (1) SELECT e.ename, d.descr FROM emp e CROSS JOIN dept d WHERE d.descr like D% ; La clausola CROSS è opzionale. A.A Laboratorio di basi di dati - LB 33

34 cross join: un ESEMPIO (2) ename descr rossi dept 10 bianchi dept 10 bassi dept 10 rossi dept 20 bianchi dept 20 bassi dept Viene restituito il prodotto cartesiano. A.A Laboratorio di basi di dati - LB 34

35 inner join: un ESEMPIO (1) SELECT e.ename, d.descr FROM emp e JOIN dept d ON e.deptno=d.deptno WHERE d.descr like D% ; A.A Laboratorio di basi di dati - LB 35

36 inner join: un ESEMPIO (2) ename descr bianchi dept 10 bassi dept Vengono restituite le sole righe che hanno un match. A.A Laboratorio di basi di dati - LB 36

37 rigth outer join: ESEMPIO (1) SELECT e.ename, d.descr FROM emp e RIGHT OUTER JOIN dept d ON e.deptno=d.deptno WHERE d.descr like D% ; La clausola OUTER è opzionale. La colonna e.ename assumerà NULL per tutte le righe di dept che non soddisfano la condizione di join. A.A Laboratorio di basi di dati - LB 37

38 rigth outer join: ESEMPIO (2) ename descr bianchi dept 10 bassi dept 10 dept Vengono restituite le matching row e le non matching con le colonne della left-table a NULL. A.A Laboratorio di basi di dati - LB 38

39 natural join: un ESEMPIO (1) SELECT e.ename, d.descr FROM emp e NATURAL JOIN dept d WHERE d.descr like D% ; La condizione implicita di join è: e.deptno=d.deptno NON è ANSI SQL (ma una estensione di mysql) A.A Laboratorio di basi di dati - LB 39

40 natural join: un ESEMPIO (2) ename descr bianchi dept 10 bassi dept La condizione implicita di join è: e.deptno=d.deptno NON è ANSI SQL (ma una estensione di mysql) A.A Laboratorio di basi di dati - LB 40

41 self join: un ESEMPIO (1) SELECT e2.empno, e2.ename FROM emp e1 JOIN emp e2 ON e1.deptno=e2.deptno WHERE e1.ename = BIANCHI ; A.A Laboratorio di basi di dati - LB 41

42 self join: un ESEMPIO (2) empno ename bianchi 3 bassi A.A Laboratorio di basi di dati - LB 42

43 I diversi algoritmi di join Nested Loop Join Sort Merge Join Hash Join (*) (*) Non sono trattati nel corso. A.A Laboratorio di basi di dati - LB 43

44 Il Nested Loop Join E l unico algoritmo supportato da MySql Si definisce outer-table / driving-table la tabella esterna, ed inner-table la tabella interna. Per ogni riga della outer-table si cercano tutte le righe della inner-table che soddisfano la condizione di join. A.A Laboratorio di basi di dati - LB 44

45 Il Sort Merge Join NON è supportato da MySql Le due tabelle vengono prima ordinate rispetto alle colonne presenti nella condizione di join e successivamente vengono unite le righe delle 2 tabelle che soddisfano la condizione di join. A.A Laboratorio di basi di dati - LB 45

46 Quando utilizzare il Nested Loop Join (1) La query restituisce un numero limitato di righe. L obiettivo della query è minimizzare il tempo di restituzione della prima riga. Almeno una delle tabelle coinvolte nel join è piccola (rispetto alle dimensioni della cache). A.A Laboratorio di basi di dati - LB 46

47 Quando utilizzare il Nested Loop Join (2) Esiste un indice selettivo sulle colonne utilizzate nella condizione di join di almeno una delle 2 tabelle. La tabella con indice selettivo deve essere scelta come inner-table ed acceduta tramite l indice. La outer-table, normalmente, viene acceduta in full-table-scan. A.A Laboratorio di basi di dati - LB 47

48 Quando utilizzare il Sort MergeJoin(1) La query restituisce un numero grande di righe. L obiettivo della query è minimizzare il tempo di restituzione di tutte le righe. Le tabelle coinvolte nel join sono grandi (rispetto alla dimensione della cache). A.A Laboratorio di basi di dati - LB 48

49 Quando utilizzare il Sort MergeJoin(2) Se esistono degli indici selettivi sulle colonne utilizzate nella condizione di join può essere conveniente utilizzarli (per non effettuare il sort delle tabelle). A.A Laboratorio di basi di dati - LB 49

50 ESEMPIO: il Nested Loop Join T_DEPT T_OFFICE Per ogni riga della tabella T_DEPT viene scandita la tabella T_OFFICE ricercando un match (o viceversa). A.A Laboratorio di basi di dati - LB 50

51 ESEMPIO: il Sort Merge Join T_DEPT T_OFFICE Le tabelle T_DEPT e T_OFFICE vengono prima ordinate (rispetto alla colonna di join) e poi vengono unite le righe che rispettano la condizione di join. A.A Laboratorio di basi di dati - LB 51

52 Il linguaggio SQL E un linguaggio NON procedurale A.A Laboratorio di basi di dati - LB 52

53 Le fasi di un istruzione SQL PARSE BIND EXECUTE FETCH A.A Laboratorio di basi di dati - LB 53

54 L esecuzione di istruzioni SQL Per essere eseguita un istruzione SQL deve essere compilata e deve essere prodotto il codice eseguibile (detto piano di esecuzione). A.A Laboratorio di basi di dati - LB 54

55 Il piano di esecuzione E l insieme dei passi elementari che permettono l esecuzione di una istruzione SQL. Ogni istruzione ha diversi possibili piani di esecuzione. A.A Laboratorio di basi di dati - LB 55

56 L ottimizzatore (1) E il modulo dell rdbms che si occupa di determinare il miglior piano di esecuzione possibile di uno statement SQL. A.A Laboratorio di basi di dati - LB 56

57 L ottimizzatore (2) L ottimizzatore per poter determinare il piano di esecuzione migliore ha bisogno di conoscere le caratteristiche degli oggetti coinvolti nell istruzione SQL. A.A Laboratorio di basi di dati - LB 57

58 Le statistiche (1) Sono necessarie per conoscere la cardinalità e la distribuzione dei dati. E fondamentale che le statistiche siano mantenute aggiornate. A.A Laboratorio di basi di dati - LB 58

59 Le statistiche (2) Numero di righe Numero di valori distinti per ogni colonna (distribuzione uniforme) Dimensione della tabella/indice Lunghezza media delle colonne A.A Laboratorio di basi di dati - LB 59

60 Collezionare le statistiche ANALYZE TABLE <nome-tabella>; Il comando ANALYZE colleziona le statistiche per la tabella e per tutti gli indici definiti sulla tabella. Per InnoDB, il comando ANALYZE colleziona statistiche su un campione dei dati, quindi non esatte. A.A Laboratorio di basi di dati - LB 60

61 I limiti dell ottimizzatore E possibile che l ottimizzatore NON determini il migliore piano di esecuzione. Le istruzioni SQL devono essere ottimizzate da chi le scrive e non ci si deve affidare all ottimizzatore. A.A Laboratorio di basi di dati - LB 61

62 Il comando EXPLAIN (1) Permette di visualizzare il piano di esecuzione di una SELECT. MySql non permette di visualizzare il piano di esecuzione di una DML o di una DDL. A.A Laboratorio di basi di dati - LB 62

63 Il comando EXPLAIN (2) Altri rdbms hanno una implementazione diversa del comando EXPLAIN. Il comando EXPLAIN contiene dettagli che dipendono sia dall rdbms che dalla versione scelta. A.A Laboratorio di basi di dati - LB 63

64 EXPLAIN: esempio (1) CREATE TABLE t1 (a INT,b VARCHAR(20)); INSERT INTO t1 VALUES (1, a ); INSERT INTO t1 VALUES (2, b ); CREATE INDEX ix1_t1 ON t1(a); EXPLAIN SELECT * FROM t1 WHERE a=1 \G A.A Laboratorio di basi di dati - LB 64

65 EXPLAIN: esempio (2) ************** 1. row ************* id: 1 select_type: SIMPLE table: T1 type: ref possible_keys: IX1_T1 A.A Laboratorio di basi di dati - LB 65

66 EXPLAIN: esempio (3) key: IX1_T1 key_len: 5 ref: const rows: 1 Extra: Using where 1 row in set (0.01 sec) A.A Laboratorio di basi di dati - LB 66

67 EXPLAIN: le informazioni (1) Una query è composta da n passi, ossia da n query elementari. Data una query il comando EXPLAIN ritorna n righe, una per ogni passo da effettuare per portare a termine la query stessa. Ogni riga contiene le informazioni di dettaglio su come il singolo passo viene eseguito. A.A Laboratorio di basi di dati - LB 67

68 EXPLAIN: le informazioni (2) ID = identificativo select SELECT_TYPE = ruolo TABLE = nome tabella TYPE = tipo di accesso POSSIBLE_KEYS = indici possibili A.A Laboratorio di basi di dati - LB 68

69 EXPLAIN: le informazioni (3) KEY = indice utilizzato KEY_LEN = lunghezza chiave REF = colonne/valori per selezionare la chiave ROWS = numero di righe EXTRA = altro A.A Laboratorio di basi di dati - LB 69

70 EXPLAIN: ID Identificativo (progressivo) della select all interno dell intera query. Il suo significato è cambiato rispetto alla versione < 5.0. A.A Laboratorio di basi di dati - LB 70

71 EXPLAIN: SELECT_TYPE (1) Identifica il ruolo del singolo passo, ossia la sua funzione all interno della query principale. A.A Laboratorio di basi di dati - LB 71

72 EXPLAIN: SELECT_TYPE (2) SIMPLE query semplice (che non usa UNION o subquery). PRIMARY query più esterna. A.A Laboratorio di basi di dati - LB 72

73 EXPLAIN: SELECT_TYPE (3) UNION seconda (o successiva) select in una UNION. DEPENDENT UNION seconda (o successiva) select in una UNION, dipendente da una query esterna. UNION RESULT il risultato di una UNION. A.A Laboratorio di basi di dati - LB 73

74 EXPLAIN: SELECT_TYPE (4) SUBQUERY subquery semplice. DEPENDENT SUBQUERY subquery dipendente da una query esterna. DERIVED subquery in una FROM. A.A Laboratorio di basi di dati - LB 74

75 ESEMPIO (1): SELECT_TYPE=SIMPLE EXPLAIN SELECT * FROM emp WHERE empno=2\g A.A Laboratorio di basi di dati - LB 75

76 ESEMPIO (2): SELECT_TYPE=SIMPLE *********** 1. row ***** id: 1 select_type: SIMPLE table: EMP type: const possible_keys: PRIMARY key: PRIMARY key_len: 4 ref: const rows: 1 Extra: A.A Laboratorio di basi di dati - LB 76

77 ESEMPIO (1): SELECT_TYPE=PRIMARY EXPLAIN SELECT * FROM emp WHERE deptno= (SELECT max(deptno) FROM dept)\g A.A Laboratorio di basi di dati - LB 77

78 ESEMPIO (2): SELECT_TYPE=PRIMARY *********** 1. row ***** id: 1 select_type: PRIMARY table: emp... *********** 2. row ***** id: 2 select_type: SUBQUERY table: NULL... A.A Laboratorio di basi di dati - LB 78

79 ESEMPIO: (1) SELECT_TYPE=UNION EXPLAIN SELECT * FROM emp UNION ALL SELECT * FROM manager \G A.A Laboratorio di basi di dati - LB 79

80 ESEMPIO: (2) SELECT_TYPE=UNION *********** 1. row ****** id: 1 select_type: PRIMARY table: emp... *********** 2. row ****** id: 2 select_type: UNION table: manager A.A Laboratorio di basi di dati - LB 80

81 ESEMPIO: (3) SELECT_TYPE=UNION *********** 3. row ****** id: NULL select_type: UNION RESULT table: <union1,2>... A.A Laboratorio di basi di dati - LB 81

82 ESEMPIO: (1) SELECT_TYPE=SUBQUERY EXPLAIN SELECT * FROM emp WHERE deptno=(select max(deptno) FROM dept)\g A.A Laboratorio di basi di dati - LB 82

83 ESEMPIO: (2) SELECT_TYPE=SUBQUERY *********** 1. row ***** id: 1 select_type: PRIMARY table: emp... *********** 2. row ***** id: 2 select_type: SUBQUERY table: dept... A.A Laboratorio di basi di dati - LB 83

84 ESEMPIO: (1) SELECT_TYPE = DEPENDENT SUBQUERY EXPLAIN SELECT * FROM emp e WHERE EXISTS ( SELECT 1 FROM dept d WHERE d.deptno=e.deptno)\g A.A Laboratorio di basi di dati - LB 84

85 ESEMPIO: (2) SELECT_TYPE = DEPENDENT SUBQUERY *********** 1. row ***** id: 1 select_type: PRIMARY table: e... *********** 2. row ***** id: 2 select_type: DEPENDENT SUBQUERY table: d... A.A Laboratorio di basi di dati - LB 85

86 ESEMPIO: (1) SELECT_TYPE=DERIVED EXPLAIN SELECT AVG(s.summed_salary) FROM (SELECT sum(salary) summed_salary FROM emp GROUP BY deptno) s \G A.A Laboratorio di basi di dati - LB 86

87 ESEMPIO: (2) SELECT_TYPE=DERIVED *********** 1. row ***** id: 1 select_type: PRIMARY table: <derived2>... *********** 2. row ***** id: 2 select_type: DERIVED table: emp... A.A Laboratorio di basi di dati - LB 87

88 EXPLAIN: TYPE (1) Identifica il tipo di accesso effettuato sulla tabella del passo n-esimo, ossia informazioni di dettaglio su come la tabella viene acceduta. A.A Laboratorio di basi di dati - LB 88

89 EXPLAIN: TYPE (2) ALL si accede a tutte le righe di una tabella, ossia in FULL TABLE SCAN. INDEX si accede a tutte le chiavi di un indice, ossia in FULL INDEX SCAN. A.A Laboratorio di basi di dati - LB 89

90 EXPLAIN: TYPE (2) RANGE si accede alla tabella tramite un indice per un range di valori possibili. CONST una sola riga soddisfa le condizioni. La tabella viene acceduta una sola volta all interno dell intera query. A.A Laboratorio di basi di dati - LB 90

91 EXPLAIN: TYPE (3) EQ_REF la tabella ha una matching-row per ogni riga ritornata al passo precedente (quando in un join la tabella viene acceduta tramite una PK). REF la tabella ha più matching-row per ogni riga ritornata al passo precedente, (quando in un join la tabella viene acceduta tramite un indice non univoco). A.A Laboratorio di basi di dati - LB 91

92 EXPLAIN: TYPE (4) INDEX_MERGE si accede alla tabella utilizzando più indici e poi si effettua il merge degli stessi per recuperare le righe richieste. E utilizzato quando all interno della condizione di WHERE ci sono delle espressioni in AND/OR. Questa feature è disponibile dalla versione >= 5.0, in precedenza ogni singolo passo poteva utilizzare un solo indice. A.A Laboratorio di basi di dati - LB 92

93 ESEMPIO: (1) TYPE=ALL EXPLAIN SELECT distinct(ename) FROM emp \G *********** 1. row ***** id: 1 select_type: SIMPLE table: emp type: ALL possible_keys: NULL key: NULL... A.A Laboratorio di basi di dati - LB 93

94 ESEMPIO: (1) TYPE=INDEX EXPLAIN SELECT count(*) FROM emp \G *********** 1. row ***** id: 1 select_type: SIMPLE table: emp type: index possible_keys: NULL key: PRIMARY... A.A Laboratorio di basi di dati - LB 94

95 ESEMPIO: (1) TYPE=RANGE EXPLAIN SELECT * FROM emp WHERE empno BETWEEN 10 AND 100 \G *********** 1. row ***** id: 1 select_type: SIMPLE table: EMP type: range possible_keys: PRIMARY key: PRIMARY... A.A Laboratorio di basi di dati - LB 95

96 ESEMPIO: (1) TYPE=CONST EXPLAIN SELECT * FROM emp WHERE empno=2\g *********** 1. row ***** id: 1 select_type: SIMPLE table: EMP type: const possible_keys: PRIMARY key: PRIMARY... A.A Laboratorio di basi di dati - LB 96

97 ESEMPIO: (2) TYPE=CONST EXPLAIN SELECT * FROM emp WHERE deptno = (SELECT deptno FROM dept WHERE deptno=7) \G A.A Laboratorio di basi di dati - LB 97

98 ESEMPIO: (3) TYPE=CONST *********** 1. row ***** id: 1 select_type: PRIMARY table: EMP... *********** 2. row ***** id: 2 select_type: SUBQUERY table: dept type: const possible_keys: PRIMARY key: PRIMARY... A.A Laboratorio di basi di dati - LB 98

99 ESEMPIO: (1) TYPE=EQ_REF EXPLAIN SELECT /*! STRAIGHT_JOIN */ * FROM emp e, dept d WHERE e.deptno=d.deptno \G A.A Laboratorio di basi di dati - LB 99

100 ESEMPIO: (2) TYPE=EQ_REF *********** 1. row ***** id: 1 select_type: SIMPLE table: e... *********** 2. row ***** id: 2 select_type: SIMPLE table: d type: eq_ref possible_keys: PRIMARY key: PRIMARY... A.A Laboratorio di basi di dati - LB 100

101 ESEMPIO: (1) TYPE=REF EXPLAIN SELECT /*+ STRAIGHT_JOIN */ * FROM dept d, emp e WHERE e.deptno=d.deptno \G A.A Laboratorio di basi di dati - LB 101

102 ESEMPIO: (2) TYPE=REF *********** 1. row ***** id: 1 select_type: SIMPLE table: d... *********** 2. row ***** id: 2 select_type: SIMPLE table: e type: ref possible_keys: FK_EMP_DEPT key: FK_EMP_DEPT... A.A Laboratorio di basi di dati - LB 102

103 ESEMPIO: (1) TYPE=INDEX_MERGE EXPLAIN SELECT * FROM emp /*! FORCE INDEX (PRIMARY,fk_emp_dept) */ WHERE empno=10 or deptno=20 \G A.A Laboratorio di basi di dati - LB 103

104 ESEMPIO: (2) TYPE=INDEX_MERGE *********** 1. row ***** id: 1 select_type: SIMPLE table: emp type: index_merge possible_keys: PRIMARY,fk_emp_dept key: PRIMARY,fk_emp_dept key_len: 4,5 ref: NULL rows: 2 Extra: Using union... A.A Laboratorio di basi di dati - LB 104

105 EXPLAIN: POSSIBLE_KEYS/KEY POSSIBLE_KEYS La lista degli indici che possono essere utilizzati per portare a termine la singola query. KEY La lista degli indici effettivamente utilizzati per portare a termine la singola query. A.A Laboratorio di basi di dati - LB 105

106 ESEMPIO: (1) POSSIBLE_KEYS/KEY EXPLAIN SELECT * FROM emp WHERE empno=10 or deptno=20 \G A.A Laboratorio di basi di dati - LB 106

107 ESEMPIO: (2) POSSIBLE_KEYS/KEY *********** 1. row ***** id: 1 select_type: SIMPLE table: emp type: ALL possible_keys: PRIMARY,fk_emp_dept key: NULL key_len: NULL ref: NULL... Gli indici PRIMARY e fk_emp_dept NON sono utilizzati. A.A Laboratorio di basi di dati - LB 107

108 EXPLAIN: ROWS ROWS il numero di righe che mysql crede di dover esaminare per eseguire la query. A.A Laboratorio di basi di dati - LB 108

109 EXPLAIN: EXTRA (1) Contiene informazioni di dettaglio su come viene eseguito il singolo passo. Nelle prossime slide vengono elencati i valori più significativi. A.A Laboratorio di basi di dati - LB 109

110 EXPLAIN: EXTRA (2) USING FILESORT Viene utilizzato un file temporaneo per effettuare un ordinamento. USING TEMPORARY Viene utilizzata una tabella temporanea per memorizzare i risultati parziali. A.A Laboratorio di basi di dati - LB 110

111 EXPLAIN: EXTRA (3) USING INDEX Viene utilizzato il solo indice per recuperare le informazioni richieste. Non è necessario accedere alla tabella. USING WHERE Viene utilizzata una condizione di where come filtro per restituire le sole righe richieste. A.A Laboratorio di basi di dati - LB 111

112 ESEMPIO: (1) EXTRA=USING FILESORT EXPLAIN SELECT * FROM emp ORDER BY ename\g La select è costretta ad effettuare un sort perché non esiste un indice sulla colonna (ENAME). A.A Laboratorio di basi di dati - LB 112

113 ESEMPIO: (2) EXTRA=USING FILESORT *********** 1. row ***** id: 1 select_type: SIMPLE table: emp type: ALL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 3 Extra: Using filesort A.A Laboratorio di basi di dati - LB 113

114 ESEMPIO: (1) EXTRA=USING TEMPORARY EXPLAIN SELECT DISTINCT ename FROM emp WHERE deptno=10\g La select utilizza una tabella temporanea per poter effettuare la DISTINCT, perchè non esiste un indice sulle colonne (DEPTNO,ENAME). A.A Laboratorio di basi di dati - LB 114

115 ESEMPIO: (2) EXTRA=USING TEMPORARY *********** 1. row ***** id: 1 select_type: SIMPLE table: emp type: ref possible_keys: fk_emp_dept key: fk_emp_dept key_len: 5 ref: const rows: 1 Extra: Using where; Using temporary A.A Laboratorio di basi di dati - LB 115

116 ESEMPIO: (1) EXTRA=USING INDEX EXPLAIN SELECT deptno FROM emp WHERE deptno >= 10\G La select utilizza il solo indice per recuperare i dati, NON deve accedere alla tabella. A.A Laboratorio di basi di dati - LB 116

117 ESEMPIO: (2) EXTRA=USING INDEX *********** 1. row ***** id: 1 select_type: SIMPLE table: emp type: index possible_keys: fk_emp_dept key: fk_emp_dept key_len: 5 ref: NULL rows: 3 Extra: Using where; Using index A.A Laboratorio di basi di dati - LB 117

118 Tuning delle istruzioni SQL Scrivere istruzioni SQL semplici. Verificare i piani di esecuzione. Ottimizzare l accesso alla singola tabella. Ottimizzare l ordine dei passi. Riscrivere la query. A.A Laboratorio di basi di dati - LB 118

119 Scrivere istruzioni SQL semplici Istruzioni SQL con una logica complessa sono difficili da ottimizzare e da manutenere. Query complesse sono il risultato di una progettazione fisica non corretta (mancata denormalizzazione). A.A Laboratorio di basi di dati - LB 119

120 Verificare i piani di esecuzione E fondamentale, per ogni query, verificare i piani di esecuzione per ottimizzare gli accessi. I piani di esecuzione possono essere forzati mediante l uso di HINT. A.A Laboratorio di basi di dati - LB 120

121 Ottimizzare l accesso alla singola tabella (1) Un accesso per indice è preferibile se la quantità dei dati selezionati è inferiore al 10% (del totale), altrimenti è preferibile un full table scan. La percentuale varia a secondo della engine. Per MyIsam è conveniente un accesso per indice fino al 30% delle righe selezionate. A.A Laboratorio di basi di dati - LB 121

122 Ottimizzare l accesso alla singola tabella (2) Per tabelle con poche righe è, normalmente, preferibile un accesso in full table scan. Se necessario/conveniente aggiungere degli indici per selezionare e ordinare i dati. A.A Laboratorio di basi di dati - LB 122

123 Nota La tabella EMP utilizzata negli esempi successivi ha un elevato numero di righe (circa ), mentre la tabella DEPT è di dimensioni ridotte ( < 100). A.A Laboratorio di basi di dati - LB 123

124 Ottimizzare l accesso alla singola tabella: un esempio (1) DESC emp; Field Type Null Key empno int(11) PRI ename varchar(255) YES deptno int(11) YES MUL A.A Laboratorio di basi di dati - LB 124

125 Ottimizzare l accesso alla singola tabella: un esempio (2) SELECT * FROM emp WHERE ename LIKE 'nome14045%'; empno ename deptno nome row in set (1.76 sec) A.A Laboratorio di basi di dati - LB 125

126 Ottimizzare l accesso alla singola tabella: un esempio (3) EXPLAIN SELECT * FROM emp WHERE ename LIKE 'nome14045% \G *********** 1. Row **** id: 1 select_type: SIMPLE table: emp type: ALL... A.A Laboratorio di basi di dati - LB 126

127 Ottimizzare l accesso alla singola tabella: un esempio (4) CREATE INDEX IX_ENAME ON emp(ename); A.A Laboratorio di basi di dati - LB 127

128 Ottimizzare l accesso alla singola tabella: un esempio (5) SELECT * FROM emp WHERE ename LIKE 'nome14045%'; empno ename deptno nome row in set (0.33 sec) A.A Laboratorio di basi di dati - LB 128

129 Ottimizzare l accesso alla singola tabella: un esempio (6) EXPLAIN SELECT * FROM emp WHERE ename LIKE 'nome14045% \G *********** 1. Row **** id: 1 select_type: SIMPLE table: emp type: range possible_keys: IX_ENAME key: IX_ENAME A.A Laboratorio di basi di dati - LB 129

130 Ottimizzare l accesso alla singola tabella: un esempio (7) Spiegazione: la creazione di un indice sulla colonna ENAME, velocizza le query che utilizzano l indice in modo SELETTIVO (ossia che recuperano poche righe). A.A Laboratorio di basi di dati - LB 130

131 Ottimizzare l accesso alla singola tabella: un esempio (8) SELECT count(*) FROM emp WHERE ename LIKE 'nome%'; count(*) row in set (1.32 sec) A.A Laboratorio di basi di dati - LB 131

132 Ottimizzare l accesso alla singola tabella: un esempio (9) EXPLAIN SELECT count(*) FROM emp WHERE ename LIKE 'nome% \G *********** 1. Row **** id: 1 select_type: SIMPLE table: emp type: range possible_keys: IX_ENAME key: IX_ENAME A.A Laboratorio di basi di dati - LB 132

133 Ottimizzare l accesso alla singola tabella: un esempio (10) DROP INDEX IX_ENAME ON emp; A.A Laboratorio di basi di dati - LB 133

134 Ottimizzare l accesso alla singola tabella: un esempio (11) SELECT count(*) FROM emp WHERE ename LIKE 'nome%'; count(*) row in set (0.88 sec) A.A Laboratorio di basi di dati - LB 134

135 Ottimizzare l accesso alla singola tabella: un esempio (12) EXPLAIN SELECT count(*) FROM emp WHERE ename LIKE 'nome%' \G *********** 1. Row **** id: 1 select_type: SIMPLE table: emp type: ALL A.A Laboratorio di basi di dati - LB 135

136 Ottimizzare l accesso alla singola tabella: un esempio (13) Spiegazione: la creazione di un indice sulla colonna ENAME, rallenta le query che utilizzano l indice in modo NON SELETTIVO (ossia che recuperano molte righe tramite l indice). A.A Laboratorio di basi di dati - LB 136

137 Ottimizzare l ordine dei passi (1) La scelta dell ordine in cui le tabelle sono messe in join è fondamentale se si usa l algoritmo di Nested Loop Join. E particolarmente importante quando si effettua il join di molte tabelle. A.A Laboratorio di basi di dati - LB 137

138 Ottimizzare l ordine dei passi (2) In caso di inner join un qualsiasi ordine di join è possibile, l ordine NON è determinato dall ordine in cui le tabelle appaiono nella clausola FROM. In caso di outer join l ordine è fissato dalla condizione di outer-join. A.A Laboratorio di basi di dati - LB 138

139 Ottimizzare l ordine dei passi (3) In genere è conveniente scegliere come driving-table (outer-table) la tabella con la condizione di filtro più selettiva. La selettività deve essere considerata anche rispetto al join con le altre tabelle. A.A Laboratorio di basi di dati - LB 139

140 Ottimizzare l ordine dei passi (4) La driving-table può essere acceduta in full-table-scan o tramite un indice selettivo sulle colonne di filtro. La inner-table deve essere acceduta tramite un indice, preferibilmente univoco, sulle colonne di join. A.A Laboratorio di basi di dati - LB 140

141 Ottimizzare l ordine dei passi (5) Nell ottimizzare gli accessi al disco, si deve considerare la cache dei dati/indici. Se la inner-table è piccola rispetto alle dimensioni della cache ci si può aspettare che i blocchi della tabella (e dei suoi indici) siano prevalentemente in cache. A.A Laboratorio di basi di dati - LB 141

142 Ottimizzare l ordine dei passi: un esempio (1) SELECT e.ename, d.descr FROM emp e, dept d WHERE e.deptno=d.deptno AND e.ename like 'nome12345%'; rows in set (3.05 sec) A.A Laboratorio di basi di dati - LB 142

143 Ottimizzare l ordine dei passi: un esempio (2) EXPLAIN SELECT e.ename, d.descr FROM emp e, dept d WHERE e.deptno=d.deptno AND e.ename like 'nome12345% \G A.A Laboratorio di basi di dati - LB 143

144 Ottimizzare l ordine dei passi: un esempio (3) *********** 1. row *** id: 1 select_type: SIMPLE table: d type: ALL *********** 2. row **** id: 1 select_type: SIMPLE table: e type: ref possible_keys: FK_EMP_DEPT key: FK_EMP_DEPT A.A Laboratorio di basi di dati - LB 144

145 Ottimizzare l ordine dei passi: un esempio (4) SELECT /*! STRAIGHT_JOIN */ e.ename, d.descr FROM emp e, dept d WHERE e.deptno=d.deptno and e.ename like 'nome12345%'; rows in set (0.40 sec) A.A Laboratorio di basi di dati - LB 145

146 Ottimizzare l ordine dei passi: un esempio (5) EXPLAIN SELECT /*! STRAIGHT_JOIN */ e.ename, d.descr FROM emp e, dept d WHERE e.deptno=d.deptno AND e.ename like 'nome12345% \G A.A Laboratorio di basi di dati - LB 146

147 Ottimizzare l ordine dei passi: un esempio (6) *********** 1. row *** id: 1 select_type: SIMPLE table: e type: ALL *********** 2. row **** id: 1 select_type: SIMPLE table: d type: eq_ref possible_keys: PRIMARY key: PRIMARY A.A Laboratorio di basi di dati - LB 147

148 Ottimizzare l ordine dei passi: un esempio (7) Spiegazione: L accesso tramite un indice (per ogni riga della tabella DEPT) alla tabella EMP è un accesso casuale ( alto seek time). E preferibile accedere prima alla tabella EMP (che ha un numero elevato di righe) in modo sequenziale e poi alla tabella DEPT tramite la sua PK. A.A Laboratorio di basi di dati - LB 148

149 Ottimizzare l ordine dei passi: un esempio (8) Nota: Se la condizione sulla colonna ename è selettiva, si può ottimizzare ulteriormente la query creando un indice sulla colonna ename della tabella EMP ed evitando in questo modo il fulltable-scan sulla tabella stessa. A.A Laboratorio di basi di dati - LB 149

150 Ottimizzare l ordine dei passi: un esempio (9) SELECT e.ename, d.descr FROM emp e, dept d WHERE e.deptno=d.deptno AND d.descr like ufficio 6% AND e.ename like 'nome12345%';... 3 rows in set (0.05 sec) A.A Laboratorio di basi di dati - LB 150

151 Ottimizzare l ordine dei passi: un esempio (10) EXPLAIN SELECT e.ename, d.descr FROM emp e, dept d WHERE e.deptno=d.deptno AND d.descr like ufficio 6% AND e.ename like 'nome12345% \G A.A Laboratorio di basi di dati - LB 151

152 Ottimizzare l ordine dei passi: un esempio (11) *********** 1. row *** id: 1 select_type: SIMPLE table: d type: ALL *********** 2. row **** id: 1 select_type: SIMPLE table: e type: ref possible_keys: FK_EMP_DEPT key: FK_EMP_DEPT A.A Laboratorio di basi di dati - LB 152

153 Ottimizzare l ordine dei passi: un esempio (12) SELECT /*! STRAIGHT_JOIN */ e.ename, d.descr FROM emp e, dept d WHERE e.deptno=d.deptno and d.descr like ufficio 6% AND e.ename like 'nome12345%'; rows in set (0.35 sec) A.A Laboratorio di basi di dati - LB 153

154 Ottimizzare l ordine dei passi: un esempio (13) EXPLAIN SELECT /*! STRAIGHT_JOIN */ e.ename, d.descr FROM emp e, dept d WHERE e.deptno=d.deptno AND d.descr like ufficio 6% AND e.ename like 'nome12345% \G A.A Laboratorio di basi di dati - LB 154

155 Ottimizzare l ordine dei passi: un esempio (14) *********** 1. row *** id: 1 select_type: SIMPLE table: e type: ALL *********** 2. row **** id: 1 select_type: SIMPLE table: d type: eq_ref possible_keys: PRIMARY key: PRIMARY A.A Laboratorio di basi di dati - LB 155

156 Ottimizzare l ordine dei passi: un esempio (15) Spiegazione: L utilizzo della tabella DEPT come driving-table è conveniente se il filtro applicato (ossia le righe selezionate dalla DEPT) comporta l uso selettivo dell indice definito sulla FK della tabella EMP. A.A Laboratorio di basi di dati - LB 156

157 Ottimizzare l ordine dei passi: un esempio (16) Nota: Nell esempio riportato l uso della tabella DEPT come driving-table è conveniente perché poche righe della tabella EMP sono legate ad un dipartimento la cui descrizione inizia con la stringa ufficio 6. A.A Laboratorio di basi di dati - LB 157

158 Riscrivere la query Spesso le query possono essere scritte in diversi modi, tra loro equivalenti. E preferibile scrivere la query in modo opportuno, l ottimizzatore non sempre riesce ad individuare la query più performante. A.A Laboratorio di basi di dati - LB 158

159 Riscrivere la query: un esempio (1) SELECT * FROM emp WHERE (ename like 'nome12345%') OR (empno = 10000); rows in set (0.81 sec) A.A Laboratorio di basi di dati - LB 159

160 Riscrivere la query: un esempio (2) EXPLAIN SELECT * FROM emp WHERE (ename like 'nome12345%') OR (empno = 10000) \G A.A Laboratorio di basi di dati - LB 160

161 Riscrivere la query: un esempio (3) *********** 1. row ** id: 1 select_type: SIMPLE table: emp type: ALL possible_keys: PRIMARY,ix_ename key: NULL... A.A Laboratorio di basi di dati - LB 161

162 Riscrivere la query: un esempio (4) SELECT * FROM emp WHERE (ename like 'nome12345%') UNION SELECT * FROM emp WHERE (empno = 10000); rows in set (0.01 sec) A.A Laboratorio di basi di dati - LB 162

163 Riscrivere la query: un esempio (5) EXPLAIN SELECT * FROM emp WHERE (ename like 'nome12345%') UNION SELECT * FROM emp WHERE (empno = 10000) \G A.A Laboratorio di basi di dati - LB 163

164 Riscrivere la query: un esempio (6) *********** 1. row ******* id: 1 select_type: PRIMARY table: emp type: range possible_keys: ix_ename key: ix_ename... A.A Laboratorio di basi di dati - LB 164

165 Riscrivere la query: un esempio (7) *********** 2. row ****** id: 2 select_type: UNION table: emp type: const possible_keys: PRIMARY key: PRIMARY... A.A Laboratorio di basi di dati - LB 165

166 Riscrivere la query: un esempio (8) *********** 3. row ***** id: NULL select_type: UNION RESULT table: <union1,2> type: ALL possible_keys: NULL key: NULL... A.A Laboratorio di basi di dati - LB 166

167 Riscrivere la query: un esempio (9) Spiegazione: MySql utilizza un solo indice per query (nella versione < 5.0). Se non può utilizzare nessun indice per soddisfare tutte le condizione effettua un full table scan. Se la query viene divisa in più union ha la possibilità di utilizzare un indice per ogni union. A.A Laboratorio di basi di dati - LB 167

168 Gli Hint (1) E un suggerimento all ottimizzatore per guidarlo verso la scelta di un piano di esecuzione. A.A Laboratorio di basi di dati - LB 168

169 Gli Hint (2) Non è uno standard SQL, ogni rdbms ha una sintassi proprietaria. Permettono di ridurre il tempo di PARSE. Permettono (se corretti) di impostare il piano di esecuzione ottimale. A.A Laboratorio di basi di dati - LB 169

170 Gli Hint (3) E fortemente consigliabile racchiudere gli HINT tra /*! HINT */ La maggior parte degli rdbms considerano tutto quello che si trova tra /* e */ un commento, quindi non segnalano un errore sintattico. A.A Laboratorio di basi di dati - LB 170

171 I principali HINT STRAIGHT_JOIN USE INDEX IGNORE INDEX FORCE INDEX A.A Laboratorio di basi di dati - LB 171

172 L hint STRAIGHT_JOIN Forza l ottimizzatore ad effettuare il JOIN nella sequenza specificata nella clausola FROM. A.A Laboratorio di basi di dati - LB 172

173 STRAIGHT_JOIN: la sintassi SINTASSI: SELECT /*! STRAIGHT_JOIN */ <column-list> FROM A.A Laboratorio di basi di dati - LB 173

174 ESEMPIO: STRAIGHT_JOIN (1) EXPLAIN SELECT /*! STRAIGHT_JOIN */ * FROM emp e, dept d WHERE e.deptno=d.deptno \G A.A Laboratorio di basi di dati - LB 174

175 ESEMPIO: STRAIGHT_JOIN (2) *********** 1. row ***** id: 1 select_type: SIMPLE table: e... *********** 2. row ***** id: 1 select_type: SIMPLE table: d... Accede prima alla tabella EMP (E) e alla DEPT (d) A.A Laboratorio di basi di dati - LB 175

176 Gli hint INDEX Forza l ottimizzatore a valutare (USE), ignorare (IGNORE) o utilizzare (FORCE) l uso di un indice. Non sono validi per forzare il piano di esecuzione di ORDER BY o GROUP BY. A.A Laboratorio di basi di dati - LB 176

177 Hint INDEX: la sintassi SINTASSI: SELECT FROM <table> [/*! {USE INDEX IGNORE INDEX FORCE INDEX} (index-list) */] A.A Laboratorio di basi di dati - LB 177

178 ESEMPIO: hint INDEX (1) SELECT count(*) FROM emp WHERE ename like nome% ;... 1 row in set (1.57 sec) A.A Laboratorio di basi di dati - LB 178

179 ESEMPIO: hint INDEX (1) EXPLAIN SELECT count(*) FROM emp WHERE ename like nome% \G A.A Laboratorio di basi di dati - LB 179

180 ESEMPIO: hint INDEX (3) *********** 1. row ***** id: 1 select_type: SIMPLE table: emp type: range possible_keys: ix_ename key: ix_ename... A.A Laboratorio di basi di dati - LB 180

181 ESEMPIO: hint INDEX (4) SELECT count(*) FROM emp /*! IGNORE INDEX (ix_ename) */ WHERE ename like nome% ;... 1 row in set (0.40 sec) A.A Laboratorio di basi di dati - LB 181

182 ESEMPIO: hint INDEX (5) EXPLAIN SELECT count(*) FROM emp /*! IGNORE INDEX (ix_ename) */ WHERE ename like nome% \G A.A Laboratorio di basi di dati - LB 182

183 ESEMPIO: hint INDEX (6) *********** 1. row ***** id: 1 select_type: SIMPLE table: emp type: ALL possible_keys: NULL key: NULL... A.A Laboratorio di basi di dati - LB 183

184 Riepilogo Union, subquery e Join Il piano di esecuzione L ottimizzatore Le statistiche Il comando EXPLAIN Gli Hint A.A Laboratorio di basi di dati - LB 184

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Data Base. Master Bio Info Reti e Basi di Dati Lezione 6 Data Base 1 Sommario I concetti fondamentali. Database Relazionale.. Query e SQL MySql, Creazione di un db in MySQL con PHPmyAdmin Creazione database e delle Tabelle Query Inserimento Ricerca Modifica

Dettagli

OSSIF WEB. Manuale query builder

OSSIF WEB. Manuale query builder OSSIF WEB Manuale query builder - Maggio 2010 1) Sommario 1) SOMMARIO... 2 INTRODUZIONE... 3 Scopo del documento... 3 Struttura del documento... 3 Descrizione dell interfaccia grafica... 3 SELEZIONE DI

Dettagli

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. (Structured Query Language) : Il linguaggio è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. prima versione IBM alla fine degli anni '70 per un prototipo di ricerca (System

Dettagli

Il linguaggio SQL: query innestate

Il linguaggio SQL: query innestate Il linguaggio SQL: query innestate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLc-subquery.pdf Sistemi Informativi L-A DB di riferimento

Dettagli

Corso sul linguaggio SQL

Corso sul linguaggio SQL Corso sul linguaggio SQL Modulo L2B (SQL) 2.2 Comandi sulle tabelle 1 Prerequisiti Introduzione ai DB Tabelle, relazioni e attributi Chiave primaria Chiave esterna Vincoli di integrità 2 1 Introduzione

Dettagli

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Si consiglia di creare il data base, inserire i dati nelle tabelle, provare

Dettagli

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7 ESEMPI DI QUERY SQL Dati di esempio... 2 Query su una sola tabella... 2 Esempio 1 (Ordinamento)... 2 Esempio 2 (Scelta di alcune colonne)... 3 Esempio 3 (Condizioni sui dati)... 3 Esempio 4 (Condizioni

Dettagli

DBMS (Data Base Management System)

DBMS (Data Base Management System) Cos'è un Database I database o banche dati o base dati sono collezioni di dati, tra loro correlati, utilizzati per rappresentare una porzione del mondo reale. Sono strutturati in modo tale da consentire

Dettagli

Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica

Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica Istituto di Istruzione Superiore Alessandrini - Marino 1 Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica Descrizione Un azienda commerciale che vende prodotti IT (computers,

Dettagli

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26 Uso delle variabili di alias SQL slide aggiuntive Laurea magistrale in Scienze della mente Laurea magistrale in Psicologia dello sviluppo e dell'educazione educazione Non solo per disambiguare la notazione

Dettagli

Corso sul linguaggio SQL

Corso sul linguaggio SQL Corso sul linguaggio SQL Modulo L2B (SQL) 2.1 Comandi sui database 1 Prerequisiti Introduzione ai DB Linguaggi per database Tipi fondamentali di dati 2 1 Introduzione In questa Unità introduciamo il linguaggio

Dettagli

Appunti di MySql. Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov.

Appunti di MySql. Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov. Appunti di MySql Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov. Indice generale avviare la shell mysql...2 comandi SQL per la gestione del database (DDL)...2 visualizzare l'elenco

Dettagli

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL Basi di dati Il Linguaggio SQL Data Definition Language (DDL) Data Definition Language: insieme di istruzioni utilizzate per modificare la struttura della base di dati Ne fanno parte le istruzioni di inserimento,

Dettagli

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12 SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I Anno accademico 2011/12 DEFINIZIONE Il concetto di vista 2 È una relazione derivata. Si specifica l espressione che genera il suo contenuto.

Dettagli

Istruzioni DML di SQL

Istruzioni DML di SQL Istruzioni DML di SQL Pag. 99 par.4 1 Sintassi: Costrutto: INSERT INTO (Inserimento di dati in tabelle) INSERT INTO [(, ,, )] VALUES (, ,

Dettagli

CONCETTO DI ANNIDAMENTO

CONCETTO DI ANNIDAMENTO LEZIONE14 SQL ANNIDAMENTI PAG. 1 / 5 PROF. ANDREA ZOCCHEDDU LEZIONE14 SQL ANNIDAMENTI CONCETTO DI ANNIDAMENTO LINGUAGGIO SQL QUERY ANNIDATE Per annidamento si intende la possibilità che, all interno di

Dettagli

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7 Il trattamento dei dati database: il linguaggio SQL seconda parte Prof. Valle D.ssa Folgieri Lez9 15.11.06 Trattamento dati. Database: il

Dettagli

Dispensa di database Access

Dispensa di database Access Dispensa di database Access Indice: Database come tabelle; fogli di lavoro e tabelle...2 Database con più tabelle; relazioni tra tabelle...2 Motore di database, complessità di un database; concetto di

Dettagli

Capitolo 13. Interrogare una base di dati

Capitolo 13. Interrogare una base di dati Capitolo 13 Interrogare una base di dati Il database fisico La ridondanza è una cosa molto, molto, molto brutta Non si devono mai replicare informazioni scrivendole in più posti diversi nel database Per

Dettagli

Volumi di riferimento

Volumi di riferimento Simulazione seconda prova Esame di Stato Gestione di un centro agroalimentare all ingrosso Parte prima) Un nuovo centro agroalimentare all'ingrosso intende realizzare una base di dati per l'attività di

Dettagli

User Tools: DataBase Manager

User Tools: DataBase Manager Spazio di lavoro Per usare T-SQL Assistant selezionare il link Simple Query e spostare a piacere la piccola finestra dove un menu a tendina mostra i diversi comandi SQL selezionabili, il pulsante Preview

Dettagli

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque?

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque? NOSQL Data Model HBase si ispira a BigTable di Google e perciò rientra nella categoria dei column store; tuttavia da un punto di vista logico i dati sono ancora organizzati in forma di tabelle, in cui

Dettagli

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a Join in SQL (primo modo) Informatica Lezione 7 Laurea magistrale in Psicologia Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 09- Per formulare interrogazioni che coinvolgono

Dettagli

Il linguaggio SQL: viste e tabelle derivate

Il linguaggio SQL: viste e tabelle derivate Il linguaggio SQL: viste e tabelle derivate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLd-viste.pdf Sistemi Informativi L-A DB di riferimento

Dettagli

Introduzione a MySQL

Introduzione a MySQL Introduzione a MySQL Cinzia Cappiello Alessandro Raffio Politecnico di Milano Prima di iniziare qualche dettaglio su MySQL MySQL è un sistema di gestione di basi di dati relazionali (RDBMS) composto da

Dettagli

SQL. Linguaggio di interrogazione per basi di dati relazionali. Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL:

SQL. Linguaggio di interrogazione per basi di dati relazionali. Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL: SQL Linguaggio di interrogazione per basi di dati relazionali Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL: Creazione delle tabelle Interrogazione della base di dati

Dettagli

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di Dati Corso di Laura in Informatica Umanistica Basi di Dati Corso di Laura in Informatica Umanistica Appello del 10/09/2010 Parte 1: Algebra Relazionale e linguaggio SQL Docente: Giuseppe Amato Sia dato il seguente schema di base di dati per la gestione

Dettagli

Laboratorio di Basi di Dati e Web

Laboratorio di Basi di Dati e Web Laboratorio di Basi di Dati e Web Docente: Alberto Belussi Lezione 1 SQL Structured Query Language SQL è stato definito nel 1973 ed è oggi il linguaggio più diffuso per i DBMS relazionali Il linguaggio

Dettagli

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf Il linguaggio SQL: viste e tabelle derivate Versione elettronica: SQLd-viste.pdf DB di riferimento per gli esempi Imp Sedi CodImp Nome Sede Ruolo Stipendio Sede Responsabile Citta E001 Rossi S01 Analista

Dettagli

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report Facoltà di Lingue e Letterature Straniere Le QUERY 2 Che cos è una Query? Una Query rappresenta uno strumento per interrogare un database.

Dettagli

Definizione di domini

Definizione di domini Definizione di domini Come nei linguaggi ad alto livello (es. C) è possibile definire nuovi domini (tipi di dati) a partire da quelli predefiniti, anche se il costruttore è più limitato. create domain

Dettagli

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: storia SQL SQL: concetti base originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene sia il DDL sia il DML ne esistono varie versioni vediamo gli aspetti essenziali,

Dettagli

Corso di Laboratorio di Basi di Dati

Corso di Laboratorio di Basi di Dati Corso di Laboratorio di Basi di Dati F1I072 - INF/01 a.a 2009/2010 Pierluigi Pierini Technolabs S.p.a. Pierluigi.Pierini@technolabs.it Università degli Studi di L Aquila Dipartimento di Informatica Technolabs

Dettagli

Corso Sistemi Informativi Avanzati. Programma 30 set 2015. Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

Corso Sistemi Informativi Avanzati. Programma 30 set 2015. Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende. Programma 30 set 205 Installazione Macchina Virtuale Introduzione alla BI nelle Aziende Introduzione SQL Macchina Virtuale È un emulazione di un computer su un altro computer Stesso punto di partenza per

Dettagli

Metodi per la Gestione dei Dati (lezioni di laboratorio)

Metodi per la Gestione dei Dati (lezioni di laboratorio) Università degli Studi di Modena e Reggio Emilia Facoltà di Scienze della Comunicazione e dell Economia Corso di Laurea in Comunicazione e Marketing Anno Accademico 2005/06 Metodi per la Gestione dei Dati

Dettagli

OR true null false true true true true null true null null false true null false NOT

OR true null false true true true true null true null null false true null false NOT Il linguaggio SQL è un linguaggio standard per la definizione, manipolazione e interrogazione delle basi di dati relazionali ed ha le seguenti caratteristiche: è dichiarativo; opera su multiset di tuple,

Dettagli

Istruzioni SQL 1. Query di selezione 2 Istruzione SELECT 2 Istruzione SELECT DISTINCT 2 ORDER BY 3 WHERE 3 La condizione LIKE 4 BETWEEN AND 5

Istruzioni SQL 1. Query di selezione 2 Istruzione SELECT 2 Istruzione SELECT DISTINCT 2 ORDER BY 3 WHERE 3 La condizione LIKE 4 BETWEEN AND 5 Istruzioni SQL Istruzioni SQL 1 Query di selezione 2 Istruzione SELECT 2 Istruzione SELECT DISTINCT 2 ORDER BY 3 WHERE 3 La condizione LIKE 4 BETWEEN AND 5 Query di inserimento 5 INSERT INTO 5 Query di

Dettagli

MySQL Command Line Client: operazioni fondamentali

MySQL Command Line Client: operazioni fondamentali MySQL Command Line Client: operazioni fondamentali INTRODUZIONE Il RDBMS MySQL, oltre a fornire un applicazione che abbia un interfaccia user-friendly, ha a disposizione anche un altro client, che svolge

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

Concetti fondamentali dei database database Cos'è un database Principali database

Concetti fondamentali dei database database Cos'è un database Principali database Concetti fondamentali dei database Nella vita di tutti i giorni si ha la necessità di gestire e manipolare dati. Le operazioni possono essere molteplici: ricerca, aggregazione con altri e riorganizzazione

Dettagli

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004 DB2 Data Management Software Il linguaggio SQL Raggruppamenti Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004 LEGGERE LE SEGUENTI ATTENZIONI Le informazioni contenute in questa

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER

I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER Caratteristiche generali del linguaggio SQL Il linguaggio SQL è il linguaggio usato per la gestione dei database relazionali, cioè dei database creati con un DBMS di tipo relazionale. Esso nacque nella

Dettagli

MAX, SUM, AVG, COUNT)

MAX, SUM, AVG, COUNT) INTRODUZIONE A SQL Definizione di tabelle e domini Alcuni vincoli di integrità Struttura base SELECT FROM WHERE Funzioni di aggregazione (MIN, MAX, SUM, AVG, COUNT) Query da più tabelle (FROM R1, Rk) Join

Dettagli

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 2 Raffaella Gentilini 1 / 45 Sommario 1 Il DDL di SQL: Cancellazione ed Aggiornamento di una BD Cancellazione di Schemi, Tabelle, e Domini Aggiornamento di Tabelle

Dettagli

SQL (STRUCTURED QUERY LANGUAGE)

SQL (STRUCTURED QUERY LANGUAGE) SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan SQL DDL Data Definition Language DML Data Manipulation Language DCL Data Control Language DDL Obiettivo: Definire la struttura

Dettagli

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari: SQL SQL (pronunciato anche come l inglese sequel: acronimo di Structured Query Language (linguaggio di interrogazione strutturato Linguaggio completo che presenta anche proprietà di: DDL (Data Definition

Dettagli

PROGRAMMA DI CLASSE 5AI

PROGRAMMA DI CLASSE 5AI Istituto di Istruzione Superiore Euganeo Istituto tecnico del settore tecnologico Istituto professionale del settore servizi socio-sanitari Istituto professionale del settore industria e artigianato PROGRAMMA

Dettagli

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi Vogliamo creare una struttura per permettere di memorizzari i voti della classe in tutte le materie Per fare questo untilizziamo tre tabelle Alunni,materie,voti Alunni Materie Voti Creo un record per ogni

Dettagli

Indice generale. Capitolo 3 Introduzione a PHP...43 Sintassi e istruzioni di base... 45 Variabili, operatori e commenti... 47 Array...

Indice generale. Capitolo 3 Introduzione a PHP...43 Sintassi e istruzioni di base... 45 Variabili, operatori e commenti... 47 Array... Prefazione...xiii A chi si rivolge il libro... xiv Struttura e contenuti del libro... xiv Dove trovare aiuto... xvii Le newsletter di SitePoint... xviii I vostri commenti... xviii Convenzioni adottate

Dettagli

Database Manager Guida utente DMAN-IT-01/09/10

Database Manager Guida utente DMAN-IT-01/09/10 Database Manager Guida utente DMAN-IT-01/09/10 Le informazioni contenute in questo manuale di documentazione non sono contrattuali e possono essere modificate senza preavviso. La fornitura del software

Dettagli

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione SQL DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE SQL è più di un semplice linguaggio di interrogazione! Linguaggio di definizione dati (Data-definition language, DDL):! Crea/distrugge/modifica relazioni

Dettagli

1.Tutte 2.Spesso P.IVAe le CF volte che si visualizza i dati un fornitore si mostranoanche. La mensa. La mensa

1.Tutte 2.Spesso P.IVAe le CF volte che si visualizza i dati un fornitore si mostranoanche. La mensa. La mensa Ristrutturare Osservazioni seguenti che possano indicazioni emergere lo schema sulle ER operazioni della slide frequenti successiva e indicando tenendo presenti i vincoli le 1.Tutte 2.Spesso P.IVAe le

Dettagli

Preparazione. Introduzione a MySQL: costruzione di una base di dati e gestione degli accessi. Accesso all area condivisa. Avvio Server MySQL

Preparazione. Introduzione a MySQL: costruzione di una base di dati e gestione degli accessi. Accesso all area condivisa. Avvio Server MySQL Introduzione a MySQL: costruzione di una base di dati e gestione degli accessi Stefania Marrara Elisa Quintarelli Lezione 1 2 ore a.a 2004/05 Preparazione Accesso all area condivisa Start -> Programs ->MySQL

Dettagli

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing Informatica 3 LEZIONE 21: Ricerca su liste e tecniche di hashing Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing Informatica 3 Lezione 21 - Modulo 1 Algoritmi sequenziali e basati su

Dettagli

MySQL Database Management System

MySQL Database Management System MySQL Database Management System http://www.mysql.com/ DATABASE RELAZIONALI Un database è una collezione strutturata di informazioni. I database sono delle strutture nelle quali è possibile memorizzare

Dettagli

Il linguaggio SQL: le basi

Il linguaggio SQL: le basi Il linguaggio SQL: le basi Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLa-basi.pdf Sistemi Informativi L-A SQL: caratteristiche generali

Dettagli

Gestione delle tabelle

Gestione delle tabelle Linguaggio SQL: fondamenti Creazione di una tabella Modifica della struttura di una tabella Cancellazione di una tabella Dizionario dei dati Integrità dei dati 2 Creazione di una tabella (1/3) Si utilizza

Dettagli

Data warehouse in Oracle

Data warehouse in Oracle Data warehouse in Oracle Viste materializzate ed estensioni al linguaggio i SQL per l analisi li i dei dati presenti nei data warehouse Estensioni al linguaggio SQL per l analisi dei dati presenti nei

Dettagli

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL Informatica Basi di dati parte 4 SQL Lezione 13 Laurea magistrale in Scienze della mente Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 2012 2013 1 Interrogazioni in

Dettagli

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database Uso delle basi di dati Uso delle Basi di Dati Il modulo richiede che il candidato comprenda il concetto di base dati (database) e dimostri di possedere competenza nel suo utilizzo. Cosa è un database,

Dettagli

MySQL Database Management System

MySQL Database Management System MySQL Database Management System II parte Progetto gestione booking prenotazioni on-line 1. Progettazione e creazione struttura database che chiameremo booking. 2. Progettazione e creazione di un form

Dettagli

Operazioni sui database

Operazioni sui database Operazioni sui database Le operazioni nel modello relazionale sono essenzialmente di due tipi: Operazioni di modifica della base di dati (update) Interrogazioni della base di dati per il recupero delle

Dettagli

SQL Server. SQL server e un RDBMS di tipo client/server che utilizza Transact-SQL per gestire la comunicazione fra un client e SQL Server

SQL Server. SQL server e un RDBMS di tipo client/server che utilizza Transact-SQL per gestire la comunicazione fra un client e SQL Server SQL Server 7.0 1 SQL Server SQL server e un RDBMS di tipo client/server che utilizza Transact-SQL per gestire la comunicazione fra un client e SQL Server 2 Strumenti per la gestione Enterprise Manager

Dettagli

SQL/OLAP. Estensioni OLAP in SQL

SQL/OLAP. Estensioni OLAP in SQL SQL/OLAP Estensioni OLAP in SQL 1 Definizione e calcolo delle misure Definire una misura significa specificare gli operatori di aggregazione rispetto a tutte le dimensioni del fatto Ipotesi: per ogni misura,

Dettagli

Le Basi di Dati. Le Basi di Dati

Le Basi di Dati. Le Basi di Dati Le Basi di Dati 20/05/02 Prof. Carlo Blundo 1 Le Basi di Dati Le Base di Dati (database) sono un insieme di tabelle di dati strutturate in maniera da favorire la ricerca di informazioni specializzate per

Dettagli

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione Università degli Studi di Salerno : (1) Interrogazioni semplici INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione

Dettagli

4 SQL : Interrogazioni nidificate

4 SQL : Interrogazioni nidificate Corso di Laurea in Ingegneria Gestionale SAPIENZA Università di Roma Esercitazioni del corso di Basi di Dati Prof.ssa Catarci e Prof.ssa Scannapieco Anno Accademico 2010/2011 Andrea Marrella Ultimo aggiornamento

Dettagli

DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System)

DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System) (DataBase Management System) Sistemi di ges3one di basi di da3 Un Database Management System è un sistema software progettato per consentire la creazione e manipolazione efficiente di database (collezioni

Dettagli

Corso di Informatica Generale 1 IN1. Linguaggio SQL

Corso di Informatica Generale 1 IN1. Linguaggio SQL Università Roma Tre Facoltà di Scienze M.F.N. di Laurea in Matematica di Informatica Generale 1 Linguaggio SQL Marco (liverani@mat.uniroma3.it) Sommario Prima parte: le basi dati relazionali Basi di dati:

Dettagli

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE. INFORMATICA Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE. APPLICAZIONI WEB L architettura di riferimento è quella ampiamente diffusa ed

Dettagli

Archivi e Basi di Dati

Archivi e Basi di Dati Archivi e Basi di Dati A B C File Programma 1 Programma 2 A B C File modificati Programma 1 DBMS DB Programma 2 Informatica Generale (CdL in E&C), A.A. 2000-2001 55 Problemi nella gestione di archivi separati

Dettagli

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

Giovanna Rosone 04/03/2010. 04/03/2010 SQL, Istruzioni per la modifica dello schema

Giovanna Rosone 04/03/2010. 04/03/2010 SQL, Istruzioni per la modifica dello schema Giovanna Rosone 04/03/2010 04/03/2010 SQL, Istruzioni per la modifica dello schema 1 Riepilogo Impiegato Pagamenti Nome colonna PAG_COD PAG_MATR Tipo dati CHAR(6) CHAR(6) Nome colonna Tipo dati PAG_STIPENDIO

Dettagli

Informatica Generale Andrea Corradini. 19 - Sistemi di Gestione delle Basi di Dati

Informatica Generale Andrea Corradini. 19 - Sistemi di Gestione delle Basi di Dati Informatica Generale Andrea Corradini 19 - Sistemi di Gestione delle Basi di Dati Sommario Concetti base di Basi di Dati Il modello relazionale Relazioni e operazioni su relazioni Il linguaggio SQL Integrità

Dettagli

Oracle PL/SQL. Motivazioni

Oracle PL/SQL. Motivazioni Oracle PLSQL Motivazioni Supponiamo che nella gestione del database Azienda ci venga chiesto di apportare le modifiche necessarie a far sì che ad ogni impiegato possa essere assegnato, alla fine di ogni

Dettagli

L architettura di un DBMS

L architettura di un DBMS L architettura di un DBMS sources: Lucidi del corso di Lucidi del corso di Laboratorio di Basi di dati e sistemi informativi, Montesi, Magnani, Corso di laurea in Informatica per il management, Scienze

Dettagli

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE SQL e ACCESS Prof. Salvatore Multazzu (salvatoremultazzu@tiscali.it) Applicazioni Informatiche nella comunicazione Modello relazionale Entità Record o Ennuple Attributi o Campi Tipi Chiavi Primarie (PK)

Dettagli

Mon Ami 3000 Provvigioni agenti Calcolo delle provvigioni per agente / sub-agente

Mon Ami 3000 Provvigioni agenti Calcolo delle provvigioni per agente / sub-agente Prerequisiti Mon Ami 3000 Provvigioni agenti Calcolo delle provvigioni per agente / sub-agente L opzione Provvigioni agenti è disponibile per le versioni Vendite, Azienda Light e Azienda Pro. Introduzione

Dettagli

I database relazionali (Access)

I database relazionali (Access) I database relazionali (Access) Filippo TROTTA 04/02/2013 1 Prof.Filippo TROTTA Definizioni Database Sistema di gestione di database (DBMS, Database Management System) Sistema di gestione di database relazionale

Dettagli

Cosa è un foglio elettronico

Cosa è un foglio elettronico Cosa è un foglio elettronico Versione informatica del foglio contabile Strumento per l elaborazione di numeri (ma non solo...) I valori inseriti possono essere modificati, analizzati, elaborati, ripetuti

Dettagli

ARCHIVI E DATABASE (prof. Ivaldi Giuliano)

ARCHIVI E DATABASE (prof. Ivaldi Giuliano) ARCHIVI E DATABASE (prof. Ivaldi Giuliano) Archivio: è un insieme di registrazioni (o records) ciascuna delle quali è costituita da un insieme prefissato di informazioni elementari dette attributi (o campi).

Dettagli

UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Medicina e Chirurgia CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA ESAME

UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Medicina e Chirurgia CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA ESAME UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Medicina e Chirurgia CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA ESAME 14 maggio 2009 1 Progettazione di basi di dati Si vuole

Dettagli

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

Dettagli

Esercitazione sulle libpq - libreria C per PostgreSQL

Esercitazione sulle libpq - libreria C per PostgreSQL Esercitazione sulle libpq - libreria C per PostgreSQL Roberto Tronci roberto.tronci@diee.unica.it Basi di Dati A.A. 2007/2008 Tronci ( roberto.tronci@diee.unica.it ) Esercitazione libpq Basi di Dati 2007/2008

Dettagli

Al giorno d oggi, i sistemi per la gestione di database

Al giorno d oggi, i sistemi per la gestione di database Introduzione Al giorno d oggi, i sistemi per la gestione di database implementano un linguaggio standard chiamato SQL (Structured Query Language). Fra le altre cose, il linguaggio SQL consente di prelevare,

Dettagli

Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento

Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento Sommario - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento Introduzione - Un database è un archivio strutturato di dati che può essere manipolato con dei comandi nel linguaggio

Dettagli

Suggerimenti per lo Sviluppo delle Applicazioni con PL/SQL. Simona Rotolo

Suggerimenti per lo Sviluppo delle Applicazioni con PL/SQL. Simona Rotolo Suggerimenti per lo Sviluppo delle Applicazioni con PL/SQL Simona Rotolo 2 Questo documento, rivolto a chi sviluppa codice in PL/Sql, è stato redatto al fine di fornire degli standard di sviluppo che aiuteranno

Dettagli

SQL. Alcune note sulla definizione dei dati

SQL. Alcune note sulla definizione dei dati SQL Alcune note sulla definizione dei dati Domini Domini elementari (predefiniti) Domini definiti dall'utente (riutilizzabili, possono servire per specificare vincoli di dominio propri di una certa applicazione)

Dettagli

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI IL LINGUAGGIO SQL Il linguaggio SQL ( Structured Query Languages) è un linguaggio non procedurale che è diventato uno standard tra i linguaggi per la gestione dei database relazionali. Il linguaggio procedurale

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 PRESTAZIONI DEL CALCOLATORE Massimiliano Giacomin Due dimensioni Tempo di risposta (o tempo di esecuzione): il tempo totale impiegato per eseguire un task (include

Dettagli

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti:

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti: Date le tabelle: Clienti := < id, nome, cognome, indirizzo,città > Ordini := < id, data_ora_ordine, id_prodotto, id_cliente, quantità> Prodotti := < id, nome, descrizione, costo,scorte > INDICI Prevediamo

Dettagli

Metodi per la Gestione dei Dati (lezioni di laboratorio)

Metodi per la Gestione dei Dati (lezioni di laboratorio) Università degli Studi di Modena e Reggio Emilia Facoltà di Scienze della Comunicazione e dell Economia Corso di Laurea in Comunicazione e Marketing Titolare del corso: ing. Stefano SETTI Lezioni di laboratorio

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Introduzione al corso

Introduzione al corso Introduzione al corso Sistemi Informativi L-B Home Page del corso: http://www-db.deis.unibo.it/courses/sil-b/ Versione elettronica: introduzione.pdf Sistemi Informativi L-B Docente Prof. Paolo Ciaccia

Dettagli

Progettazione di Basi di Dati

Progettazione di Basi di Dati Progettazione di Basi di Dati Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan Entità-Relazione Progettazione Logica 2 E il modo attraverso il quale i dati sono rappresentati : fa riferimento al modello

Dettagli

1. Schema concettuale della base di dati Lo schema concettuale (o statico) è uno dei due schemi del progetto concettuale di un sistema informativo.

1. Schema concettuale della base di dati Lo schema concettuale (o statico) è uno dei due schemi del progetto concettuale di un sistema informativo. Esame di Stato Istituto Tecnico Industriale Proposta di soluzione della seconda prova Indirizzo: INFORMATICA Tema: INFORMATICA Anno Scolastico: 2003-2004 1. Schema concettuale della base di dati Lo schema

Dettagli

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da ARPA Fonte Dati Regione Toscana Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.0 Data emissione 06/08/13 Stato DRAFT 1 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 2 Sommario

Dettagli