Sunteți pe pagina 1din 29

MODELAMIENTO DE DATOS

SQL (DML)
Teora y prctica.

Lenguaje de manipulacion de datos (DML)

Prof. Orlando Seplveda

DML

Se ejecuta una sentencia DML cuando:


filas nuevas a una tabla. Modifica las filas existentes de una tabla. Elimina filas existentes de una tabla. Una transaccin consta de una o varias sentencias DML que forman una unidad de trabajo lgica. Oracle no tiene una sentencia tipo Begin Transaction. Cada sentencia DML es tratada como una transaccin.
Agrega

Prof. Orlando Seplveda

DML

Cuando Ud. ejecuta una o varias sentencias DML los cambios efectuados quedan en estado temporal. Si, por ejemplo, Ud. insert, modific o borr datos, dichos cambios no sern visibles para usuarios que tengan privilegios para ver su esquema, hasta que Ud. confirme los cambios. Dicha confirmacin significa hacer permanentes los cambios temporales. Se confirman los cambios con la sentencia COMMIT; se deshacen con la sentencia ROLLBACK.
Prof. Orlando Seplveda

DML: Sentencia INSERT

La sentencia INSERT permite introducir nuevas filas en una tabla de la base de datos.

La sintaxis bsica es:


insert into TABLA [ (COLUMN [, COLUMN...] ) ]
Values ( lista de valores );

Los nombres de los campos detrs del nombre de tabla son opcionales y si no se ponen se supondr todos los campos de la tabla en su orden original. Si se ponen, se podrn indicar cualquier nmero de columnas en cualquier orden. Esta sintaxis permite ingresar una sola fila cada vez. Los valores correspondientes a columnas de caracteres y de fecha debe encerrarlos entre comillas simples.
Prof. Orlando Seplveda

DML: Sentencia INSERT (ejemplos)


Suponga la relacin: departamento( id_dep, nom_dep, id_gerente, id_zona)
INSERT INTO departamento(id_dep, nom_dep, Id_gerente, id_zona)

VALUES (70, Relaciones Pblicas', 100, 40);


INSERT INTO departamento

VALUES (80, Remuneraciones', 200, 50);

Prof. Orlando Seplveda

Insercin de Filas con Valores Nulos

Mtodo implcito: Omita la columna de la lista de columnas. INSERT INTO departamento(id_dep, nom_dep,) VALUES (70, Relaciones Pblicas);

Mtodo explcito: Especifique la palabra clave NULL en la clusula VALUES. INSERT INTO departamento(id_dep, nom_dep) VALUES (70, Relaciones Pblicas', NULL, NULL);
Prof. Orlando Seplveda

Uso de parmetros

Utilice la sustitucin & en una sentencia SQL para solicitar valores. & convierte a la columna en una variable pendiente de asignacin para el valor de la columna.

INSERT INTO departamento (id_dep, nom_dep, id_gerente) VALUES (&id_dep, '&nom_dep', &id_gerente)

Prof. Orlando Seplveda

INSERT masivo

Escriba la sentencia INSERT con una subconsulta. No utilice la clusula VALUES. Haga coincidir el nmero de columnas de la clusula INSERT con el de la subconsulta.

INSERT INTO respaldo(id_dep, nom_dep, id_gerente, id_zona)


SELECT id_dep, nom_dep, id_gerente, id_zona FROM departamento WHERE id_zona = 200;
Prof. Orlando Seplveda

Ejemplos INSERT

Insertar una nueva propiedad

Prof. Orlando Seplveda

Ejemplos INSERT

Insertar un nuevo empleado con los campos sexo, fecha nacimiento y sueldo base nulos.

Fallar, porque el campo sexo est indicado en la lista de campos.

Prof. Orlando Seplveda

Ejemplos INSERT

Debe especificarse null para el campo sexo que est en la lista de campos. Fecha de nacimiento y sueldo base no estn en la lista de campos, por lo que no es necesario especificar su valor.

Prof. Orlando Seplveda

Ejemplos INSERT MASIVO con subconsulta

Cree la tabla HISTPROPIEDADES a partir de la tabla PROPIEDADES con una falacia para que se cree vaca.

Prof. Orlando Seplveda

Ejemplos INSERT MASIVO con subconsulta

En la tabla creada, insertar todas las propiedades que correspondan a departamentos.

Prof. Orlando Seplveda

Ejemplo INSERT MASIVO multitabla

Primero crearemos cuatro tablas a partir de la tabla propiedad.

Prof. Orlando Seplveda

Ejemplo INSERT MASIVO multitabla

Prof. Orlando Seplveda

Sentencia UPDATE

Permite cambiar los valores de los registros en una tabla. Se puede actualizar ms de una fila cada vez si es necesario. Sintaxis
UPDATE tabla SET campo = valor, campo = valor, ... {WHERE condicin};

Prof. Orlando Seplveda

Sentencia Update

Si incluye la clusula WHERE, se modifican las filas que establece la condicin.


UPDATE DEPARTAMENTO SET NUMEMP = 'EM001' WHERE NUMPROPIEDAD = 2;

Se modifican todas las filas de la tabla si omite la clusula WHERE.


UPDATE DEPARTAMENTOS SET NUMEMP = 'EM001';
Prof. Orlando Seplveda

Update con subconsulta

Modifique la categora de la funcionaria Julia Lavado por la de la funcionaria Susana Banderas y el nmero de oficina por el de Rosa Bravo.

Prof. Orlando Seplveda

DML: Sentencia DELETE

Puede eliminar las filas de una tabla utilizando la sentencia DELETE. Sintaxis

DELETE [FROM] table [WHERE condition];

Prof. Orlando Seplveda

Supresin de Filas de una Tabla

Se suprimen filas especficas si se incluye la clusula WHERE.


DELETE FROM departamento WHERE id_dep = 100;

Se suprimen todas las filas de la tabla si omite la clusula WHERE


DELETE FROM departamento;

Prof. Orlando Seplveda

Ejemplos de DELETE

Cree la tabla HISTEMP con todos los registros de la tabla EMPLEADO.

Prof. Orlando Seplveda

Ejemplos de DELETE

Borre los registros de empleados de la zona Sur en la tabla HISTEMP.

Borre todos los registros de empleados de sexo femenino

Prof. Orlando Seplveda

Ejemplos de DELETE masivo

Con una subconsulta, borre todas las visitas realizadas a departamentos.

Prof. Orlando Seplveda

DML: Transacciones de bases de datos


Comienzan cuando se ejecuta la primera sentencia SQL DML. Terminan con uno de los siguientes eventos:

Se emite una sentencia COMMIT o ROLLBACK. Se ejecuta una sentencia DDL o DCL (validacin automtica). El sistema falla.

Prof. Orlando Seplveda

Realizacin de Rollback de los Cambios a un Marcador

Cree un marcador en una transaccin actual utilizando la sentencia SAVEPOINT. Realice rollback a dicho marcador utilizando la sentencia ROLLBACK TO SAVEPOINT. UPDATE... SAVEPOINT update_done; Punto de grabacin creado. INSERT... ROLLBACK TO update_done; Rollback terminado.
Prof. Orlando Seplveda

Estado de los Datos Antes de COMMIT o ROLLBACK

Se puede recuperar el estado anterior de los datos. El usuario actual puede revisar los resultados de las operaciones DML utilizando la sentencia SELECT. Otros usuarios no pueden ver los resultados de las sentencias DML del usuario actual. Las filas afectadas se bloquean; otros usuarios no pueden cambiar los datos de las filas afectadas.
Prof. Orlando Seplveda

DML: Estado de los datos despus de Commit

Los cambios de datos se hacen permanentes en la base de datos. El estado anterior de los datos se pierde permanentemente. Todos los usuarios pueden ver los resultados. Los bloqueos de las filas afectadas se liberan; estas filas estn disponibles para que otros usuarios las manipulen. Todos los puntos de grabacin se borran.
Prof. Orlando Seplveda

DML: Estado de los datos despus de ROLLBACK

Deseche todos los cambios pendientes utilizando la sentencia ROLLBACK: Los cambios de datos se deshacen. Se restaura el estado anterior de los datos. Se liberan los bloqueos de las filas afectadas

Prof. Orlando Seplveda

S-ar putea să vă placă și