La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "Copyright  Oracle Corporation, 1998. All rights reserved. 8 Manipulación de Datos."— Transcripción de la presentación:

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

2 8-2 Copyright  Oracle Corporation, 1998. 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.

3 8-3 Copyright  Oracle Corporation, 1998. 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.

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

5 8-5 Copyright  Oracle Corporation, 1998. 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...]);

6 8-6 Copyright  Oracle Corporation, 1998. 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.

7 8-7 Copyright  Oracle Corporation, 1998. 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-8 Copyright  Oracle Corporation, 1998. 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.

9 8-9 Copyright  Oracle Corporation, 1998. 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'), 4 1300, NULL, 10); 1 row created. Verificamos la inserción: EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- ------- -------- ---- --------- ---- ----- ----- 2296 AROMANO SALESMAN 7782 03-FEB-97 1300 10

10 8-10 Copyright  Oracle Corporation, 1998. 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.

11 8-11 Copyright  Oracle Corporation, 1998. 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.

12 8-12 Copyright  Oracle Corporation, 1998. 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 10 7698BLAKEMANAGER 30 7782CLARKMANAGER 10 7566JONESMANAGER 20... 20 EMPNO ENAME JOB... DEPTNO 7839KINGPRESIDENT 10 7698BLAKEMANAGER 30 7782CLARKMANAGER 10 7566JONESMANAGER 20...

13 8-13 Copyright  Oracle Corporation, 1998. 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];

14 8-14 Copyright  Oracle Corporation, 1998. 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.

15 8-15 Copyright  Oracle Corporation, 1998. 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.

16 8-16 Copyright  Oracle Corporation, 1998. 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

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

18 8-18 Copyright  Oracle Corporation, 1998. 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];

19 8-19 Copyright  Oracle Corporation, 1998. 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.

20 8-20 Copyright  Oracle Corporation, 1998. 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.

21 8-21 Copyright  Oracle Corporation, 1998. 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

22 8-22 Copyright  Oracle Corporation, 1998. All rights reserved. Uso de subconsulta en una sentencia INSERT INSERT INTO (SELECT employee_id, last_name, email, 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, email, 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);

23 8-23 Copyright  Oracle Corporation, 1998. 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.

24 8-24 Copyright  Oracle Corporation, 1998. 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.

25 8-25 Copyright  Oracle Corporation, 1998. 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;

26 8-26 Copyright  Oracle Corporation, 1998. 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.

27 8-27 Copyright  Oracle Corporation, 1998. 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);

28 8-28 Copyright  Oracle Corporation, 1998. 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...

29 8-29 Copyright  Oracle Corporation, 1998. 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.

30 8-30 Copyright  Oracle Corporation, 1998. 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.

31 8-31 Copyright  Oracle Corporation, 1998. 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í.

32 8-32 Copyright  Oracle Corporation, 1998. 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

33 8-33 Copyright  Oracle Corporation, 1998. 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.

34 8-34 Copyright  Oracle Corporation, 1998. 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

35 8-35 Copyright  Oracle Corporation, 1998. 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.

36 8-36 Copyright  Oracle Corporation, 1998. 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.

37 8-37 Copyright  Oracle Corporation, 1998. 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.

38 8-38 Copyright  Oracle Corporation, 1998. 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.

39 8-39 Copyright  Oracle Corporation, 1998. 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.

40 8-40 Copyright  Oracle Corporation, 1998. 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.

41 8-41 Copyright  Oracle Corporation, 1998. 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

42 8-42 Copyright  Oracle Corporation, 1998. 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.

43 8-43 Copyright  Oracle Corporation, 1998. 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.

44 8-44 Copyright  Oracle Corporation, 1998. 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.

45 8-45 Copyright  Oracle Corporation, 1998. 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.


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

Presentaciones similares


Anuncios Google