Manipulación de Datos - aserracanta.files.wordpress.com · columnas en la cl áusula INSERT con...

39
Copyright Oracle Corporation, 1998. All rights reserved. 9 9 Manipulación de Datos Manipulación de Datos

Transcript of Manipulación de Datos - aserracanta.files.wordpress.com · columnas en la cl áusula INSERT con...

Copyright Oracle Corporation, 1998. All rights reserved.

99

Manipulación de DatosManipulación de Datos

9-2 Copyright Oracle Corporation, 1998. All rights reserved.

ObjetivosObjetivos

Al completar esta lección, debería ser capaz de hacer lo siguiente:Al completar esta lecciAl completar esta leccióón, debern, deberíía ser a ser capaz de hacer lo siguiente:capaz de hacer lo siguiente:

•• Describir cada sentencia DMLDescribir 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 Explicar el control de transacciones y su importancia.su importancia.

9-3 Copyright Oracle Corporation, 1998. All rights reserved.

El Lenguaje de Manipulación de DatosEl 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.

9-4 Copyright Oracle Corporation, 1998. All rights reserved.

Añadir un Nuevo Registro a una TablaAñadir un Nuevo Registro a una Tabla

DEPT DEPT

DEPTNO DNAME LOC

------ ---------- --------

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERATIONS BOSTON

Nuevo RegistroNuevo Registro

50 DEVELOPMENT DETROIT

DEPT DEPT

DEPTNO DNAME LOC

------ ---------- --------

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERATIONS BOSTON

“…“…insertar un nuevo insertar un nuevo

registro en la tabla DEPT...registro en la tabla DEPT...””

50 DEVELOPMENT DETROIT

9-5 Copyright Oracle Corporation, 1998. All rights reserved.

La Sentencia INSERTLa Sentencia INSERT

• Añadimos nuevos registros a una tabla, por medio de la sentencia INSERT.

• Mediante esta sintaxis, sólo se inserta un registro al mismo tiempo.

• Añadimos nuevos registros a una tabla, por medio de la sentencia INSERT.

• Mediante esta sintaxis, sólo se inserta un registro al mismo tiempo.

INSERT INTO table [(column [, column...])]

VALUES (value [, value...]);

INSERT INTO table [(column [, column...])]

VALUES (value [, value...]);

9-6 Copyright Oracle Corporation, 1998. All rights reserved.

Inserción de Nuevos RegistrosInserción de Nuevos Registros

•• Insertar una nueva fila conteniendo los Insertar una nueva fila conteniendo los valores para cada columna. valores para cada columna.

•• Opcionalmente, se pueden listar las Opcionalmente, se pueden listar las columnas en la clcolumnas en la clááusula INSERT.usula INSERT.

•• Colocar los valores en el orden que las Colocar los valores en el orden que las columnas tienen en la tabla por defecto.columnas tienen en la tabla por defecto.

•• Encerrar los valores de datos de tipo Encerrar los valores de datos de tipo carcaráácter y fecha entre comillas simples.cter y fecha entre comillas simples.

SQL> INSERT INTO dept (deptno, dname, loc)

2 VALUES (50, 'DEVELOPMENT', 'DETROIT');

1 row created.1 row created.

9-7 Copyright Oracle Corporation, 1998. All rights reserved.

Inserción de Registros con Valores Nulos

Inserción de Registros con Valores Nulos

•• MMéétodo Impltodo Implíícito: Omitir la columna en cito: Omitir la columna en la lista.la lista.

MMéétodo Expltodo Explíícito: Especificar la palabra cito: Especificar la palabra clave NULL o el string vacclave NULL o el string vacíío ('') en la o ('') en la lista de VALUES.lista de VALUES.

SQL> INSERT INTO dept (deptno, dname )

2 VALUES (60, 'MIS');

1 row created.1 row created.

SQL> INSERT INTO dept

2 VALUES (70, 'FINANCE', NULL);

1 row created.1 row created.

9-8 Copyright Oracle Corporation, 1998. All rights reserved.

Inserción de Valores EspecialesInserción de Valores Especiales

La función SYSDATE registra la fecha y hora actual.La funciLa funcióón SYSDATE registra la fecha y n SYSDATE registra la fecha y hora actual.hora actual.

SQL> INSERT INTO emp (empno, ename, job,

2 mgr, hiredate, sal, comm,

3 deptno)

4 VALUES (7196, 'GREEN', 'SALESMAN',

5 7782, SYSDATE, 2000, NULL,

6 10);

1 row created.1 row created.

9-9 Copyright Oracle Corporation, 1998. All rights reserved.

Insertando Valores de Fecha EspecíficosInsertando Valores de Fecha Específicos

• Añadimos un nuevo empleado:• 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.1 row created.

• Verificamos la inserción:• Verificamos la inserción:EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

----- ------- -------- ---- --------- ---- ----- -----

2296 AROMANO SALESMAN 7782 03-FEB-97 1300 10

9-10 Copyright Oracle Corporation, 1998. All rights reserved.

Inserción de Valores por medio de Variables de Sustitución

Inserción de Valores por medio de Variables de Sustitución

Creamos un script interactivo usando parámetros de sustitución de SQL*Plus:Creamos un script interactivo usando Creamos un script interactivo usando parparáámetros de sustitucimetros de sustitucióón de SQL*Plus:n de SQL*Plus:

SQL> INSERT INTO dept (deptno, dname, loc)

2 VALUES (&department_id,

3 '&department_name', '&location');

Enter value for department_id: 8080

Enter value for department_name: EDUCATIONEDUCATION

Enter value for location: ATLANTAATLANTA

1 row created.

9-11 Copyright Oracle Corporation, 1998. All rights reserved.

Creación de un Script con PROMPTS Específicos

Creación de un Script con PROMPTS Específicos

• ACCEPT almacena el valor en una var.

• PROMPT visualiza el texto especificado.

• ACCEPT almacena el valor en una var.

• PROMPT visualiza el texto especificado.

ACCEPT department_id PROMPT 'Please enter the -

department number:'

ACCEPT department_name PROMPT 'Please enter -

the department name:'

ACCEPT location PROMPT 'Please enter the -

location:'

INSERT INTO dept (deptno, dname, loc)

VALUES (&department_id, '&department_name',

&location);

9-12 Copyright Oracle Corporation, 1998. All rights reserved.

Copiando Registros de Otra TablaCopiando Registros de Otra Tabla

•• Escribir el comando INSERT con una Escribir el comando INSERT con una subconsulta (subconsulta (subquerysubquery).).

•• No usar la clNo usar la clááusula VALUES.usula VALUES.

•• Observar que coincida el nObservar que coincida el núúmero de mero de columnas en la clcolumnas en la clááusula INSERT con las usula INSERT con las de la subconsulta.de la subconsulta.

SQL> INSERT INTO managers(id, name, salary, hiredate)

2 SELECT empno, ename, sal, hiredate

3 FROM emp

4 WHERE job = 'MANAGER';

3 rows created.3 rows created.

9-13 Copyright Oracle Corporation, 1998. All rights reserved.

Modificación de Datos en una TablaModificación de Datos en una TablaEMPEMP

“…“…ModificaciModificacióón den de

un registro en laun registro en la

Tabla EMPTabla EMP…”…”

EMPEMP

EMPNO ENAME JOB ... DEPTNO

7839 KING PRESIDENT 10

7698 BLAKE MANAGER 30

7782 CLARK MANAGER 10

7566 JONES MANAGER 20

...

20

EMPNO ENAME JOB ... DEPTNO

7839 KING PRESIDENT 10

7698 BLAKE MANAGER 30

7782 CLARK MANAGER 10

7566 JONES MANAGER 20

...

9-14 Copyright Oracle Corporation, 1998. All rights reserved.

La Sentencia UPDATELa Sentencia UPDATE

• Modificamos registros existentes con la sentencia UPDATE

• Puede afectar a más de un registro al mismo tiempo.

• Modificamos registros existentes con la sentencia UPDATE

• Puede afectar a más de un registro al mismo tiempo.

UPDATE table

SET column = value [, column = value]

[WHERE condition];

UPDATE table

SET column = value [, column = value]

[WHERE condition];

9-15 Copyright Oracle Corporation, 1998. All rights reserved.

Modificación de Registros en una TablaModificación de Registros en una Tabla

• Los registros a modificar se especifican por medio de la cláusula WHERE

• Si se omite la cláusula WHERE se modificarían todos los registros de la tabla.

• Los registros a modificar se especifican por medio de la cláusula WHERE

• Si se omite la cláusula WHERE se modificarían todos los registros de la tabla.

SQL> UPDATE emp

2 SET deptno = 20

3 WHERE empno = 7782;

1 row updated.1 row updated.

SQL> UPDATE employee

2 SET deptno = 20;

14 rows updated.

SQL> UPDATE employee

2 SET deptno = 20;

14 rows updated.14 rows updated.

9-16 Copyright Oracle Corporation, 1998. All rights reserved.

Proceso de Modificación con Subconsultas Multi-Columna

Proceso de Modificación con Subconsultas Multi-Columna

SQL> UPDATE emp

2 SET (job, deptno) =

3 (SELECT job, deptno

4 FROM emp

5 WHERE empno = 7499)

6 WHERE empno = 7698;

1 row updated.1 row updated.

Modificar el oficio y departamento del empleado 7698, con los valores correspondientes actualmente al empleado 7499:

Modificar el oficio y departamento del Modificar el oficio y departamento del empleado 7698, con los valores empleado 7698, con los valores correspondientes actualmente al empleado correspondientes actualmente al empleado 7499:7499:

9-17 Copyright Oracle Corporation, 1998. All rights reserved.

Modificación de RegistrosBasados en Otra Tabla

Modificación de RegistrosBasados en Otra Tabla

Utilice subconsultas en sentencias UPDATE, para modificar registros de una tabla, basados en valores de otra tabla.

Utilice subconsultas en sentencias Utilice subconsultas en sentencias UPDATE, para modificar registros de una UPDATE, para modificar registros de una tabla, basados en valores de otra tabla.tabla, basados en valores de otra tabla.

SQL> UPDATE employee

2 SET deptno = (SELECT deptno

3 FROM emp

4 WHERE empno = 7788)

5 WHERE job = (SELECT job

6 FROM emp

7 WHERE empno = 7788);

2 rows updated.

SQL> UPDATE employee

2 SET deptno = (SELECT deptno

3 FROM emp

4 WHERE empno = 7788)

5 WHERE job = (SELECT job

6 FROM emp

7 WHERE empno = 7788);

2 rows updated.2 rows updated.

9-18 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> UPDATE emp

2 SET deptno = 55

3 WHERE deptno = 10;

SQL> UPDATE emp

2 SET deptno = 55

3 WHERE deptno = 10;

Modificación de Registros: Error de Integridad (Constraints)

Modificación de Registros: Error de Integridad (Constraints)

El Departa

mento

núm

ero 5

5 no e

xiste

El Departa

mento

n

El Departa

mento

núúmero

55 n

o exis

te

mero

55 n

o exis

te

9-19 Copyright Oracle Corporation, 1998. All rights reserved.

“…“…Borramos un Borramos un registro de la tabla registro de la tabla DEPTDEPT…”…”

Eliminación de Registros de una Tabla Eliminación de Registros de una Tabla DEPT DEPT

DEPTNO DNAME LOC

------ ---------- --------

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERATIONS BOSTON

50 DEVELOPMENT DETROIT

60 MIS

...DEPT DEPT

DEPTNO DNAME LOC

------ ---------- --------

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERATIONS BOSTON

60 MIS

...

9-20 Copyright Oracle Corporation, 1998. All rights reserved.

La Sentencia DELETELa Sentencia DELETE

Puede eliminar registros existentes de una tabla, por medio de la sentencia DELETE.

Puede eliminar registros existentes de Puede eliminar registros existentes de una tabla, por medio de la sentencia una tabla, por medio de la sentencia DELETE.DELETE.

DELETE [FROM] table

[WHERE condition];

DELETE [FROM] table

[WHERE condition];

9-21 Copyright Oracle Corporation, 1998. All rights reserved.

• Los registros a eliminar se especifican por medio de la cláusula WHERE

• Si omite la cláusula WHERE se borrarán todos los registros de la tabla

• Los registros a eliminar se especifican por medio de la cláusula WHERE

• Si omite la cláusula WHERE se borrarán todos los registros de la tabla

Eliminación de Registros de una TablaEliminación de Registros de una Tabla

SQL> DELETE FROM department

2 WHERE dname = 'DEVELOPMENT';

1 row deleted.

SQL> DELETE FROM department

2 WHERE dname = 'DEVELOPMENT';

1 row deleted.1 row deleted.

SQL> DELETE FROM department;

4 rows deleted.

SQL> DELETE FROM department;

4 rows deleted.4 rows deleted.

9-22 Copyright Oracle Corporation, 1998. All rights reserved.

Eliminación de Registros Basados en Otra Tabla

Eliminación de Registros Basados en Otra Tabla

Utilice subconsultas en sentencias DELETE, para eliminar registros de una tabla, basados en valores de otra tabla.

Utilice subconsultas en sentencias Utilice subconsultas en sentencias DELETE, para eliminar registros de una DELETE, para eliminar registros de una tabla, basados en valores de otra tabla.tabla, basados en valores de otra tabla.

SQL> DELETE FROM employee

2 WHERE deptno =

3 (SELECT deptno

4 FROM dept

5 WHERE dname ='SALES');

6 rows deleted.6 rows deleted.

9-23 Copyright Oracle Corporation, 1998. All rights reserved.

Eliminación de Registros: Error de Integridad (Constraints)

Eliminación de Registros: Error de Integridad (Constraints)

SQL> DELETE FROM dept

2 WHERE deptno = 10;

SQL> DELETE FROM dept

2 WHERE deptno = 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 elim

inar u

n registro

que contie

ne

una clave prim

aria, u

sada como clave exte

rna

en otra

tabla

No puede elim

inar u

n registro

que contie

ne

No puede elim

inar u

n registro

que contie

ne

una clave prim

aria, u

sada como clave exte

rna

una clave prim

aria, u

sada como clave exte

rna

en otra

tabla

en otra

tabla

9-24 Copyright Oracle Corporation, 1998. All rights reserved.

Transacciones en la Base de DatosTransacciones en la Base de Datos

Contienen una de las siguientes sentencias:

• Sentencias DML que deciden un cambio consistente sobre los datos

• Una sentencia DDL

• Una sentencia DCL

Contienen una de las siguientes sentencias:Contienen una de las siguientes sentencias:

• Sentencias DML que deciden un cambio consistente sobre los datos

• Una sentencia DDL

• Una sentencia DCL

9-25 Copyright Oracle Corporation, 1998. All rights reserved.

Transacciones en la Base de DatosTransacciones en la Base de Datos

• Comienzan cuando se ejecuta el primer comando SQL.

• Finalizan con uno de los siguientes eventos:

– COMMIT o ROLLBACK.

– Ejecución de un comando DDL o DCL (commit automático).

– Errores, salida o caída del sistema.

•• Comienzan cuando se ejecuta el Comienzan cuando se ejecuta el primer comando SQL. primer comando SQL.

•• Finalizan con uno de los siguientes Finalizan con uno de los siguientes eventos:eventos:

– COMMIT o ROLLBACK.

– Ejecución de un comando DDL o DCL (commit automático).

– Errores, salida o caída del sistema.

9-26 Copyright Oracle Corporation, 1998. All rights reserved.

Ventajas de COMMIT y ROLLBACK

Ventajas de COMMIT y ROLLBACK

•• Aseguran la consistencia de los datos.Aseguran la consistencia de los datos.

•• Pueden visualizar los cambios sobre los Pueden visualizar los cambios sobre los datos antes de hacerlos permanentes. datos antes de hacerlos permanentes.

•• Agrupan lAgrupan lóógicamente tareas gicamente tareas relacionadas entre srelacionadas entre síí..

9-27 Copyright Oracle Corporation, 1998. All rights reserved.

DELETEDELETE

Control de TransaccionesControl de Transacciones

TransacciónTransacciTransaccióónn

Savepoint ASavepoint A

ROLLBACK to Savepoint BROLLBACK to Savepoint B

DELETEDELETE

Savepoint BSavepoint BCOMMITCOMMIT

INSERTINSERTUPDATEUPDATE

ROLLBACK to Savepoint AROLLBACK to Savepoint A

INSERTINSERTUPDATEUPDATEINSERTINSERT

ROLLBACKROLLBACK

INSERTINSERT

9-28 Copyright Oracle Corporation, 1998. All rights reserved.

•• Un commit automUn commit automáático ocurre bajo una de las tico ocurre bajo una de las siguientes circunstancias:siguientes circunstancias:

–– Se emite un comando DDL, tal como Se emite un comando DDL, tal como CREATE.CREATE.

–– Se emite un comando DCL, tal como Se emite un comando DCL, tal como GRANT.GRANT.

–– Una salida normal desde SQL*Plus, sin Una salida normal desde SQL*Plus, sin realizar un COMMIT o ROLLBACK realizar un COMMIT o ROLLBACK explexplíícitamente.citamente.

•• Un rollback automUn rollback automáático ocurre bajo una tico ocurre bajo una terminaciterminacióón anormal de SQL*Plus o una falla n anormal de SQL*Plus o una falla del sistema.del sistema.

Proceso Implícito de TransaccionesProceso Implícito de Transacciones

9-29 Copyright Oracle Corporation, 1998. All rights reserved.

Estado de los Datos Antes de COMMIT o ROLLBACK

Estado de los Datos Antes de COMMIT o ROLLBACK

•• El estado previo de los datos puede ser El estado previo de los datos puede ser recuperado porque el afectado es el brecuperado porque el afectado es el búúfer de la fer de la base de datos. base de datos.

•• El usuario actual puede revisar los resultados El usuario actual puede revisar los resultados de sus operaciones DML usando la sentencia de sus operaciones DML usando la sentencia SELECT. SELECT.

•• Otros usuarios Otros usuarios no pueden no pueden ver los resultados ver los resultados de las sentencias DML ejecutadas por el de las sentencias DML ejecutadas por el usuario actual.usuario actual.

•• Las filas afectadas son bloqueadas (Las filas afectadas son bloqueadas (locked)locked); ; otros usuarios no pueden cambiar los datos otros usuarios no pueden cambiar los datos pertenecientes a esas filas.pertenecientes a esas filas.

9-30 Copyright Oracle Corporation, 1998. All rights reserved.

Estado de los Datos Después del COMMIT

Estado de los Datos Después del COMMIT

•• Los cambios en los datos son escritos en la Los cambios en los datos son escritos en la base de datos.base de datos.

•• Los datos anteriores se pierden Los datos anteriores se pierden definitivamente.definitivamente.

•• Todos los usuarios pueden ver los resultados. Todos los usuarios pueden ver los resultados.

•• Se liberan los bloqueos aplicados a las filas Se liberan los bloqueos aplicados a las filas afectadas; esas filas estafectadas; esas filas estáán ahora disponibles n ahora disponibles para que otros usuarios las usen.para que otros usuarios las usen.

•• Se borran todos los savepoints.Se borran todos los savepoints.

9-31 Copyright Oracle Corporation, 1998. All rights reserved.

Commit de DatosCommit de Datos

SQL> UPDATE emp

2 SET deptno = 10

3 WHERE empno = 7782;

1 row updated.

SQL> UPDATE emp

2 SET deptno = 10

3 WHERE empno = 7782;

1 row updated.1 row updated.

• Realizar los cambios:• Realizar los cambios:

• Hacer Commit de los cambios:• Hacer Commit de los cambios:SQL> COMMIT;

Commit complete.Commit complete.

9-32 Copyright Oracle Corporation, 1998. All rights reserved.

Estado de los Datos Después de Hacer ROLLBACK

Estado de los Datos Después de Hacer ROLLBACK

•• Se descartan todos los cambios pendientes.Se descartan todos los cambios pendientes.

•• Los cambios en los datos se deshacen.Los cambios en los datos se deshacen.

•• Se restaura el estado previo de los datos. Se restaura el estado previo de los datos.

•• Se levantan todos los bloqueos sobre las filas Se levantan todos los bloqueos sobre las filas afectadas.afectadas.

SQL> DELETE FROM employee;

14 rows deleted.14 rows deleted.

SQL> ROLLBACK;

Rollback complete.Rollback complete.

9-33 Copyright Oracle Corporation, 1998. All rights reserved.

Hacer ROLLBACK Hasta un Punto de Salvaguarda (Marca)

Hacer ROLLBACK Hasta un Punto de Salvaguarda (Marca)

•• Crear una marca dentro de una transacciCrear una marca dentro de una transaccióón n usando el comando SAVEPOINT (marca).usando el comando SAVEPOINT (marca).

•• Hacer un Hacer un rollbackrollback hacia la marca usando el hacia la marca usando el comando ROLLBACK TO SAVEPOINT.comando ROLLBACK TO SAVEPOINT.

SQL> UPDATE...

SQL> SAVEPOINT update_done;

Savepoint created.Savepoint created.

SQL> INSERT...

SQL> ROLLBACK TO update_done;

Rollback complete.Rollback complete.

9-34 Copyright Oracle Corporation, 1998. All rights reserved.

Rollback a Nivel de SentenciaRollback a Nivel de Sentencia

•• Si una Si una úúnica sentencia DML falla nica sentencia DML falla durante su ejecucidurante su ejecucióón, entonces se hace n, entonces se hace rollbackrollback sobre esa sentencia solamente.sobre esa sentencia solamente.

•• Oracle8 implementa una marca de Oracle8 implementa una marca de seguridad o seguridad o savepoint savepoint implimplíícito.cito.

•• Todos los otros cambios se mantienen.Todos los otros cambios se mantienen.

•• El usuario deberEl usuario deberíía terminar a terminar explexplíícitamente las transacciones citamente las transacciones usando una sentencia COMMIT o usando una sentencia COMMIT o ROLLBACK.ROLLBACK.

9-35 Copyright Oracle Corporation, 1998. All rights reserved.

Consistencia en LecturaConsistencia 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.

9-36 Copyright Oracle Corporation, 1998. All rights reserved.

Implementación de laConsistencia en Lectura

Implementación de laConsistencia en Lectura

update empupdate emp

set sal = 2000set sal = 2000

where ename = where ename =

'SCOTT''SCOTT'

Bloques Bloques

de Datosde Datos

Segmentos Segmentos

de Rollbckde Rollbck

select *select *

from empfrom emp

Datos Datos cambiados y cambiados y no cambiadosno cambiados

Antes de Antes de

cambiar los cambiar los

datos datos

““antiguosantiguos””

Usuario AUsuario A

Usuario BUsuario B

Imagen Imagen

ConsistenteConsistente

en Lecturaen Lectura

9-37 Copyright Oracle Corporation, 1998. All rights reserved.

BloqueosBloqueos

Bloqueos en Oracle8:

• Previenen la intereacción destructiva entre transacciones concurrentes

• No requieren acciones por parte 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:– Exclusive (exclusivos)– Shared (compartidos)

Bloqueos en Oracle8:Bloqueos en Oracle8:

• Previenen la intereacción destructiva entre transacciones concurrentes

• No requieren acciones por parte 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:– Exclusive (exclusivos)– Shared (compartidos)

9-38 Copyright Oracle Corporation, 1998. All rights reserved.

ResumenResumen

Comando Descripción

INSERT Agrega 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.

9-39 Copyright Oracle Corporation, 1998. All rights reserved.

Visión General de la PrácticaVisió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.