Académique Documents
Professionnel Documents
Culture Documents
Generalidades
Objetivos
Duracin
4 horas acadmicas
Contenido
Parte I
Parte II
Parte III
INSERT
UPDATE
DELETE
SELECT
INSERT
UPDATE
DELETE
SELECT
Almacn de datos
SELECT
Qu es Oracle Databases?
Grid Computing
Enterprise Edition
Standard Edition
Standard Edition One
Express Edition
Informacin adicional:
http://docs.oracle.com/cd/E11882_01/license.112/e10594/editions.htm#DBLIC109
Oracle Database
Server
Instancia
System Global Area (SGA)
Database Writer (DBWn)
Shared Pool
Library Cache
Checkpoint (CKPT)
Dictionary Cache
Large Pool
Java Pool
Base de datos
Archiver (ARCn)
Data Files
Control Files
Redo Log
SQL
GRANT, REVOKE
Qu es PL/SQL?
Integracin de SQL
Procesamiento procedimental
Funcionalidades suplementarias
Mejora del rendimiento
Integracin de los productos Oracle
NUMBER
CHAR
NCHAR
VARCHAR2
NVARCHAR2
DATE
TIMESTAMP
BINARY_FLOAT
BINARY_DOUBLE
ROWID
CLOB
NCLOB
BFILE
BLOB
Instalacin de Oracle
Tablas
Restricciones
Secuencias
Procedimientos almacenados
Funciones
Desencadenadores
Sentencias bsicas
Consultamos la tabla
SELECT * FROM Cliente;
Tabla dual
SELECT 47*3.46 FROM dual;
Asignamos privilegios:
GRANT create session TO empresa;
GRANT create table TO empresa;
GRANT create sequence TO empresa;
GRANT create procedure TO empresa;
GRANT create trigger TO empresa;
GRANT create view TO empresa;
Quitamos privilegios:
REVOKE create view FROM empresa;
Asignamos privilegios:
GRANT create session TO empresa;
GRANT create table TO empresa;
GRANT create sequence TO empresa;
GRANT create procedure TO empresa;
GRANT create trigger TO empresa;
Modificamos password:
ALTER USER empresa IDENTIFIED BY 123456;
Tablas
Tablas relacionales
Tablas temporales
Tablas con organizacin de ndice
Tablas de objetos
Tablas externas
Tablas en clster
Tablas particionadas
Restricciones
Descripcin
NOT NULL
UNIQUE
Especificado para una columna o combinacin de columnas cuyos valores deben ser
nicos para todas las filas de la tabla
PRIMARY KEY
FOREIGN KEY
CHECK
Creacin de tablas
Creamos la tabla
CREATE TABLE Departamento
(
numero_Dep NUMBER (2) NOT NULL ,
nombre_Dep CHAR (25) NOT NULL ,
fechaIniGer_Dep DATE ,
numeroEmp_Dep NUMBER (3) DEFAULT 0 NOT NULL ,
nss_Emp CHAR (9)
);
Modificando restricciones
Modificando tablas
LugarDepartamento
Empleado
Dependiente
Trabaja
EstadoEmpleado
Secuencias
Creacin de secuencias
Creamos la secuencia:
CREATE SEQUENCE numero_Pro
START WITH 1
INCREMENT BY 1;
Utilizamos la secuencia:
INSERT INTO
Departamento(numero_Dep,nombre_Dep,numeroEmp_Dep,nss_Emp,FechaIniGer_Dep)
VALUES (1,'Investigacin',4,null,null);
Eliminamos la secuencia
DROP SEQUENCE numero_Pro ;
Fin de transaccin
COMMIT
ROLLBACK
Procedimientos almacenados
Qu es un procedimiento almacenado?
EXECUTE pa_eliminarDependiente('123456789',3);
Consultando procedimientos
Listando procedimientos:
SELECT * FROM USER_PROCEDURES WHERE object_name like 'PA_%';
Eliminando el procedimiento:
DROP PROCEDURE pa_eliminarDependiente;
Ejercicio 1
Probando el procedimiento
Consultar el proyecto 12
SELECT * FROM Trabaja WHERE numero_Pro=12;
Ejecutamos el procedimiento:
EXEC pa_desasignarProyecto('425984153',12);
SELECT * FROM Trabaja WHERE numero_Pro=12;
Ejecutamos el procedimiento:
EXEC pa_desasignarProyecto('014685006',11);
SELECT * FROM Trabaja WHERE numero_Pro=11
Ejercicio 2
Probando el procedimiento
Verificamos:
SELECT * FROM Trabaja WHERE nss_Emp='090000002';
Ejercicio 3
Probando el procedimiento
Verificamos:
SELECT * FROM departamento;
Verificamos:
SELECT * FROM departamento;
SELECT * FROM Empleado WHERE nss_emp='090000002';
Ejercicios adicionales
Funciones almacenadas
Funciones: ejemplo 1
Implementar una funcin que devuelva el nmero de
empleados de acuerdo a un estado especfico
Consultando funciones
Listando funciones:
SELECT * FROM USER_PROCEDURES WHERE object_name like 'FDU_%';
Funciones: ejemplo 2
Ejercicios
Disparadores
Qu es un disparador?
Tipos de disparadores
Creacin de un disparador
Sintaxis:
CREATE [OR REPLACE] TRIGGER nombre_disparador
{BEFORE / AFTER / INSTEAD OF}
{INSERT / UPDATE [OF col,] / DELETE}
ON nombre_table [FOR EACH ROW]
[WHEN (condicion)]
Bloque PL/SQL;
OLD y NEW
INSERT
Permite conocer cual
es la fila insertada
UPDATE
DELETE
Permite conocer qu
fila se va a eliminar
Disparadores: ejemplo 1
Probar disparador:
DELETE FROM Departamento WHERE numero_Dep=12;
Consultando disparadores
Listando disparadores:
SELECT * FROM USER_PROCEDURES WHERE object_name like 'TR_%';
Disparadores: ejemplo 2
Probando disparador
Verificamos datos
Actualizamos salarios:
UPDATE Empleado SET salario_Emp=salario_Emp+50 WHERE nss_Emp='788229980';
UPDATE Empleado SET salario_Emp=salario_Emp+50 WHERE nss_Emp='701781110';
Actualizamos departamento:
UPDATE Empleado SET numero_Dep=10 WHERE nss_Emp='701781110';
Confirmamos actualizacin:
SELECT nss_Emp,salario_Emp,numero_Dep FROM Empleado WHERE nss_Emp IN ('788229980','701781110');
Disparadores: ejemplo 3
Probando disparador
Verificamos datos
SELECT numero_Pro,horassem_Tra FROM Trabaja WHERE nss_Emp='090000007';
Confirmamos actualizacin:
SELECT numero_Pro,horassem_Tra FROM Trabaja WHERE nss_Emp='090000007';
Deshabilitar disparadores
Ejemplos:
ALTER TRIGGER tr_actualizaSalario DISABLE;
ALTER TRIGGER tr_actualizaSalario ENABLE;
ALTER TABLE departamento DISABLE ALL TRIGGERS;
ALTER TABLE departamento ENABLE ALL TRIGGERS;
Ejercicios
Paquetes
Qu es un paquete?
Ventajas:
Modularidad
Simplificacin de desarrollo
Ocultar datos
Adicin de funcionalidades
Mejora de rendimiento
Ejemplo de cabecera
CREATE OR REPLACE PACKAGE paq_Proyecto
AS
PROCEDURE pa_insertarProyecto(
nombre proyecto.nombre_Pro%TYPE,
lugar proyecto.lugar_Pro%TYPE,
numeroDep proyecto.numero_Dep%TYPE);
PROCEDURE pa_eliminarProyecto(numero proyecto.numero_Pro%TYPE);
PROCEDURE pa_modificarProyecto(
numero proyecto.numero_Pro%TYPE,
nombre proyecto.nombre_Pro%TYPE,
lugar proyecto.lugar_Pro%TYPE,
estado proyecto.estado_Pro%TYPE,
numeroDep proyecto.numero_Dep%TYPE);
END paq_Proyecto;
Ejercicios
PROCEDURE pa_listarEmpleadosXEstado(
v_estado empleado.estado_Emp%TYPE,
v_cursor OUT vCursor);
END paq_Empleado;
Probar procedimiento
variable c1 refcursor;
execute paq_empleado.pa_listarEmpleadosXEstado('A',:c1);
print c1;
variable c1 refcursor;
execute paq_empleado.pa_listarEmpleadosXEstado('C',:c1);
print c1;
variable c1 refcursor;
execute paq_empleado.pa_listarEmpleadosXEstado('V',:c1);
print c1;
variable c1 refcursor;
execute paq_empleado.pa_listarEmpleadosXEstado('M',:c1);
print c1;
Ejercicios
Considerar:
Tablas
Columnas
Restricciones
Secuencias