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

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

Corso di Basi di Dati

Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata

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

SQL: Concetti Base -Prima Parte-

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

Stringhe di caratteri

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

Equivalenza di espressioni. Equivalenze. Equivalenze. Due espressioni sono equivalenti se: Atomizzazione delle selezioni σ F1 F2 (E) σ F1 (σ F2 (E))

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

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

SQL. Lezione 1. Docente: Alberto Belussi

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

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

Viste come strumenti di programmazione

Dichiarazione degli schemi in SQL DDL 1

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

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

Basi di Dati e Sistemi Informativi. Structured Query Language

Laboratorio di Basi di Dati

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

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

Il linguaggio SQL. Il linguaggio SQL

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL

Algebra con valori nulli

Il linguaggio SQL: DDL di base

Basi di Dati prof. Letizia Tanca

Laboratorio di Basi di Dati e Multimedia

Viste (relazioni derivate)

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

Laboratorio di Basi di Dati Per Bioinformatica

Linguaggio SQL: fondamenti D B M G

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

Laboratorio di Basi di Dati e Multimedia

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

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

SQL. Storia e standard

Elena Baralis 2007 Politecnico di Torino 1

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

Introduzione alle Basi di Dati

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

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

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

Corso di Informatica (Basi di Dati)

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

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

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

SQL: "storia" 31/05/2006 2

Basi di dati - Laboratorio

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

Gestione delle tabelle

Basi di Dati Relazionali

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

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

Sistemi di Elaborazione delle Informazioni

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

Data Definition in MySQL

Laboratorio di Basi di Dati

Introduzione Basi di Dati. Orazio Battaglia

Laboratorio di Basi di Dati e Web

ESERCITAZIONE: Fornitore-Fornisce-Articolo

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

Le Basi di Dati Attive

SQL Sintassi Dei Comandi

5 SQL : Definizione e manipolazione dei dati

Definizione di domini

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

Il linguaggio SQL: DDL di base

IL MODELLO RELAZIONALE

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

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

SQl come DML. Angelo Chianese,, Vincenzo Moscato, Antonio Picariello,, Lucio Sansone

Corso di Informatica Linguaggio SQL prima parte

SQL (STRUCTURED QUERY LANGUAGE)

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

La progettazione logica

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

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

Modulo 10: Basi di dati e loro gestione

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

Basi di Dati: Corso di laboratorio

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

Laboratorio di Basi di Dati Introduzione a SQL

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

Il linguaggio SQL costrutti DDL.

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

Modello Relazionale. Concetti e definizioni

Laboratorio di Basi di Dati

PRODOTTO CARTESIANO Caso Generale

Linguaggio SQL: fondamenti D B M G

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

Structured Query Language

Transcript:

SQl come DDL Angelo Chianese,, Vincenzo Moscato, Antonio Picariello,, Lucio Sansone Basi di dati per la gestione dell'informazione 2/ed McGraw-Hill Capitolo 2 Appunti dalle lezioni SQL come DDL Sistemi informativi e basi di dati La Progettazione Concettuale SQL come DML Il modello relazionale La Progettazione Logica SQL come DCL Utilizzo di un DBMS Reale La Progettazione Fisica Strumenti CASE Forme normali Programmazione Transazioni e tecnologie di supporto Basi di dati direzionali Basi di dati distribuite 2 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL

SQL Sviluppato presso il Centro di Ricerca dell IBM Nasce come SeQueL Diventa poi SQL: Structured Query Language Contiene: DDL (Data Definition Language) DML (Data Manipulation Language) DCL (Data Control Language). I sistemi commerciali spesso offrono una serie di strumenti che estendono le funzionalità definite a livello di standard. 3 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL Lo standard SQL E un linguaggio di tipo dichiarativo SQL Base SQL-86 - costrutti base SQL-89 integrità referenziale SQL-2 SQL- 92: entry level,, intermediate level,, full SQL-3 SQL-99 estensione ad oggetti, trigger,.. SL-2003 Estensione del modello a oggetti, SQL/XML,. La sua forza sta nel fatto di essere uno standard I sistemi commerciali sono classificati in base all aderenza aderenza allo standard 92 Entry Level (SQL-89) Intermediate Level Full SQL (SQL-92) 4 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL

In SQL: TABLE Tabella Relazione ROW Riga Tupla COLUMN Colonna Attributo SQL come DDL ha tre comandi fondamentali: Create Database, Schema, Table,, Domain, Constraint,. Alter Database, Schema, Table,, Domain, Constraint,. Drop Database, Schema, Table,, Domain, Constraint,. 5 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL Database vs Schema Nelle prime versioni tutte le tabelle erano considerate parte del medesimo schema. Oggi, le tabelle sono spesso raggruppate in SCHEMI (insieme di oggetti correlati) MySQL PostgreSQL DB1 DB2 DB3 DB1 DB2 DB3 SCHEMA 1 SCHEMA N 6 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL

Domini Elementari Specificare il tipo di un dato significa già imporre un vincolo Vincoli di dominio Tutti i domini condividono il valore NULL BIT Permette di rappresentare dati a due valori o stringhe di dati a due valori (in realtà a TRE valori: vero falso NULL) bit [varying [ varying] ] [(lunghezza)] Varbit(12) Carattere Permette di rappresentare singoli caratteri o stringhe. Le stringhe possono essere a lunghezza fissa oppure variabile. character [varying varying] ] [(lunghezza)] [character [ set famiglia] Character character(12) char char(12) character varying(12) - Varchar(12) 7 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL Domini Elementari Tipi numerici esatti: permettono di rappresentare valori interi o valori in virgola fissa. Numeric [(Precisione[,Scala])] numeric(6,3) [-999.999,999.999][ Decimal [(Precisione[,Scala])] La differenza tra numeric e decimal è che la precisione per numeric è un requisito esatto, mentre per decimal è un requisito minimo. Integer Smallint L unico vincolo implementativo è che la precisione del dominio integer sia del dominio smallint. 8 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL

Domini Elementari Tipi numerici approssimati: float [(Precisione)] la precisione è intesa come numero di cifre della mantissa. double precision real La precisione di double è doppia rispetto a real. Data e Ora: date record of {year month day} time record of {hour minute second} timestamp date+time Il valore NULL è immaginato come condiviso tra i vari domini 9 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL Domini Elementari Intervalli temporali: interval PrimaUnita ditempo [to UltimaUnita ditempo ditempo] interval year to month indica che gli intervalli vanno misurati in numero di anni e di mesi. SQL-99 ha introdotto Boolean precedentemente realizzato tramite il tipo bit (varbit ( varbit), non implementato da molti sistemi Blob (binary long object) Cblob (character long object) 10 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL

Create Domain Utile per apportare velocemente modifiche NON E un costruttore di di tipo CREATE DOMAIN ndom as Tipo [default] [Vincolo] CREATE DOMAIN tipo_cf as CHAR(16) NOT NULL CREATE DOMAIN NFIGLI as SMALLINT 0 11 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL Creazione di Tabelle create table nome ( NAttr Dom [ValoreDef [ ValoreDef] [vincoli [ vincoli] {,NAttr Dom [ValoreDef [ ValoreDef] [vincoli [ vincoli]} [Altri Vincoli] ) Notazione. AZIENDA.DIP.Nome create table Dip ( Nome varchar(20), Citta varchar(20)) 12 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL

Primary Key Indica che l attributo l (o gli attributi) rapprsenta una chiave primaria per la tabella. Può essere espresso una sola volta per tabella create table Dip ( Nome varchar(20) Primary Key, Citta varchar(20)) create table Dip ( Nome varchar(20), Citta varchar(20), Primary Key(Nome)) create table Dip ( Nome varchar(20), Citta varchar(20), CONSTRAINT PK_DIP PRIMARY KEY (Nome)) 13 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL Primary Key Se la primary key è composta da due attributi: Create table Impiegato ( Nome varchar(20), Cognome varchar(20), primary key (Cognome,Nome) Create table Impiegato ( Nome varchar(20), Cognome varchar(20), CONSTRAINT PK_IMP PRIMARY KEY (Cognome,Nome) 14 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL

Unique Indica nella tabella non possono esistere due righe con valori identici su tale attributo. Create table Impiegato ( cognome varchar(20) unique, nome varchar(20)) Create table Impiegato ( cognome varchar(20), nome varchar(20), unique(cognome,nome)) Create table Impiegato ( cognome varchar(20), nome varchar(20), constraint UNQ_Cog_Nome unique(cognome,nome)) 15 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL Not Null indica che l attributo l non può assumere valore NULL. create table Dip ( Nome varchar(20) Not Null, Citta varchar(20)) create table Dip ( Nome varchar(20), Citta varchar(20), Not Null(Nome)) create table Dip ( Nome varchar(20), Citta varchar(20), CONSTRAINT NN_Nome Not Null(Nome)) 16 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL

Vincoli Intrarelazionali I vincoli posso essere combinati Create table Impiegato ( matricola char(4), cognome varchar(20) Not Null, nome varchar(20), constraint UN_COG unique(cognome), constraint PK_MATR Primary Key(matricola)) 17 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL Vincoli Intrarelazionali generici CHECK: Utilizzato per specificare un vincolo di tupla generico Create table IMP ( MATRICOLA char(4), COGNOME varchar(20) Not Null, NOME varchar(20) Not Null, STIPENDIO integer default 1000 not null, constraint UN_COG unique(cognome,nome), constraint PK_MATR Primary Key(matricola), constraint IMP_STIP_MIN CHECK(STIPENDIO > 800)) 18 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL

Vincoli Interrelazionali Tratteremo i vincoli di integrità referenziale (detti anche vincoli di riferimento). In SQL esiste il vincolo foreign key. Crea un legame tra l attributo l della tabella corrente (interna) e un attributo di un altra tabella (esterna) (tipicamente alla chiave di questa). In alcuni casi è richiesto che l attributo l della tabella esterna sia definito unique. 19 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL Vincoli Integrità Referenziale Dipartimento (Nome ( Nome,Citta Citta) Impiegato(Matricola Matricola,Cognome, Dipartimento) Impiegato tabella interna su di essa viene definito il vincolo) Dipartimento tabella esterna ( deve esistere all atto atto della definizione del vincolo Dipartimento (Nome ( Nome,Citta Citta) Impiegato(Matricola Matricola,Cognome, Dipartimento : Dipartimento.Nome) La violazione può essere a livello di tabella interna (inserimento e modifica) esterna (cancellazione e modifica) 20 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL

Vincoli Integrità Referenziale Violazione sulla tabella interna: L operazione viene semplicemente impedita. Violazione sulla tabella esterna: restrict / no action cascade set null set default 21 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL Vincoli Integrità Referenziale Create table Dipartimento ( CodeDip char(4) primary key, Nome varchar(20)) create table IMP( Nome char(20), Cognome char(20), Dipartimento char(4) references Dipartimento(CodeDip CodeDip) on delete set null on update cascade) create table IMP ( Nome char(20), Cognome char(20), Dipartimento char(4), constraint fk_imp_dip foreign key (Dipartimento) references Dipartimento(CodeDip CodeDip) ) on delete set null on update cascade) 22 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL

Indici Gli indici rappresentano uno strumento prezioso per velocizzare l accesso l ai dati. create [unique [ unique] index NomIdx on NomeTable (ListaAttributi ListaAttributi) unique indica che nella tabella non sono possibili righe che assumono lo stesso valore su ListaAttributi (che quindi è una chiave eventualmente non minimale) L ordine in cui sono dati gli attributi è importante. create unique index ind onto Anagrafica (Cognome,Nome) drop index Nomidx 23 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL Altri CREATE INDEX VIEW ASSERTION (non implementato da molti DB) TRIGGER 24 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL

Modifica alter domain nome <set default.. drop default add constraint drop constraint > alter table nome <alter column set default drop default add constraint drop constraint add column drop column> alter table Dipartimento add column NroUffici integer(4) 25 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL Modifica Drop: : Permette di rimuovere schemi, tabelle etc. drop <schema domain table view assertion > [restrict cascade] restrict: specifica che il comando deve essere eseguito solo in presenza di oggetti cui non fanno riferimento altri oggetti. cascade tutti gli oggetti specificati sono rimossi, innestando una reazione a catena. 26 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL

Cataloghi Relazionali Si supponga di avere creato uno schema e di aver creato tutta una serie di oggetti. Come faccio a vedere tutti gli oggetti definiti? Ogni DBMS mantiene alcune tabelle in cui sono riportate le descrizione degli oggetti creati (ad es. le tabelle create). Esiste un Definition_Schema (TABLES, COLUMNS, DOMAINS, ) 27 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL Esempio create table DIPARTIMENTO ( CODICE CHAR(4) not null, NOME VARCHAR(20) null, constraint PK_DIPARTIMENTO primary key (CODICE)); create table SEDE ( CITTA VARCHAR(20) not null, INDIRIZZO VARCHAR(40) null, constraint PK_SEDE primary key (CITTA)); 28 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL

Esempio create table IMPIEGATO ( CF CHAR(16), CAPO_CF CHAR(16) null, DIPARTIMENTO CHAR(4) null, COGNOME VARCHAR(20) null, NOME VARCHAR(20) null, DATA_N DATE null, STIPENDIO INTEGER not null constraint CKC_STIPENDIO_IMPIEGAT check (STIPENDIO between '800' and '3000'), constraint PK_IMPIEGATO primary key (CF), constraint FK_CAPO_IS_IMPIEGATO foreign key (CAPO_CF) references IMPIEGATO (CF) on delete restrict on update restrict, constraint FK_IMPIEGATO_ESISTE_DIPARTIMENTO foreign key (DIPARTIMENTO) references DIPARTIMENTO (CODICE) on delete restrict on update restrict); 29 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL Esempio create table PROGETTO ( NOME VARCHAR(20) not null, RESPONSIBILE CHAR(16) null, BUDGET INTEGER null, constraint PK_PROGETTO primary key (NOME), constraint FK_PROGETTO_RESP_IMPIEGATO foreign key (RESPONSIBILE) references IMPIEGATO (CF) on delete restrict on update cascade); 30 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL

Esempio create table DIP_CITTA ( DIPARTIMENTO CHAR(4) not null, SEDE VARCHAR(20) not null, constraint PK_DIP_CITTA primary key (DIPARTIMENTO, SEDE), constraint FK_DIP_CITT_DIPARTIMENTO foreign key (DIPARTIMENTO) references DIPARTIMENTO (CODICE) on delete restrict on update restrict, constraint FK_DIP_CITT_SEDE foreign key (SEDE) references SEDE (CITTA) on delete restrict on update restrict, constraint FK_DIP_CITT_REFERENCE_SEDI foreign key (SEDE) references SEDI (CITTA) on delete restrict on update restrict); 31 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL Esempio create table LAVORA_SU ( IMPIEGATO CHAR(16) not null, PROGETTO VARCHAR(20) not null, constraint PK_LAVORA_SU primary key (IMPIEGATO, PROGETTO), constraint FK_LAVORA_S_REFERENCE_IMPIEGAT foreign key (IMPIEGATO) references IMPIEGATO (CF) on delete restrict on update restrict, constraint FK_LAVORA_S_REFERENCE_PROGETTO foreign key (PROGETTO) references PROGETTO (NOME) on delete restrict on update restrict ); 32 AA 2010-2011, Basi di Dati, Prof. Antonio d Acierno, dacierno.a@isa.cnr.it SQL come DDL