Mattia Fazzi: 14/05/2019

Documenti analoghi
Mattia Fazzi: 02/04/2019

Mattia Fazzi: 26/3/2019

Sistemi di Elaborazione delle Informazioni

Laboratorio di Basi di Dati e Multimedia

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

Manuale SQL. Manuale SQL - 1 -

SQL: DDL, VI, Aggiornamenti e Viste

Laboratorio di Basi di Dati

Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata

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

Laboratorio di Basi di Dati

PRODOTTO CARTESIANO Caso Generale

Stringhe di caratteri

Interrogazioni nidificate

Basi di Dati: Corso di laboratorio

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

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

Informatica documentale Laurea in Scienze della Comunicazione Prova scritta del 25 giugno Cognome e nome: Matricola:

Corso di Basi di Dati

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

IL MODELLO RELAZIONALE

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

PROGETTAZIONE DI DATABASE Linguaggio SQL

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

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

Vincoli. Chiavi esterne Vincoli locali e globali Triggers Leggere Cap 2 Riguzzi et al. Sistemi Informativi

Il linguaggio SQL: DDL di base

Fondamenti di Informatica A. A / 1 9

Interpretazione delle query nidificate

Corso sul linguaggio SQL

A.A. 2018/2019. Esercitazione 12. Strutturazione di Istruzioni in Linguaggio SQL. [ Possibili Soluzioni ] FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE

Mattia Fazzi: 9/4/2019

Aspetti avanzati nella definizione degli schemi DDL2 1

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

LABORATORIO di INFORMATICA

Corso di. Basi di Dati I. 9. Esercitazioni in SQL: Check, asserzioni, viste

Basi di Dati Prof. L. Tanca e F. A. Schreiber APPELLO DEL 6 MARZO 2015 Tempo: 2h30m

BASI di DATI. SQL: concetti fondamentali

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

Corso di. Basi di Dati I. 11. Esercitazioni in SQL: Altri esercizi

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

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

insert into Dipartimento(NomeDip, Città) values('produzione','torino') insert into ProdottiMilanesi (select codice, descrizione from Prodotto

Inserimento. Cancellazione. Modifica. INSERT INTO Persone VALUES ('Mario',25,52) INSERT INTO Persone(Nome, Eta, Reddito) VALUES('Pino',25,52)

SQL - Structured Query Language

Basi di Dati e Sistemi Informativi

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

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

A.A. 2018/2019. Esercitazione 11. Strutturazione di Istruzioni in Linguaggio SQL. [ Possibili Soluzioni ] FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE

SQL. SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe

Prova Scritta di Basi di Dati

Interrogazioni nidificate

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

Fondamenti di Informatica e Programmazione

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

ESERCIZI SQL. Esercizio 1

Basi di Dati SQL-92. Concetti Fondamentali

Basi di Dati CREAZIONE E POPOLAMENTO DI UNA BASE DI DATI

PROGETTAZIONE DI DATABASE

Basi di Dati. Esercitazione Algebra Relazionale e SQL. Ing. Paolo Cappellari. 15 maggio 2006

Metodi per la Gestione dei Dati (lezioni di laboratorio)

Il linguaggio SQL. Il linguaggio SQL

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL

SQL: Definizione e Manipolazione di Relazioni. Capitolo 2

Laboratorio di Basi di Dati Esercizio 8.4/9.1

ESERCITAZIONE: Fornitore-Fornisce-Articolo

Laboratorio di Sistemi Informativi

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

Soluzione esercitazione 01

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

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

Structured Query Language

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

Primo Compitino di Basi di Dati

D B M G 2. Linguaggio SQL: fondamenti. Istruzioni di aggiornamento. Introduzione Istruzione INSERT Istruzione DELETE Istruzione UPDATE

Archivi e basi di dati - ing. M. Cossentino. Settore. Traccia 1. Traccia 200. Settore non polarizzato

Elena Baralis 2007 Politecnico di Torino 1

8 SQL : Check, Asserzioni,Viste

Linguaggio SQL: costrutti avanzati D B M G

Elena Baralis 2013 Politecnico di Torino 1

Linguaggio SQL: costrutti avanzati Controllo dell accesso

Basi di Dati: Corso di laboratorio

Principi di Progettazione del Software a.a Il linguaggio SQL. Linguaggi per DBMS

Corso di Informatica Medica

Basi di Dati Corso di Laura in Informatica Umanistica

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

Fondamenti di Informatica 2

Corso di Basi di Dati

Esercitazione 4 SQL.

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

Basi di Dati. Esercitazione SQL. 18 maggio 2007

SQL - Structured Query Language

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

Informatica Grafica. Basi di dati parte 2

Linguaggio SQL: fondamenti D B M G

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

Elena Baralis 2007 Politecnico di Torino 1

SQL Avanzato. Interrogazioni e il valore NULL. Interrogazioni complesse, trigger, viste e modifiche dello schema. Giorgio Giacinto 2015

Transcript:

Mattia Fazzi: mattia.fazzi@student.unife.it 14/05/2019

SQL Linguaggio utilizzato per definire i dati nel database. Definire i vincoli. Possibilità di creare, modificare e eliminare le tabelle.

CREATE TABLE Comando utilizzato per creare una tabella dato il nome. Ogni attributo ha un tipo ben definito: INTEGER, FLOAT, CHAR(n),... Possibilità di aggiungere vincoli su ogni attributo: NOT NULL specifica che il valore non può essere vuoto

CREATE TABLE Possiamo aggiungere vincoli di chiave primaria, vincoli di integrità referenziale e vincoli di unicità. ES: CREATE TABLE STUDENT ( NAME VARCHAR(20) NOT NULL, SURNAME VARCHAR(20) NOT NULL, EMAIL VARCHAR(30) NOT NULL, SSN VARCHAR(20), PRIMARY KEY(EMAIL), SSN UNIQUE );

DROP TABLE Comando per rimuovere una relazione dal database. La tabella non potrà più essere utilizzata in qualsiasi altra query. ES: DROP TABLE STUDENT;

ALTER TABLE Comando utilizzato per modificare una relazione. L attributo aggiunto avrà valore NULL in tutte le tuple create precedentemente la modifica e per questo motivo il NOT NULL non è permesso. In ogni caso, le tuple create precedentemente possono essere modificate con il comando UPDATE. ES: ALTER TABLE STUDENT ADD SEX VARCHAR(1);

CREATE SCHEMA Specifica il nuovo schema del database. Nello schema del database vengono memorizzate tutte le informazioni riguardanti il database: Tabelle Attributi delle tabelle Vincoli

OPZIONI DI INTEGRITA REFERENZIALE Nel momento in cui una tabella viene cancellata o modificata, si possono definire dei comportamenti che assumeranno i valori che puntano ad attributi di quella tabella per evitare situazioni impreviste. Keywords: RESTRICT: impedisce la modifica nella tabella a cui punta CASCADE: aggiorna il valore se l attributo viene modificato nella tabella puntata SET NULL: aggiorna il valore a NULL SET DEFAULT: aggiorna il valore a un valore definito di default.

OPZIONI DI INTEGRITA REFERENZIALE ES: CREATE TABLE STUDENT ( CORSO_DI_LAUREA DEFAULT 0, CORSO_DI_LAUREA INTEGER REFERENCES ID_CORSO ON DELETE SET DEFAULT ON UPDATE CASCADE);

TIPI ADDIZIONALI DATE: Formato utilizzato per le date: yyyy-mm-dd TIME: Formato utilizzato per un orario: hh:mm:ss TIME(i): Formato utilizzato per un orario in cui possiamo specificare i millisecondi TIMESTAMP: Formato che contiene sia data sia orario.

OPERAZIONI DI MODIFICA:INSERT Comando utilizzato per inserire uno o più tuple in una tabella. Gli attributi inseriti possoono essere nello stesso ordine in cui sono specificati nella CREATE TABLE oppure si può specificare quali attributi verranno definiti in fase di inserimento. ES: INSERT INTO STUDENTS (NAME, SURNAME, EMAIL) VALUES ( MATTIA, FAZZI, mattia.fazzi@student.unife.it )

OPERAZIONI DI MODIFICA:DELETE Rimuove tutte le tuple da una tabella che soddisfano la condizione specificata nella clausola WHERE. Se non specificata la clausola WHERE, verranno eliminate tutte le tuple. Bisogna prestare particolare attenzione ai vincoli delle altre tabelle che puntano agli attributi della tabella da cancella perché potrebbero bloccare la cancellazione. ES: DELETE FROM STUDENTS WHERE NAME = MATTIA

OPERAZIONI DI MODIFICA:UPDATE Comando utilizzato per modificare gli attributi di una o più tuple. Se inserita la clausola WHERE, verranno modificate solo le tuple che soddisfano la clausola. In questo caso deve essere presente la clausola SET per specificare con quale valore si modificherà l attributo. ES: UPDATE STUDENTS SET ID_CORSO = 3 WHERE ID_CORSO = 2

QUERY SQL Meccanismo per ottenere i dati dal database. Formato: SELECT <attributi> FROM <tabelle> WHERE <condizioni> ES: SELECT NAME, SURNAME FROM STUDENTS WHERE ID_CORSO = 1

ALIASES E possibile che due tabelle utilizzino lo stesso nome per un attributo e questo renderebbe difficile per il DBMS capire a quale attributo fare riferimento. Per questo motivo si utilizzano gli alias per rendere tutto più chiaro e univoco. ES: SELECT S.NAME, S.SURNAME, E.NAME, E.SURNAME FROM STUDENTS AS S, STUDENTS AS E WHERE E.SUPERSSN = S.SSN

ASTERISCO (*) L asterisco si utilizza per ottenere tutti gli attributi delle relazioni specificate nella clausola FROM. ES: SELECT * FROM STUDENTS WHERE ID_STUDENTE = 1 Seleziono tutti i valori dello studente con id = 1

DISTINCT La keyword distinct serve per eliminare tutti i valori duplicati di una query. ES: SELECT DISTINCT NAME, FROM STUDENTS In questo caso non ho la clausola WHERE quindi selezionerò tutti i nomi degli studenti ed eliminerò i duplicati.

OPERAZIONI E possibile eseguire delle operazioni insiemistiche tra le query. Operazioni: Unione: unione di due risultati di due differenti query (UNION) Differenza: eliminare dai risultati della prima query i risultati presenti anche nella seconda query (MINUS) INTERSEZIONE: selezionare le tuple di una query che compaiono anche nella seconda (INTERSECT) In ogni caso, le tuple duplicate verranno eliminate. E importante che le tuple delle due query abbiano lo stesso set di attributi.

QUERY INNESTATE Le query innestate vengono utilizzate quando è complicato definire determinati valori di attributi nella clausola WHERE e risulterebbe molto più comodo prima selezionarli con una select e successivamente utilizzare i valori trovati per selezionare solamente alcune tuple di una determinata tabella. Possiamo avere più livelli di query innestate.

EXISTS e IN EXISTS viene utilizzato nella clausola WHERE quando si vogliono tutte quelle tuple che ESISTONO anche in un altra query. ES: SELECT NAME FROM STUDENTS WHERE EXISTS ( SELECT * FROM PROFESSOR) In questo caso, si vogliono trovare tutti i nomi che hanno sono in comune tra la relazione studente e la relazione professore.

EXISTS e IN La keyword IN viene utilizzata insieme a un attributo a cui fare riferimento. ES: SELECT * FROM STUDENTS WHERE NAME IN (SELECT NAME FROM PROFESSOR)

JOIN Specificata in una clausola FROM, JOIN permette di correlare due tabelle. L attributo su cui viene fatto la join è la foreign key di una tabella e chiave nell altra. La join può essere fatta su più tabelle, sempre rispettando i valori dell attributo da mettere in correlazione. ES: SELECT S.NAME, S.SURNAME FROM STUDENTS AS S JOIN CORSO_DI_LAUREA AS C ON S.ID_CORSO = C.ID WHERE C.NAME = INFORMATICA

FUNZIONI DI AGGREGAZIONE COUNT(*): conta tutti le tuple presenti nel risultato di una query. SUM(<attributo>): Somma tutti i valori presenti nella colonna risulato della query MIN(<attributo>): Trova il minimo valore dell attributo presente nel risultato della query. MAX(<attributo>): Trova il massimo valore dell attributo presente nel risultato della query. AVG(<attributo>): calcola la media dei valori dell attributo presente nel risultato della query.

AGENZIA DI VIAGGI Un agenzia di viaggi vi commissiona il database per la loro piattaforma online su cui i clienti (nome, cognome, sesso, codfiscale, data nascita, data iscrizione) possono contattare direttamente un agente di viaggio (nome, cognome, sesso, data nascita, data assunzione, codfiscale) tramite messaggi (testo, data invio) per chiedere informazioni riguardo a offerte del sito. Le offerte (costo, data creazione, durata di validità, durata della vacanza) sono pacchetti composti da: un pernottamento in un hotel (nome, città, indirizzo, #stelle, email hotel) o in B&B(nome, città, indirizzo, email proprietario, nome proprietario) e modalità di viaggio se previsto (mezzo di trasporto, città partenza, città arrivo, durata del viaggio, costo). L agente di viaggio deve completare la prenotazione(data prenotazione, data partenza, data ritorno, costo complessivo) dell offerta da parte di un cliente.

SQL Selezionare le offerte che costano almeno 200 euro. Selezionare il nome e indirizzo dei soggiorni che si trovano a firenze. Selezionare la data partenza e data ritorno delle prenotazioni che hanno costo complessivo minore di 350 euro e che sono state prenotate dopo il 2016. Selezionare il nome degli agenti di viaggio che hanno effettuato una prenotazione con costo complessivo maggiore di 400 euro. Selezionare le offerte che comprendono soggiorni che si trovano a milano.

PALESTRA Il CUS vi incarica di progettare il nuovo database della centro sportivo. Ogni utente (nome, cognome, data nascita, sesso, codice fiscale) sarà un cliente (data iscrizione) o un personal trainer (data assunzione). Ogni cliente può iscriversi a determinati corsi (nome, tipologia, descrizione) che saranno tenuti da un personal trainer. Ogni cliente può prenotare una seduta di allenamento che sarà supervisionata da un personal trainer. La prenotazione avrà data, orario e durata della seduta. Ogni utente può essere iscritto a un determinato club sportivo (tipologia e nome allenatore) che si terrà in una specifica palestra (nome, città, indirizzo). Ogni utente può decidere di comprare un abbonamento (identificativo, durata, data inizio, data fine) o di comprare un numero generico di entrate(numero entrate: 10,20 o 30, data acquisto, data validità).

SQL Selezionare gli utenti che si sono iscritti dopo settembre 2017. Selezionare il nome e il cognome dei personal trainer femmine. Selezionare le sedute di allenamento con durata superiore a 60 minuti. Selezionare il nome e il cognome dei personal trainer che hanno tenuto una seduta di allenamento prima delle ore 15. Selezionare l indirizzo delle palestre che sono sede del club allenato da «Ciccio Graziani». Selezionare il nome, cognome e sesso dei personal trainer tengono un corso a cui è iscritto almeno un cliente che ha un abbonamento che finiscee dopo gennaio 2019.

RAGGRUPPAMENTO Contare quanti maschi hanno sottoscritto un abbonamento da 10 ingressi. Trovare il nome e cognome del personal trainer più giovane. Calcolare la media dell età delle persone iscritta al corso di tipologia «Crossfit»