INSERIMENTO DEI DATI Visto come si creano le tabelle (sinora tristemente vuote), cominciamo ad occuparci di come riempirle con dei dati. Il comando SQL per inserire un record in una tabella si chiama INSERT INTO. Ne esistono 2 versioni: >insert into nome-tabella values (lista-valori) Se si vogliono inserire tutti i campi di un record >insert into nome-tabella (lista-campi) values (lista-valori) Se si vogliono inserire solo alcuni campi di un record. I campi non inseriti conterranno il valore NULL (non definito) - opzione auto_increment: il valore della chiave primaria : “” BIOINFO3 - Lezione 5 1 ESEMPIO Si vuole inserire nella tabella esami un esame di codice 1, per la materia Bioinformatica3, in data 15 aprile 2003 alle ore 9.30 nell’aula di bioinformatica (B) al quinto piano Si vuole inserire nella tabella esami un esame di codice 2, per la materia Bioinformatica1, in data 16 aprile 2003 sempre nell’aula di bioinformatica (B) al quinto piano. Non si conosce l’ora della prova BIOINFO3 - Lezione 5 2 VISUALIZZAZIONE DEI RECORD A questo punto siamo curiosi di vedere tutti i record del database. Vogliamo fare una semplice query di selezione senza alcuna condizione. Si usa il comando SQL: >select elenco-campi from nome-tabella Se volessimo vedere tutti i campi si usa il simbolo * al posto dell’elenco dei campi BIOINFO3 - Lezione 5 3 INSERIMENTO DI MOLTI RECORD Qualora si dovessero inserire “manualmente” (non da programma) molti record è possibile (come abbiamo già visto per il comando create) preparare un file di comandi mysql di insert. Si utilizza un editor per scrivere il file, lo si salva con un certo nome (esempio esami.mysql) Ricordarsi il ; o \g alla fine di ogni riga, per eseguirla e poi si dice al client mysql di prendere il file come suo input BIOINFO3 - Lezione 5 4 ATTENZIONE Avrete notato sicuramente che quando si devono inserire dei valori numerici (interi o reali) questi non sono racchiusi tra apici, mentre tutti gli altri tipi di dati (stringhe di caratteri, date, ore) vengono racchiusi tra apici. Il valore speciale NULL invece non va mai racchiuso tra apici. Attenzione a non inserire due record con lo stesso valore nel campo chiave BIOINFO3 - Lezione 5 5 SELEZIONE ORDINATA E’ possibile ordinare i record selezionati da una qualsiasi query secondo il valore di un campo (il campo potrebbe anche non essere scelto tra quelli mostrati) BIOINFO3 - Lezione 5 6 SELEZIONE ORDINATA Provate a dire cosa si ottiene con la query (leggere attentamente la query) Materie degli esami ordinati per data (NULL< altre date) Provate a dire cosa si ottiene con la query Id, datae e ora di tutti gli esami ordinati in modo crescente sul campo datae e (a parità di datae) in modo decrescente sull’ora (default l`ordinamento e ascendente) BIOINFO3 - Lezione 5 7 CONDIZIONI SULLE QUERY Si utilizza una clausola where per indicare dei criteri di selezione. La clausola where può contenere operatori relazionali o logici <, <=, =, !=, >, >= AND OR NOT Secondo voi cosa succede con Tutti gli id degli esami maggiori o uguali a 5 E con Tutte le materie degli esami di Aprile 2003 ordinati per materia BIOINFO3 - Lezione 5 8 ESERCIZIO E’ necessario pianificare le prenotazioni dell’aula di Bioinformatica per gli esami. Scrivere la query SQL per selezionare data e ora degli esami che si svolgono nell’aula B del piano 5 (aula bioinformatica) ordinati per data e ora crescente Scrivere i risultati restituiti da SQL. BIOINFO3 - Lezione 5 9 BIOINFO3 - Lezione 5 10 SELEZIONE DI VALORI DISTINTI Se dovessimo selezionare solo i record distinti restituiti da una query si usa la parola chiave DISTINCT in un comando di SELECT. Esempio. Vogliamo selezionare tutti i giorni in cui si svolgono esami. Se più esami si svolgono nello stesso giorno, vogliamo che tale giorno sia mostrato una volta soltanto. BIOINFO3 - Lezione 5 11 OPERAZIONI LOGICHE L’algebra booleana è fondamentale in tutti i linguaggi di programmazione. Gli operatori logici sono tre e restituiscono il valore VERO (1) o FALSO (0). e, e1, e2 siano delle espressioni booleane NOT NOT e è vera se e è falsa, è falsa se e è vera. OR e1 OR e2 è vera se e1 oppure e2 sono vere. E’ falsa altrimenti AND e1 AND e2 è vera se sia e1 e sia e2 sono vere. E’ falsa altrimenti BIOINFO3 - Lezione 5 12 TABELLE DI VERITA’ Per ricordarsi come calolare i risultati dei tre operatori logici si utilizzano le cosiddette tabelle di verità e NOT e VERA FALSA FALSA VERA e1 e2 e1 OR e2 e1 e2 e1 AND e2 VERA VERA VERA VERA VERA VERA FALSA VERA VERA FALSA VERA FALSA VERA FALSA VERA VERA FALSA FALSA FALSA FALSA FALSA FALSA FALSA FALSA BIOINFO3 - Lezione 5 13 ESEMPI DI OPERAZIONI LOGICHE Data la ormai consueta tabella Dire cosa restituiscono i seguenti comandi >2 and <7: 1 NO, 2 NO, 3 SI, 5 SI, 7 NO, 11 NO Sono selezionati solo i record in cui la condizione del WHERE è vera cioè sono vere entrambe le condizioni in AND >2 or <7: 1 SI, 2 SI, 3 SI, 5 SI, 7 SI, 11 SI BIOINFO3 - Lezione 5 14 RICERCA DI VALORI NULLI Per selezionare i record in cui un campo assume il valore NULL si usa la funzione ISNULL. La funzione isnull(nome-campo) restituisce il valore vero se il campo assume il valore NULL Vogliamo selezionare gli esami in cui non è definita la data Selezionare tutte le possibili date reali di esami (quindi distinte e non NULL) BIOINFO3 - Lezione 5 15 ESERCIZIO Vogliamo sapere tutte le aule (e il rispettivo piano) in cui si svolgono esami. Ordinare per piano e aula. BIOINFO3 - Lezione 5 16 RIEPILOGO •Inserimento di un record •Visualizzazione di record •Selezione ordinata •Condizioni sulle query •Selezione di valori distinti •Operazioni logiche BIOINFO3 - Lezione 5 17