Il linguaggio SQL: DDL di base



Похожие документы
Il linguaggio SQL: DDL di base

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

Gestione delle tabelle

Corso di Informatica (Basi di Dati)

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

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

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

Il linguaggio SQL: le basi

Basi di Dati: Corso di laboratorio

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

Corso sul linguaggio SQL

Definizione di domini

Laboratorio di Basi di Dati e Web

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

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

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

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

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

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

Corso sul linguaggio SQL

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

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

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

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

Basi di Dati Relazionali

Linguaggio SQL. Structured Query Language

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

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

Laboratorio di Basi di Dati

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

SQL Sintassi Dei Comandi

SQL. Alcune note sulla definizione dei dati

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro)

Vincoli di Integrità Approccio dichiarativo alla loro implementazione

Il linguaggio SQL: query innestate

Basi di Dati prof. Letizia Tanca

SQL: Concetti Base -Prima Parte-

Vincoli di Integrità

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

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

DBMS (Data Base Management System)

SQL. Storia e standard

Organizzazione degli archivi

Informatica per le discipline umanistiche 2 lezione 10

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:

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

DUE GRUPPI DI COMANDI

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

I Sistemi Informativi

SQL (STRUCTURED QUERY LANGUAGE)

Archivi e Basi di Dati

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

Corso di Informatica Generale 1 IN1. Linguaggio SQL

User Tools: DataBase Manager

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


Elena Baralis 2013 Politecnico di Torino 1

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

Linguaggio SQL. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti:

MODELLO RELAZIONALE. cesarini-bdsi mod relazionale 1 MODELLO RELAZIONALE

DB - Modello relazionale dei dati. DB - Modello Relazionale 1

Basi di Da( MySQL & MySQL Workbench. Anna Monreale

Basi di Dati: Corso di laboratorio

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

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

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione

I database relazionali (Access)

Al giorno d oggi, i sistemi per la gestione di database

Il modello relazionale dei dati

Istruzioni DML di SQL

BASE DI DATI: sicurezza. Informatica febbraio ASA

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

Il Modello Relazionale

Access. P a r t e p r i m a

SQL (STRUCTURED QUERY LANGUAGE)

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12

Dispensa di database Access

Progettazione di un Database

MAX, SUM, AVG, COUNT)

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati

Università degli Studi di Verona. Laboratorio di Basi di Dati

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

2104 volume III Programmazione

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

Volumi di riferimento

Introduzione ai database relazionali

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

SQL. Linguaggio di interrogazione per basi di dati relazionali. Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL:

Il Modello Relazionale

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

Basi di Dati Corso di Laura in Informatica Umanistica

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

SISTEMI INFORMATIVI AVANZATI -2010/ Introduzione

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

Informatica (Basi di Dati)

Introduzione a MySQL

Транскрипт:

Il linguaggio SQL: DDL di base Sistemi Informativi T Versione elettronica: 04.1.SQL.DDLbase.pdf SQL: caratteristiche generali SQL (Structured Query Language) èil linguaggio standard de facto per DBMS relazionali, che riunisce in sé funzionalità di DDL, DML e DCL SQL èun linguaggio dichiarativo (non procedurale), ovvero non specifica la sequenza di operazioni da compiere per ottenere il risultato SQL è relazionalmente completo, nel senso che ogni espressione dell algebra relazionale può essere tradotta in SQL inoltre SQL fa molte altre cose Il modello dei dati di SQL è basato su tabelle anziché relazioni: Possono essere presenti righe (tuple) duplicate In alcuni casi l ordine delle colonne (attributi) ha rilevanza il motivo è pragmatico (ossia legato a considerazioni sull efficienza) SQL adotta la logica a 3 valori introdotta con l Algebra Relazionale SQL: DDL di base Sistemi Informativi T 2 1

SQL: standard e dialetti Il processo di standardizzazione di SQL èiniziato nel 1986 Nel 1992 èstato definito lo standard SQL 2 (o SQL 92) da parte dell ISO (International Standards Organization), e dell ANSI (American National Standards Institute), rispettivamente descritti nei documenti ISO/IEC 9075:1992 e ANSI X3.135 1992 (identici!) Del 1999 èlo standard SQL:1999, che rende SQL un linguaggio computazionalmente completo (e quindi con istruzioni di controllo!) per il supporto di oggetti persistenti Allo stato attuale ogni sistema ha ancora un suo dialetto: supporta (in larga parte) SQL 2 ha già elementi di SQL:1999 ha anche costrutti non standard Quello che vediamo èla parte più diffusa SQL: DDL di base Sistemi Informativi T 3 Organizzazione del materiale La trattazione di SQL viene suddivisa in più parti come segue: DDL di base DML per gli operatori dell algebra e per le operazioni di modifica dei dati Per fare quello che si fa anche in algebra DML per il raggruppamento dei dati Per derivare informazioni di sintesi dai dati DML con blocchi innestati Per scrivere richieste complesse DDL per la definizione di viste e vincoli generici Per migliorare la qualità dei dati DCL per la definizione di transazioni Per eseguire modifiche multiple senza rischi di inconsistenze SQL: DDL di base Sistemi Informativi T 4 2

Data Definition Language (DDL) Il DDL di SQL permette di definire schemi di relazioni (o table, tabelle), modificarli ed eliminarli Permette di inoltre di specificare vincoli, sia a livello di tupla (o riga ) che a livello di tabella Permette di definire nuovi domini, oltre a quelli predefiniti Per vincoli e domini si può anche fare uso del DML (quindi inizialmente non si trattano completamente) Inoltre si possono definire viste ( view ), ovvero tabelle virtuali Altro ancora (ad es. schemi = spazi di nomi) si vedranno in laboratorio SQL: DDL di base Sistemi Informativi T 5 Creazione ed eliminazione di tabelle Mediante l istruzione CREATE TABLE si definisce lo schema di una tabella e se ne crea un istanza vuota Per ogni attributo va specificato il dominio E anche possibile impostare un eventuale valore di default e specificare dei vincoli Infine possono essere espressi altri vincoli a livello di tabella Mediante l istruzione DROP TABLE è possibile eliminare lo schema di una tabella (e conseguentemente la corrispondente istanza) DROP TABLE Imp SQL: DDL di base Sistemi Informativi T 6 3

Definizione di tabelle: es. con solo domini CREATE TABLE Studenti ( Matricola char(5), CF char(16), Cognome varchar(30), Nome varchar(30), DataNascita date, Email varchar(100) ) CREATE TABLE Corsi ( CodCorso int, Titolo varchar(50), Docente varchar(30), Anno smallint ) CREATE TABLE Esami ( Matricola char(5), CodCorso int, Voto smallint, Lode char(2) ) SQL: DDL di base Sistemi Informativi T 7 I tipi di dato più comuni (1) CHAR(n): stringhe di lunghezza fissa n, 1 n 254 CHAR equivale a CHAR(1) VARCHAR(n): stringhe di lunghezza variabile n (n 32672) INTEGER o INT: interi a 4 byte SMALLINT: interi a 2 byte DECIMAL(p,s) o DEC(p,s): numeri decimali p precisione (numero totale di cifre), 1 p 31 s scala (numero di cifre a destra del punto decimale), 0 s p REAL: numeri reali a 32 bit, singola precisione floating point DOUBLE o FLOAT: numeri reali a 64 bit, doppia precisione floating point SQL: DDL di base Sistemi Informativi T 8 4

I tipi di dato più comuni (2) DATE: TIME: TIMESTAMP: 10 byte DD MM YYYY (giorno, mese e anno) 8 byte HH.MM.SS (ore, minuti e secondi) 26 byte YYYY MM DD HH MM SS NNNNNN (anno, mese, giorno, ora, minuti, sec. e nanosec.) BOOLEAN: in DB2 il tipo boolean NON può essere usato per definire il dominio di un attributo Nei sistemi SQL (incluso DB2) è anche possibile definire nuovi tipi di dato (User Data Types, o UDT), ma non li trattiamo SQL: DDL di base Sistemi Informativi T 9 Opzioni di colonna : Valori nulli e di default Per vietare la presenza di valori nulli, è sufficiente imporre il vincolo NOT NULL CF char(16) NOT NULL Per ogni attributo è possibile specificare un valore di default, che verrà usato se all atto dell inserimento di una tupla non viene fornito un valore per quell attributo Anno smallint DEFAULT 1 Email varchar(100) DEFAULT guest@studio.unibo.it SQL: DDL di base Sistemi Informativi T 10 5

Opzioni di colonna : Chiavi La definizione di una chiave avviene esprimendo un vincolo UNIQUE CF char(16) UNIQUE Per specificare un vincolo di chiave primaria la sintassi è Matricola char(5) PRIMARY KEY In DB2 è obbligatorio aggiungere il vincolo NOT NULL, ovvero non si possono dichiarare chiavi con valori nulli, quindi: CF char(16) NOT NULL UNIQUE Matricola char(5) NOT NULL PRIMARY KEY Si noti che la specifica di una chiave primaria non è obbligatoria, e che si può specificare al massimo una chiave primaria per tabella SQL: DDL di base Sistemi Informativi T 11 Opzioni di colonna : Foreign key La definizione di una foreign key avviene specificando un vincolo FOREIGN KEY, e indicando quale chiave viene referenziata CodCorso int REFERENCES Corsi(CodCorso) Se si omettono gli attributi destinazione, vengono assunti quelli della chiave primaria CodCorso int REFERENCES Corsi Nell esempio, Esami è detta tabella di riferimento e Corsi tabella di destinazione (analoga terminologia per gli attributi coinvolti) Le colonne di destinazione devono essere una chiave della tabella destinazione (non necessariamente la chiave primaria) SQL: DDL di base Sistemi Informativi T 12 6

Opzioni di colonna : Vincoli generici Mediante la clausola CHECK è possibile esprimere vincoli di tupla arbitrari, sfruttando tutto il potere espressivo di SQL La sintassi è: CHECK (<condizione>) CHECK ((Lode = SI ) OR (Lode = NO )) Il vincolo è violato se esiste almeno una tupla che rende falsa la <condizione>. Pertanto Stipendio dec(7,2) CHECK (Stipendio > 0), non permette tuple con stipendio negativo, ma ammette valori nulli per l attributo Stipendio (perché non posso essere sicuro che sia negativo!) Se ciò non èil comportamento voluto: Stipendio dec(7,2) NOT NULL CHECK (Stipendio > 0), SQL: DDL di base Sistemi Informativi T 13 Vincoli con nomi A fini diagnostici (e di documentazione) è spesso utile sapere quale vincolo èstato violato a seguito di un azione sul DB A tale scopo è possibile dare dei nomi ai vincoli, ad esempio: Voto smallint NOT NULL CONSTRAINT VotoValido CHECK ((Voto >= 18) AND (Voto <=30)), CF char(16) NOT NULL CONSTRAINT CFKey UNIQUE, Stipendio dec(7,2) CONSTRAINT StipendioPositivo CHECK (Stipendio > 0), SQL: DDL di base Sistemi Informativi T 14 7

Definizione di tabelle con column options (1) CREATE TABLE Studenti ( Matricola char(5) NOT NULL PRIMARY KEY, CF char(16) NOT NULL UNIQUE, Cognome varchar(30) NOT NULL, Nome varchar(30) NOT NULL, DataNascita date NOT NULL, Email varchar(100) DEFAULT guest ) CREATE TABLE Esami ( Matricola char(5) NOT NULL REFERENCES Studenti, CodCorso int NOT NULL REFERENCES Corsi, Voto smallint NOT NULL CONSTRAINT VotoValido CHECK ((Voto >= 18) AND (Voto <=30)), Lode char(2) NOT NULL CHECK ((Lode = SI ) OR (Lode = NO )) ) SQL: DDL di base Sistemi Informativi T 15 Definizione di tabelle con column options (2) CREATE TABLE Corsi ( CodCorso int NOT NULL PRIMARY KEY, Titolo varchar(50) NOT NULL, Docentevarchar(30), Anno smallint DEFAULT 1 CHECK ((Anno >= 1) AND (Anno <= 3)) ) E evidente che con le sole column options non si riescono a specificare tutti i vincoli necessari SQL: DDL di base Sistemi Informativi T 16 8

Vincoli di tabella Tutti i vincoli sinora visti (UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK) si possono anche dichiarare separatamente dagli attributi, ad es: PRIMARY KEY (Matricola,CodCorso) UNIQUE (Cognome,Nome) CHECK ((Voto = 30) OR (Lode = NO )) con la sintassi già vista La sola eccezione èdata dai vincoli di foreign key: FOREIGN KEY (CodCorso) REFERENCES Corsi(CodCorso) Resta sempre possibile dare un nome ai vincoli: CONSTRAINT StranoVincolo UNIQUE (Cognome,Nome) Quando il vincolo riguarda un singolo attributo lo si può esprimere a livello di tabella o di riga, indifferentemente SQL: DDL di base Sistemi Informativi T 17 Definizione con table constraints CREATE TABLE Esami ( Matricola char(5) NOT NULL REFERENCES Studenti, CodCorso int NOT NULL REFERENCES Corsi, Voto smallint NOT NULL CONSTRAINT VotoValido CHECK ((Voto >= 18) AND (Voto <=30)), Lode char(2) NOT NULL CHECK ((Lode = SI ) OR (Lode = NO )), PRIMARY KEY (Matricola,CodCorso), CONSTRAINT LodeValida CHECK ((Voto = 30) OR (Lode = NO )) ) SQL: DDL di base Sistemi Informativi T 18 9

Modifica di tabelle Mediante l istruzione ALTER TABLE è possibile modificare lo schema di una tabella, in particolare: Aggiungendo o rimuovendo attributi Aggiungendo o rimuovendo vincoli ALTER TABLE Imp ADD COLUMN Sesso char ADD CONSTRAINT StipendioMax CHECK (Stipendio < 4000) DROP CONSTRAINT StipendioPositivo DROP UNIQUE(Cognome,Nome); Se si aggiunge un attributo con vincolo NOT NULL, bisogna prevedere un valore di default, che il sistema assegnerà automaticamente a tutte le tuple già presenti ADD COLUMN Istruzione char(10) NOT NULL DEFAULT Laurea SQL: DDL di base Sistemi Informativi T 19 Riassumiamo: Il linguaggio SQL è lo standard de facto per interagire con DB relazionali Si discosta dal modello relazionale in quanto permette la presenza di tuple duplicate (tabelle anziché relazioni) La definizione delle tabelle permette di esprimere vincoli di vario tipo (UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK), di specificare se un attributo può o meno assumere valori nulli e di assegnargli un eventuale valore di default Altri elementi del DDL verranno introdotti in seguito, in quanto legati ad aspetti del DML (politiche di reazione, viste, ecc.) SQL: DDL di base Sistemi Informativi T 20 10