La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Sviluppare nel Web La programmazione Web oggigiorno viene sviluppata su livelli distinti ma complementari: Server side: Server Web Pagine HTML Programmazione.

Presentazioni simili


Presentazione sul tema: "Sviluppare nel Web La programmazione Web oggigiorno viene sviluppata su livelli distinti ma complementari: Server side: Server Web Pagine HTML Programmazione."— Transcript della presentazione:

1 Sviluppare nel Web La programmazione Web oggigiorno viene sviluppata su livelli distinti ma complementari: Server side: Server Web Pagine HTML Programmazione PHP,Perl,Python,Ruby,Bash Basi di Dati relazionali Client Side: Browser Web (web client) Javascript, Ajax (codice eseguito dal client) Flash, Java plugins locali, Adobe AIR

2 Flusso di una sessione Web

3 Gestire i Dati Files e DataBases, perchè scegliamo i DB MySQL nel L.A.M.P Metodi di Interrogazione: Architettura Client- Server Sicurezza, gestione degli accessi, letture scritture concorrenti, monitor delle prestazioni Strumenti Odierni: Server: appunto MySQLd Clients: Server-side: Php-MyAdmin Puri: mysql da riga di comando, SQLyog, Workbench, cursori in PHP/PERL/PYTHON

4 Terminologia DataBase: traducibile in italiano come "base di dati" non è un altro che un insieme di dati logicamente correlati fra loro. I Data Base Management System (DBMS) sono software in grado di gestire: capacità di gestire grandi quantità di dati condivisione dei dati fra più utenti e applicazioni utilizzo di sistemi di protezione e autorizzazione per l'accesso ai dati stessi

5 Ancora Terminologia RDBMS: Relational DataBase Management System Modello relazionale: organizza i dati in tabelle, basandosi sulle relazioni fra essi. E' un modello nato negli anni '70. Server: Servizio disponibile a specifici clienti Client: Cliente fruitore del Servizio, è l'interprete del Servizio stesso essendone il processore/visualizzatore dei dati presso l'utente.

6 Il mondo dei DataBase Visto l'ampio successo dei database relazionali, sono molti gli RDBMS presenti sul mercato: tra i principali, citiamo IBM DB2, Oracle, Microsoft SQL Server, Sybase, Filemaker Pro, Microsoft Access, Informix, PostgreSQL, SQLite, oltre naturalmente a MySql, sviluppato inizialmente dalla compagnia svedese MySQL AB, aquisita nel 2008 da SUN, aquisita nel 2010 a sua volta da Oracle. Alcuni di questi sono software proprietari, mentre altri fanno parte della categoria Open Source: questi ultimi, fra quelli citati, sono MySql, PostgreSQL ed SQLite.

7 Caratteristiche peculiari MySQL OpenSource con ampia comunità di sviluppo/supporto Velocità di risposta, MySQL con la tecnologia MyISAM diviene l' RDBMS più veloce al mondo Ampiamente utilizzato nel WEB Distribuito e Documentato in maniera da facilitarne la conoscibilità e l'accesso Con la versione 5 (stabile dall'ottobre 2005) MySQL è pronto per le soluzioni Enterprise.

8 Reperire MySQL Se Fornito dal provider: 1. Sfruttare PhpMyAdmin Server-side 2. Ottenere la porta di connessione per interfacciare via internet il nostro Client MySQL Altrimenti Downloads per conto nostro: http://dev.mysql.com/downloads/

9 Velocizziamo con Linux uhb@ArmonicShifter:~$ sudo su [sudo] password for utente: /home/utente# apt-get install mysql-server /home/utente# apt-get install phpmyadmin # apt-get install mysql-workbench-oss Se desideriamo SQLyog: /home/utente# apt-get install wine

10 Primi passi Accediamo a MySQL server con mysql-client # mysql -u root -p Visioniamo il catalogo e modifichiamo l'accesso > show databases; > use NOMEDB; > show tables; > select * from mysql.user where user='root'\G > update user set password=PASSWORD("nuova") where user='root'; > flush privileges; > drop database prova;

11 Configurazioni e Paths La configurazione di Mysql risiede solitamente in /etc/mysql/my.cnf utile aggiungere: ”default-character-set=utf8” I DataBases risiedono in /var/lib/mysql

12 Documentazione da terminale Tutti questi comandi da dove li prendiamo? Per il comportamento del client: > help Per il comportamento del Server: > help contents Helps utili > help Data Definition || Data Types

13 Contenuti, funzioni e Statements Help contents visualizza i contenuti per categoria. In questi risiedono anche le funzioni. Tutti i comandi SQL per interrogare ed estrarre i dati sono sempre denominati Statements, quindi: > help SELECT || help UPDATE

14 Fondamenti: Tabelle e SQL i dati vengono presentati in forma tabulare, cioè come un insieme di tabelle ciascuna composta da righe e colonne. ogni tabella contiene i dati relativi ad una entità. le colonne della tabella rappresentano i campi, ovvero le proprietà o attributi dell'entità. le righe della tabella esprimono le ricorrenze dell'entità. Insieme al modello relazionale è stato introdotto il linguaggio SQL (Structured Query Language).

15 Documentazione e References http://database.html.it/guide/leggi/87/guida- mysql/ http://dev.mysql.com/doc/refman/5.0/en/ http://a2.pluto.it/a2896.htm http://www.w3schools.com/sql/default.asp http://it.wikipedia.org/wiki/MySQL http://www.morpheusweb.it/html/manuali/sql.asp

16 Esempio di Tabella Ora esaminiamo un caso di progettazione di una base dati per esemplificare la fase di creazione di una o più tabelle. 1° passo: Scarichiamo/Reperiamo i Clients PhpMyAdmin è Server Side, solitamente già predisposto dal provider. WorkBench: http://dev.mysql.com/downloads/workbench/ SqlYog: http://code.google.com/p/sqlyog/

17 Tenere Presente Entità e dimensioni del progetto Definire le istanze (records di ogni tabella) Definire le tabelle (come classi di istanze) Tipi di dati Encoding dei caratteri Inserimento delle Date Le chiavi primarie Le ForeignKeys Costraints sono un'arma a doppio taglio

18 Chavi primarie e chiavi esterne Le tabelle in un database possono essere messe in relazione l’una con l’altra tramite delle chiavi. Una chiave si dice primaria quando ha un valore unico per le righe. Lo scopo è quello di legare i dati tra le tabelle senza dover ripetere i dati in tutte le tabelle. Una chiave si dice esterna se è il riferimento alla chiave primaria di un'altra tabella

19 Inserimenti di dati insert into Iscritti (nome, cognome, email, Corsi_id_corsi) VALUES ('giovanni', 'presa', 'ciao@yaho.it', 1)

20 Le Query SQL indispensabili select * from Iscritti where nome = 'giovanni' order by cognome; select * from Lezioni where obiettivi LIKE "comprensione%" Gli operatori LOGICI: > help logical operators select * from Iscritti where nome = 'giovanni' and cognome like '%sa%'; select * from Iscritti where nome = 'giovanni' or nome='giuseppe'

21 Contare, raggruppare, filtrare L'operatore GROUP BY raggruppa i risultati di una SELECT in base al campo specificato dopo il BY. L'operatore va usato in congiunzione con una funzione statistica (COUNT, SUM...). select nome, congome, count(*) from Iscritti where nome LIKE 'giovanni%' group by nome; L'operatore HAVING filtra ulteriormente i risultati visualizzati con GROUP BY. select nome,cognome, count(*) as total from Iscritti where nome like 'giovanni%' group by cognome having total > 1;

22 Cancellare e aggiornare i dati delete from Iscritti where nome is 'NULL'; delete from Iscritti where nome='fabio'; UPDATE Iscritti SET nome='franco', cognome='pagliuso' WHERE nome='giuseppe'; UPDATE Iscritti SET nome = replace(nome, "franco", "giuseppe");

23 Un pò di SQL – Selezionare i Dati SELECT * FROM nome_tabella SELECT COUNT(*) FROM nome_tabella SELECT COUNT(*), MAX(colonna1) FROM nome_tabella WHERE colonna2 = valore SELECT categoria, max(stipendio) FROM dipendenti GROUP BY categoria |(HAVING) SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC SELECT * FROM Persons WHERE LastName='Svendson' AND (FirstName='Tove' OR FirstName='Ola')

24 Select DISTINCT Il comando SELECT DISTINCT di SQL serve ad estrarre una sola volta ogni diversa occorenza riscontrata in un dato campo del DB. Spesso viene usato per creare le voci di menu in modo tale che, se una stessa categoria viene trovata più di una volta all'interno di una colonna, viene stampata a video una volta soltanto. DISTINCT: select distinct (nome) from Iscritti ORDER BY cognome ASC;

25 Subquery :Query dentro altre select * from Iscritti where id_iscritti in (select count(*) from Iscritti)

26 Varie Permessi GRANT SELECT ON acquisti.* TO luca@localhost IDENTIFIED BY 'password' WITH GRANT OPTION GRANT ALL ON acquisti.ordini TO paolo@localhost paolo@localhost REVOKE SELECT on acquisti.* FROM luca@localhost REVOKE ALL PRIVILEGES, GRANT OPTION FROM paolo@localhostpaolo@localhost UPDATE mysql.user SET Password = PASSWORD('pwd') WHERE User = 'root'; FLUSH PRIVILEGES;

27 Le JOINs: usare diverse tabelle L'INNER JOIN restituisce le righe delle tabelle se c'è un legame, altrimenti non le mostra. SELECT campi FROM prima_tabella INNER JOIN seconda_tabella ON prima_tabella.chiave_primaria = seconda_tabella.chiave_esterna select * from Iscritti as I, Corsi as C where I.Corsi_id_corsi=C.id_corsi; select *, replace('Programma_id_programma', 1, 'lamp') from Iscritti as I, Corsi as C where I.Corsi_id_corsi=C.id_corsi;

28 Altre Join Ia LEFT OUTER JOIN restituisce tutte le righe della prima tabella (nell’esempio Impiegati), anche se non ci sono corrispondenze nella seconda tabella (nell’esempio Ordini). SELECT campi FROM prima_tabella LEFT OUTER JOIN seconda_tabella ON prima_tabella.chiave_primaria = seconda_tabella.chiave_esterna Una RIGTH OUTER JOIN restituisce tutte le righe della seconda tabella, anche se non ci sono legami con la prima SELECT campi FROM prima_tabella RIGTH OUTER JOIN seconda_tabella ON prima_tabella.chiave_primaria = seconda_tabella.chiave_esterna


Scaricare ppt "Sviluppare nel Web La programmazione Web oggigiorno viene sviluppata su livelli distinti ma complementari: Server side: Server Web Pagine HTML Programmazione."

Presentazioni simili


Annunci Google