SlideShare a Scribd company logo
1 of 20
Introduzione a SQL
Primi concetti con SQL
Tipi linguaggi supportati da SQL
Linguaggio DDL definizione dati
Linguaggio DML modifica dei dati
Linguaggio QL interrogazione dei dati
Linguaggio DCL controllo del database
Linguaggio DDL
Per la definizione delle tabelle e delle relazioni (solo InnoDB)
Insiemi di dati notevoli ammessi da Mysql
TINYINT 1 byte da 0 a 255 o da -127 a +128 con segno
SMALLINT 2 byte da 0 a 65535 senza segno e da -32767 a 32768 con segno
INTEGER o MEDIUMINT a 4 byte
BIGINT a 8 byte
DECIMAL (P,Q) Numeri reali con p cifre di cui q cifre per la mantissa e p-q cifre per
la caratteristica (in binario)
DOUBLE a 8 byte con eventualmente precisione Q o REAL o FLOAT reali a 4 byte
sempre di precisione Q;
CHAR(N) stringa di lunghezza fissa di n caratteri
VARCHAR(N) stringa di lunghezza fino a n caratteri
TEXT, MEDIUMTEXT, LONGTEXT variabili stringa grandi
BLOB, MEDIUMBLOB e LONGBLOB per dati binari con dimensioni fino a 4 Giga
bye (utili per immagazzinare files)
DATA/TIME tipo dati per le date egli orari
ENUM e SET tipi enumerativi
Creazione della tabella
Sintassi del comando
CREATE TABLE NOME TABELLA
(NOME CAMPO1 TIPO1 [NOT NULL], NOME
CAMPO2 TIPO2 [NOT NULL],...,NOME
CAMPON TIPO N [NOT NULL], PRIMARY KEY
NOME CAMPO CHIAVE) [ENGINE=INNODB];
NOT NULL indica valore non nullo. PRIMARY
KEY LA CHIAVE PRIMARIA, ENGINE INNODB
dI adottare la gestione delle tabelle mediante
InnoDB.
Vincoli di Integrità Referenziale
● Integrità referenziale elimina le ridondanze e le
inconsistenze fra tabelle collegate mediante
associazioni;
● Ad esempio esiste movimento bancario senza
conto corrente ? No
● Ad esempio sposto alunno da una classe ad
un altra il numero degli alunni della classe
deve essere aggiornato;
● Riguarda quindi modalità di creazione delle
tabelle;
Creazione di Tabelle mediante
vincoli di integrità referenziale
Create Table NomeTabella
(Nomecampo1 tipo1 [opzioni],
Nomcampo2 tipo2 [opzioni],
NomecampoFK tipo3 [opzioni],
………………………
NomecampoN tipoN [opzion],
Primary Key NomeCampoPK,
Foreign Key NomecampoFK
References NomeTabellaSorgente(NomeCampoPK
Tabella Sorgente) [On Delete Cascade] [On Update
Cascade]);
On Delete Cascade cancella righe di tabelle correlate a catena
On Update Cascade aggiorna valori di colonne correlati di una chiave
sI aggiornano tutti i valori che compongono una chiave esterna
(Campo chiave costituito da più colonne)
In Entrambi i casi sono previste le clausole opzionali
NO ACTION – SET NULL – SET DEFAULT
Azioni per i vincoli di integrità
● NO ACTION il Delete non viene eseguito o
viene inviato un messaggio di errore se si
tenga di eliminare o aggiornare una riga di
contenente una chiave che fa riferimento a
righe correlate
● SET NULL/DEFAULT Se si tenta di cancellare
o aggiornare righe contenente una riga con
una chiave che fa riferimento a righe
correlate di altre righe i valori delle colonne
componenti le chiavi esterne sono impostate
a NULL o Predefiniti
Esempio Creazione di 2 tabelle
con vincolo di integrità referenziale in
cancellazione
CREATE TABLE buildings (
buildingno INT PRIMARY KEY
AUTO_INCREMENT,
building_name
VARCHAR(255) NOT NULL,
address VARCHAR(255) NOT
NULL);
CREATE TABLE rooms (
room_no INT PRIMARY KEY
AUTO_INCREMENT,
room_name VARCHAR(255) NOT
NULL,
building_no INT NOT NULL,
FOREIGN KEY (building_no)
REFERENCES buildings
(building_no)
ON DELETE CASCADE);
E’ relazione
1 a N
Nel momento che con la DELETE
Cancello id=2 dalla tabella Buildings
sono eliminato anche i record della
Tabella Rooms
Esempio 1
Creare una tabella conti correnti con i seguenti
campi:
cod_conto, nome, cognome, saldo, data, tasso di
interesse:
create table conti_correnti (cod_conto char(10 , nome varchar(25) not
null, cognome varchar(25) not null, saldo decimal(15,3) not null,
data_saldo date not null, tasso decimal(4,2), primary key (cod_conto))
engine=Innodb;
Inserire dei dati nella tabella
INSERT INTO NOME TABELLA VALUES (valore1, valore2,
....,valoren);
Notare che è sintassi contratta devo richiamare i campi così come
sono stati creati;
Le stringhe e le date sono fra apici singoli
Se non ricordo l'ordine dei campi devo richiamare il comando SQL
con la sintassi competa:
INSERT INTO NOME TABELLA NOME CAMPO1,..., NOME
CAMPON VALUES (valore1, valore2, ....,valoren);
Esempio 2
inserire i dati di 5 correntisti nella tabella
conti_correnti
vediamo per 1 valore:
insert into conti_correnti values ('0001','gennaro','esposito',1234.5,'2008-
05-05',3.895);
Esempio 3
Per aggiungere un campo alla tabella
ALTER TABLE NOME TABELLA ADD NOME
CAMPO1 TIPO 1 [NOT NULL] AFTER |
BEFORE CAMPO ESISTENTE;
Per eliminare un campo dalla tabella
ALTER TABLE NOME TABELLA DROP NOME
CAMPO1,..., NOME CAMPON;
Per vedere la struttura della tabella
DESC NOMETABELLA;
Comandi Sql per la manipolazione
dati
Comandi per manipolare date
Comandi per manipolare stringhe
Comandi per la manipolazione dei dati numerici
Comandi per gestire date
Funzione Year restituisce l'anno di una data
Funzione Month e Day mese e giorno di una data
Funzione DateDiff Valuta la differenza fra due date ad esempio
select * from conti_correnti 'where datediff('2008-01-
01',data_saldo) > 30;
Visualizza i dati con data_saldo superiore a 30 giorni.
Funzione Data_Format per convertire la data da un formato ad un
altro ad esempio
Data_Format('2008-01-03','%W %M %Y') restituisce data in
formato giorno esteso mese anno.
%W indica giorno settimana esteso %w giorno numerico da 1 a
31, %M mese esteso, %m mese numerico.
Funzioni per le stringhe
Funzione Concat per concatenare più stringhe in campi
Concat(stringa1,stringa2,..,ecc)
Funzione Upper e Lower per conversione da minuscolo a maiuscolo e
viceversa
Funzione per eliminare spazi Trim, eliminare spazi a sinistra Ltrim e a
destra Rtrim
Funzione Substring(stringa, inizio, lunghezza) estrae una stringa dal
carattere indicato come iniziale e di lunghezza indicato
nell'argomento.
Funzione replace rimpiazza una sequenza di caratteri in una stringa
Replace(stringa,caratteri vecchi,nuovi caratteri)
Funzione Length per la lunghezza di una stringa
Funzioni di calcolo numerico
Div,Mod divisione e resto intero
Power (base,esponente) calcola la potenza di un
numero
Exp, ln,log2, log10 funzioni trascendenti
Sqrt radice quadrata
Applicazione delle funzioni
Possono essere applicate come campo calcolato
o come criterio da valutare
Se descritto come campo calcolato si può
utilizzare la definizione di alias.
Ad esempio
SELECT NOME CAMPO1, NOMECAMPO2,
...FUNZIONE(NOMECAMPI) AS ALIAS FROM
TABELLA WHERE CRITERIO
Funzioni di aggregazione
Permettono di aggregare i dati secondo uno o più
criteri
L'espressione generale è:
Select nomecamp1, nomecampo.
funzione_aggregazione(nomecampo) from
tabella where criterio group by nome campo
having criterio.
La differenza fra where e having che la clausola
where prima li filtra e la clausola having li
raggruppo dopo che sono stati filtrati.
Funzioni di aggregrazione
Count conteggio
Max e Min massimo e minimo di un campo
Sum, Avg somma e media dei campi
Supponiamo di avere la tabella movimenti
Raggruppiamo i movimenti per
conto
Select * from movimenti gruop by cod_conto;
Visualizza 4 righe quanti sono i codici di conto presenti. Le righe
visualizzate sono le prime intercettate nella tabella.
Select *,sum(importo) as saldo from movimenti group by
cod_conto;
Effettua la somma degli importo dei movimenti di ciascun conto e
lo assegna all'alias saldo raggruppando il tutto per cod_conto.
Select *,sum(importo) as saldo from movimenti group by
cod_conto having saldo>0;
In questa ultima query calcolo il saldo e poi visualizza i saldi dei
conti raggruppati per conto con saldo positivo.

More Related Content

What's hot (10)

Dispensa di PL-SQL
Dispensa di PL-SQLDispensa di PL-SQL
Dispensa di PL-SQL
 
R Vectors
R VectorsR Vectors
R Vectors
 
Basi Di Dati 04
Basi Di Dati 04Basi Di Dati 04
Basi Di Dati 04
 
R Graphics
R GraphicsR Graphics
R Graphics
 
ADT Stack
ADT StackADT Stack
ADT Stack
 
Java lezione 2
Java lezione 2Java lezione 2
Java lezione 2
 
Linguaggio R, principi e concetti
Linguaggio R, principi e concettiLinguaggio R, principi e concetti
Linguaggio R, principi e concetti
 
Array in C++
Array in C++Array in C++
Array in C++
 
Introduzione a R
Introduzione a RIntroduzione a R
Introduzione a R
 
07 1 funzioni
07 1 funzioni07 1 funzioni
07 1 funzioni
 

Similar to primi comandi SQL con Mysql

IBM i db2 udb vs Microsoft SQL Server
IBM i db2 udb vs Microsoft SQL ServerIBM i db2 udb vs Microsoft SQL Server
IBM i db2 udb vs Microsoft SQL ServerRiccardo De Mattia
 
Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)STELITANO
 
Access parte terza
Access parte terzaAccess parte terza
Access parte terzaMatekanc
 
Ldb 25 strumenti gis e webgis_2014-05-15 gullotta - 4 tabelle attributi e lor...
Ldb 25 strumenti gis e webgis_2014-05-15 gullotta - 4 tabelle attributi e lor...Ldb 25 strumenti gis e webgis_2014-05-15 gullotta - 4 tabelle attributi e lor...
Ldb 25 strumenti gis e webgis_2014-05-15 gullotta - 4 tabelle attributi e lor...laboratoridalbasso
 
06 1 array_stringhe_typedef
06 1 array_stringhe_typedef06 1 array_stringhe_typedef
06 1 array_stringhe_typedefPiero Fraternali
 
Python advanced 01-numpypandas
Python advanced 01-numpypandasPython advanced 01-numpypandas
Python advanced 01-numpypandasStudiabo
 
Python advanced 01-numpypandas
Python advanced 01-numpypandasPython advanced 01-numpypandas
Python advanced 01-numpypandasStudiabo
 
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdfPasqualeRuocco5
 
Umano vs Computer: un esempio pratico
Umano vs Computer: un esempio praticoUmano vs Computer: un esempio pratico
Umano vs Computer: un esempio praticoFrancesco Sblendorio
 
Strutture dati 05-numpypandas
Strutture dati 05-numpypandasStrutture dati 05-numpypandas
Strutture dati 05-numpypandasStudiabo
 
Strutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggettiStrutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggettiStudiabo
 

Similar to primi comandi SQL con Mysql (20)

IBM i db2 udb vs Microsoft SQL Server
IBM i db2 udb vs Microsoft SQL ServerIBM i db2 udb vs Microsoft SQL Server
IBM i db2 udb vs Microsoft SQL Server
 
Sql 1
Sql 1Sql 1
Sql 1
 
Sql stored procedures
Sql stored proceduresSql stored procedures
Sql stored procedures
 
Sql ddl
Sql ddlSql ddl
Sql ddl
 
Java Lezione 1
Java Lezione 1Java Lezione 1
Java Lezione 1
 
SQL Server2000
SQL Server2000SQL Server2000
SQL Server2000
 
Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)
 
Access parte terza
Access parte terzaAccess parte terza
Access parte terza
 
Ldb 25 strumenti gis e webgis_2014-05-15 gullotta - 4 tabelle attributi e lor...
Ldb 25 strumenti gis e webgis_2014-05-15 gullotta - 4 tabelle attributi e lor...Ldb 25 strumenti gis e webgis_2014-05-15 gullotta - 4 tabelle attributi e lor...
Ldb 25 strumenti gis e webgis_2014-05-15 gullotta - 4 tabelle attributi e lor...
 
06 1 array_stringhe_typedef
06 1 array_stringhe_typedef06 1 array_stringhe_typedef
06 1 array_stringhe_typedef
 
Sql 3
Sql 3Sql 3
Sql 3
 
Java lezione 10
Java lezione 10Java lezione 10
Java lezione 10
 
Lezione JSP database Crud
Lezione JSP database CrudLezione JSP database Crud
Lezione JSP database Crud
 
Python advanced 01-numpypandas
Python advanced 01-numpypandasPython advanced 01-numpypandas
Python advanced 01-numpypandas
 
Python advanced 01-numpypandas
Python advanced 01-numpypandasPython advanced 01-numpypandas
Python advanced 01-numpypandas
 
C5es
C5esC5es
C5es
 
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf
 
Umano vs Computer: un esempio pratico
Umano vs Computer: un esempio praticoUmano vs Computer: un esempio pratico
Umano vs Computer: un esempio pratico
 
Strutture dati 05-numpypandas
Strutture dati 05-numpypandasStrutture dati 05-numpypandas
Strutture dati 05-numpypandas
 
Strutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggettiStrutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggetti
 

More from I.S.I.S. "Antonio Serra" - Napoli

Le Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
Le Applicazioni di Internet Web, FTP, Posta e App pr il MobileLe Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
Le Applicazioni di Internet Web, FTP, Posta e App pr il MobileI.S.I.S. "Antonio Serra" - Napoli
 

More from I.S.I.S. "Antonio Serra" - Napoli (20)

La scomposizione in sotto programmi in C++.pptx
La scomposizione in sotto programmi in C++.pptxLa scomposizione in sotto programmi in C++.pptx
La scomposizione in sotto programmi in C++.pptx
 
Linguaggio Java - Classi e Oggetti
Linguaggio Java - Classi e OggettiLinguaggio Java - Classi e Oggetti
Linguaggio Java - Classi e Oggetti
 
Linguaggio C++ - Basi
Linguaggio C++ - BasiLinguaggio C++ - Basi
Linguaggio C++ - Basi
 
La metodologia Top - Down - applicazione al C++
La metodologia Top - Down - applicazione al C++La metodologia Top - Down - applicazione al C++
La metodologia Top - Down - applicazione al C++
 
I cicli in Python 3
I cicli in Python 3I cicli in Python 3
I cicli in Python 3
 
Video python3 n2
Video python3 n2Video python3 n2
Video python3 n2
 
I sotto programmi in Python 3
I sotto programmi in Python 3I sotto programmi in Python 3
I sotto programmi in Python 3
 
Le basi di Pytthon 3 - Fondamenti n.1
Le basi di Pytthon 3 - Fondamenti n.1Le basi di Pytthon 3 - Fondamenti n.1
Le basi di Pytthon 3 - Fondamenti n.1
 
Nuova ECLD - Modulo Online Collaboration n.2
Nuova ECLD - Modulo Online Collaboration n.2Nuova ECLD - Modulo Online Collaboration n.2
Nuova ECLD - Modulo Online Collaboration n.2
 
Nuova ECDL - Modulo Online Essentials n.2
Nuova ECDL - Modulo Online Essentials n.2Nuova ECDL - Modulo Online Essentials n.2
Nuova ECDL - Modulo Online Essentials n.2
 
Nuova ECDL - Modulo Online Essentials n.2
Nuova ECDL - Modulo Online Essentials n.2Nuova ECDL - Modulo Online Essentials n.2
Nuova ECDL - Modulo Online Essentials n.2
 
Nuova ECDL - Modulo Presentation n.3
Nuova ECDL - Modulo Presentation n.3Nuova ECDL - Modulo Presentation n.3
Nuova ECDL - Modulo Presentation n.3
 
Nuova ECDL - Modulo Presentation n.2
Nuova ECDL - Modulo Presentation n.2Nuova ECDL - Modulo Presentation n.2
Nuova ECDL - Modulo Presentation n.2
 
Nuova ECDL - Word Processing
Nuova ECDL - Word ProcessingNuova ECDL - Word Processing
Nuova ECDL - Word Processing
 
Nuova ECDL - Word Processing n.2
Nuova ECDL - Word Processing n.2 Nuova ECDL - Word Processing n.2
Nuova ECDL - Word Processing n.2
 
Nuova ECDL - Word Processing n.1
Nuova ECDL - Word Processing n.1Nuova ECDL - Word Processing n.1
Nuova ECDL - Word Processing n.1
 
Computer Essentials n.3 - Edizione 2020
Computer Essentials n.3 - Edizione 2020Computer Essentials n.3 - Edizione 2020
Computer Essentials n.3 - Edizione 2020
 
Java - Lezione 1
Java - Lezione 1 Java - Lezione 1
Java - Lezione 1
 
Modello TCP/IP
Modello TCP/IPModello TCP/IP
Modello TCP/IP
 
Le Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
Le Applicazioni di Internet Web, FTP, Posta e App pr il MobileLe Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
Le Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
 

Recently uploaded

Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxlorenzodemidio01
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxlorenzodemidio01
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaStefano Lariccia
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxlorenzodemidio01
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxlorenzodemidio01
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaStefano Lariccia
 

Recently uploaded (6)

Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
 

primi comandi SQL con Mysql

  • 1. Introduzione a SQL Primi concetti con SQL
  • 2. Tipi linguaggi supportati da SQL Linguaggio DDL definizione dati Linguaggio DML modifica dei dati Linguaggio QL interrogazione dei dati Linguaggio DCL controllo del database
  • 3. Linguaggio DDL Per la definizione delle tabelle e delle relazioni (solo InnoDB) Insiemi di dati notevoli ammessi da Mysql TINYINT 1 byte da 0 a 255 o da -127 a +128 con segno SMALLINT 2 byte da 0 a 65535 senza segno e da -32767 a 32768 con segno INTEGER o MEDIUMINT a 4 byte BIGINT a 8 byte DECIMAL (P,Q) Numeri reali con p cifre di cui q cifre per la mantissa e p-q cifre per la caratteristica (in binario) DOUBLE a 8 byte con eventualmente precisione Q o REAL o FLOAT reali a 4 byte sempre di precisione Q; CHAR(N) stringa di lunghezza fissa di n caratteri VARCHAR(N) stringa di lunghezza fino a n caratteri TEXT, MEDIUMTEXT, LONGTEXT variabili stringa grandi BLOB, MEDIUMBLOB e LONGBLOB per dati binari con dimensioni fino a 4 Giga bye (utili per immagazzinare files) DATA/TIME tipo dati per le date egli orari ENUM e SET tipi enumerativi
  • 4. Creazione della tabella Sintassi del comando CREATE TABLE NOME TABELLA (NOME CAMPO1 TIPO1 [NOT NULL], NOME CAMPO2 TIPO2 [NOT NULL],...,NOME CAMPON TIPO N [NOT NULL], PRIMARY KEY NOME CAMPO CHIAVE) [ENGINE=INNODB]; NOT NULL indica valore non nullo. PRIMARY KEY LA CHIAVE PRIMARIA, ENGINE INNODB dI adottare la gestione delle tabelle mediante InnoDB.
  • 5. Vincoli di Integrità Referenziale ● Integrità referenziale elimina le ridondanze e le inconsistenze fra tabelle collegate mediante associazioni; ● Ad esempio esiste movimento bancario senza conto corrente ? No ● Ad esempio sposto alunno da una classe ad un altra il numero degli alunni della classe deve essere aggiornato; ● Riguarda quindi modalità di creazione delle tabelle;
  • 6. Creazione di Tabelle mediante vincoli di integrità referenziale Create Table NomeTabella (Nomecampo1 tipo1 [opzioni], Nomcampo2 tipo2 [opzioni], NomecampoFK tipo3 [opzioni], ……………………… NomecampoN tipoN [opzion], Primary Key NomeCampoPK, Foreign Key NomecampoFK References NomeTabellaSorgente(NomeCampoPK Tabella Sorgente) [On Delete Cascade] [On Update Cascade]); On Delete Cascade cancella righe di tabelle correlate a catena On Update Cascade aggiorna valori di colonne correlati di una chiave sI aggiornano tutti i valori che compongono una chiave esterna (Campo chiave costituito da più colonne) In Entrambi i casi sono previste le clausole opzionali NO ACTION – SET NULL – SET DEFAULT
  • 7. Azioni per i vincoli di integrità ● NO ACTION il Delete non viene eseguito o viene inviato un messaggio di errore se si tenga di eliminare o aggiornare una riga di contenente una chiave che fa riferimento a righe correlate ● SET NULL/DEFAULT Se si tenta di cancellare o aggiornare righe contenente una riga con una chiave che fa riferimento a righe correlate di altre righe i valori delle colonne componenti le chiavi esterne sono impostate a NULL o Predefiniti
  • 8. Esempio Creazione di 2 tabelle con vincolo di integrità referenziale in cancellazione CREATE TABLE buildings ( buildingno INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL); CREATE TABLE rooms ( room_no INT PRIMARY KEY AUTO_INCREMENT, room_name VARCHAR(255) NOT NULL, building_no INT NOT NULL, FOREIGN KEY (building_no) REFERENCES buildings (building_no) ON DELETE CASCADE); E’ relazione 1 a N Nel momento che con la DELETE Cancello id=2 dalla tabella Buildings sono eliminato anche i record della Tabella Rooms
  • 9. Esempio 1 Creare una tabella conti correnti con i seguenti campi: cod_conto, nome, cognome, saldo, data, tasso di interesse: create table conti_correnti (cod_conto char(10 , nome varchar(25) not null, cognome varchar(25) not null, saldo decimal(15,3) not null, data_saldo date not null, tasso decimal(4,2), primary key (cod_conto)) engine=Innodb;
  • 10. Inserire dei dati nella tabella INSERT INTO NOME TABELLA VALUES (valore1, valore2, ....,valoren); Notare che è sintassi contratta devo richiamare i campi così come sono stati creati; Le stringhe e le date sono fra apici singoli Se non ricordo l'ordine dei campi devo richiamare il comando SQL con la sintassi competa: INSERT INTO NOME TABELLA NOME CAMPO1,..., NOME CAMPON VALUES (valore1, valore2, ....,valoren);
  • 11. Esempio 2 inserire i dati di 5 correntisti nella tabella conti_correnti vediamo per 1 valore: insert into conti_correnti values ('0001','gennaro','esposito',1234.5,'2008- 05-05',3.895);
  • 12. Esempio 3 Per aggiungere un campo alla tabella ALTER TABLE NOME TABELLA ADD NOME CAMPO1 TIPO 1 [NOT NULL] AFTER | BEFORE CAMPO ESISTENTE; Per eliminare un campo dalla tabella ALTER TABLE NOME TABELLA DROP NOME CAMPO1,..., NOME CAMPON; Per vedere la struttura della tabella DESC NOMETABELLA;
  • 13. Comandi Sql per la manipolazione dati Comandi per manipolare date Comandi per manipolare stringhe Comandi per la manipolazione dei dati numerici
  • 14. Comandi per gestire date Funzione Year restituisce l'anno di una data Funzione Month e Day mese e giorno di una data Funzione DateDiff Valuta la differenza fra due date ad esempio select * from conti_correnti 'where datediff('2008-01- 01',data_saldo) > 30; Visualizza i dati con data_saldo superiore a 30 giorni. Funzione Data_Format per convertire la data da un formato ad un altro ad esempio Data_Format('2008-01-03','%W %M %Y') restituisce data in formato giorno esteso mese anno. %W indica giorno settimana esteso %w giorno numerico da 1 a 31, %M mese esteso, %m mese numerico.
  • 15. Funzioni per le stringhe Funzione Concat per concatenare più stringhe in campi Concat(stringa1,stringa2,..,ecc) Funzione Upper e Lower per conversione da minuscolo a maiuscolo e viceversa Funzione per eliminare spazi Trim, eliminare spazi a sinistra Ltrim e a destra Rtrim Funzione Substring(stringa, inizio, lunghezza) estrae una stringa dal carattere indicato come iniziale e di lunghezza indicato nell'argomento. Funzione replace rimpiazza una sequenza di caratteri in una stringa Replace(stringa,caratteri vecchi,nuovi caratteri) Funzione Length per la lunghezza di una stringa
  • 16. Funzioni di calcolo numerico Div,Mod divisione e resto intero Power (base,esponente) calcola la potenza di un numero Exp, ln,log2, log10 funzioni trascendenti Sqrt radice quadrata
  • 17. Applicazione delle funzioni Possono essere applicate come campo calcolato o come criterio da valutare Se descritto come campo calcolato si può utilizzare la definizione di alias. Ad esempio SELECT NOME CAMPO1, NOMECAMPO2, ...FUNZIONE(NOMECAMPI) AS ALIAS FROM TABELLA WHERE CRITERIO
  • 18. Funzioni di aggregazione Permettono di aggregare i dati secondo uno o più criteri L'espressione generale è: Select nomecamp1, nomecampo. funzione_aggregazione(nomecampo) from tabella where criterio group by nome campo having criterio. La differenza fra where e having che la clausola where prima li filtra e la clausola having li raggruppo dopo che sono stati filtrati.
  • 19. Funzioni di aggregrazione Count conteggio Max e Min massimo e minimo di un campo Sum, Avg somma e media dei campi Supponiamo di avere la tabella movimenti
  • 20. Raggruppiamo i movimenti per conto Select * from movimenti gruop by cod_conto; Visualizza 4 righe quanti sono i codici di conto presenti. Le righe visualizzate sono le prime intercettate nella tabella. Select *,sum(importo) as saldo from movimenti group by cod_conto; Effettua la somma degli importo dei movimenti di ciascun conto e lo assegna all'alias saldo raggruppando il tutto per cod_conto. Select *,sum(importo) as saldo from movimenti group by cod_conto having saldo>0; In questa ultima query calcolo il saldo e poi visualizza i saldi dei conti raggruppati per conto con saldo positivo.