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

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

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

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

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

SQL Sintassi Dei Comandi

Definizione di domini

Gestione delle tabelle

Basi di Dati e Sistemi Informativi. Structured Query Language

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle

Laboratorio di Basi di Dati e Web

Corso di Informatica (Basi di Dati)

Laboratorio di Basi di Dati

Linguaggio SQL Descriviamo la notazione usata nel seguito:

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

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

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

SQL: Concetti Base -Prima Parte-

SQL Laboratorio di Basi di Dati a.a. 2002/2003

Basi di Dati. Programmazione e gestione di sistemi telematici

Basi di Dati Relazionali

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

Linguaggio SQL. Structured Query Language

Basi di Dati prof. Letizia Tanca

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL

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

SQL - Tipi di dato Il linguaggio SQL

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

SQL. Definizione dei da6 in SQL. SQL: "storia" CREATE TABLE: esempio. CREATE TABLE: esempio

Corso sul linguaggio SQL

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

Basi di Dati: Corso di laboratorio

SQL. Storia e standard

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

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

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

Il linguaggio SQL: DDL di base

Corso sul linguaggio SQL

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

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

SQL. Alcune note sulla definizione dei dati

SQL (STRUCTURED QUERY LANGUAGE)

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

Viste come strumenti di programmazione

SQL prima 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 2011/12

SQL (STRUCTURED QUERY LANGUAGE)

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


Equivalenza di espressioni. Equivalenze. Equivalenze. Due espressioni sono equivalenti se: Atomizzazione delle selezioni σ F1 F2 (E) σ F1 (σ F2 (E))

Corso Sistemi Informativi Avanzati. Programma 30 set Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

Documentazione SQL. Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema}

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

Linguaggi per basi di dati

Lezione V. Aula Multimediale - sabato 29/03/2008

Vincoli di Integrità Approccio dichiarativo alla loro implementazione

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL

I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

DBMS (Data Base Management System)

Vincoli di integrità

Giovanna Rosone 04/03/ /03/2010 SQL, Istruzioni per la modifica dello schema

MAX, SUM, AVG, COUNT)

Structured Query Language. Informatica Generale - SQL Versione 1.0, aa p.1/172

Corso di Basi di Dati

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro) ESERCIZIO 3

Domini Numerici Esatti (1) I domini numerici esatti permettono di definire attributi che contenegono valori esatti interi o con parte frazionaria.

SQL. Linguaggio di interrogazione per basi di dati relazionali. Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL:

Basi di Dati: Corso di laboratorio

Stringhe di caratteri

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

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

SQL: "storia" 31/05/2006 2

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

Il linguaggio SQL: le basi

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti:

SQL-DDL. Basi di Dati. Prof. Alfredo Cuzzocrea Università degli Studi di Trieste

Viste (relazioni derivate)

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

Il Domino Character Il domino CHARACTER permette di definire attributi che contengono un singolo carattere o stringhe di caratteri di lunghezza

Vincoli di Integrità

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. Linguaggio di interrogazione per basi di dati relazionali

Volumi di riferimento

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

Il linguaggio SQL: query innestate

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

Basi di dati. SQL: concetti base

Corso di Laboratorio di Basi di Dati

DUE GRUPPI DI COMANDI

Descrizione del linguaggio SQL Definizione del database. Giovanna Rosone 02-03/03/2010

Structured Query Language parte 1

Basi di dati Il linguaggio SQL

Basi di dati Il linguaggio SQL

Operazioni sui database

Capitolo 4. Soluzione: Soluzione: Create domain STRING as character varying (256) default sconosciuto not null

Informatica per le discipline umanistiche 2 lezione 10

Il Modello Relazionale

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 9 SETTEMBRE 2015 Tempo: 2h30m

Si formulino le seguenti interrogazioni tramite il linguaggio SQL:

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

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

Domini elementari in SQL

Transcript:

Tipi di linguaggi per basi di dati Si distinguono due categorie: DDL DML Linguaggi di definizione dei dati o data definition languages: utilizzati per definire gli schemi logici, esterni e fisici e le autorizzazioni degli utenti Linguaggi di manipolazione dei dati o data manipulation languages: utilizzati per l interrogazione e l aggiornamento delle istanze di basi di dati L algebra relazionale è un DML Structured Query Language 1

Structured Query Language pron: esse-qu-elle, es-que-el o sequel Letteralmente: Linguaggio Strutturato di Interrogazione E sia un DDL che un DML Ne esistono varie versioni Fu proposto (come SEQUEL) dall IBM Research nel 1974 La prima implementazione risale al 1981 (IBM SQL/DS) Dal 1983 circa è uno standard di fatto E standard ANSI 1986, 1989, 1992 (quest ultimo denominato SQL-2) Structured Query Language 2

Convenzioni di specifica della sintassi courier esattamente i caratteri specificati dalla stringa Es.: where indica la sequenza w, h, e, r, e neretto un valore non specificato, ma il cui tipo (stringa, intero, booleano, ecc) è evidente dal contesto Es.: NomeRelazione può rappresentare la stringa Impiegati Structured Query Language 3

Convenzioni di specifica della sintassi (2) [... ] tutto ciò che è tra parentesi quadre è opzionale Es.: [ abc ] può indicare tanto abc quanto (la stringa vuota) {... } tutto ciò che è tra parentesi graffe può essere ripetuto zero o più volte Es.: [ abc ] può indicare, abc, abc abc,... <...... > tutto ciò che è tra parentesi angolate e separato da barre verticali è alternativo Es.: < a b c > può indicare a, b o c Structured Query Language 4

create table Scopo Definisce uno schema di relazione e ne crea un istanza vuota Sintassi create table NomeTabella ( NomeAttributo Dominio [ Default ] [ Vincoli ] {, NomeAttributo Dominio [ Default ] [ Vincoli ] } [, AltriVincoli ] ) Esempio create table Dipartimento (( Nome char (20) primary key, Indirizzo char (50), Citta char (20) )) Structured Query Language 5

Esempio di create table create table Impiegato (( Matricola char (6) (6) primary key, Nome char (20) not null, Cognome char (20) not null, Dipart char (15), Stipendio numeric (9) (9) default 0, 0, Citta char (15), foreign key (Dipart) refereces Dipartimento (NomeDip) on on delete set null on on update cascade, unique (Cognome, Nome) )) Structured Query Language 6

Altro esempio di create table Incidenti codice prov1 num1 prov2 num2 00001 RM 034524 PG 982453 00002 BO 823507 MI 827283 create table Incidenti (( codice numeric (5) (5) primary key, prov1 char (2), num1 numeric (6), prov2 char (2), num2 numeric (6) (6) )) Structured Query Language 7

Tipi di domini Esistono due tipi di domini 1) domini elementari: sono quelli predefiniti e presenti in tutte le implementazioni di SQL 2) domini definiti dall utente: solo domini semplici (derivati cioè da un altro dominio già esistente) vengono dichiarati prima del loro utilizzo possono essere riutilizzati in più punti Structured Query Language 8

Domino character Scopo Definisce stringhe e singoli caratteri Sintassi character [ varying ] [ ( Lunghezza ) ] [ character set NomeFamigliaCaratteri ] char = character varchar = character varying Es. Es. character (20) stringa di 20 caratteri varchar (1000) character set Greek stringa di caratteri dell alfabeto greco a lunghezza variabile di lunghezza massima 1000 Structured Query Language 9

Dominio bit (SQL-2) Scopo Definisce sequenze di valori binari che vengono generalmente utilizzati come flag Es. Es. Sintassi bit [ varying ] [ ( Lunghezza ) ] bit bit (5) (5) sequenza di 5 valori binari bit bit varying (100) sequenza di valori binari di lunghezza variabile e lunghezza massima 100 Structured Query Language 10

Domini numerici esatti Scopo Rappresentano valori interi, decimali, o in virgola fissa. numeric [ ( NumCifre [, NumDecimali ] ) ] Sintassi decimal [ ( NumCifre [, NumDecimali ] ) ] integer smallint Es. numeric (6,3) rappresenta valori compresi tra -999,999 e +999,999 con decimal vengono definiti requisiti minimi, con numeric i valori di precisione esatti Structured Query Language 11

Domini numerici approssimati Scopo Rappresentano valori approssimati Sintassi real double precision float [ ( CifreMantissa ) ] 0.1756 10 15 mantissa esponente Per real e double precision il numero di cifre della mantissa e dell esponente dipendono dall implementazione Structured Query Language 12

Data e ora (SQL-2) Es. Sin. Es. Sin. Scopo Definiscono rispettivamente una data e un ora date date definisce una data con i campi anno, mese e giorno (Es.: 2000-10-18 ) time [ ( NumDecimali ) ] [ with time zone ] time (2) (2) with time zone definisce una stringa con ore, minuti, secondi, e fuso orario (Es.: 21:03:04,98+1:00 ) Structured Query Language 13

timestamp (SQL-2) Scopo Definisce un etichettatura temporale (timestamp) Sintassi timestamp [ ( NumDecimali ) ] [ with time zone ] Es. timestamp (1) (1) definisce un etichettatura temporale (Es.: 2000-10-18 15:30:45,3 ) Es. timestamp with time zone definisce un etichettatura temporale. Un valore può essere il seguente: 2000-10-18 15:30:45+5:30 Structured Query Language 14

interval (SQL-2) Es. Es. Sintassi Scopo Definisce un intervallo temporale interval UnitàDiTempo [ to UnitàDiTempo ] interval year to to month definisce un intervallo in anni e mesi (Es.: 2-3 = due anni e tre mesi) interval day to to second definisce un intervallo in giorni, ore, minuti e secondi (Es.: 3 20:43:21 = tre giorni, 20 ore, 43 minuti e 21 secondi) Non è possibile abbracciare nello stesso intervallo i mesi e i giorni Structured Query Language 15

create domain Scopo Definisce un domino (semplice) utilizzabile nelle definizioni delle ralazioni che seguiranno Sintassi create domain NomeDominio as TipoDiDato [ ValoreDiDefault ] [ Vincoli ] Esempio create domain Voto as as smallint default null check (( value >= >= 18 18 and value <= <= 30 30 )) L istruzione create domain aggiunge un alias, un valore di default ed un insieme di vincoli ad un dominio esistente Structured Query Language 16

Valori di default Scopo Definisce un valore di default per un dominio Sintassi default < Valore user null > Esempio Esempio Esempio create table Persona (( Figli smallint default 0, 0,...... create table VoceElenco (( InseritaDa char (20) default user,...... create domain Voto as as smallint default null...... Structured Query Language 17

Vincoli Sintassi create table NomeTabella ( NomeAttributo Dominio [ Default ] [ Vincoli ] {, NomeAttributo Dominio [ Default ] [ Vincoli ] } [, AltriVincoli ] ) i Vincoli compaiono in più punti nella sintassi di create table create table Dipartimento (( Nome char (20) primary key, Indirizzo char (50), primary key (Nome) )) è equivalente specificare un vincolo dopo l attributo cui si riferisce o in coda alla definizione Structured Query Language 18

Attenzione! Esempio uno create table Persona (( Matricola integer primary key, Nome char (20), Cognome char (20), Indirizzo char (50), unique (Cognome,Nome) )) è diverso da... Esempio due create table Persona (( Matricola integer primary key, Nome char (20), Cognome char (20), Indirizzo char (50), unique (Cognome), unique (Nome) )) Quando sono interessati più attributi è d obbligo specificarli assieme (e dunque necessariamente in coda alla definizione) Structured Query Language 19

Vincoli intrarelazionali primary key elegge l attributo specificato (o gli attributi specificati) come chiave primaria per la relazione not null impone che l attributo abbia sempre un valore definito unique impone che non esistano due tuple della relazione con lo stesso valore sull attributo (o sugli attributi). Gli attributi che sono unique sono anche superchiavi per la relazione primary key implica il not null e l unique sugli attributi interessati Structured Query Language 20

Vincoli interrelazionali Vincoli di integrità referenziali: references dopo l attributo Esempio create table Impiegato (( CF char(16) references Persona(CF),...... foreign key... references per insiemi di attributi (in coda alla create table) Esempio...... foreign key (Nome,Cognome) references Anagrafe(Nome,Cognome) )) SQL richiede che gli attributi della tabella riferita siano dichiarati unique Structured Query Language 21

Violazione dei vincoli interrelazionali tabella interna vincolo di integrità referenziale tabela esterna Il vincolo può essere violato: inserendo o modificando una tupla della tabella interna cancellando o modificando una tupla della tabella esterna Nel primo caso si assume che sia l applicazione o l utente a verificare la non violazione del vincolo. Nel secondo caso SQL offre costrutti opportuni Structured Query Language 22

Strategie di reazione cascade: la cancellazione o la modifica nella tupla della tabella esterna si riflette in una analoga cancellazione o modifica nelle tuple corrispondenti della tabella interna set null: le corrispondenti tuple della tabella interna assumono il valore null sugli attributi interessati set default: le corrispondenti tuple della tabella interna assumono il valore di default sugli attributi interessati no action: non viene presa nessuna particolare precauzione Structured Query Language 23

Sintassi La strategia di reazione alla violazione viene specificata immediatamente dopo il vincolo con la sintassi seguente Sintassi on < delete update > < cascade set null set default no action > Esempio create table Impiegato (( Nome char(20) not null, Cognome char(20) not null, Dipart char(15), Stipendio numeric(9) default 0, 0, primary key (Cognome, Nome), foreign key (Dipart) references Dipartimento(Nome) on on delete set null on on update cascade )) Structured Query Language 24

create schema Scopo Definisce uno schema in SQL Sintassi create schema [ NomeSchema ] [ [ autorization ] UtenteProprietario ] { Definizioni } Esempio create schema NuovoSchema create table Impiegato ((...... )) create table Dipartimento ((...... ))...... Structured Query Language 25

Esercizio 1 Si definisca in SQL la seguente base di dati Partenze(Numero, Ora, Destinazione,Categoria) Scali(Treno, Stazione, Ora) Tra l attributo Treno di Scali e la relazione Partenze c è un vincolo di integrità referenziale Non si ammette nessun valore nullo Non ci sono due treni con lo stesso orario, stessa destinazione e stessa categoria Structured Query Language 26

Esercizio 2 Si definisca in SQL la seguente base di dati Pazienti(Codice, Cognome, Nome) Ricoveri(Paziente, Inizio, Fine, Reparto) Medici(Matr., Cognome, Nome, Reparto) Reparti(Sigla, Nome, Primario) Vincoli di integrità referenziale sono: tra l attributo Paziente di Ricoveri e la relazione Pazienti tra Reparto di Ricoveri e Reparti tra Primario di Reparti e Medici tra Reparto di Medici e Reparti Valori nulli sono ammessi per gli attributi: Cognome e Nome di Pazienti Fine di Ricoveri Cognome e Nome di Medici Nome di Reparti Structured Query Language 27

Interrogazioni: select Sintassi select ListaAttributi from ListaTabelle [ where Condizione ] le tre parti vengono chiamate: target list clausola from clausola where Sintassi dettagliata select AttrExpr [ as Alias ] { AttrExpr [ as Alias ] } from Tabella [ as Alias ] { Tabella [ as Alias ] } [ where Condizione ] Se la calusola where è assente vengono selezionate tutte le righe delle tabelle Structured Query Language 28

Relazione Impiegato Impiegato Nome Cognome Dipartimento Ufficio Stipendio Mario Rossi Amministrazione 10 45 Carlo Bianchi Produzione 20 36 Giuseppe Verdi Amministrazione 20 40 Franco Neri Distribuzione 16 45 Carlo Rossi Direzione 14 80 Lorenzo Lanzi Direzione 7 73 Paola Borroni Amministrazione 75 40 Marco Franchi Produzione 20 46 Structured Query Language 29

Esempio #1 Domanda Individuare il il salario di di tutti gli gli impiegati di di cognome Rossi Algebra SQL ρ Salario Stipendio Salario Stipendio (( π Stipendio Stipendio (( σ Cognome= Rossi Cognome= Rossi (Impiegato))) select Stipendio as as Salario from Impiegato where Cognome = Rossi Risultato Salario 45 80 Structured Query Language 30

Esempio #2 Domanda Recuperare tutte le le informazioni degli impiegati di di nome Rossi Algebra SQL σ Cognome= Rossi (Impiegato) Cognome= Rossi select * from Impiegato where Cognome = Rossi Il carattere speciale * (asterisco) rappresenta tutti gli attributi delle tabelle elencate nella clausola from Risultato Nome Cognome Dip. Ufficio Stip. Mario Rossi Amm. 10 45 Carlo Rossi Dir. 14 80 Structured Query Language 31

Esempio #3 Domanda Trovare lo lo stipendio mensile di di Bianchi SQL select Stipendio/12 as as Mensile from Impiegato where Cognome = Bianchi Nella target list possono comparire generiche espressioni sui valori degli attributi Risultato Mensile 3,00 Structured Query Language 32

Relazione Dipartimento Dipartimento Nome Indirizzo Citta Amministrazione Via Tito Livio, 27 Milano Produzione P.le Lavater, 3 Torino Distribuzione Via Segre, 9 Roma Direzione Via Tito Livio, 27 Milano Ricerca Via Morone, 6 Milano Structured Query Language 33

Esempio #4 Domanda Trovare i i nomi e cognomi degli impiegati e le le città in in cui lavorano Algebra π Nome,Cognome,Citta (( Impiegato (ρ (ρ N Nome N Nome (Dipartimento))) Dipartimento Dipartimento = N SQL select Impiegato.Nome, Impiegato.Cognome, Dipartimento.Citta from Impiegato, Dipartimento where Impiegato.Dipartimento = Dipartimento.Nome Structured Query Language 34

Risultato esempio #4 Impiegato.Nome Impiegato.Cognome Dipartimento.Citta Mario Rossi Milano Carlo Bianchi Milano Giuseppe Verdi Milano Franco Neri Roma Carlo Rossi Milano Lorenzo Lanzi Milano Paola Borroni Milano Marco Franchi Milano Structured Query Language 35

Esempio #5 Domanda SQL Trovare i i nomi e cognomi degli impiegati e le le città in in cui lavorano select I.Nome, Cognome, Citta from Impiegato as as I, I, Dipartimento as as D where I.Dipartimento = D.Nome Risultato I.Nome I.Cognome D.Citta Mario Rossi Milano Carlo Bianchi Milano Giuseppe Verdi Milano Franco Neri Roma Carlo Rossi Milano Lorenzo Lanzi Milano Paola Borroni Milano Marco Franchi Milano Structured Query Language 36

Esempio #6 Domanda Algebra SQL Trovare i i nomi e cognomi degli impiegati che lavorano nell ufficio 20 20 dell Amministrazione π Nome,Cognome Nome,Cognome (( σ Ufficio=20 Ufficio=20 Dipartimento Dipartimento = Amministrazione Amministrazione (Impiegato)) select Nome, Cognome from Impiegato where Ufficio = 20 20 and Dipartimento = Amministrazione La clausola where può contenere espressioni booleane con confronti Risultato Nome Cognome Giuseppe Verdi Structured Query Language 37

Esempio #7 Domanda Algebra SQL Trovare i i nomi e cognomi degli impiegati dell Amminstrazione e della Distribuzione π Nome,Cognome Nome,Cognome (( σ Dipartimento Dipartimento = Amministrazione Amministrazione Dipartimento Dipartimento = Distribuzione Distribuzione (Impiegato)) select Nome, Cognome from Impiegato where Dipartimento = Amministrazione or or Dipartimento= Distribuzione Risultato Nome Cognome Mario Rossi Giuseppe Verdi Franco Neri Paola Borroni Structured Query Language 38

Esempio #8 Domanda Algebra SQL Trovare i i nomi degli impiegati di di cognome Rossi che lavorano nell Amminstrazione e nella Distribuzione π Nome Nome (( σ (Dipartimento (Dipartimento = Amministrazione Amministrazione Dipartimento Dipartimento = Distribuzione ) Distribuzione ) Cognome= Rossi Cognome= Rossi (Impiegato)) select Nome from Impiegato where Cognome = Rossi and (Dipartimento = Amministrazione or or Dipartimento= Distribuzione ) Risultato Nome Mario Structured Query Language 39

Operatore like Nella clausola where, oltre ai normali operatori di confronto (=, <>, <, >, <=, >=) si può usare anche l operatore like, con i due caratteri speciali: _ rappresenta un carattere qualsiasi % rappresenta una stringa di caratteri arbitrari (anche la stringa vuota) Es. Nome like ab%ba_ è verificato sia dalla stringa abcdedcbac che dalla stringa abbaf Structured Query Language 40

Esempio #9 Domanda SQL Trovare gli gli impiegati che hanno il il cognome con una o o in in seconda posizione e terminano per i i select * from Impiegato where Cognome like _o%i Domanda SQL Trovare gli gli impiegati il il cui nome contiene due a a oppure due e e select * from Impiegato where (Nome like %a%a% ) or or (Nome like %e%e% ) Structured Query Language 41

Risultati esempio #9 Nome Cognome Dipartimento Ufficio Stipendio Mario Rossi Amministrazione 10 45 Carlo Rossi Direzione 14 80 Paola Borroni Amministrazione 75 40 Nome Cognome Dipartimento Ufficio Stipendio Giuseppe Verdi Amministrazione 20 40 Paola Borroni Amministrazione 75 40 Structured Query Language 42

Interpretazione algebrica SQL select T 1.Attributo 1,,... T h.attributo h from T 1,,...,..., T h where Condizione Una interrogazione SQL può essere tradotta in una espressione dell algrebra relazionale come segue Algebra π T1 T1.Attributo.Attributo 1,,...,..., T h.attributo (.Attributo h ( σ Condizione ( Condizione ( T 1 T 2...... T h )) )) dove simboleggia un prodotto cartesiano (eventuali rinominazioni che si rendessero necessarie sono state omesse) Structured Query Language 43

Gestione dei duplicati Devono essere eliminati esplicitamente SQL 1 SQL 2 select Cognome from Impiegato select distinct Cognome from Impiegato Risultato 1 Cognome Rossi Bianchi Verdi Neri Rossi Lanzi Borroni Franchi Risultato 2 Cognome Rossi Bianchi Verdi Neri Lanzi Borroni Franchi Structured Query Language 44

Esempio #10 Con riferimento allo schema: Persone(Nome, Età, Reddito) Paternità(Padre, Figlio) Maternità(Madre, Figlio) Domanda Trovare i i padri di di persone che guadagnano più di di 20 20 milioni Algebra π Padre Padre (Paternità (σ (σ Reddito>20 Reddito>20 (Persone))) Figlio=Nome Figlio=Nome SQL select distinct Padre from Persone Paternità where Figlio = Nome and Reddito > 20 20 Structured Query Language 45

Esempio #11 Domanda Trovare padre e madre di di ogni persona Algebra π Figlio,Padre,Madre Figlio,Padre,Madre (Paternità (ρ (ρ Figlio Nome Figlio Nome (Maternità))) Figlio=Nome Figlio=Nome SQL select Paternita.Figlio, Padre, Madre from Maternita Paternità where Paternita.Figlio = Maternita.Figlio Structured Query Language 46

Esempio #12 Domanda Algebra SQL Trovare le le persone che guadagnano più dei rispettivi padri, mostrandone nomi, redditi, e nomi dei padri π Nome,Reddito,Padre (σ Nome,Reddito,Padre (σ Reddito>RP ( Reddito>RP ( Persone Paternità Nome=Figlio Nome=Figlio P=NP P=NP ρ NP,EP,RP Nome,Eta,Reddito (Persone))) select f.nome, f.reddito, p.reddito from Persone p, p, Paternita, Persone ff where p.nome = Padre and Figlio = f.nome and f.reddito > p.reddito Structured Query Language 47