Corso di Informatica (Basi di Dati)

Похожие документы
SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Laboratorio di Basi di Dati e Web

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

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

Laboratorio di Basi di Dati

Corso sul linguaggio SQL

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

Basi di Dati Relazionali

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

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

Corso sul linguaggio SQL

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

Il linguaggio SQL: DDL di base

Gestione delle tabelle

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

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

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

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

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

SQL: Concetti Base -Prima Parte-

SQL Sintassi Dei Comandi

Definizione di domini

Basi di Dati prof. Letizia Tanca

Linguaggio SQL. Structured Query Language

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

Basi di Dati: Corso di laboratorio

Informatica (Basi di Dati)

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

SQL. Storia e standard

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro)

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

SQL. Alcune note sulla definizione dei dati

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

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

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

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

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

Informatica (Basi di Dati)

Informatica per le discipline umanistiche 2 lezione 10

Corso di Informatica Generale 1 IN1. Linguaggio SQL

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

Schema della base di dati del Catalogo dei Dati della Pubblica Amministrazione Renzo Orsini

Descrizione del linguaggio SQL Definizione del database. Giovanna Rosone 02-03/03/2010

DUE GRUPPI DI COMANDI

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

Corso di Informatica (Basi di Dati)

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

Basi di dati 9 febbraio 2010 Compito A

SQL (STRUCTURED QUERY LANGUAGE)

SQL. Lezione 1. Docente: Alberto Belussi

Basi di dati Il linguaggio SQL

Basi di dati Il linguaggio SQL

BASE DI DATI: sicurezza. Informatica febbraio ASA

Linguaggio SQL Descriviamo la notazione usata nel seguito:

SQL (STRUCTURED QUERY LANGUAGE)

Organizzazione degli archivi

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

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

ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 2

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

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

Basi di Dati: Corso di laboratorio

1. Schema concettuale della base di dati Lo schema concettuale (o statico) è uno dei due schemi del progetto concettuale di un sistema informativo.

Vincoli di integrità

Corso di Laboratorio di Basi di Dati

Archivi e Basi di Dati

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

Basi di Dati Corso di Laura in Informatica Umanistica

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti:

Volumi di riferimento


User Tools: DataBase Manager

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

Il Modello Relazionale

I Sistemi Informativi

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

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:

Progettazione di Database. Un Esempio

MODELLO RELAZIONALE. cesarini-bdsi mod relazionale 1 MODELLO RELAZIONALE

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

Транскрипт:

Corso di Informatica (Basi di Dati) Lezione 6 (15 gennaio 2009) Linguaggio SQL: Data Definition Language (DDL) Da: Atzeni, Ceri, Paraboschi, Torlone - Basi di Dati Lucidi del Corso di Basi di Dati 1, Prof. Carlo Batini, Laurea in Informatica, AA 2007-2008 1

Introduzione Cos è SQL (Structured Query Language)? E un linguaggio che consente di gestire le Basi di Dati relazionali. Esso è contemporaneamente un: Data Definition Language (DDL), cioè consente di creare lo schema della Base di Dati (e delle relazioni) Data Manipulation Language (DML), cioè consente di manipolare le istanze della Base di Dati 2

Introduzione Vedremo, in questa lezione, come SQL (parte DDL) permetta di: definire un dominio (DOMAIN) creare uno schema di Base di dati (SCHEMA) creare uno schema di (TABLE) effettuare modifiche degli schemi di Base di Dati e di Nota Bene: in questa e nelle successive slide le parole scritte in maiuscolo (salvo indicazione contraria) sono parole appartenenti al linguaggio SQL 3

Definizione dei domini Un dominio è fondamentalmente un tipo di dato (data type). Il DDL di SQL prevede: domini elementari predefiniti domini definiti dall utente (di cui non ci occuperemo ) Nel seguito verranno presentati i domini elementari indicandone la sintassi SQL. 4

I domini elementari I domini elementari di SQL sono: CHAR(n) o CHARACTER(n) per stringhe di n caratteri (anche uno solo) VARCHAR(n) per stringhe di lunghezza variabile BIT(n) per stringhe di n bit (anche uno solo), usati per specificare una sequenza di n proprietà tramite flag (0 per proprietà falsa e 1 per proprietà falsa) 5

I domini elementari I domini elementari di SQL sono: BOOLEAN per singoli valori booleani (restrizione di BIT(n)) INTEGER e SMALLINT per gli interi DECIMAL(i,j) o NUMERIC(i,j) per i decimali; i il numero di cifre significative e j il numero di cifre dopo la virgola (es. se ho un dominio DECIMAL(5,1), 34532 corrisponde a 3453,2) 6

I domini elementari I domini elementari di SQL sono: FLOAT, DOUBLE PRECISION e REAL per i numeri in virgola mobile (mantissa + esponente) DATE per la data strutturata in YEAR, MONTH, DAY TIME per l ora strutturata in HOUR, MINUTE, SECOND TIMESTAMP per data + ora 7

Base di Dati La sintassi SQL per creare uno schema di Base di Dati è la seguente: CREATE SCHEMA <schemaname> seguito dalle definizioni delle tabelle (con domini e vincoli) che costituiscono la Base di Dati. <schemaname> è il nome che si vuole associare alla Base di Dati come identificatore. 8

Base di Dati NOTA: non è necessario però definire tutte le tabelle (domini e vincoli) insieme a CREATE SCHEMA. Infatti le tabelle si possono aggiungere in una fase successiva (cioè dopo avere eseguito il comando CREATE SCHEMA) con il comando ALTER (che però non vedremo ). Il comando CREATE SCHEMA da solo crea dunque una Base di Dati senza tabelle. 9

Il comando SQL per definire uno schema di è CREATE TABLE che: crea un istanza vuota della tabella (cioè senza ennuple) permette di specificare attributi, domini, valori di default e vincoli di integrità La sintassi di CREATE TABLE è riportata nelle slide successive. 10

Definizione di una tabella con N attributi (e i relativi N domini) CREATE TABLE <tablename>( <attrib1> <domain1>, <attrib2> <domain2>,, <attribn> <domainn> ) 11

Esempio di definizione di tabella con 5 attributi (e i relativi 5 domini) CREATE TABLE Impiegati( Matricola CHAR(6), Cognome CHAR(20), Nome CHAR(20), Dipartimento CHAR(15), Stipendio NUMERIC(9) ) 12

L effetto del comando CREATE TABLE dell esempio precedente è di creare la tabella vuota avente schema: Impiegati Matricola Cognome Nome Stipendio Dipartimento 13

In CREATE TABLE per ogni attributo può essere specificato un valore di default nel seguente modo: CREATE TABLE <tablename>( <attrib1> <domain1> [DEFAULT <val1>], <attrib2> <domain2> [DEFAULT <val2>],, <attribn> <domainn> [DEFAULT <valn>] ) DEFAULT <val*> tra parentesi quadre significa che è un elemento opzionale (i valori di default possono anche non essere specificati) 14

Se per un attributo A di una R è definito un valore di default, quando viene inserita una ennupla che non specifica un valore per A, viene assunto il valore di default di A. In caso contrario viene assunto il valore NULL. 15

Esempio di creazione di tabella con un valore di default per l attributo Stipendio: CREATE TABLE Impiegati( Matricola CHAR(6), Cognome CHAR(20), Nome CHAR(20), Dipartimento CHAR(15), Stipendio NUMERIC(9) DEFAULT 0 ) 16

L effetto del comando CREATE TABLE dell esempio precedente è di creare la tabella vuota avente schema: Impiegati Matricola Cognome Nome Stipendio Dipartimento Il successivo inserimento della ennupla (2345, Rossi, Mario,, Vendite), che non specifica il valore dell attributo Stipendio, comporta l effettivo inserimento... 17

della ennupla (2345, Rossi, Mario, 0, Vendite) Impiegati Matricola Cognome Nome Stipendio Dipartimento 2345 Rossi Mario 0 Vendite Mentre l inserimento della ennupla (2346, Neri, Piero, 2000, ) che non specifica il valore dell attributo Dipartimento, comporta l effettivo inserimento... 18

della ennupla (2346, Neri, Piero, 2000, NULL), dal momento che per l attributo Dipartimento non è stato specificato un valore di default Impiegati Matricola Cognome Nome Stipendio Dipartimento 2345 Rossi Mario 0 Vendite 2346 Neri Piero 2000 NULL 19

In CREATE TABLE per ogni attributo può essere specificato il vincolo di valore non nullo nel seguente modo: CREATE TABLE <tablename>( <attrib1> <domain1> [NOT NULL], <attrib2> <domain2> [NOT NULL],, <attribn> <domainn> [NOT NULL] ) NOT NULL tra parentesi quadre significa che è un elemento opzionale (se non viene specificato significa che si ammettono valori nulli per l attributo) 20

Se per un attributo A di una R è stato definito il vincolo di NOT NULL, per A non sono ammessi valori nulli. In tale caso si può inserire in R una ennupla che non specifica il valore per A solo se per A è stato definito anche un valore di DEFAULT. In caso contrario il valore di A va sempre specificato. 21

Esempio di creazione di tabella con un vincolo NOT NULL per Cognome e Nome: CREATE TABLE Impiegati( Matricola CHAR(6), Cognome CHAR(20) NOT NULL, Nome CHAR(20) NOT NULL, Dipartimento CHAR(15), Stipendio NUMERIC(9) DEFAULT 0 ) 22

In CREATE TABLE possono essere specificati i vincoli di chiave nel seguente modo: CREATE TABLE <tablename>( <attrib1> <domain1> [UNIQUE], <attrib2> <domain2> [UNIQUE],, <attribn> <domainn> [UNIQUE], [UNIQUE(K 1 )], )... [UNIQUE(K M )] K 1, K M sono i sottoinsiemi di almeno due attributi su cui si vogliono definire delle chiavi 23

Esempio di creazione di tabella con un vincolo di chiave per Matricola e uno per (Cognome,Nome,Dipartimento): CREATE TABLE Impiegati( Matricola CHAR(6) UNIQUE, Cognome CHAR(20) NOT NULL, Nome CHAR(20), Dipartimento CHAR(15), Stipendio NUMERIC(9) DEFAULT 0, UNIQUE(Cognome,Nome,Dipartimento) ) 24

Attenzione! Il valore NULL è considerato sempre diverso nelle diverse ennuple. Quindi le due ennuple (NULL, Rossi, Mario) e (NULL, Rossi, Mario) sono considerate diverse! 25

In CREATE TABLE può essere specificato un solo vincolo di chiave primaria nel seguente modo: CREATE TABLE <tablename>( <attrib1> <domain1> [PRIMARY KEY], <attrib2> <domain2> [PRIMARY KEY],, <attribn> <domainn> [PRIMARY KEY], [PRIMARY KEY(K)], ) K è il sottoinsieme di almeno due attributi su cui si vuole definire la chiave primaria. 26

Esempio di creazione di tabella con un vincolo di chiave primaria su Matricola: CREATE TABLE Impiegati( Matricola CHAR(6) PRIMARY KEY, Cognome CHAR(20) NOT NULL, Nome CHAR(20), Dipartimento CHAR(15), Stipendio NUMERIC(9) DEFAULT 0 ) 27

Esempio di creazione di tabella con un vincolo di chiave primaria per (Cognome,Nome,Stipendio) e uno di chiave su Matricola: CREATE TABLE Impiegati( Matricola CHAR(6) UNIQUE, Cognome CHAR(20) NOT NULL, Nome CHAR(20), Dipartimento CHAR(15), Stipendio NUMERIC(9) DEFAULT 0, PRIMARY KEY(Cognome,Nome,Dipartimento) ) 28

In CREATE TABLE può essere specificato un qualsiasi numero di vincoli di chiave esterna nel seguente modo: CREATE TABLE <tablename>( <attrib1> <domain1> [REFERENCES <mastertable1>(<attrmaster11>)], <attrib2> <domain2> [REFERENCES <mastertable2>(<attrmaster12>)],, <attribn> <domainn> [REFERENCES <mastertable1>(<attrmaster1n>)], [FOREIGN KEY(<attrList1>) REFERENCES <mastertable21>(<attrmlist1>)], [FOREIGN KEY(<attrListM>) REFERENCES <mastertable2m>(attrmlistm)] ) 29

Si supponga ad esempio di avere creato una Base di Dati con le seguenti tre relazioni: Auto(Provincia,Numero,Cognome,Nome) Vigili(Matricola,Cognome,Nome) Infrazioni(Codice,Data,Vigile,Provincia,Numero) e di aver già creato gli schemi per Auto e Vigili su cui sono state definite due chiavi primarie, rispettivamente (Provincia,Numero) e (Matricola). La slide successiva riporta un esempio di CREATE TABLE che crea lo schema di Infrazioni in cui vengono definite la chiave esterna sull attributo Vigile rispetto alla master Vigili (e alla sua chiave primaria Matricola) e la chiave esterna sull insieme di attributi (Provincia,Numero) rispetto alla master Auto (e alla sua chiave primaria (Provincia,Numero)). 30

Esempio di creazione di tabella con vincoli di chiave esterna su (Vigile) e (Provincia, Numero) CREATE TABLE Infrazioni( Codice CHAR(6) PRIMARY KEY, Data DATE NOT NULL, Vigile INTEGER NOT NULL REFERENCES Vigili(Matricola), Provincia CHAR(2), Numero CHAR(6), FOREIGN KEY(Provincia,Numero) REFERENCES Auto(Provincia,Numero) ) 31