Professional Documents
Culture Documents
Robert Espinoza
DML - Select
Agenda
Modificación de datos.
Inserción de datos.
Actualización de datos.
Eliminación de registros.
Operaciones combinadas
Resumen.
Inserción de datos
Sentencia INSERT
Permite insertar un nuevo registro o conjunto de
Secuencias
Una secuencia (sequence) se emplea para generar
valores enteros secuenciales únicos y asignárselos a
campos numéricos;
Se utilizan generalmente para las claves primarias de las
tablas garantizando que sus valores no se repitan.
Una secuencia es una tabla con un campo numérico
en el cual se almacena un valor y cada vez que se
consulta, se incrementa tal valor para la próxima
consulta.
Inserción usando secuencias
Ejemplo:
Ejemplo:
INSERT ALL
WHEN order_total < 10000 THEN
INTO ordenes_pequeñas
WHEN order_total > 10000 AND order_total < 20000 THEN
INTO ordenes_medianas
WHEN order_total > 20000 THEN
INTO ordenes_grandes
SELECT order_id, customer_id, order_total, sales_rep_id
FROM orders;
INSERT ALL sobre varias tablas
Otra forma
INSERT ALL
WHEN order_total < 10000 THEN
INTO ordenes_pequeñas
WHEN order_total > 10000 AND order_total < 20000 THEN
INTO ordenes_medianas
ELSE
INTO ordenes_grandes
SELECT order_id, customer_id, order_total, sales_rep_id
FROM orders;
INSERT ALL sobre varias tablas
Ordenes_pequeñas Ordenes_medianas
Ordenes_grandes
Actualización de datos
Sentencia UPDATE
Permite modificar un registro o conjunto de registros
existentes en una Tabla.
UPDATE nombre-tabla
SET campo1 = valor1 [, campo2 = valor2 ...]
[WHERE condición]
Actualización de una fila
UPDATE employees
SET salary = salary * 1.2
WHERE job_id = 'AD_PRES' ;
Actualización de varias filas
UPDATE ventas
SET monto = monto + 100
WHERE producto_id = 111 ;
Actualización basado en SELECT
SELECT min_salary
FROM jobs
WHERE job_id = 'AD_PRES';
Actualización basado en SELECT
UPDATE employees
SET salary = ( SELECT min_salary
FROM jobs
WHERE job_id = 'AD_PRES' )
WHERE job_id = 'AD_VP' ;
Actualización con dos tablas
EMPLOYEES
JOBS
Actualización con dos tablas
UPDATE
(
SELECT e.salary as old_salary,
j.min_salary * 1.2 as new_salary
FROM employees e INNER JOIN jobs j
ON e.job_id = j.job_id
)
SET old_salary = new_salary ;
Actualización con dos tablas
EMPLOYEES
Eliminación de registros
Sentencia DELETE
Permite eliminar de una tabla un registro o conjunto de
registros existentes.
Si no se pone condición de selección, borra todas las
filas de la tabla.
DELETE
FROM employee_temp
WHERE job_id = 'AD_PRES';
Eliminación de varias filas
DELETE
FROM employee_temp
WHERE job_id = 'HR_REP';
Eliminación con dos tablas
DELETE
FROM employee_temp
WHERE salary <
( SELECT min_salary
FROM Jobs
WHERE job_title = 'Programmer' ) ;
Truncado de una tabla
Sentencia TRUNCATE
Borrar todas las filas de una tabla o cluster.
Sentencia MERGE
Permite la selección de filas de una o más fuentes
Sentencia MERGE
CREATE TABLE bonuses
( employee_id NUMBER,
bonus NUMBER DEFAULT 100);
SELECT *
FROM bonuses
ORDER BY employee_id;
Operaciones combinadas
Aplicando MERGE
MERGE INTO bonuses b
USING (SELECT employee_id, salary, department_id
FROM employees
WHERE department_id = 80) s
ON (b.employee_id = s.employee_id)
WHEN MATCHED THEN
UPDATE SET b.bonus = b.bonus + s.salary*.01
DELETE WHERE (s.salary > 8000)
WHEN NOT MATCHED THEN
INSERT (b.employee_id, b.bonus)
VALUES (s.employee_id, s.salary*.01)
WHERE (s.salary <= 8000);
Operaciones combinadas