Dott. Gianni Nigita Dott. Sebastiano Di Bella. 8 aprile 2012 1



Documenti analoghi
Introduzione a MySQL

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

DBMS (Data Base Management System)

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

Introduzione a MySQL. Dott. Salvatore Alaimo. Studio 32 Blocco 2

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

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

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

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

Laboratorio di Basi di Dati e Web

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

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

I database relazionali (Access)

MySQL: principali comandi

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

MySQL Database Management System

DBMS: MySQL CORSO DI BASI DI DATI 2014/2015

Corso sul linguaggio SQL

Volumi di riferimento

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

User Tools: DataBase Manager

Corso sul linguaggio SQL

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

Dispensa di database Access

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

Progettazione di Basi di Dati

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

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2012/2013

Basi di Da( MySQL & MySQL Workbench. Anna Monreale

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

Gestione delle tabelle

Organizzazione degli archivi

Definizione di domini

GERARCHIE RICORSIVE - SQL SERVER 2008

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Sistemi per la gestione di database: MySQL ( )

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

Richiesta pagina PHP (es: index.php)

Esercitazione sulle libpq - libreria C per PostgreSQL

Introduzione all Information Retrieval

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

Laboratorio di Basi di Dati

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti:

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

SQL Sintassi Dei Comandi

TEORIA sulle BASI DI DATI

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle

Esercitazione 1. Sistemi Informativi T. Versione elettronica: L01.2.DDLDMLbase.pdf

Costruzione di Sit Web con PHP e MySQL. Lezione 7 - Esercitazione - Introduzione a MySQL: le tabelle, i tpi di dato, le query

Lezione V. Aula Multimediale - sabato 29/03/2008

DATABASE.

Il sistema IBM DB2. Sistemi Informativi T. Versione elettronica: L01.1.IntroduzioneDB2.pdf

Introduzione alla programmazione in C

PHP e Structured Query Language

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

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

Esercitazione: Il DBMS MySQL

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati

2104 volume III Programmazione

PROGRAMMA DI CLASSE 5AI

Access. P a r t e p r i m a

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

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

RELAZIONE PROGETTO DATABASE GESTIONE BIBLIOTECA PERSONALE

Informatica Generale Andrea Corradini Sistemi di Gestione delle Basi di Dati

Informatica. Rappresentazione dei numeri Numerazione binaria

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

Le Basi di Dati. Le Basi di Dati

Informatica per le discipline umanistiche 2 lezione 10

MySQL Database Management System

MySQL Command Line Client: operazioni fondamentali

OSSIF WEB. Manuale query builder

SQL/OLAP. Estensioni OLAP in SQL

Corso di Informatica Generale 1 IN1. Linguaggio SQL

SQL - Tipi di dato Il linguaggio SQL

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

Il database management system Access

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

19. LA PROGRAMMAZIONE LATO SERVER

Operazioni sui database

Esercitazione PAM. (Php Apache MySQL)

DESIGNAZIONE: Rappresenta una relazione tra due entità di tipo 1 ad M. Esempio tipico è : REPARTO IMPIEGATO

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

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

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

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

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

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Università degli Studi di Catania Dipartimento di Matematica e Informatica Compilatori 2014/15

ISTRUZIONI INSTALLAZIONE PMANGO

ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 2

MODELLO RELAZIONALE. Introduzione

Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica

Introduzione ai database relazionali

Archivi e Basi di Dati

Corso di Informatica (Basi di Dati)

Lezione 6: Form 27/04/2012

SQL. Alcune note sulla definizione dei dati

Introduzione a phpmyadmin

Transcript:

Dott. Gianni Nigita Dott. Sebastiano Di Bella 8 aprile 2012 1

Materiale didattico Libro di testo Paul DuBois, MySQL, Four Edition, Pearson Education, 2009 Documentazione on-line MySQL http://www.mysql.com/ 8 aprile 2012 2

Sommario Introduzione a MySQL Installazione MySQL Connessione/Disconnessione da un db MySQL Programmi Client Creazione Account e Privilegi Prompt MySQL Comandi MySQL (part I) Engine Tipi di dati Comandi MySQL (part II) Esempi Query NULL Funzioni & Operatori 8 aprile 2012 3

MySQL: un po di storia Creato dalla società MySQL AB sin dal 1979 soltanto dal 1996 supporta anche SQL. Sun Microsystem nel 2008 acquista la società per 1 miliardo di dollari Nel 2010 Oracle acquista Sun per 7,5 miliardi di dollari possedendo così anche MySQL 8 aprile 2012 4

MySQL è un RDBMS (I) Possiamo identificare 4 tipi di database in base alla loro struttura logica: Gerarchico: basato su una struttura ad albero in cui ogni dato che non sia a livello radice ha uno e un solo padre (anni 80) Reticolare: deriva da quello gerarchico, ne supera i limiti della struttura ad albero ma la sua complessità ne limita la diffusione Relazionale: organizza i dati in tabelle basandosi sulle relazione fra esse (MySQL) Ad oggetti: estende il concetto relazionale adattandolo alla programmazione ad oggetti 8 aprile 2012 5

MySQL è un RDBMS (II) RDBMS (relational database management system) ovvero un DBMS basato sul modello relazione (Edgar F. Codd) Una Relazione è la struttura di una tabella (entità) definita da records (righe di dati) e da attributi (colonne della tabella di dati) Esempio: 8 aprile 2012 6

MySQL Installation (I) Link: http://dev.mysql.com/downloads/ MySQL è disponibile per diverse piattaforme tra cui Linux e Windows; Altri Tool Utili MySQL Query Browser Tool grafico per l ottimizzazione delle query http://dev.mysql.com/doc/query-browser/it/mysql-querybrowser-introduction.html 8 aprile 2012 7

MySQL Installation (II) MySQL Connector Per la connessione con altre piattaforme Java/.NET/ C++/ect.. http://dev.mysql.com/downloads/connector/ MySQL Administrator Gestisce le operazioni (configuring, monitoring, start e stop) del server MySQL http://dev.mysql.com/doc/administrator/en/ MySQL Migration Toolkit Tool per la migrazione di db da ORACLE/Access a MySQL http://dev.mysql.com/doc/migration-toolkit/en/ 8 aprile 2012 8

MySQL Installation (III) MySQL Workbench E un tool che fornisce la gestione grafica del server MySQL e dei database http://dev.mysql.com/downloads/workbench/5.2.html 8 aprile 2012 9

Connect/Disconnect (I) Per connettersi al server è necessario fornire login e password localhost: hostname in cui risiede il MySQL root: username che possiede un account sul server -h indirizzo -u utente -P porta -p indica al server la richiesta della password all utente 8 aprile 2012 10

Connect/Disconnect (II) Per uscire (quit o exit) 8 aprile 2012 11

Per help Connect/Disconnect (III) 8 aprile 2012 12

Connect/Disconnect (IV) Visualizzare alcune informazioni relative al server e alla connessione 8 aprile 2012 13

Client (I) Login tramite QueryBrowser Nome Connessione 8 aprile 2012 14

Client (II) 8 aprile 2012 15

Client (III) XAMPP http://dev.mysql.com/do wnloads/workbench/5.2. html LAMP http://www.lamphowto.c om/ WAMP http://www.wampserver. com/en/ NOTA: Attenzione alla porta 8080 8 aprile 2012 16

Client (IV) Download all indirizzo http://www.phpmyadmin.net/home_page/ Oppure all interno dei pacchetti XAMPP LAMP WAMP 8 aprile 2012 17

Client (V) http://localhost/phpmyadmin/ 8 aprile 2012 18

Client (VI) 8 aprile 2012 19

Client (VII) 8 aprile 2012 20

Client (VIII) 8 aprile 2012 21

Client (IX) 8 aprile 2012 22

Client (IX) 8 aprile 2012 23

Client (X) 8 aprile 2012 24

Client (XI) 8 aprile 2012 25

Client (XII) 8 aprile 2012 26

Client (XIII) 8 aprile 2012 27

Client (XIV) 8 aprile 2012 28

Client (XV) 8 aprile 2012 29

Client (XVI) 8 aprile 2012 30

Dentro il db world Client (XVII) tables funzioni db world 8 aprile 2012 31

Client (XVIII) 8 aprile 2012 32

Client (XIX) 8 aprile 2012 33

Client (XX) 8 aprile 2012 34

Client (XXI) svuota table cancella table 8 aprile 2012 35

Client (XXII) 8 aprile 2012 36

Creazione Account/Privilegi (I) Eseguito dall utente root mediante l uso del comando GRANT GRANT Tutte le operazioni: SELECT, INSERT... Nome db Nome tabella user password localhost, Indicando il nome di un server è possibile effettuare la connessione da un server specifico 8 aprile 2012 37

Creazione Account/Privilegi (II) Mentre GRANT assegna i privilegi con REVOKE vengono ritirati: REVOKE (SELECT/ALL PRIVILEGES) on nome_db.( nome_tabella ;*) FROM nome_utente @localhost; 8 aprile 2012 38

Prompt di MySQL mysql> Prompt Significato Pronto per ricevere un comando; -> In attesa della linea successiva per un comando multi-linea; > In attesa della linea successiva per un comando multi-linea, apice di apertura nella riga precedente; > In attesa della linea successiva per un comando multi-linea, doppio apice di apertura nella riga precedente; `> In attesa della linea successiva per un comando multi-linea, che fa riferimento ad un identificatore che inizia con backtick; 8 aprile 2012 39

Esempi Ritorna utente e host con i quali si è fatto l accesso Ritorna la versione e la data corrente Ritorna l utente e la data corrente 8 aprile 2012 40

Comandi (I) Mostra i db Scelgo il db 8 aprile 2012 41

Comandi (II): show SHOW ha diverse forme che forniscono informazioni circa il db, le tables, le columns, o informazioni di status circa il server (help show) 8 aprile 2012 42

Comandi (III): gestione db Creazione database: mysql> CREATE DATABASE world ; mysql> USE world ; Creazione con IF NOT EXISTS: mysql> CREATE DATABASE [IF NOT EXISTS] world ; Cancellazione database: mysql> DROP DATABASE [IF EXISTS] world ; 8 aprile 2012 43

Comandi (IV): gestione table Creare una table: mysql> CREATE [TEMPORARY] TABLE [IF NOT EXISTS] nome_tabella [(definizione, )]; Temporary: la table è valida e visibile solo per la connessione corrente; If Not Exists: Per gestire gli errori in caso esista già la table; Definizione: Possono essere definizioni di una colonna oppure relative alla tabella 8 aprile 2012 44

Comandi (V): gestione table mysql>create TABLE `City` (`ID` int(11) NOT NULL AUTO_INCREMENT, `Name` char(35) NOT NULL DEFAULT '', ` CountryCode` char(3) NOT NULL DEFAULT '', `District` char(20) NOT NULL DEFAULT '', `Population` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`ID`)) ENGINE=MyISAM AUTO_INCREMENT=4080 DEFAULT CHARSET=latin1; 8 aprile 2012 45

Autoincrement Se NULL o NOT NULL non sono stati specificati il sistema per default associa il valore NULL Una colonna integer può avere l attributo addizionale AUTO_INCREMENT. Quando viene inserito un valore NULL (recommended) o zero (0) in una colonna AUTO_INCREMENT, alla colonna viene automaticamente inserito il successivo valore disponibile. Tipicamente il valore è value+1, dove value è il più grande valore presente nella tabella per quel campo. La sequenza AUTO_INCREMENT inizia con 1 8 aprile 2012 46

Engine (I) MySQL mette a disposizione diversi tipi di tabelle, ovvero storage engine per la memorizzazione dei dati. Due sono i sistemi principali: 1. Transazionali: sono più sicuri, permettono di recuperare i dati anche in caso di crash, e consentono di effettuare modifiche tutte insieme 2. Non transazionali: sono più veloci, occupano meno spazio su disco e minor richiesta di memoria. Durante la creazione di una tabella si specifica il tipo tramite il comando ENGINE: mysql>create TABLE t (i INT) ENGINE=INNODB 8 aprile 2012 47

Engine: MyISAM MyISAM è lo storage engine di default dal MySQL 3.23. E basato sullo storage ISAM. Ogni tabella MyISAM è memorizzata all interno del disco con tre file: 1. un file.frm che contiene la definizione della tabella, 2. un file.myd per i dati 3. un file.myi per gli indici 8 aprile 2012 48

Engine: InnoDB Foreign Key: Le tabelle InnoDB sono in grado di gestire l integrità referenziale tra le chiavi esterne del database, permettendo di specificare vari comportamenti a seconda della chiave esterna utilizzata Transizioni: Permette di eseguire le query che verranno validate o annullate mediante chiamate COMMIT o ROLLBACK 8 aprile 2012 49

Engine (II) Alcuni storage consentono di specificare il tipo di indice (struttura dati) durante la creazione delle tabella Bisogna usare la parola chiave USING type_name. Engine MySIAM InnoDB MEMORY/HEAP Type BTREE BTREE HASH, BTREE mysql> CREATE TABLE lookup ( id INT, INDEX USING BTREE (id)) ENGINE= MEMORY; 8 aprile 2012 50

Tipi di tabelle Storage Engine BDB HEAP ISAM InnoDB MEMORY MERGE MRG_MyISAM MyISAM Descrizione Tabelle transaction-safe con page locking I dati della seguente tabella sono solamente memorizzati nella memoria principale Primo storage engine di MySQL Tabella transaction-safe con lock di righe e chiavi esterne Un alias di HEAP Una collezione di tabelle MyISAM usate come se fossero una singola tabella Alias di MERGE Storage engine binario portabile, evoluzione di ISAM 8 aprile 2012 51

Engine: MyISAM vs InnoDB http://www.mysqlperformanceblog.com/2007/01/08/innod b-vs-myisam-vs-falcon-benchmarks-part-1/ 8 aprile 2012 52

Tipi di dati: Numerici (1/2) Tipo Byte Minimum Value Maximum Value (Signed/Unsigned) TINYINT[(M)] 1-128/0 127/255 (Signed/Unsigned) SMALLINT[(M)] 2-32768/0 32767/65535 MEDIUMINT[(M)] 3-8388608/0 8388607/16777215 INT[(M)] 4-2147483648/0 2147483647/4294967295 BIGINT[(M)] 8 9223372036854775808/0 9223372036854775807 /8446744073709551615 FLOAT[(M)] 4 +/-1.175494351E-38 +/- 3.402823466E+38 DOUBLE[(M)] 8 +/- 2.2250738585072014E- 308 +/- 1.7976931348623157E+308 8 aprile 2012 53

Tipi di dati: Numerici (2/2) INTEGER equivale a INT DOUBLE PRECISION equivale a DOUBLE REAL equivale a DOUBLE DECIMAL con M cifre di cui D decimali, occupa M+2 byte NUMERIC equivale a DECIMAL 8 aprile 2012 54

Tipi di dati: Data e Tempo Tipo Range Byte DATE 1000-01-01 9999-12-31 3 DATETIME 1000-01-01 00:00:00 9999-12-31 23:59:59 8 TIMESTAMP[(M)] Da 1970 01 01 ad una data nel 2037 4 TIME -838:59:59-838:59:59 3 YEAR[(M)] 1901 al 2144 per YEAR(4) 1 8 aprile 2012 55

Tipi di dati: Testo Tipo Max size Byte CHAR[(M)] M M VARCHAR(M) M L+1 TINYBLOB/ TINYTEXT 28-1 L+1 BLOB/TEXT 216-1 L+2 MEDIUMBLOB/MEDIU MTEXT 224-1 L+3 LONGBLOB/LONGTEXT 232-1 L+4 ENUM( value1, value2, ) 65535 elementi 1 o 2 byte SET ( value1, value2, ) 64 elementi 1,2,3,4 o 8 byte L rappresenta la lunghezza effettiva del testo 8 aprile 2012 56

Comandi (VI): gestione table 8 aprile 2012 57

Comandi (VII): gestione table 8 aprile 2012 58

Comandi (VIII): gestione table LOW_PRIORITY: l'inserimento non viene effettuato fino a quando esistonoclient che leggono sulla tabella interessata; DELAYED: anche in questo caso l'inserimento viene ritardato fino a quando la tabella non è libera. La differenza rispetto al caso precedente è che al client viene dato immediatamente l'ok, e le righe da inserire vengono mantenute in un buffer gestito dal server fino al momento della effettiva scrittura HIGH PRIORITY: annulla l'effetto di una eventuale opzione -- low-priority- IGNORE: permette di gestire eventuali errori che si verificano in fase di inserimento (chiavi duplicate o valori non validi) ON DUPLICATE KEY UPDATE: nel caso in cui si verifichi una chiave doppia, l'istruzione specificata viene eseguita sulla riga preesistente. 8 aprile 2012 59

Comandi (IX): gestione table INSERT INTO `City` VALUES (1,'Kabul','AFG','Kabol',1780000); INSERT INTO `City` VALUES (2,'Qandahar','AFG','Qandahar',237500); INSERT INTO `City` VALUES (3,'Herat','AFG','Herat',186800); INSERT INTO `City` VALUES (4,'Mazar- e - Sharif','AFG','Balkh',127800); INSERT INTO `City` VALUES (5,'Amsterdam','NLD','Noord- Holland',731200); 8 aprile 2012 60

Comandi (X): gestione table E possibile inserire i dati in un tabella anche leggendo le righe da file di testo con LOAD DATA INFILE 8 aprile 2012 61

Comandi (XI): gestione table Le opzioni LOW_PRIORITY e IGNORE funzionano come per una INSERT L'opzione LOCAL specifica che il file da leggere si trova sulla macchina del client. Se si usa FIELDS è obbligatorio indicare almeno una delle opzioni che la compongono: TERMINATED BY indica quale stringa separa i campi; ENCLOSED BY indica i caratteri usati per racchiudere i valori; ESCAPED BY specifica il carattere di escape usato per i caratteri speciali (cioè quelli utilizzati nelle altre opzioni di FIELDS e LINES) 8 aprile 2012 62

Comandi (XII): gestione table LINES può indicare le opzioni per le righe: STARTING BY indica una stringa che sarà omessa in ogni riga (può anche non trovarsi all'inizio della riga, nel qual caso sarà omesso tutto ciò che si trova prima). TERMINATED BY indica il carattere di fine riga mysql>load DATA INFILE test.txt INTO TABLE test LINES STARTING BY yyy ; Text.txt: yyy ROW,1 Blablabla yyy ROW,2 Carica: ( ROW,1), ( ROW ;2) IGNORE n LINES si usa per saltare le prime n righe del file di input 8 aprile 2012 63

Comandi (XIII): Select 8 aprile 2012 64

Comandi (XIV): Select SELECT seguita da una o più espressioni che saranno le colonne della tabella risultato; FROM seguita dai nomi di una o più tabelle dalle quali devono essere estratti i dati, per ogni tabella si può specificare un alias WHERE che specifica le condizioni in base alle quali ogni riga sarà estrattaoppure nodalletabelle GROUP BY che specifica le colonne sui cui valori devono essere raggruppate le righe nel risultato: tutte le righe con valori uguali verranno ridotte a una HAVING che specifica ulteriori condizioni da applicare alle righe dopo il raggruppamento effettuato dalla GROUP BY ORDER BY che specifica in quale ordine figureranno le righe del resultset LIMIT che stabilisce il massimo numero di righe da estrarre 8 aprile 2012 65

Esempi: Query (I) 8 aprile 2012 66

Esempi: Query (II) Quali sono i paesi (continente, regione, area) con popolazione > 500000, in ordine crescente? 8 aprile 2012 67

Esempi: Query (III) Quali lingue vengono parlate in China, in che percentuale? Usiamo gli alias per le tabelle 8 aprile 2012 68

Esempi: Query (IV) Quali nomi di paesi contengono una w? % Match con qualsiasi numero di caratteri, anche zero. 8 aprile 2012 69

Esempi: Query (V) Quali nomi di paesi contengono 14 caratteri? _ Match esattamente un carattere 8 aprile 2012 70

Esempi: Query (VI) Una espressione regolare è un modo molto potente per specificare un pattern per una ricerca complessa expr REGEX pat: Esegue un pattern match tra una stringa di espressione expr contro un pattern pat Operatori: ^: match l inizio di una stringa $: match la fine di una stringa.: match qualsiasi carattere a*=a{0,}: match qualsiasi sequenza di zero o più caratteri a a+=a{1,}: match una sequenza di una o più caratteri a de abc: match della sequenza de o della sequenza abc (abc)*: match zero o più istanze della sequenza abc 8 aprile 2012 71

Esempi: Query (VII) ^ match l inizio di una stringa Quali nomi dei paesi del Nord America iniziano per C? 8 aprile 2012 72

Esempi: Query (VIII) $ match la fine di una stringa Quali nomi dei paesi dell Europa finiscono con ia? 8 aprile 2012 73

Esempi: Query (IX). match qualsiasi carattere Quali Continente iniziano per A e quali nomi di paesi hanno 6 caratteri? 8 aprile 2012 74

Esempi: Query (X) de abc Match o della sequenza de o della sequenza abc Quali nomi di paesi contengono tal o y? 8 aprile 2012 75

Il valore NULL (I) In quale anno è stata conquistata l indipendenza? 8 aprile 2012 76

Il valore NULL (II) Il valore NULL per un campo assume il seguente significato: mancante, sconosciuto infatti è trattato diversamente dagli altri valori. Per testare il valore di NULL non si possono usare i consueti operatori di confronto =,<, o <> Esempio: 8 aprile 2012 77

Il valore NULL (III) Con l uso di IS NULL e IS NOT NULL si ottiene: Quando si usa ORDER BY i valori NULL sono inseriti all inizio con ASC ed alla fine con ORDER BY DESC. 8 aprile 2012 78

Comandi (XV): UPDATE SET: specifichiamo quali colonne modificare e quali valori assegnare WHERE: le condizioni che determinano quali righe saranno modificate ORDER BY: per decidere in che ordine effettuare gli aggiornamenti LIMIT: per indicare il numero massimo di righe da modificare 8 aprile 2012 79

Comandi (XVI): DELETE LOW_PRIORITY e IGNORE hanno il significato già visto. ORDER BY e LIMIT funzionano come nella UPDATE WHERE stabiliamo le condizioni in base alle quali le righe verranno eliminate 8 aprile 2012 80

Comandi (XVII): Funzioni Input arg 1 arg 2 arg n Funzioni Elaborazione Valori dei Risultati Output 8 aprile 2012 81

Comandi (XVIII): Funzioni Funzioni Funzioni Single-row Funzioni Multiple-row 8 aprile 2012 82

Comandi (XIX): Funzioni Stringhe Generali Funzioni (Single-Row) Numeri Conversione Date http://dev.mysql.com/doc/refman/5.0/en/functions.html 8 aprile 2012 83

Aritmetici: +" (addizione) Operatori (I) "-" (sottrazione) "*" (moltiplicazione) "/" (divisione) "%" (modulo) 8 aprile 2012 84

Operatori (II) Matematici: ABS(X) FLOOR(X) CEILING(X) SIN(X) COS(X) LN(X) LOG(X) LOG(B,X) Ect 8 aprile 2012 85

Operatori (III) Logici: NOT(!) AND(&&) 8 aprile 2012 86

Operatori (IV) OR( ) XOR 8 aprile 2012 87

Operatori (V) Confronto, da come risultati 1 oppure 0: =, <>!=, <= < >=, > <=> (NULL-safe), IS NULL, IS NOT NULL 8 aprile 2012 88

Operatori (VI) Se expr è più grande o uguale a min e expr è minore o oguale a max allora ritorna 1 altrimenti ritorna 0. expr BETWEEN min AND max expr NOT BETWEEN min AND max Equivalente a NOT (expr BETWEEN min AND max). 8 aprile 2012 89

Operatori (VII) Ritorna 1 se expr è uguale a qualsiasi altro valore nella lista di IN altrimenti ritorna 0. expr IN (value,...) expr NOT IN (value,...) Equivalente a NOT (expr IN (value,...)). 8 aprile 2012 90

Operatori (VIII) ISNULL(expr) COALESCE(list) Ritorna il primo elemento non-null nella lista: INTERVAL(N,N1,N2,N3,...) Ritorna 0 se N < N1, 1 se N < N2 ecc.o -1 se N è NULL. N1 < N2 < N3 <... < Nn 8 aprile 2012 91

Operatori (IX) Controllo di flusso: sono utili quando vogliamo eseguire dei test sui valori contenuti in una tabella e decidere cosa estrarre in base al risultato. CASE: la prima versione ritorna result quando value=compare_value; la seconda ritorna result quando la condizione è true; 8 aprile 2012 92

Operatori (X) IF: se expr1 è true ritorna expr2 altrimenti expr3; 8 aprile 2012 93

Operatori (XI) IFNULL: Se expr1 è not null ritorna expr1 altrimenti expr2; 8 aprile 2012 94

Operatori (XII) Funzioni su stringhe Funzioni Conversioni Case LOWER UPPER INITCAP Funzioni di Manipolazione Stringhe CONCAT SUBSTR LENGTH INSTR LPAD TRIM RIGHT 8 aprile 2012 95

Operatori (XIII) Funzione conversioni case: LOWER (str) LCASE(str) UPPER (str) UCASE(str) 8 aprile 2012 96

Operatori (XIV) Funzioni manipolazione stringhe: ASCII (str) : Ritorna il valore numerico del carattere più a sinistra di str BIN(N): Ritorna una stringa che rappresenta il valore binario di N 8 aprile 2012 97

Operatori (XV) BIT_LENGHT(str): Ritorna la lunghezza della stringa str in bit CHAR (N,...) : interpreta ogni argomento N come intero e ritorna una stringa consistente dei caratteri dati dal codice numerico degli interi 8 aprile 2012 98

Operatori (XVI) CHAR_LENGTH (str): ritorna la lunghezza della stringa misurata in caratteri. CHARACTER_LENGTH (str): sinonimo di char_length. CONCAT(str1,str2,...): ritorna la stringa che si ottiene concatenando gli argomenti. Ritorna NULL se un argomento è NULL 8 aprile 2012 99

Operatori (XVII) CONCAT_WS (separator,str1,str2, ): Il primo argomento è il separatore il resto gli argomenti CONV (N,from_base,to_base): converte i numeri tra differenti basi. 8 aprile 2012 100

Operatori (XVIII) ELT (N,str1,str2,str3, ): Ritorna str1 se N=1, str2 se N=2 ect FIELD (str,str1,str2,str3, ): Ritorna la posizione di str in str1,str2,ect 8 aprile 2012 101

Operatori (XIX) FIND_IN_SET (str,strlist): Ritorna un valore nel range tra 1 a N se la stringa str è nella lista delle stringhe strlist consistente di N sottostringhe, separate da,. HEX(N_o_S): ritorna il valore esadecimale della stringa 8 aprile 2012 102

Operatori (XX) INSERT (str, pos,len,newstr): Ritorna la stringa str con la substring alla posizione pos e per len caratteri di newstr. INSTR(str,substr): Ritorna la posizione della prima occorrenza della substr in str. 8 aprile 2012 103

Operatori (XXI) LEFT(str,len): Ritorna i len caratteri più a sinistra di str; LENGTH(str): Ritorna la lunghezza della stringa str in bytes; 8 aprile 2012 104

Operatori (XXII) LOCATE (substr,str)/(substr,str,pos): La prima sintassi ritorna la posizione delle prima occorrenza di substr in str, la seconda inizia la ricerca dalla posizione pos: LTRIM(str): Ritorna str con gli spazi iniziali rimossi: 8 aprile 2012 105

Operatori (XXIII) REPEAT(str,count): Ritorna una stringa consistente della stringa str, ripetuta countvolte: REPLACE(str,from_str,to_str):Ritorna la stringa str con tutte le occorrenze della stringa from_str sostituite con to_str: 8 aprile 2012 106

Operatori (XXIV) REVERSE(str): Ritorna la stringa invertita RIGHT(str,len): Ritorna i len caratteri più a destra di str RTRIM(str): Ritorna la stringa str con gli spazi finali rimossi 8 aprile 2012 107

Operatori (XXV) STRCMP(expr1,expr2): Ritorna 0 (zero) se le due stringhe sono uguali, -1 se il primo argomento è più piccolo del secondo, 1 altrimenti. expr LIKE pat [ESCAPE escape_char ]: Ritorna 1 oppure 0 8 aprile 2012 mysql> SELECT 'David!' LIKE 'David_'; -> 1 mysql> SELECT 'David!' LIKE '%D%v%'; -> 1 mysql> SELECT 'David!' LIKE 'David\_'; -> 0 mysql> SELECT 'David_' LIKE 'David\_'; -> 1 108

Operatori (XXVI) MATCH (col1,col2, ) AGAINST (expr[in BOOLENA MODE WITH QUERY EXPANSION]): MATCH... AGAINST() è utilizzata per ricerche full text, ritorna la rilevanza tra il testo che si trova nelle colonne (col1,col2,...) e la query expr. La similarità è un valore positivo in virgola mobile. La funzione match esegue una ricerca in linguaggio naturale per una stringa contro un text collection che è rappresentato da una o più colonne incluse in un indice FULL TEXT 8 aprile 2012 109

Full-Text Search (I) 8 aprile 2012 110

Full-Text Search (II) La ricerca di default è insensitive 8 aprile 2012 111

Full-Text Search (III) Mostriamo come recuperare il valore della rilevanza esplicitamente 8 aprile 2012 112

Full-Text Search (IV) Recuperiamo il valore della rilevanza e ordiniamo le righe in maniera decrescente per farlo usiamo MATCH sia nella SELECT che nel WHERE. 8 aprile 2012 113

Full-Text Search (V) E possibile eseguire una ricerca full-text in boolean mode, i segni + e indicano le parole che devono essere presente o assenti, rispettivamente per un match che occorre. 8 aprile 2012 114

Full-Text Search (VI) A volte la stringa di ricerca è troppo corta e potrebbe tralasciare dei risultati significativi, è possibile utilizzare query expansion che in genere implica che una ricerca è correlata con unaconoscenza sottintesa Attenzione perché può aumentare il rumore dei risultati. 8 aprile 2012 115