Está en la página 1de 41

Manipulación de Datos

DML (Data Manipulating Language)


Base de Datos
YANINA VILLEGAS
RECORDEMOS
CAPACIDAD

• Construir sentencias usando el lenguaje de


manipulación de datos.
LOGRO DE SESIÓN

• Identifica las sentencias del lenguaje de


manipulación de datos.
CONTENIDOS A TRATAR

• Definir y aplicar sub-consultas de una o varias


filas.
• Aplicar operadores de conjunto en las
consultas.
MUY BIEN.. INICIAMOS!
Instrucciones de Manipulación de
Datos

7
Instrucciones SQL para
Manipulación de Datos
• Para manipular datos, se usan las siguientes
instrucciones:
– INSERT
– UPDATE
– DELETE
– MERGE
– TRUNCATE (DDL)
¿Y SELECT que hace?

8
Instrucciones DML

Tipo Descripción
INSERT Permite agregar filas (registros) a una tabla.
UPDATE Actualiza datos de una o varias filas en una tabla.
DELETE Elimina registros de una tabla.
Puede realizar acciones de INSERT, UPDATE,
MERGE
DELETE o varias de ellas combinadas.
Permite eliminar todos los registros de una tabla.
TRUNCATE Es una instrucción DDL (Data Definition Language)
por lo no que no puede revertirse.

9
Errores posibles al ejecutar
instrucciones DML
• Errores de sintaxis.
• Referencias a objetos o columnas que no
existen.
• Permisos de acceso.
• Violaciones de restricción (constraint).
• Problemas de espacio.

10
Transacciones

11
Transacciones de Control

• Una transacción consiste en una o más


instrucciones DML seguidas de un ROLLBACK o
COMMIT.
• Es posible definir un punto de control
(SAVEPOINT) para tener control más preciso
de una transacción

12
Prueba ACID

• Toda base de datos debe pasar la prueba ACID


(Atomicity, Consistency, Isolation y Durability).
– Atomicidad: La transacción debe completar todas sus
instrucciones o ninguna.
– Consistencia: Los resultados de una transacción
deben ser consistentes con el estado de la base de
datos cuando inició la transacción.
– Aislamiento: Una transacción no completada debe ser
invisible para el resto de usuarios.
– Durabilidad: Una vez se complete la transacción, debe
ser imposible perderla.
13
Inicio y Fin de una
Transacción
• Una transacción inicia al ejecutarse una
instrucción INSERT, UPDATE o DELETE.
• Termina explícitamente cuando se ejecuta una
instrucción COMMIT (aceptar la transacción) o
ROLLBACK (deshacer los cambios).
• Las transacciones no se pueden anidar en el
SQL estándar (sí en el PL/SQL, propio de
Oracle).
14
Instrucciones para
transacciones
Instrucción Descripción
Termina la transacción guardando los
COMMIT;
cambios.
ROLLBACK [TO Termina la transacción deshaciendo los
SAVEPONT punto]; cambios o volviendo a un punto seguro.
SAVEPOINT punto; Define un punto seguro.

15
Fin Implícito de una
transacción
Acción Resultado
Invocar una instrucción DDL (Data
Definition Language, CREATE-ALTER-
COMMIT
DROP) o DCL (Data Control Language
GRANT-REVOKE).
Finalizar la herramienta de usuario
Según la herramienta
(SQL*Plus o SQL Developer.
Cuando la sesión del cliente “muere”. ROLLBACK
ROLLBACK cuando se
Cuando el sistema se interrumpe.
restaura la BD.

16
Fin Implícito en
Herramientas Oracle
• Ambas herramientas terminan por defecto
con un ROLLBACK (la transacción debe
terminarse explícitamente).
• SQL*Plus: Se puede cambiar ejecutando:
– SET AUTOCOMMIT ON
– SET AUTOCOMMIT OFF (predeterminado)
• SQL Developer: En el menú Tools >
Preferences, expandir Database, luego
Advanced y activar la cassila Autocommit.
17
Insertar Filas (INSERT)

18
INSERT
• Sintaxis:
INSERT INTO tabla [(columna [,columna…])]
VALUES (valor [,valor…]);
• Se debe tener en cuenta las restricciones de las
columnas.
DESC HR.regions

Nombre Nulo Tipo


----------- -------- ------------
REGION_ID NOT NULL NUMBER
REGION_NAME VARCHAR2(25)
19
Ejemplos de INSERT
INSERT INTO HR.regions
VALUES (10, 'Great Britain');

INSERT INTO HR.regions (region_name, region_id)


VALUES ('Australasia', 11);

INSERT INTO HR.regions (region_id)


VALUES (12);

INSERT INTO HR.regions


VALUES (13, NULL);
20
Ejemplos Inserción
• Analizar la siguiente inserción:

Verificar peticion de valor al momento de


insertar:

21
Funciones en INSERT
INSERT INTO emp_copy (employee_id, last_name,
hire_date, email, job_id)
VALUES (1000,'WATSON','03-Nov-13',
'jwatson@hr.com', 'SA_REP');

INSERT INTO emp_copy (employee_id, last_name,


hire_date, email, job_id)
VALUES (1000, upper('Watson'),
to_date('03-Nov-13','dd-mon-yy'),
lower('JWatson@hr.com'), upper('sa_rep'));
22
INSERT con sub-consultas

• Sintaxis:
INSERT INTO table [ (columna [, columna…] ) ]
sub-consulta;
• Ejemplo:
INSERT INTO regions_copy
SELECT * FROM HR.regions;
• Se asume que la tabla regions_copy existe
para el usuario actual con la misma estructura
que HR.regions.
23
Actualizar Filas (UPDATE)

24
UPDATE

• Sintaxis:
UPDATE table
SET columna=valor [,columna=valor…]
[WHERE condición];

25
Ejemplos de UPDATE

UPDATE HR.employees
SET salary=10000
WHERE employee_id=206;

UPDATE HR.employees
SET salary=salary*1.1
WHERE last_name='Cambrault';

26
UPDATE con sub-consultas

UPDATE HR.employees
SET salary=salary*1.1
WHERE department_id IN
(SELECT department_id FROM HR.departments
WHERE department_name LIKE '%IT%');

27
UPDATE con sub-consultas

UPDATE HR.employees
SET department_id=80, commission_pct=
(SELECT min(commission_pct)
FROM HR.employees
WHERE department_id=80)
WHERE employee_id=206;

28
• Verificar ACTUALIZACIÓN:

Verificar Borrado de Registros:

29
Eliminar Filas (DELETE, TRUNCATE)

30
DELETE

• Sintaxis:
DELETE FROM tabla
[WHERE condición];

31
Ejemplos de DELETE

DELETE FROM HR.employees


WHERE employee_id=206;

DELETE FROM HR.employees


WHERE last_name LIKE 'S%';

DELETE FROM HR.employees


WHERE department_id IS NULL;
32
TRUNCATE

• Elimina todos los registros de una tabla.


• Es una instrucción DDL, no trabaja con
transacciones.
• Sintaxis:
TRUNCATE TABLE tabla;

33
MERGE

• Puede realizar acciones INSERT, UPDATE y


DELETE en una misma instrucción.
• Al igual que INSERT, UPDATE y DELETE, es una
instrucción DDL

34
35
Ejemplo de MERGE
MERGE INTO HR.employees e
USING HR.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,
email, job_id)
VALUES (n.employee_id, n.last_name,
n.salary, n.email, n.job_id);

36
RESUMEN

37
38
Referencias

• Ramklass, Roopesh . Cap. 10 Manipulating Data. En


SQL Fundamentals I Exam Guide (Exam IZ0-051) (pp.
403-449). EEUU: McGraw-Hill.

• Techonthenet-https://www.techonthenet.com/sql/

39
40
41

También podría gustarte