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

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

Basi di Dati e Sistemi Informativi. Structured Query Language

Dichiarazione degli schemi in SQL DDL 1

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

Laboratorio di Basi di Dati Per Bioinformatica

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

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

Basi di Dati prof. Letizia Tanca

SQL. Storia e standard

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

Gestione delle tabelle

Definizione di domini

Laboratorio di Basi di Dati

Corso di Informatica (Basi di Dati)

Corso di Basi di Dati

Laboratorio di Basi di Dati e Web

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

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL: fondamenti. 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

SQL - Tipi di dato Il linguaggio SQL

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

Basi di Dati Relazionali

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

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

SQL: Concetti Base -Prima Parte-

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

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

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

DUE GRUPPI DI COMANDI

SQL Sintassi Dei Comandi

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

Caratteristiche dei linguaggi per Database

Il linguaggio SQL: DDL di base

Basi di Dati: Corso di laboratorio

LABORATORIO di INFORMATICA

Linguaggio SQL Descriviamo la notazione usata nel seguito:


Laboratorio di Basi di Dati Introduzione a SQL

Basi di Dati: Corso di laboratorio

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

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

5 SQL : Definizione e manipolazione dei dati

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

SQL (STRUCTURED QUERY LANGUAGE)

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

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

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

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

DATABASE PER IL WEB. Programmazione Web 1

SQL: DDL, VI, Aggiornamenti e Viste

Basi di Dati CREAZIONE E POPOLAMENTO DI UNA BASE DI DATI

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

SQL. (Structured Query Language) Eugenio Di Sciascio

SQL (STRUCTURED QUERY LANGUAGE)

Interrogazioni nidificate

Corso sul linguaggio SQL

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

SQL. SQL: una visione panoramica. SQL: "storia" Definizione dei dati

SQL aspetti essenziali

Vincoli di Integrità Approccio dichiarativo alla loro implementazione

Basi di dati Il linguaggio SQL

Basi di dati Il linguaggio SQL

Linguaggio SQL. Structured Query Language

Basi di Dati: Corso di laboratorio

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

2011 Politecnico di Torino 1

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

OBIETTIVI DELL'ESERCITAZIONE

Informatica B. Contenuti. Introduzione alle Basi di Dati e ai DBMS. Introduzione a dati e basi dati DBMS Modello dei dati

Introduzione. Structured Query Language (SQL) Inquadramento. Evoluzione dello standard SQL - 1. La situazione attuale

SQL. Definizione dei da6 in SQL. SQL: "storia" CREATE TABLE: esempio. CREATE TABLE: esempio

Interrogazioni nidificate

LEZIONE. Un linguaggio per le basi di dati relazionali. Stand-alone SQL. 96 BLOCCO TEMATICO A Le basi di dati

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

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

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

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

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

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

Il linguaggio SQL Basi di dati 1. Il linguaggio SQL. Angelo Montanari. Dipartimento di Matematica e Informatica Università di Udine

DBMS. Alice Pavarani

SQL. Structured Query Language 1974: SEQUEL by IBM 1981: SQL by IBM : SQL ISO 9075:1992 SQL:1999 SQL:2003

Domande utili alla preparazione dell orale di Informatica all Esame di Stato

Sommario. Introduzione... 13

Basi di Da( MySQL & MySQL Workbench. Anna Monreale

SQL - Structured Query Language

Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a

Basi di dati: appello 04/07/06

Corso sul linguaggio SQL

nuove voci tutti i giorni, e non si cancellano o aggiornano voci tutti i giorni), non si avverte l esigenza di avvalersi di un sistema informatico.

DBMS (Data Base Management System)

Corso di Informatica Generale 1 IN1. Linguaggio SQL

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

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

Domini elementari in SQL

Definizione e manipolazione dei dati in SQL

ARCHITETTURA DI UN DBMS

Il linguaggio SQL: le basi

Il linguaggio SQL. ing. Alfredo Cozzi 1

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

Transcript:

Principi di Progettazione del Software a.a. 2016-2017 Prof. Università del Salento

Linguaggi per DBMS Il modello relazionale definisce i concetti generali ed i vincoli per modellare e strutturare i dati di una certa applicazione o dominio d interesse. Q. Come implementare il modello relazionale di un DB all interno di un RDBMS (Relational DataBase Management Systems)? Q.1 Come costruire lo schema del DB? Q.2 Come manipolare le istanze? A. Attraverso opportuni linguaggi data-oriented!

Linguaggi per DBMS 1. Linguaggi basati sulle proprieta algebrico/ logiche del modello relazionale. Ø Calcolo relazionale sui domini Ø Algebra relazionale Π A1 A 2..A n (σ Condizione (T 1 T 2... T m ))

Linguaggi per DBMS 2. SQL (Structured Query Language) Diverse versioni standard del linguaggio: Ø SQL-86 à Costrutti base Ø SQL-89 à Integrita referenziale Ø SQL-92 (SQL2) à Modello relazionale, struttura a livelli Ø SQL:1999 (SQL3) à Modello ad oggetti Ø SQL:2003 (SQL3) à Nuove parti: SQL/JRT, SQL/XML Ø SQL:2006 (SQL3) à Estensione di SQL/XML Ø SQL:2008 (SQL3) à Lievi aggiunte

Il Linguaggio SQL SQL e un linguaggio per basi di dati basate sul modello relazionale. Valgono i concetti generali del modello relazionale visto fin qui, ma con qualche differenza: Ø Si parla di tabelle (e non relazioni). Ø Le tabelle possono avere righe duplicate. Ø Il sistema dei vincoli e piu espressivo. Ø Il vincolo di integrita referenziale (chiave esterna) e meno stringente.

SQL Dialects Esistono varie implementazioni del linguaggio SQL, I Dialects: Standard MySQL Microsoft SQLServer Oracle SQLite PostgreSQL. Praticamente, ogni RDBMS fornisce un dialect specifico per SQL 6

SQL Clients Per ogni DBMS sono presenti diversi client di accesso ai DB Ad esempio, per MySQL: MySQL Workbench Sequel Pro PhpMyAdmin Applicazioni custom 7

Preparazione dell ambiente di lavoro Strumenti Community Edition RDBMS: MySQL Interfaccia Client: MySQL Workbench 8

Preparazione dell ambiente di lavoro (cont.) 1. http://dev.mysql.com/downloads/ 2. Download: MySQL Community Server MySQL Workbench 3. Selezionare No thanks, just start my download 4. Install&enjoy 5. In Workbench, settare una nuova connessione al server Mysql ed avviarla 9

Il Linguaggio SQL Due componenti principali: Ø DDL (Data Definition Language) Contiene i costrutti necessari per la creazione/ modifica dello schema della base di dati. Ø DML (Data Manipulation Language) Contiene i costrutti per le interrogazioni e di inserimento/eliminazione/modifica di dati.

Il Linguaggio SQL Due componenti principali: Ø DDL (Data Definition Language) Contiene i costrutti necessari per la creazione/ modifica dello schema della base di dati. Ø DML (Data Manipulation Language) Contiene i costrutti per le interrogazioni e di inserimento/eliminazione/modifica di dati.

DB di esempio

Il costrutto CREATE Tramite il costrutto create database, e possibile creare un nuovo database. create database NomeDB [owner=name] Ø Name e il nome del proprietario del DB. CREATE DATABASE PROVADB

Il costrutto CREATE SCHEMA Tramite il costrutto create schema, e possibile costruire uno schema di una base di dati (ossia il collettore di tabelle/viste/etc). create schema NomeSchema [authorization Nome] Ø Nome e il nome del proprietario dello schema. CREATE SCHEMA SCHEMA_NAME AUTHORIZATION DB_OWNER

Il costrutto CREATE TABLE Tramite il costrutto create table, e possibile costruire una tabella all interno dello schema. create table NomeTabella ( nomeattributo1 Dominio [ValDefault][Vincoli] nomeattributo2 Dominio [ValDefault][Vincoli] ) Per ciascun attributo, e possibile specificare, oltre al nome e dominio, un valore di default e i vincoli.

L operatore IF NOT EXISTS Ai costrutti create è possibile aggiungere l operatore IF NOT EXTSTS Serve ad evitare errori dovuti a database, schema e tabelle già presenti CREATE DATABASE IF NOT EXISTS DB_NAME; CREATE SCHEMA IF NOT EXISTS DB_SCHEMA; CREATE TABLE IF NOT EXISTS DB_TABLE; 16

Domini elementari In SQL, e possibile associare i seguenti domini (elementari) agli attributi di uno schema. Ø Caratteri Ø Tipi numerici esatti Ø Tipi numerici approssimati Ø Istanti temporali Ø Intervalli temporali Ø Tipo booleano Ø

Domini elementari Il dominio character consente di rappresentare singoli caratteri o stringhe di lunghezza max fissa. character/char [varying][(lunghezza)] Lunghezza non specificata à Singolo carattere Es. specificare una stringa di max 20 caratteri. Ø character varying (20) Ø varchar (20)

Domini elementari I tipi numerici esatti consentono di rappresentare valori esatti, interi o con una parte decimale di lunghezza prefissata. Ø numeric [(Precisione[,Scala])]) Ø decimal [(Precisione[,Scala])]) Ø integer Ø smallint Es. numeric(4,2) à Intervallo [-99.99:99.99]

Domini elementari I tipi numerici approssimati consentono di rappresentare valori reali con rappresentazione in virgola mobile. Ø float [(Precisione)] Ø real Ø double precision Es. float(5) à Mantissa di lunghezza 5.

Domini elementari I domini temporali consentono di rappresentare informazioni temporali o intervalli di tempo. Ø date [(Precisione)] Ø time [(Precisione)] Ø timestamp Es. time (2) à 21:03:04 time (4) à 21:03:04:34

Domini elementari I domini temporali consentono di rappresentare informazioni temporali o intervalli di tempo. Ø interval PrimaUnita [to UltimaUnita ] Es. interval month to second Il dominio boolean consente di rappresentare valori di verita (true/false).

Domini elementari Tramite il costrutto domain, l utente puo costruire un proprio dominio di dati a partire dai domini elementari. create domain NomeDominio as TipoDati [Valore di default] [Vincolo] (vedremo dopo) CREATE DOMAIN Voto AS SMALLINT DEFAULT NULL CHECK ( value >=18 AND value <= 30 )

Esempio CREATE CORSO Corso Codice NumeroOre DataInizio PPS 0121 80 22/11/2016 CREATE TABLE CORSO ( CORSO VARCHAR(20), CODICE VARCHAR(4), NUMEROORE SMALLINT, DATAINIZIO DATE );

Valori Default Per ciascun dominio o attributo, e possibile specificare un valore di default attraverso il costrutto default. default [valore user null] Ø valore indica un valore del dominio. Ø user e l id dell utente che esegue il comando. Ø null e il valore null.

SQL: Esempio DEFAULT CORSO Corso Codice NumeroOre DataInizio PPS 0121 80 22/11/2016 CREATE TABLE CORSO ( CORSO VARCHAR(20), CODICE VARCHAR(4), NUMEROORE SMALLINT DEFAULT 40, DATAINIZIO DATE );

Esempio CREATE DOMAIN CORSO Corso Codice NumeroOre DataInizio Basi di dati 0121 80 26/09/2012 CREATE DOMAIN ORELEZIONE AS SMALLINT DEFAULT 40 CREATE TABLE CORSO ( CORSO VARCHAR(20), CODICE VARCHAR(4), NUMEROORE ORELEZIONE, DATAINIZIO DATE );

Vincoli Per ciascun dominio o attributo, e possibile definire dei vincoli che devono essere rispettati da tutte le istanze di quel dominio o attributo. Ø Vincoli intra-relazionale Ø vincoli generici Ø vincolo not null Ø vincolo unique Ø vincolo primary key Ø Vincoli inter-relazionali Ø vincolo references

Clausola CHECK Mediante la clausola check e possible esprimere vincoli di ennupla arbitrari. NomeAttributo check (Condizione) Ø VOTO SMALLINT CHECK((VOTO>=18) and (VOTO<=30)) Ø Il vincolo viene valutato ennupla per ennupla. Ø E possibile creare vincoli piu complessi mediante le asserzioni (VEDI DOPO).

Esempio clausola CHECK IMPIEGATI Codice Nome Cognome Ufficio 123 Marco Marchi A CREATE TABLE IMPIEGATI ( CODICE SMALLINT CHECK (CODICE >=0), NOME VARCHAR(30), COGNOME VARCHAR(30), UFFICIO CHARACTER );

Vincolo NOT NULL Il vincolo not null indica che il valore null non e ammesso come valore dell attributo. Es. NUMEROORE SMALLINT NOT NULL Ø In caso di inserimento, l attributo deve essere specificato, a meno che non sia stato specificato un valore di default diverso dal valore null. Es. NUMEROORE SMALLINT DEFAULT 40 NOT NULL

Vincolo UNIQUE Il vincolo unique impone che l attributo/attributi su cui sia applica non presentino valori comuni in righe differenti à ossia che l attributo/i siano una superchiave della tabella. Due sintassi: Ø Attributo Dominio [ValDefault] unique Se la chiave e un solo attributo. Ø unique(attributo1, Attributo2,..) Se la chiave e composta da piu attributi.

Esempio vincolo UNIQUE IMPIEGATI Codice Nome Cognome Ufficio 123 Marco Marchi A CREATE TABLE IMPIEGATI ( CODICE SMALLINT UNIQUE, NOME VARCHAR(30), COGNOME VARCHAR(30), UFFICIO CHARACTER )

Esempio vincolo UNIQUE (cont.) IMPIEGATI Violazione del vincolo di chiave! Codice Nome Cognome Ufficio 145 Michele Micheli B 145 Giovanni Di Giovanni B 123 Marco Marchi A CREATE TABLE IMPIEGATI ( CODICE SMALLINT UNIQUE, )

Esempio vincolo UNIQUE (cont.) IMPIEGATI NON sono violazioni del vincolo di chiave! NULL<>NULL Codice Nome Cognome Ufficio NULL Michele Micheli B NULL Giovanni Di Giovanni B 123 Marco Marchi A CREATE TABLE IMPIEGATI ( CODICE SMALLINT UNIQUE, )

Esempio vincolo UNIQUE (cont.) Esempio: Chiave composta da due attributi. IMPIEGATI Codice Nome Cognome Ufficio 123 Marco Marchi A CREATE TABLE IMPIEGATI ( CODICE SMALLINT NOT NULL, UFFICIO CHARACTER NOT NULL, UNIQUE(CODICE, UFFICIO) )

Esempio vincolo UNIQUE (cont.) IMPIEGATI Codice Nome Cognome Ufficio 123 Marco Marchi A CREATE TABLE IMPIEGATI ( CODICE SMALLINT NOT NULL UNIQUE, UFFICIO CHARACTER NOT NULL UNIQUE, ) ATTENZIONE, NON SONO EQUIVALENTI!!! (perche?) CREATE TABLE IMPIEGATI ( CODICE SMALLINT NOT NULL, UFFICIO CHARACTER NOT NULL, UNIQUE(CODICE, UFFICIO) )

Il vincolo primary key impone che l attributo/ attributi su cui sia applica non presentino valori comuni in righe differenti e non siano nullià ossia che l attributo/i siano una chiave primaria. Due sintassi: Vincolo PRIMARY KEY Ø Attributo Dominio [ValDefault] primary key Se la chiave e un solo attributo. Ø primary key(attributo1, Attributo2,..) Se la chiave e composta da piu attributi.

Vincolo PRIMARY KEY (cont.) Il vincolo primary key impone che l attributo/ attributi su cui sia applica non presentino valori comuni in righe differenti e non siano nullià ossia che l attributo/i siano una chiave primaria. IMPORTANTE: A differenza di unique e not null che possono essere definiti su piu attributi della stessa tabella, il vincolo primary key puo apparire una sola volta per tabella.

Esempio Vincolo PRIMARY KEY Esempio: Chiave composta da due attributi. IMPIEGATI Codice Nome Cognome Ufficio 123 Marco Marchi A CREATE TABLE IMPIEGATI ( CODICE SMALLINT NOT NULL, UFFICIO CHARACTER NOT NULL, PRIMARY KEY (CODICE, UFFICIO) )

Vincolo References e Foreign Key I vincoli references e foreign key consentono di definire dei vincoli di integrita referenziale tra i valori di un attributo nella tabella in cui e definito (tabella interna) ed i valori di un attributo in una seconda tabella (tabella esterna). NOTA: L attributo/i cui si fa riferimento nella tabella esterna deve/devono essere soggetto/i al vincolo unique.

Vincoli References e Foreign Key I vincoli references e foreign key consentono di definire dei vincoli di integrita referenziale tra i valori di un attributo nella tabella in cui e definito (tabella interna) ed i valori di un attributo in una seconda tabella (tabella esterna). CORSO Nome Codice IdDocente PPS 0121 00 Fondamenti I 1213 01 Sistemi Operativi 1455 02 ESAME Corso Studente Voto 0121 4324235245 30L 1213 4324235245 25 1213 9854456565 18

Esempio vincolo References e Foreign Key CORSO Nome Codice IdDocente Corso Studente Voto ESAME PPS 0121 00 Fondamenti I 1213 01 Sistemi Operativi 1455 02 0121 432423524 5 1213 432423524 5 1213 985445656 5 30L 25 18 CREATE TABLE ESAME ( CORSO VARCHAR(4), STUDENTE VARCHAR(20), PRIMARY KEY(CORSO, STUDENTE), FOREIGN KEY (corso) REFERENCES CORSO(codice) ON DELETE SET NULL ON UPDATE CASCADE )

Violazioni del vincolo di integrita referenziale. CORSO Nome Codice IDDocente PPS 6464 00 Fondamenti I 1213 01 Sistemi Operativi 1455 02 ESAME Corso Studente Voto 0121 4324235245 30L 1213 4324235245 25 1213 9854456565 18 Q. Che accade se un valore nella tabella esterna viene cancellato o viene modificato? A. Il vincolo di integrita referenziale nella tabella interna potrebbe non essere piu valido! Cosa fare?

Violazioni del vincolo di integrita referenziale. E possibile associare azioni specifiche da eseguire sulla tabella interna in caso di violazioni del vincolo di integrita referenziale. on (delete update) (cascade set null set default no action) Ø cascade à elimina/aggiorna righe (della tabella interna) Ø set null à setta i valori a null Ø set default à ripristina il valore di default Ø no action à non consente l azione (sulla tabella esterna)

Violazioni del vincolo di integrita referenziale. CORSO Nome Codice IdDocente ESAEI Corso Studente Voto Basi di dati 0121 00 Programmazione 1213 01 Sistemi Operativi 1455 02 0121 432423524 5 1213 432423524 5 1213 985445656 5 CREATE TABLE ESAME ( CORSO VARCHAR(4) REFERENCES CORSO(CODICE) ON DELETE SET NULL ON UPDATE CASCADE STUDENTE VARCHAR(20), PRIMARY KEY(CORSO, STUDENTE), ) 30L 25 18

Violazioni del vincolo di integrita referenziale. E possibile modificare gli schemi di dati precedentemente creati tramite le primitive di alter (modifica) e drop (cancellazione). drop (schema domain table view) NomeElemento alter NomeTabella alter column NomeAttributo add column NomeAttributo drop column NomeAttributo add contraint DefVincolo