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.

Slides:



Advertisements
Presentazioni simili
TIPI STANDARD DI SQL BOOLEAN Valori: vero, falso CHAR(n)
Advertisements

Microsoft SQL Server 2008 Utilizzo. Creazione DataBase CREATE DATABASE CREATE DATABASE Cinema.
SQL (Standard query language) Istruzioni per la creazione di una tabella: Create table ( tipo, (, [vincoli]) Primary key ( ) CHIVE PRIMARIA Foreign key(
JPA Overview della tecnologia. Java Persistence Architecture Definita nella JSR-220 EJB 3.0 ( Tentativo di unificare EJB2.1 con.
Sequential Statements. – Il VHDL simula lo svolgersi in parallelo di varie operazioni – Loggetto fondamentale e il PROCESS – Un PROCESS contiene una serie.
Asserzioni, Viste & Triggers
Basi di dati attive Dispongono di un sottosistema integrato per definire e gestire regole di produzione (regole attive) Regole di tipo: Evento-Condizione-Azione.
G. Mecca – – Università della Basilicata Basi di Dati SQL-92 Dettagli e Approfondimenti versione 2.0 Questo lavoro è concesso in uso secondo.
SCUOLA INTERUNIVERSITARIA SICILIANA DI SPECIALIZZAZIONE PER LINSEGNAMENTO SECONDARIO Classe di Concorso: 42A Massimo Mancino MODULO DIDATTICO - Ambienti.
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.
Un DataBase Management System (DBMS) relazionale client/server.
MySQL Esercitazioni. Ripasso Connessione a MySQL. Creazione delle basi di dati e delle tablelle. Inserimento dei dati. Interrogazioni.
prompt> java SumAverage
Basi di dati attive Paolo Atzeni.
Application Code Dato Table Data Base Trigger Code 1° Controllo Procedure Client Side 3° Controllo Integrity Constraint 2° Controllo Event Driven BUSINESS.
SQL: Lezione 7 Nataliya Rassadko
Nataliya Rassadko SQL: Lezione 5 Nataliya Rassadko
SQL Esercitazione per il corso “Basi di Dati” Gabriel Kuper
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999 Capitolo 4:SQL 11/10/2001.
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.
1 Implementazione di Linguaggi 2 PARTE 6 Implementazione di Linguaggi 2 PARTE 6 Massimo Ancona DISI Università di Genova Testo: A.V. Aho, R. Sethi, J.D.Ullman.
SQL1 Structured Query Language Data Definition Language Data Manipulation Language Evoluzione Sequel IBM (1974) Standardizzazione ANSI/ISO: SQL-89, SQL-
Sequence. CREARE UNA SEQUENCE CREATE SEQUENCE nome [INCREMENT BY n] [START WITH n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE]
Gestione dati DML Statement. DML – Data Manipultion Language Unoperazione DML viene eseguita quando: aggiungendo nuove righe ad una tabella modificando.
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.
PRODOTTO CARTESIANO Otteniamo un prodotto cartesiano quando: viene omessa la condizione di join una condizione di join non è valida tutte le righe della.
FUNZIONI DI GRUPPO Le funzioni di gruppo operano su un set di record restituendo un risultato per il gruppo. AVG ([DISTINCT|ALL] n) media, ignora i valori.
Creazione e manipolazione tabelle. TABELLE una tabella può essere creata in qualsiasi momento,anche quando gli utenti stanno usando il database la struttura.
Constraints.
Componenti dell’architettura Oracle
SQL basato su ANSI (American National Standards Institute) – standard SQL SQL – Structured Query Language è un linguaggio dichiarativo e permette di comunicare.
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Ricerca di una chiave: Search(x, k) if x == nil or k == x.key return x
1. Progettare il seguente DataBase in relazione ai due esempi presenti in piattaforma, Modulo 4, esempi 1 e 2: Considerare le informazioni per la gestione.
Corso di Basi di Dati Un esempio di RDBMS: Il tool MySQL
Microsoft Access Maschere.
Università degli studi di Catania
JavaScript Lezione 5 Tipizzazione ed operazioni tra tipi diversi Istruzioni di input.
Moduli o Form I Moduli permettono all'utente di immettere informazioni...
Project Review byNight byNight December 6th, 2011.
Personalizzazione e porting delle procedure esterne connesse ad Aleph Il caricamento degli utenti della circolazione da files esterni Modifiche introdotte.
Corso di Basi di Dati Il Linguaggio SQL Home page del corso:
Basi di Dati e Sistemi Informativi
SQL Server 2005 Sicurezza Davide Mauri Factory Software
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:
Project Review Novembrer 17th, Project Review Agenda: Project goals User stories – use cases – scenarios Project plan summary Status as of November.
Project Review Novembrer 17th, Project Review Agenda: Project goals User stories – use cases – scenarios Project plan summary Status as of November.
SUBQUERY Chi ha un salario maggiore di quello di Abel? Occorre scomporre la query in due sotto problemi: MAIN : quali impiegati hanno un salario maggiore.
Dato Table Data Base Application Code 1° Controllo Procedure Client Side 3° Controllo Integrity Constraint Trigger Code 2° Controllo Event Driven BUSINESS.
1 Basi di dati (Sistemi Informativi) Scuola di Dottorato in Scienze Veterinarie per la Salute Animale e la Sicurezza Alimentare a.a Ing. Mauro.
Collection & Generics in Java
CREAZIONE UTENTE SU DATATOP. CREAZIONE UTENTE Andate su //datatop.di.unipi.it/webdb Login come utente: webdb password: ****** Administer -> User Manager.
SQL Developer Lanciare sqldeveloper (alias sul desktop) / c:\Oracle\sqldeveloper Associare tutti i tipi di file, se volete Tasto destro sulla spina “connection”
Dynamic SQL.
SQL (IV) Data Definition Language/ Data Manipulation Language.
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.
SQL (III) Data Definition Language/ Data Manipulation Language.
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.
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Basi di Dati attive. Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive2 Definizione Una base di dati si dice attiva quando dispone.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Interrogazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
SQL per la modifica di basi di dati
Quantificazione Esistenziale ed Universale
Transcript della presentazione:

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)) –CREATE SCHEMA Nome AUTHORIZATION Utente –CREATE TABLE o VIEW, con vincoli (domini, chiavi e referenziali) –CREATE INDEX –CREATE PROCEDURE –CREATE TRIGGER Un linguaggio per stabilire controlli sull'uso dei dati: GRANT Un linguaggio per modificare i dati.

Definizione di tabelle Ciò che si crea con un CREATE si può eliminare con il comando DROP o cambiare con il comando ALTER. CREATE TABLE Nome ( Attributo Tipo [ValoreDefault] [VincoloAttributo] {, Attributo Tipo [Default] [VincoloAttributo]} {, VincoloTabella}) Default := DEFAULT {valore | null | username} Nuovi attributi si possono aggiungere con ALTER TABLE Nome ADD COLUMN NuovoAttr Tipo

ESEMPIO CREATE TABLE Impiegati (Codice CHAR(8), Nome CHAR(20), AnnoNascita INTEGER, Dipartimento CHAR(20), Qualifica CHAR(20), Stipendio FLOAT, Supervisore CHAR(8) ) CREATE TABLE FamiliariACarico (Nome CHAR(20), AnnoNascita INTEGER, GradoParentela CHAR(10), CapoFamiglia CHAR(8) )

Tabelle inizializzate e tabelle calcolate Tabelle inizializzate: CREATE TABLE Nome EspressioneSELECT CREATE TABLE Supervisori SELECTCodice, Nome, Qualifica, Stipendi FROMImpiegati WHERE Supervisore IS NULL Tabelle calcolate (viste): CREATE VIEW Nome [(Attributo {, Attributo})] AS EspressioneSELECT [WITH CHECK OPTION]; CREATE VIEW Supervisori AS SELECTCodice, Nome, Qual., Stip. FROMImpiegati WHERE Supervisore IS NULL

Viste modificabili Le tabelle delle viste si interrogano come le altre, ma in generale non si possono modificare. Deve esistere una corrispondenza biunivoca fra le righe della vista e le righe di una tabella di base, ovvero: 1)SELECT senza DISTINCT e solo di attributi 2)FROM una sola tabella modificabile 3)WHERE senza SottoSelect 4)GROUP BY e HAVING non sono presenti nella definizione. Possono esistere anche delle restrizioni su SELECT su viste definite usando GROUP BY.

Utilità delle viste Per nascondere certe modifiche allorganizzazione logica dei dati (indipendenza logica) Per offrire visioni diverse degli stessi dati senza ricorrere a duplicazioni Per rendere più semplici, o per rendere possibili, alcune interrogazioni

Viste e interrogazioni impossibili Il dipartimento che spende il massimo per gli stipendi'. CREATE VIEW SpeseStipendi (Dipartimento, Spesa) AS SELECTDipartimento, sum(Stipendio) FROMImpiegati GROUP BY Dipartimento SELECT Dipartimento, Spesa FROM SpeseStipendi WHERESpesa = (SELECT max(Spesa) FROM SpeseStipendi) equivalente a SELECT Dipartimento, sum(Stipendio) FROM Impiegati GROUP BY Dipartimento HAVING sum(Stipendio) >= all (SELECT sum(Stipendio) FROM Impiegati GROUP BY Dipartimento ) non ammessa in tutti i sistemi perché HAVING coinvolge una sottoselect.

Altro esempio Trovare il numero medio di impiegati dei dipartimenti CREATE VIEW NumImpegatiDip(Dipart., NumImp) AS SELECTDipartimento, count(*) FROMImpiegati GROUP BYDipartimenti SELECT avg(NumImp) FROM NumImpegatiDip equivale a SELECT avg(count(*)) FROMImpiegati GROUP BY Dipartimento che non si può scrivere senza view

Vincoli dintegrita: chiavi e generali Vincoli su attributi VincoloAttributo := [NOT NULL [UNIQUE] ] | [CHECK (Condizione) ] [REFERENCES Tabella [(Attributo {, Attributo})]] Vincoli su tabella VincoloTabella := UNIQUE (Attributo {, Attributo}) | CHECK (Condizione) | | PRIMARY KEY [Nome] (Attributo {, Attributo}) | FOREIGN KEY [Nome] (Attributo {, Attributo}) REFERENCES Tabella [(Attributo {, Attributo})] [ON DELETE {NO ACTION| CASCADE | SET NULL} ] Nuovi vincoli si possono aggiungere con ALTER TABLE

ESEMPIO CREATE TABLE Impiegati (Codice CHAR(8) NOT NULL, Nome CHAR(20) NOT NULL, AnnoNascita INTEGER NOT NULL, Dipartimento CHAR(20), Qualifica CHAR(20) NOT NULL, Stipendio FLOAT NOT NULL, Supervisore CHAR(8), PRIMARY KEY pk_impiegato (Codice), FOREIGN KEY fk_ Impiegati (Supervisore) REFERENCES Impiegati ON DELETE SET NULL ) Controllo dei vincoli.

ESEMPIO CREATE TABLE FamiliariACarico (Nome CHAR(20) NOT NULL, AnnoNascita INTEGER NOT NULL, GradoParentela CHAR(10) NOT NULL, CapoFamiglia CHAR(8) NOT NULL, PRIMARY KEY pk_ FamiliariACarico (CapoFamiglia, Nome) FOREIGN KEY fk_ FamiliariACarico (CapoFamiglia) REFERENCES Impiegati ON DELETE CASCADE )

I trigger I trigger si basano sul paradigma evento-condizione-azione (ECA): CREATE TRIGGER Nome PrimaODopoDi Evento {, Evento} ON Tabella [WHEN Condizione] [Granularità] Azione PrimaODopoDi := BEFORE | AFTER Evento := INSERT | DELETE | UPDATE OF Attributi Granularità := FOR EACH ROW | FOR EACH STATEMENT

Esempio di trigger CREATE TRIGGER ControlloStipendio BEFORE INSERT ON Impiegati DECLARE StipendioMedio FLOAT BEGIN SELECT avg(Stipendio) INTO StipendioMedio FROM Impiegati WHERE Dipartimento = :new.Dipartimento; IF :new.Stipendio > 2 * StipendioMedio THEN RAISE_APPL._ERR.(-2061, Stipendio alto) END IF; END;

I trigger Proprietà essenziale dei trigger: terminazione Utilità dei trigger –Trattare vincoli non esprimibili nello schema –Attivare automaticamente azioni sulla base di dati quando si verificano certe condizioni

Controllo degli accessi Chi crea lo schema della BD è l'unico che può fare CREATE, ALTER e DROP Chi crea una tabella stabilisce i modi in cui altri possono farne uso: GRANT Privilegi ON Oggetto TO Utenti [ WITH GRANT OPTION ] Tipi di privilegi: –SELECT: lettura di dati –INSERT [(Attributi)]: inserire record (con valori non nulli per gli attributi) –DELETE: cancellazione di record –UPDATE [(Attributi)]: modificare record (o solo gli attributi) –REFERENCES [(Attributi)]: definire chiavi esterne in altre tabelle che riferiscono gli attributi. WITH GRANT OPTION: si possono trasferire i privilegi ad altri utenti. Combinato con le viste diventa un meccansimo molto potente per il controllo dell'uso dei dati (schemi esterni)

Controllo degli accessi (cont.) Chi definisce una tabella o una VIEW ottiene automaticamente tutti i privilegi su di esse, ed è lunico che può fare un DROP e può autorizzare altri ad usarla con GRANT. Nel caso di viste, il "creatore" ha i privilegi che ha sulle tabelle usate nella definzione. Le autorizzazioni si annullano con il comando: REVOKE [ GRANT OPTION FOR ] Privilegi ON Oggetto FROM Utenti [ CASCADE ] Quando si toglie un privilegio a U, lo si toglie anche a tutti coloro che lo hanno avuto solo da U.

Esempi di grant GRANT INSERT, SELECT ON Esami TO Tizio. GRANT DELETE ON On Esami TO Capo WITH GRANT OPTION –Capo può cancellare record e autorizzare altri a farlo. GRANT UPDATE (voto) ON Esami TO Sicuro –Sicuro può modificare solo il voto degli esami. GRANT SELECT, INSERT ON VistaEsamiBD1 TO Albano –Albano può interrogare e modificare solo i suoi esami.

Grafo delle autorizzazioni L'utente I ha creato la tabella R e innesca la seguente successione di eventi: I: GRANT SELECT ON R TO A WITH GRANT OPTION A: GRANT SELECT ON R TO B WITH GRANT OPTION B: GRANT SELECT ON R TO A WITH GRANT OPTION I: GRANT SELECT ON R TO C WITH GRANT OPTION C: GRANT SELECT ON R TO B WITH GRANT OPTION Grafo delle autorizzazioni (da, S, R, W, a) Descrittore privilegio PrivilegioOggetto With grant option SYS I A B C (S, R, W)

Grafo delle autorizzazioni: proprieta' Se un nodo N ha un arco uscente con un privilegio, allora esiste un cammino da SYSTEM a N con ogni arco etichettato dallo stesso privilegio + WGO. Effetto del REVOKE, ad es. I: REVOKE SELECT ON R FROM A CASCADE e poi I: REVOKE SELECT ON R FROM C CASCADE SYS I A B C (S, R, W) SYS I A B C (S, R, W)

Creazione di indici Cosa sono e a cosa servono Non è un comando standard dell'SQL e quindi ci sono differenze nei vari sistemi CREATE INDEX NomeIdx ON Tabella(Attributi) CREATE INDEX NomeIdx ON Tabella WITH STRUCTURE = BTREE, KEY = (Attributi) DROP INDEX NomeIdx

Catalogo (dei metadati) Alcuni esempi di tabelle, delle quali si mostrano solo alcuni attributi, sono: –Tabella delle password: PASSWORD(username, password) –Tabella delle basi di dati: SYSDB(dbname, creator, dbpath, remarks) –Tabella delle tabelle (type = view or table): SYSTABLE(name, creator, type, colcount, filename, remarks) –Tabella degli attributi: SYSCOLS(name, tbname, tbcreator, colno, coltype, lenght, default, remarks) –Tabella degli indici: SYSINDEX(name, tbname, creator, uniquerule, colcount) –e altre ancora sulle viste, vincoli, autorizzazioni, etc. (una decina).

Riepilogo DDL consente la definizione di tabelle, viste e indici. Le tabelle si possono modificare aggiungendo o togliendo attributi e vincoli. Le viste si possono interrogare come ogni altra tabella, ma in generale non consentono modifiche dei dati. I comandi GRANT / REVOKE + viste offrono ampie possibilità di controllo degli usi dei dati. SQL consente di dichiarare molti tipi di vincoli, oltre a quelli fondamentali di chiave e referenziale. Oltre alle tabelle fanno parte dello schema le procedure e i trigger. La padronanza di tutti questi meccanismi –– e di altri che riguardano aspetti fisici, affidabilità, sicurezza –– richiede una professionalità specifica (DBA).