Basi di dati e sistemi informativi I



Похожие документы
Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Basi di Dati: Corso di laboratorio

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

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

SQL PER LA DEFINIZIONE DI BASI DI DATI

Definizione di domini

SQL Sintassi Dei Comandi

SQL (STRUCTURED QUERY LANGUAGE)

Il linguaggio SQL: le basi

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

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

SQL non è solo un linguaggio di interrogazione (Query Language), ma. Un linguaggio per la definizione di basi di dati (Data-definition language (DDL))

Gestione delle tabelle

Soluzione DDL ed Algebra Relazionale

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

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

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

Lezione 8. Metadati, Viste e Trigger

MySQL Database Management System

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

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

DBMS (Data Base Management System)

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.

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

Introduzione a MySQL

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

SQL. Alcune note sulla definizione dei dati

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

Preparazione. Introduzione a MySQL: costruzione di una base di dati e gestione degli accessi. Accesso all area condivisa. Avvio Server MySQL

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Corso sul linguaggio SQL

PROGRAMMA DI CLASSE 5AI

Nozione ed uso. Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso:

Istruzioni DML di SQL

MAX, SUM, AVG, COUNT)

Implementazione in Oracle di un semplice progetto

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

Informatica per le discipline umanistiche 2 lezione 10

SQL Server. SQL server e un RDBMS di tipo client/server che utilizza Transact-SQL per gestire la comunicazione fra un client e SQL Server

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

Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica

Basi di dati e Sistemi informativi aziendali


Corso di Informatica Generale 1 IN1. Linguaggio SQL

MySQL Command Line Client: operazioni fondamentali

Il linguaggio SQL: DDL di base

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

SQL (STRUCTURED QUERY LANGUAGE)

Volumi di riferimento

Laboratorio di Basi di Dati e Web

Linguaggio SQL: fondamenti. Basi di dati. Elena Baralis Pag. 1. Linguaggio SQL: fondamenti. Sistemi informativi. Introduzione

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

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro)

Indice generale. Capitolo 3 Introduzione a PHP...43 Sintassi e istruzioni di base Variabili, operatori e commenti Array...

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

DUE GRUPPI DI COMANDI

Nella relazione CINEMA, Nome è chiave secondaria. Nella relazione FILM, CodRegista, e CodProtagonista sono chiavi esterne sulla tabella PERSONE.

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

SQL: Concetti Base -Prima Parte-

Manuale utente Volta Control

GERARCHIE RICORSIVE - SQL SERVER 2008

2104 volume III Programmazione

Vincoli di Integrità Approccio dichiarativo alla loro implementazione

User Tools: DataBase Manager

Esercitazione: Il DBMS MySQL

PHP e Structured Query Language

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro) ESERCIZIO 3

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

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:

********************* MODIFICA STRUTTURA DI UNA TABELLA (inserimento di un nuovo campo) ALTER TABLE Personale ADD Nascita date;

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

Le query. Lezione 6 a cura di Maria Novella Mosciatti

Esercitazione 1. Sistemi Informativi T. Versione elettronica: L01.2.DDLDMLbase.pdf

Sistemi Mobili e Wireless Android - Dati persistenti: SQLite

Corso sul linguaggio SQL

Vincoli di Integrità

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

OSSIF WEB. Manuale query builder

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

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

TRIGGER Regole Attive (Trigger) OLD_TABLE NEW_TABLE old new

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

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

Corso di Laboratorio di Basi di Dati

Il DBMS Oracle. Express Edition. Donatella Gubiani e Angelo Montanari

Esercitazione PAM. (Php Apache MySQL)

Istruzioni SQL 1. Query di selezione 2 Istruzione SELECT 2 Istruzione SELECT DISTINCT 2 ORDER BY 3 WHERE 3 La condizione LIKE 4 BETWEEN AND 5

Esercitazione 01: DDL e DML di base

Capitolo 4. Soluzione: Soluzione: Create domain STRING as character varying (256) default sconosciuto not null

Linguaggio SQL. Structured Query Language

SQL Manuale introduttivo

Capitolo 7. Esercizio 7.1

Definizione e manipolazione dei dati in SQL

Транскрипт:

Basi di dati e sistemi informativi I mod. laboratorio Alessandro De Luca Università degli Studi di Napoli Federico II Lezione, 11 marzo 2015

Soluzione 1, creazione CREATE TABLE Impiegato ( Cod NUMBER(4), Nome VARCHAR2(40), Cognome VARCHAR2(40) NOT NULL, Data_Assunto DATE NOT NULL, Stipendio NUMBER(8,2), Capo NUMBER(4), CONSTRAINT Impiegato_PK PRIMARY KEY (Cod), CONSTRAINT Impiegato_FK FOREIGN KEY (Capo) REFERENCES Impiegato (Cod) ) / A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 2 / 28

Soluzione 1, inserimento dati INSERT INTO Impiegato(Cod,Nome,Cognome,DataAssunto,Stipendio) VALUES (3,'Andrea','Verdi', TO_DATE('03/06/2010','DD/MM/YYYY'),5000); Poi INSERT INTO Impiegato(Cod,Nome,Cognome,DataAssunto,Stipendio,Capo) VALUES (2,'Alberto','Bianchi','02/01/2012',4000,3); INSERT INTO Impiegato VALUES (1,'Alessandro','Rossi','03/01/2013',3000,2); e tutti gli altri. A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 3 / 28

Soluzione 2 1 Email impiegati con stipendio 3000: SELECT LOWER(SUBSTR(Nome,1,1) Cognome) '@lazienda.it' AS Email FROM Impiegato; WHERE Stipendio <= 3000; 2 Sottoposti di Bianchi assunti da più di 6 mesi: SELECT I.Nome, I.Cognome FROM Impiegato I, Impiegato C WHERE MONTHS_BETWEEN(SYSDATE,I.Data_Assunto) > 6 AND I.Capo = C.Cod AND C.Cognome = 'Bianchi'; A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 4 / 28

Tracce 2014/15 Oltre che sul gruppo Google unina-bdi-2014-15, le tracce complete per i progetti di Software Repository 1 versioning e gestione issues 2 progettazione, implementazione 3 testing sono ora disponibili nel file tracce.txt. A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 5 / 28

Uso di SQL Developer Il primo passo è configurare connessioni (dal pannello a sinistra) Per usarlo con un Oracle DB locale, impostare localhost come host e 1521 come porta (a meno di non averla cambiata durante l installazione) Per creare altri utenti/schemi (consigliato), creare prima una connessione per l utente SYSTEM, poi... A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 6 / 28

Creazione utenti 1 Aprire la connessione a SYSTEM 2 Clic destro su Altri utenti 3 Selezionare Crea utente... 4 Configurazione consigliata: Tablespace USERS, temporanea TEMP Ruoli CONNECT e RESOURCE Privilegi: almeno CREATE TABLE, VIEW, PROCEDURE, SEQUENCE, TRIGGER, SYNONYM, TYPE Quota illimitata su USERS 5 In seguito si potrà creare una connessione al nuovo utente A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 7 / 28

Ancora stringhe: TRANSLATE TRANSLATE(stringa, da, verso) rimpiazza ordinatamente tutte le occorrenze di caratteri in da con i corrispondenti in verso. Esempio SELECT TRANSLATE('il mio file*', '* ''', ' ') AS Filename FROM DUAL; FILENAME il_mio_file_ A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 8 / 28

Espressioni regolari in Oracle Modelli (pattern) che individuano un insieme di stringhe, permettendo operazioni di ricerca e sostituzione più flessibili. Utilizzabili in: REGEXP_LIKE(stringa, pattern) Vero se (parte di) stringa verifica il modello pattern. REGEXP_SUBSTR(stringa, pattern [,pos,n]) Estrae un occorrenza in stringa di una sottostringa (massimale) verificante pattern (n-esima a partire da pos). REGEXP_INSTR(stringa, pattern [,pos,n]) Restituisce la posizione di un occorrenza ecc. REGEXP_REPLACE(stringa, pattern, rimpiazzo [,pos,n]) Sostituisce con rimpiazzo sottostringhe massimali verificanti pattern (tutte, se n è omesso o 0). A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 9 / 28

Sintassi dei modelli regexp Caratteri Interpretazione. (punto) Qualsiasi carattere [ ] Uno fra i caratteri racchiusi; pure con -, es.: [a-z] [^ ] Uno fra i caratteri non racchiusi * Zero o più occorrenze (del carattere o espressione immediatamente precedente) + Una o più occorrenze? Nessuna o una occorrenza {m,n} Da m a n occorrenze ^ Inizio della stringa $ Fine della stringa ( ) Raggruppamento, richiamabile con \1, \2,... Alternativa fra raggruppamenti \ Il carattere che segue, se non numerico, va interpretato letteralmente A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 10 / 28

Esempi SELECT RTRIM(REGEXP_SUBSTR('http://mio.sito.com/pagina.html', '[a-z0-9]+\.[a-z][a-z]+/'),'/') AS Dominio FROM DUAL; DOMINIO sito.com SELECT REGEXP_REPLACE('cosa?', '(.)', '\1-') AS Caratteri FROM DUAL; CARATTERI c-o-s-a-?- A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 11 / 28

Attenzione a REGEXP_LIKE SELECT Nome, Cognome FROM Docente WHERE REGEXP_LIKE(Cognome, '[aeiou]*'); NOME COGNOME...... Alessandro De Luca...... Normalmente basta che una sottostringa verifichi il modello; ^ (inizio stringa) e $ (fine) cambiano tale comportamento. Esempio REGEXP_LIKE('parola', 'a') vero, REGEXP_LIKE('parola', '^a') falso, -- come LIKE 'a%' REGEXP_LIKE('parola', '^[^P]+la$') vero A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 12 / 28

Altre funzioni e operatori Numeriche Aritmetiche: +, -, *, /, MOD, FLOOR, CEIL,... Esponenziazione: EXP, POWER, SQRT, LOG,... Trigonometriche e iperboliche: SIN, ACOS, TANH,...... Di conversione: Esempio TO _CHAR(numero,formato) TO _NUMBER(stringa,formato)... TO_CHAR(0.5, '90.99') ' 0.50') A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 13 / 28

Espressioni CASE Espressioni condizionali, utili nelle interrogazioni: CASE WHEN condizione1 THEN valore1 WHEN condizione2 THEN valore2... ELSE valoreelse END A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 14 / 28

Esempio di CASE SELECT Cognome, CASE WHEN Stipendio >= 4000 THEN 'Ricco' WHEN Stipendio < 1000 THEN 'Povero' ELSE 'Insomma' END AS Situazione FROM Impiegato; COGNOME SITUAZIONE Rossi Insomma Bianchi Ricco...... A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 15 / 28

Caso semplice: DECODE DECODE(originale,val_If1,val_Then1,val_If2,val_Then2,......,valElse) equivale a: CASE WHEN originale = val_if1 THEN val_then1 WHEN originale = val_if2 THEN val_then2... ELSE valelse END A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 16 / 28

Valori nulli: NVL2 e NVL NVL2(valore, senonnullo, senullo) equivale a: CASE WHEN valore IS NULL THEN senullo ELSE senonnullo END NVL(valore, senullo) equivale a: NVL2(valore,valore,seNullo) A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 17 / 28

DDL: RENAME, DROP TABLE e ALTER TABLE Ridenominazione: RENAME Tabella TO NuovoNome; Eliminazione tabelle: DROP TABLE Tabella [CASCADE CONSTRAINTS]; (le parentesi [ ] denotano argomenti opzionali) Aggiunta di vincoli: ALTER TABLE Tabella ADD CONSTRAINT NomeVincolo Vincolo; Esempio ALTER TABLE Neoassunto ADD CONSTRAINT Neoassunto_fk FOREIGN KEY(Cod) REFERENCES Impiegato(Cod); A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 18 / 28

Altre possibilità di ALTER TABLE RENAME COLUMN VecchioNome TO Nuovo; DROP (Colonna) [CASCADE CONSTRAINTS]; MODIFY PRIMARY KEY DISABLE CASCADE; ADD (Colonna Tipo); MODIFY (Colonna Tipo);... A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 19 / 28

DML, Popolamento: INSERT Istruzione di base: INSERT INTO Tabella(Colonne) VALUES (Valori); È anche possibile inserire dati calcolati e/o provenienti da altre tabelle: INSERT INTO Tabella(Colonne) Query; A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 20 / 28

Versione generale: INSERT ALL INSERT ALL INTO Tabella1(Colonne1) VALUES ( Valori1) INTO Tabella2(Colonne2) VALUES ( Valori2)... Query; dove i Valori possono essere anche nomi di colonne di Query. A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 21 / 28

Esempio d inserimento Date le tabelle: Rubrica(Codice, Tel1, Tel2, Cell, Email,... ) e Recapito(Codicepersona, Tipo, Valore,... ), inseriamo in Recapito i dati di Rubrica: INSERT ALL INTO Recapito(Codicepersona,Tipo,Valore) VALUES (Codice, 'Telefono',Tel1) INTO Recapito(Codicepersona,Tipo,Valore) VALUES (Codice, 'Telefono',Tel2) INTO Recapito(Codicepersona,Tipo,Valore) VALUES (Codice, 'Cellulare',Cell) INTO Recapito(Codicepersona,Tipo,Valore) VALUES (Codice, 'Posta elettr.',email) SELECT Codice,Tel1,Tel2,Cell,Email FROM Rubrica; A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 22 / 28

Aggiornamento: UPDATE UPDATE Tabella SET Colonna1=Valore1, Colonna2=Valore2,... ColonnaN=ValoreN WHERE Condizione; Esempio Aumentare del 10% lo stipendio degli assunti entro il 2011: UPDATE Impiegato SET Stipendio = Stipendio * 1.1 WHERE Data_Assunto < TO_DATE('01/01/2012','DD/MM/YYYY'); A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 23 / 28

Cancellare righe: DELETE DELETE FROM NomeTabella [WHERE Condizioni]; Riepilogo DDL («forma») DML («contenuto») CREATE ALTER DROP INSERT UPDATE DELETE A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 24 / 28

Aggiornamento/popolamento: MERGE MERGE INTO Tabella T USING (Query) F ON (T.Chiave=F.Chiave) WHEN MATCHED THEN UPDATE SET T.Colonna1=F.Colonna1,... T.ColonnaN=F.ColonnaN [DELETE WHERE NOT ( Condizione )] WHEN NOT MATCHED THEN INSERT (Chiave,Colonna1,... ) VALUES (F.Chiave,F.Colonna1,... ) [WHERE ( Condizione )]; A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 25 / 28

Esempio MERGE Aggiornare la tabella Neoassunto(Cod,Nome,Cognome,Filiale) con gli assunti dell ultimo anno (da Impiegato): MERGE INTO Neoassunto N USING (SELECT Cod, Nome, Cognome, Data_Assunto FROM Impiegato) F ON (N.Cod = F.Cod) WHEN MATCHED THEN UPDATE SET N.Nome = F.Nome, N.Cognome = F.Cognome, Filiale = 'Napoli' DELETE WHERE SYSDATE-F.Data_Assunto > 365 WHEN NOT MATCHED THEN INSERT (Cod,Nome,Cognome,Filiale) VALUES (F.Cod,F.Nome,F.Cognome,'Napoli') WHERE SYSDATE-F.Data_Assunto <= 365; A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 26 / 28

Creazione/popolamento: CREATE TABLE AS CREATE TABLE NomeTabella(Colonne) AS Query; Esempio CREATE TABLE Email(Cod,Indirizzo) AS SELECT Cod, LOWER(SUBSTR(Nome,1,1) Cognome) '@lazienda.it' FROM Impiegato; A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 27 / 28

Viste CREATE OR REPLACE VIEW NomeVista[(Colonne)] AS Query; Esempio CREATE OR REPLACE VIEW Lavora_xBianchi AS SELECT Nome, Cognome FROM Impiegato I1 WHERE Capo = (SELECT Cod FROM Impiegato I2 WHERE Cognome='Bianchi'); A. De Luca (Univ. Federico II) Basi di dati e sist. inf. I, laboratorio 11 marzo 2015 28 / 28