Il linguaggio SQL: DDL di base

Documenti analoghi
Il linguaggio SQL: DDL di base

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

Stringhe di caratteri

Sistemi di Elaborazione delle Informazioni

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

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

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

Il linguaggio SQL. Il linguaggio SQL

Viste come strumenti di programmazione

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL

SQL. Lezione 1. Docente: Alberto Belussi

Laboratorio di Basi di Dati

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

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

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

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

SQL. Dott.ssa Elisa Quintarelli

Dichiarazione degli schemi in SQL DDL 1

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

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

PRODOTTO CARTESIANO Caso Generale

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

Linguaggio SQL: fondamenti D B M G

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

Viste (relazioni derivate)

Laboratorio di Basi di Dati

Corso di Informatica (Basi di Dati)

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

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

Laboratorio di Basi di Dati Per Bioinformatica

Structured Query Language

Laboratorio di Basi di Dati e Multimedia

4/16/07. Le Basi di Dati Relazionali. Concetti Fondamentali. Base di dati, tabella, ennupla, attributo, dominio. Valori nulli

Caratteristiche dei linguaggi per Database

Elena Baralis 2007 Politecnico di Torino 1

Basi di Dati. Sistemi per Basi di Dati Relazionali: Modello Logico. Concetti Fondamentali. Concetti Fondamentali

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

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

Modello relazionale e algebra relazionale

IL MODELLO RELAZIONALE. Patrizio Dazzi a.a

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

Esercizi di SQL Matteo Magnani, Danilo Montesi Università di Bologna. Esercizi di SQL

BASI di DATI. SQL: concetti fondamentali

Laboratorio di Basi di Dati

Basi di Dati. Concetti Fondamentali SQL-92 25/02/2004. Concetti Fondamentali. Introduzione. Interrogazioni. Creazione ed eliminazione di bd

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

Basi di Dati. Dettagli e Approfondimenti SQL-92 25/02/2004. Dettagli e Approfondimenti. DDL: Tabelle. DML: Aggiornamenti.

Basi di Dati e Sistemi Informativi. Structured Query Language

Basi di Dati SQL-92. Concetti Fondamentali

Basi di Dati Relazionali

Basi di Dati SQL-92. Dettagli e Approfondimenti

Data Definition in MySQL

SQL: DDL, VI, Aggiornamenti e Viste

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

Lezione 3. Il modello relazionale

Basi di Dati SQL-92. Dettagli e Approfondimenti

Elena baralis 2007 Politecnico di Torino 1

A.A. 2018/2019. Introduzione a SQL FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

IL MODELLO RELAZIONALE

PROGETTAZIONE DI DATABASE Linguaggio SQL

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

Unità 2.2 Comandi sulle tabelle

Basi di dati - Laboratorio

SQL: "storia" 31/05/2006 2

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

Modello Relazionale. Concetti e definizioni

Il linguaggio SQL costrutti DDL.

LABORATORIO di INFORMATICA

Il linguaggio SQL: autorizzazioni

Fondamenti di Informatica A. A / 1 9

DataBase Management System - DBMS

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

Corso di Informatica Linguaggio SQL prima parte

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

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

Gestione e Analisi dei Dati. Lezione 2 Vincoli su attributo Selezioni semplici su una tabella

Esercitazione 4 SQL.

Gestione delle tabelle

Elena Baralis 2007 Politecnico di Torino 1

5 SQL : Definizione e manipolazione dei dati

Il linguaggio SQL: le basi

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

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

Esercitazione: Il DBMS MySQL. Insegnamento di Basi di Dati. Laurea in Ingegneria Informatica SAPIENZA Università di Roma

Il linguaggio SQL Introduzione e costrutti di interrogazione.

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. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

Lezione 2. Modello relazionale: concetti e definizioni

Basi di dati e Relazioni

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

DDL (Data Definition Language) schemi DML (Data Manipulation Language) DQL (Data Query Language) DCL (Data Control Language)

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

Transcript:

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

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

Data Definition Language (DDL) Il DDL di SQL permette di definire schemi di relazioni (o table, tabelle), modificarli ed eliminarli Permette 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

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

I tipi di dato più comuni (2) DATE: TIME: TIMESTAMP: DD/MM/YYYY (giorno, mese e anno) (dipende dall installazione: potrebbe essere YYYY-MM-DD) HH:MM:SS (ore, minuti e secondi) YYYY-MM-DD-HH.MM.SS.NNNNNN (anno, mese, giorno, ora, minuti, sec. e nanosec.) BOOLEAN: in DB2 il tipo booleannon 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 Emailvarchar(100) DEFAULT guest@studio.unibo.it SQL: DDL di base Sistemi Informativi T 10

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 Corsitabella 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

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 è violatose esiste almeno una tupla che rende falsala <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

Definizione di tabelle con column options (1) CREATE TABLE Studenti ( Matricola char(5) NOT NULL PRIMARY KEY, CF CREATE TABLE Esami ( Matricola char(5) NOT NULL REFERENCES Studenti, CodCorso int Voto Lode char(16) NOT NULL UNIQUE, Cognome varchar(30) NOT NULL, Nome varchar(30) NOT NULL, DataNascita date NOT NULL, Email varchar(100) DEFAULT guest ) NOT NULL REFERENCES Corsi, smallint NOT NULL CONSTRAINT VotoValido CHECK ((Voto >= 18) AND (Voto <=30)), 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

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 Voto Lode NOT NULL REFERENCES Corsi, smallint NOT NULL CONSTRAINT VotoValido CHECK ((Voto >= 18) AND (Voto <=30)), 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

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