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

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

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

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

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

Basi di Dati Relazionali

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

Basi di Dati e Sistemi Informativi. Structured Query Language

Corso di Informatica (Basi di Dati)

Dichiarazione degli schemi in SQL DDL 1

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

Corso sul linguaggio SQL

SQL. Storia e standard

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

Il linguaggio SQL: DDL di base

Basi di Dati prof. Letizia Tanca

Laboratorio di Basi di Dati

Gestione delle tabelle

Laboratorio di Basi di Dati e Web

Laboratorio di Basi di Dati Per Bioinformatica

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

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

SQL: Concetti Base -Prima Parte-

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

Basi di Dati: Corso di laboratorio

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

Definizione di domini

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

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

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

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

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

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

SQL Sintassi Dei Comandi

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

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

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

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

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

SQL (STRUCTURED QUERY LANGUAGE)

Basi di Dati CREAZIONE E POPOLAMENTO DI UNA BASE DI DATI

Basi di dati. SQL: Amministrazione e Viste. Prof.ssa Rosalba Giugno Dott. Aurelio Giudice


Basi di Dati: Corso di laboratorio

Introduzione a MySQL

Corso sul linguaggio SQL

DUE GRUPPI DI COMANDI

Linguaggio SQL Descriviamo la notazione usata nel seguito:

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

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

Laboratorio di Basi di Dati Introduzione a SQL

SQL. (Structured Query Language) Eugenio Di Sciascio

LABORATORIO di INFORMATICA

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

Vincoli di Integrità Approccio dichiarativo alla loro implementazione

Linguaggio SQL. Structured Query Language

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

5 SQL : Definizione e manipolazione dei dati

SQL (STRUCTURED QUERY LANGUAGE)

Esempio di database relazionale con l utilizzo del prodotto MySQL

Vincoli di Integrità

Basi di dati Il linguaggio SQL

Basi di dati Il linguaggio SQL

DATABASE PER IL WEB. Programmazione Web 1

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

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

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.

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

Basi di Da( MySQL & MySQL Workbench. Anna Monreale

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

SQL: DDL, VI, Aggiornamenti e Viste

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

Basi di Dati. Programmazione e gestione di sistemi telematici

Basi di Dati - VI. Il DDL di SQL. SQL per la definizione di Basi di Dati. SQL per la definizione di Basi di Dati

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

Lezione del modulo 7 SQL e database del giorno 04/05/2006 tot. ore 3. Lo Standard SQL

Interrogazioni nidificate

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

Basi di dati. SQL: concetti base

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

Il linguaggio SQL: le basi

2011 Politecnico di Torino 1

SQL -DDL. FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza)

Corso di Basi di Dati

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

SQL aspetti essenziali

Caratteristiche dei linguaggi per Database

Esercitazione: Il DBMS MySQL

SQL. SQL: "storia. Sviluppato nella metà degli anni settanta (1974) presso il laboratorio di ricerca IBM di S.Josè. Dal 1983 ca. "standard di fatto"

Esercitazione: Il DBMS MySQL

Modello logico dei dati utilizzato nell ambito delle basi di dati, introdotto da Codd nel 1970.

DBMS (Data Base Management System)

Basi di Dati Corso di Laura in Informatica Umanistica

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

L interfaccia a riga di comando di MySql

GESTIONE ABBONAMENTI RIVISTE

OBIETTIVI DELL'ESERCITAZIONE

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

Corso di Informatica Generale 1 IN1. Linguaggio SQL

SQL Server Architettura Client-Server. SQL Server Introduzione all uso di SQL Server Dutto Riccardo.

Transcript:

1 SQL Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) a.a. 2017/2018 http://www.di.uniba.it/~lisi/courses/basi-dati/bd2017-18.htm Prof.ssa Francesca A. Lisi francesca.lisi@uniba.it Orario di ricevimento: su appuntamento

2 Cos'è SQL? Linguaggio di riferimento per le basi di dati relazionali acronimo di Structured Query Language comprende sia un DDL che un DML un po' di storia prima proposta SEQUEL (1974); prime implementazioni in SQL/DS e Oracle (1981) dal 1983 ca. "standard de facto" dei linguaggi per basi di dati relazionali ANSI-ISO standard (1986, 1989, 1992, 1999) recepito solo in parte (!!)

3 Sommario Definizione dei dati in SQL Definizione di schemi Domini elementari Definizione di dominii Definizione di tabelle Definizione di vincoli (inter-relazionali ed intra-relazionali) Modifica di schemi Intro alle esercitazioni pratiche in laboratorio Il DBMS MySQL Il database Prodotti Premiere Primi passi in laboratorio

4 Riferimenti Cap. 4, in particolare 4.1-4.2, di Basi di dati (IV ed.) di Atzeni et al. Cap. 8, in particolare 8.1-8.3, di Sistemi di basi di dati - fondamenti (VI ed.) di Elmasri & Navathe Capp. 1-2, 4-5 di MySQL Tutorial

5 Definizione di schemi Istruzione CREATE SCHEMA: definisce uno schema di base di dati come collezione di oggetti crea un istanza vuota dello schema CREATE SCHEMA Premiere

6 Domini elementari CHARACTER: singoli caratteri o stringhe, anche di lunghezza variabile BIT: singoli booleani o stringhe NUMERIC, DECIMAL, INTEGER, SMALLINT: tipi numerici esatti FLOAT, REAL, DOUBLE PRECISION: tipi numerici approssimati DATE, TIME, TIMESTAMP: istanti temporali INTERVAL: intervalli di tempo

7 Definizione di domini Istruzione CREATE DOMAIN: definisce un dominio (semplice), utilizzabile in definizioni di relazioni, anche con vincoli e valori di default CREATE DOMAIN Voto AS SMALLINT DEFAULT NULL CHECK (VALUE >=18 AND VALUE <=30)

8 Definizione di tabelle Istruzione CREATE TABLE: definisce uno schema di relazione e ne crea un istanza vuota specifica attributi, domini e vincoli Dipartimento(Nome, Indirizzo, Sede) CREATE TABLE Dipartimento( Nome CHAR(20) PRIMARY KEY, Indirizzo CHAR(50), Sede CHAR(20) )

9 Vincoli intrarelazionali NOT NULL UNIQUE definisce le chiavi di una relazione PRIMARY KEY definisce la chiave primaria di una relazione (implica NOT NULL) CHECK esprime vincoli di integrità (ne parleremo più avanti)

10 Definizione di chiavi interne Impiegato (Matricola, Nome, Cognome, Dip, Stipendio) CREATE TABLE Impiegato( Matricola CHAR(6) PRIMARY KEY, Nome CHAR(20) NOT NULL, Cognome CHAR(20) NOT NULL, Dip CHAR(15), Stipendio NUMERIC(9) DEFAULT 0, FOREIGN KEY(Dip) REFERENCES Dipartimento(Nome), UNIQUE (Cognome,Nome) )

11 Definizione di chiavi interne (II) Matricola CHAR(6) PRIMARY KEY Matricola CHAR(6),, PRIMARY KEY (Matricola) Sono equivalenti!

12 Definizione di chiavi interne (III) Nome CHAR(20) NOT NULL, Cognome CHAR(20) NOT NULL, UNIQUE (Cognome,Nome), Nome CHAR(20) NOT NULL UNIQUE, Cognome CHAR(20) NOT NULL UNIQUE, Non sono equivalenti!

13 Vincoli interrelazionali REFERENCES e FOREIGN KEY permettono di definire vincoli di integrità referenziale di nuovo due sintassi per singoli attributi su più attributi E' possibile definire politiche di reazione alla violazione dell integrità referenziale CHECK, vedremo più avanti

Infrazioni 14 Codice Data Vigile Prov Numero 34321 1/2/95 3987 MI 39548K 53524 4/3/95 3295 TO E39548 64521 5/4/96 3295 PR 839548 73321 5/2/98 9345 PR 839548 Vigili Matricola 3987 3295 9345 7543 Cognome Rossi Neri Neri Mori Nome Luca Piero Mario Gino

Infrazioni 15 Codice Data Vigile Prov Numero 34321 1/2/95 3987 MI 39548K 53524 4/3/95 3295 TO E39548 64521 5/4/96 3295 PR 839548 73321 5/2/98 9345 PR 839548 Auto Prov Numero MI 39548K TO E39548 PR 839548 Cognome Rossi Rossi Neri Nome Mario Mario Luca

16 Definizione di chiavi esterne 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)

17 Modifiche degli schemi Istruzione ALTER: consente di modificare dominii e schemi di tabelle Es. Aggiungere ad una tabella una nuova colonna ALTER TABLE Dipartimento ADD COLUMN NroUff NUMERIC(4)

18 Modifiche degli schemi Istruzione DROP: consente di rimuovere componenti dello schema opzione RESTRICT (default!) specifica che il comando non deve essere eseguito su oggetti non vuoti opzione CASCADE specifica che il comando deve essere applicato su oggetti anche non vuoti DROP TABLE Dipartimento DROP TABLE Dipartimento CASCADE

19 Il DBMS MySQL http://www.mysql.com/ Versione stabile corrente: MySQL 5.5 DBMS con architettura client-server Installare e lanciare il server (vedi manuale utente) Connettersi al server DOS-shell> mysql u user_name -p..in modalità batch..< input_file_name more..< input_file_name > output_file_name Disconnettersi dal server mysql> QUIT

20 Il DBMS MySQL (II) Creare un database mysql> CREATE DATABASE db_name; Selezionare un database esistente mysql> USE db_name; Interagire con il database selezionato mysql> SHOW TABLES; mysql> CREATE TABLE t1 (..); mysql> DESCRIBE t1;... Impostare la modalità batch (uso di script SQL) mysql> SOURCE file_name;

21 Il DBMS MySQL (III) Le tabelle possono essere di vari tipi a seconda del motore (ENGINE) specificato nei comandi di creazione InnoDB MyISAM Una base dati in MySQL presenta caratteristiche diverse a seconda del motore specificato nei comandi di creazione delle tabelle Per es., CREATE TABLE Ordini( ) ENGINE=InnoDB; oppure, CREATE TABLE Ordini( ) ENGINE=MyISAM; Il motore di default in MySQL 5.5 è InnoDB Supporta i vincoli di integrità referenziale, le transazioni, etc. Un motore alternativo ma meno sofisticato è MyISAM Non supporta i vincoli di integrità referenziale

22 Il database Prodotti Premiere Sarà il nostro caso di studio per le esercitazioni in laboratorio!

23 Il database Prodotti Premiere (II) Rappresentanti(CodRappr, Cognome, Nome, Via, Citta, Provincia, CAP, TotProvvigioni,PercentProvv) CREATE TABLE Rappresentanti( CodRappr CHAR(2) PRIMARY KEY, Cognome CHAR(10) NOT NULL, Nome CHAR(8) NOT NULL, Via CHAR(15), Citta CHAR(15), Provincia CHAR(2), CAP CHAR(5), TotProvvigioni DECIMAL(7,2), PercentProvv DECIMAL(3,2));

24 Il database Prodotti Premiere (III) Clienti (CodCliente, Cognome, Nome, Via, Citta, Provincia, CAP, Saldo, Fido, CodRappr) CREATE TABLE Clienti( CodCliente CHAR(3) PRIMARY KEY, Cognome CHAR(10) NOT NULL, Nome CHAR(8) NOT NULL, Via CHAR(15), Citta CHAR(15), Provincia CHAR(2), CAP CHAR(5), Saldo DECIMAL(7,2) DEFAULT 0, Fido DECIMAL(6,2) DEFAULT 0, CodRappr CHAR(2) REFERENCES Rappresentanti(CodRappr));

25 Il database Prodotti Premiere (IV) Ordini (NroOrdine, Data, CodCliente) CREATE TABLE Ordini( NroOrdine CHAR(5) PRIMARY KEY, Data DATE, CodCliente CHAR(3) ); REFERENCES Clienti(CodCliente)

26 Il database Prodotti Premiere (V) Articoli(NroArt, Descrizione, Giacenza, Categoria, PrezzoUnitario) CREATE TABLE Articoli( NroArt CHAR(4) PRIMARY KEY, Descrizione CHAR(20), Giacenza DECIMAL(4,0), Categoria CHAR(2), PrezzoUnitario DECIMAL(6,2) );

27 Il database Prodotti Premiere (VI) DettOrdini (NroOrdine, NroArt, QtaOrd, PrezzoRichiesto) CREATE TABLE DettOrdini( NroOrdine CHAR(5) REFERENCES Ordini(NroOrdine), NroArt CHAR(4) REFERENCES Articoli(NroArt), PRIMARY KEY (NroOrdine, NroArt), QtaOrd DECIMAL(3,0), PrezzoRichiesto DECIMAL(6,2) );

28 Esercitazione con MySQL Creare ed utilizzare il database Prodotti Premiere mysql> CREATE DATABASE Premiere; mysql> USE Premiere; Creare le tabelle del database, per es. mysql> CREATE TABLE Rappresentanti (..); Verificare l avvenuta creazione delle tabelle mysql> SHOW TABLES; Verificare la correttezza dello schema delle tabelle, per es. mysql> DESCRIBE Rappresentanti; Provare i comandi di modifica dello schema, per es. mysql> DROP TABLE Rappresentanti;