際際滷

際際滷Share a Scribd company logo
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

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.