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



Documenti analoghi
SQL PER LA DEFINIZIONE DI BASI DI DATI

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

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

Lezione 8. Metadati, Viste e Trigger

DBMS (Data Base Management System)

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

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

Definizione di domini

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

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

SQL Sintassi Dei Comandi

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

Basi di Dati: Corso di laboratorio

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

Corso sul linguaggio SQL

Gestione delle tabelle

Basi di Dati. S Q L Lezione 5

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

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

SQL (STRUCTURED QUERY LANGUAGE)

Il linguaggio SQL: viste e tabelle derivate

DUE GRUPPI DI COMANDI

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf

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

Vincoli e Triggers. Vincoli. Tipo di vincoli. Chiavi esterne

Triggers. Basi dati attive. Trigger. Indipendenza della conoscenza

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

********************* MODIFICA STRUTTURA DI UNA TABELLA (inserimento di un nuovo campo) ALTER TABLE Personale ADD Nascita date;

Linguaggio SQL. Structured Query Language


Basi di Dati e Sistemi Informativi. Structured Query Language

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

Appunti di MySql. Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov.

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

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati

PROGRAMMA DI CLASSE 5AI

Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica

Basi di Dati - VI. Il DDL di SQL. SQL per la definizione di Basi di Dati. SQL per la definizione di Basi di Dati

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

Il linguaggio SQL: le basi

Esercitazione 8 Mercoledì 21 gennaio 2015 (2 ore) DDL e progettazione

Volumi di riferimento

Il linguaggio SQL: DDL di base

TRIGGER Regole Attive (Trigger) OLD_TABLE NEW_TABLE old new

Corso di Laboratorio di Basi di Dati

Nella relazione CINEMA, Nome è chiave secondaria. Nella relazione FILM, CodRegista, e CodProtagonista sono chiavi esterne sulla tabella PERSONE.

Vincoli di Integrità Approccio dichiarativo alla loro implementazione

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

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

a.a. 2012/13 12 Novembre 2012 Preparazione al Test in itinere, Compito A 1. Modellare tramite uno schema entità- relazione la seguente base di dati:

MAX, SUM, AVG, COUNT)

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 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 21 LUGLIO 2015 Tempo: 2h30m

SQL. SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe

SQL Server. SQL server e un RDBMS di tipo client/server che utilizza Transact-SQL per gestire la comunicazione fra un client e SQL Server

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

CAPITOLO 4 ESERCIZI SU SQL

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

SQL. Storia e standard

Soluzione DDL ed Algebra Relazionale

Basi di Dati Corso di Laura in Informatica Umanistica

Corso di Informatica Generale 1 IN1. Linguaggio SQL

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

Laboratorio di Basi di dati

Capitolo 13. Interrogare una base di dati

PL/SQL PL/SQL. Ordine degli elementi dei triggers di Oracle. Differenze nei triggers. Versione dei trigger e PSM di Oracle

Esprimere in algebra (ottimizzata), calcolo relazionale la seguente query:

Basi di Dati prof. Letizia Tanca

Capitolo 7. Esercizio 7.1

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004

SQL: Concetti Base -Prima Parte-

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

Operazioni sui database

SQL (STRUCTURED QUERY LANGUAGE)

SQL - Funzioni di gruppo

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

Corso di Informatica (Basi di Dati)

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti:

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

Istruzioni DML di SQL

Nozione ed uso. Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso:

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

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

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

Il linguaggio SQL. ing. Alfredo Cozzi 1

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

Laboratorio di Basi di Dati e Web

2104 volume III Programmazione

Introduzione a MySQL

Vincoli di Integrità

Esame di Stato Istituto Tecnico Industriale Soluzione della Seconda Prova Indirizzo: INFORMATICA Tema: INFORMATICA Anno Scolastico:

SQL: definizione schema

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

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

Archivi e Basi di Dati

Esercizio 4.1. Soluzione:

ESAME di INFORMATICA e ARCHIVIAZIONE

Transcript:

SQL PER LA DEFINIZIONE DI BASI DI DATI 1 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 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: ESEMPIO 2 CREATE TABLE Impiegati ( Codice CHAR(8) NOT NULL, Nome CHAR(20), AnnoNascita INTEGER CHECK (AnnoNascita < 2000), Qualifica CHAR(20) DEFAULT Impiegato, Supervisore CHAR(8), PRIMARY KEY pk_impiegato (Codice), FOREIGN KEY fk_ Impiegati (Supervisore) REFERENCES Impiegati ) CREATE TABLE FamiliariACarico ( Nome CHAR(20), AnnoNascita INTEGER, GradoParentela CHAR(10), CapoFamiglia CHAR(8) FOREIGN KEY fk_ FamiliariACarico (CapoFamiglia)

DEFINIZIONE DI TABELLE 3 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 NuovoAttributo Tipo TABELLE INIZIALIZZATE E TABELLE CALCOLATE 4 Tabelle inizializzate: CREATE TABLE Nome EspressioneSELECT CREATE TABLE Supervisori Tabelle calcolate (viste): SELECT Codice, Nome, Qualifica, Stipendio WHERE Supervisore IS NULL CREATE VIEW Nome [(Attributo {, Attributo})] AS EspressioneSELECT [WITH CHECK OPTION]; CREATE VIEW Supervisori AS SELECT Codice, Nome, Qualifica, Stipendio WHERE Supervisore IS NULL

VISTE MODIFICABILI 5 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 6 Per nascondere certe modifiche all organizzazione 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 : 7 CREATE VIEW SpeseStipendi (Dipartimento, Spesa) AS SELECT Dipartimento, SUM(Stipendio) GROUP BY Dipartimento SELECT Dipartimento, Spesa FROM SpeseStipendi WHERE Spesa = ( SELECT MAX(Spesa) FROM SpeseStipendi) equivalente a SELECT Dipartimento, SUM(Stipendio) GROUP BY Dipartimento HAVING SUM(Stipendio) >= ALL ( SELECT sum(stipendio) GROUP BY Dipartimento ) spesso non ammessa perché HAVING coinvolge una sottoselect. ALTRO ESEMPIO Trovare il numero medio di impiegati dei dipartimenti CREATE VIEW NumImpegatiDip(Dipart., NumImp) AS SELECT Dipartimento, count(*) GROUP BY Dipartimenti 8 SELECT avg(numimp) FROM NumImpegatiDip equivale a SELECT avg(count(*)) GROUP BY Dipartimento che non si può scrivere senza view

VINCOLI D INTEGRITA : CHIAVI E GENERALI 9 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} ] ESEMPIO 10 CREATE TABLE Impiegati ( Codice CHAR(8) NOT NULL, ) Nome CHAR(20) NOT NULL, AnnoNascita INTEGER NOT NULL, Dipartimento CHAR(20), Stipendio FLOAT NOT NULL, Supervisore CHAR(8), PRIMARY KEY pk_impiegato (Codice), FOREIGN KEY fk_ Impiegati (Supervisore) REFERENCES Impiegati ON DELETE SET NULL

ESEMPIO 11 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 ) CREATE PROCEDURE/FUNCTION 12 CREATE FUNCTION contastudenti IS DECLARE numstudenti INTEGER; BEGIN SELECT COUNT(*) INTO numstudenti FROM STUDENTI; RETURN (numstudenti); END

I TRIGGER I trigger si basano sul paradigma evento-condizione-azione (ECA): 13 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 14 CREATE TRIGGER ControlloStipendio BEFORE INSERT ON Impiegati DECLARE StipendioMedio FLOAT BEGIN SELECT avg(stipendio) INTO StipendioMedio WHERE Dipartimento = :new.dipartimento; IF :new.stipendio > 2 * StipendioMedio THEN RAISE_APPL._ERR.(-2061, Stipendio alto ) END IF; END;

I TRIGGER 15 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 16 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 ]

CONTROLLO DEGLI ACCESSI 17 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. CONTROLLO DEGLI ACCESSI (cont.) 18 Chi definisce una tabella o una VIEW ottiene automaticamente tutti i privilegi su di esse, ed è l unico 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 19 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 20 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 SYS I A C B Privilegio Descrittore privilegio (da, S, R, W, a) Oggetto With grant option

GRAFO DELLE AUTORIZZAZIONI: PROPRIETA' 21 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 SYS I A C B C B CREAZIONE DI INDICI 22 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) 23 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): SYSTABLES(name, creator, type, colcount, filename, remarks) CATALOGO (cont.) 24 Alcuni esempi di tabelle, delle quali si mostrano solo alcuni attributi, sono: Tabella degli attributi: SYSCOLUMNS(name, tbname, tbcreator, colno, coltype, lenght, default, remarks) Tabella degli indici: SYSINDEXES(name, tbname, creator, uniquerule, colcount) e altre ancora sulle viste, vincoli, autorizzazioni, etc. (una decina).

RIEPILOGO 25 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. RIEPILOGO 26 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).