Uno dei principali motivi del successo delle basi di dati: è diventato uno standard

Documenti analoghi
SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni

SQL aspetti essenziali

ESERCIZI SQL. Esercizio 1

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

Manuale SQL. Manuale SQL - 1 -

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

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"

Caratteristiche dei linguaggi per Database

ALGEBRA RELAZIONALE. L algebra relazionale

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati

Interrogazioni nidificate

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

Principi di Progettazione del Software a.a Il linguaggio SQL. Prof. Luca Mainetti Università del Salento

SQL (STRUCTURED QUERY LANGUAGE)

Basi di Dati: Corso di laboratorio

Dichiarazione degli schemi in SQL DDL 1

SQL Avanzato. Interrogazioni e il valore NULL. Interrogazioni complesse, trigger, viste e modifiche dello schema. Giorgio Giacinto 2015

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

Interrogazioni$e$il$valore$NULL$

Corso di Basi di Dati

PROGETTAZIONE DI DATABASE Linguaggio SQL

SQL: DDL, VI, Aggiornamenti e Viste

Laboratorio di Basi di Dati Per Bioinformatica

Interrogazioni nidificate

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

Sommario. Introduzione... 13

Il linguaggio SQL: DDL di base

SQL (STRUCTURED QUERY LANGUAGE)

Interrogazioni in SQL

Basi di Dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

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

LABORATORIO di INFORMATICA


Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia:

SQL. Storia un po piu in dettaglio. SQL: "storia" Tre livelli per SQL-2. Standard, dialetti, mercato

Elena Baralis 2007 Politecnico di Torino 1

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Corso di Basi di Dati A.A. 2013/2014

Domande utili alla preparazione dell orale di Informatica all Esame di Stato

Basi di Dati Relazionali

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL: fondamenti. Il linguaggio SQL

<Nome Tabella>.<attributo>

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

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

SQL e algebra relazionale

5 SQL : Definizione e manipolazione dei dati

SQL$ $aspetti$essenziali$

DATABASE PER IL WEB. Programmazione Web 1

Linguaggio SQL. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

DUE GRUPPI DI COMANDI

Corso di Informatica (Basi di Dati)

Il linguaggio SQL: le basi

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Modello Relazionale. Esempio (Relazione) A x B. Introduzione. Relazione: definizione. I fattori del successo. Relazione

Basi di dati SQL. Standardizzazione di SQL. Linguaggi di Interrogazione: SQL. Prof.Angela Bonifati

Linguaggio SQL seconda parte

Laboratorio di Basi di Dati e Web

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Esercitazione: Interrogazioni SQL

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

Esempio di database relazionale con l utilizzo del prodotto MySQL

MODULO 2. Query normali e parametriche Query di:

STUDIO. Esercizi proposti a lezione cap. 3 rev. dic da Ulmann, Widom Introduzione ai database. indirizzo. titolo. nome. recitain. attori.

SQL - Structured Query Language

Laboratorio di Basi di Dati

Il linguaggio SQL: DML di base. Versione elettronica: 04.2.SQL.DMLbase.pdf

Il linguaggio SQL: DML di base

Modello logico dei dati utilizzato nell ambito delle basi di dati, introdotto da Codd nel 1970.

TRADUZIONE DI SCHEMI

Laboratorio di Basi di Dati Esercizio 8.4/9.1

ESERCITAZIONI ACCESS

Basi di Dati: Corso di laboratorio

Basi di Dati e Sistemi Informativi. Structured Query Language

OR true null false true true true true null true null null false true null false NOT

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

LE NOVITÀ Eppur si muove...61 Applicazioni ad alta disponibilità...62 Sicurezza...62

SQL. Structured Query Language 1974: SEQUEL by IBM 1981: SQL by IBM : SQL ISO 9075:1992 SQL:1999 SQL:2003

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

CORSO ACCESS 2000 PARTE VI

SQL Sintassi Dei Comandi

Il linguaggio SQL: le basi. Versione elettronica: SQLa-basi.pdf

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

SQL: Concetti Base -Prima Parte-

SQL. Storia e standard

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici

SQL - Tipi di dato Il linguaggio SQL

Basi di Dati: Corso di laboratorio

Basi di dati attive. Paolo Atzeni Stefano Ceri. Basi di dati attive

DDL DML. Tipi di linguaggi per basi di dati. Si distinguono due categorie:

Access. P a r t e t e r z a

Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a

SQL - Sottointerrogazioni

OBIETTIVI DELL'ESERCITAZIONE

MAX, SUM, AVG, COUNT)

Domini elementari, 2. Basi di dati. Domini elementari, 4. Domini elementari, 3. Domini definiti dagli utenti. Domini elementari, 5

Transcript:

SQL [1] Concetti essenziali di SQL 2 Il linguaggio SQL Uno dei principali motivi del successo delle basi di dati: è diventato uno standard Fornisce un interfaccia dichiarativa di alto livello, permettendo di specificare solo quel deve essere il risultato (e lasciando al DBMS l ottimizzazione e le decisioni effettive su come eseguire l interrogazione) http://en.wikipedia.org/wiki/sql

3 SQL structured query language SQL / linguaggio strutturato di interrogazione In origine era SEQUEL / structured english query language Grande sforzo di ANSI e ISO per standardizzare SQL comprende: Istruzioni per la definizione, l interrogazione e l aggiornamento dei dati (DDL e DML) Funzionalità per definire viste, specificare sicurezza e autorizzazioni di accesso, definire vincoli di integrità e specificare controlli sulle transazioni 4 I termini giusti Relazione! TABELLA Tupla! RIGA Attributo! COLONNA Ogni operazione termina con ; (punto e virgola)

5 Concetti essenziali 1. Tipi di dati e definizione dei dati in SQL 2. Specificazione dei vincoli di base in SQL 3. Interrogazioni fondamentali in SQL 4. Comandi INSERT, UPDATE, DELETE in SQL 6 1. Tipi di dati e definizione dei dati in SQL Schema: raggruppa le tabelle e altri costrutti che appartengono alla stessa applicazione di basi di dati Uno schema: È identificato da un nome di schema Contiene un identificatore di autorizzazione per indicare l utente proprietario Contiene descrittori per ciascun elemento dello schema (tabelle, vincoli, viste, domini e altri costrutti) CREATE SCHEMA AZIENDA AUTHORIZATION JSmith ; Catalogo: raccoglie più schemi Un catalogo contiene sempre uno schema speciale INFORMATION_SCHEMA che fornisce informazioni su tutti gli schemi nel catalogo Ambiente: rappresenta l installazione di un RDBMS

7 CREATE TABLE È usato per specificare una nuova relazione assegnandole un nome e specificandone attributi e vincoli Nome tabella Attributi: nome, tipo di dati, eventuali vincoli (NULL?) Chiavi e vincoli di integrità dell entità Vincoli di integrità referenziale Le tabelle create con CREATE sono dette tabelle di base e sono effettivamente memorizzate su file nel DBMS Le tabelle create con CREATE VIEWS sono tabelle virtuali 8

9 10 Domini e tipi di dati Principali tipi di dati disponibili: Numerici Stringhe di caratteri Stringhe di bit Booleani Date

11 Domini e tipi di dati: numerici Numeri interi di diverse dimensioni INTEGER INT SMALLINT Numeri reali a virgola mobile FLOAT REAL DOUBLE PRECISION Formattazioni particolari, ad esempio DECIMAL(i, j) 12 Domini e tipi di dati: stringhe di caratteri Hanno lunghezza fissa (n numero di caratteri): CHAR(n) Hanno lunghezza variabile (n numero massimo di caratteri): VARCHAR(n) n = 1 è il valore predefinito Il valore deve essere indicato tra apici con distinzione tra maiuscole e minuscole Vige la relazione di ordine lessicografico Esistono tipi di dati per documenti di grandi dimensioni (CLOB)

13 Domini e tipi di dati: stringhe di bit Hanno lunghezza fissa (n numero di bit): BIT(n) Hanno lunghezza variabile (n numero massimo di bit): BIT VARYING(n) n = 1 è il valore predefinito I valori sono posti tra apici Esistono tipi di dati per documenti di grandi dimensioni (BLOB) 14 Domini e tipi di dati: booleani Possono assumere i valori TRUE e FALSE In realtà (vista la presenza di NULL) esiste anche UNKNOWN

15 Domini e tipi di dati: date DATE: ha 10 posizioni, componenti YYYY-MM-DD TIME: ha almeno 8 posizioni, componenti HH:MM:SS TIMESTAMP comprende entrambi INTERVAL specifica un intervallo, cioè un valore relativo che può essere usato per aumentare o diminuire il valore id una data 16

17 2. Specificazione dei vincoli di base in SQL Vincoli e valori predefiniti per gli attributi (1) Per ogni attributo si può specificare se non è accettato il valore NULL utilizzando NOT NULL Per gli attributi che fanno parte della chiave primaria il vincolo NOT NULL è implicito 18 2. Specificazione dei vincoli di base in SQL Vincoli e valori predefiniti per gli attributi (2) Si può specificare un valore di default per un attributo usando DEFAULT<valore> Dove non è specificato il valore di default è NULL

19 2. Specificazione dei vincoli di base in SQL Vincoli e valori predefiniti per gli attributi (3) Si possono limitare i valori per ogni attributo usando la clausola CHECK dopo la definizione dell attributo Esempio: NUMERO_D INT NOT NULL CHECK (NUMERO_D > 0 AND NUMERO_D < 21); Il numero di dipartimento è un intero compreso tra 0 e 21 (esclusi) e non può essere nullo. 20

21 2. Specificazione dei vincoli di base in SQL Vincoli di chiave (e di integrità referenziale) La clausola PRIMARY KEY specifica uno o più attributi che costituiscono la chiave primaria di una relazione La clausola UNIQUE specifica chiavi secondarie 22 2. Specificazione dei vincoli di base in SQL Vincoli (di chiave e) di integrità referenziale L integrità referenziale è specificata tramite la clausola FOREIGN KEY In caso di violazione il DBMS di default rifiuta l operazione E possibile impostare un operazione alternativa da effettuare in caso di violazione del vincolo: SET NULL CASCADE SET DEFAULT qualificata con ON DELETE oppure ON UPDATE

23 24 3. Interrogazioni fondamentali in SQL SELECT è l istruzione fondamentale per recuperare le informazioni di una base di dati. ATTENZIONE SQL consente a una tabella di avere due o più tuple identiche in tutti i valori dei loro attributi Una tabella SQL non è un insieme di tuple piuttosto è un multinsieme (o bag di tuple)

25 3. Interrogazioni fondamentali in SQL Le interrogazioni SQL possono essere molto complesse La forma fondamentale dell istruzione SELECT è formata da tre clausole: SELECT <elenco attributi> FROM <elenco tabelle> WHERE <condizione> <elenco attributi> è un elenco dei nomi degli attributi i cui valori devono essere reperiti dall interrogazione <elenco tabelle> è un elenco dei nomi delle relazioni necessarie per eseguire l interrogazione <condizione> è un espressione condizionale (booleana) che identifica le tuple che devono essere reperite dall interrogazione 26 Esempi di interrogazioni

27 Esempi di interrogazioni 28 Esempi di interrogazioni

29 Interrogazione 0 Si trovino la data di nascita e l indirizzo del dipendente (o dei dipendenti) il cui nome è John B. Smith. SELECT FROM WHERE DATA_N, INDIRIZZO (attributi di proiezione) IMPIEGATO NOME_BATT = John AND (condizioni di sel.) INIZ_INT = B AND COGNOME = Smith ; 30 Interrogazione 0 - risultati

31 Interrogazione 1 Si trovino il nome e l indirizzo di tutti i dipendenti che lavorano per il dipartimento Ricerca. SELECT NOME_BATT, COGNOME, INDIRIZZO FROM IMPIEGATO, DIPARTIMENTO WHERE NOME_D = Ricerca AND NUMERO_D = N_D; La seconda condizione è detta condizione di JOIN perché combina due tuple: una da DIPARTIMENTO e una da IMPIEGATO ogniqualvolta il valore di NUMERO_D in DIPARTIMENTO è uguale a N_D in IMPIEGATO. 32 Interrogazione 1 - risultati

33 Interrogazione 2 Per ogni progetto con sede a Stafford si elenchi il numero del progetto, il numero del dipartimento che lo controlla, nonché il cognome, l indirizzo e la data di nascita del direttore del dipartimento. SELECT NUMERO_P, NUM_D, COGNOME, INDIRIZZO, DATA_N FROM PROGETTO, DIPARTIMENTO, IMPIEGATO WHERE NUM_D = NUMERO_D AND SSN_DIR = SSN AND SEDE_P = Stafford ; Restituisce la combinazione di un progetto, un dipartimento e un impiegato che soddisfano le condizioni di join. 34 Interrogazione 2 - risultati

35 Interrogazione 3 Per ciascun dipendente si trovino il suo nome e cognome e il nome e il cognome del suo immediato supervisore. SELECT I.NOME_BATT, I.COGNOME, S.NOME_BATT, S.COGNOME FROM IMPIEGATO AS I, IMPIEGATO AS S WHERE I.SUPER_SSN = S.SSN; Se un interrogazione si riferisce a due o più attributi con il medesimo nome si deve qualificare il nome dell attributo con il nome della relazione per evitare ambiguità. Ciò viene fatto ponendo come prefisso al nome dell attributo, il nome della relazione. Si possono dichiarare nomi di relazione alternativi (I ed S) chiamati alias. È come se ci fossero due copie diverse della relazione IMPIEGATO. 36 Interrogazione 3 - risultati

37 Interrogazione 4 Si selezionino tutti gli impiegati nella base di dati. SELECT SSN FROM IMPIEGATO; L assenza della clausola WHERE indica che non viene usata alcuna condizione per la selezione delle tuple, quindi tutte le tuple della tabella (indicata in FROM) sono considerate valide. 38 Interrogazione 4 - risultati

39 Interrogazione 5 Si selezionino tutte le combinazioni di impiegato (SSN) e dipartimento (NOME_D) nella base di dati. SELECT SSN, NOME_D FROM IMPIEGATO, DIPARTIMENTO; Se nella clausola FROM è specificata più di una tabella (e non vi è clausola WHERE) viene eseguito il prodotto cartesiano ottenendo tutte le possibili combinazioni delle tuple delle tabelle. Nel nostro esempio: non importa che quell impiegato lavori o meno in quel dipartimento! 40 Interrogazione 5- risultati

41 Interrogazione 6 Trova tutti i valori degli attributi delle tuple di IMPIEGATO relative a dipendenti che lavorano nel DIPARTIMENTO numero 5. SELECT * FROM IMPIEGATO WHERE N_D = 5; 42 Interrogazione 6 - risultati

43 Interrogazione 6bis Cosa succede con questa? SELECT * FROM IMPIEGATO, DIPARTIMENTO WHERE NOME_D = Ricerca AND N_D = NUMERO_D; 44 Tabelle come insiemi In SQL le tabelle sono multinsiemi: tuple con identici valori degli attributi possono comparire più di una volta in una tabella e nel risultato di un interrogazione. Perché? Eliminare i duplicati è oneroso L utente può voler vedere le tuple duplicate nel risultato di un interrogazione Quando una funzione di aggregazione è applicata alle tuple, nella maggior parte dei casi non si vogliono eliminare duplicati ps: in generale non è richiesto che una tabella SQL abbia una chiave

45 Parola chiave DISTINCT Quando si desidera eliminare le tuple duplicate dal risultato di un interrogazione SQL si utilizza la parola chiave DISTINCT nella clausola SELECT SELECT DISTINCT elimina i duplicati SELECT ALL (che è il default) non elimina i duplicati 46 Interrogazione 7 Si trovi il valore di stipendio di ogni dipendente e poi tutti i valori distinti di stipendio. SELECT ALL STIPENDIO FROM IMPIEGATO; SELECT DISTINCT STIPENDIO FROM IMPIEGATO;

47 Interrogazione 7 - risultati 48 Operazioni su insiemi UNION EXCEPT INTERSECT Sono operazioni prese in prestito dalla teoria degli insiemi. Ma anche dai multinsiemi: UNION ALL EXCEPT ALL INTERSECT ALL

49 Interrogazione 8 Si crei un elenco di tutti i numeri di progetto dei progetti che coinvolgono un dipendente il cui cognome è Wong, come partecipante oppure come dirigente del dipartimento che controlla il progetto. (SELECT DISTINCT NUMERO_P FROM PROGETTO, DIPARTIMENTO, IMPIEGATO WHERE NUM_D=NUMERO_D AND SSN_DIR=SSN AND COGNOME= Wong') UNION (SELECT DISTINCT NUMERO_P FROM PROGETTO, LAVORA_SU, IMPIEGATO WHERE NUMERO_P=N_P AND SSN_I=SSN AND COGNOME= Wong') 50 Esempi con multinsieme I risultati delle operazioni multinsieme SQL. (a) Due tabelle, R(A) e S(A). (b) R(A) UNION ALL S(A). (c) R(A) EXCEPT ALL S(A). (d) R(A) INTERSECT ALL S(A).

51 Confronti di sottostringhe Si può fare il confronto solo su parti di una stringa di caratteri usando l operatore LIKE Può essere usato per il confronto di stringhe rispetto a un modello. Le stringhe parziali sono specificate usando due caratteri riservati: % e _ % sostituisce un numero arbitrario di zero o più caratteri _ sostituisce un singolo carattere 52 Interrogazione 9 Si trovino tutti i dipendenti il cui indirizzo è a Houston in Texas. SELECT NOME_BATT, COGNOME FROM IMPIEGATO WHERE INDIRIZZO LIKE %Houston, TX%

53 Interrogazione 10 Si trovino tutti i dipendenti che sono nati negli anni Cinquanta. SELECT NOME_BATT, COGNOME FROM IMPIEGATO WHERE DATA_N LIKE 5 _ 54 Operatori aritmetici Gli operatori aritmetici standard (+ - * / ) possono essere applicati ai valori numerici o agli attributi con domini numerici. Per le stringhe si può utilizzare l operatore di concatenazione Per gli intervalli si può usare BETWEEN

55 Interrogazione 11 Si mostrino gli stipendi risultanti, attribuendo a ogni dipendente che lavora sul progetto ProdottoX un aumento del 10%. SELECT I.NOME_BATT, I.COGNOME, 1.1*I.STIPENDIO AS S_AUMENT FROM IMPIEGATO AS I, LAVORA_SU AS L, PROGETTO AS P WHERE I.SSN = L.SSN_I AND L.N_P = P. NUMERO_P AND P.NOME_P = ProdottoX ; 56 Interrogazione 12 Si trovino tutti i dipendenti del dipartimento 5 il cui stipendio è compreso tra 30000 e 40000 dollari. SELECT * FROM IMPIEGATO WHERE (STIPENDIO BETWEEN 30000 AND 40000) AND N_D=5; Oppure ((STIPENDIO >= 30000) AND (STIPENDIO <= 40000)) AND N_D=5;

57 Ordinamento dei risultati SQL consente di ordinare le tuple del risultato di un interrogazione rispetto ai valori di uno o più attributi che compaiono nell interrogazione Clausola ORDER BY 58 Interrogazione 13 Si determini un elenco di dipendenti e i progetti su cui lavorano ordinati per dipartimento e all interno di ciascun dipartimento li si ordini alfabeticamente per cognome e nome. SELECT D.NOME_D, I.COGNOME, I.NOME_BATT, P.NOME_P FROM DIPARTIMENTO D, IMPIEGATO I, LAVORA_SU L, PROGETTO P WHERE D.NUMERO_D=I.N_D AND I.SSN=L.SSN_I AND L.N_P=P.NUMERO_P ORDER BY D.NOME_D, I.COGNOME, I.NOME_BATT Per specificare l ordine crescente ASC (ORDER BY D.NOME_D ASC) Per specificare l ordine decrescente DESC

59 Riepilogo dell interrogazione SELECT SELECT <elenco attributi> FROM <elenco tabelle> [ WHERE <condizione> ] [ ORDER BY <elenco attributi> ] 60 INSERT Per inserire righe in una tabella. INSERT INTO IMPIEGATO VALUES ( Richard, K, Marini, 653298653, 1962-12-30, 98 Oak Forest, Katy, TX, M, 37000, 987654321, 4); Si possono omettere i valori per gli attributi che: consentono NULL hanno un valore di DEFAULT INSERT INTO IMPIEGATO (NOME_BATT, COGNOME, N_D, SSN) VALUES ( Richard, Marini, 4, 653298653 );

61 DELETE Per eliminare righe da una tabella. DELETE FROM IMPIEGATO WHERE COGNOME = Brown ; La cancellazione può propagarsi ad altre righe di altre tabelle nel caso ci siano azioni specificate da vincoli di integrità referenziale. DELETE FROM IMPIEGATO; Svuota la tabella. 62 UPDATE Per modificate righe da una tabella. UPDATE PROGETTO SET SEDE_P = Bellaire, N_D = 5 WHERE NUMERO_P = 10; L aggiornamento del valore di una chiave primaria può propagarsi ad altre righe di altre tabelle nel caso ci siano stati azioni referenziali specificate da vincoli di integrità referenziale. UPDATE IMPIEGATO SET STIPENDIO = STIPENDIO * 1.1 WHERE N_D = 5; Si può utilizzare anche NULL o DEFAULT come valore.