0% encontró este documento útil (0 votos)
39 vistas57 páginas

Tema Vi.1 SQL DML Dr9nqrk

Este documento describe el lenguaje de manipulación de datos SQL y las secuencias en Oracle. Explica los comandos INSERT, UPDATE, DELETE y SELECT para agregar, modificar, eliminar y seleccionar datos de una base de datos. También describe cómo crear y utilizar secuencias para generar números únicos y garantizar que los valores de las llaves primarias no se repitan. Finalmente, explica el control de transacciones en Oracle y conceptos como atomicidad, consistencia, aislamiento y durabilidad.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
39 vistas57 páginas

Tema Vi.1 SQL DML Dr9nqrk

Este documento describe el lenguaje de manipulación de datos SQL y las secuencias en Oracle. Explica los comandos INSERT, UPDATE, DELETE y SELECT para agregar, modificar, eliminar y seleccionar datos de una base de datos. También describe cómo crear y utilizar secuencias para generar números únicos y garantizar que los valores de las llaves primarias no se repitan. Finalmente, explica el control de transacciones en Oracle y conceptos como atomicidad, consistencia, aislamiento y durabilidad.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 57

LENGUAJE DE MANIPULACIÓN DE

DATOS

Ing. Lucila Patricia


Arellano Mendoza
2022
 Nos permite acceder, agregar, modificar o
eliminar los datos de un esquema de base de
datos. Las comandos utilizados son: insertar
(INSERT), actualizar (UPDATE), borrar (DELETE)
y seleccionar los datos de la base de datos
(SELECT) .
Se emplea para agregar datos a una tabla

INSERT INTO <nombreTabla> [(campo1


[,campo2, …])]
VALUES (valor1, valor2,…);

O bien

INSERT INTO <nombreTabla>


VALUES (valor1, valor2,…);
También se puede realizar un INSERT
combinado con un SELECT

INSERT INTO <nombreTabla> [(campo1


[,campo2, …])]
SELECT <columna1 [, columna2,…]>
FROM <nombreTabla>
Se emplea para modificar los datos existentes
en una tabla, su sintaxis es la siguiente:

UPDATE <nombre tabla> SET


{ <columna> = <expresión> [, ...]
| {(<lista de columnas>) } = (<lista de
expresiones>) }
[WHERE <condición>]

NOTA: Si no se pone condición, se modifican


todos los datos de la tabla.
Permite eliminar datos de una tabla. Su sintaxis
es la siguiente:

DELETE [FROM] <nombre tabla> [WHERE


<condición>]

NOTA: Si no se pone condición, se borran todos


los datos de la tabla.
Permite indicar los datos (columnas o
expresiones) que queremos obtener.

SELECT [ALL | DISTINCT | UNIQUE ]


[<tabla|aliasTabla>.] <columna1> [AS
<nombreColumna>]
[, [<tabla|aliasTabla>.]< columna2> [AS
<nombreColumna>]…., |*]
FROM [<nombreBasedeDatos>.] Tabla
[<aliasTabla>]
[WHERE <condición>]
Son objetos que generan una serie de
números únicos y se utilizan frecuentemente
para las llaves primarias de las tablas
garantizando que sus valores no se repitan.
Sintáxis

CREATE SEQUENCE <nombreSecuencia>


{START WITH | INCREMENT BY ]} valorEntero
|{MAXVALUE valorEntero}
|{MINVALUE valorEntero}
| {CYCLE | NOCYCLE}
;
Por default
NOCYCLE
MINVALUE = 1;
MAXVALUE = 999999999999999999999999999
 Las secuencias son independientes de las
tablas, se utilizan generalmente para una
tabla específica, por lo tanto, es conveniente
darle un nombre que referencie a la misma.
Creamos una secuencia llamada secCodigoLibros,
que comience en 1, sus valores estén entre 1 y
99999 , se incrementen en 1 y no se reinicie.

CREATE SEQUENCE secCodigoLibros


START WITH 1 INCREMENT BY 1
MAXVALUE 99999
MINVALUE 1;
CREATE SEQUENCE secNumeroSocio
INCREMENT BY 5
MAXVALUE 10000
CYCLE;
Ejemplo:

CREATE SEQUENCE SecEmpleado


START WITH 100
INCREMENT BY 1;
Para recuperar los valores de una secuencia
empleamos las pseudocolumnas:

 NEXTVAL que proporciona el siguiente valor

<nombreSecuencia>.NEXTVAL

 CURRVAL que indica el último valor de la


secuencia.

<nombreSecuencia>.CURRVAL
La primera vez que se referencia NEXTVAL
retorna el valor de inicio de la secuencia; las
siguientes veces, incrementa la secuencia y nos
retorna el nuevo valor.
Para modificar una secuencia se utiliza ALTER

ALTER SEQUENCE secEmpleado


START WITH 1
INCREMENT BY 5;

Para borrarla

DROP SEQUENCE secEmpleado;


Abra un archivo spool y realice lo que se pide.
Desde línea de comandos
sql> spool c:\temp\ejemploSec.sql
Cree las siguientes relaciones:

ESPECIALIDAD= {claveEsp, descripEspe}


PUESTOE= {clavePsto, descripPsto, salario, fechaUltAct}

Considere que fechaUltAct toma por default la fecha del


sistema.
En la tabla especialidad en los campos claveEsp
y descripEspe insertar los datos:

claveEsp descripEspe
1 Ingeniería
2 Arquitectura
3 Contador
Vamos a crear una secuencia llamada
secClaveEsp

CREATE SEQUENCE secClaveEsp


START WITH 1 INCREMENT BY 1
Una forma de hacer la inserción sería:

INSERT INTO especialidad (claveEsp, descripEspe)


VALUES(secClaveEsp.NEXTVAL,’Ingenieria’);

O bien:

INSERT INTO especialidad


VALUES(secClaveEsp.NEXTVAL,’Arquitectura’);
Se puede alterar el orden en que los datos se
introducen

INSERT INTO especialidad( descripEspe,claveEsp)


VALUES(’Contador’, secClaveEsp.NEXTVAL);

Muestre los datos

SELECT *
FROM especialidad;
Primero verifique que el atributo salario acepte
valores nulos

SQL>DESCRIBE puestoE;

Si no acepta nulos modifíquelo


INSERT INTO puestoE(clavePsto, descripPsto,
salario, fechaUltAct)
VALUES(1, 'Programador', ' ', '18/06/21');

O bien

INSERT INTO puestoE(clavePsto, descripPsto,


salario, fechaUltAct)
VALUES(2,’Lider de Proyecto’, NULL,’12/04/21’);
PUESTOE= {clavePsto, descripPsto, salario,
fechaUltAct}

INSERT INTO puestoE (clavePsto, descripPsto,


salario)
VALUES (3,’Arquitecto de Software’, 17550.00);
SELECT * FROM especialidad;

SELECT * FROM puestoE;


Cambiar en la tabla PUESTOE el valor de la
columna salario a 22500 donde la clavePsto
sea igual a 2.

UPDATE puestoE SET salario= 22500


WHERE clavePsto=2;
SELECT *
FROM puestoE
WHERE clavePsto=2;
DELETE
Borrar de la tabla PUESTOE la tupla que
contiene el valor 1 en la columna clavePsto.

DELETE FROM puestoE


WHERE clavePsto=1;

Para ver los cambios

SELECT *
FROM puestoE;
Ahora borrar de la tabla ESPECIALIDAD la
especialidad Contador

DELETE FROM especialidad


WHERE descripEspe='Contador';

Revisamos los cambios.

SELECT *
FROM especialidad;

Cierre su archivo spool


Control de Transacciones
El servidor de Oracle garantiza la consistencia
de los datos con base en transacciones.

Una transacción se define como un conjunto de


operaciones sobre la base de datos.

Las transacciones proporcionan mayor


flexibilidad y control cuando los datos cambian
y ello asegura la consistencia de los datos en el
caso de un fallo en el proceso del usuario o del
sistema.
Conjunto de características necesarias para que
una serie de instrucciones puedan ser
consideradas como una transacción.

 Atomicidad
 Consistencia
 Aislamiento
 Durabilidad
 Atomicidad. Se ejecutan todas sus operaciones o
ninguna.

 Consistencia. La base de datos debe pasar de un estado


consistente a otro estado consistente (se cumplen todas
las restricciones de integridad).

 Aislamiento. Una transacción no debe hacer visibles sus


cambios a otras transacciones hasta que sea confirmada

 Durabilidad. Cuando una transacción es confirmada sus


cambios deben ser grabados en la base de datos y no
deben perderse debido a fallos de otras transacciones o
del sistema.
Una transacción comienza cuando se encuentra la
primera sentencia DML y termina cuando ocurre
alguno de los siguientes eventos:

 Se emite una sentencia de control de


transacciones (COMMIT o ROLLBACK)

 Se emite una sentencia DDL, como CREATE

 Se emite una sentencia DCL

 El usuario sale de SQL*Plus

 Se bloquea el sistema
 COMMIT

Este comando da por concluida la transacción


actual y hace definitivos los cambios
realizados.

Sólo después de que se ejecute COMMIT


tendremos acceso a los datos modificados.
 ROLLBACK

Este comando da por concluida la transacción


actual y deshace los cambios que se pudiesen
haber producido en la misma.

Se utiliza especialmente cuando no se puede


concluir una transacción porque se han
levantado excepciones.
 SAVEPOINT

Es una marca que divide una transacción en


secciones más pequeñas.

Se utiliza junto con ROLLBACK permitiendo deshacer


cambios hasta los SAVEPOINT.

El número de SAVEPOINT esta limitado a 5 por


sesión pero lo podemos modificar con la siguiente
sentencia:

 SAVEPOINT <número>;
El comando AUTOCOMMIT puede ser
habilitado o deshabilitado.

Si se habilita, cada sentencia DML individual


es cometida e inmediatamente es ejecutada.

No se pueden deshacer estos cambios.

Si se deshabilita la sentencia, COMMIT debe


ser usada explícitamente.
ROLLBACK implícito

Este comando se ejecuta cuando :

 Un programa almacenado (procedimiento o


función) falla y no se controla la excepción que
produjo el fallo. Si en el programa tenemos un
COMMIT estos cambios no serán deshechos.

 Terminación anormal de SQL*Plus

 Fallo del sistema


ROLLBACK TO

Deshace el trabajo realizado después del punto


indicado. Pero no se confirma el trabajo hecho
hasta el SAVEPOINT.

La transacción no finaliza hasta que se ejecuta


un comando de control de transacciones o hasta
que finaliza la sesión.
 Asegurar la consistencia de datos

 Ver previamente los cambios de los datos


antes de hacerlos permanentes

 Agrupar operaciones lógicamente


relacionadas
Antes de usar las sentencias COMMIT o ROLLBACK

 El estado previo de los datos se puede recuperar.

 El usuario actual puede revisar los resultados de


las operaciones DML.

 Otros usuarios no pueden ver los resultados de las


operaciones DML hechas por el usuario actual.

 Las filas afectadas son bloqueadas; otros usuarios


no pueden cambiar los datos de las filas afectadas.
 Los cambios de datos son escritos en la base de
datos

 El estado previo de los datos se pierde


permanentemente

 Todos los usuarios pueden ver los resultados de


la transacción

 Los bloqueos en las filas afectadas son liberados;


las filas están ahora disponibles para que otros
usuarios realicen nuevos cambios a los datos

 Todos los SAVEPOINT son borrados


 El servidor de Oracle implementa SAVEPOINT
implícitos

 Si una simple sentencia DML falla durante su


ejecución, sólo a esta sentencia se le realiza un
ROLLBACK

 Todo los otros cambios no son desechos

 El usuario puede terminar sus transacciones


explícitamente ejecutando COMMIT o ROLLBACK
 La transacción entera es automáticamente
deshecha.

 Regresa las tablas de su estado actual al estado


del último COMMIT.

Salida normal de sesión. Desde SQL*Plus, es


escribiendo el comando EXIT en la línea de
comandos.

Salida anormal es cerrar la ventana


Cree un archivo spool y realice lo que se pide.

SQL>spool c:\temp\ejemploTransac.sql

1. Cree la tabla TRABAJO con los siguientes tipos


de datos

CREATE TABLE trabajo(


idTrab CHAR(4) PRIMARY KEY,
titulo VARCHAR2(35),
minSal NUMBER(9,2),
maxSal NUMBER(9,2)
);
2. Agregue los siguientes datos

idTrab Titulo minSal maxSal


PRES Presidente 20000 40000
VP Vice Presidente 15000 30000
AST Asistente 3000 6000
MGT Administrador 8200 16000
Financiero
3. Confirme los datos y muéstrelos

COMMIT;
SELECT * FROM trabajo;

4. Iniciamos una transacción

SET TRANSACTION NAME 'transaccion_1';


5. Modifique el atributo IDTRAB con clave PRES y en
el campo de título cambie a el valor Gerente y
muestre la actualización realizada

UPDATE trabajo
SET titulo='Gerente'
WHERE idTrab='PRES';

SELECT * FROM trabajo;

6. Cree una marca (SAVEPOINT) con el nombre de


UPDATE_1

SAVEPOINT update_1;
7. Ahora inserte un nuevo valor en la tabla
TRABAJO y muestre los datos

INSERT INTO trabajo


VALUES('ABD', 'Administrador de Bases de Datos',
20000, 50000);

SELECT * FROM trabajo;


8. Elimine el registro de título ‘Asistente’

DELETE FROM trabajo


WHERE idTrab='AST';

9. Cree una marca con el nombre DELETE_1

SAVEPOINT delete_1;
10. Introduzca los siguientes datos
idTrab Titulo minSal maxSal
CPUB Contador Publico 4200 9000
REP Representante de 6000 12000
Ventas

11. Cree una marca con el nombre INSERT_1 y


muestre los datos.

SAVEPOINT insert_1;

SELECT * FROM trabajo;


12. Modifique el salario mínimo del Contador
Público en 6000 y muestre el cambio.

UPDATE trabajo SET minSal=6000


WHERE titulo='Contador Publico';

SELECT * FROM trabajo;


13. Realice un ROLLBACK al punto INSERT_1 y
muestre los datos

ROLLBACK TO insert_1;

SELECT * FROM trabajo;

14. Explique qué fue lo que sucedió


15. Realice un ROLLBACK al punto DELETE_1,
muestre los datos y explique lo que sucedió

ROLLBACK TO delete_1;

SELECT * FROM trabajo;

16. Realice un ROLLBACK y observe el


resultado, ¿qué fue lo que paso? Explique
ROLLBACK;

Cierre su archivo spool

También podría gustarte