manipulacion de datos sql cap10
Post on 26-May-2015
3.525 Views
Preview:
DESCRIPTION
TRANSCRIPT
UPDATE, DELETE, INSERT, TRANSACTION
Oracle Fundamentals I
Lenguaje de Manipulacion de datos DML Select Insert Update Delete Merge
INSERT
Inserta tuplas dentro de una tabla
La insercion debe respetar reglas definidas, las cuales se denominan CONSTRAINT
UPDATE
Se utiliza para modificar tuplas dentro de una tabla, las tuplas YA EXISTEN EN LA TABLA
DELETE
Elimina tuplas de una tabla. Luego de la eliminacion, en la
tabla se disparan desencadenantes de integridad referencial hacia otras tablas
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
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.
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;
Ejercicio
Select * from regions; Insert into regions values(101, ‘Great
Britain’); Insert into regions values(&Region_id,
‘®ionName’); Insert into regions values(( select
max(region_id)+1 from regions),’Oceania’);
Commit;
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
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;
DELETE
DELETE FROM tabla WHERE condicion;
Delete from employees where employee_id=206;
Delete from employees where department_id is null;
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;
TRUNCATE
TRUNCATE TABLE tabla1;
TRANSACCIONES
Una transaccion es una o mas instrucciones DML, seguidas del comando ROLLBACK o COMMIT
SAVEPOINT sirve para crear puntos de transaccion
PRUEBA ACIDA
Toda base de datos relacional debe complir con: Atomicidad Consistencia Isolation (aislamiento) Durabilidad
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.
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.
AISLAMIENTO
Establece que una transaccion incompleta debe ser invisible para el resto del mundo
DURABLE
Una vez que una transaccion se ha completado, debe ser imposible que los datos se pierdan en la base de datos.
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
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
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.
ROLLBACK
ROLLBACK [TO SAVEPOINT save];
Revierte una transaccion, utilizando puntos de guardado si asi se desea.
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;
Ejercicio
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;
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
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. >>
top related