Gestione dati DML Statement. DML – Data Manipultion Language Unoperazione DML viene eseguita quando: aggiungendo nuove righe ad una tabella modificando.

Slides:



Advertisements
Presentazioni simili
Teoria e Tecniche del Riconoscimento
Advertisements

Sicurezza e concorrenza nelle basi di dati
Microsoft SQL Server 2008 Utilizzo. Creazione DataBase CREATE DATABASE CREATE DATABASE Cinema.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati.
SQL (Standard query language) Istruzioni per la creazione di una tabella: Create table ( tipo, (, [vincoli]) Primary key ( ) CHIVE PRIMARIA Foreign key(
WSDL (Web Services Description Language) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni
JPA Overview della tecnologia. Java Persistence Architecture Definita nella JSR-220 EJB 3.0 ( Tentativo di unificare EJB2.1 con.
MySQL ___.
Un DataBase Management System (DBMS) relazionale client/server.
MySQL Esercitazioni. Ripasso Connessione a MySQL. Creazione delle basi di dati e delle tablelle. Inserimento dei dati. Interrogazioni.
SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.
1. Conoscere luso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali.
Basi di dati attive Paolo Atzeni.
Application Code Dato Table Data Base Trigger Code 1° Controllo Procedure Client Side 3° Controllo Integrity Constraint 2° Controllo Event Driven BUSINESS.
SQL Esercitazione per il corso “Basi di Dati” Gabriel Kuper
SQL1 Structured Query Language Data Definition Language Data Manipulation Language Evoluzione Sequel IBM (1974) Standardizzazione ANSI/ISO: SQL-89, SQL-
SQL1 Modifica dei dati inserimento cancellazione modifica.
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 6: Classi e astrazione dati 1.Introduzione 2.Definizione delle strutture 3.Accedere ai membri.
New Features + Improvements Miglioramenti alle Situazioni contabili Distribuzione costi Intragruppo in registrazione fatture di acqusti Varie.
Players: 3 to 10, or teams. Aim of the game: find a name, starting with a specific letter, for each category. You need: internet connection laptop.
Sequence. CREARE UNA SEQUENCE CREATE SEQUENCE nome [INCREMENT BY n] [START WITH n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE]
SELECT STATEMENT Clausola WHERE permette di limitare il numero di record da estrarre SELECT */ [DISTINCT] colonna/ espressione [alias],… FROM table [WHERE.
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
PRODOTTO CARTESIANO Otteniamo un prodotto cartesiano quando: viene omessa la condizione di join una condizione di join non è valida tutte le righe della.
FUNZIONI DI GRUPPO Le funzioni di gruppo operano su un set di record restituendo un risultato per il gruppo. AVG ([DISTINCT|ALL] n) media, ignora i valori.
Creazione e manipolazione tabelle. TABELLE una tabella può essere creata in qualsiasi momento,anche quando gli utenti stanno usando il database la struttura.
Constraints.
SQL basato su ANSI (American National Standards Institute) – standard SQL SQL – Structured Query Language è un linguaggio dichiarativo e permette di comunicare.
SQL per la definizione di basi di dati SQL non è solo un linguaggio di interrogazione (Query Language), ma Un linguaggio per la definizione di basi di.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
1. Progettare il seguente DataBase in relazione ai due esempi presenti in piattaforma, Modulo 4, esempi 1 e 2: Considerare le informazioni per la gestione.
Corso di Basi di Dati Un esempio di RDBMS: Il tool MySQL
Professional Users. Per poter lavorare sul Dizionario, bisogna registrarsi come Utente Professionale – Professional User (solo.
Fondamenti di Informatica Corsi di Laurea in Ingegneria Gestionale Canale AL ESERCITAZIONE 4 ARGOMENTI: STRINGHE DI CARATTERI.
Università degli studi di Catania
JavaScript Lezione 5 Tipizzazione ed operazioni tra tipi diversi Istruzioni di input.
Filtered Index and Statistics Filtered Indexes Sergio Govoni
C OME CREARE I FRAME. Dal pannello File fai doppio clic sul file default.html per aprire la pagina (figura 1.1). Figura 1.1 Il file default.html.
Creare grafici con un foglio di calcolo Copyright© owned by Ubaldo Pernigo, please contact: Tutti i contenuti, ove non diversamente.
Moduli o Form I Moduli permettono all'utente di immettere informazioni...
Project Review byNight byNight December 6th, 2011.
Attribution-NonCommercial-ShareAlike Le novità
24 aprile 2002 Avvisi: Risultati 1 o Esonero: (entro) lunedi 27 disponibili nella pag. WEB, ma anche esposti nella bacheca fuori dal corridoio 2 o dente,
Personalizzazione e porting delle procedure esterne connesse ad Aleph Il caricamento degli utenti della circolazione da files esterni Modifiche introdotte.
Project Review Novembrer 17th, Project Review Agenda: Project goals User stories – use cases – scenarios Project plan summary Status as of November.
Project Review byNight byNight December 21th, 2011.
Project Review byNight byNight December 6th, 2011.
Project Review Novembrer 17th, Project Review Agenda: Project goals User stories – use cases – scenarios Project plan summary Status as of November.
Project Review byNight byNight December 5th, 2011.
SUBQUERY Chi ha un salario maggiore di quello di Abel? Occorre scomporre la query in due sotto problemi: MAIN : quali impiegati hanno un salario maggiore.
Dato Table Data Base Application Code 1° Controllo Procedure Client Side 3° Controllo Integrity Constraint Trigger Code 2° Controllo Event Driven BUSINESS.
1 Basi di dati (Sistemi Informativi) Scuola di Dottorato in Scienze Veterinarie per la Salute Animale e la Sicurezza Alimentare a.a Ing. Mauro.
Collection & Generics in Java
YOUR ITALIAN CV Step-by-step guide to create CURRICULUM VITAE in Italian language.
Sistemi di elaborazione dell’informazione Modulo 3 -Protocolli applicativi Unità didattica 4 - Protocolli del Web Ernesto Damiani Lezione 3 – Esempi HTTP.
CREAZIONE UTENTE SU DATATOP. CREAZIONE UTENTE Andate su //datatop.di.unipi.it/webdb Login come utente: webdb password: ****** Administer -> User Manager.
SQL Developer Lanciare sqldeveloper (alias sul desktop) / c:\Oracle\sqldeveloper Associare tutti i tipi di file, se volete Tasto destro sulla spina “connection”
Dynamic SQL.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati.
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Microsoft Access E’ un programma utile per lo sviluppo di applicazioni gestionali che si appoggiano a una base dati.
Microsoft Access E’ un programma utile per lo sviluppo di applicazioni gestionali che si appoggiano a una base dati.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Corso di Basi di Dati Il Linguaggio SQL
ABAP Objects ALV Grid Mantova, 30 dicembre 2018.
SQL per la modifica di basi di dati
Transcript della presentazione:

Gestione dati DML Statement

DML – Data Manipultion Language Unoperazione DML viene eseguita quando: aggiungendo nuove righe ad una tabella modificando le righe esistenti di una tabella cancellando righe da una tabella Una transazione consiste in un insieme di statement DML che formano ununità logica di lavoro.

INSERT Sintassi per inserire righe in una tabella INSERT INTO tabella [(colonna, [,colonna…])] VALUES (value [,value]); Con questa sintassi verrà inserita solo una riga per volta

INSERT inserire valori per ciascuna colonna della tabella la lista di valori deve comparire nellordine delle colonne nella tabella non è obbligatorio inserire la lista delle colonne nella clausola insert, per quanto sia consigliabile per chiarezza usare gli apici per inserire valori quali caratteri e date

INSERIMENTO DI VALORI NULLI Metodo implicito: omettere la colonna nela lista INSERT INTO departments (department_id, department_name) VALUES (30, Nuovo dipartimento); Metodo espicito : specificare NULL nella clausola VALUES INSERT INTO departments VALUES (30, Nuovo dipartimento, NULL, NULL);

ERRORI DI INSERIMENTO tentativo di inserire un valore nullo per una colonna definita NOT NULL duplicazione di valori che violano il constraint di unicità foreign key constraint violato violato constraint CHECK (assicurano lintegrità di una colonna limitando i valori accettati da una colonna) tipo di dato non coerente con la definizione della colonna valore troppo grande per la colonna

INSERT È possibile utilizzare funzioni speciali per inserire valori nella tabella. INSERT INTO employees (employee_id, first_name, last_name, , phone_number, hire_date, jod_id, salary, commission_pct, manager_id, department_id) VALUES (113, Luis, Popp, LPOPP, , SYSDATE, AC_ACCOUNT, 6900, NULL, 205, 100);

INSERT Esempio di inserimento campo data INSERT INTO employees VALUES (113, Den, Raphealy, DRAPHELY, , TO_DATE(FEB 3, 1999,MON DD, YYYY), AC_ACCOUNT, 11000, NULL, 205, 100); Normalmente la data viene inserita nel formato DD-MON-YY. Se deve essere inserita in un formato differente occorre usare la funzione TO_DATE per specificarne il formato.

INSERIMENTO DI PIÙ RIGHE scrivere uno statement INSERT con una subquery non usare la clausola VALUES scrivere la giusta corrispondenza tra i campi della tabella e quelli della subquery e verificare i data type INSERT INTO sales_reps (id, name, salary, commission_pct) SELECT employee_id, last_name, salary, commission_pct FROM employees WHERE job_id LIKE %REP%;

INSERT CON LE SUBQUERY INSERT INTO (SELECT employee_id, last_name, , hire_date, job_id, salary, department_id FROM employees WHERE department_id = 50) VALUES (99999, Taylor, DTAYLOR, TO_DATE(07-JUN-99,DD-MON-YY), ST_CLERK,500,50); La select list della subquery deve avere lo stesso numero di colonne della lista valori nella clausola VALUES.

COPIA DI TABELLE mantenendo valide le regole della slide precedente per creare una copia della tabella usare SELECT * INSERT INTO copy_emp SELECT * FROM employees;

MODIFICA DEI DATI IN UNA TABELLA usare lo statement UPDATE per modificare le righe in una tabella UPDATE table SET colonna = valore [, colonna = valore, …] [WHERE condizione]; se richiesto è possibile modificare più righe contemporaneamente (con lo stesso statement) utilizzare la primary key per isentificare una singola riga. Utilizzare le altre colonne può causare la modifica involontaria di più righe

MODIFICA DEI DATI IN UNA TABELLA specificare la riga o le righe che devono essere modificare con la clausola WHERE UPDATE employees SET department_id = 70 WHERE employee_id = 113; omettendo la clausola WHERE verranno modificate tutte le righe della tabella UPDATE copy_emp SET department_id = 110;

MODIFICA COLONNE CON UNA SUBQUERY modificare job_id e salario dellimpiegato 114 con i dati dellimpiegato 205 UPDATE employees SET job_id = (SELECT job_id FROM employees WHERE employee_id = 205), salary = (SELECT salary FROM employees WHERE employee_id = 205) WHERE employee_id = 114;

UPDATE è possibile modificare il campo di una tabella assegnado un valore proveniente da unaltra tabella UPDATE copy_emp SET department_id = (SELECT department_id FROM employees WHERE employee_id = 100) WHERE job_id = (SELECT job_id FROM employees WHERE employee_id = 200);

ERRORI: INTEGRITY CONSTRAINT UPDATE employees SET department_id = 55 WHERE department_id = 110; UPDATE employees * ERRORE at line 1: ORA-02291: integrity constraint (HR.EMP_DEPT_PK) violated - Parent key not found si è cercato di modificare un record con un valore che viola il vincolo di integrità. Nella tabella DEPARTMENTS (tabella parent) non esiste il record 55

DELETE È possibile cancellare righe da una tabella usando lo statement DELETE DELETE [FROM] tabella [WHERE condizione; NOTA: se nessuna riga viene cancellata viene restituito il messaggio 0 rows deleted

DELETE specificare le righe da cancellare con la clausola WHERE DELETE FROM departments WHERE department_name = Finance; tutte le righe della tabella verranno cancellate se si omette la clausola WHERE DELETE FROM copy_emp;

DELETE È possibile cancellare righe da una tabella usando i valori di unaltra tabella DELETE FROM employees WHERE department_id = (SELECT department_id FROM departments WHERE department_name LIKE %Public%);

ERRORI: INTEGRITY CONSTRAINT DELETE FROM departments WHERE department_id = 60; DELETE FROM departments * ERRORE at line 1: ORA-02292: integrity constraint (HR.EMP_DEPT_PK) violated - Child record found si è cercato di modificare un record con un valore che viola il vincolo di integrità. Cercando di cancellare il dipartimento 60 ritorna un errore perché il numero di dipartimento è usato dalla foreign key della tabella employees

WITH CHECK OPTION una subquery è usata per identificare una tabella e le colonne di uno statement DML WITH CHECK OPTION indica che non è permesso fare modifiche (INSERT; UPDATE, DELETE) alle righe che non sono nella subquery INSERT INTO (SELECT employee_id, last_name, , hire_date, job_id, salary FROM employees WHERE department_id = 50 WITH CHECK OPTION) VALUES (99999, Smith, JSMITH, TO_DATE(07-JUN-99,DD-MON-YY), ST_CLERK,5000); La subquery identifica le righe che sono del dipartimento 50, ma il campo department_id non è nella select list, quindi il valore non è fornito per esso nella VALUES list. Inserendo questa riga risulterebbe il department_id nullo ma non è così nella subquery

MERGE è possibile effettuare una insert o unupdate in base a certe condizioni usando lo statement MERGE MERGE INTO tabella alias_tabella INTO indica la tabella in cui verrà fatto linsert o lupdate USING (tabella|vista|subquery) alias indica la sorgente dati per linserimento o lupdate ON (condizione di join) WHEN MATCHED THEN UPDATE SET col1 = col_val1, col2 = col2_val WHEN NOT MATCHED THEN INSERT (lista_colonne) VALUES (lista_valori);

MERGE Esempio MERGE INTO copy_emp c USING employees e ON (c.employee_id = e.employee_id) WHEN MATCHED THEN UPDATE SET c.first_name = e.first_name; c.last_name = e.last_name … c.department_id = e.department_id WHEN NOT MATCHED THEN INSERT VALUES(e.employee_id, e.first_name, e.last_name, e. , e.phone_number, e.hire_date, e.job_id, e.salary, e.commission_pct, e.manager_id, e.department_id); Inserisce o modifica i dati nella tabella copy_emp utilizzando i record della tabella employees