Sei sulla pagina 1di 29

MDD2201 MODELAMIENTO DE BASE DE DATO

Usando Sentencias DML


para Manipular Datos de las
Tablas
Escuela de Informtica y Telecomunicaciones

Unidad de Aprendizaje N3
Implementacin del Modelo en una Base de
Datos
Aprendizaje Esperado :
CONSTRUYE SENTENCIAS EN LENGUAJE SQL PARA
MANIPULAR INFORMACIN EN LAS TABLAS DE LA BASE DE
DATOS.
DELETE

INSERT

UPDATE

Objetivos de la Clase

Cmo construir sentencias DML para Insertar Filas a las Tablas.


Cmo crear y utilizar objeto Secuencia para Insertar Datos a las columnas
de las Tablas.
Cmo construir sentencias DML para Actualizar Filas de las Tablas.
Cmo construir sentencias DML para Eliminar Filas de las Tablas.
Uso de sentencia TRUNCATE para eliminar filas de las Tablas.
Uso de sentencia SELECT en sentencias DML.

Lenguaje de Manipulacin de Datos (DML)

Se ejecuta una sentencia DML cuando:

Se agregan filas a una tabla.

Se modifican las filas de una tabla.

Se eliminan filas de una tabla


Transacciones: conjunto de sentencias DML que se ejecutan en la Base de
Datos.
Estas sentencias retornan el nmero de filas afectadas.

Agregando una Nueva Fila a una Tabla


Nueva
Fila

DEPARTMENTS

Nueva fila agregada en la


tabla DEPARTMENTS
. .
. .

. .
. .

Agregando una Nueva Fila a una Tabla

INSERT agrega filas a una tabla.


Sintaxis:
INSERT INTO tabla [(columna [, columna...])]
VALUES (valor [, valor...]);

Con esta sintaxis se inserta una fila a la vez.

Agregando una Nueva Fila a una Tabla

Ejemplo:
INSERT INTO departments(department_id, department_name,
manager_id, location_id)
VALUES (70, 'Public Relations', 100, 1700);

INSERT INTO departments


VALUES (70, 'Public Relations', 100, 1700);

Agregando una Nueva Fila


con Valores Nulos y Especiales

Ejemplo: Insercin valores Nulos

Implcitamente
INSERT INTO departments
(department_id, department_name
VALUES (30, 'Purchasing');

Explcitamente
)

INSERT INTO departments


VALUES (100, 'Finance', NULL, NULL);

Ejemplo: Insercin valores Especiales


INSERT INTO employees (employee_id, first_name, last_name, email,
phone_number, hire_date, job_id,
salary, commission_pct, manager_id,
department_id)
VALUES
(113, 'Louis', 'Popp', 'LPOPP',
'515.124.4567', SYSDATE, 'AC_ACCOUNT',
6900, NULL, 205, 100);

Agregando una Nueva Fila


con Valor obtenido de una Subquery

Ejemplo: Insercin valores Nulos


NSERT INTO employees (employee_id, first_name, last_name, email,
phone_number, hire_date, job_id, salary,
commission_pct, manager_id, department_id)
VALUES
(999, 'Juan', 'Soto', 'JSOTO',
'515.124.4567', SYSDATE, 'AC_ACCOUNT', 6900,
NULL, 205, (SELECT department_id
FROM employees
WHERE employee_id =100));

Objeto Secuencia

Genera automticamente nmeros diferentes.


Se utiliza para columnas cuyo valor es un nmero correlativo.
Puede ser usada para diferentes tablas

Creacin de Objeto Secuencia

Sintaxis:
CREATE SEQUENCE secuencia
[INCREMENT BY n]
[START WITH n]
[MAXVALUE n]
[MINVALUE n]
[{CYCLE | NOCYCLE}]
[{CACHE | NOCACHE}]

Creacin de Objeto Secuencia

Ejemplo:
CREATE SEQUENCE dept_deptid_seq
INCREMENT BY 10
START WITH 120
MAXVALUE 9999
NOCACHE
NOCYCLE;

Uso de Objeto Secuencia

NEXTVAL: retorna el siguiente valor disponible de la secuencia


CURRVAL: retorna el valor actual de la secuencia.

Ejemplo: para saber el valor de la secuencia


SELECT dept_deptid_seq.NEXTVAL
FROM dual;

Ejemplo: para insertar una fila


INSERT INTO departments(department_id, department_name, location_id)
VALUES (dept_deptid_seq.NEXTVAL, 'Support', 2500);

Ejemplo: para eliminar una secuencia


DROP SEQUENCE dept_deptid_seq;

Actualizando Datos en una Tabla


EMPLOYEES

Actualizar filas en la tabla EMPLOYEES

110
110

Actualizando Datos en una Tabla

Utilice Update para actualizar datos en las tablas de la Base de Datos


Sintaxis:
UPDATE tabla
SET
columna = valor [, columna = valor, ...]
[WHERE condicin];

Se puede actualizar ms de una fila y/o una columna (si es necesario). Si


se omite la clusula WHERE se actualizan todas las filas.

Actualizando Filas de una Tabla

Ejemplo: Actualizacin de filas que cumplan con una condicin


UPDATE employees
SET department_id = 110
WHERE employee_id IN (103, 104);

Ejemplo: Actualizacin de todas las filas de la tabla


UPDATE employees
SET department_id = 110,
salary = salary * 2;

Actualizando Filas de una Tabla

Ejemplo: Actualizacin de filas que cumplan con una condicin


UPDATE employees
SET salary = salary *1.25
WHERE salary < 5000;

Ejemplo: Actualizacin de todas las filas de la tabla


UPDATE employees
SET hire_date = SYSDATE 2,
salary = salary (salary * 0.085);

Eliminando Filas de una Tabla

..... ..

...

..

Elimina una fila desde tabla


DEPARTMENTS:

..... ..
..... ..

...
...

..
..

Eliminando Filas de una Tabla

Utilice DELETE para eliminar filas desde las tablas de la Base de Datos
Sintaxis:
DELETE [FROM] tabla
[WHERE condicin];

Si se desean eliminar algunas filas de la tabla se debe incluir la clusula


WHERE

Eliminando Filas de una Tabla

Ejemplo: eliminando todas las filas de la tabla.


DELETE employees;

Ejemplo: eliminando filas especficas de la tabla.


DELETE FROM departments
WHERE department_name = 'Finance';

DELETE FROM departments


WHERE department_id IN(30, 40);

DELETE employees
WHERE salary between 2000 AND 5000;

Usando Sentencia TRUNCATE

Es la forma ms eficiente para eliminar el contenido de toda la tabla.


Sintaxis:
TRUNCATE TABLE nombre_tabla;

La sentencia TRUNCATE (DDL) en ms rpida que la sentencia DELETE


(DML).
TRUNCATE tiene un COMMIT implcito.

Ejemplo
TRUNCATE TABLE employees;

Usando Sentencia TRUNCATE

Es la forma ms eficiente para eliminar el contenido de toda la tabla.


Sintaxis:
TRUNCATE TABLE nombre_tabla;

La sentencia TRUNCATE (DDL) en ms rpida que la sentencia DELETE


(DML).
TRUNCATE tiene un COMMIT implcito.

Ejemplo: eliminando filas especficas de la tabla.


DELETE employees
WHERE salary between 2000 AND 5000;

Usando Sentencia SELECT


para Insertar Filas

Para insertar filas a partir de otras tablas se debe utilizar una subconsulta
(Subquery).
Sintaxis:
INSERT INTO tabla [ columna (, columna ) ]
SUBQUERY;

El nmero de columnas y sus tipos de datos de clusula INSERT deben


coincidir con el nmero de valores y tipos de datos que retorna la
subquery.

Usando Sentencia SELECT


para Insertar Filas

Ejemplos:
INSERT INTO empleado_resp(codigo, apellido, salario, porc_comision)
SELECT employee_id, last_name, salary, commission_pct
FROM employees
WHERE job_id LIKE '%REP%';

INSERT INTO copia_emp


SELECT *
FROM employees;

Usando Sentencia SELECT


para Actualizar Filas

Ejemplo:
UPDATE employees
SET
job_id = (SELECT job_id
FROM employees
WHERE employee_id = 205),
salary = (SELECT salary
FROM employees
WHERE employee_id = 205)
WHERE employee_id = 114;

Transacciones de Base de Datos

SENTENCIAS
DML

SENTENCIAS
DDL

SENTENCIAS
DCL

Sentencias COMMIT Y ROLLBACK

COMMIT finaliza la transaccin y los cambios se


hacen permanentes en la Base de Datos.

ROLLBACK finaliza la transaccin y los cambios no


se efectan en la Base de Datos.

SAVEPOINT

Un Savepoint en una marca que permite efectuar en Rollback parcial en la


Transaccin.
Ejemplo:
DELETE FROM employees
WHERE department_id IS NULL;
SAVEPOINT A;
UPDATE employees
SET salary = salary * 1.50;
SAVEPOINT B;
DELETE FROM employees
WHERE manager_id IS NULL;
ROLLBACK TO B;
COMMIT;

Resumen de la Clase

Se explic cmo construir sentencias DML para Insertar Filas a las Tablas.
Se explic cmo crear y utilizar objeto Secuencia para Insertar Datos a las
columnas de las Tablas.
Se explic cmo construir sentencias DML para Actualizar Filas de las
Tablas.
Se explic cmo construir sentencias DML para Eliminar Filas de las
Tablas.
Se explic el uso de la sentencia TRUNCATE para eliminar filas de las
Tablas.
Se explic cmo utilizar sentencia SELECT en sentencias DML.

Potrebbero piacerti anche