Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7 Il trattamento dei dati database: il linguaggio SQL seconda parte Prof. Valle D.ssa Folgieri Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 1
SQL: azioni sui dati Nella scorsa lezione abbiamo visto gli operatori aritmetici, di confronto e logici. Ora completiamo l argomento con i comandi che sono necessari per comporre istruzioni in SQL per maneggiare i dati. Vediamo, cioè, i VERBI di SQL, poiché le espressioni principali sono proprio costituite da cinque comandi che corrispondono ad azioni che si possono compiere sui dati. Si suole dire, per ricordarli meglio, che i verbi di SQL sono 5. Essi corrispondono alle operazioni possibili sui dati. Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 2
I 5 verbi di SQL I seguenti comandi consentono di effettuare, se combinati adeguatamente con gli operatori già visti, tutte le operazioni principali per trattare i dati: CREATE per creare le strutture (tabelle che conterranno i dati in un database INSERT per inserire i valori nei campi delle tabelle create DELETE per cancellare i valori nei campi delle tabelle create SELECT per selezionare (ricercare i dati rispondenti a determinati criteri (cioè per effettuare una query, ovvero un interrogazione UPDATE per aggiornare i valori dei dati secondo un determinato criterio Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 3
Traduzione del modello E/R in struttura fisica del database Riprendiamo alcuni concetti circa la corrispondenza tra il modello E/R e la struttura fisica (implementazione di una base di dati. Ricordate che: Le entità diventano le tabelle Gli attributi diventano i campi (colonne delle tabelle Le relazioni sono indicate tramite le chiavi (primarie ed esterne Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 4
Tabelle e relazioni In un database, dunque, una tabella corrisponde ad un entità. Gli attributi saranno i campi (le colonne della tabella e le relazioni si specificano utilizzando le chiavi. Si dice grado della tabella il numero di colonne che la costituisce. La singola riga di dati (cioè le informazioni relative ad una istanza si dice record. Codice targa Codice Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 5
Creare una tabella - 1 Per collezionare i dati in un database, occorre innanzitutto creare la struttura atta a contenerli. Occorre cioè creare una tabella (entità contenente i corrispondenti campi (attributi. Per fare ciò, si usa il comando CREATE TABLE. La sintassi è: CREATE TABLE <nome-tabella>(<specifiche> Tra parentesi vengono posti i nomi dei campi. Per ogni campo è specificato il tipo di dato e le sue dimensioni. Alcuni elementi di specifica sono opzionali: per esempio si può decidere se porre o meno dei vincoli sui campi (es. non deve essere nullo lo vedremo nei prossimi esempi Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 6
Creare una tabella - 2 Ricordiamo la sintassi del comando CREATE TABLE: CREATE TABLE <nome-tabella>(<specifiche> Tra parentesi vengono posti i nomi dei campi. Esempio: CREATE TABLE Anagrafica ( identificativo integer, cognome char(40, nome char(40, indirizzo varchar(60, telefono varchar(40 Per ogni campo è specificato il nome (a sinistra, il tipo di dato (a destra e le sue dimensioni (tra parentesi, ad esempio char(40 che significa tipo di dato alfanumerico che può essere lungo al massimo 40 caratteri. Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 7
Creare una tabella - 3 Si possono aggiungere anche alcuni vincoli, ad esempio dire: - se un valore deve essere inserito per forza (NOT NULL - se è previsto un valore preimpostato, che l utente può sempre cambiare (DEFAULT - inoltre si può specificare quale sia la chiave primaria Esempio (i vincoli sono posti a destra della dimensione: CREATE TABLE Anagrafica ( identificativo char(16, cognome char(40 NOT NULL, nome char(40 NOT NULL, indirizzo varchar(60 DEFAULT sconosciuto, telefono varchar(40 NOT NULL, PRIMARY KEY(identificativo NOTATE che ogni riga, sia in questo che nell esempio precedente, tranne l ultima prima della parentesi, deve terminare con una virgola. Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 8
Analizziamo quanto abbiamo scritto: Abbiamo creato la struttura (non vi abbiamo ancora immesso i dati di una tabella Anagrafica che contiene: Creare una tabella - 4 CREATE TABLE Anagrafica ( identificativo char (16, cognome char(40 NOT NULL, nome char(40 NOT NULL, indirizzo varchar(60 DEFAULT sconosciuto, telefono varchar(40 NOT NULL, PRIMARY KEY(identificativo Il campo identificativo (la chiave primaria, potrebbe essere anche il codice fiscale che distingue un nominativo da un altro Il campo cognome e il campo nome, entrambi non nulli e di lunghezza massima 40 Il campo indirizzo, di lunghezza massima 60, che propone per default, in immissione, la dicitura sconosciuto Il campo telefono, di lunghezza massima 40, che non può essere nullo. Alla fine dell elenco dei campi, prima della parentesi di chiusura, abbiamo specificato che il campo identificativo è la variabile primaria, ovvero nella tabella non sono ammessi due record (due nominativi diversi con lo stesso identificativo (così posso distinguere eventuali omonimie. Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 9
Modificare la struttura di una tabella -1 Una volta creata una tabella, potremmo aver bisogno di modificarne la struttura. Non è necessario cancellare la tabella e crearne un altra, poiché si possono utilizzare alcuni comandi che agiscono sulla struttura aggiungendo, cancellando, o modificando una colonna (ovvero un campo. Nella prossima slide vedremo come. Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 10
Modificare la struttura di una tabella -2 Sintassi del comando che consente di aggiungere una colonna: ALTER TABLE <nome-tabella>( ADD COLUMN<nome-colonna><tipo> <<altre caratteristiche> Comando per cancellare una colonna: ALTER TABLE <nome-tabella> ( DROP COLUMN <nome-colonna> Comando per modificare una colonna (es. aggiungere dei vincoli o cancellarli: ALTER TABLE <nome-tabella> ( ALTER COLUMN <nome-colonna> DROP DEFAULT ALTER TABLE <nome-tabella> ( ALTER COLUMN <nome-colonna> SET DEFAULT <valore-predefinito> Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 11
Modificare la struttura di una tabella -esempi - Per aggiungere una colonna: ALTER TABLE Anagrafica ( email char(50 NOT NULL abbiamo aggiunto alla tabella Anagrafica il campo email lungo al massimo 50 caratteri e con il vincolo NOT NULL, cioè deve essere sempre compilato in fase di immissione non può essere nullo Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 12
Modificare la struttura di una tabella -esempi - Per cancellare una colonna: ALTER TABLE Anagrafica ( DROP COLUMN telefono Abbiamo cancellato la colonna telefono dalla tabella Anagrafica (e, se avevamo già immesso i dati, anche tutti i dati contenuti nel campo! Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 13
Modificare la struttura di una tabella -esempi - Per modificare una colonna possiamo, ad esempio, togliere i valori di default. Ad esempio, avevamo impostato il campo indirizzo in modo che per default, all immissione, proponesse il valore sconosciuto. Con il seguente comando, facciamo in modo che, all immissione, non vengano proposti valori di default: ALTER TABLE Anagrafica ( ALTER COLUMN indirizzo DROP DEFAULT Se invece volessimo impostare un valore di default, per esempio imporre che il campo telefono proponesse il prefisso +39 (Italia all immissione, dovremmo scrivere: ALTER TABLE Anagrafica ( ALTER COLUMN telefono SET DEFAULT +39 Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 14
Come eliminare una tabella - 1 Infine vediamo come eliminare una tabella dal database. Il comando DROP permette di eliminare interamente una tabella (compresi i dati in essa contenuti!. La sintassi è: DROP TABLE <nome-tabella> Esempio: DROP TABLE Anagrafica Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 15
Come eliminare una tabella - 2 ATTENZIONE: l eliminazione di una tabella è consentita solo all utente che l ha creata Se creo un database sul mio pc e lo metto poi a disposizione di altri utenti che vi accedono (in rete da altre macchine, le tabelle potranno essere cancellate sempre (e solo da me, mentre agli altri utenti potrò dare permessi di lettura, inserimento, modifica o cancellazione dei dati. Vedremo nella prossima lezione come assegnare a differenti utenti i diversi permessi Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 16
INSERT - 1 Ora che abbiamo creato una tabella, vediamo come inserire i valori. Ovviamente qui parliamo di SQL standard, quindi dovremo usare i comandi. Non abbiamo cioè a disposizione interfacce, come avviene in molti RDBMS quali, ad esempio, Microsoft Access, cui faremo cenno nelle prossime lezioni. Per inserire i dati si usa il comando INSERT. Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 17
INSERT - 2 Permette di inserire una riga di valori (un record in una tabella. Sintassi: INSERT INTO <nome-tabella> VALUES (<espressione- 1>[,...<espressione-N>] Facciamo un esempio: INSERT INTO Anagrafica VALUES ( DPPPPO20D74S919X, 'Pippo', 'De Pippis', 'Via Topolinia 13', '0111,111111 pippo.depippis@email.com I dati, per essere inseriti, vanno posti tra apice singolo. Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 18
INSERT - 3 Qualche nota su quel che abbiamo scritto: INSERT INTO Anagrafica VALUES ( DPPPPO20D74S919X, 'Pippo', 'De Pippis', 'Via Topolinia 13', '0111,111111 pippo.depippis@email.com Come avrete sicuramente notato, i dati vanno posti nello stesso ordine dei campi. Per non sbagliare e dimenticarne qualcuno, è buona norma far precedere l elenco di valori dall elenco dei campi, come nell esempio della prossima slide. Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 19
INSERT - 4 Far precedere l elenco di valori dall elenco dei campi: Elenco dei campi Sintassi: INSERT INTO <nome-tabella> (<colonna-1>[,...<colonna-n>]] VALUES (<espressione-1>[,...<espressione-n>]; Elenco dei valori assegnati ai campi Adottando questa sintassi è difficile dimenticare di inserirne qualcuno. Nella slide successiva vedremo l esempio corrispondente Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 20
INSERT - esempio Esempio: INSERT INTO Anagrafica ( Identificativo, Cognome, Nome, Indirizzo, Telefono VALUES ( 01, 'Pippo', 'De Pippis', 'Via Topolinia 13', '0111,111111' Elenco dei campi Elenco dei valori assegnati ai campi Lez9 15.11.06 Trattamento dati. Database: il linguaggio SQL-prima parte 21