Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.

Slides:



Advertisements
Presentazioni simili
Interrogazioni Semplici Le operazioni di interrogazione vengono specificate per mezzo dellistruzione select select ListaAttributi from ListaTabelle [where.
Advertisements

TIPI STANDARD DI SQL BOOLEAN Valori: vero, falso CHAR(n)
SQL applicato a SQL Server
Sicurezza e concorrenza nelle basi di dati
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Biglietti e Ritardi: schema E/R
Biglietti: schema E/R.
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
SCUOLA INTERUNIVERSITARIA SICILIANA DI SPECIALIZZAZIONE PER LINSEGNAMENTO SECONDARIO Classe di Concorso: 42A Massimo Mancino MODULO DIDATTICO - Ambienti.
SQL.
SQL Structured Query Language
19/01/2014 Viste. 19/01/2014 Viste Le Viste Logiche o Viste o View possono essere definite come delle tabelle virtuali, i cui dati sono riaggregazioni.
Laboratorio di Basi di Dati Introduzione ad Access 2ª Parte.
SQL: Lezione 7 Nataliya Rassadko
SQL Per la definizione di basi di dati SQL per definire ed amministrare Ogni utente puo definire una base di dati di cui diventa lamministratore potendo.
Esercitazione.
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
Vincoli di integrità generici Con i costrutti visti sinora, non è sempre possibile definire tutti i possibili vincoli di integrità. Per questo esiste listruzione.
Manipolazione dei dati I comandi SQL che permettono di modificare il contenuto di una base di dati sono insertdeleteupdate insert ha la seguente sintassi:
SELECT STATEMENT Clausola WHERE permette di limitare il numero di record da estrarre SELECT */ [DISTINCT] colonna/ espressione [alias],… FROM table [WHERE.
Transazioni.
Creazione e manipolazione tabelle. TABELLE una tabella può essere creata in qualsiasi momento,anche quando gli utenti stanno usando il database la struttura.
SQL basato su ANSI (American National Standards Institute) – standard SQL SQL – Structured Query Language è un linguaggio dichiarativo e permette di comunicare.
Basi di dati Claudia Raibulet
SQL: Structured Query Language
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Elenchi in Excel E’ possibile inserire le voci del nuovo elenco oppure
sql: esempi di linguaggio sql nell'implementazione mysql
Basi di Dati e Sistemi Informativi
BIOINFO3 - Lezione 51 INSERIMENTO DEI DATI Visto come si creano le tabelle (sinora tristemente vuote), cominciamo ad occuparci di come riempirle con dei.
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre Utenti e privilegi del database - 1 Root è lutente amministratore predefinito, ma.
Microsoft Access (parte 5) Introduzione alle basi di dati Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
SEFOC – SETTORE FORMAZIONE CONTINUA DEL PERSONALE CORSO MYSQL AVANZATO ROBERTO PENNOLINO – CARMELO MASSIMO PRIOLO PALERMO – 07 | 06 | 2011.
Microsoft Access Query (II), filtri.
Basi di dati I Prof.ssa Rosalba Giugno Prof. Alfredo Pulvirenti SQL :Structured Query Language: SELECT (IV) SQL (Slide tratte in parte da da Atzeni, Ceri,
SQL (IV) Data Definition Language/ Data Manipulation Language.
ESERCIZIO PL/SQL e PSP.
Pagine ASP parte 3 I data base Stefano Schacherl.
Microsoft Access Maschere (II).
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
Algebra relazionale (III). Esempi di Interrogazioni: 3 Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di Tutti gli impiegati?
Raggruppamento in SQL Esempio di raggruppamento
Microsoft Access Query (III).
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
1 Basi di Dati S tructured Q uery L anguage Appunti Matteo Longhi.
Esercizio ODBC. Configurare il driver ODBC Start  Control Panel  Administrative Tools Aprire: Data Source(ODBC) User DSN  Add…. Selezionare il driver.
SQL (III) Data Definition Language/ Data Manipulation Language.
MySQL Database Management System
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Nozione ed uso Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso: –Gestione di vincoli di integrità: Per fallimento Per modifica.
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere. L’interrogazione.
Vincoli Interrelazionali Per i vincoli visti l’inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale,
Vincoli interrelazionali
Raggruppamenti e target list scorretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =
Lezione 6 - SQL. Linguaggi per DB Per interagire con le basi di dati occorre un linguaggio Linguaggio SQL (Structured Query Language), linguaggio standardizzato.
ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );
Funzionalità del DBMS relazionale l Funzioni per –definizione della base di dati –inserimento / rimozione /aggiornamento di informazioni deve soddisfare.
Approfondimenti SQL.
Basi di Dati e Sistemi Informativi Esercitazione: Il Linguaggio SQL (DDL+DML) Home page del corso:
Microsoft Access Filtri, query. Filtri Un filtro è una funzione che provoca la visualizzazione dei soli record contenenti dati che rispondono a un certo.
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
SQLite. Introduzione a SQLite Oltre alla possibilità di memorizzare informazioni persistenti attraverso Preferences e files, Android mette a disposizione.
Il linguaggio SQL (Structured Query Language) è il linguaggio standard per creare, manipolare e interrogare database relazionali. SQL non è case-sensitive:
Transcript della presentazione:

Viste

Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su unaltra vista una tabella su cui è basata la vista è chiamata base table

Perché usare una vista? per avere laccesso ad un insieme ristretto di dati perché la vista può visualizzare una selezione di colonne di una tabella utile per fare query semplici ottenendo risultati di query complesse, per esempio una vista può essere usata per ottenere informazioni da tabelle multiple senza che lutente sappia come scrivere il join una vista può essere usata per interrogare diverse tabelle, così ogni utente può creare la propria vista per prendere dati dalle stesse tabelle ma con criteri differenti

Viste semplici e viste complesse Vista semplice: - deriva da una sola tabella - non contiene funzioni - si possono effettuare operazioni DML tramite la vista Vista complessa: - deriva da più tabelle - può contenere funzioni - non sempre si possono effettuare operazioni DML tramite la vista

Creare una vista CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW nome [(alias [,alias]…)] AS subquery [WITH CHECK OPTION [CONSTRAINT nome_cons] [WITH READ ONLY [CONSTRAINT nome_cons]]; OR REPLACE ricrea la vista se già esistente FORCE crea la vista controllando se esiste la base table NOFORCE default – crea la vista solo se la base table esiste ALIAS specifica i nomi delle espressioni selezionate dalla vista. Il numero di alias deve essere uguale al numero di espressioni selezionate dalla vista WITH CHECK OPTION specifica che solo le righe accessibili dalla vista possono essere inserite o modificate WITH READ ONLY indica che non possono essere effettuate operazioni DML sulla vista

Creare una vista Creare una vista che contenga gli impiegati del dipartimento 80 CREATE VIEW empvu80 AS SELECT employee_id, last_name, salary FROM employees WHERE department_id = 80; È possibile vedere la struttura della vista con il comando DESCRIBE usato per le tabelle. DESCRIBE empvu80 La subquery che definisce una vista non può contenere la clausola ORDER BY. Verrà usata nella SELECT di interrogazione della vista.

Creare una vista CREATE VIEW salvu50 AS SELECT employee_id ID_NUMBER, last_name NAME, salary*12 ANN_SALARY FROM employees WHERE department_id = 50; È possibile inserire gli alias dopo la CREATE VIEW ma prima della subquery CREATE VIEW salvu50 (ID_NUMBER, NAME, ANN_SALARY) AS SELECT employee_id, last_name, salary*12 FROM employees WHERE department_id = 50; Il numero di alias deve coincidere con il numero di campi nella SELECT list

Interrogare una vista SELECT * FROM salvu50; È possibile interrogare una vista esattamente come una tabella, visualizzando tutti i valori o specificando le colonne e le righe da visualizzare

Cosa succede quando si interroga una vista? SELECT * FROM salvu50; 1)Oracle server verifica la definizione della vista nella tabella del dizionario dati USER_VIEWS (allinterno della tabella la SELECT che genera la vista è memorizzata in una colonna di tipo LONG) 2) Oracle Server controlla i privilegi sulla base table 3) converte la query in unoperazione sulla base table. In pratica i dati sono restituiti o modificati direttamente sulla base table

Modificare una vista CREATE OR REPLACE VIEW empvu80 (id_number, name, sal, department_id) AS SELECT employee_id, first_name|| ||last_name, salary, department_id FROM employees WHERE department_id = 80; Modificare la vista usando la clausola CREATE OR REPLACE, in modo che creando la vista la sostituirà ad una eventualmente già esistente. Questo significa che la vista può essere creata senza doverla cancellare, ricreare e ridare le grant.

Creare una vista complessa CREATE VIEW dept_sum_vu (name, minsal, maxsal, avgsal) AS SELECT d.department_name, MIN(e.salary), MAX(e.salary), AVG(e.salary) FROM employees e, departments d WHERE e.department_id = d.department_id GROUP BY d.department_name; Gli alias sulle colonne sono obbligatori quando nella select list ci sono funzioni o espressioni

Regole per effettuare operazioni DML sulle viste è possibile effettuare operazioni DML sulle viste semplici non è possibile cancellare una riga se la vista contiene : - funzioni di gruppo - una clausola GROUP BY - DISTINCT - la pseudocolonna ROWID

Regole per effettuare operazioni DML sulle viste non è possibile modificare dati tramite la vista se la contiene : - funzioni di gruppo - una clausola GROUP BY - DISTINCT - la pseudocolonna ROWID - colonne definite da unespressione (esempio SALARY*12)

Regole per effettuare operazioni DML sulle viste non è possibile aggiungere dati tramite la vista se la contiene : - funzioni di gruppo - una clausola GROUP BY - DISTINCT - la pseudocolonna ROWID - colonne definite da unespressione (esempio SALARY*12) - colonne NOT NULL nella base table che non sono state selezionate con la vista

WITH CHEK OPTION la clausola specifica che INSERT e UPDATE effettuati tramite la vista non possano creare o modificare dati che la vista non possa selezionare. In questo modo viene forzato un constraint sullintegrità e la validazione (check) dei dati prima di essere inseriti o modificati. CREATE OR REPLACE VIEW empvu2 AS SELECT * FROM employees WHERE department_id = 20 WITH CHECK OPTION CONSTRAINT empvu20_ck; UPDATE empvu20 SET department_id = 10 WHERE employee_id = 201; Restituisce errore perché la vista può vedere solo gli impiegati del dipartimento 20.

Cancellare una vista DROP VIEW nome; lo statement DROP rimuove la definizione della vista dal database cancellando la vista non ci sono effetti sulla base table viste o altre applicazioni basate sulla vista cancellata diventano invalide solo il creatore o un utente dotato di privilegio DROP ANY VIEW può cancellare una vista

Inline view è una vista creata mettendo una subquery nella clausola FROM e definendo un ALIAS per la subquery la subquery diventa quindi la sorgente dati per la vista e può essere usata nello statement SQL una inline view non è uno schema object

Inline view SELECT a.last_name, a.salary, a.department_id, b.maxsal FROM employees a, (SELECT department_id, max(salary) maxsal FROM employees GROUP BY department_id) b WHERE a.department_id = b.department_id AND a.salary < b.maxsal; Nellesempio la inline view b restituisce il dettaglio dei numeri di dipartimento e il salario massimo per ogni dipartimento della tabella EMPLOYEES. La query visualizza gli impiegati che guadagnano meno del massimo salario del loro dipartimento.

Top-N Analysis Le query TOP-N rispondono alle domande: - quali sono i 10 prodotti più venduti? - quali sono i 10 prodotti meno venduti? - i due rappresentanti che hanno venduto il maggior numero di prodotti - …

Top-N Analysis SELECT [column list], ROWNUM FROM (SELECT [column list] FROM tabella ORDER BY Top-N_colonna) WHERE ROWNUM <= N; la clausola ORDER BY nella inline view assicura lordine di visualizzazione dei dati. Per risultati che considerano il valore più grande, occorre specificare il parametro DESC ROWNUM nella select list assegna un valore sequenziale che parte da 1 ad ogni riga restituita dalla query la clausola WHERE permette di ritornare solo N righe

Top-N Analysis SELECT ROWNUM as RANK, last_name, salary FROM (SELECT last_name, salary FROM employees ORDER BY salary DESC) WHERE ROWNUM <= 3; lesempio visualizza i 3 impiegati che hanno lo stipendio più alto. la subquery restituisce il dettaglio di tutti gli impiegati ordinati secondo il salario in modo discendente. la clausola WHERE fa in modo che solo i primi 3 record del result set vengano restituiti.