Curso SQL - Leccion 10

Preview:

Citation preview

Programación SQL Lección 10

Manipulación de datos

SQL Fundamentals I

Después de completar esta lección, usted debería ser capaz de hacer el siguiente: Describir cada declaración lenguaje de

manipulación de datos (DML) Insertar filas en una tabla Actualizar filas de una tabla Eliminar filas de una tabla Realizar control de las transacciones

Objetivos

Agregar nuevas filas en una tabla◦Sentencia INSERT

Cambiar datos en una tabla◦Sentencia UPDATE

Eliminar filas de una tabla:◦sentencia DELETE◦sentencia TRUNCATE

Control de las transacciones de base de datos utilizando COMMIT, ROLLBACK, y SAVEPOINT

Visión de consistencia Cláusula FOR UPDATE en una sentencia SELECT

Agenda

Una instrucción DML se ejecuta cuando:◦ Añaden nuevas filas a una tabla◦ Modifican las filas existentes en una tabla◦ Eliminar las filas existentes de una tabla

Una transacción consiste en una colección de sentencias DML que forman una unidad lógica de trabajo.

Lenguaje de manipulación de datos

Agregar una nueva fila a una tabla

Añadir nuevas filas a una tabla mediante la instrucción INSERT:

Con esta sintaxis, sólo una fila se inserta a la vez.

Sintaxis de sentencias INSERT

Insertar una nueva fila que contiene los valores para cada columna.

Los valores de lista en el orden predeterminado de las columnas de la tabla.

Opcionalmente, se puede agregar una lista de las columnas en la cláusula INSERT.

Incluya valores de caracter y fecha dentro de comillas simples.

Inserción de nuevas Filas

Método implícito: Omita la columna de la lista de columnas.

Método explícito: especifique la palabra clave NULL en la cláusula VALUES.

Inserción de filas con valores NULL

La función SYSDATE registra la fecha y hora actuales.

Inserción de Valores especiales

Añadir un nuevo empleado.

Verifique su adición.

Inserción de valores específicos de fecha y hora

Utilice la variable de sustitución & en una sentencia SQL para solicitar valores.

& es un placeholder (marcador de posición) para el valor de la variable.

Creación de un Script

Escriba su sentencia INSERT con una subconsulta:

No utilice la cláusula VALUES. Haga coincidir el número de columnas en la

cláusula INSERT para los de la subconsulta. Inserta todas las filas devueltas por la subconsulta

en la tabla sales_reps.

Copiar Filas de otra tabla

Agregar nuevas filas en una tabla◦Sentencia INSERT

Cambiar datos en una tabla◦Sentencia UPDATE

Eliminar filas de una tabla:◦sentencia DELETE◦sentencia TRUNCATE

Control de las transacciones de base de datos utilizando COMMIT, ROLLBACK, y SAVEPOINT

Visión de consistencia Cláusula FOR UPDATE en una sentencia SELECT

Agenda

Cambio de datos en una tabla

Modificar los valores existentes en una tabla con la actualización declaración:

Actualización de más de una fila a la vez (si es necesario).

Sintaxis sentencia UPDATE

Los valores de una fila o filas específicas son modificadas si especificar la cláusula WHERE:

Los valores de todas las filas de la tabla se modifican si se omite la cláusula WHERE:

Especificar set column_name = NULL para actualizar una columna valor a NULL.

Actualización de filas en una tabla

Actualizar al empleado con Job 11 y actualizar el salario y el job con lo que posee e empleado 205

Actualización de dos columnas con una subconsulta

Utilice las subconsultas en las sentencias UPDATE para actualizar la fila valores en una tabla basada en los valores de otra tabla:

Actualización de filas basándose en otra Tabla

Agregar nuevas filas en una tabla◦Sentencia INSERT

Cambiar datos en una tabla◦Sentencia UPDATE

Eliminar filas de una tabla:◦sentencia DELETE◦sentencia TRUNCATE

Control de las transacciones de base de datos utilizando COMMIT, ROLLBACK, y SAVEPOINT

Visión de consistencia Cláusula FOR UPDATE en una sentencia SELECT

Agenda

Remover una fila de una tabla

Se puede eliminar filas existentes de una tabla utilizando la sentencia DELETE:

Sentencia DELETE

Filas específicas se eliminan si se especifica la cláusula WHERE:

Se eliminan todas las filas de la tabla si se omite el WHERE cláusula:

Eliminación de filas de una tabla

Utilice las subconsultas en las sentencias DELETE para eliminar filas de una tabla basada en los valores de otra tabla:

Borrar registros Basados en otra Tabla

Elimina todas las filas de una tabla, dejando la tabla vacía y la estructura de la tabla intacta

Es una declaración de lenguaje de definición de datos (DDL) en lugar de una Instrucción DML; no puede ser fácilmente deshecho

Sintaxis:

 Ejemplo:

Sentencia TRUNCATE

Agregar nuevas filas en una tabla◦Sentencia INSERT

Cambiar datos en una tabla◦Sentencia UPDATE

Eliminar filas de una tabla:◦sentencia DELETE◦sentencia TRUNCATE

Control de las transacciones de base de datos utilizando COMMIT, ROLLBACK, y SAVEPOINT

Visión de consistencia Cláusula FOR UPDATE en una sentencia SELECT

Agenda

Una transacción de base de datos consta de una de la siguientes: Una instrucción DML que constituyen un

cambio consistente para los datos Una instrucción DDL Una declaración de lenguaje de control de

datos (DCL)

Transacciones de bases de datos

Comienza cuando se ejecuta la primera instrucción DML SQL.

Terminar con uno de los siguientes eventos:◦ Cuando se emite sentencia Un COMMIT o

ROLLBACK.◦ Cuando se ejecuta una sentencia DDL o DCL

(commit automática).◦ El usuario sale SQL Developer o SQL * Plus.◦ El sistema se bloquea.

Las transacciones de bases de datos: Inicio y Fin

Con declaraciones COMMIT y ROLLBACK, se puede:

Garantizar la coherencia de los datos Pre visualizar los cambios antes que los

mismos sean efectivos Operaciones en grupo lógicamente

relacionados

Ventajas de las declaraciones COMMIT y ROLLBACK

Sentencias de control de transacción explícita

Crear un marcador en la transacción actual mediante el Sentencia SAVEPOINT.

Revertir a ese marcador utilizando la sentencia ROLLBACK TO SAVEPOINT.

Deshaciendo cambios en un marcador

Un COMMIT automático se produce en la siguiente

circunstancias:◦ Una declaración emitida DDL◦ Una declaración emitida DCL◦ La salida normal de SQL Developer o SQL * Plus,

sin escribir explícitamente COMMIT o ROLLBACK Una reversión automática se produce

cuando hay un anormal terminación de SQL Developer o SQL * Plus o el sistema falló.

Procesamiento de Transacciones implícita

El estado anterior de los datos se puede recuperar.

El usuario actual puede revisar los resultados de las operaciones DLM mediante el uso de la instrucción SELECT.

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

Las filas afectadas están bloqueados; otros usuarios no pueden cambiar los datos en las filas afectadas.

Estado de los datos antes de COMMIT o ROLLBACK

Los cambios en los datos se guardan en la base de datos.

El estado anterior de los datos se sobrescribe.

Todos los usuarios pueden ver los resultados. El bloqueos en las filas afectadas son

liberados; esas filas están disponible para otros usuarios manipular.

Todos los puntos de savepoints se borran.

Estado de los datos después de un COMMIT

Realizar los cambios:

Confirmar los cambios:

«Commiteando» Datos

Deseche todos los cambios pendientes utilizando la declaración ROLLBACK:

Se deshacen los cambios en los datos. El estado anterior de los datos ha sido restaurado. Los bloqueos en las filas afectadas son liberados.

Estado de los datos después de ROLLBACK

Estado de los datos después de ROLLBACK: Ejemplo

Si una sola instrucción DML falla durante la ejecución, sólo esa declaración se deshace.

El servidor de Oracle implementa un punto de salvaguarda implícita.

Se conservan todos los otros cambios. El usuario debe terminar transacciones

explícitamente por la ejecución de una sentencia COMMIT o ROLLBACK.

Nivel de declaración Rollback

Agregar nuevas filas en una tabla◦Sentencia INSERT

Cambiar datos en una tabla◦Sentencia UPDATE

Eliminar filas de una tabla:◦sentencia DELETE◦sentencia TRUNCATE

Control de las transacciones de base de datos utilizando COMMIT, ROLLBACK, y SAVEPOINT

Visión de consistencia Cláusula FOR UPDATE en una sentencia SELECT

Agenda

La visión de consistencia garantiza una visión consistente de los datos en todo momento.

Los cambios realizados por un usuario no entren en conflicto con los cambios realizados por otro usuario.

Leer consistencia asegura que, en los mismos datos:◦ Los lectores no esperan a los escritores◦ Los escritores no esperan a los lectores◦ Los escritores esperan escritores

Visión de consistencia

Implementar Visión de consistencia

Agregar nuevas filas en una tabla◦Sentencia INSERT

Cambiar datos en una tabla◦Sentencia UPDATE

Eliminar filas de una tabla:◦sentencia DELETE◦sentencia TRUNCATE

Control de las transacciones de base de datos utilizando COMMIT, ROLLBACK, y SAVEPOINT

Visión de consistencia Cláusula FOR UPDATE en una sentencia SELECT

Agenda

Bloquea las filas de la tabla EMPLEADOS donde job_id es SA_REP.

EL bloqueo se libera sólo cuando se emite un ROLLBACK o un COMMIT.

 Si la sentencia SELECT intenta bloquear una fila que es bloqueado por otro usuario, la base de datos espera hasta que la fila este disponibles, y luego devuelve los resultados de la sentencia SELECT.

Cláusula FOR UPDATE en una instrucción SELECT

Se puede utilizar la cláusula FOR UPDATE en una declaración SELECT en contra de varias tablas.

Las filas de los empleados y las tablas DEPARTAMENTS están bloqueadas.

Utiliza FOR UPDATE DE column_name para calificar la columna tiene la intención de cambiar, entonces sólo las filas de esa específica tabla están bloqueados.

Cláusula FOR UPDATE: Ejemplos

Las siguientes declaraciones producen los mismos resultados:

a. Verdadero b. Falso

Examen

En esta lección, debe haber aprendido a utilizar el siguientes declaraciones:

Resumen

Esta práctica se abordan los siguientes temas: Inserción de filas en las tablas Actualizar y suprimir filas de la tabla El control de las transacciones

Práctica 10: Información general

¿Preguntas?

Emmanuel OrtizConsultor Sr.emmanueltiz@gmail.comemail  / gtalkemmanueltizSkype