SEFOC – SETTORE FORMAZIONE CONTINUA DEL PERSONALE CORSO MYSQL AVANZATO ROBERTO PENNOLINO – CARMELO MASSIMO PRIOLO PALERMO – 07 | 06 | 2011.

Slides:



Advertisements
Presentazioni simili
Interrogazioni Semplici Le operazioni di interrogazione vengono specificate per mezzo dellistruzione select select ListaAttributi from ListaTabelle [where.
Advertisements

TIPI STANDARD DI SQL BOOLEAN Valori: vero, falso CHAR(n)
Structured Query Language
Stored Procedure Function Trigger
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
1 DATA BASE GESTIONE VENDITE. 2 QUERY1 Per ogni Cognome di Rappresentante e Descrizione di Prodotto calcolare la somma delle quantità vendute: Somma (Quantità)
SQL92 e XQuery1.0 a confronto1 SQL92 E XQUERY1.0 A CONFRONTO Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria - Sede di Modena Corso.
Biglietti e Ritardi: schema E/R
1 Misura Derivata: esempio dei biglietti CostoMedioBiglietto (CMB) calcolato come INCASSO/NUM_BIG. SUM AVG Implementazione in Analysis Services 1. Si definisce.
Biglietti: schema E/R.
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
DML – Data Manipulation Language
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
19/01/2014 Viste. 19/01/2014 Viste Le Viste Logiche o Viste o View possono essere definite come delle tabelle virtuali, i cui dati sono riaggregazioni.
1 Corso di Laurea in Biotecnologie Informatica (Basi di Dati) SQL: Data Manipulation Language (DML) Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi,
Laboratorio di Basi di Dati Introduzione ad Access 2ª Parte.
Access: Query semplici
SQL: Lezione 7 Nataliya Rassadko
SQL: Lezione 10 Nataliya Rassadko
SQL Per la definizione di basi di dati SQL per definire ed amministrare Ogni utente puo definire una base di dati di cui diventa lamministratore potendo.
Esercitazione.
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
SELECT STATEMENT Clausola WHERE permette di limitare il numero di record da estrarre SELECT */ [DISTINCT] colonna/ espressione [alias],… FROM table [WHERE.
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
Creazione e manipolazione tabelle. TABELLE una tabella può essere creata in qualsiasi momento,anche quando gli utenti stanno usando il database la struttura.
SQL basato su ANSI (American National Standards Institute) – standard SQL SQL – Structured Query Language è un linguaggio dichiarativo e permette di comunicare.
Basi di dati Claudia Raibulet
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL OPERATORI INSIEMISTICI IN SQL Siano due tabelle: GiochiSolitari(CodiceGioco, NomeGioco, PrezzoGioco)
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Realizzato da Roberto Savino
sql: esempi di linguaggio sql nell'implementazione mysql
Basi di Dati e Sistemi Informativi
BIOINFO3 - Lezione 51 INSERIMENTO DEI DATI Visto come si creano le tabelle (sinora tristemente vuote), cominciamo ad occuparci di come riempirle con dei.
Elaborazione dati informatici
Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione.
SQL Interrogazioni. 2 Interrogazioni in SQL Non esiste un SQL standard (vari dialetti) Formulazione di interrogazioni (query) è parte del Data Manipulation.
Microsoft Access (parte 5) Introduzione alle basi di dati Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
1 Data warehousing con SQL Server SQL Server è un RDBMS (Relational DataBase Management System) Analysis Services è un componente di SQL Server che offre.
Interrogare il database
Microsoft Access Query (II), filtri.
Basi di dati I Prof.ssa Rosalba Giugno Prof. Alfredo Pulvirenti SQL :Structured Query Language: SELECT (IV) SQL (Slide tratte in parte da da Atzeni, Ceri,
Interrogazione di una base di dati relazionale
Pagine ASP parte 3 I data base Stefano Schacherl.
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
Algebra relazionale (III). Esempi di Interrogazioni: 3 Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di Tutti gli impiegati?
Raggruppamento in SQL Esempio di raggruppamento
Microsoft Access Query (III).
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
1 Basi di Dati S tructured Q uery L anguage Appunti Matteo Longhi.
Interrogazioni (parte 2)
MySQL Database Management System
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere. L’interrogazione.
Vincoli Interrelazionali Per i vincoli visti l’inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale,
Vincoli interrelazionali
Raggruppamenti e target list scorretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =
Lezione 6 - SQL. Linguaggi per DB Per interagire con le basi di dati occorre un linguaggio Linguaggio SQL (Structured Query Language), linguaggio standardizzato.
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere. L’interrogazione.
Funzionalità del DBMS relazionale l Funzioni per –definizione della base di dati –inserimento / rimozione /aggiornamento di informazioni deve soddisfare.
Approfondimenti SQL.
Basi di Dati e Sistemi Informativi Esercitazione: Il Linguaggio SQL (DDL+DML) Home page del corso:
Microsoft Access Filtri, query. Filtri Un filtro è una funzione che provoca la visualizzazione dei soli record contenenti dati che rispondono a un certo.
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
SQL Linguaggio per l’interrogazione di una base dati.
E. Tinelli SQL come linguaggio di manipolazione dei dati 1 DML – Data Manipulation Language.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Il linguaggio SQL (Structured Query Language) è il linguaggio standard per creare, manipolare e interrogare database relazionali. SQL non è case-sensitive:
Esercizi SQL Group by. CREATE TABLE dipendente (codDip CHAR(8) NOT NULL UNIQUE PRIMARY KEY, cognome CHAR(60) NOT NULL, nome CHAR(60) NOT NULL, stipendio.
Transcript della presentazione:

SEFOC – SETTORE FORMAZIONE CONTINUA DEL PERSONALE CORSO MYSQL AVANZATO ROBERTO PENNOLINO – CARMELO MASSIMO PRIOLO PALERMO – 07 | 06 | 2011

CORSO MYSQL AVANZATO ROBERTO PENNOLINO PALERMO 07 | 06 | 2011 Programma del corso Differenti tipi di tabelle in MySQL (Roberto Pennolino) MyISAM, InnoDB Differenti tipi di dati (Roberto Pennolino) dati numerici - dati alfanumerici - dati temporali Opzioni di definizione dei dati – DDL (Roberto Pennolino) Creazione di tabelle (Roberto Pennolino) Inserimento e modifica di dati nelle tabelle (Carmelo Massimo Priolo) Insert, replace, update, delete, truncate table Select (Carmelo Massimo Priolo) Uso degli alias in MySQL (Carmelo Massimo Priolo) where, order by, aggregazione (group by, having), calcolo dei valori, query nidificate, like, null, inner join, outer join (Carmelo Massimo Priolo) Integrità referenziale (Carmelo Massimo Priolo) Viste (Roberto Pennolino) Importazione ed esportazione dei dati (Roberto Pennolino) Backup e restore del database (Roberto Pennolino)

Documentazione MySQL Server: IP: Utente: utente Password: utente Slide e documentazione di riferimento

Struttura del DB di esempio

SELECT 1/n Sintassi SELECT FROM WHERE GROUP BY HAVING ORDER BY LIMIT

SELECT 2/n Select * from progetti Visualizza tutte le righe e tutte le colonne della tabella progetti Select 1 +1 Esempio di espressione senza rif. Tabella Il risultato è una tabella di una sola riga e colonna con valore 2. La colonna avrà nome “1+1” Select As somma (ALIAS su colonna) La colonna del risultato dell’espressione si chiamerà “somma”

SELECT Select cognome, nome from anagrafica Seleziona cognome e nome dalla tabella anagrafica Select left(cognome, 3), left(nome,3) from anagrafica; Prende i primi 3 caratteri del nome e del cognome Select left(T.cognome, 3) c3, left(T.nome,3) n3 from anagrafica as T; Stessa della precedente con alias di colonna (c3 ed n3) e di tabella. Nota. La LEFT restituisce la stringa in input se questa è minore del numero di caratteri richiesti

SELECT – Funzioni Concat( stringa1,….,stringa2) concatena più stringhe Length( stringa) numero caratteri di stringa Left( stringa, n ) Estrae i primi n caratteri di stringa Right( stringa, n ) Estrae gli ultimi n caratteri di stringa Substr( stringa, pos, n ) prende n caratteri a partire da pos Coalesce( espr1, espr2, ….., esprn ) Restituisce la prima espressione non nulla Nullif( espr1, espr2 ) Restituisce NULL se le espressioni sono uguali IFNull ( espr1, espr2 ) ritorna la prima espressione non nulla. Come Coalesce ma con 2 soli parametri IF( cond, espr1T, espr2F )

SELECT – funzioni di aggregazione Avg() – Calcola la media aritmetica dei valori. Null non considerati; Min() – Trova il valore minimo dell’insieme Max() - Trova il valore Massimo dell’insieme Sum() – Calcola la somma degli elementi dell’insieme. Null non considerati; Count(*) – Conta le righe della tabella; Count(col) – Il numero degli elementi della colonna ‘col’. I NULL sono esclusi dal conteggio; Esempio: Select count(*) from progetti; Conta il numero di righe della tabella progetti

Esempi di funzioni di aggregazione Select max(costo) from costiorari; Select avg(costo) from costiorari Select min(costo) from costiorari Select min(costo) minimo, max(costo) massimo From CostiOrari;

WHERE La clausola Where permette di applicare un filtro alle righe da selezionare. Le righe che soddisfano il filtro saranno selezionate. Select cognome, nome from anagrafica Where cognome=‘rossi’; Seleziona tutte le righe che hanno rossi nella colonna “cognome” Select cognome, nome from anagrafica Where left(cognome,3)=‘ros’ and left(nome,2)=‘al’ ; Select * from anagrafica Where cognome like ‘r%’; % = Qualsiasi sequenza di caratteri, anche di lunghezza 0 _ = Esattamente un carattere Select * from anagrafica Where cognome like ‘ross_’; Prende le righe con cognome di 5 caratteri con i primi 4 caratteri uguali a ‘ross’

WHERE – Espressioni regolari Le espressioni regolari sono regole attraverso le quali si possono rappresentare insiemi di stringhe. Un’espressione regolare ritorna 1 se una data stringa rispetta un determinato ‘pattern matching’ Select * from anagrafica where nome REGEXP ‘^[a-c]’ Prende tutti i nomi che iniziano per a,b o c

REGEXP - caratteri ^ inizio riga $fine riga.qualunque caratter incluso return e new line *zero o più ripetizioni del carattere/sequ.za che precede +uno o più ripetizioni del carattere/sequ.za che precede ?Zero o 1 carattere abc| cdesequenza ‘abc’ o ‘cde’ (abc)*0 o più sequenze di ‘abc’ {n}esattamente n occorrenze {n,m}occorrenze in numero comprese tra n ed m. m opzionale [a-z]range di caratteri tra a e z [^a-z]carattere non appartenente a “a,b,c,…,z” \\. Per introdurre un carattere speciale. Esempio \\+ \\*\\ c* equivale c{0,} ‘1\\+2’ Equivale alla stringa ‘1+2’ c+ equivale c{1,} c? equivale c{0,1}

REGEXP Select * from anagrafica Where nome REGEXP ‘^(max)+$’ Prende tutte le righe della tabella anagrafica con nome composto da una o più ripetizioni della stringa ‘max’ ‘max’, ‘maxmax’, ‘maxmaxmax’, ecc…. Scrivere una select che estrae da anagrafica tutti i nominativi che iniziano per a, b o c Soluzione: Select * from anagrafica where nome REGEXP ‘^[a-c]’

JOIN – Prodotto Cartesiano A JOIN B è il prodotto cartesiano tra A e B Select A.ID, A.nome, A.IDAteneo IDA, B.IDAteneo IDB, B.Ateneo from A JOIN B Equivale a: Select A.ID, A.nome, A.IDAteneo IDA, B.IDAteneo IDB, B.Ateneo from A,B Genera una tabella con nA*nB righe. Sono tutte le possibile coppie formate da una riga di A ed una riga di B IDnomeIDAteneo 1Lagalla3 2Valenti3 3Rossi4 IDAteneoAteneo 3Unipa 4Unimi IDnomeIDAIDBAteneo 1Lagalla33Unipa 1Lagalla34Unimi 2Valenti33Unipa 2Valenti34Unimi 3Rossi43Unipa 3Rossi44Unimi A B

INNER JOIN Select A.ID, A.nome, A.IDAteneo IDA, B.IDAteneo IDB, B.Ateneo From A inner join B On A.idateneo = B.idateneo Il risultato sono tutte le coppie di righe, una da A e l’altra da B, tali che idateneo sia uguale in entrambe. IDnomeIDAteneo 1Lagalla3 2Valenti3 3Rossi4 IDAteneoAteneo 3Unipa 4Unimi IDnomeIDAIDBAteneo 1Lagalla33Unipa 2Valenti33Unipa 3Rossi44Unimi A B

LEFT JOIN Select A.ID, A.nome, A.IDAteneo, B.IDAteneo, B.Ateneo From A left join B On A.idateneo = B.idateneo Il risultato sono tutte le coppie di righe, una da A e l’altra da B, tali che idateneo sia uguale in entrambe. Se non esiste la riga B corrispondente, questa è sostituita da NULL IDnomeIDAteneo 1Lagalla3 2Valenti3 3Rossi4 4Bianchi1 IDAteneoAteneo 3Unipa 4Unimi IDnomeIDAIDBAteneo 1Lagalla33Unipa 2Valenti33Unipa 3Rossi44Unimi 4Bianchi1NULL A B

RIGHT JOIN Select A.ID, A.nome, A.IDAteneo, B.IDAteneo, B.Ateneo From A right join B On A.idateneo = B.idateneo Il risultato sono tutte le coppie di righe, una da A e l’altra da B, tali che idateneo sia uguale in entrambe. Se non esiste la riga A corrispondente, questa è sostituita da NULL IDnomeIDAteneo 1Lagalla3 2Valenti3 3Rossi4 4Bianchi1 IDAteneoAteneo 3Unipa 4Unimi 5Unict IDnomeIDAIDBAteneo 1Lagalla33Unipa 2Valenti33Unipa 3Rossi44Unimi NULL 5Unict A B

Group by - Having La clausola group by permette di raggruppare le righe secondo valori uguali di colonne specificate Select count(*), idanagrafica from costiorari Group by idAnagrafica; Select max(costo), idanagrafica from costiorari Group by idAnagrafica; Select max(costo) as mcosto, idanagrafica from costiorari Group by idAnagrafica Having mcosto <= 20 ;

Campi tipo Datetime Formati che indicano una Data. 'YYYY-MM-DD HH:MM:SS' o 'YY-MM-DD HH:MM:SS‘ 'YYYYMMDDHHMMSS' o ‘YYMMDDHHMMSS' 'YYYY-MM-DD' o 'YY-MM-DD‘ 'YYYYMMDD' o 'YYMMDD' Come separatore si può utilizzare qualsiasi carattere Indica il 1 dicembre 2010

Datetime: Funzioni Now()Data ed ora corrente Current_Date() Data senza orario Curtime() Ora corrente (TIME) DATE_ADD(, INTERVAL unit ) DATE_ADD(, ) DATE_SUB(, INTERVAL unit ) DATE_SUB(, ) DATE_ADD( ‘ ’, INTERVAL 2 DAY ) Cosa restituisce?

DateTime: unit SECOND MINUTE HOUR DAY WEEK MONTH

Campi Binary Large Object: BLOB I campi di tipo BLOB servono per memorizzare grandi quantità di dati binari provenienti da file. Esistono tipi di campi BLOB: BLOB, MEDIUMBLOB e LARGEBLOB TINYBLOB può contenere massimo 255 byte. E’ utilizzato 1 byte per indicare la dimensione del dato memorizzato; BLOB può contenere massimo byte (65Kb). Sono usati 2 byte per indicare la dimensione del dato memorizzato; MEDIUMBLOB può contenere massimo byte (16 Mb). Sono usati 3 byte per la dimensione del dato; LARGEBLOG può contenere fino a byte (4 Gb). Usati 4 byte. I campi Blob occupano L +

Campi Binary Large Object: BLOB Per utilizzare i campi BLOB, occorre accedere al filesystem del Server L’Utente deve avere il privilegio FILE per leggere/scrivere sul filesystem GRANT FILE on *.* TO ‘ ’; GRANT FILE on *.* TO (esempio ) Esempio per MySql Server su Windows Update t Set b=LOAD_FILE(“C:/immagine.jpg”) Where idT=7; Select b From t Where idT=7 INTO DUMPFILE “c:/immagine2.jpg”; Insert into t (b) values ( LOAD_FILE(“C:/immagine.jpg”) );

Campi Binary Large Object: BLOB Esempio per Linux/Unix Update t Set b=LOAD_FILE(“/tmp/mysql/prova.pdf”) Where idT=7; Select b From t Where idT=7 INTO DUMPFILE “/tmp/mysql/prova2.jpg”; Insert into t (b) values ( LOAD_FILE(“/tmp/mysql/prova3.jpg”) ); NOTA La Select non sovrascrive eventuali file esistenti. Ciò è fatto per motivi di sicurezza per evitare sovrascritture di file di sistema; Il Path del file deve essere ASSOLUTO sia per Windows che per Linux; Su linux la LOAD_FILE vuole le doppie virgolette obbligatoriamente;

SubQuery Una subquery è una select contenuta dentro un’altra istruzione Select * from costiorari Where costo = (select min(costo) from costiorari ) Cosa fa questa istruzione?

Subqueries with EXISTS or NOT EXISTS Select * From costiorari Where Exists (Select * From anagrafica); Esempio realistico: Subquery correlate. Select * From anagrafica Where EXISTS (Select * From progetti Where progetti.idResponsabileScientifico = anagrafica.idanagrafica ) Quesito. Trovare i docenti con il compenso massimo e minimo

Subquery su clausola FROM La subquery può ritornare un insieme di righe, quindi una tabella che può essere utilizzata in una istruzione Select. Select * from ( Select nome, cognome from Anagrafica Where nome like ‘al%’ ) as tab Where tab.cognome like ‘bi%’; Questa istruzione nella subquery estrae tutte le righe con nome che inizia per AL. La query esterna filtra da queste righe solo quelle che hanno in cognome che iniza per BI

Prepared Statement Sono istruzioni SQL memorizzate nel Server, che possono accettare parametri ed eseguite su richiesta Sono compilare, quindi sintatticamente corrette Prendono variabili come parametri Creazione Prepare stmt1 From ‘Select * from progetti Where idProgetto=?’ Esecuzione: = ‘1’; Execute stmt1 Eliminazione: Deallocate Prepare stmt1;

Select Into variabili Esiste la possibilità di interrogare le tabelle e mettere il risultato dentro dell variabile. Il risultato deve essere uno scalare. Creazione Inizializzazione Select min(costo), From costiorari; Stampiamo il

Query dinamiche Nome'; ='Progetti’; = concat('Select ' From Prepare sqldinamica Execute sqldinamica; Deallocate Prepare sqldinamica;

Creare Funzioni Sintassi DELIMITER $$ Create Function ( parametri ) RETURNS DETERMINISTIC BEGIN DECLARE ; RETURN ; END$$ DELIMITER ;

Esempio di funzione Funzione che raddoppia i valori di ingresso DELIMITER $$ Create Function Raddoppia ( v INT ) RETURNS INT DETERMINISTIC BEGIN RETURN v+v; END$$ DELIMITER ;

Esecuzione della funzione Esempi di chiamata di funzione Select Raddoppia(10); Select Raddoppia(10+10); Select Raddoppia(10 * 3); Non supporta le subquery Errore… select raddoppia ( select max(idprogetto) from progetti );

Stored Procedure Sintassi DELIMITER $$ CREATE PROCEDURE ( ) BEGIN END$$ DELIMITER ;

Esempio di Stored Procedure DELIMITER $$ CREATE PROCEDURE ProcTest (IN filtro varchar(64) ) BEGIN Select * from progetti inner join timesheets on progetti.idprogetto=timesheets.idprogetto Where nome = filtro; END$$ DELIMITER ;

Esecuzione della Stored Procedure Il comando Call permette di invocare una stored procedure. Call ProcTest(‘ProgettoA’); Questo camando chiama la Stored Procedure ProcTest passando il parametro ‘ProgettoA’

Esempio di Stored Procedure e parametri locali DELIMITER $$ CREATE PROCEDURE ProcTest2 () BEGIN Declare massimo int; Declare minimo int; Select max(idanagrafica), min(idanagrafica) into massimo, minimo From anagrafica; select minimo, massimo; END$$ DELIMITER ;

CURSORI Declare CURSOR FOR Select…. Open Fetch INTO Close LA FETCH dentro un LOOP Occorre un HANDLER per la gestione della fine dell’elenco dei record

Esempio 1/2 DELIMITER $$ CREATE PROCEDURE `cursore`() BEGIN Declare cof DECIMAL(9,2) DEFAULT 0.0; Declare progetto varchar(32); Declare NonTrovato int DEFAULT 0; Declare Somma Decimal(11,2) DEFAULT 0.0; Declare curr CURSOR FOR select cofinanziamento, nome from progetti; Declare CONTINUE HANDLER FOR NOT FOUND SET NonTrovato = 1;

Esempio 2/2 Open curr; read_loop: LOOP Fetch curr INTO cof, progetto; IF NonTrovato THEN LEAVE read_loop; END IF; Set somma = somma + cof; END LOOP; Close curr; Select somma; END$$ DELIMITER;

Il comando IF IF THEN [ELSEIF THEN... [ELSE ] END IF

I LOOP 1/2 [begin_label:] LOOP statement_list END LOOP LEAVE label ITERATE label

I LOOP 2/2 La Repeat Esce dal ciclo appena la condicione è VERA [begin_label:] REPEAT statement_list UNTIL search_condition END REPEAT La WHILE esce dal ciclo se la condizione è FALSA [begin_label:] WHILE search_condition DO statement_list END WHILE