Basi Di Dati 03

60 %
40 %
Information about Basi Di Dati 03

Published on August 22, 2007

Author: magafr

Source: slideshare.net

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

.. 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 = 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

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”

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

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 ..)

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

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 )

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.

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

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

Estrazione dati da Tabella

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

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

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

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*')

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

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

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

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

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

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

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

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')

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'

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'

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 )

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

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

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

Add a comment

Related presentations

Related pages

UniNettuno Basi di Dati Lez 03 - YouTube

Filosofia Vattimo Il pensiero filosofico 01 La fine della bella epoque Il tramonto dell'Occide - Duration: 47:56. giuseppe contessi 744 ...
Read more

03 - Modelli e linguaggi per Basi di Dati - YouTube

Matteo Renzi ha accettato l'Ice Bucket Challenge: ecco la sua secchiata gelata per la SLA - Duration: 1:58. Meridiana Notizie 224,333 views
Read more

Ing. Informatica - Basi di Dati - A.A. 2002/2003 - Lezioni

Università di Roma "La Sapienza" Laurea in Ingegneria Informatica - nuovo ordinamento Basi di Dati Lezioni A.A. 2002/2003 Prof. Diego Calvanese
Read more

EducataMente: Basi di dati: lezione n. 03

In questa lezione affrontiamo l'importante concetto di relazioni fra tabelle. La possibilità di gestire questa particolare proprietà (la relazionalità ...
Read more

Basi di dati II - dia.uniroma3.it

Basi di dati II. Il corso è attivo dal 2008-2009 nell'ordinamento didattico istituito ai sensi del D.M. 270/2004 ... Ultima modifica: 04/03/2016 ...
Read more

Basi di Dati e Laboratorio 02/03 - di.unito.it

Informatica Introduzione alle basi di dati Lezione 8 (bis) Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno ...
Read more

Indice - ' | Dipartimento di Matematica e Informatica

ESERCIZI DI BASI DI DATI Ra aella Gentilini Indice 1. Algebra e Calcolo Relazionale 1 2. Progettazione Concettuale e Logica 5 3. Normalizzazione 9
Read more

Basi di Dati - Politecnico di Torino

Edit View Connections Connections oracleBD Navigate Run Source Team Tools Window Help ? Start Page orac/eBD Worksheet Query Builder SELECT * FROH
Read more