Manipulacion de Datos SQL cap10

29
UPDATE, DELETE, INSERT, TRANSACTION Oracle Fundamentals I

description

manipulacion de datos, SQL capitulo 10 Oracle Fundamentals I, z0-051

Transcript of Manipulacion de Datos SQL cap10

Page 1: Manipulacion de Datos SQL cap10

UPDATE, DELETE, INSERT, TRANSACTION

Oracle Fundamentals I

Page 2: Manipulacion de Datos SQL cap10

Lenguaje de Manipulacion de datos DML Select Insert Update Delete Merge

Page 3: Manipulacion de Datos SQL cap10

INSERT

Inserta tuplas dentro de una tabla

La insercion debe respetar reglas definidas, las cuales se denominan CONSTRAINT

Page 4: Manipulacion de Datos SQL cap10

UPDATE

Se utiliza para modificar tuplas dentro de una tabla, las tuplas YA EXISTEN EN LA TABLA

Page 5: Manipulacion de Datos SQL cap10

DELETE

Elimina tuplas de una tabla. Luego de la eliminacion, en la

tabla se disparan desencadenantes de integridad referencial hacia otras tablas

Page 6: Manipulacion de Datos SQL cap10

MERGE

Existe a partir del SQL 2003, oracle 10g hacia adelante.

Toma un conjunto de tuplas origen, si una fila en el origen coincide con el destino hace UPDATE, de otro modo hace INSERT

Page 7: Manipulacion de Datos SQL cap10

TRUNCATE

Desde el punto de vista del usuario, equivale a utilizar Delete sin la clausula Where.

La diferencia es que es muy eficiente y elimina todas las tuplas de forma instantánea.

Page 8: Manipulacion de Datos SQL cap10

Insertando filas

Insert into hr.regions values(‘10’, ‘Great Britain’);

Insert into hr.regions( region_name,region_id) values (‘Australasia’, 11);

Insert into regions_copy select * from regions;

Page 9: Manipulacion de Datos SQL cap10

Ejercicio

Select * from regions; Insert into regions values(101, ‘Great

Britain’); Insert into regions values(&Region_id,

‘&regionName’); Insert into regions values(( select

max(region_id)+1 from regions),’Oceania’);

Commit;

Page 10: Manipulacion de Datos SQL cap10

UPDATE

UPDATE tabla SET columna1= valor, columna2=valor2 … WHERE condicion;

Update employees set salary= (select salary from employees where employee_id=206);

Update employees set salary=3000 where employee_id=206

Page 11: Manipulacion de Datos SQL cap10

Ejercicio

Update regions set region_name = ‘Scandinavia’ where region_id=101;

Update regions set region_name = ‘Iberia’ where region_id>100;

Select * from regions; Commit;

Page 12: Manipulacion de Datos SQL cap10

DELETE

DELETE FROM tabla WHERE condicion;

Delete from employees where employee_id=206;

Delete from employees where department_id is null;

Page 13: Manipulacion de Datos SQL cap10

Ejercicio

Delete from regions where region_id = 204;

Delete from regions; Delete from regions where

region_id in (select region_id from regions where region_name= ‘Iberia’);

Select * from regions; Commit;

Page 14: Manipulacion de Datos SQL cap10

TRUNCATE

TRUNCATE TABLE tabla1;

Page 15: Manipulacion de Datos SQL cap10

TRANSACCIONES

Una transaccion es una o mas instrucciones DML, seguidas del comando ROLLBACK o COMMIT

SAVEPOINT sirve para crear puntos de transaccion

Page 16: Manipulacion de Datos SQL cap10

PRUEBA ACIDA

Toda base de datos relacional debe complir con: Atomicidad Consistencia Isolation (aislamiento) Durabilidad

Page 17: Manipulacion de Datos SQL cap10

ATOMICIDAD

El principio de atomicidad expresa que todas las partes de una transaccion deben completarse o no hacer ninguna

Ej. Una transferencia bancaria entre una cuenta y otra.

Page 18: Manipulacion de Datos SQL cap10

CONSISTENCIA

Expresa que el estado que resulta de una consulta debe ser consistente con el stado de la base de datos en cualquier tiempo que la consulta se ejecute.

Page 19: Manipulacion de Datos SQL cap10

AISLAMIENTO

Establece que una transaccion incompleta debe ser invisible para el resto del mundo

Page 20: Manipulacion de Datos SQL cap10

DURABLE

Una vez que una transaccion se ha completado, debe ser imposible que los datos se pierdan en la base de datos.

Page 21: Manipulacion de Datos SQL cap10

INICIO Y FIN DE UNA TRANSACCION Una sesion inicia una

transaccion para cualquier instrucción INSERT, update, select o delete (NO para truncate, pues es no es DML)

No se puede iniciar una transaccion nueva sin terminar la primera. Standard SQL

Page 22: Manipulacion de Datos SQL cap10

Si ejecutamos una instrucción DDL (create, alter o Drop) o una DCL (Grant o Revoke) en la transaccion actual se realizara un COMMIT

Debido a que ellas hacen modificaciones que requieren actualizacion inmediata

Page 23: Manipulacion de Datos SQL cap10

Controlando una transacción Una transaccion inicia de forma

implicita con una instrucción DML

COMMIT; confirma una transaccion.

Hasta que una transaccion en completada, se mantiene invisible para otras sesiones.

Page 24: Manipulacion de Datos SQL cap10

ROLLBACK

ROLLBACK [TO SAVEPOINT save];

Revierte una transaccion, utilizando puntos de guardado si asi se desea.

Page 25: Manipulacion de Datos SQL cap10

SAVEPOINT

El comando SAVEPOINT se puede utilizar para establecer marcas que pondrá utilizar en un ROLLBACK, pero sigue siendo la misma transacción en curso, independientemente de la utilización de SAVEPOINT.

SAVEPOINT savepoint1;

Page 26: Manipulacion de Datos SQL cap10

Ejercicio

Page 27: Manipulacion de Datos SQL cap10

Ejercicio mental

•Filas usuario actual= O

•Filas otras sesiones= O

Truncate table tab;

•Filas usuario actual = 1

•Filas otras sesiones= O

Insert into tab values(1);

•Filas usuario actual = 1

•Filas otras sesiones= O

Savepoint uno;

•Filas usuario actual = 2

•Filas otras sesiones= O

Insert into tab values(2);

•Filas usuario actual = 1

•Filas otras sesiones= O

Rollback to savepoint uno;

•Filas usuario actual = 1

•Filas otras sesiones= 1

Commit;

Page 28: Manipulacion de Datos SQL cap10

Auto-Commit

Es posible configurar SQL developer y SQLplus para hacer un commit implicitamente luego de cada instrucción DML, solo que si se activa la instrucción Rollback ya no tendra efecto.

SET AUTOCOMMIT ON SET AUTOCOMMIT OFF

Page 29: Manipulacion de Datos SQL cap10

Ojo mucho Ojo

Primer Usuario

• Select * from regions;

• .

• • Update regions

set region_name=‘GB’ where region_id=5;

Segundo Usuario

• Select * from regions;

• Delete from regions where region_id=5;

• commit

<< 0 rows updated. >>