Vincoli interrelazionali

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
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Sistemi per il recupero delle informazioni
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
1 SQL come linguaggio di definizione di dati Eugenio Di Sciascio.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Basi di Dati prof. A. Longheu
Progettazione ER Un database universitario contiene informazioni riguardanti i professori (identificati dal codice fiscale) e informazioni relative ai.
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.
Istruzione SELECT (versione base)
Corso di Informatica (Basi di Dati)
1 Corso di Laurea in Biotecnologie Informatica (Basi di Dati) SQL: Data Manipulation Language (DML) Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi,
SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.
Laboratorio di Basi di Dati Introduzione ad Access 2ª Parte.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
SQL: Lezione 7 Nataliya Rassadko
SQL Per la modifica di basi di dati
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.
Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.
Equivalenza di espressioni
Vincoli di integrità generici Con i costrutti visti sinora, non è sempre possibile definire tutti i possibili vincoli di integrità. Per questo esiste listruzione.
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.
SQL SQL (pronunciato anche come l’inglese sequel) è l’acronimo di Structured Query Language (linguaggio di interrogazione strutturato) E’ un linguaggio.
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:
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.
SQL basato su ANSI (American National Standards Institute) – standard SQL SQL – Structured Query Language è un linguaggio dichiarativo e permette di comunicare.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, Capitolo 4:SQL 16/10/2002.
Basi di dati Claudia Raibulet
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Corso di Basi di Dati Il Linguaggio SQL Home page del corso:
sql: esempi di linguaggio sql nell'implementazione mysql
1 Il Linguaggio SQL Il Linguaggio SQL Prof. Lorenzo Vita, Ing. Luigi Testa.
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:
SQL.
Basi di dati - Modelli e linguaggi di interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo Torlone Copyright © The McGraw-Hill.
LINGUAGGIO S Q L breve presentazione curata da Aldo Pappalepore
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.
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.
Il linguaggio SQL.
SQL (III) Data Definition Language/ Data Manipulation Language.
MySQL Database Management System
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
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.
Basi di dati I Prof.ssa Rosalba Giugno Prof. Alfredo Pulvirenti SQL :Structured Query Language: SELECT (III) SQL (Slide tratte in parte da da Atzeni, Ceri,
Vincoli Interrelazionali Per i vincoli visti l’inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale,
Basi di dati I Prof.ssa Rosalba Giugno Prof. Alfredo Pulvirenti SQL: Amministrazione e Viste.
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 =
© 2015 Giorgio Porcu - Aggiornamennto 28/03/2015 UdA 1A Database Progettazione Fisica G IORGIO P ORCU
Prof. Lorenzo Vita, Ing. Luigi Testa
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.
Approfondimenti SQL.
Basi di Dati e Sistemi Informativi Esercitazione: Il Linguaggio SQL (DDL+DML) Home page del corso:
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
SQL Linguaggio per l’interrogazione di una base dati.
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.
Il linguaggio SQL (Structured Query Language) è il linguaggio standard per creare, manipolare e interrogare database relazionali. SQL non è case-sensitive:
Esercizi SQL Group by. CREATE TABLE dipendente (codDip CHAR(8) NOT NULL UNIQUE PRIMARY KEY, cognome CHAR(60) NOT NULL, nome CHAR(60) NOT NULL, stipendio.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere.
Transcript della presentazione:

Vincoli interrelazionali Vincoli di integrità referenziale In SQL si usa il vincolo di foreign key (chiave esterna) per creare un legame fra i valori di un attributo della tabella corrente (interna) e un attributo di un’altra tabella (esterna). Si impone che per ogni riga della tabella interna il valore dell’attributo sia presente nel corrispondente attributo della tabella esterna. L’attributo della tabella esterna deve essere unique. Se l’attributo è unico allora si usa references. Altrimenti si usa foreign key.

Vincoli interrelazionali Es. create table Impiegato ( Matricola character(6) primary key, Nome character(20) not null, Cognome character(20) not null, Dipart character(15) references Dipartimento(NomeDip), Stipendio numeric(9) default 0, unique (Cognome, Nome), foreign key(Nome, Cognome) references Anagrafica(Nome,Cognome) )

Vincoli Interrelazionali Per i vincoli visti l’inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale, quando la violazione avviene per un cambiamento apportato alla tabella esterna, si hanno diverse possibili reazioni associabili al comando di aggiornamento che causa l’inconsistenza. Modifica (comando update): cascade il nuovo valore dell’attributo della tabella esterna viene riportato su tutte le corrispondenti righe della tabella interna. set null all’attributo referente viene assegnato il valore nullo. set default all’attributo referente viene assegnato il valore di default. no action la modifica non viene consentita.

Vincoli Interrelazionali Cancellazione (comando delete): cascade tutte le corrispondenti righe della tabella interna vengono cancellate. set null all’attributo referente viene assegnato il valore nullo. set default all’attributo referente viene assegnato il valore di default. no action la cancellazione non viene consentita. Per applicare una delle politiche: on < delete | update > < cascade | set null | set default | no action > subito dopo la specifica del riferimento

Modifica degli schemi alter domain NomeDominio E’ possibile modificare gli schemi con i comandi alter e drop. alter consente di modificare domini e schemi di tabelle. alter domain NomeDominio < set default ValDefault | drop default | add constraint DefVincolo | drop constraint NomeVincolo >

Modifica degli Schemi alter table NomeTabella < alter column NomeAttributo < set default NuovoDefault | drop default >| add constraint DefVincolo | drop constraint NomeVincolo | add column NomeAttributo | drop column NomeAttributo > NB Quando si inserisce un nuovo vincolo, questo deve essere soddisfatto dai dati già presenti

Modifica degli Schemi Il comando drop permette di rimuovere dei componenti drop < schema | domain | table | view | assertion > NomeElemento [ restrict | cascade ] restrict specifica di non eseguire il comando in presenza di oggetti non vuoti. cascade implica che gli oggetti specificati vengano rimossi. Inoltre vengono rimossi tutti gli oggetti da essi dipendenti. Quindi, ATTENZIONE!!!!

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 viene passata all’ottimizzatore di interrogazioni (query optimizer) che fa parte del DBMS. Questo la analizza e la traduce nel linguaggio di interrogazione interno al DBMS. Per questo chi programma in SQL deve cercare di scrivere codice leggibile e facilmente modificabile, piuttosto che efficiente.

Interrogazioni select ListaAttributi (target list) L’istruzione base per le interrogazioni è select select ListaAttributi (target list) from ListaTabelle (clausola from) [ where Condizione ] (clausola where) Più in dettaglio: select AttrEspr [[as] Alias]{, AttrEspr [[as] Alias]} from Tabella [[as] Alias]{, Tabella [[as] Alias]} [ where Condizione ] Seleziona le righe che soddisfano la condizione where fra quelle appartenenti al prodotto cartesiano delle tabelle in ListaTabelle. Ogni colonna (tabella) può essere ridenominata con un alias.

Interrogazioni Es. Data una base di dati che contiene le tabelle: IMPIEGATO(Nome, Cognome, Dipart, Ufficio, Stipendio, Città) DIPARTIMENTO(Nome, Indirizzo,Città) select Stipendio/12 as SalarioMensile from Impiegato where Cognome = `Rossi` Il risultato è una tabella con una colonna rinominata SalarioMensile e tante righe quanti sono gli impiegati che si chiamano Rossi. Se si usa * dopo select si selezionano tutti gli attributi

Nome Età Persone Reddito Madre Maternità Figlio Luisa Anna Maria Olga Filippo Andrea Aldo Luigi Andrea 27 Maria 55 Anna 50 Filippo 26 Luigi Franco 60 Olga 30 Sergio 85 Luisa 75 Aldo 25 21 42 35 40 20 41 87 15 Padre Paternità Figlio Luigi Franco Sergio Olga Filippo Andrea Aldo

Selezione e proiezione Nome e reddito delle persone con meno di trenta anni PROJNome, Reddito(SELEta<30(Persone)) select nome, reddito from persone where eta < 30 select p.nome as nome, p.reddito as reddito from persone p where p.eta < 30

Interrogazioni su più tabelle Se si vogliono estrarre informazioni da più tabelle, si pone come argomento della clausola from una lista delle tabelle. Se si deve formulare un join, è possibile farlo esplicitando il collegamento fra le due tabelle nella clausola where. Es. Estrarre i nomi degli impiegati e le città dove lavorano. select Impiegato.Nome, Impiegato.Cognome, Dipartimento.Città from Impiegato, Dipartimento where Impiegato.Dipart = Dipartimento.Nome Attenzione: specificare una lista di tabelle nella clausola from senza specificare anche una condizione di join nella clausola where equivale ad eseguire la query sul prodotto cartesiano delle tabelle riportate nella lista!