5DBMS SQL
5DBMS SQL
L. Vigliano
DBMS
L. Vigliano
DBMS (2)
L. Vigliano
MYSQL
• Basato su routine ISAM, scritto in C e C++
• Interfacciabile da C, C++, Perl, PHP, Eiffel,
Java, Python, TC1API
• Gestisce fino a 60.000 tabelle e fino a 50
milioni di record
• DML Data Management Language
• SQL Structured Query Language
L. Vigliano
Primi Comandi
• Show databases ;
• Use <nomedb>;
• Create database <nomedb>;
• Exit;
• ATTENZIONE AL ;
L. Vigliano
Creare e cancellare database
(con molta attenzione !!!)
L. Vigliano
Usare un database
• Use <nomedb>;
L. Vigliano
Tipi di Dati
Numerici Interi
• Tinyint piccolissimo intero
da –128 a 127 unsigned 0-255
• Smallint piccolo intero
da –32768 a 32767 unsigned 0-65535
• Int intero
da –2.147.483.648 a 2.147.483.647
unsigned 0-4.294.967.295
…… più altri intermedi
opzione AUTO_INCREMENT
L. Vigliano
Tipi di dati (2)
Numerici decimali
• Float(M,D) dove M numero cifre parte
intera
e D numero cifre parte
decimale
Double(M,D) più ampio (doppia precisione)
L. Vigliano
Tipi di dati (3)
Alfanumerici
• Char(x) Stringa di max 255 char di lunghezza
fissa
• Varchar(x) Stringa di max 255 char di lunghezza
variabile
• Text file 65535 byte
• Blob file o immagine (Binary
Logical Object)
…… più altri intermedi
NON CREARE MAI INDICI SUGLI
ULTIMI DUE !
L. Vigliano
Tipi di dati (3)
Temporali
TIPO FORMATO
• Datetime aaaa-mm-gg hh:mm:ss
• Date aaaa-mm-gg
• Time hh:mm:ss
• Year aaaa
• Timestamp(x) Variabile a seconda di x che varia
da 2 a 14
L. Vigliano
Creare e Cancellare Tabelle
• Create table emp(
empno int not null primary key
auto_increment,
ename varchar(30) not null,
…….
sal float(4,2)
….);
L. Vigliano
Insert
Insert into emp
values(7954,’Carter’,’clerk’,7698,
‘7-Apr-84’,1000,NULL,30);
Insert into emp(empno,ename,deptno)
values(7955,’Wilson’,30);
(create arau)
Insert into arau
select titolo,autore from ar,au
where ar.autore=au.autore;
L. Vigliano
Insert esterno
L. Vigliano
Update
Update emp
set job = “salesman”, sal=1,1* sal
where ename =“Wilson”;
Update emp
set sal = (select 2*avg(sal) from emp
where job=‘salesman’ )
where job=‘salesman’ ;
L. Vigliano
Delete
Delete from emp
where ename =“ Wilson”;
L. Vigliano
SQL
L. Vigliano
Select
Select nomicampi
from tabelle
where condizioni ;
Esempio
select job from emp; (quali compaiono)
select * from emp;
L. Vigliano
Select
Opzione Distinct
L. Vigliano
Select
Opzione Alias
L. Vigliano
Operatori per la clausola
WHERE
= uguale
!= diverso
<> diverso
> maggiore
>= maggiore o uguale
< minore
<= minore o uguale
L. Vigliano
Operatori per la clausola
WHERE (2)
Between ... compreso tra ….
and …. e ……
in appartenente a
like del tipo …
is NULL è un valore assente
NOT Negazione
AND Congiunzione
OR Disgiunzione
L. Vigliano
Select con clausola Where
esempi
• Confronto
select * from emp where job = ‘clerck’ ;
• Appartenenza
select ename, job, sal from emp
where sal between 1200 and 5000;
• Somiglianza ortografica
select autore, qualific from au
where autore like ‘A%’;
L. Vigliano
Select con Join
L. Vigliano
Select con Funzioni
esempi
Conta tutti gli articoli di Moscarini
select count(*) from ar
where autore = ‘Moscarini’ ;
L. Vigliano
Select Aggregate
opzioni
ORDER BY
GROUP BY ….
…. HAVING
L. Vigliano
Select Aggregate
esempi
select sal, job, ename from emp
where deptno = 30
order by sal desc;
select deptno, 12*avg(sal) from emp
where job not in (‘manager’ ,’ president’ )
group by deptno;
select job, count(*), avg(sal) from emp
group by job having count(*) >1 ;
L. Vigliano
Select Nidificate
• Selezionare tutti gli autori che abitano nella
stessa città di ‘Moscarini’
Select autore from au
where città=
(select città from au
where autore =‘Moscarini’ );
L. Vigliano
Select Nidificate
versione per MySql
• Selezionare tutti gli autori che abitano nella
stessa città di ‘Moscarini’
Select x.autore from au x, au y
where x.città=y.città
and y.autore =‘Moscarini’ ;
L. Vigliano
Algebra su Select
• Si possono effettuare
UNION
INTERSECT
MINUS
di select
L. Vigliano
Viste o Tabelle Virtuali
L. Vigliano
View
o Tabelle Virtuali
• Vantaggi
- non occupano memoria
- sicurezza (si possono non far vedere
certi campi)
- convenienza : si creano view anche per
eseguire query più semplici,
spesso con ottimizzazione
dei tempi di risposta
L. Vigliano
View
esempi
Create view emp10 as
select empno, ename, job from emp
where deptno = 10;
L. Vigliano
View in MySql
NON PREVISTE
L. Vigliano
Sicurezza
L. Vigliano
Sicurezza e Diritti d’ uso
Grant
Grant tipo privilegio
on oggetto(DB,tabelle)
to nome_utente
identified by password;