BASI DI DATI ESERCITAZIONI -03- MSSQL - SQL Email: francesco.magagnino@ewave.it Università di Trento Corso di Laurea in Ingegneria dell’Informazione e dell’Organizzazione
Inserire curriculum.. .. In Comunità On Line
SQL: Il linguaggio dei DBMS SQL = Structured Query Language Anni ’70 Definizione del modello relazionale. Prima definizione del linguaggio SQL (allora SEQUEL) Prototipi di DBMS relazionali - System R (IBM) - Ingres (Università di Berkeley) Anni ’80 Standardizzazione di SQL. Primi DB commerciali - Oracle - IBM DB2 Anni ’90 Standard ISO-ANSI-SQL2 (SQL 92) Anni ’00 Standard ISO-ANSI-SQL3 (SQL 99)  Recepimento non completato.
SQL: Il linguaggio dei DBMS DDL (Data Definition Language) Definizione Schemi e autorizzazioni (create database – drop database – alter table – drop table) DML (Data Manipulation Language) Aggiornamento istanze DB (insert into – update - delete) Estrazione informazioni da DB (Select [all|distinct]) DCL (Data Control Language) Comandi di vario tipo compreso controllo degli accessi SQL = DDL + DML + DCL
Principali comandi in SQL  (DDL) Crea DB create database  “<database>” create database  “prova” Elimina DB drop  database “<database>” drop  database “prova”
Principali comandi in SQL  (DDL) Crea una tabella  create table  <nome tabella> (nomecampo | tipo | constaint, ……) create table  clienti ( chiave integer not null primary key, nome varchar(30), …..) Modifica una tabella esistente  alter table  <nome tabella> add  nomecampo | tipo | constaint, drop nomecampo, ……  alter table  clienti add indirizzo varchar(30), drop frazione add primary key (codice) Elimina una tabella drop table  <nome tabella> drop table  clienti
Create Database & Table create database  PROVA go use  PROVA create table  TBinPROVA (conta integer ..)
Principali comandi in SQL  (DDL) Crea una vista create view  <nome vista>  <campi>  as  <select> create view  UltimaFattura  (fornitore,data,importo)  as  Select fornitore,data,importo from fatture F Where f.Data = ( Select Max(Data) From fatture F1   Where (F1.fornitore = F.fornitore) ) Elimina un vista drop view  <nome vista> drop view  Ultimafattura
Principali comandi in SQL  (DDL) Crea una dominio In SQL è possibile creare un dominio personalizzato ereditando caratteristiche dai principali data types create domain  <nome domain>  as  <caratteristica domain> create domain  VOTO  as  SMALLINT DEFAULT NULL CHECK (VALUE >= 18 and VALUE <= 30 )
Principali comandi in SQL  (DML) Estrazione dati  da  Tabella: SELECT Le interrogazione in un DB avvengono trammite l’istruzione SELECT Select  ATTRIBUTO From  TABELLA Where  CONDIZIONE L’interrogazione SQL restituisce i valori degli  attributi  all’interno della  tabella  selezionata che soddisfano alla  condizione  specificata.
Principali comandi in SQL  (DML) Estrazione dati  da  Tabella select  [ all  |  distinct ]  <lista attributi>  from  <lista tabelle>  where <condizione>  group by  <lista attributi>  having  <condizione>  order by  <lista attributi> select  *  from  fornitori SELECT  LastName, FirstName FROM  dbo.Employees WHERE  (LastName LIKE %K%) ORDER BY FirstName
Principali comandi in SQL  (DML) Estrazione dati  da  Tabella SELECT  TOP 10 * FROM  Employees WHERE  City = London
WHERE L’argomento della clausola where può essere un espressione booleana costruita a partire da  predicati semplici  combinati con gli  operatori logici . Predicati semplici:  A sinistra il valore dell’attributo specificato, a destra un valore costante =  …uguale <>  …diverso <  …minore di >  …maggiore di >=  …maggiore e uguale di <=  …minore e uguale di Operatori logici:  AND OR NOT
LIKE Serve per porre un uguaglianza non completa.  Viene utilizzato insieme a caratteri speciali. Se questi non esistono nella condizione assume il valore di “=“ Caratteri speciali: _   (underscore) o  !  (punto esclamativo): indicano la presenza di un qualsiasi carattere %  (percentuale) o  *  (asterisco): indicano la presenza di una serie di caratteri qualsiasi SELECT  * FROM  Employees WHERE  FirstName LIKE R_be* ROBERT RIBE RIBES
BETWEEN Serve per identificare un  range  in cui applicare la  condizione . Si specifica un  intervallo di valori in cui deve essere compreso il valore  affinché sia considerato vero SELECT * FROM  Products WHERE  (UnitPrice BETWEEN 18 AND 20) SELECT  * FROM  Employees WHERE  (LastName BETWEEN 'f*' AND 'l*') Federico Giovanni Laura 18 18,5 19
IN Serve per specificare una serie di valori a cui deve soddisfare la condizione. SELECT  * FROM  Products WHERE  UnitPrice IN (18, 19) Si evita di fare 2 where sullo stesso attributo WHERE  UnitPrice = 18 or UnitPrice = 19 18 19 19 18
IS NULL Serve per specificare un estrazione con riferimento al valore NULL IS NULL   oppure  IS NOT NULL Tutti i campi di una colonna che hanno valore NULL Importante ricordare che 0 e “” posseggono un valore, quindi non sono NULL SELECT  * FROM  Employees WHERE  Region IS NULL
DISTINCT Serve per non ottenere righe duplicate Se nella select viene applicato a più colonne, adopererà l’univocità su tutte le colonne considerate SELECT DISTINCT City FROM  Employees
ORDER BY La clausola ORDER BY serve per stabilire l’ordine di visualizzazione Vi è poi la possibilità di specificare se l’ordinamento avviene per valori ascendenti (ASC) o discendenti (DESC)  Di default è impostato ASC SELECT  * FROM  Employees ORDER BY LastName DESC
Count / sum / max / min / avg Permettono di ottenere un valore singolo elaborando un insieme di righe. Vengono applicati sulle righe che soddisfano la condizione presente nella clausola where e hanno il seguente significato: count : conteggia le righe che soddisfano un criterio sum : restituisce la somma dei valori posseduti dall'espressione costrutta sui nomi degli attributi max : individua il massimo in un insieme di valori min : individua il minimo in un insieme di valori avg : restituisce la media dei valori dell'espressione
GROUP BY Group by permette di specificare come dividere le tabella in sottoinsiemi.  La clausola group by ammette come argomento un insieme di attributi e la query raggrupperà le righe che possiedono gli stessi valori per questo insieme di attributi. SELECT  Dipendente, SUM(Stipendio) FROM  dbo.tb GROUP BY Dipendente
Principali comandi in SQL  (DML) Inserimento dati  in  Tabella insert into  <nome tabella>  (campo1,campo2)  values  (valore1,valore2) INSERT into employees (firstname, lastname)  values ('Paolo','Rossi')
Principali comandi in SQL  (DML) Aggiornamento dati  in  Tabella   (prevalentemente su condizione where) update  <nome tabella>  set  campo = valore  where  <condizione>  update employees set firstname='Verdi'  where lastname='Paolo'
Principali comandi in SQL  (DML) Eliminazione dati  in  Tabella (prevalentemente su condizione where) delete  <nome tabella>  where  <condizione> delete employees  where firstname='Verdi'
Links SQL Injection  Tecniche: SQL Injection  ( http://sicurezza.html.it/articoli/leggi/973/tecniche-sql-injection/4/ ) SQL injection Basic Tutorial  ( http://www.governmentsecurity.org/articles/SQLinjectionBasicTutorial.php ) SQL Injection: Modes of Attack, Defence, and Why It Matters  ( http://www.governmentsecurity.org/articles/SQLInjectionModesofAttackDefenceandWhyItMatters.php ) Advanced SQL Injection in SQL Server Applications  ( http://www.di.unito.it/~matteo/DIDATTICA/aa06/RdE/advanced_sql_injection.pdf ) Steve Friedl's Unixwiz.net Tech Tips: SQL Injection Attacks by Example  ( http://www.unixwiz.net/ techtips / sql-injection.html )
Lavorando su SQL Importare il db “CDs” Ordinare in modo discendente rispetto al nome tabella tCantante selezionando tutte le colonne Ordinare in modo ascendente rispetto al titolo la tabella tCD selezionando tutte le colonne Ordinare in modo ascendente rispetto al titolo la tabella tCD selezionando le colonne cd_id, cd_titolo, cd_prezzo, cd_anno Ordinare in modo ascendente rispetto al titolo la tabella tCD selezionando le colonne cd_id, cd_titolo, cd_prezzo, cd_anno Filtrare rispetto ai cd prodotti prima del 2000 Ordinare in modo ascendente rispetto al titolo la tabella tCD selezionando le colonne cd_id, cd_titolo, cd_prezzo, cd_anno Filtrare rispetto ai cd prodotti nel 1990 e nel 2003 Ordinare in modo ascendente rispetto al titolo la tabella tCD selezionando le colonne cd_id, cd_titolo, cd_prezzo, cd_anno Filtrare rispetto ai cd prodotti tra il 1990 e il 2003
Lavorando su SQL Visualizza il prezzo più alto tra tutti i cd Ordinare rispetto al titolo la tabella tCanzone selezionando le colonne canzone_id, canzone_titolo Filtrare rispetto alle canzoni il cui titolo inizia per &quot;b&quot; oppure &quot;u&quot;  Dalla tabella tRelCdCanzone visualizzare il numero di canzoni per ogni cd (id del cd) Dare il nome &quot;Numero Canzoni&quot; alla colonna con le quantità Nella tabella tCantante inserire un nuovo record (un nuovo cantante) cantante_nome=Sting, cantante_descrizione=Sting è un cantante famoso, cantante_sitointernet=www.sting.com, cantante_genere_id=1 (rok, lo sappiamo dalla tabella genere) Nella tabella tCantante aggiornare alcuni campi del record riferito a Sting cantante_descrizione=Sting è un cantante molto famoso, cantante_sitointernet=www.sting.it Cancellare dalla tabella tCantante il record riferito a Sting

More Related Content

PPT
Basi Di Dati 05
PPT
Basi Di Dati 04
PPT
Basi Di Dati 02
ODP
SQL Unità 1 linguaggio DDL; DML, funzioni di aggregazione
PPSX
Il linguaggio SQL
PDF
Introduzione al SQL e ai database
PPT
Basi Di Dati 01
PPTX
Data definition language postgreSQL
Basi Di Dati 05
Basi Di Dati 04
Basi Di Dati 02
SQL Unità 1 linguaggio DDL; DML, funzioni di aggregazione
Il linguaggio SQL
Introduzione al SQL e ai database
Basi Di Dati 01
Data definition language postgreSQL

What's hot (6)

ODP
primi comandi SQL con Mysql
PPT
PPT
PDF
Principali tag html vers breve2
PPTX
PDF
Access parte terza
primi comandi SQL con Mysql
Principali tag html vers breve2
Access parte terza
Ad

Similar to Basi Di Dati 03 (20)

PPTX
IBM i db2 udb vs Microsoft SQL Server
PPT
SQL Server2000
PPT
PDF
Corso Di Basi Di Dati 02 S Q L Query
PDF
Corso Di Basi Di Dati 02 S Q L D M L
PPTX
Creare tabelle sul database MySql
PDF
C4 Sql1
PDF
F1 Vincoli Procedure Trigger
PDF
C3 Ddl1
PDF
Hosting: gli indici SQL, cosa sono e come funzionano #TipOfTheDay
PDF
PDF
2 Sigda - Database
PDF
C6 Sql2
PPSX
5 ms access
PDF
La Progettazione Fisica
PPT
Oracle 2 (sqlplus)
PPTX
Database introduzione
PPTX
Database - Appunti teorici
PPTX
noSQL La nuova frontiera dei Database [DB05-S]
PDF
IBM i db2 udb vs Microsoft SQL Server
SQL Server2000
Corso Di Basi Di Dati 02 S Q L Query
Corso Di Basi Di Dati 02 S Q L D M L
Creare tabelle sul database MySql
C4 Sql1
F1 Vincoli Procedure Trigger
C3 Ddl1
Hosting: gli indici SQL, cosa sono e come funzionano #TipOfTheDay
2 Sigda - Database
C6 Sql2
5 ms access
La Progettazione Fisica
Oracle 2 (sqlplus)
Database introduzione
Database - Appunti teorici
noSQL La nuova frontiera dei Database [DB05-S]
Ad

More from Francesco Magagnino (9)

PPTX
Presentazione TEDxVerona a AIDP 2015
PPT
Enterprise 2.0 Framework
PPT
Wiki for Governance Risk and Compliance
PPT
L’approccio web 2.0 e le sue ricadute sulle applicazioni di E-Learning: lo ...
PPT
L’approccio web 2.0 e le sue ricadute sulle applicazioni di E-Learning: lo ...
PPT
Web-line. From web 1.0 to web 2.0 and on!
PDF
Il Modello Pragmatico Elementare per lo sviluppo di Sistemi Adattivi - Tesi
PDF
Considerazioni E Mail Marketing, Spamming E Ipersfruttamento Delle Risorse ...
PPT
Il Modello Pragmatico Elementare per lo sviluppo di Sistemi Adattivi - Presen...
Presentazione TEDxVerona a AIDP 2015
Enterprise 2.0 Framework
Wiki for Governance Risk and Compliance
L’approccio web 2.0 e le sue ricadute sulle applicazioni di E-Learning: lo ...
L’approccio web 2.0 e le sue ricadute sulle applicazioni di E-Learning: lo ...
Web-line. From web 1.0 to web 2.0 and on!
Il Modello Pragmatico Elementare per lo sviluppo di Sistemi Adattivi - Tesi
Considerazioni E Mail Marketing, Spamming E Ipersfruttamento Delle Risorse ...
Il Modello Pragmatico Elementare per lo sviluppo di Sistemi Adattivi - Presen...

Basi Di Dati 03

  • 1. BASI DI DATI ESERCITAZIONI -03- MSSQL - SQL Email: francesco.magagnino@ewave.it Università di Trento Corso di Laurea in Ingegneria dell’Informazione e dell’Organizzazione
  • 2. Inserire curriculum.. .. In Comunità On Line
  • 3. SQL: Il linguaggio dei DBMS SQL = Structured Query Language Anni ’70 Definizione del modello relazionale. Prima definizione del linguaggio SQL (allora SEQUEL) Prototipi di DBMS relazionali - System R (IBM) - Ingres (Università di Berkeley) Anni ’80 Standardizzazione di SQL. Primi DB commerciali - Oracle - IBM DB2 Anni ’90 Standard ISO-ANSI-SQL2 (SQL 92) Anni ’00 Standard ISO-ANSI-SQL3 (SQL 99) Recepimento non completato.
  • 4. SQL: Il linguaggio dei DBMS DDL (Data Definition Language) Definizione Schemi e autorizzazioni (create database – drop database – alter table – drop table) DML (Data Manipulation Language) Aggiornamento istanze DB (insert into – update - delete) Estrazione informazioni da DB (Select [all|distinct]) DCL (Data Control Language) Comandi di vario tipo compreso controllo degli accessi SQL = DDL + DML + DCL
  • 5. Principali comandi in SQL (DDL) Crea DB create database “<database>” create database “prova” Elimina DB drop database “<database>” drop database “prova”
  • 6. Principali comandi in SQL (DDL) Crea una tabella create table <nome tabella> (nomecampo | tipo | constaint, ……) create table clienti ( chiave integer not null primary key, nome varchar(30), …..) Modifica una tabella esistente alter table <nome tabella> add nomecampo | tipo | constaint, drop nomecampo, …… alter table clienti add indirizzo varchar(30), drop frazione add primary key (codice) Elimina una tabella drop table <nome tabella> drop table clienti
  • 7. Create Database & Table create database PROVA go use PROVA create table TBinPROVA (conta integer ..)
  • 8. Principali comandi in SQL (DDL) Crea una vista create view <nome vista> <campi> as <select> create view UltimaFattura (fornitore,data,importo) as Select fornitore,data,importo from fatture F Where f.Data = ( Select Max(Data) From fatture F1 Where (F1.fornitore = F.fornitore) ) Elimina un vista drop view <nome vista> drop view Ultimafattura
  • 9. Principali comandi in SQL (DDL) Crea una dominio In SQL è possibile creare un dominio personalizzato ereditando caratteristiche dai principali data types create domain <nome domain> as <caratteristica domain> create domain VOTO as SMALLINT DEFAULT NULL CHECK (VALUE >= 18 and VALUE <= 30 )
  • 10. Principali comandi in SQL (DML) Estrazione dati da Tabella: SELECT Le interrogazione in un DB avvengono trammite l’istruzione SELECT Select ATTRIBUTO From TABELLA Where CONDIZIONE L’interrogazione SQL restituisce i valori degli attributi all’interno della tabella selezionata che soddisfano alla condizione specificata.
  • 11. Principali comandi in SQL (DML) Estrazione dati da Tabella select [ all | distinct ] <lista attributi> from <lista tabelle> where <condizione> group by <lista attributi> having <condizione> order by <lista attributi> select * from fornitori SELECT LastName, FirstName FROM dbo.Employees WHERE (LastName LIKE %K%) ORDER BY FirstName
  • 12. Principali comandi in SQL (DML) Estrazione dati da Tabella SELECT TOP 10 * FROM Employees WHERE City = London
  • 13. WHERE L’argomento della clausola where può essere un espressione booleana costruita a partire da predicati semplici combinati con gli operatori logici . Predicati semplici: A sinistra il valore dell’attributo specificato, a destra un valore costante = …uguale <> …diverso < …minore di > …maggiore di >= …maggiore e uguale di <= …minore e uguale di Operatori logici: AND OR NOT
  • 14. LIKE Serve per porre un uguaglianza non completa. Viene utilizzato insieme a caratteri speciali. Se questi non esistono nella condizione assume il valore di “=“ Caratteri speciali: _ (underscore) o ! (punto esclamativo): indicano la presenza di un qualsiasi carattere % (percentuale) o * (asterisco): indicano la presenza di una serie di caratteri qualsiasi SELECT * FROM Employees WHERE FirstName LIKE R_be* ROBERT RIBE RIBES
  • 15. BETWEEN Serve per identificare un range in cui applicare la condizione . Si specifica un intervallo di valori in cui deve essere compreso il valore affinché sia considerato vero SELECT * FROM Products WHERE (UnitPrice BETWEEN 18 AND 20) SELECT * FROM Employees WHERE (LastName BETWEEN 'f*' AND 'l*') Federico Giovanni Laura 18 18,5 19
  • 16. IN Serve per specificare una serie di valori a cui deve soddisfare la condizione. SELECT * FROM Products WHERE UnitPrice IN (18, 19) Si evita di fare 2 where sullo stesso attributo WHERE UnitPrice = 18 or UnitPrice = 19 18 19 19 18
  • 17. IS NULL Serve per specificare un estrazione con riferimento al valore NULL IS NULL oppure IS NOT NULL Tutti i campi di una colonna che hanno valore NULL Importante ricordare che 0 e “” posseggono un valore, quindi non sono NULL SELECT * FROM Employees WHERE Region IS NULL
  • 18. DISTINCT Serve per non ottenere righe duplicate Se nella select viene applicato a più colonne, adopererà l’univocità su tutte le colonne considerate SELECT DISTINCT City FROM Employees
  • 19. ORDER BY La clausola ORDER BY serve per stabilire l’ordine di visualizzazione Vi è poi la possibilità di specificare se l’ordinamento avviene per valori ascendenti (ASC) o discendenti (DESC) Di default è impostato ASC SELECT * FROM Employees ORDER BY LastName DESC
  • 20. Count / sum / max / min / avg Permettono di ottenere un valore singolo elaborando un insieme di righe. Vengono applicati sulle righe che soddisfano la condizione presente nella clausola where e hanno il seguente significato: count : conteggia le righe che soddisfano un criterio sum : restituisce la somma dei valori posseduti dall'espressione costrutta sui nomi degli attributi max : individua il massimo in un insieme di valori min : individua il minimo in un insieme di valori avg : restituisce la media dei valori dell'espressione
  • 21. GROUP BY Group by permette di specificare come dividere le tabella in sottoinsiemi. La clausola group by ammette come argomento un insieme di attributi e la query raggrupperà le righe che possiedono gli stessi valori per questo insieme di attributi. SELECT Dipendente, SUM(Stipendio) FROM dbo.tb GROUP BY Dipendente
  • 22. Principali comandi in SQL (DML) Inserimento dati in Tabella insert into <nome tabella> (campo1,campo2) values (valore1,valore2) INSERT into employees (firstname, lastname) values ('Paolo','Rossi')
  • 23. Principali comandi in SQL (DML) Aggiornamento dati in Tabella (prevalentemente su condizione where) update <nome tabella> set campo = valore where <condizione> update employees set firstname='Verdi' where lastname='Paolo'
  • 24. Principali comandi in SQL (DML) Eliminazione dati in Tabella (prevalentemente su condizione where) delete <nome tabella> where <condizione> delete employees where firstname='Verdi'
  • 25. Links SQL Injection Tecniche: SQL Injection ( http://sicurezza.html.it/articoli/leggi/973/tecniche-sql-injection/4/ ) SQL injection Basic Tutorial ( http://www.governmentsecurity.org/articles/SQLinjectionBasicTutorial.php ) SQL Injection: Modes of Attack, Defence, and Why It Matters ( http://www.governmentsecurity.org/articles/SQLInjectionModesofAttackDefenceandWhyItMatters.php ) Advanced SQL Injection in SQL Server Applications ( http://www.di.unito.it/~matteo/DIDATTICA/aa06/RdE/advanced_sql_injection.pdf ) Steve Friedl's Unixwiz.net Tech Tips: SQL Injection Attacks by Example ( http://www.unixwiz.net/ techtips / sql-injection.html )
  • 26. Lavorando su SQL Importare il db “CDs” Ordinare in modo discendente rispetto al nome tabella tCantante selezionando tutte le colonne Ordinare in modo ascendente rispetto al titolo la tabella tCD selezionando tutte le colonne Ordinare in modo ascendente rispetto al titolo la tabella tCD selezionando le colonne cd_id, cd_titolo, cd_prezzo, cd_anno Ordinare in modo ascendente rispetto al titolo la tabella tCD selezionando le colonne cd_id, cd_titolo, cd_prezzo, cd_anno Filtrare rispetto ai cd prodotti prima del 2000 Ordinare in modo ascendente rispetto al titolo la tabella tCD selezionando le colonne cd_id, cd_titolo, cd_prezzo, cd_anno Filtrare rispetto ai cd prodotti nel 1990 e nel 2003 Ordinare in modo ascendente rispetto al titolo la tabella tCD selezionando le colonne cd_id, cd_titolo, cd_prezzo, cd_anno Filtrare rispetto ai cd prodotti tra il 1990 e il 2003
  • 27. Lavorando su SQL Visualizza il prezzo più alto tra tutti i cd Ordinare rispetto al titolo la tabella tCanzone selezionando le colonne canzone_id, canzone_titolo Filtrare rispetto alle canzoni il cui titolo inizia per &quot;b&quot; oppure &quot;u&quot; Dalla tabella tRelCdCanzone visualizzare il numero di canzoni per ogni cd (id del cd) Dare il nome &quot;Numero Canzoni&quot; alla colonna con le quantità Nella tabella tCantante inserire un nuovo record (un nuovo cantante) cantante_nome=Sting, cantante_descrizione=Sting è un cantante famoso, cantante_sitointernet=www.sting.com, cantante_genere_id=1 (rok, lo sappiamo dalla tabella genere) Nella tabella tCantante aggiornare alcuni campi del record riferito a Sting cantante_descrizione=Sting è un cantante molto famoso, cantante_sitointernet=www.sting.it Cancellare dalla tabella tCantante il record riferito a Sting