Esercitazione 4 SQL: cataloghi e viste

Documenti analoghi
Esercitazione 5 DB2 Cataloghi e Indici

Manuale SQL. Manuale SQL - 1 -

Laboratorio di Basi di Dati

SQL - Structured Query Language

Soluzione esercitazione 01

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

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

Interrogazioni in SQL

Il linguaggio SQL: autorizzazioni

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

Esercitazione 1 SQL: DDL e DML di base

Basi di Dati: Corso di laboratorio

Laboratorio di Basi di Dati Esercizio 8.4/9.1

Esercitazione 3 SQL 2

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

SQL: DDL, VI, Aggiornamenti e Viste

Caratteristiche dei linguaggi per Database

Laboratorio di Basi di Dati

Definizione di domini

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

Structured Query Language

2011 Politecnico di Torino 1

Il sistema IBM DB2. Sistemi Informativi T. Versione elettronica: L01.1.IntroduzioneDB2.pdf

Esercitazione 4: Trigger in DB2

Schema Del DB Operazionale TELEFONATE

Il sistema IBM DB2. Sistemi Informativi T. Versione elettronica: L01.1.IntroduzioneDB2.pdf

Esercitazione: Interrogazioni SQL

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

Basi di Dati. Esercitazione Algebra Relazionale e SQL. Ing. Paolo Cappellari. 15 maggio 2006

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

OBIETTIVI DELL'ESERCITAZIONE

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi.

Basi di Dati CREAZIONE E POPOLAMENTO DI UNA BASE DI DATI

MySQL. Basi di Dati e Sistemi Informativi Prof. Marco Di Felice Dott.sa Sara Zuppiroli A.A


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

SQL Sintassi Dei Comandi

Dichiarazione degli schemi in SQL DDL 1

Interrogazioni con ANY e ALL. Operatori ANY e ALL. Interrogazioni con ANY e ALL. Interrogazioni con ANY e ALL. Interrogazioni con ANY e ALL

PROGETTAZIONE DI DATABASE Linguaggio SQL

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

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

Basi di Dati: Corso di laboratorio

LABORATORIO di INFORMATICA

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

Corso di Basi di Dati

Basi di Dati e Sistemi Informativi. Structured Query Language

SQl come DML: Esercitazione

Il linguaggio SQL: le viste

Basi di dati: appello 14/07/06

Basi di Dati prof. Letizia Tanca

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

MAX, SUM, AVG, COUNT)

Estensioni del linguaggio SQL per interrogazioni OLAP

Query SQL - singola tabella

Fondamenti di Informatica 2

Database Lezione 2. Sommario. - Progettazione di un database - Join - Valore NULL - Operatori aggregati

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

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

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

ESAME di INFORMATICA e ARCHIVIAZIONE

SQL Server Architettura Client-Server. SQL Server Introduzione all uso di SQL Server Dutto Riccardo.

Librerie digitali. Uso di XML per memorizzare i metadati. Descrizione generale. XML per memorizzare i metadati. Motivi dell uso di XML

DATABASE PER IL WEB. Programmazione Web 1

SQL - Tipi di dato Il linguaggio SQL

Basi di dati: appello 07/02/06

SQL aspetti essenziali

Microsoft Access (parte 5) Query. Query. Query. Query. Creare una query

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

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

SQL Server Introduzione all uso di SQL Server Dutto Riccardo. Dutto Riccardo - SQL Server 2008.

SQL (STRUCTURED QUERY LANGUAGE)

SQL (STRUCTURED QUERY LANGUAGE)

Il programma di oggi. Gli indici. Ottimizzazione. Metodi per la Gestione dei Dati (lezioni di laboratorio)

I.I.S. G. COSSALI - ORZINUOVI DATABASE. Marzo 2017 Prof. Dario Tomasoni 1

Progetto B. Utenti. Di conseguenza si potranno avere solo utenti di questi tipi

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

Viene richiesto di MIN CARD(S,E) = 1 UPDATE DELETE MAX CARD(S,E) = 3 INSERT UPDATE

Data Warehousing. Esercitazione 2

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

SQL - Sottointerrogazioni

MODULO 2. Query normali e parametriche Query di:

Unità 2.2 Comandi sulle tabelle

Interrogazioni nidificate

SQL. (Structured Query Language) Eugenio Di Sciascio

GESTIONE ASSICURAZIONI AUTO

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

Microsoft SQL Server

Verifica di Informatica. Cognome e Nome: Classe 5ª Ci, Data

Lezione 8. Metadati, Viste e Trigger

SQL PER LA DEFINIZIONE DI BASI DI DATI

SQL non è solo un linguaggio di interrogazione (Query Language), ma. Un linguaggio per la definizione di basi di dati (Data-definition language (DDL))

Capitolo 5. Soluzione: Soluzione in C:

PROVA SCRITTA DI TECNOLOGIA DATABASE 02/12/2004 Corso di Laurea Specialistica in Ingegneria Informatica - NOD PROF.

SQL. SQL (Structured Query Language) è un linguaggio di interrogazione per basi di dati relazionali

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

Filtri. Microsoft Access. Filtri. Filtri

Fondamenti di Informatica 2 Simulazione d esame dell 11 Dicembre 2009

Basi di dati: appello 04/07/06

Interrogazioni$e$il$valore$NULL$

Transcript:

Esercitazione 4 SQL: cataloghi e viste Sistemi Informativi T Versione elettronica: L04.CatView.pdf Cataloghi di sistema Sono insieme di tables e views che descrivono la struttura logica e fisica degli oggetti di un DB, ovvero contengono metadati Gli schemi relativi sono: SYSIBM: tables a uso interno di DB2 SYSCAT: viste definite sulle tables in SYSIBM, a uso degli utenti SYSSTAT: statistiche sul DB Le viste in SYSCAT costituiscono il cosiddetto INFORMATION SCHEMA e alcune di queste sono standardizzate Vediamo le principali (DB2 ne include circa 150!) Es. 4: cataloghi e viste Sistemi Informativi T 2

SYSCAT.SCHEMATA Ogni tupla descrive uno schema SCHEMANAME CREATE_TIME Nome dello schema Utente che ha creato lo schema Timestamp di creazione Es. 4: cataloghi e viste Sistemi Informativi T 3 SYSCAT.TABLES Ogni tupla descrive una table o view ( oggetti ) del DB Tables e views dei cataloghi sono anch esse incluse TYPE CREATE_TIME COLCOUNT CHILDREN PARENTS SELFREFS CHECKCOUNT KEYCOLUMNS Schema dell oggetto Nome dell oggetto Proprietario dell oggetto Tipo dell oggetto ( T tabella, V vista) Timestamp in cui l oggetto è stato creato Numero di colonne Numero di vincoli di foreign key che fanno riferimento a una key di questo oggetto Numero di foreign key definite per questo oggetto Numero di foreign key autoreferenziali Numero di check per questo oggetto Numero di colonne nella primary key Es. 4: cataloghi e viste Sistemi Informativi T 4

SYSCAT.VIEWS Ogni tupla descrive una vista VIEWSCHEMA VIEWNAME VIEWCHECK READONLY TEXT Schema della vista Nome della vista Utente che ha creato la vista Tipo di check applicato per le modifiche alla vista ( C = cascaded check option, L = local check option, N = no check option) N = la vista può essere modificata dagli utenti con gli opportuni privilegi, Y = la vista non può essere aggiornata a causa della sua definizione CLOB contenente la definizione della vista CLOB = Character Large Object ; per la memorizzazione di testi fino a 2 GB. Per vederne il contenuto è indispensabile usare CAST Es. 4: cataloghi e viste Sistemi Informativi T 5 SYSCAT.TABDEP Ogni tupla descrive una dipendenza di una vista da qualche altro oggetto BTYPE BSCHEMA BNAME Schema della vista Nome della vista Utente che ha creato la vista Tipo dell oggetto da cui si dipende (valori rilevanti: T = tabella, V = vista) Nome dello schema dell oggetto da cui dipende la vista Nome dell oggetto da cui si dipende Es. 4: cataloghi e viste Sistemi Informativi T 6

SYSCAT.COLUMNS Ogni tupla descrive una colonna di una vista o di una tabella COLNAME TYPENAME LENGTH DEFAULT NULLS KEYSEQ Schema dell oggetto cui appartiene la colonna Nome dell oggetto cui appartiene la colonna Nome della colonna Nome del tipo della colonna (VARCHAR, SMALLINT, ecc.) Massima lunghezza dei valori della colonna Valore di default se definito, altrimenti NULL Y se la colonna ammette NULL, altrimenti N Posizione numerica della colonna all interno della primary key Es. 4: cataloghi e viste Sistemi Informativi T 7 SYSCAT.TABCONST Ogni tupla descrive un constraint di tipo CHECK, UNIQUE, PRIMARY KEY o FOREIGN KEY TYPE ENFORCED Nome del constraint Schema della tabella cui si applica questo constraint Nome della tabella cui si applica questo constraint Utente che ha creato il constraint Tipo di constraint ( F = foreign key, K = check, P = primary key, U = unique) Y se il constraint è attivo, altrimenti N Es. 4: cataloghi e viste Sistemi Informativi T 8

SYSCAT.KEYCOLUSE Ogni tupla descrive una colonna coinvolta nella definizione di una chiave primaria, chiave o foreign key COLNAME COLSEQ Nome del constraint Schema di appartenenza Nome della tabella Nome della colonna coinvolta Posizione della colonna nella definizione della chiave Es. 4: cataloghi e viste Sistemi Informativi T 9 SYSCAT.REFERENCES Ogni tupla descrive una foreign key Utile da utilizzare assieme a SYSCAT.KEYCOLUSE! REF REF REFKEYNAME COLCOUNT DELETERULE UPDATERULE Nome del constraint Schema di appartenenza della tabella dipendente (quella che contiene la FK) Nome della tabella dipendente Utente che ha creato il constraint Schema della tabella cui si fa riferimento Nome della tabella cui si fa riferimento Nome del constraint nella tabella cui si fa riferimento (SYSCAT.KEYCOLUSE.) Numero di colonne coinvolte nella foreign key Politica per la cancellazione ( A = no action, C = cascade, N = set null, R = restrict) Politica per l aggiornamento ( A = no action, R = restrict) Es. 4: cataloghi e viste Sistemi Informativi T 10

SYSCAT.CHECKS Ogni tupla descrive un check constraint CREATE_TIME TEXT Nome del check Utente che ha creato il check Schema di appartenenza Nome della tabella cui è applicato il check Timestamp di creazione Campo CLOB contenente la definizione del check Es. 4: cataloghi e viste Sistemi Informativi T 11 SYSCAT.COLCHECKS Ogni tupla descrive una colonna coinvolta in un check constraint Utile da utilizzare assieme a SYSCAT.CHECKS! COLNAME USAGE Nome del check Schema di appartenenza Nome della tabella cui è applicato il check Nome della colonna coinvolta Uso della colonna, vale R per i check, altri valori per altri usi non trattati nel corso Es. 4: cataloghi e viste Sistemi Informativi T 12

Esercizio 1: query su cataloghi (1) Risolvere le seguenti query tramite CLP Attenzione ai join: usare sempre (almeno) e!: Sul database SAMPLE: Q1) Determinare per ogni table (TYPE = T ), il numero di foreign key, ignorando quelle autoreferenziali (escludere le tabelle con 0 foreign key) e ordinare per valori decrescenti (a parità per nome di schema e di tabella) Q2) Mostrare, in ordine decrescente di n. di oggetti table (T) e view (V), gli schemi con almeno 5 table o view Q3) Per ogni vista di SYSCAT, determinare da quanti oggetti di ciascun tipo dipende Q4) Senza usare l attributo TABLES.COLCOUNT, né viste, determinare la table (TYPE = T ) con il maggior numero di colonne Q5) Per ogni tipo di dato (COLUMNS.TYPENAME), il n. di oggetti in cui quel tipo è il più usato Es. 4: cataloghi e viste Sistemi Informativi T 13 Esercizio 1: query su cataloghi Database SIT_STUD: eseguire le stesse query, inoltre: Q6) La coppia di nomi di table che compaiono più frequentemente insieme in uno stesso schema Q7) Determinare le 4 table più popolari su SIT_STUD, fornendo per ognuna il nome e i timestamp di creazione minimo e massimo Q8) Usando una table a scelta definita in una precedente esercitazione, usare i cataloghi per ottenere le informazioni per eliminare un vincolo di tipo check e una foreign key NB: Per ottenere solo i primi K risultati di un interrogazione (caratteristica diffusa, ma non standard), DB2 prevede la clausola FETCH FIRST K ROWS ONLY da inserire come ultima della query, e tipicamente preceduta da ORDER BY Es. 4: cataloghi e viste Sistemi Informativi T 14

Esercizio 2: cataloghi personali Scopo dell esercizio è fare pratica con la definizione di viste In particolare, si vogliono creare una serie di cataloghi personalizzati che, ad esempio, includano solo le proprie table, solo le proprie view, ecc. Per ogni catalogo personale vanno anche definiti in modo opportuno gli attributi, considerando che: non tutti quelli dei cataloghi in SYSCAT sono rilevanti ai nostri scopi la lunghezza dei campi rende poco agevole la lettura dei risultati: casting! Una caratteristica che si vuole realizzare è far sì che i cataloghi personali funzionino anche a casa, ovvero se ci si collega con un diverso account Per far questo bisogna prima introdurre il concetto di registro di sistema (detto special register in DB2) Es. 4: cataloghi e viste Sistemi Informativi T 15 Special registers Uno special register è un area di memoria che DB2 usa per memorizzare informazione utilizzabile dalle istruzioni SQL Registri notevoli sono: CURRENT USER CURRENT DATE CURRENT TIME CURRENT TIMESTAMP CURRENT SCHEMA Il valore di un registro può essere usato come parametro in una query, e quindi anche nella definizione di una vista SELECT * FROM SYSCAT.TABLES WHERE = CURRENT USER Es. 4: cataloghi e viste Sistemi Informativi T 16

Visualizzare i registri (e calcolare espressioni) Cogliamo l occasione per introdurre una caratteristica di SQL sinora ignorata, l istruzione VALUES(di fatto già vista per l INSERT) Ad esempio: VALUES(1+3, abc ) costruisce (e produce in output) la tupla (4, abc ) In pratica possiamo usare DB2 per calcolare espressioni! Pertanto VALUES(CURRENT DATE, HOUR(CURRENT TIME)) mostra data e ora corrente, e così per gli altri registri DAYS è una funzione SQL utile per contare quanti giorni sono passati tra 2 date. Restituisce il numero di giorni a partire dal 01/01/0001. Adesempio: DAYS(CURRENT DATE) DAYS( 01/02/2013 ) Funziona anche con dati di tipo TIMESTAMP Es. 4: cataloghi e viste Sistemi Informativi T 17 Esercizio 2: i cataloghi da creare Definiamo delle viste che fungano da cataloghi personali sfruttando le viste in SYSCAT e i registri Connettersi al database SIT_STUD e creare le seguenti viste: CAT_TABLECOLS(,TABTYPE,COLNAME,COLTYPE) mostra per ogni tabella o vista nel proprio schema il nome delle colonne e il rispettivo tipo CAT_TABFK(,FKNAME,FKCOLNAME,TARGETTAB,KEYCOLNAME) mostra per ogni tabella nel proprio schema: il nome della tabella, il nome di ogni colonna coinvolta in una foreign key (di nome FKNAME), il nome della tabella cui si fa riferimento e il nome della corrispondente colonna Suggerimento: il campo SYSCAT.KEYCOLUSE.COLSEQ ha lo stesso valore per la colonna che partecipa a una foreign key e per la colonna cui si riferisce CAT_FRESHTABLES(, FRESH) mostra l elenco dei nomi delle tabelle nel proprio schema; il campo FRESHvale Y se è stata creata oggi, altrimenti N. Es. 4: cataloghi e viste Sistemi Informativi T 18