...

SELECT - Luca Andrea Ludovico

by user

on
Category: Documents
11

views

Report

Comments

Transcript

SELECT - Luca Andrea Ludovico
Presentazione 13.1
Structured Query Language (SQL)
Informatica Generale (Prof. Luca A. Ludovico)
Structured Query Language (SQL)
• Sql è un linguaggio standard che permette di operare
con i DBMS quali Access, Oracle, Microsoft SQL Server,
Informix, DB2, ...
• E’ linguaggio dichiarativo: specifica le proprietà del
risultato.
• Permette di:
– inserire, modificare e cancellare dei dati da database
– prelevare, elaborare e visualizzare dati in diversi modi
– effettuare operazioni quali creazione e cancellazione di
tabelle e database.
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 13.1
Il costrutto SELECT
•
Permette di estrarre alcuni (o tutti) gli attributi di una tabella.
•
Sintassi semplificata:
SELECT attributi FROM nome_tabella
•
“attributi” può essere:
–
–
–
•
il nome di un solo attributo dello schema di nome_tabella;
il nome di più attributi dello schema, separati da virgole;
il carattere speciale *, che considera tutti gli attributi.
In questa forma, SELECT è la proiezione dell’algebra relazionale
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 13.1
SELECT: esempi
Artisti
Nome
Cognome
Opera
Riccardo
Muti
Tosca
Riccardo
Chailly
Boheme
Giuseppe
Sinopoli
Aida
Daniele
Gatti
Rigoletto
SELECT Nome FROM Artisti
Attenzione alla cardinalità della relazione
SELECT Cognome, Nome FROM Artisti
SELECT * FROM Artisti
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 13.1
La clausola WHERE
•
L’uso di WHERE in una SELECT permette di estrarre alcuni (o tutti) i
dati di una tabella in base a determinati criteri espressi nella
clausola WHERE.
•
Sintassi:
SELECT attributi FROM tabella WHERE condizioni
•
Le condizioni sono espressioni booleane da soddisfare. Sono
ammessi gli operatori booleani AND, OR e NOT.
•
In questa forma, SELECT è in generale la proiezione su “attributi” di
una selezione (basata su “condizioni”) in algebra relazionale
SELECT * FROM tabella WHERE condizioni è la pura selezione
dell’algebra relazionale.
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 13.1
La clausola WHERE: sintassi delle condizioni
• Operatori di confronto ammessi:
=
<
>
<>
<=
>=
LIKE
uguale
minore
maggiore
diverso
minore o uguale
maggiore o uguale
contiene
• Se il valore dell’attributo deve essere confrontato con
testo, allora il testo deve essere incluso tra gli apici ',
mentre se esso deve essere confrontato con un numero,
gli apici non devono essere utilizzati.
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 13.1
SELECT… FROM … WHERE: esempi
Artisti
Nome
Cognome
Opera
Recite
Riccardo
Muti
Tosca
8
Riccardo
Chailly
Boheme
10
Giuseppe
Sinopoli
Aida
7
Daniele
Gatti
Aida
4
SELECT * FROM Artisti WHERE Opera = ‘Aida’
SELECT Cognome FROM Artisti WHERE Nome <> ‘Riccardo’
SELECT * FROM Artisti WHERE Opera = ‘Aida’ AND Recite > 6
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 13.1
Sintassi di LIKE e il carattere speciale %
•
LIKE permette di ricercare all’interno dei valori degli attributi
parole, numeri o parti di essi (iniziali, centrali e finali).
•
Per restituire come risultati tutti i dati che sono presenti nella
colonna Nome e che iniziano per m:
SELECT Nome FROM Artisti WHERE Nome LIKE ‘m’
•
Per cercare invece nomi che finiscono per ele si utilizza la seguente
query:
SELECT Nome FROM Artisti WHERE Nome LIKE ‘%ele’
•
Infine per cercare le tuple ove i cognomi iniziano, terminano o
contengono la r, si utilizza la seguente query:
SELECT * FROM Artisti WHERE Cognome LIKE '%r%'
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 13.1
La condizione BETWEEN … AND
• BETWEEN ... AND è un caso particolare di condizione,
quindi posto dopo WHERE, che serve a prelevare dati il cui
valore è compreso tra due valori (estremi esclusi).
• Sintassi:
SELECT attributi FROM tabella WHERE attributo BETWEEN valore1 AND valore2
• Esempio:
SELECT * FROM Artisti WHERE
(Recite BETWEEN 5 AND 20) AND (Nome = “Riccardo”)
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 13.1
La clausola DISTINCT
• DISTINCT è una parola chiave che si pone
immediatamente dopo SELECT per non ripetere nei
risultati lo stesso valore.
• Sintassi:
SELECT DISTINCT attributi FROM tabella …
•
L’SQL ammette (al contrario dell’Algebra relazionale)
valori ripetuti. La clausola DISTINCT serve ad evitare
tale situazione.
•
Esempio: SELECT DISTINCT Nome FROM Artisti
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 13.1
ORDER BY
• Ordina i risultati in ordine crescente (ORDER BY
attributi) o decrescente (ORDER BY attributi DESC)
secondo i valori di uno o più attributi.
•
Sintassi:
SELECT DISTINCT attributi FROM tabella
WHERE condizioni ORDER BY attributi [DESC]
• Se si vuole ordinare per più attributi, essi devono
essere separati da virgole. L’ordine di valutazione è
da sinistra verso destra.
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 13.1
Costrutto AS
• Svolge l’operazione di ridenominazione sugli attributi
estrapolati tramite un’istruzione di SELECT
•
Sintassi:
SELECT attr_1 AS alias_1, … , attr_n AS alias_n
FROM tabella WHERE condizione …
•
Esempio:
SELECT Recite AS NumeroDiRecite FROM Artisti
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 13.1
Funzione COUNT
• Conta le tuple di una relazione. Si pone immediatamente
dopo un’istruzione di SELECT, e consente di specificare
DISTINCT per eliminare i duplicati nei valori degli
attributi. Il risultato della query è un numero.
•
Sintassi:
SELECT COUNT (attributi) FROM tabella
•
Esempi:
SELECT COUNT (*) FROM Artisti
SELECT DISTINCT COUNT (Nome) FROM Artisti
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 13.1
Funzioni MIN, MAX e AVG
• Posti immediatamente dopo SELECT, permettono di
selezionare il valore minimo, il valore massimo ed il
valore medio di una serie di valori di un attributo. Tali
operazioni sono definite solo su particolari domini.
•
Sintassi:
SELECT {MIN | MAX | AVG} (attributo) FROM tabella …
•
Esempi:
SELECT MIN (Nome) FROM Artisti
SELECT MAX (Opera) FROM Artisti
SELECT AVG (Recite) FROM Artisti
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 13.1
Costrutto INSERT INTO
• Inserisce una nuova tupla all’interno di una relazione
di schema dato.
•
Sintassi:
INSERT INTO tabella VALUES (valore_1, … , valore_n)
per inserire una tupla completa secondo l’ordine dello
schema, oppure
INSERT INTO tabella (attributo_1, … , attributo_n)
VALUES (valore_1, … , valore_n)
per specificare l’ordine dei valori, o non valorizzare
tutti gli attributi.
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 13.1
INSERT… INTO: esempio
Artisti
Nome
Cognome
Opera
Recite
Riccardo
Muti
Tosca
8
Riccardo
Chailly
Boheme
10
Giuseppe
Sinopoli
Aida
7
Daniele
Gatti
Aida
4
INSERT INTO Artisti VALUES (‘Antonio’, ‘Pappano’, ‘Rigoletto’, 1)
INSERT INTO Artisti (Cognome, Nome) VALUES (‘Toscanini’, ‘Arturo’)
Nome
Cognome
Opera
Recite
Riccardo
Muti
Tosca
8
Riccardo
Chailly
Boheme
10
Giuseppe
Sinopoli
Aida
7
Daniele
Gatti
Aida
4
Antonio
Pappano
Rigoletto
1
Arturo
Toscanini
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 13.1
Costrutto UPDATE
• Aggiorna tuple già inserite che rispondono a una certa
condizione
•
Sintassi:
UPDATE tabella SET attributo = valore WHERE condizione
•
Esempio:
UPDATE Artisti SET Nome = ‘Edoardo’ WHERE
Cognome LIKE ‘%m%’
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 13.1
Costrutto DELETE FROM
• Elimina le tuple che soddisfano una data condizione
•
Sintassi:
DELETE FROM tabella WHERE condizione
•
Esempio:
DELETE FROM Artisti WHERE Recite < 1 OR Opera = ‘Aida’
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 13.1
Prodotto cartesiano e join
• SELECT * FROM tabella1, tabella2
• SELECT * FROM tabella1, tabella2 WHERE
tabella1.attr1 = tabella2.attr2
• SELECT * FROM tabella1 JOIN tabella2
ON tabella1.attr1 = tabella2.attr2
• Varianti: invece di JOIN, è possibile usare LEFT JOIN o
RIGHT JOIN
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 13.1
Fly UP