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

Documenti analoghi
Viste come strumenti di programmazione

Viste (relazioni derivate)

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

Stringhe di caratteri

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. Linguaggio di interrogazione per basi di dati relazionali

Definizione di domini

SQL. Dott.ssa Elisa Quintarelli

Laboratorio di Basi di Dati

Principi di Progettazione del Software a.a Il linguaggio SQL. Prof. Luca Mainetti Università del Salento

Principi di Progettazione del Software a.a Il linguaggio SQL. Linguaggi per DBMS

Laboratorio di Basi di Dati

SQL. Lezione 1. Docente: Alberto Belussi

Appunti dalle lezioni. Sistemi informativi e basi di dati. Il modello relazionale. SQL come DCL Utilizzo di un DBMS Reale.

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

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

SQL-DDL. Basi di Dati. Prof. Alfredo Cuzzocrea Università degli Studi di Trieste

Basi di Dati e Sistemi Informativi. Structured Query Language

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

Linguaggio SQL: fondamenti D B M G

Dichiarazione degli schemi in SQL DDL 1

Creazione di una tabella Modifica della struttura di una tabella Cancellazione di una tabella Dizionario dei dati Integrità dei dati

Elena Baralis 2007 Politecnico di Torino 1

Introduzione Basi di Dati. Orazio Battaglia

Il linguaggio SQL. Il linguaggio SQL

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL

Elena Baralis 2007 Politecnico di Torino 1

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

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

Laboratorio di Basi di Dati Per Bioinformatica

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

Laboratorio di Basi di Dati e Multimedia

Elena Baralis 2007 Politecnico di Torino D B M G M BG. Gestione delle tabelle. Linguaggio SQL: fondamenti. Creazione di una tabella (1/3)

SQL Sintassi Dei Comandi

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

Basi di Dati prof. Letizia Tanca

Il linguaggio SQL: DDL di base

Gestione delle tabelle

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

SQL. SQL (Structured Query Language) è un linguaggio di interrogazione per basi di dati relazionali

Laboratorio di Basi di Dati

Basi di dati - Laboratorio

Laboratorio di Basi di Dati e Web

SQL. Storia e standard

Sistemi di Elaborazione delle Informazioni

Corso di Informatica (Basi di Dati)

Corso di. Basi di Dati I. 7. Esercitazioni in SQL: Definizione e manipolazione dei dati

Corso di Basi di Dati A.A. 2015/2016

SQL: "storia" 31/05/2006 2

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

Corso di. Basi di Dati I. 7. Esercitazioni in SQL: Definizione e manipolazione dei dati

SQL: Concetti Base -Prima Parte-

Linguaggio SQL Descriviamo la notazione usata nel seguito:

IL MODELLO RELAZIONALE

5 SQL : Definizione e manipolazione dei dati

SQL: DDL, VI, Aggiornamenti e Viste

Modello Relazionale. Concetti e definizioni

Modello Relazionale. Esempio (Relazione) A x B. Introduzione. Relazione: definizione. I fattori del successo. Relazione

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

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a

Interpretazione delle query nidificate

Modulo 10: Basi di dati e loro gestione

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL: fondamenti. Il linguaggio SQL

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

SQL - Tipi di dato Il linguaggio SQL

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici

Inserimento. Cancellazione. Modifica. INSERT INTO Persone VALUES ('Mario',25,52) INSERT INTO Persone(Nome, Eta, Reddito) VALUES('Pino',25,52)

SQL. Storia un po piu in dettaglio. SQL: "storia" Tre livelli per SQL-2. Standard, dialetti, mercato

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

Basi di Dati Relazionali

DDL DML. Tipi di linguaggi per basi di dati. Si distinguono due categorie:

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

PRODOTTO CARTESIANO Caso Generale

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

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

Lezione 3. Il modello relazionale

Il linguaggio SQL costrutti DDL.

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

LABORATORIO di INFORMATICA

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati Introduzione a SQL

Interrogazioni nidificate

Structured Query Language

Primo Compitino di Basi di Dati

Caratteristiche dei linguaggi per Database

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

SQL. (Structured Query Language) Eugenio Di Sciascio

Dr. C. d'amat. SQL: cenni storici

ESERCITAZIONE: Fornitore-Fornisce-Articolo

Informatica documentale Laurea in Scienze della Comunicazione Prova scritta del 25 giugno Cognome e nome: Matricola:

Uno dei principali motivi del successo delle basi di dati: è diventato uno standard

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

Corso di Informatica Linguaggio SQL prima parte

Manuale SQL. Manuale SQL - 1 -

Linguaggio SQL. Structured Query Language

Fondamenti di Informatica A. A / 1 9

Transcript:

SQL SQL (pronunciato anche come l inglese sequel): acronimo di Structured Query Language (linguaggio di interrogazione strutturato) Linguaggio completo che presenta anche proprietà di: DDL (Data Definition Language) DML (Data Manipulation Language) Con SQL è quindi possibile: definire schemi di basi di dati eseguire query modificare il contenuto della base di dati SQL 1986 Prima standardizzazione 1989 SQL-89 1992 SQL-2 (SQL-92): versione attualmente diffusa (e tuttora non completamente implementata) 1998 SQL-3 (SQL-99): nuovo standard proposto con funzionalità avanzate (DB a oggetti, operazioni ricorsive ecc.) 3 implementazioni disponibili: Entry SQL Intermediate SQL Full SQL Definizione dei dati Esistono 6 domini elementari: Character Bit Tipi numerici esatti Tipi numerici approssimati Data e ora Intervalli temporali Character rappresenta singoli caratteri o stringhe character [varying] [(Lunghezza)] [character set NomeFamigliaCaratteri] character(20) stringa di lunghezza 20 character varying(100) stringa di lunghezza max. 100 character(20) character set Greek stringa di lunghezza 20 in caratteri greci 1

Bit rappresenta attributi o vettori di attributi che possono assumere solo valori 0 o 1. Utilizzato per implementare flag. bit [varying] [(Lunghezza)] Intervalli Temporali interval UnitàDiTempo1[(Precisione)] [to UnitàDiTempo2[(Precisione)]] UnitàDiTempo1 e UnitàDiTempo2 specificano le unità di misura da usare dalla più lunga alla meno lunga NB Definizione valida nei 2 sottointervalli [year,month] e [day,second]. interval day(4) to second(6) rappresenta l intervallo [0,10000) giorni e secondi con precisione al milionesimo di s. Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata numeric [(Precisione [,Scala])] decimal [(Precisione [,Scala])] integer smallint Precisione specifica il numero di cifre significative Scala quante cifre si rappresentano dopo la virgola decimal(4) numeri da -9999 a 9999 numeric(6,3) numeri da -999.999 a 999.999 La precisione degli interi dipende dall implementazione Tipi numerici approssimati rappresentano valori reali approssimati float [(Precisione)] double precision real Precisione specifica il numero di cifre dedicato alla mantissa (la precisione dell esponente dipende dall implementazione) real e double precision hanno precisione prestabilita, una doppia rispetto all altra. Data e ora tipi utilizzati per rappresentare istanti di tempo date time [(Precisione)][with time zone] timestamp [(Precisione)][with time zone] Ciascun tipo è divisibile in campi. date ammette come campi year, month e day time i campi hour, minute, second timestamp tutti i campi da year a second I campi sono divisi da : 20:03:04+1:00 2

Definizione di schemi E possibile definire uno schema di base di dati come collezione di oggetti. create schema[nomeschema] [[authorization] Autorizzazione]] {DefElementoSchema} Autorizzazione rappresenta il nome dell utente proprietario dello schema Definizione di tabelle Una tabella SQL è costituita da una collezione ordinata di attributi e da un insieme di vincoli create table NomeTabella ( NomeAttributo o [ValDefault] [Vincoli] {,NomeAttributo o [ValDefault] [Vincoli] } AltriVincoli ) Una tabella è inizialmente vuota e chi la crea possiede tutti i diritti su di essa Definizione di tabelle Esempio create table Dipartimento ( Nome char(20) primary key, Indirizzo char(50), Città char(20) ) Definizione di domini Come nei linguaggi ad alto livello (es. C) è possibile definire nuovi domini (tipi di dati) a partire da quelli predefiniti, anche se il costruttore è più limitato. create domain Nomeo as TipodiDato [ValDefault] [Vincolo] Non si possono creare array o strutture poiché il modello relazionale impone che gli attributi siano definiti su un dominio elementare. E però possibile associare dei vincoli ad un dominio definito dall utente. Se si modifica la definizione di un dominio, la modifica si propaga a tutte le tabelle. 3

Definizione di domini: esempio Valori di default CREATE DOMAIN Voto AS SMALLINT DEFAULT NULL CHECK ( value >=18 AND value <= 30 ) Si possono specificare valori di default per un attributo quando, al momento della creazione di una nuova tupla, in un campo non viene inserito alcun valore. default < GenericoValore user null > GenericoValore è un valore compatibile col dominio user è il nome dell utente che aggiorna la tabella null corrisponde al valore di default di base Valori di default Vincoli intrarelazionali Un nuovo default (es. nella definizione di un tipo a partire da un altro) sostituisce il precedente Es. NumeroFigli smallint default 0 impone il valore 0 quando non viene specificato il valore dell attributo. I più semplici vincoli intrarelazionali predefiniti sono: not null indica che il valore nullo non è ammesso su uno specifico attributo, cioè che sia inserito in ogni caso un valore, salvo che non sia già definito un valore di default. SQL non distingue i diversi tipi di valore nullo. Se è necessario, bisogna definire opportuni domini. 4

Vincoli intrarelazionali unique(attributo {, Attributo}) indica che l insieme di attributi deve essere una superchiave per la tabella. primary key(attributo {, Attributo}) definisce la chiave primaria. Può essere una sola. Tutti gli attributi sono not null. Vincoli intrarelazionali Nome character(20) not null, Cognome character(20) not null, unique (Nome, Cognome) impone che non esistano due tuple in cui sia i valori di Nome che di Cognome siano uguali Nome character(20) not null unique, Cognome character(20) not null unique impone che non esistano due tuple che abbiano uguali valori di Nome o di Cognome 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 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) ) 5

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 deve associare una politica alle operazioni che possono causare inconsistenza: on < delete update > <cascade set null set default no action> subito dopo la specifica del riferimento 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. 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. Modifica degli schemi E possibile modificare gli schemi con i comandi alter e drop. alter consente di modificare domini e schemi di tabelle. alter domain Nomeo < set default ValDefault drop default add constraint DefVincolo drop constraint NomeVincolo > 6

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 siano rimossi insieme a tutti gli oggetti da essi dipendenti. Quindi, ATTENZIONE!!!! 7