SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

Documenti analoghi
Monday, January 24, 2011 SQL

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

Informatica B. Introduzione alle Basi di Dati e ai DBMS

Interrogazioni in SQL SQL1 1

Informatica B. Introduzione alle Basi di Dati e ai DBMS

Basi di Dati prof. Letizia Tanca

Dichiarazione degli schemi in SQL DDL 1

Basi di dati. Il linguaggio SQL. Gabriella Pasi SQL

Linguaggi di interrogazione. linguaggi interrogazione 1

E possibile ordinare le righe del risultato di una interrogazione attraverso la clausola order by, a chiusura di una interrogazione.

Interrogazioni complesse. SQL avanzato 1

Basi di dati. Linguaggi di interrogazione

Gestione dei valori nulli

IL LINGUAGGIO SQL LE BASI

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento

SQL come linguaggio di interrogazione. Basi di dati. Interrogazioni SQL. Interpretazione algebrica delle query SQL

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

Il modello relazionale dei dati. modello relazionale 1

Algebra relazionale: operazioni

Gestione e Analisi dei Dati. Lezione 2 Vincoli su attributo Selezioni semplici su una tabella

Interrogazioni complesse. SQL avanzato 1

Interrogazioni semplici

Linguaggio SQL seconda parte

Structured Query Language

Corso di Informatica Medica

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

Interrogazioni su più tabelle. Interrogazioni su più tabelle. Clausola where. Interrogazioni su più tabelle

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

Gestione di basi di dati relazionali con SQL (parte II) Valutazione delle condizioni su insiemi di tuple

SQL. SQL: "storia. Sviluppato nella metà degli anni settanta (1974) presso il laboratorio di ricerca IBM di S.Josè. Dal 1983 ca. "standard di fatto"

Operazioni sui dati. Interrogazioni con operatori aggregati. Capitolo 4

QL (Query Language) Alice Pavarani

Corso sul linguaggio SQL

Linguaggio SQL: fondamenti D B M G

Basi di dati - Laboratorio

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

Interrogazioni. L istruzione base per le interrogazioni è select

Interrogazioni con Raggruppamenti

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

Operazioni su insiemi: unione, intersezione e differenza

Interrogazioni di tipo insiemistico. Select. Interrogazioni di tipo insiemistico. Interrogazioni nidificate

Modello relazionale. ì Tabella e relazione. ì Schema di una relazione

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione

SQl come DML. Angelo Chianese,, Vincenzo Moscato, Antonio Picariello,, Lucio Sansone

Vincoli interrelazionali

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

Il linguaggio SQL: raggruppamenti

Caratteristiche dei linguaggi per Database

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

D B M G. Linguaggio SQL: fondamenti. Istruzione SELECT: fondamenti. Elena Baralis 2007 Politecnico di Torino 1. Struttura di base

Linguaggio SQL: fondamenti D B M G

Lezioni di Laboratorio sui Data Base

Elena Baralis 2007 Politecnico di Torino 1

SQL /10/2016 Basi di dati - SQL 1

Corso di Basi di Dati

Laboratorio di. Docenti: Alberto Belussi e Carlo Combi

Basi di Dati. Concetti Avanzati

SQL terza parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2010/11

Monday, January 10, Introduzione

SQL: "storia" 31/05/2006 2

Elena Baralis 2007 Politecnico di Torino 1

Prof. Alberto Postiglione Dipartimento di Scienze della Comunicazione Università degli Studi di Salerno

Basi di Dati: Corso di laboratorio

Gestione di basi di dati relazionali con SQL (parte I) Linguaggi per basi di dati

Corso di. Basi di Dati I. 9. Esercitazioni in SQL: Check, asserzioni, viste

Il linguaggio SQL: raggruppamenti

SQL. SQL: una visione panoramica. SQL: "storia" Definizione dei dati

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

Archivi e basi di dati - ing. M. Cossentino. Settore. Traccia 1. Traccia 200. Settore non polarizzato

Linguaggi per basi di dati. Linguaggi per basi di dati e SQL. Linguaggi di interrogazione per basi di dati relazionali. Linguaggi di interrogazione

Linguaggi per basi di dati e SQL

Operatori aggregati. Gli operatori di aggregazione NON sono rappresentabili in Algebra Relazionale. conteggio, minimo, massimo, media, somma

Operatori aggregati: COUNT

Basi di Dati: Corso di laboratorio

SQL - Structured Query Language

Sistemi di Elaborazione delle Informazioni

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. SQL come Data Manipulation Language - (SELECT FROM WHERE ORDER BY)

Il linguaggio SQL: raggruppamenti. Versione elettronica: SQLb-gruppi.pdf

Basi di dati. Gabriella Trucco

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

Il linguaggio SQL: raggruppamenti

Principi di Progettazione del Software a.a Il linguaggio SQL. Il Linguaggio SQL

Operatori aggregati: COUNT

Informatica II Basi di Dati (07/08) Parte 2. 4 Accesso ai dati di un DB. Accesso ai dati di un DB. Accesso ai dati di un DB

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata

Database parte 2. Database azienda

SQL è stato definito nel 1973 ed è oggi il linguaggio universale dei sistemi relazionali

BASI di DATI. SQL: concetti fondamentali

Idoneita Informatica. Sistemi per la gestione di basi di Dati

Linguaggio SQL. studenti matricola nome cognome citta anno 11 marco bini bologna laura sicuro rimini 1984 esami codice

Informatica Grafica. Basi di dati parte 2

Il linguaggio SQL - Interrogazioni -

Basi di Dati. Concetti Fondamentali SQL-92 25/02/2004. Concetti Fondamentali. Introduzione. Interrogazioni. Creazione ed eliminazione di bd

BASE DI DATI. Concetti trattati: Funzioni aggregate Raggruppamenti Nidificazione Viste. Informatica Umanistica Università di Pisa

Progettazione di Sistemi Informatici

Basi di Dati SQL-92. Concetti Fondamentali

Transcript:

SQL

SQL Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative l utente specifica quale informazione è di suo interesse, ma non come estrarla dai dati Le interrogazioni vengono tradotte dall ottimizzatore (query optimizer) nel linguaggio procedurale interno al DBMS Il programmatore si focalizza sulla leggibilità, non sull efficienza È l'aspetto più qualificante delle basi di dati relazionali

Definizione di tabelle Una tabella SQL consiste di: un insieme ordinato di attributi un insieme di vincoli (eventualmente vuoto) Comando create table definisce lo schema di una relazione, creandone un istanza vuota create table Studente ( Matr varchar(6) primary key, Nome varchar(30) not null, Città varchar(0), CDip varchar(3) )

Vincoli intra-relazionali I vincoli sono condizioni che devono essere verificate da ogni istanza della base di dati I vincoli intra-relazionali coinvolgono una sola relazione (distinguibili ulteriormente a livello di tupla o di tabella) not null (su un solo attributo; a livello di tupla) unique: permette la definizione di chiavi candidate (opera quindi a livello di tabella); sintassi: per un solo attributo: unique, dopo il dominio per diversi attributi: unique( Attributo {, Attributo } ) primary key: definisce la chiave primaria (una volta per ogni tabella; implica not null); sintassi come per unique

Integrità referenziale Esprime un legame gerarchico (padre-figlio) fra tabelle Alcuni attributi della tabella figlio sono definiti FOREIGN KEY I valori contenuti nella FOREIGN KEY devono essere sempre presenti nella tabella padre

Una istanza scorretta Matr Nome Città CDip 13 415 70 Matr Cod Corso Data Esame Voto 13 1 7-9-97 30 viola la chiave 13 13 8-1-98 1-8-97 8 8 viola il NULL viola la integrità referenziale 70 70 714 1 1 7-9-97 NULL 7-9-97 0 NULL 8

Interrogazioni SQL Le interrogazioni SQL hanno una struttura select-from-where Sintassi: select AttrEspr {, AttrEspr} from Tabella {, Tabella} [ where Condizione ] Le tre parti della query sono chiamate: clausola select / target list clausola from clausola where La query effettua il prodotto cartesiano delle tabelle nella clausola from, considera solo le righe che soddisfano la condizione nella clausola where e per ogni riga valuta le espressioni nella select Sintassi completa: select AttrEspr [[ as ] Alias ] {, AttrEspr [[ as ] Alias ] } from Tabella [[ as ] Alias ] {, Tabella [[ as ] Alias ] } [ where Condizione ]

Interpretazione algebrica delle query SQL La query generica: select T1.Attributo1,, Th.Attributoh from Tabella1 as T1,, Tabellah as Th where Condizione corrisponde all interrogazione in algebra relazionale: π T1.Attributo1,Th.Attributoh (σ Condizione (Tabella1... Tabellah))

Esempio: gestione degli esami universitari Studente MATR 13 415 70 NOME Carlo Alex Antonio CITTA Bologna Torino Roma CDIP Inf Inf Log Esame MATR 13 13 70 COD- CORSO 1 DATA 7-9-97 8-1-98 7-9-97 VOTO 30 8 0 Corso COD- CORSO 1 TITOLO matematica informatica DOCENTE Barozzi Meo

Interrogazione semplice select * from Studente MATR NOME CITTA CDIP 13 Carlo Bologna Inf 415 Alex Torino Inf 70 Antonio Roma Log select Nome from Studente where CDip = Log

Sintassi della clausola where Espressione booleana di predicati semplici (come in algebra) Estrarre gli studenti di informatica originari di Bologna: select * from Studente where CDip = Inf and Città = Bologna Estrarre gli studenti originari di Bologna o di Torino: select * from Studente where Città = Bologna or Città = Torino Attenzione: estrarre gli studenti originari di Bologna e originari di Torino

Espressioni booleane Estrarre gli studenti originari di Roma che frequentano il corso in Informatica o in Logistica: select * from Studente where Città = Roma and (CDip = Inf or CDip = Log ) Risultato: Matr Nome Città CDip 70 Antonio Roma Log

Duplicati In algebra relazionale i risultati delle interrogazioni non contengono elementi duplicati In SQL, le tabelle prodotte dalle interrogazioni possono contenere più righe identiche tra loro I duplicati possono essere rimossi usando la parola chiave distinct Select distinct CDip from Studente CDip Inf Log select CDip from Studente CDip Inf Inf Log

Gestione dei valori nulli I valori nulli rappresentano tre diverse situazioni: un valore non è applicabile un valore è applicabile ma sconosciuto non si sa se il valore è applicabile o meno Per fare una verifica sui valori nulli: Attributo is [ not ] null select * from Studente where CDip = Inf or CDip <> Inf è equivalente a: select * from Studente where CDip is not null

Interrogazione semplice con due tabelle Estrarre il nome degli studenti di Logistica che hanno preso almeno un 30 select Nome from Studente, Esame where Studente.Matr = Esame.Matr and CDip = Log and Voto = 30 NOME Carlo

Interrogazione semplice con tre tabelle Estrarre il nome degli studenti di Matematica che hanno preso almeno un 30 select Nome from Studente, Esame, Corso where Studente.Matr = Esame.Matr and Corso.CodCorso = Esame.CodCorso and Titolo = Matematica' and Voto = 30

Join in SQL SQL ha una sintassi per i join, li rappresenta esplicitamente nella clausola from: select AttrEspr {, AttrEspr} from Tabella { join Tabella on Condizioni } [ where AltreCondizioni ]

Join di due tabelle in SQL select Nome from Studente, Esame where Studente.Matr = Esame.Matr and CDip = Log and Voto = 30 select Nome from Studente join Esame on Studente.Matr = Esame.Matr where CDip = Log and Voto = 30

Interrogazione semplice con variabili relazionali Chi sono i dipendenti di Giorgio? Impiegato Matr Nome DataAss Salario MatrMgr 1 Piero 1-1-95 3 M Giorgio 1-1-97,5 M null 3 Giovanni 1-7-96 M

Variabili in SQL

Chi sono i dipendenti di Giorgio? select X.Nome,X.MatrMgr,Y.Matr,Y.Nome from Impiegato as X, Impiegato as Y where X.MatrMgr = Y.Matr and Y.Nome = Giorgio X.Nome X.MatrMgr Y.Matr Y.Nome Piero Giorgio Giovanni Giorgio

Ordinamento La clausola order by, che compare in coda all interrogazione, ordina le righe del risultato Sintassi: order by AttributoOrdinamento [ asc desc ] {, AttributoOrdinamento [ asc desc ] } Le condizioni di ordinamento vengono valutate in ordine a pari valore del primo attributo, si considera l ordinamento sul secondo, e così via

Query con ordinamento select * from Ordine where Importo > 100.000 order by Data CODORD CODCLI DATA IMPORTO 1 3 1-6-97 50.000.000 4 1 1-7-97 1.000.000 5 1 1-8-97 1.500.000 4 3-8-97 8.000.000 3 3 1-9-97 1.500.000 6 3 3-9-97 5.500.000

order by CodCli CODORD CODCLI DATA IMPORTO 4 1 1-7-97 1.000.000 5 1 1-8-97 1.500.000 1 3 1-6-97 50.000.000 6 3 3-9-97 5.500.000 3 3 1-9-97 1.500.000 4 3-8-97 7.000.000

order by CodCli asc, Data desc CODORD CODCLI DATA IMPORTO 5 1 1-8-97 1.500.000 4 1 1-7-97 1.000.000 6 3 3-9-97 5.500.000 3 3 1-9-97 1.500.000 1 3 1-6-97 50.000.000 4 3-8-97 7.000.000

Funzioni aggregate Le interrogazioni con funzioni aggregate non possono essere rappresentate in algebra relazionale Il risultato di una query con funzioni aggregate dipende dalla valutazione del contenuto di un insieme di righe Cinque operatori aggregati: count cardinalità sum sommatoria max massimo min minimo avg media

Operatore count count restituisce il numero di righe o valori distinti; sintassi: count(< * [ distinct all ] ListaAttributi >) Estrarre il numero di ordini: select count(*) from Ordine Estrarre il numero di valori distinti dell attributo CodCli per tutte le righe di Ordine: select count(distinct CodCli) from Ordine Estrarre il numero di righe di Ordine che posseggono un valore non nullo per l attributo CodCli: select count(all CodCli) from Ordine

sum, max, min, avg Sintassi: < sum max min avg > ([ distinct all ] AttrEspr ) L opzione distinct considera una sola volta ciascun valore utile solo per le funzioni sum e avg L opzione all considera tutti i valori diversi da null

Query con massimo Estrarre l importo massimo degli ordini select max(importo) as MaxImp from Ordine MaxImp 50.000.000

Query con sommatoria Estrarre la somma degli importi degli ordini relativi al cliente numero 1 select sum(importo) as SommaImp from Ordine where CodCliente = 1 SommaImp 13.500.000