Creazione di un database MySQL

Slides:



Advertisements
Presentazioni simili
TIPI STANDARD DI SQL BOOLEAN Valori: vero, falso CHAR(n)
Advertisements

Structured Query Language
DBMS (DataBase Management System)
SQL applicato a SQL Server
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Sistemi per il recupero delle informazioni
Biglietti: schema E/R.
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
1 SQL come linguaggio di definizione di dati Eugenio Di Sciascio.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
SCUOLA INTERUNIVERSITARIA SICILIANA DI SPECIALIZZAZIONE PER LINSEGNAMENTO SECONDARIO Classe di Concorso: 42A Massimo Mancino MODULO DIDATTICO - Ambienti.
SQL Structured Query Language
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.
Corso di Informatica (Basi di Dati)
1 Corso di Laurea in Biotecnologie Informatica (Basi di Dati) SQL: Data Manipulation Language (DML) Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi,
SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.
Esercitazione 5 MySQL Laboratorio di Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR -
Basi di dati Università Degli Studi Parthenope di Napoli
SQL: Lezione 7 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.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Equivalenza di espressioni
SQL SQL (pronunciato anche come l’inglese sequel) è l’acronimo di Structured Query Language (linguaggio di interrogazione strutturato) E’ un linguaggio.
Manipolazione dei dati I comandi SQL che permettono di modificare il contenuto di una base di dati sono insertdeleteupdate insert ha la seguente sintassi:
Introduzione alle basi di dati
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 IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Manipolazione dei dati
Realizzato da Roberto Savino
Corso di Basi di Dati Il Linguaggio SQL Home page del corso:
sql: esempi di linguaggio sql nell'implementazione mysql
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:
BIOINFO3 - Lezione 081 create table est( gi int unsigned primary key auto_increment, acc char(8)not null, nome varchar(20), descrizione varchar(255),
BIOINFO3 - Lezione 51 INSERIMENTO DEI DATI Visto come si creano le tabelle (sinora tristemente vuote), cominciamo ad occuparci di come riempirle con dei.
BIOINFO3 - Lezione 41 ALTRO ESEMPIO ANCORA Progettare il comando di creazione di una tabella di pubblicazioni scientifiche. Come chiave usare un numero.
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre Utenti e privilegi del database - 1 Root è lutente amministratore predefinito, ma.
BASI DI DATI - MySql Centro di Ateneo per i Servizi Informatici
LINGUAGGIO S Q L breve presentazione curata da Aldo Pappalepore
Microsoft Access (parte 5) Introduzione alle basi di dati Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Modulo 5 - Database. Contenuti della lezione 5.1.1Concetti Fondamentali 5.1.2Organizzazione di un Database 5.1.3Relazioni 5.2.1Lavorare con i database.
Percorso didattico per l’apprendimento di Microsoft Access Modulo 3
Pagine ASP parte 3 I data base Stefano Schacherl.
Microsoft Access Maschere (II).
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.
Lezione 19 Riccardo Sama' Copyright  Riccardo Sama' Access.
IV D Mercurio DB Lezione 2
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.
SQL (III) Data Definition Language/ Data Manipulation Language.
MySQL Database Management System
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
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
© 2015 Giorgio Porcu - Aggiornamennto 28/03/2015 UdA 1A Database Progettazione Fisica G IORGIO P ORCU
Microsoft Access (parte 3) Introduzione alle basi di dati Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Cloud Tecno V. Percorso didattico per l’apprendimento di Microsoft Access 2 - Le tabelle.
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.
Access Breve introduzione. Componenti E’ possibile utilizzare Access per gestire tutte le informazioni in un unico file. In un file di database di Access.
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:

Creazione di un database MySQL Dopo esserci collegati al server MySQL con: mysql -u root -p -h pc_docente dal prompt possiamo creare un database col comando: mysql> CREATE DATABASE video_miocognome; … e poi impostarlo come database di default: mysql> USE video_miocognome; NOTA: Una volta creato il database, è possibile anche selezionarlo direttamente nel comando di avvio della shell di MySQL con: mysql -u root -p -h pc_docente video_miocognome Per eliminare un database, con relativa perdita di tutti i dati, facciamo uso del comando: mysql> DROP DATABASE video_miocognome; Per uscire dalla shell di MySQL: mysql> exit; CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005

Esecuzione dei comandi: l’interfaccia grafica “Query Browser” (1) Per inviare i comandi ad un server MySQL è possibile utilizzare il programma “Query Browser”, come indicato nelle figure sottostanti: Forniamo i dati per l’accesso al database CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005

Esecuzione dei comandi: l’interfaccia grafica “Query Browser” (2) Ad esempio, per listare i database creati sul server: 1 - Immettiamo il comando in questa casella … 2 – Clicchiamo sul pulsante “Execute” oppure premiamo Ctrl+Invio … 3 – I risultati ci vengono mostrati nell’area sottostante “Resultset 1” CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005

I tipi di dati numerici Le colonne delle tabelle possono essere di tipo: Numerico, Stringa, Data/Ora. I principali tipi numerici sono: Nome Val. Minimo Val. Massimo Note TINYINT -128 +127 Unsigned 0-255 (2^8) BOOLEAN 0=Falso, <>0=Vero SMALLINT -32.768 32.767 Unsigned 0-65.535 (2^16) MEDIUMINT -8.388.608 8.388.607 Unsigned 0-16.777.215 (2^24) INTEGER -2.147.483.648 2.147.483.647 Unsigned 0-4.294.967.295 (2^32) BIGINT -9223372036854775808 9223372036854775807 Unsigned (2^64) 0-18446744073709551615 FLOAT Numero a singola precisione. Valori da -3.402823466E+38 a -1.175494351E-38, 0, da 1.175494351E-38 a 3.402823466E+38. Unsigned=non negativo DOUBLE Numero a precisione doppia. Values da -1.7976931348623157E+308 a -2.2250738585072014E-308, 0, e da 2.2250738585072014E-308 a 1.7976931348623157E+308. Unsigned=non negativo Per questi tipi (bool escluso) è possibile aggiungere la parola chiave UNSIGNED. Il tipo SERIAL equivale a “BIGINT UNSIGNED NOT NULL AUTO_INCREMENT” ed è un progressivo automatico. CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005

I tipi di dati stringa e data/ora I principali tipi di dati stringa sono: Tipo Num. Min. di caratteri Num. Max di caratteri Note CHAR(M) 255 A lunghezza fissa VARCHAR(M) 65.532 (255 fino alla v. 4) A lunghezza variabile TEXT 65.535 I principali tipi di dati data/ora sono: Tipo Val. Min. Val. Max Note DATE '1000-01-01' '9999-12-31' Formato 'YYYY-MM-DD' DATETIME '1000-01-01 00:00:00' '9999-12-31 23:59:59' TIMESTAMP '1970-01-01 00:00:00' ‘2037-12-31 23:59:59’ TIME * '-838:59:59' '838:59:59' Formato 'HH:MM:SS' * Il numero di ore è così elevato (838) per consentire differenze tra orari che superino le 24 ore. CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005

Lo schema del database video_miocognome PRESTITI Codice prestito Codice_supporto Codice_cliente Data_prestito Data_restituzione Prezzo REGISTI Codice_regista Cognome Nome FILM Codice_film Titolo Codice_regista Codice_protagon Anno 1 SUPPORTI Codice supporto Tipo_supporto Codice_film Quantità 1 1 8 8 8 8 8 ATTORI Codice_attore Cognome Nome 1 CLIENTI Codice_modulo Cognome Nome Telefono 1 Le relazioni sono di tipo: Uno-a-uno Uno-a-molti (in questo schema) Molti-a-molti CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005

Le prime tre forme normali NF = Normal Form (Esempi) Schema errato Schema corretto ATTORI Codice: (es. 12) Nome: (es. Sam Neill) ATTORI Codice Cognome Nome 1NF FILM Codice Titolo Nome Regista ... FILM Codice Titolo Cod. Regista (registi in altra tabella) … 2NF PRESTITI Codice Codice supporto Codice Cliente N. telefono cliente … PRESTITI Codice Codice supporto Codice Cliente N. telefono cliente (tabella clienti) 3NF CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005

Creazione di una tabella DDL (Data Definition Language) L’istruzione per creare la tabella “registi”, da eseguire al prompt di MySQL, è la seguente: CREATE TABLE registi ( codice_regista INTEGER PRIMARY KEY, nome VARCHAR(50) NOT NULL, cognome VARCHAR(50) NOT NULL ); Significato delle parole chiave: PRIMARY KEY: indica che il campo codice è la chiave primaria NOT NULL: indica che il valore è da inserire obbligatoriamente, cioè non può essere non valorizzato (NULL) Per eliminare una tabella, l’istruzione è la seguente: DROP TABLE registi; Note: premendo i tasti direzionali “Sù” e “Giù” possiamo scorrere la “storia” dei comandi inviati con la shell di MySQL. Per chiarezza del codice SQL è consigliato scrivere le parole chiave in maiuscolo, quelle scelte dall’utente in minuscolo. CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005

Modifica della struttura di una tabella (DDL) Aggiunta di una colonna (campo): ALTER TABLE registi ADD COLUMN note VARCHAR(100); Modifica di una colonna: ALTER TABLE registi MODIFY COLUMN note VARCHAR(150); Vediamo il risultato con: DESC registi; Eliminazione di una colonna: ALTER TABLE registi DROP COLUMN note; Creazione di un indice univoco: CREATE UNIQUE INDEX idx_registi ON registi(nome,cognome); La parola “unique” è opzionale. Se inserita indica che la coppia nome+cognome dei registi non deve ripetersi. Un indice è utile per una ricerca rapida basata sui campi indicizzati ma, allo stesso tempo, rallenta i tempi di esecuzione delle altre istruzioni di manipolazioni dei dati. CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005

Creazione della tabella “attori” DDL (Data Definition Language) L’istruzione per creare la tabella “attori”, da eseguire al prompt di MySQL, è la seguente: CREATE TABLE attori ( codice_attore INTEGER PRIMARY KEY, nome VARCHAR(50) NOT NULL, cognome VARCHAR(50) NOT NULL ); Creazione di un indice univoco: CREATE UNIQUE INDEX idx_attori ON attori(nome,cognome); CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005

Relazioni fra tabelle (1) Le relazioni possono essere impostate solo se le tabelle sono di tipo INNODB, per cui è necessario modificare il tipo tabella: ALTER TABLE registi TYPE=INNODB; ALTER TABLE attori TYPE=INNODB; Creiamo la tabella “film”, collegata col le tabelle “registi” ed “attori” in quanto per ogni film impostiamo un regista ed un attore protagonista: CREATE TABLE film ( codice_film INTEGER PRIMARY KEY, titolo VARCHAR(100) NOT NULL, codice_regista INTEGER NOT NULL, FOREIGN KEY (codice_regista) REFERENCES registi(codice_regista) ON DELETE CASCADE, codice_attore INTEGER NOT NULL, FOREIGN KEY (codice_attore) REFERENCES attori(codice_attore) ON DELETE CASCADE, anno INTEGER NOT NULL ) TYPE=INNODB; CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005

Relazioni fra tabelle (2) Con riferimento alla relazione tra la tabella “film” e la tabella “registi”, notiamo che il campo che collega le due tabelle è il codice regista e, nella tabella “film”, è chiamato “chiave esterna” mentre nella tabella “registi” deve essere chiave primaria. Per rivedere l’SQL di creazione delle tabelle: SHOW CREATE TABLE registi; SHOW CREATE TABLE attori; SHOW CREATE TABLE film; La clausola “ON DELETE CASCADE” consente di eliminare automaticamente a catena tutti i film associati ad un regista se questo ultimo viene eliminato (USARE CON CAUTELA). Lo stesso vale per la cancellazione di un attore. CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005

Esercitazione N. 2.1 Create le tabelle “supporti”, “clienti” e “prestiti”: SUPPORTI Campo Tipo Ampiezza Vincoli codice_supporto Intero tipo Varchar 3 Non nullo codice_film quantità ATTENZIONE: individuare opportunamente chiavi primarie e chiavi esterne non specificare la clausola “ON DELETE CASCADE” sulla tabella “prestiti” CLIENTI Campo Tipo Ampiezza Vincoli codice_cliente Intero nome Varchar 50 Non nullo cognome telefono 40 PRESTITI Campo Tipo Ampiezza Vincoli codice_prestito Intero codice_supporto Non nullo codice_cliente data_prestito Data data_restituzione prezzo Float CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005

DML (Data Manipulation Language) INSERT - inserimento di record (1) REGISTI INSERT INTO registi VALUES(1,’Roberto’,’Rossellini’); INSERT INTO registi VALUES(2,’Steven’,’Spielberg’); INSERT INTO attori VALUES(1,’Anna’,’Magnani’); INSERT INTO attori VALUES(2,’Sam’,’Neill’); ATTORI INSERT INTO film VALUES (1,'Roma città aperta',1,1,1945); INSERT INTO film VALUES (2,'Jurassic Park',2,2,1993); FILM INSERT INTO supporti VALUES (1,’DVD’,1,3); INSERT INTO supporti VALUES (2,’VHS’,2,1); SUPPORTI CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005

DML (Data Manipulation Language) INSERT - inserimento di record (2) CLIENTI INSERT INTO clienti VALUES (1,'Enrico','Verdi','333-444'); INSERT INTO clienti VALUES (2,'Flavia','Conti','333-555'); INSERT INTO clienti VALUES (3,'Roberta','Toscano','333-666'); INSERT INTO prestiti VALUES (1,1,1,'2003-09-11','2003-09-15',1); INSERT INTO prestiti VALUES (2,1,3,'2003-10-01',NULL,1); INSERT INTO prestiti (codice_prestito, codice_supporto, codice_cliente, data_prestito, prezzo) VALUES (3,1,2,'2003-11-03',2); INSERT INTO prestiti VALUES (4,2,2,'2003-12-01',NULL,2.50); PRESTITI CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005

DML (Data Manipulation Language) SELECT - 1 Estrazione di tutti i corsi inseriti ordinati per titolo: SELECT codice_film, titolo FROM film ORDER BY titolo; (al posto della lista dei campi è possibile mettere * per estrarre TUTTI i campi della tabella) Estrazione di tutti i prestiti del cliente “Conti” (con codice 2), ordinati per “data_prestito” a partire dal più recente per i quali non è stato ancora restituito il supporto (JOIN): SELECT c.cognome, c.nome, p.data_prestito, p.prezzo FROM clienti c, prestiti p WHERE c.codice_cliente=p. codice_cliente AND p.data_restituzione IS NULL ORDER BY p.data_prestito DESC; c, p sono detti ‘alias’ e sono utili per referenziare le tabelle in modo abbreviato CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005

Esercitazione N. 2.2 Inserire almeno due righe a piacere in ogni tabella creata: +------------------------+ | Tables_in_video_diture | | attori | | clienti | | film | | prestiti | | registi | | supporti | 6 rows in set (0.00 sec) CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005

DML (Data Manipulation Language) UPDATE Per aggiornare un campo (o più campi) di una tabella: UPDATE prestiti SET data_restituzione=‘2003-09-20’ WHERE codice_prestito=1; Aggiornamento dei dati relativi al prestito con codice 2 (due campi, data restituzione e prezzo): UPDATE prestiti SET data_restituzione=‘2003-10-15’, prezzo=2.50 WHERE codice_prestito=2; NOTE: Se non si specifica alcuna condizione (WHERE) l’aggiornamento verrà effettuato su TUTTI I RECORD DELLA TABELLA. I valori dei campi data e testo sono rinchiusi tra APICI, quelli numerici non hanno delimitatori. CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005

DML (Data Manipulation Language) DELETE Per eliminare uno o più record da una tabella è necessario specificarne il nome e una condizione (se la condizione non viene specificata, verranno eliminati TUTTI I RECORD). Eliminazione del prestito con codice 3: DELETE FROM prestiti WHERE codice_prestito=3; Se tentiamo di cancellare un cliente con prestiti, verrà emesso un messaggio di errore(*) a causa della violazione del vincolo di integrità impostato sulla tabella “prestiti” (su codice_cliente): DELETE FROM clienti WHERE codice_cliente=2; ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails (*) solo se non è stata specificata la clausola “ON DELETE CASCADE” nella creazione della tabella. CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005

Esercitazione N. 2.3 Scrivere le istruzioni SQL per: Aggiornare la data di restituzione del prestito con codice 2 a ‘2005-01-23’ Cancellare il cliente con codice 4 (l’operazione potrebbe non riuscire … perché ?) Selezionare tutti gli attori ordinati per cognome e nome Selezionare il titolo ed il nome del regista di tutti i film archiviati CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 2 - Novembre 2005