Ir al contenido principal

Entradas

Mostrando entradas de octubre 9, 2013

Resumen

Describir cada sentencia de lenguaje de manipulación de datos ( DML) INSERT ingresa filas en una tabla . ACTUALIZACIÓN ajusta los valores de las filas existentes. DELETE elimina filas. MERGE puede combinar las funciones de INSERT , UPDATE y DELETE . Aunque TRUNCATE no es DML , elimina todas las filas de una tabla. Insertar filas en una tabla INSERT puede insertar una fila o un conjunto de filas. Es posible para un INSERT insertar en filas en varias tablas . Subconsultas se pueden utilizar para generar las filas que se insertan con INSERT. Subconsultas y funciones pueden ser utilizados para generar valores de columna. Un INSERT no es permanente hasta que se ha confirmado(commit). Actualizar filas de una tabla UPDATE puede afectar a una fila o un conjunto de filas de una tabla. Subconsultas se pueden utilizar para seleccionar las filas que se deben actualizar . Subconsultas y funciones pueden ser utilizados para generar valores de columna. Un UPDATE no es perman

SELECT FOR UPDATE

Una ultima sentencia de control de transacciones es SELECT FOR UPDATE. Oracle, por defecto, ofrece el más alto nivel de concurrencia: las lecturas no bloquean a las escrituras y los escrituras no bloquean a las lecturas. O, en lenguaje claro, no hay problema con una sesión de consulta de datos con otra sesión que está actualizando, o una sesión de actualización de datos con otra sesión está consultando. Sin embargo, hay ocasiones en que es posible que desee cambiar este comportamiento y evitar cambios en los datos que se está consultando. No es usual para una aplicacion recuperar un conjunto de filas con un comando SELECT. presentarlos a un usuario , y lo pedirá sin ningún cambio. Debido a que Oracle es una base de datos multiusuario, no es imposible que otra sesión  también ha recuperado las mismas filas. Si las dos sesiones tratan de hacer cambios, puede haber algunos efectos bastante extraño. La siguiente tabla muestra tal situación. Esto es un poco desconcertante. Una for

SAVEPOINT

El uso de puntos de retorno es permitir a un programador para establecer un marcador en una transacción que se puede utilizar para controlar el efecto del comando ROLLBACK. En lugar de hacer retroceder toda la transacción, se vuelve posible revertir todos los cambios realizados después de un punto en particular, y dejar los cambios hechos antes de ese punto intacto. La operación en sí sigue siendo en Progreso: no confirmada, aún rollbackable , y todavía invisible para otras sesiones. La sintaxis es la siguiente: SAVEPOINT savepoint;

ROLLBACK

Mientras que una transacción está en progreso, Oracle mantiene una imagen de los datos anteriores a la transacción. La imagen se presenta a otras sesiones que consultan los datos, mientras que la operación está en curso. También se utiliza para deshacer la transacción automáticamente si algo sale mal, o deliberadamente si la sesión lo solicita. La sintaxis para solicitar una operación de deshacer es la siguiente: ROLLBACK [ A SAVEPOINT punto de rescate ] ; El estado de los datos antes de la reversión es que los datos se han cambiado, pero la información necesaria para revertir los cambios está disponible. Esta información se presenta a todas las otras sesiones, a fin de aplicar el principio de aislamiento. La reversión se descartarán todos los cambios mediante la restauración de la imagen prechange de los datos, las filas de la transacción introducida se borrará, filas de la transacción eliminado se inserta de nuevo en la tabla, y las filas que fueron actualizadas serán devue

COMMIT

Sintácticamente, COMMIT es el comando más simple SQL. La sintaxis es la siguiente: COMMIT; Esto va a terminar la transacción actual, que tiene el doble efecto de hacer los cambios permanentes y visibles para otras sesiones. Hasta que una transacción se confirma, no puede ser vista por cualquier otro sesión, incluso si están en una sesión a la base de datos con el mismo nombre de usuario que el de la sesión de la ejecución de las transacciones. Hasta que una transacción se confirma, es invisible para otras sesiones y se puede revertir. Pero una vez que se ha comprometido, es absolutamente irreversible. El estado de los datos antes de confirmar es que se han hecho los cambios, pero todas las sesiones que no sean el que hizo los cambios se redirigen a las copias de los datos en su forma prechanged. Así que si la sesión ha insertado filas, otras sesiones que seleccionen de la tabla no podrán verlos. Si la transacción ha borrado a filas, otras sesiones de selección de la tabla

Sentencias de Control de Transacciones.

Una transacción comienza implícitamente con la primera sentencia DML. No hay un comando para iniciar explícitamente una transacción. La operación continúa a través de todas las sentencias DML subsiguientes emitidas por la sesión. Estos estados pueden estar en contra de cualquier número de tablas: una transacción no se limita a una tabla. Finaliza cuando la sesión emite un comando COMMIT o ROLLBACK. El comando SAVEPOINT se puede utilizar para establecer marcadores que pondrá en escena la acción de un ROLLBACK, pero la misma transacción está en curso, independientemente del uso de SAVEPOINT.

El Inicio y Fin de una Transacción.

Una sesión inicia una Transacción en el momento que se emite cualquier sentencia INSERT, UPDATE o DELETE (pero no un TRUNCATE, que es un comando DDL, no un DDL). La transacción continúa a través de cualquier numero de otros comandos DML hasta que la sesión emite un COMMIT o un ROLLBACK. Sólo entonces los cambios se hacen permanentes y se hacen visibles a otras sesiones (si es que se ha hecho un COMMIT, en lugar de un ROLLBACK). No es posible anidar transacciones. El estándar SQL no permite que un usuario inicie una transacción y luego comenzar otra antes de terminar la primera. Esto se puede hacer con PL / SQL (lenguaje de tercera generación de propiedad de Oracle), pero no con el estándar de la industria de SQL. Las sentencias de control de transacciones explícitas son COMMIT, ROLLBACK y SAVEPOINT. También hay circunstancias distintas de un COMMIT o ROLLBACK que implícitamente terminar una transacción:    n   Hacer una declaración DDL o DCL. n   Cómo salir de la herramienta d

MERGE

El comando MERGE es muy a menudo ignorado, porque no hace nada mas que no pueda hacer un INSERT, UPDATE y DELETE. Es, sin embargo, muy potente, ya que con una sola pasada a través de los datos que puede llevar a cabo las tres operaciones. Esto puede mejorar el rendimiento de forma espectacular. merge into employees e using new_employees n on (e.employee_id = n.employee_id) when matched then update set e.salary=n.salary when not matched then insert (employee_id,last_name,salary) values (n.employee_id,n.last_name,n.salary);

Eliminando Filas con TRUNCATE

El comando TRUNCATE es un DDL (Lenguaje de Definición de Datos).  Opera dentro del diccionario de datos y afecta a la estructura de la tabla, no el contenido de la tabla. Sin embargo, el cambio se hace a la estructura tiene el efecto secundario de destruir todas las filas de la tabla. TRUNCATE limpia completamente la Tabla, no existe el concepto de selección de filas. Una parte de la definición de una tabla que se almacena en el diccionario de datos es la ubicación física de la tabla. Cuando es creada, se le asigna una sola área de espacio, de tamaño fijo. En los DATAFILES de la base de datos. Esto es conocido como un EXTEND y estará vacio. Posteriormente filas son insertadas y los EXTEND serán llenados. Una vez llenos los EXTEND serán asignados más automáticamente. Una tabla por lo tanto está compuesta de uno o más EXTEND. Que mantienen o almacenan las filas. Así como el seguimiento de la asignación de EXTEND’S, el diccionario de datos registra la cantidad de espacio asignado a

Eliminando Filas de una tabla

Para eliminar filas de una tabla, hay dos opciones: el comando DELETE y el comando TRUNCATE. DELETE es menos drástico, ya que puede ser revertido, un TRUNCATE no puede ser revertido. DELETE es mas controlable, ya que es posible elegir que filas eliminar, sin embargo un TRUNCATE siempre afectara el total de la tabla. DELETE es más lento y requiere más esfuerzo de la Base de Datos. TRUNCATE es virtualmente instantáneo. Eliminando Filas con DELETE DELETE puede eliminar filas de una sola tabla. La sintaxis es como sigue: DELETE FROM table [ WHERE condición ] ; Es el comando más simple de los comandos DML, si la clausula WHERE es omitida. En ese caso cada fila de la tabla será eliminada. La única complicación del comando es la condición. Esta puede ser una comparación de una columna con un literal. Ejemplos: -- EJEMPLO 1 DELETE FROM employees WHERE employee_id = 198; Este ejemplo realiza una eliminación mediante la llave primaria. Esto nos garantiza que solo una