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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia:

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia: Corso di Basi di Dati Spaziali Linguaggi: SQL Angelo Montanari Donatella Gubiani Storia Storia: 1974: prima proposta SEQUEL 1981: prime implementazioni 1983: standard di fatto 1986, 1989, 1992 e 1999:

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

Create la tabella Dipendenti:

Create la tabella Dipendenti: Create la tabella Dipendenti: create table Dipendenti( id int(3) not null auto_increment, livello int(1) not null, stipendio int(4) not null, primary key(id)); mysql> describe Dipendenti; --------+------+-----+---------+----------------+

Dettagli

Il linguaggio SQL: le basi. Versione elettronica: SQLa-basi.pdf

Il linguaggio SQL: le basi. Versione elettronica: SQLa-basi.pdf Il linguaggio SQL: le basi Versione elettronica: SQLa-basi.pdf SQL: caratteristiche generali SQL (Structured Query Language) è il linguaggio standard de facto per DBMS relazionali, che riunisce in sé funzionalità

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

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

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

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

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

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

Documentazione SQL. Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema}

Documentazione SQL. Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema} Documentazione SQL Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema} Definizione tabella Definizione dominio Specifica di valori

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

Basi di Dati. Programmazione e gestione di sistemi telematici

Basi di Dati. Programmazione e gestione di sistemi telematici Basi di Dati. Programmazione e gestione di sistemi telematici Coordinatore: Prof. Paolo Nesi Docenti: Prof. Paolo Nesi Dr.sa Michela Paolucci Dr. Emanuele Bellini SQL SQL = Structured Query Language Linguaggio

Dettagli

SQL. Structured Query Language 1974: SEQUEL by IBM 1981: SQL by IBM 1986 1992: SQL ISO 9075:1992 SQL:1999 SQL:2003

SQL. Structured Query Language 1974: SEQUEL by IBM 1981: SQL by IBM 1986 1992: SQL ISO 9075:1992 SQL:1999 SQL:2003 SQL Structured Query Language 1974: SEQUEL by IBM 1981: SQL by IBM 1986 1992: SQL ISO 9075:1992 SQL:1999 SQL:2003 SQL Il linguaggio SQL è stato originariamente dichiarativo, diventando nel tempo sempre

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

SQL -DDL. FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza)

SQL -DDL. FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza) 26/03/2013 SQL SQL -DDL Esercizio 4.3 Dare le definizioni SQL delle tre tabelle FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza) rappresentando

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

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

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

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

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

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

SQL IL LINGUAGGIO DI INTERROGAZIONE

SQL IL LINGUAGGIO DI INTERROGAZIONE SQL IL LINGUAGGIO DI INTERROGAZIONE SQL! Originato da SEQUEL-XRM e System-R (1974-1977) dell IBM! Significato originario Structured Query Language! Standard de facto! Attuale standard ANSI/ISO è SQL:1999

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

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

Basi di Dati e Sistemi Informativi. SQL come linguaggio di manipolazione dei dati

Basi di Dati e Sistemi Informativi. SQL come linguaggio di manipolazione dei dati Basi di Dati e Sistemi Informativi Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale SQL come standard Varie versioni con successivi miglioramenti: SQL-1 o SQL-89 (rispetto ad SQL-86 introduce

Dettagli

PHP e Structured Query Language

PHP e Structured Query Language Esercitazioni del corso di Tecnologie per la Comunicazione Aziendale PHP e Structured Query Language Marco Loregian loregian@disco.unimib.it www.siti.disco.unimib.it/didattica/tca2008 Interrogazioni (ripasso)

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

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

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

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

Un introduzione. Sistemi Informativi LM d'agostino, Fornari, Leardini

Un introduzione. Sistemi Informativi LM d'agostino, Fornari, Leardini Un introduzione Sistemi Informativi LM d'agostino, Fornari, Leardini 1 L utilizzo di MySQL Sistemi Informativi LM d'agostino, Fornari, Leardini 2 L utilizzo di MySQL Sistemi Informativi LM d'agostino,

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

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

SQL: definizione schema

SQL: definizione schema Si Clienti(codice,nome,indirizzo,p_iva) scriva il SQL che definisce il seguente schema relazionale Prodotti(codice,nome,descrizione,prezzo) SQL: definizione schema Fatture(codice,cliente,data) RigheFattura(codice,fattura,prodotto,quantità,prezzo)

Dettagli

Il linguaggio SQL. Massimo Paolucci (paolucci@dist.unige.it) DIST Università di Genova. SQL: Structured Query Language

Il linguaggio SQL. Massimo Paolucci (paolucci@dist.unige.it) DIST Università di Genova. SQL: Structured Query Language 1 Il linguaggio SQL Massimo Paolucci (paolucci@dist.unige.it) DIST Università di Genova SQL: Structured Query Language 2 Generalita Linguaggio di interrogazione per le basi di dati. Sviluppato presso i

Dettagli

DUGI, DB2 User Group Italia. i Trigger INSTEAD OF ; SELECT FROM INSERT, UPDATE, MERGE, DELETE con Colonne INCLUDE

DUGI, DB2 User Group Italia. i Trigger INSTEAD OF ; SELECT FROM INSERT, UPDATE, MERGE, DELETE con Colonne INCLUDE DUGI, DB2 User Group Italia Milano, 9 Aprile 2013 -- Roma 10 Aprile 2013 DB2 for z/os i Trigger INSTEAD OF ; SELECT FROM INSERT, UPDATE, MERGE, DELETE con Colonne INCLUDE massimo MACERA massimo MACERA

Dettagli

----------------------------------------------------------------------------

---------------------------------------------------------------------------- APPUNTI DI SQL Gli appunti qui forniti vogliono essere un riferimento scritto di alcuni degli argomenti trattati a lezione per gli studenti a cui vengono messi a disposizione. Non viene fornita alcuna

Dettagli

SOLUZIONI COMMENTATE

SOLUZIONI COMMENTATE Nel database Biblioteca vi sono le seguenti tabelle: SOLUZIONI COMMENTATE Utenti := < id, nome, cognome, indirizzo,città, tel_fisso,cellulare > Prestiti := < id, id_libro, id_utente, data_ora_prestito,

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

Esercitazione: Il DBMS MySQL

Esercitazione: Il DBMS MySQL Laurea in Ingegneria Informatica SAPIENZA Università di Roma Insegnamento di Basi di Dati Esercitazione: Il DBMS MySQL Marco Console Aspetti Organizzativi Marco Console Sito: www.dis.uniroma1.it/~console

Dettagli

Nella relazione CINEMA, Nome è chiave secondaria. Nella relazione FILM, CodRegista, e CodProtagonista sono chiavi esterne sulla tabella PERSONE.

Nella relazione CINEMA, Nome è chiave secondaria. Nella relazione FILM, CodRegista, e CodProtagonista sono chiavi esterne sulla tabella PERSONE. Si consideri il seguente schema relazionale, relaivo ad una base di dati per gestire la programmazione cinematografica giornaliera in un certo insieme di cinema: CINEMA(CodC, Nome, Indirizzo, Tel, NSale)

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

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

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

DUE GRUPPI DI COMANDI

DUE GRUPPI DI COMANDI LEZIONE16 SQL DDL PAG. 1 / 9 PROF. ANDREA ZOCCHEDDU LEZIONE16 SQL DDL LINGUAGGIO SQL DATA DESCRIPTION LANGUAGE DUE GRUPPI DI COMANDI I comandi del linguaggio SQL sono divisi in due grandi gruppi che formano

Dettagli

Logout [ e01692 ] FAQ Cerca Iscritti Pannello di Controllo Utente. Ultimo accesso: ieri, 8:07 Oggi è 07/04/2009, 9:44

Logout [ e01692 ] FAQ Cerca Iscritti Pannello di Controllo Utente. Ultimo accesso: ieri, 8:07 Oggi è 07/04/2009, 9:44 lnx.brescianet.com Sito didattico - Prof. Sechi Marco Logout [ e01692 ] FAQ Cerca Iscritti Pannello di Controllo Utente Ultimo accesso: ieri, 8:07 Oggi è 07/04/2009, 9:44 Messaggi senza risposta Argomenti

Dettagli

Il linguaggio SQL. Evoluzione del linguaggio. I linguaggi dentro SQL. I dialeu SQL. U@lizzo di SQL SQL. A. Ferrari 1

Il linguaggio SQL. Evoluzione del linguaggio. I linguaggi dentro SQL. I dialeu SQL. U@lizzo di SQL SQL. A. Ferrari 1 Il linguaggio SQL Structured Query Language SQL è un linguaggio di interrogazione per database proge

Dettagli

Domini Numerici Esatti (1) I domini numerici esatti permettono di definire attributi che contenegono valori esatti interi o con parte frazionaria.

Domini Numerici Esatti (1) I domini numerici esatti permettono di definire attributi che contenegono valori esatti interi o con parte frazionaria. Linguaggio SQL (1) Il linguaggio SQL, acronimo di Structured Query Language è un linguaggio per la definizione e la manipolazione dei dati, sviluppato originariamente presso il laboratorio IBM a San Jose

Dettagli

TEORIA sulle BASI DI DATI

TEORIA sulle BASI DI DATI TEORIA sulle BASI DI DATI A cura del Prof. Enea Ferri Cos è un DATA BASE E un insieme di archivi legati tra loro da relazioni. Vengono memorizzati su memorie di massa come un unico insieme, e possono essere

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

Structured Query Language. Informatica Generale - SQL Versione 1.0, aa 2005-2006 p.1/172

Structured Query Language. Informatica Generale - SQL Versione 1.0, aa 2005-2006 p.1/172 Structured Query Language Informatica Generale - SQL Versione 1.0, aa 2005-2006 p.1/172 Linguaggio SQL (1) Il linguaggio SQL, acronimo di Structured Query Language è un linguaggio per la definizione e

Dettagli

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati Laboratorio di Basi di Dati Docente: Alberto Belussi Lezione 1 SQL SQL (Structured Query Language) è stato definito nel 1973 ed è oggi il linguaggio più diffuso per i DBMS relazionali. Sono stati proposti

Dettagli

DBMS: MySQL CORSO DI BASI DI DATI 2014/2015

DBMS: MySQL CORSO DI BASI DI DATI 2014/2015 DBMS: MySQL CORSO DI BASI DI DATI 2014/2015 MySQL La pronuncia ufficiale è MY- S- Q- L ma si può leggere anche MY- Sequel. MySQL è il secondo RDBMS più diffuso al mondo. OpenSource sono licenza GPL Scelto

Dettagli

INTRODUZIONE AD SQL (CAPITOLO 4) R. Basili a.a. 2011-2012

INTRODUZIONE AD SQL (CAPITOLO 4) R. Basili a.a. 2011-2012 1 INTRODUZIONE AD SQL (CAPITOLO 4) R. Basili a.a. 2011-2012 SQL Dopo aver eseguito l installazione del DBMS e di uno o più database: Accesso al DBMS Interpretazione di uno script Descrizione dello schema

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

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

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

Il Domino Character Il domino CHARACTER permette di definire attributi che contengono un singolo carattere o stringhe di caratteri di lunghezza

Il Domino Character Il domino CHARACTER permette di definire attributi che contengono un singolo carattere o stringhe di caratteri di lunghezza Linguaggio SQL (1) Il linguaggio SQL, acronimo di Structured Query Language è un linguaggio per la definizione e la manipolazione dei dati, sviluppato originariamente presso il laboratorio IBM a San Jose

Dettagli

Progetto fisico e tuning del DB. Tecnologie delle Basi di Dati M

Progetto fisico e tuning del DB. Tecnologie delle Basi di Dati M Progetto fisico e tuning del DB Tecnologie delle Basi di Dati M Progetto fisico e tuning La valutazione del progetto di un DB avviene tramite la misurazione delle prestazioni del DBMS rispetto alle interrogazioni

Dettagli

Il linguaggio SQL e Access

Il linguaggio SQL e Access Il linguaggio SQL e Access 1 Linguaggio SQL Caratteristiche generali L SQL (structured query language) è un linguaggio utilizzato per definire, gestire, controllare e reperire dati di un DBMS; prevede

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

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

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

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

Processo di ottimizzazione. Ottimizzatore di Oracle. Execution plan. Esempio. Albero di esecuzione. Ottimizzatore di Oracle Dicembre 2002

Processo di ottimizzazione. Ottimizzatore di Oracle. Execution plan. Esempio. Albero di esecuzione. Ottimizzatore di Oracle Dicembre 2002 Processo di ottimizzazione Ottimizzatore di Oracle Silvia Chiusano Politecnico di Torino chiusano@polito.it Scelta della esecuzione più efficiente per uno statement SQL Influenzato da: Metodi di accesso

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

Vincoli di Integrità

Vincoli di Integrità Vincoli di Integrità Antonella Poggi Dipartimento di informatica e Sistemistica Sapienza Università di Roma Progetto di Applicazioni Software Anno accademico 2010-2011 Questi lucidi sono stati prodotti

Dettagli

Linguaggio SQL. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Linguaggio SQL. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Linguaggio SQL Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni SQL: caratteristiche generali SQL (Structured Query Language) è il linguaggio standard de facto per DBMS relazionali, che

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

L ARCHIVIAZIONE E LA GESTIONE DATI ATTRAVERSO L INTERAZIONE TRA MICROSOFT ACCESS ED EXCEL 1 INTRODUZIONE

L ARCHIVIAZIONE E LA GESTIONE DATI ATTRAVERSO L INTERAZIONE TRA MICROSOFT ACCESS ED EXCEL 1 INTRODUZIONE Roccatello Ing. Eduard L ARCHIVIAZIONE E LA GESTIONE DATI ATTRAVERSO L INTERAZIONE TRA MICROSOFT ACCESS ED EXCEL 1 INTRODUZIONE Agenda Presentazione docente Definizione calendario Questionario pre corso

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

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici Il linguaggio SQL Il linguaggio SQL il linguaggio SQL è un linguaggio per la definizione e la manipolazione dei dati, sviluppato originariamente presso il laboratorio IBM a San Jose (California) è diventato

Dettagli

SQL - Tipi di dato Il linguaggio SQL

SQL - Tipi di dato Il linguaggio SQL SQL - Tipi di dato Il linguaggio SQL I tipi di dato in SQL:1999 si suddividono in tipi predefiniti tipi strutturati tipi user-defined ci concentreremo sui tipi predefiniti i tipi predefiniti sono suddivisi

Dettagli

Structured Query Language parte 1

Structured Query Language parte 1 Consorzio per la formazione e la ricerca in Ingegneria dell'informazione Structured Query Language parte 1 Come interrogare una base di dati relazionale ed avere la risposta esatta Docente: Gennaro Pepe

Dettagli

Impararlo è molto semplice, esistono manuali, o meglio mattoni, su SQL, ma qui verranno illustrati tutti i comandi più utilizzati... e utili.

Impararlo è molto semplice, esistono manuali, o meglio mattoni, su SQL, ma qui verranno illustrati tutti i comandi più utilizzati... e utili. Sql è un linguaggio standard che permette di operare con i database. Per database intendo uno qualsiasi e non il solito Access, ma anche Oracle, Microsoft SQL Server, Informix, DB2, Sybase... Sql sta per

Dettagli

PosgreSQL DBA TUNING. Federico Campoli

PosgreSQL DBA TUNING. Federico Campoli PosgreSQL DBA TUNING Federico Campoli PosgreSQL DBA TUNING Federico Campoli Prima Edizione Pubblicato 2007 Copyright 2007 PGHost di Federico Campoli Opera rilasciata sotto licenza Creative Commons - Attribuzione

Dettagli

DBMS. DataBase Management System. L. Vigliano

DBMS. DataBase Management System. L. Vigliano DBMS DataBase Management System DBMS Un DataBase Management System è un sistema di gestione il cui obiettivo generale è mantenere le informazioni (ovvero qualsiasi cosa sia ritenuta interessante da un

Dettagli

DATA BASE MANAGEMENT SYSTEM

DATA BASE MANAGEMENT SYSTEM DATA BASE (1) Problematica gestione dati: oggetti delle elaborazioni, difficili da gestire, memorizzare, reperire, modificare; talvolta ridondanti/incongruenti; non sufficientemente protetti; spesso comuni

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

PROGETTAZIONE DI BASI DI DATI RELAZIONALI ATTRAVERSO LA TRADUZIONE DI SCHEMI ER ED EER A SCHEMI RELAZIONALI

PROGETTAZIONE DI BASI DI DATI RELAZIONALI ATTRAVERSO LA TRADUZIONE DI SCHEMI ER ED EER A SCHEMI RELAZIONALI LEZIONE DEL 11/11/2008 di BASI DI DATI Prof. Bochicchio PROGETTAZIONE DI BASI DI DATI RELAZIONALI ATTRAVERSO LA TRADUZIONE DI SCHEMI ER ED EER A SCHEMI RELAZIONALI Nelle lezioni precedenti abbiamo accennato

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