67
SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos & Prof. Andrea Borghesan DDL Data Definition Language DML Data Manipulation Language DCL Data Control Language SQL

SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

  • Upload
    others

  • View
    64

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

SQL

(STRUCTURED QUERY LANGUAGE)Prof. Nicoletta D‟Alpaos & Prof. Andrea Borghesan

DDL

Data Definition Language

DML

Data Manipulation Language

DCL

Data Control Language

SQL

Page 2: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

DDL

2

Obiettivo:

Definire la struttura delle relazioni del database (DDL: Data

Definition Language)

DDL

Create

Drop

Alter

Page 3: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Create database

3

Il comando create database serve a creare un nuovo database, che

potrà contenere :

Tabelle

Viste

stored procedure

Trigger

altri tipi di oggetti.

Nota 1: in Access i database devono essere creati all‟interno dell‟ambiente GUI.

Nota 2: esiste anche:

ALTER DATABASE nome_database CHARACTER SET caratteri;

(caratteri per esempio latin1).

Page 4: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Create database

4

CREATE DATABASE nome_database;

Esempio:

CREATE DATABASE azienda;

Page 5: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Drop database

5

Il comando drop database serve a cancellare un database.

DROP DATABASE nome_database;

Esempio:

DROP DATABASE azienda;

Page 6: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Create table

6

Il comando create table ha la funzione di creare una nuova

tabella (o tavola).

Una tabella è composta da:

attributi

domini

vincoli

Page 7: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Create table

7

Il nome della tabella:

1. Può essere scritto indifferentemente in MAIUSCOLO o in

minuscolo

2. Può essere formato da lettere e numeri, ma il primo carattere

deve sempre essere una lettera;

3. Non può superare i 30 caratteri di lunghezza;

4. Non può avere lo stesso nome di una tabella o vista già esistente

sullo stesso utente di database.

La tabella può :

essere creata vuota (create table)

essere creata e riempita di dati (create table + select)

Page 8: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Create table

8

CREATE TABLE nome_tabella (

nome_campo tipo [(lunghezza)] [NOT NULL | NULL][DEFAULT valore_di_default] [AUTO_INCREMENT][[PRIMARY] KEY] [UNIQUE][CHECK (espressione)]

[PRIMARY KEY (nome_campo [,…])][[UNIQUE] INDEX [nome_indice] (nome_campo [,…])]

[FOREIGN KEY [nome_indice] (nome_campo [,…]) REFERENCES nome_tabella_f nome_campo_f [ON

DELETE | ON UPDATE (CASCADE | SET DEFAULT | SET NULL |

RESTRICT) ] );

Page 9: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Create table

9

CREATE TABLE nome_tabella

AS

SELECT ...;

La struttura della tabella, in questo caso, è definita implicitamente dal numero

di colonne (o campi) estratti dalla select, dal tipo di dato di ciascuna colonna e

dai nomi delle rispettive colonne estratte dalla select (o dagli alias ad esse

applicati).

Page 10: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Create table

10

Esempio:

CREATE TABLE tblAmici (codice SMALLINT PRIMARY KEY,nome CHAR (20) NOT NULL,cognome CHAR (30),telefono VARCHAR (15) DEFAULT ‘0’,data_nascita date,gruppo INTEGER,UNIQUE (nome,cognome),FOREIGN KEY (gruppo) REFERENCEScompagnie (id_gruppo) ON DELETE CASCADE

)

Page 11: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Create table

11

…. Che cos‟è il tipo ?

Domini:

Domini elementari (predefiniti)

Domini definiti dall'utente (semplici, ma riutilizzabili)

(vedi più avanti)

Page 12: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Create table

12

…. Foreign key ?

REFERENCES nome_tabella [ ( colonna1 [ , colonna2 ... ] ) ]

[ ON DELETE { CASCADE | SET DEFAULT | SET NULL } ]

[ ON UPDATE { CASCADE | SET DEFAULT | SET NULL } ]

Le clausole ON DELETE e ON UPDATE indicano quale azione deve essere compiuta nel

caso in cui una tupla nella tabella referenziata venga eliminata o aggiornata. Infatti in tali

casi nella colonna referenziante (che e' quella che si sta definendo) potrebbero esserci dei

valori inconsistenti. Le azioni possono essere:

o CASCADE: eliminare la tupla contenente la colonna referenziante (nel caso di ON

DELETE) o aggiornare anche la colonna referenziante (nel caso di ON UPDATE).

o SET DEFAULT: assegnare alla colonna referenziante il suo valore di default.

o SET NULL: assegnare alla colonna referenziante il valore NULL.

Page 13: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Drop table

13

Il comando “drop table” consente di distruggere una tabella, eliminandola fisicamente dal database.

Come tutti i comandi DDL è un'operazione irreversibile, e provoca la perdita di tutti i dati contenuti nella tabella.

DROP TABLE nome_tabella;

Page 14: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Rename

14

Il comando rename consente di rinominare una tabella.

RENAME nome_tabellaTO nuovo_nome_tabella;

Page 15: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Domini

15

Domini elementari (predefiniti)

Domini definiti dall'utente (semplici, ma riutilizzabili)

Page 16: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Domini elementari

16

Carattere: singoli caratteri o stringhe, anche di lunghezza

variabile

Bit: singoli booleani o stringhe

Numerici, esatti e approssimati

Data, ora, intervalli di tempo

Page 17: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Domini elementari (1)

17

Esempi dei principali tipi previsti dallo standard SQL:

CHARACTER(n) o CHAR(n)Una stringa a lunghezza fissa di esattamente n caratteri.

CHARACTER VARYING(n) o VARCHAR o CHAR VARYINGUna stringa a lunghezza variabile di al massimo n caratteri.esempio stringa variabile di 500 caratteri al massimo, alfabeto grecocharacter varying (500) character set Greek

INTEGER o INTUn numero intero con segno. La precisione, cioe' la grandezza del numero intero che puo' essere memorizzato in una colonna di questo tipo, dipende dall'implementazione del particolare DBMS.

SMALLINTUn numero intero con segno con precisione non superiore a INTEGER.

Page 18: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Domini elementari (2)

18

FLOAT(p) o REAL o DOUBLE PRECISION

Un numero a virgola mobile, con precisione p. Il valore massimo di p dipende dall'implementazione del DBMS.

E' possibile usare FLOAT senza indicazione della precisione, utilizzando quindi la precisione di default,

anch'essa dipendente dall'implementazione.

DECIMAL(p,q) o DEC(p,q)

Un numero a virgola fissa di almeno p cifre e segno, con q cifre dopo la virgola

INTERVAL

Un periodo di tempo (anni, mesi, giorni, ore, minuti, secondi e frazioni di secondo).

DATE, TIME e TIMESTAMP

Un preciso istante temporale. DATE permette di indicare l'anno, il mese e il giorno, TIME ora, minuti e

secondi. TIMESTAMP e' la combinazione dei due precedenti. (secondi sono un numero con la virgola per

specificare anche frazioni di secondo).

Page 19: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Altri domini secondo SQL-3

19

boolean (restrizione del dominio bit)

blob (binary large object)

clob (character large object)

ref

array

row

Page 20: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Domini definiti dall’utente

20

CREATE DOMAIN:

– definisce un dominio (semplice), utilizzabile in

definizioni di relazioni, anche con vincoli e valori di

default

– La definizione di un nuovo dominio consente una

maggiore flessibilità della base di dati, in particolare se si

vogliono cambiare i vincoli di un dominio è sufficiente

modificarne la definizione

Page 21: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Create domain

21

esempio

CREATE DOMAIN Voto

AS SMALLINT DEFAULT NULL

CHECK ( value >=18 AND value <= 30 );

Page 22: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

DML

22

SQL

(STRUCTURED QUERY LANGUAGE)

Page 23: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

DML

23

Modificare i dati contenuti nel database, con operazioni diinserimento, variazione e cancellazione (DML: DataManipulation Language)

DML

Insert

Update

Delete

Select

Page 24: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Insert

24

Il comando “insert into” permette l‟inserimento dei nuovi

dati

INSERT INTO nome_tabella [nome_campo [, …]]

{VALUES (espressione[,…]) | SELECT ….}

Page 25: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Insert

25

Esempi (1):

INSERT INTO studenti (matricola, nome, cognome, via, citta, telefono)

VALUES (100, “Mario”, “Rossi”, “viale indipendenza 15”, “Milano”, “02-12345678”);

INSERT INTO studenti (matricola, nome, cognome, via, citta, telefono) VALUES

(100, “Mario”, “Rossi”, “viale indipendenza 15”, “Milano”, “02-12345678”),

(101,“Valentina”,”Bianchi”, “Piazza delle Erbe”, “Padova”, “049-98765432”);

Page 26: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Insert

26

Esempi (2):

INSERT INTO studenti

VALUES (100, “Mario”, “Rossi”);

INSERT INTO studenti (matricola, nome, cognome, citta)

SELECT matricola, nome, cognome, citta

FROM nuoviIscritti

WHERE citta = “Milano”;

Page 27: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Update

27

Il comando “update” permette l‟aggiornamento di una

tabella

UPDATE nome_tabella

SET nome_campo = { espressione | NULL | DEFAULT |

SELECT …}

WHERE condizione };

Page 28: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Update

28

Esempi:

UPDATE studenti SET classe = classe+1

WHERE promosso = true AND classe < 5;

Page 29: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Delete

29

Il comando “delete from” permette l‟eliminazione di righe di una tabella

DELETE FROM nome_tabella[WHERE condizione ][LIMIT massimo_numero righe];

Nota access non supporta “limit”

Page 30: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Delete

30

Esempi:

DELETE FROM studenti

WHERE promosso = true AND classe = 5;

DELETE FROM nuoviIscritti;

(che differenza c’è con DROP TABLE nuoviIscritti; ?)

Nota: se il vincolo di integrità non è definito nello schema di creazione della tabella,

l‟eliminazione è sempre possibile, altrimenti …. (vedi foreign key)

Page 31: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

DCL

31

SQL

(STRUCTURED QUERY LANGUAGE)

Page 32: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

DCL

32

Gestire il controllo degli accessi e i permessi per gli utenti (DCL: Data Control Language)

DCL

Grant

Revoke

Page 33: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Grant

33

GRANT{privilegio[,…] [nome_campi[,…] ]}

ON nome_tabella | nome_databaseTO (nome_utente[,…]);

Page 34: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Revoke

34

REVOKE{privilegio[,…]

ON nome_tabella | nome_database

FROM (nome_utente[,…]);

Page 35: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Privilegi:

35

ALL

ALTER

CREATE

DELETE

DROP

INDEX

INSERT

SELECT

UPDATE

USAGE

GRANT OPTION

Page 36: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

DCL

36

Esempi:

GRANT SELECT, INSERT, UPDATE (voto, condotta)

ON studenti TO professore;

GRANT ALL

ON studenti TO segreteria;

GRANT SELECT

ON dbScuola.* TO „%‟@„localhost‟;

REVOKE ALL

ON studenti TO preside;

Page 37: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

QUERY Language

37

SQL

(STRUCTURED QUERY LANGUAGE)

Page 38: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

QUERY Language

38

Porre interrogazioni al database

SELECT [ALL | DISTINCT]

{* | (nome_campo [AS alias])[,…]}

FROM nome_tabella [AS alias] [,…]

[WHERE condizione]

[GROUP BY nome_campo]

[HAVING condizione]

[ORDER BY (nome_campo) [ASC | DESC] [,…]

[LIMIT [ riga_iniziale,][righe]];

Nota: LIMIT per MYSQL; TOP per ACCESS.

Page 39: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Operatori relazionali

39

selezione

proiezione

congiunzione (join)

Page 40: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Selezione

40

L‟operazione di selezione (non confondere con il comando SQL, SELECT !)

estrae un sottoinsieme di righe da una tabella in base a delle condizioni imposte ai valori contenuti in una o più colonne.

Page 41: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Proiezione

41

L‟operazione di proiezione estrae un sottoinsieme di colonne da una

tabella

Page 42: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Esempio selezione:

42

SELECT * FROM articoli WHERE colore= “Rosso”;

Page 43: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Esempio proiezione:

43

SELECT colore FROM articoli;

Page 44: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Esempio:

44

SELECT DISTINCT colore FROM articoli ORDER BY colore;

Page 45: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Esempio selezione e proiezione:

45

SELECT descrizione FROM articoli WHERE colore= “Rosso”;

Page 46: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Join

46

L‟operazione di congiunzione (non confondere nella

traduzione dall‟inglese UNION con JOIN) combina le

operazioni di prodotto e di selezione tra due (o più

tabelle); viene cioè effettuato prima il prodotto fra le

tabelle e poi estratte solo le righe che soddisfano una

determinata condizione tra le colonne della prima e della

seconda tabella.

Page 47: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Join

47

Date le tabelle di partenza

tblA e tblB:

Page 48: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Join

48

Outer join

Page 49: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Esempio selezione:

49

SELECT * FROM TblLibri WHERE prezzo < 20,00;

Page 50: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Esempio proiezione:

50

SELECT Titolo, isbn FROM TblLibri ORDER BY Titolo;

Page 51: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Esempio join:

51

SELECT * FROM TblLibri,TblEditore

WHERE TblLibri.Id_CasaEditrice = TblEditori.Id_CasaEditrice;

SELECT * FROM TblLibri INNER JOIN TblEditore

ON TblLibri.Id_CasaEditrice = TblEditori.Id_CasaEditrice;

Page 52: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Esempio outer join:

52

SELECT * FROM TblLibri LEFT JOIN TblEditore

ON TblLibri.Id_CasaEditrice = TblEditori.Id_CasaEditrice;

Page 53: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Esempio outer join :

53

SELECT * FROM TblLibri RIGHT JOIN TblEditore

ON TblLibri.Id_CasaEditrice = TblEditori.Id_CasaEditrice;

Page 54: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Altri operatori

54

ORDER BY

LIKE

BETWEEN

IN

Page 55: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Esempio:

55

SELECT isbn,titolo FROM TblLibri WHERE

DataPubblicazione BETWEEN #01/01/2005 # AND #31/12/2005#

AND isbn LIKE “88-*” ORDER BY isbn DESC;

Page 56: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Esempio:

56

SELECT editore FROM TblEditori

WHERE provincia IN („TO‟ , „PD‟, „VE‟);

Page 57: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Esempio:

57

SELECT titolo FROM TblLibri

WHERE Id_CasaEditrice IN (

SELECT Id_CasaEditrice FROM TblEditori

WHERE provincia =“MI”);

…query nidificata…

Page 58: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Operatori di aggregazione

58

AVG

COUNT

MAX

MIN

SUM

Page 59: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Operatori di aggregazione (2)

59

STDEV (access)

STDDEV (mysql)

VAR (access)

VARIANCE (mysql)

Page 60: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Esempio:

60

SELECT AVG(Prezzo) FROM TblLibri; 21,28

SELECT COUNT(*) FROM TblLibri; 5

SELECT COUNT(Id_CasaEditrice) FROM TblLibri; 4

SELECT COUNT(*) - COUNT(Id_CasaEditrice) FROM TblLibri; 1

SELECT COUNT(DISTINCT Id_CasaEditrice) FROM TblLibri; 3

(ma solo mysql)

Page 61: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Raggruppamenti

61

“GROUP BY” serve per raggruppare ed elaborare diverse

righe che nella tabella origine hanno valori uguali in una (o

più) determinata colonna

Page 62: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Condizioni di gruppo

62

“HAVING” permette di porre condizioni sulla nuova tabella

ottenuta dopo il raggruppamento

SELECT …

FROM … [JOIN] … [WHERE] ….

GROUP BY ….

[HAVING condizione];

Page 63: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Esempio:

63

SELECT trimestre, SUM (totale) AS venduto

FROM TblVendite

GROUP BY trimestre;

Page 64: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Esempio:

64

SELECT zona, AVG (totale) AS media

FROM TblVendite

GROUP BY zona

HAVING AVG (totale) < 1000;

Page 65: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Appendice

65

Page 66: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Caratteri Jolly (ACCESS)

Carat

tere

Utilizzo Esempio

* Corrisponde a un numero qualsiasi di

caratteri. Può essere utilizzato come

primo o ultimo carattere nella stringa

dei caratteri.

no* trova nome, note e

notare

? Corrisponde a qualsiasi singolo

carattere alfabetico.

B?llo trova ballo, bello

e bollo

[] Corrisponde a qualsiasi singolo

carattere all'interno delle parentesi

quadre

B[ae]llo trova ballo e

bello, ma non bollo

66

Page 67: SQL (STRUCTURED QUERY LANGUAGE)venus.unive.it/borg/Sql.pdf · SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D‟Alpaos& Prof. Andrea Borghesan DDL Data Definition Language DML Data

Caratteri Jolly (ACCESS)

Carat

tere

Utilizzo Esempio

! Corrisponde a qualsiasi carattere non

incluso nelle parentesi quadre

b[!ae]llo trova bollo e

bullo, ma non ballo e

bello

- Corrisponde a uno qualsiasi dei

caratteri di un intervallo. È necessario

specificare l'intervallo in ordine

crescente (dalla A alla Z, non dalla Z

alla A)

b[a-c]d trova bad, bbd

e bcd

# Corrisponde a qualsiasi singolo

carattere numerico

Corrisponde a qualsiasi

singolo carattere

numerico.

1#3 trova 103, 113

67