Copyright  Oracle Corporation, 1998. All rights reserved. 8 Manipulación de Datos.

Slides:



Advertisements
Presentaciones similares
Transacciones y Concurrencia en Oracle
Advertisements

integridad referencial
VISTAS (VIEWS) DEFINICIÓN Y OBJETIVO DE LAS VISTAS.
LENGUAJE ESTRUCTURADO DE CONSULTA “SQL”
Base de Datos Orientada a Objetos (OODBMS)
Modificación de datos.
Subconsultas Multi-Columna
Fernando Velasco
Maestría en Bioinformática Bases de Datos y Sistemas de Información SQL: DML Ing. Alfonso Vicente, PMP
EXPLAIN PLAN Cómo leer los resultados del EXPLAIN PLAN
4.3. Privilegios de usuarios
PL/SQL Francisco Moreno Universidad Nacional.
Transacciones (MySQL). Definición: Conjunto de sentencias que se tratan como una sola. Comienzan con BEGIN/START TRANSACTION; Se puede confirmar (COMMIT)
Control del Acceso de los Usuarios
Lenguaje SQL (Structured Query Language)
1 BD Activas: Motivación zLos SGBD convencionales son “pasivos”. Sólo ejecutan preguntas o transacciones realizadas por los usuarios o por los programas.
Bases de Datos Relacionales
16/04/ Sesión 11 Funciones y procedimientos Ing. Ricardo Inquilla.
PL/SQL Francisco Moreno Universidad Nacional.
Universidad del Cauca – FIET – Departamento de Sistemas
D Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados. Uso de SQL*Plus.
Subconsultas Avanzadas
Ing. Ricardo Carlos Inquilla Quispe
6 Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados. Visualización de Datos de Varias Tablas Utilizando Uniones.
Componentes sintácticos
Gestión de Objetos con Vistas de Diccionario de Datos
F Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados. Sintaxis de Unión en Oracle.
UNITA - IBARRA TRIGGERS
John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 11 Creando Vistas.
CAPITULO 10 Manejando Restricciones
COMANDOS DML DML son las siglas de Data Manipulation Language y se refiere a los comandos que permiten a un usuario manipular los datos en un repositorio,
SQL: DDL Francisco Moreno & Carlos Mario Zapata. SQL:DDL DDL: Lenguaje de Definición de Datos Permite crear objetos en la Base de Datos Tipos de Objetos:
Elaborado por: Guillermo Baquerizo I Término
Mayo de 2009Dos Ideas - La visión de Sistemas desde el Desarrollo Manipulación de Datos Conceptos básicos.
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 19 Extensiones de Oracle 9i para las sentencias DML y DDL.
Vista Externa de Una Base de Datos John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
Data Manipulation Language (DML) Lenguaje de Manipulación de Datos
LENGUAJE SQL.
SQL: DDL Francisco Moreno. SQL: DDL DDL: Lenguaje de Definición de Datos Permite crear objetos en la BD Tipos de objetos: - Tablas: corresponden a las.
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 0 Introducción.
Vista Externa de Una Base de Datos John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
Prof. De Bases de Datos: Lcdo. Luis Peña. El lenguaje más habitual para construir las consultas a bases de datos relacionales es SQL, Structured Query.
Diseña y administra base de datos avanzadas
E.U. Informática U.L.P.G.C. E.U. Informática U.L.P.G.C. Introducción a - 1 Introducción a Oracle.
SQL (Structured Query Language) Lenguaje orientado a bases de datos y sobre todo, al manejo de consultas; el objetivo principal de SQL es la realización.
Comandos de SQL Prog. Orientada a Eventos. Inserción de datos (INSERT) INSERT….VALUES INSERT INTO Tabla1 (Columna1, Columna2…) VALUES (‘ValorAlfa’, ValorNum…);
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
SQL Lenguaje Estructurado de Consultas. Structured Query Lenguaje (SQL). Lenguaje de acceso a bases de datos. Proyecto de Investigación de IBM. La mayoria.
Bases de Datos SQL.
ORACLE SQL - DCL.
Base de Datos I – Ing. Mary Carlota Bernal J. BASE DE DATOS I PL/SQL.
Copyright  Oracle Corporation, All rights reserved. 4 Visualización de datos de varias tablas.
Paralelización de operaciones
SQL: DDL.
6 Triggers ORACLE - II Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
Copyright  Oracle Corporation, All rights reserved. Agenda.
DLM Transact SQL Sesión I Introducción al SQL Server Uso de las herramientas de consultas del Transact SQL.
Copyright  Oracle Corporation, All rights reserved. 1 Escritura de sentencias SQL SELECT básicas.
Mtr. Adrián Monge Monge Educación 2015 Maestría, Mención en Administración de Proyectos ULACITMaestría, Mención en Administración de Proyectos 2012 Licenciatura,
Copyright  Oracle Corporation, All rights reserved. 2 Restricción y ordenación de datos.
JOB_HISTORY EMPLOYEE_ID (PK,FK) START_DATE (PK) END_DATE JOB_ID (FK) DEPARTMENT_ID (FK) EMPLOYEES EMPLOYEE_ID (PK) FIRST_NAME LAST_NAME.
Copyright  Oracle Corporation, All rights reserved. 12 Otros Objetos de la Base de Datos.
Copyright  Oracle Corporation, All rights reserved. 11 Creación de Vistas.
Querys a bases de datos con MS ACCESS. DEFINAMOS LOS TERMINOS: DML=Lenguaje de manipulación de datos Las sentencias DML permiten generar consultas para.
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
Copyright  Oracle Corporation, All rights reserved. 9 Creación y gestión de tablas.
6 Copyright © 2004, Oracle. Todos los derechos reservados. Trabajar con Tipos de Dato Compuestos.
Copyright  Oracle Corporation, All rights reserved. 6 Subconsultas.
Copyright  Oracle Corporation, All rights reserved. 10 Constraints (Restricciones)
Transcripción de la presentación:

Copyright  Oracle Corporation, All rights reserved. 8 Manipulación de Datos

8-2 Copyright  Oracle Corporation, All rights reserved. Objetivos Al completar esta lección, debería ser capaz de hacer lo siguiente: Describir cada sentencia DML. Describir cada sentencia DML. Insertar filas nuevas en una tabla. Insertar filas nuevas en una tabla. Modificar filas de una tabla. Modificar filas de una tabla. Eliminar filas de una tabla. Eliminar filas de una tabla. Explicar el control de transacciones y su importancia. Explicar el control de transacciones y su importancia.

8-3 Copyright  Oracle Corporation, All rights reserved. Lenguaje de manipulación de datos Una sentencia DML se ejecuta cuando: – Añade nuevos registros a una tabla. – Modifica registros existentes. – Elimina registros existentes. Una transacción consiste en una colección de sentencias DML que forman una unidad lógica de trabajo. Una sentencia DML se ejecuta cuando: – Añade nuevos registros a una tabla. – Modifica registros existentes. – Elimina registros existentes. Una transacción consiste en una colección de sentencias DML que forman una unidad lógica de trabajo.

8-4 Copyright  Oracle Corporation, All rights reserved. Adición de una fila nueva a una tabla DEPT DEPTNO DNAME LOC ACCOUNTINGNEW YORK 20RESEARCHDALLAS 30SALESCHICAGO 40OPERATIONSBOSTON Nuevo Registro 50 DEVELOPMENT DETROIT DEPT DEPTNO DNAME LOC ACCOUNTINGNEW YORK 20RESEARCHDALLAS 30SALESCHICAGO 40OPERATIONSBOSTON “…insertar una nueva fila en la tabla DEPT...” 50 DEVELOPMENT DETROIT

8-5 Copyright  Oracle Corporation, All rights reserved. La sentencia INSERT Añadimos nuevas filas a una tabla, por medio de la sentencia INSERT. Mediante esta sintaxis, sólo se inserta una fila al mismo tiempo. Añadimos nuevas filas a una tabla, por medio de la sentencia INSERT. Mediante esta sintaxis, sólo se inserta una fila al mismo tiempo. INSERT INTOtable [(column [, column...])] VALUES(value [, value...]); INSERT INTOtable [(column [, column...])] VALUES(value [, value...]);

8-6 Copyright  Oracle Corporation, All rights reserved. Inserción de filas nuevas Insertar una nueva fila conteniendo los valores para cada columna.Insertar una nueva fila conteniendo los valores para cada columna. Opcionalmente, se pueden listar las columnas en la cláusula INSERT.Opcionalmente, se pueden listar las columnas en la cláusula INSERT. Colocar los valores en el orden que las columnas tienen en la tabla por defecto.Colocar los valores en el orden que las columnas tienen en la tabla por defecto. Escribir los valores de datos de tipo carácter y fecha entre comillas simples.Escribir los valores de datos de tipo carácter y fecha entre comillas simples. Insertar una nueva fila conteniendo los valores para cada columna.Insertar una nueva fila conteniendo los valores para cada columna. Opcionalmente, se pueden listar las columnas en la cláusula INSERT.Opcionalmente, se pueden listar las columnas en la cláusula INSERT. Colocar los valores en el orden que las columnas tienen en la tabla por defecto.Colocar los valores en el orden que las columnas tienen en la tabla por defecto. Escribir los valores de datos de tipo carácter y fecha entre comillas simples.Escribir los valores de datos de tipo carácter y fecha entre comillas simples. SQL> INSERT INTOdept (deptno, dname, loc) 2 VALUES(50, 'DEVELOPMENT', 'DETROIT'); 1 row created.

8-7 Copyright  Oracle Corporation, All rights reserved. Inserción de filas con valores nulos Método Implícito: Omitir la columna en la lista.Método Implícito: Omitir la columna en la lista. Método Explícito: Especificar la palabra clave NULL.Método Explícito: Especificar la palabra clave NULL. Método Implícito: Omitir la columna en la lista.Método Implícito: Omitir la columna en la lista. Método Explícito: Especificar la palabra clave NULL.Método Explícito: Especificar la palabra clave NULL. SQL> INSERT INTOdept (deptno, dname ) 2 VALUES(60, 'MIS'); 1 row created. SQL> INSERT INTOdept 2 VALUES(70, 'FINANCE', NULL); 1 row created.

8-8 Copyright  Oracle Corporation, All rights reserved. Inserción de valores especiales La función SYSDATE registra la fecha y hora actual. SQL> INSERT INTOemp (empno, ename, job, 2mgr, hiredate, sal, comm, 3deptno) 4 VALUES(7196, 'GREEN', 'SALESMAN', 57782, SYSDATE, 2000, NULL, 610); 1 row created.

8-9 Copyright  Oracle Corporation, All rights reserved. Insertando valores de fecha específicos Añadimos un nuevo empleado: SQL> INSERT INTO emp 2 VALUES (2296,'AROMANO','SALESMAN',7782, 3 TO_DATE('FEB 3,97', 'MON DD, YY'), , NULL, 10); 1 row created. Verificamos la inserción: EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO AROMANO SALESMAN FEB

8-10 Copyright  Oracle Corporation, All rights reserved. Inserción de valores por medio de variables de sustitución Uso de variables de sustitución de SQL*Plus: SQL> INSERT INTOdept (deptno, dname, loc) 2 VALUES (&department_id, 3 '&department_name', '&location'); 80 Enter value for department_id: 80 EDUCATION Enter value for department_name: EDUCATION ATLANTA Enter value for location: ATLANTA 1 row created.

8-11 Copyright  Oracle Corporation, All rights reserved. Copia de filas desde otra tabla Escribir el comando INSERT con una subconsulta (subquery).Escribir el comando INSERT con una subconsulta (subquery). No usar la cláusula VALUES.No usar la cláusula VALUES. Observar que coincida el número de columnas en la cláusula INSERT con las de la subconsulta.Observar que coincida el número de columnas en la cláusula INSERT con las de la subconsulta. Escribir el comando INSERT con una subconsulta (subquery).Escribir el comando INSERT con una subconsulta (subquery). No usar la cláusula VALUES.No usar la cláusula VALUES. Observar que coincida el número de columnas en la cláusula INSERT con las de la subconsulta.Observar que coincida el número de columnas en la cláusula INSERT con las de la subconsulta. SQL> INSERT INTO managers(id, name, salary, hiredate) 2 SELECTempno, ename, sal, hiredate 3 FROM emp 4 WHEREjob = 'MANAGER'; 3 rows created.

8-12 Copyright  Oracle Corporation, All rights reserved. Cambio de los datos de una tabla EMP “…Modificación de “…Modificación de Una fila en la Tabla EMP…” EMP EMPNO ENAME JOB... DEPTNO 7839KINGPRESIDENT BLAKEMANAGER CLARKMANAGER JONESMANAGER EMPNO ENAME JOB... DEPTNO 7839KINGPRESIDENT BLAKEMANAGER CLARKMANAGER JONESMANAGER 20...

8-13 Copyright  Oracle Corporation, All rights reserved. La sentencia UPDATE Modificamos registros existentes con la sentencia UPDATE Puede afectar a más de una fila al mismo tiempo. Modificamos registros existentes con la sentencia UPDATE Puede afectar a más de una fila al mismo tiempo. UPDATEtable SETcolumn = value [, column = value] [WHERE condition]; UPDATEtable SETcolumn = value [, column = value] [WHERE condition];

8-14 Copyright  Oracle Corporation, All rights reserved. Actualización de las filas de una tabla Las filas a modificar se especifican por medio de la cláusula WHERE Si se omite la cláusula WHERE se modifican todas las filas de la tabla. Las filas a modificar se especifican por medio de la cláusula WHERE Si se omite la cláusula WHERE se modifican todas las filas de la tabla. SQL> UPDATE emp 2 SET deptno = 20 3 WHERE empno = 7782; 1 row updated. SQL> UPDATE employee 2 SET deptno = 20; 14 rows updated. SQL> UPDATE employee 2 SET deptno = 20; 14 rows updated.

8-15 Copyright  Oracle Corporation, All rights reserved. Actualización de filas basándose en otra tabla Utilice subconsultas en sentencias UPDATE, para modificar registros de una tabla, basados en valores de otra tabla. SQL>UPDATEemployee 2SETdeptno = (SELECTdeptno 3FROMemp 4WHEREempno = 7788) 5WHEREjob = (SELECTjob 6FROMemp 7WHEREempno = 7788); 2 rows updated. SQL>UPDATEemployee 2SETdeptno = (SELECTdeptno 3FROMemp 4WHEREempno = 7788) 5WHEREjob = (SELECTjob 6FROMemp 7WHEREempno = 7788); 2 rows updated.

8-16 Copyright  Oracle Corporation, All rights reserved. UPDATE emp * ERROR at line 1: ORA-02291: integrity constraint (USR.EMP_DEPTNO_FK) violated - parent key not found UPDATE emp * ERROR at line 1: ORA-02291: integrity constraint (USR.EMP_DEPTNO_FK) violated - parent key not found SQL> UPDATEemp 2 SETdeptno = 55 3 WHEREdeptno = 10; SQL> UPDATEemp 2 SETdeptno = 55 3 WHEREdeptno = 10; Actualización de filas: error de integridad (constraints) El Departamento número 55 no existe

8-17 Copyright  Oracle Corporation, All rights reserved. “…Borramos una fila de la tabla DEPT…” Eliminación de una fila de una tabla DEPT DEPTNO DNAME LOC ACCOUNTINGNEW YORK 20RESEARCHDALLAS 30SALESCHICAGO 40OPERATIONSBOSTON 50 DEVELOPMENT DETROIT 60MIS... DEPT DEPTNO DNAME LOC ACCOUNTINGNEW YORK 20RESEARCHDALLAS 30SALESCHICAGO 40OPERATIONSBOSTON 60MIS...

8-18 Copyright  Oracle Corporation, All rights reserved. La sentencia DELETE Puede eliminar las filas existentes de una tabla, por medio de la sentencia DELETE. DELETE [FROM] table [WHERE condition]; DELETE [FROM] table [WHERE condition];

8-19 Copyright  Oracle Corporation, All rights reserved. Las filas a eliminar se especifican por medio de la cláusula WHERE. Si omite la cláusula WHERE se borran todas las filas de la tabla. Las filas a eliminar se especifican por medio de la cláusula WHERE. Si omite la cláusula WHERE se borran todas las filas de la tabla. Supresión de filas de una tabla SQL> DELETE FROMdepartment 2 WHERE dname = 'DEVELOPMENT'; 1 row deleted. SQL> DELETE FROMdepartment 2 WHERE dname = 'DEVELOPMENT'; 1 row deleted. SQL> DELETE FROMdepartment; 4 rows deleted. SQL> DELETE FROMdepartment; 4 rows deleted.

8-20 Copyright  Oracle Corporation, All rights reserved. Supresión de filas basados en otra tabla Utilice subconsultas en sentencias DELETE, para eliminar las filas de una tabla, basados en valores de otra tabla. SQL> DELETE FROMemployee 2 WHEREdeptno = 3 (SELECT deptno 4 FROM dept 5 WHERE dname ='SALES'); 6 rows deleted.

8-21 Copyright  Oracle Corporation, All rights reserved. Supresión de filas: error de restricción de integridad SQL> DELETE FROMdept 2 WHEREdeptno = 10; SQL> DELETE FROMdept 2 WHEREdeptno = 10; DELETE FROM dept * ERROR at line 1: ORA-02292: integrity constraint (USR.EMP_DEPTNO_FK) violated - child record found DELETE FROM dept * ERROR at line 1: ORA-02292: integrity constraint (USR.EMP_DEPTNO_FK) violated - child record found No puede eliminar una fila que contiene una clave primaria, usada como clave externa en otra tabla No puede eliminar una fila que contiene una clave primaria, usada como clave externa en otra tabla

8-22 Copyright  Oracle Corporation, All rights reserved. Uso de subconsulta en una sentencia INSERT INSERT INTO (SELECT employee_id, last_name, , hire_date, job_id, salary, department_id FROM employees WHERE department_id = 50 [WITH CHECK OPTION] VALUES (99999, ‘Taylor’, ‘DTAYLOR’, TO_DATE(’07-JUN-99’, ‘DD-MON-RR’), ‘ST_CLERK’, 5000, 50); INSERT INTO (SELECT employee_id, last_name, , hire_date, job_id, salary, department_id FROM employees WHERE department_id = 50 [WITH CHECK OPTION] VALUES (99999, ‘Taylor’, ‘DTAYLOR’, TO_DATE(’07-JUN-99’, ‘DD-MON-RR’), ‘ST_CLERK’, 5000, 50);

8-23 Copyright  Oracle Corporation, All rights reserved. Uso de la palabra clave WITH CHECK OPTION en senticas DML Se utiliza una subconsulta para identificar la tabla y las columnas de la sentencia DML. La palabra clave WITH CHEK OPTION prohíbe que cambie filas que no están en la subconsulta. Se utiliza una subconsulta para identificar la tabla y las columnas de la sentencia DML. La palabra clave WITH CHEK OPTION prohíbe que cambie filas que no están en la subconsulta.

8-24 Copyright  Oracle Corporation, All rights reserved. Visión general de la función valor por defecto explícito Puede utilizar la palabra clave DEFAULT como valor de columna. Cumple el estándar SQL:1999. Permite controlar dónde y cuándo aplicar el valor por defecto a los datos. Se usa en Inserts y en Updates. Puede utilizar la palabra clave DEFAULT como valor de columna. Cumple el estándar SQL:1999. Permite controlar dónde y cuándo aplicar el valor por defecto a los datos. Se usa en Inserts y en Updates.

8-25 Copyright  Oracle Corporation, All rights reserved. Uso de valores por defecto explícitos DEFAULT con INSERT DEFAULT con UPDATE INSERT INTO department (departmend_id, department_name, manager_id) VALUES (300, ‘Engineering’, DEFAULT); INSERT INTO department (departmend_id, department_name, manager_id) VALUES (300, ‘Engineering’, DEFAULT); UPDATE departments SET manager_id = DEFAULT WHERE department_id = 10; UPDATE departments SET manager_id = DEFAULT WHERE department_id = 10;

8-26 Copyright  Oracle Corporation, All rights reserved. La sentencia MERGE Proporciona la capacidad de actualizar o insertar datos condicionalmente. Realiza una actualización (UPDATE) si existe la fila y una inserción (INSERT) si es una fila nueva. – Evita actualizaciones separadas. – Aumenta el rendimiento y facilidad de uso. Proporciona la capacidad de actualizar o insertar datos condicionalmente. Realiza una actualización (UPDATE) si existe la fila y una inserción (INSERT) si es una fila nueva. – Evita actualizaciones separadas. – Aumenta el rendimiento y facilidad de uso.

8-27 Copyright  Oracle Corporation, All rights reserved. Sintaxis de la sentencia MERGE MERGE INTO table_name table_alias USING (table | view | sub_query) alias ON (join condition) WHEN MATHED THEN UPDATE SET col1 = col1_val1; col2 = col2_val2; WHEN NOT MATCHED THEN INSERT (column_list) VALUES (column_values); MERGE INTO table_name table_alias USING (table | view | sub_query) alias ON (join condition) WHEN MATHED THEN UPDATE SET col1 = col1_val1; col2 = col2_val2; WHEN NOT MATCHED THEN INSERT (column_list) VALUES (column_values);

8-28 Copyright  Oracle Corporation, All rights reserved. Fusión de filas MERGE INTO copy_emp c USING employees e ON (c.employee_id = e.employee_id) WHEN MATHED THEN UPDATE SET... WHEN NOT MATCHED THEN INSERT VALUES... MERGE INTO copy_emp c USING employees e ON (c.employee_id = e.employee_id) WHEN MATHED THEN UPDATE SET... WHEN NOT MATCHED THEN INSERT VALUES...

8-29 Copyright  Oracle Corporation, All rights reserved. Transacciones de base de datos Contienen una de las siguientes sentencias: Conjunto de sentencias DML que deciden un cambio consistente sobre los datos. Una sentencia DDL. Una sentencia DCL. Contienen una de las siguientes sentencias: Conjunto de sentencias DML que deciden un cambio consistente sobre los datos. Una sentencia DDL. Una sentencia DCL.

8-30 Copyright  Oracle Corporation, All rights reserved. Transacciones de base de datos Comienzan cuando se ejecuta la primera sentencia DML SQL. Finalizan con uno de los siguientes eventos: – COMMIT o ROLLBACK. – Ejecución de un comando DDL o DCL (commit automático). – El usuario sale de iSQL*Plus. – El sistema falla. Comienzan cuando se ejecuta la primera sentencia DML SQL. Finalizan con uno de los siguientes eventos: – COMMIT o ROLLBACK. – Ejecución de un comando DDL o DCL (commit automático). – El usuario sale de iSQL*Plus. – El sistema falla.

8-31 Copyright  Oracle Corporation, All rights reserved. Ventajas de COMMIT y ROLLBACK Aseguran la consistencia de los datos. Aseguran la consistencia de los datos. Pueden visualizar los cambios sobre los datos antes de hacerlos permanentes. Pueden visualizar los cambios sobre los datos antes de hacerlos permanentes. Agrupan lógicamente tareas relacionadas entre sí. Agrupan lógicamente tareas relacionadas entre sí. Aseguran la consistencia de los datos. Aseguran la consistencia de los datos. Pueden visualizar los cambios sobre los datos antes de hacerlos permanentes. Pueden visualizar los cambios sobre los datos antes de hacerlos permanentes. Agrupan lógicamente tareas relacionadas entre sí. Agrupan lógicamente tareas relacionadas entre sí.

8-32 Copyright  Oracle Corporation, All rights reserved. DELETE Control de transacciones TransacciónTransacción Savepoint A ROLLBACK to Savepoint B DELETE Savepoint B COMMIT INSERT UPDATE ROLLBACK to Savepoint A INSERTUPDATE INSERT ROLLBACK INSERT

8-33 Copyright  Oracle Corporation, All rights reserved. Realización de Rollback de los cambios a un marcador Crear una marca dentro de una transacción usando el comando SAVEPOINT (marca). Crear una marca dentro de una transacción usando el comando SAVEPOINT (marca). Hacer un rollback hacia la marca usando el comando ROLLBACK TO SAVEPOINT. Hacer un rollback hacia la marca usando el comando ROLLBACK TO SAVEPOINT. Crear una marca dentro de una transacción usando el comando SAVEPOINT (marca). Crear una marca dentro de una transacción usando el comando SAVEPOINT (marca). Hacer un rollback hacia la marca usando el comando ROLLBACK TO SAVEPOINT. Hacer un rollback hacia la marca usando el comando ROLLBACK TO SAVEPOINT. SQL> UPDATE... SQL> SAVEPOINT update_done; Savepoint created. SQL> INSERT... SQL> ROLLBACK TO update_done; Rollback complete.

8-34 Copyright  Oracle Corporation, All rights reserved. Una validación automática ocurre bajo una de las siguientes circunstancias: Una validación automática ocurre bajo una de las siguientes circunstancias: – Se emite un comando DDL, tal como CREATE. – Se emite un comando DCL, tal como GRANT. – Una salida normal desde SQL*Plus, sin realizar un COMMIT o ROLLBACK explícitamente. Un rollback automático ocurre bajo una terminación anormal de iSQL*Plus o un fallo del sistema. Un rollback automático ocurre bajo una terminación anormal de iSQL*Plus o un fallo del sistema. Una validación automática ocurre bajo una de las siguientes circunstancias: Una validación automática ocurre bajo una de las siguientes circunstancias: – Se emite un comando DDL, tal como CREATE. – Se emite un comando DCL, tal como GRANT. – Una salida normal desde SQL*Plus, sin realizar un COMMIT o ROLLBACK explícitamente. Un rollback automático ocurre bajo una terminación anormal de iSQL*Plus o un fallo del sistema. Un rollback automático ocurre bajo una terminación anormal de iSQL*Plus o un fallo del sistema. Procesamiento implícito de transacciones

8-35 Copyright  Oracle Corporation, All rights reserved. Estado de los datos antes de COMMIT o ROLLBACK Puede recuperar el estado anterior de los datos. Puede recuperar el estado anterior de los datos. El usuario actual puede revisar los resultados de operaciones DML usando la sentencia SELECT. El usuario actual puede revisar los resultados de operaciones DML usando la sentencia SELECT. Otros usuarios no pueden ver los resultados de las sentencias DML ejecutadas por el usuario actual. Otros usuarios no pueden ver los resultados de las sentencias DML ejecutadas por el usuario actual. Las filas afectadas son bloqueadas otros usuarios no pueden cambiar los datos pertenecientes a esas filas. Las filas afectadas son bloqueadas otros usuarios no pueden cambiar los datos pertenecientes a esas filas. Puede recuperar el estado anterior de los datos. Puede recuperar el estado anterior de los datos. El usuario actual puede revisar los resultados de operaciones DML usando la sentencia SELECT. El usuario actual puede revisar los resultados de operaciones DML usando la sentencia SELECT. Otros usuarios no pueden ver los resultados de las sentencias DML ejecutadas por el usuario actual. Otros usuarios no pueden ver los resultados de las sentencias DML ejecutadas por el usuario actual. Las filas afectadas son bloqueadas otros usuarios no pueden cambiar los datos pertenecientes a esas filas. Las filas afectadas son bloqueadas otros usuarios no pueden cambiar los datos pertenecientes a esas filas.

8-36 Copyright  Oracle Corporation, All rights reserved. Estado de los datos después del COMMIT Los cambios en los datos son escritos en la base de datos. Los cambios en los datos son escritos en la base de datos. El estado anterior de los datos se pierde permanentemente. El estado anterior de los datos se pierde permanentemente. Todos los usuarios pueden ver los resultados. Todos los usuarios pueden ver los resultados. Se liberan los bloqueos aplicados a las filas afectadas; esas filas están ahora disponibles para que otros usuarios las usen. Se liberan los bloqueos aplicados a las filas afectadas; esas filas están ahora disponibles para que otros usuarios las usen. Se borran todos los savepoints. Se borran todos los savepoints. Los cambios en los datos son escritos en la base de datos. Los cambios en los datos son escritos en la base de datos. El estado anterior de los datos se pierde permanentemente. El estado anterior de los datos se pierde permanentemente. Todos los usuarios pueden ver los resultados. Todos los usuarios pueden ver los resultados. Se liberan los bloqueos aplicados a las filas afectadas; esas filas están ahora disponibles para que otros usuarios las usen. Se liberan los bloqueos aplicados a las filas afectadas; esas filas están ahora disponibles para que otros usuarios las usen. Se borran todos los savepoints. Se borran todos los savepoints.

8-37 Copyright  Oracle Corporation, All rights reserved. Validación de datos SQL> UPDATEemp 2 SET deptno = 10 3 WHEREempno = 7782; 1 row updated. SQL> UPDATEemp 2 SET deptno = 10 3 WHEREempno = 7782; 1 row updated. Realizar los cambios: Hacer Commit de los cambios: SQL> COMMIT; Commit complete.

8-38 Copyright  Oracle Corporation, All rights reserved. Estado de los datos después de ROLLBACK Los cambios de datos se deshacen. Los cambios de datos se deshacen. Se restaura el estado anterior de los datos. Se restaura el estado anterior de los datos. Se liberan todos los bloqueos sobre las filas afectadas. Se liberan todos los bloqueos sobre las filas afectadas. Los cambios de datos se deshacen. Los cambios de datos se deshacen. Se restaura el estado anterior de los datos. Se restaura el estado anterior de los datos. Se liberan todos los bloqueos sobre las filas afectadas. Se liberan todos los bloqueos sobre las filas afectadas. SQL> DELETE FROMemployee; 14 rows deleted. SQL> ROLLBACK; Rollback complete.

8-39 Copyright  Oracle Corporation, All rights reserved. Rollback a nivel de sentencia Si una única sentencia DML falla durante su ejecución, entonces se hace rollback sobre esa sentencia solamente. Si una única sentencia DML falla durante su ejecución, entonces se hace rollback sobre esa sentencia solamente. Oracle implementa una marca de seguridad o savepoint implícito. Oracle implementa una marca de seguridad o savepoint implícito. Todos los otros cambios anteriores se mantienen. Todos los otros cambios anteriores se mantienen. El usuario debe terminar explícitamente las transacciones usando una sentencia COMMIT o ROLLBACK. El usuario debe terminar explícitamente las transacciones usando una sentencia COMMIT o ROLLBACK. Si una única sentencia DML falla durante su ejecución, entonces se hace rollback sobre esa sentencia solamente. Si una única sentencia DML falla durante su ejecución, entonces se hace rollback sobre esa sentencia solamente. Oracle implementa una marca de seguridad o savepoint implícito. Oracle implementa una marca de seguridad o savepoint implícito. Todos los otros cambios anteriores se mantienen. Todos los otros cambios anteriores se mantienen. El usuario debe terminar explícitamente las transacciones usando una sentencia COMMIT o ROLLBACK. El usuario debe terminar explícitamente las transacciones usando una sentencia COMMIT o ROLLBACK.

8-40 Copyright  Oracle Corporation, All rights reserved. Consistencia en lectura La consistencia en lectura garantiza una vista consistente de los datos en cualquier circunstancia. Los cambios realizados por otro usuario no crean conflictos con los cambios realizados por otro usuario. Asegura que sobre los mismos datos: – Las lecturas no esperan a las escrituras y viceversa. La consistencia en lectura garantiza una vista consistente de los datos en cualquier circunstancia. Los cambios realizados por otro usuario no crean conflictos con los cambios realizados por otro usuario. Asegura que sobre los mismos datos: – Las lecturas no esperan a las escrituras y viceversa.

8-41 Copyright  Oracle Corporation, All rights reserved. Implementación de la consistencia en lectura update emp set sal = 2000 where ename = 'SCOTT' Bloques de Datos Segmentos de Rollbck select * from emp Datos cambiados y no cambiados Antes de cambiar los datos “antiguos” Usuario A Usuario B ImagenConsistente en Lectura

8-42 Copyright  Oracle Corporation, All rights reserved. Bloqueos Bloqueos en Oracle: Previenen la interacción destructiva entre transacciones concurrentes. No requieren acciones del usuario. Automáticamente utilizan el nivel más bajo de restricción. Se mantienen mientras dura la transacción. Tienen básicamente dos modos: – Explícito. – Implícito. Bloqueos en Oracle: Previenen la interacción destructiva entre transacciones concurrentes. No requieren acciones del usuario. Automáticamente utilizan el nivel más bajo de restricción. Se mantienen mientras dura la transacción. Tienen básicamente dos modos: – Explícito. – Implícito.

8-43 Copyright  Oracle Corporation, All rights reserved. Bloqueo implícito Dos tipos de bloqueo – Exclusivo: bloquea a otros usuarios. – Compartido: Acesso a otros usuarios. Alto nivel de simultaneidad de datos – DML: compartir tabla, exclusivo de fila. – Consultas: no requieren bloqueos. – DDL: protege definiciones de objetos. – Bloqueos mantenidos hasta validación o rollback. Dos tipos de bloqueo – Exclusivo: bloquea a otros usuarios. – Compartido: Acesso a otros usuarios. Alto nivel de simultaneidad de datos – DML: compartir tabla, exclusivo de fila. – Consultas: no requieren bloqueos. – DDL: protege definiciones de objetos. – Bloqueos mantenidos hasta validación o rollback.

8-44 Copyright  Oracle Corporation, All rights reserved. Resumen Comando Descripción INSERTAgrega una fila nueva a la tabla. UPDATE Modifica filas de una tabla. DELETE Elimina filas de una tabla. COMMIT Hace permanentes todos los cambios pendientes. SAVEPOINT Permite hacer un rollback hasta la marca de savepoint. ROLLBACK Descarta todos los cambios pendientes de los datos.

8-45 Copyright  Oracle Corporation, All rights reserved. Visión general de la práctica Insertar filas en tablas. Insertar filas en tablas. Actualizar y eliminar filas en tablas. Actualizar y eliminar filas en tablas. Controlar transacciones. Controlar transacciones. Insertar filas en tablas. Insertar filas en tablas. Actualizar y eliminar filas en tablas. Actualizar y eliminar filas en tablas. Controlar transacciones. Controlar transacciones.