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



Documenti analoghi
Basi di Dati: Corso di laboratorio

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

Definizione di domini

SQL Sintassi Dei Comandi

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

Corso sul linguaggio SQL

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

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

Il linguaggio SQL: DDL di base

Gestione delle tabelle

DBMS (Data Base Management System)

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

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

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

SQL (STRUCTURED QUERY LANGUAGE)

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

Il linguaggio SQL: le basi

Vincoli di Integrità Approccio dichiarativo alla loro implementazione

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

Vincoli di Integrità

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

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

Informatica per le discipline umanistiche 2 lezione 10

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

Linguaggio SQL. Structured Query Language

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

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

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

SQL PER LA DEFINIZIONE DI BASI DI DATI

SQL. Storia e standard

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

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


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

Corso di Informatica Generale 1 IN1. Linguaggio SQL

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

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

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

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

Laboratorio di Basi di Dati e Web

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

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:

Corso di Informatica (Basi di Dati)

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

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

Vincoli di integrità

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

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

DUE GRUPPI DI COMANDI

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

SQL (STRUCTURED QUERY LANGUAGE)

Basi di Dati prof. Letizia Tanca

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

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti:

MAX, SUM, AVG, COUNT)

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

Laboratorio di Basi di Dati

SQL. Alcune note sulla definizione dei dati

Organizzazione degli archivi

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

Basi di Dati Relazionali

Basi di dati Il linguaggio SQL

Basi di dati Il linguaggio SQL

Elena Baralis 2013 Politecnico di Torino 1

MySQL Database Management System

Istruzioni DML di SQL

SQL: Concetti Base -Prima Parte-

Lezione 8. Metadati, Viste e Trigger

2104 volume III Programmazione

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

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

Basi di dati e Sistemi informativi aziendali

Lo schema concettuale risultante dalla progettazione concettuale è l input alla fase di progettazione logica.

Corso di Laboratorio di Basi di Dati

PROGRAMMA DI CLASSE 5AI

Volumi di riferimento

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

Esercitazione 1. Sistemi Informativi T. Versione elettronica: L01.2.DDLDMLbase.pdf

Laboratorio di Basi di Dati Introduzione a SQL

IL DAT A B A S E DI ALGE B R A N D O

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

Introduzione a MySQL

Basi di Dati Prof. L. Tanca e F. A. Schreiber APPELLO DEL 12 FEBBRAIO 2015 PARTE 1

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

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

Concetti fondamentali dei database database Cos'è un database Principali database

Il Modello Relazionale

Corso sul linguaggio SQL

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

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

CONCETTO DI ANNIDAMENTO

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

Operazioni sui database

Il linguaggio SQL. Evoluzione del linguaggio. I linguaggi dentro SQL. I dialeu SQL. U@lizzo di SQL SQL. A. Ferrari 1

Linguaggio SQL: fondamenti. Basi di dati. Elena Baralis Pag. 1. Linguaggio SQL: fondamenti. Sistemi informativi. Introduzione

Transcript:

Basi di dati Il Linguaggio SQL

Data Definition Language (DDL) Data Definition Language: insieme di istruzioni utilizzate per modificare la struttura della base di dati Ne fanno parte le istruzioni di inserimento, cancellazione e modifica di tabelle. Il DDL di SQL permette: di definire schemi di relazioni (o table, tabelle), modificarli ed eliminarli di specificare vincoli, sia a livello di tupla (o riga ) che a livello di tabella di definire nuovi domini, oltre a quelli predefiniti definizione delle viste ( view ), ovvero tabelle virtuali

Creazione di una tabella La creazione di una tabella avviene attraverso l enumerazione delle colonne che la compongono. Mediante l istruzione CREATE TABLE si definisce lo schema di una tabella e se ne crea un istanza vuota. Per ogni attributo và specificato il dominio, un eventuale valore di default e eventuali vincoli. CREATE TABLE Tabella (<nome_campo1> <tipo_campo1>, <nome_campo2> <tipo_campo2>,...) CREATE TABLE Studenti( Matricola char(10), Nome char(20) NOT NULL, Cognome char(20) NOT NULL, AnnoDiIscrizione integer, CONSTRAINT "PK_Studente" PRIMARY KEY (Matricola))

Valori di default I valori di default specificano cosa deve essere assegnato all attributo (colonna) quando non si indica un valore esplicitamente. Esempi: AnnoDiIscrizione integer DEFAULT 1 NumeroPatente char(20) DEFAULT NULL

Vincoli di integrità intra-relazionali Operano sugli attributi delle relazioni: NOT NULL UNIQUE definisce chiavi PRIMARY KEY: chiave primaria (una sola, implica NOT NULL) CHECK: vincolo di controllo

Vincoli di integrità intra-relazionali Vincolo NOT NULL: vieta la presenza di valori nulli CREATE TABLE Studenti( Matricola char(10), Nome char(20) NOT NULL, Cognome char(20) NOT NULL, AnnoDiIscrizione integer, PRIMARY KEY (Matricola))

Vincoli di integrità intra-relazionali Vincolo UNIQUE: Non possono esistere due righe che hanno gli stessi valori per l attributo o insieme di attributi specificati CREATE TABLE Studenti( Matricola char(10), CodiceFiscale char(16) UNIQUE, Nome char(20) NOT NULL, Cognome char(20) NOT NULL, AnnoDiIscrizione integer, PRIMARY KEY (Matricola))

Vincoli di integrità intra-relazionali Vincolo PRIMARY KEY: Identifica la chiave primaria CREATE TABLE Veicoli( Targa char(10), CodiceProprietario char(20) NOT NULL, PRIMARY KEY (Targa,CodiceProprietario )) Oppure CREATE TABLE Veicoli( Targa char(10), CodiceProprietario char(20) NOT NULL, CONSTRAINT "PK_Veicoli" PRIMARY KEY (Targa,CodiceProprietario ))

Vincoli di integrità intra-relazionali Vincolo di controllo CHECK: I vincoli di controllo sono utilizzati per verificare generiche condizioni sui valori di una colonna. Il vincolo è violato se esiste almeno una tupla che rende falsa la condizione CREATE TABLE Esami( Matricola char(10), Corso char(20) UNIQUE, Voto integer CHECK (Voto > 18 AND Voto < 30), PRIMARY KEY (Corso, Matricola)) NOTA: Se CHECK viene espresso a livello di tabella (anziché nella definizione dell attributo) è possibile fare riferimento a più attributi della tabella stessa Es: CHECK (ImportoLordo = Netto + Ritenute)

Vincoli di integrità inter-relazionali Permettono di definire vincoli di integrità referenziale Creano un legame tra i valori dell attributo di una tabella e i valori di un attributo di un altra tabella REFERENCES permette di specificare vincoli di colonna FOREIGN KEY vincolo di chiave esterna

Vincoli di integrità inter-relazionali Vincolo REFERENCES: Permette di specificare vincoli di colonna. CREATE TABLE Impiegati ( Matricola char(6) PRIMARY KEY, Cognome varchar(50) NOT NULL, Nome varchar(50) NOT NULL, Dipartimento char(15) REFERENCES Dipartimenti(NomeDipartimento),... ) Il campo Dipartimento può assumere solo i valori che compaiono nel campo NomeDipartimento della tabella Dipartimenti.

Vincoli di integrità inter-relazionali Vincolo FOREIGN KEY: La definizione di una foreign key avviene specificando un vincolo e indicando quale chiave viene referenziata. CREATE TABLE Esami( Matricola char(10), Corso char(20) UNIQUE, Voto integer, PRIMARY KEY (Corso, Matricola), FOREIGN KEY (Matricola) REFERENCES Studenti (Matricola) )

Viste Sono tabelle virtuali ovvero che non esistono fisicamente ma il cui contenuto è ottenuto da altre tabelle. In SQL si ottengono assegnando una lista di attributi ed un nome ad una interrogazione con select. Studenti(Matricola,Cognome,Nome,CittaResidenza,Media) Esami(Matricola,Corso,Voto) CREATE VIEW [OR REPLACE] StudentiMeritevoli (Matricola,Nome,Cognome) AS SELECT Matricola,Nome,Cognome FROM Studenti WHERE Matricola IN (SELECT Matricola FROM Esami GROUP BY Matricola HAVING AVG(Voto)>=30)

Modifica dello Schema Istruzione DROP TABLE: Rimuove la tabella e eventualmente le tabelle dipendenti CASCADE: Elimina la tabella Studenti, il suo contenuto e le viste connesse DROP TABLE Studenti CASCADE RESTRICT: Elimina la tabella Studenti solo se è vuota e non ci sono oggetti connessi DROP TABLE Studenti RESTRICT

Modifica dello Schema Istruzione ALTER TABLE: permette di inserire/rimuovere colonne dalle tabelle inserire/rimuovere vincoli Inserimento della colonna Sesso nella Tabella Studenti: ALTER TABLE Studenti ADD COLUMN Sesso char(1) CHECK (Sesso in ( M, F )), DROP CONSTRAINT Mail, Cancellazione colonna AnnoIscrizione nella Tabella Studenti: ALTER TABLE Studenti DROP COLUMN AnnoIscrizione

Data Manipulation Language (DML) Il Data Manipulation Language è l'insieme di istruzioni utilizzate per modificare il contenuto della base di dati. Ne fanno parte le istruzioni di inserimento, cancellazione e modifica dei record (INSERT, DELETE, UPDATE): SELECT esegue interrogazioni (query) sul DB INSERT INTO permette di inserire nuove tuple nel DB DELETE permette di cancellare tuple dal DB UPDATE permette di modificare tuple del DB INSERT INTO può usare il risultato di una query per eseguire inserimenti multipli DELETE e UPDATE possono fare uso di condizioni per specificare le tuple da cancellare o modificare In ogni caso gli aggiornamenti riguardano una sola tabella

Inserimento: INSERT INTO È possibile inserire una nuova tupla specificandone i valori INSERT INTO Tabella [(Campo1, Campo2...)] VALUES (Val1, Val2,...) INSERT INTO Studenti(Matricola,Cognome,Nome,CittaResidenza,Media) VALUES ( M0004, Rossi, Paola, Pisa,24) Ci deve essere corrispondenza tra attributi e valori La lista degli attributi si può omettere, nel qual caso vale l ordine con cui sono stati definiti Se la lista non include tutti gli attributi, i restanti assumono valore NULL (se ammesso) o il valore di default (se specificato) INSERT INTO Studenti(Matricola,Cognome,Nome,CittaResidenza) VALUES ( M0004, Rossi, Paola, Pisa )

Inserimento: INSERT INTO È possibile anche inserire le tuple che risultano da una query: INSERT INTO ResidenzaPisa(ResidenzaPI,Matricola) SELECT CittaResidenza, Matricola FROM Studenti WHERE CittaResidenza = Pisa Valgono le regole viste per il caso singolo Gli schemi del risultato e della tabella in cui si inseriscono le tuple possono essere diversi, l importante è che i tipi delle colonne siano compatibili

Modifica: UPDATE L istruzione UPDATE modifica i valori delle colonne in una riga esistente può fare uso di una condizione per specificare le tuple da modificare UPDATE Tabella SET <campo1>=<valore1>, <campo2>=<valore2>... WHERE condizione Studenti(Matricola,Cognome,Nome,CittaResidenza,Media) Esami(Matricola,Corso,Voto) UPDATE Studenti SET Media = Media+1 WHERE Matricola = M0004 UPDATE Studenti SET Media = Media-1 WHERE Media>25 UPDATE Esami SET Voto = 30 WHERE Matricola = ' M0004 AND corso = Analisi I L istruzione UPDATE può portare a violare il vincolo di integrità referenziale

Cancellazione: DELETE L istruzione DELETE cancella una tupla esistente può fare uso di una condizione per specificare le tuple da cancellare DELETE FROM Tabella WHERE condizione DELETE FROM Studenti WHERE Matricola = A002038 Cancella gli studenti che non hanno fatto esami: DELETE FROM Studenti WHERE Matricola NOT IN (SELECT Matricola FROM Esami GROUP BY Matricola) OSS: Se la clausola WHERE non e presente si eliminano tutti i record della tabella L istruzione DELETE può portare a violare il vincolo di integrità referenziale

Politiche di reazione Per garantire che a fronte di cancellazioni e modifiche i vincoli di integrità referenziale siano rispettati, si possono specificare opportune politiche di reazione in fase di definizione degli schemi CREATE TABLE Iscrizioni( CodIscrizione char(20), Matricola char(10),... CONSTRAINT "PK_Iscrizioni" PRIMARY KEY (CodIscrizione, Matricola), CONSTRAINT FK_Studenti" FOREIGN KEY (Matricola) REFERENCES Studenti ON DELETE CASCADE -- cancellazione in cascata ON UPDATE NO ACTION -- modifiche non permesse ) Se una riga di Studenti e cancellata verranno cancellate tutte le righe di Iscrizioni che la referenziano Se la colonna Matricola di Studenti e modificata, l aggiornamento deve essere rifiutato se una riga di Iscrizioni punta alla riga modificata

Politiche di reazione Sintassi: ON DELETE { NO ACTION CASCADE SET NULL SET DEFAULT } ON UPDATE { NO ACTION CASCADE SET NULL SET DEFAULT } ON DELETE NO ACTION: Specifica che se si tenta di eliminare una riga contenente una chiave a cui fanno riferimento chiavi esterne in righe esistenti in altre tabelle, verrà generato un errore. ON UPDATE NO ACTION: Specifica che se si tenta di aggiornare un valore di chiave in una riga e alla chiave fanno riferimento chiavi esterne in righe esistenti in altre tabelle, verrà generato un errore.

Politiche di reazione Sintassi: ON DELETE { NO ACTION CASCADE SET NULL SET DEFAULT } ON UPDATE { NO ACTION CASCADE SET NULL SET DEFAULT } ON DELETE CASCADE: Specifica che se si tenta di eliminare una riga contenente una chiave a cui fanno riferimento chiavi esterne in righe esistenti in altre tabelle, verranno inoltre eliminate tutte le righe contenenti tali chiavi esterne. ON UPDATE CASCADE: Specifica che se si tenta di aggiornare un valore di chiave in una riga e a tale valore fanno riferimento chiavi esterne in righe esistenti in altre tabelle, tutti i valori che compongono la chiave esterna verranno anch'essi aggiornati al nuovo valore specificato per la chiave.

Politiche di reazione Sintassi: ON DELETE { NO ACTION CASCADE SET NULL SET DEFAULT } ON UPDATE { NO ACTION CASCADE SET NULL SET DEFAULT } ON DELETE SET NULL: Specifica che se si tenta di eliminare una riga contenente una chiave a cui fanno riferimento chiavi esterne in righe esistenti in altre tabelle, tutti i valori che compongono la chiave esterna presenti nelle righe a cui si fa riferimento verranno impostati su NULL. NOTA: Per l'esecuzione di questo vincolo è necessario che le colonne chiave esterna ammettano i valori Null.

Politiche di reazione Sintassi: ON DELETE { NO ACTION CASCADE SET NULL SET DEFAULT } ON UPDATE { NO ACTION CASCADE SET NULL SET DEFAULT } ON UPDATE SET NULL: Specifica che se si tenta di aggiornare una riga contenente una chiave a cui fanno riferimento chiavi esterne in righe esistenti in altre tabelle, tutti i valori che compongono la chiave esterna presenti nelle righe a cui si fa riferimento verranno impostati su NULL. NOTA: Per l'esecuzione di questo vincolo è necessario che le colonne chiave esterna ammettano i valori Null.

Politiche di reazione Sintassi: ON DELETE { NO ACTION CASCADE SET NULL SET DEFAULT } ON UPDATE { NO ACTION CASCADE SET NULL SET DEFAULT } ON DELETE SET DEFAULT: Specifica che se si tenta di eliminare una riga contenente una chiave a cui fanno riferimento chiavi esterne in righe esistenti in altre tabelle, tutti i valori che compongono la chiave esterna presenti nelle righe a cui si fa riferimento verranno impostati sul relativo valore predefinito. NOTE: In generale per l'esecuzione di questo vincolo è necessario che per tutte le colonne chiave esterna della tabella di destinazione sia disponibile una definizione predefinita.

Data Control Language (DCL) Il Data Contro Language è un linguaggio che permette di fornire o revocare agli utenti i permessi necessari per poter utilizzare i comandi di DML e DDL oltre agli stessi comandi DCL. All atto della creazione di un database l utente creatore ne diventa il proprietario. Gli altri utenti possono leggere le informazioni ma non modificare il DB. Per modificare i diritti di accesso è possibile utilizzare i comandi: GRANT REVOKE

Data Control Language (DCL) Concessione di privilegi: Il comando Grant fornisce uno o più permessi ad un determinato utente su un determinato oggetto del database GRANT ALL PRIVILEGES ON DATABASE Impiegati TO User1 [WITH GRANT OPTION] WITH GRANT OPTION specifica se il privilegio può essere trasmesso ad altri utenti Revoca di privilegi: Il comando Revoke revoca uno o più permessi ad un determinato utente su un determinato tipo di oggetti. Un utente può revocare solo privilegi che lui ha concesso REVOKE ALL PRIVILEGES ON Impiegati FROM User1