Anda di halaman 1dari 103

JOSE JUAN GARCIA BORQUEZ

11 DE FEBRERO DEL 2013

NDICE
INTRODUCCION
INFORMACION INSTITUCIONAL
PERFIL DESCRIPTIVO
ACTIVIDADES EN CLASE
MATERIAL DE APOYO
TAREAS REALIZADAS
CONCLUCION
INSTRUMENTOS DE EVALUACION
FIN

INTRODUCCION
El alumno conocer y utilizar el lenguaje SQL,
para organizar, administrar y consultar datos
almacenados en una computadora.
El alumno ser capaz de planear y administrar
una base de datos.
El alumno ser capaz de resolver problemas que
tengan que ver con el uso de PL/SQL y MySQL
El alumno tendr herramientas para una mejor
organizacin y control de sus recursos.

atrs

INFORMACION INSTITUCIONAL
Misin

La misin de UNIDEP es formar profesionales de xito que cuenten con las actitudes, habilidades y
conocimientos que demanda el sector productivo de la regin.
Visin
La Universidad del Desarrollo Profesional es una institucin de educacin superior de calidad, que
ofrece programas presenciales y semipresenciales de bachillerato, profesional asociado, licenciatura,
posgrado, diplomados y cursos en Mxico y en el extranjero.
Se distingue por facilitar a sus egresados la incorporacin al mercado de trabajo, apoyada en una
estrecha vinculacin con el sector productivo y en planes de estudio pertinentes y dinmicos.
Es reconocida por su modelo educativo profesionalizante, por la flexibilidad de su oferta acadmica
impartida en ciclos continuos y por horarios y cuotas accesibles, acordes a la disponibilidad de tiempo y
recursos econmicos del alumno.
Cuenta con profesores de amplia experiencia profesional y educativa. Sus instalaciones dentro de la
ciudad permiten el fcil acceso.
Cuenta con un modelo de administracin sistematizado, participativo, operado por personal que es
recompensado por su desempeo efectivo que le permite maximizar las aportaciones de sus socios y
mantener finanzas sanas.

atrs

UNIVERSIDAD DEL DESARROLLO PROFESIONAL

Perfil Descriptivo de Clase


Materia:

BASE DE DATOS III

Ciclo:

201325

Maestro:

M.C. JOS BENITO FRANCO URREA

Horario:

13:00-15:00 pm

Conocer y utilizar el lenguaje SQL, para organizar, administrar y consultar


datos almacenados en una computadora.
Ser capaz de planear y administrar una base de datos.
Ser capaz de resolver problemas que tengan que ver con el uso de PL/SQL y
MySQL
Tendr herramientas para una mejor organizacin y control de sus recursos.

Objetivo del
Curso:

TIPO

Bibliografa:

LIBRO

TITULO

AUTOR

EDITORIAL/REVISTA

AO

Abraham Silberschatz
Bell Laboratories
Henry F. Korth
Bell Laboratories
S. Sudarshan
Instituto Indio de
Tecnologa, Bombay.

McGRAW-HILL

2002

DISEO Y

Gary W. Hansen

Prentice- Hall

2003

ADMINISTRACIN DE
BASE DE DATOS.

James V. Hansen

FUNDAMENTOS DE
BASE DE DATOS

LIBRO

LIBRO

SISTEMA DE BASE
DE DATOS.

RAMEZ ELMASRI/NAVATH ADDISON


E

2001

criterios para CALIFICACIN ORDINARIA (PONDERACIN)


la Evaluacin

Actividades
semanales
Portafolio
reaprendizaje
Trabajos
independientes

30%

Examen primer parcial.

15%

10%

Examen segundo parcial.

25%

20%

TOTAL

100%

Reglas

1. El alumno es responsable de enterarse de su nmero de faltas y retardos.


2. El alumno debe contar con un mnimo del 80% de asistencia para tener derecho a su calificacin final.
3. El alumno que se sorprenda incurriendo en actos desleales en la elaboracin de exmenes, tareas o trabajos,
obtendr cero (0) de calificacin en el trabajo, tarea y/o examen

4. Es responsabilidad del estudiante hablar inmediatamente con el maestro cuando tenga problemas con el
material de clase, sus calificaciones, etc. De esta manera evitaremos problemas en el fin del ciclo.
5. Slo se justifican inasistencias si son autorizadas por la coordinacin acadmica bajo el procedimiento
correspondiente
6. Se tomara asistencia al iniciar la clase.
7. Prohibido utilizar telfonos celulares y/o aparatos electrnicos dentro del aula.
8. La clase es de 100 minutos efectivos.
9. La clase inicia a la hora en punto
10. No se permiten alimentos ni bebidas dentro del aula.
11. Deber presentar su Carnet de Pago, expedido por su coordinador administrativo, para la autorizacin de recepcin de trabajos finales
y la aplicacin de exmenes en la ltima semana del mdulo.
Calendarizacin

Sesin

Tema

Fecha

14/01/2013

15/01/2013

16/01/2013

17/01/2013

Presentacin del programa, Introduccin al tema, Integracin de equipos,


Asignacin de proyecto final. Revisin de herramientas disponibles en laboratorio
de cmputo, diagnstico de conocimientos del grupo.
1. Programacin pl/sql , declaracin de variables.
1.1 Estructura de un bloque PL/SQL.
1.2 Tipos de Bloques.
1.3 Uso de variables.
1.4 Manejo de variables PL/SQL.
1.5 Tipos de Variables.
1.6 Declaracin de Variables.
1.7 Asignacin. Inicializacin de Variables y palabras claves.
1.8 Referenciando variables que no son de PL/SQL.
1.9 Ejercicios Prcticos.
Avance del proyecto Final
2. Escribiendo comandos ejecutables
2.1 Lneas maestras para escribir un bloque PL/SQL.
2.2 Comentarios.
2.3 Funciones SQL en PL/SQL: Conversin de tipos, Mezclando bloques y
mbito de variables, Operadores en PL/SQL.
2.4 Ejercicios Prcticos.
Avance del proyecto
Revisin de los ejercicios de Prcticas y dudas de los temas.
Exposicin del equipo #1: RESTRICCIONES DE INTEGRIDAD EN LAS BASES DE
DATOS.
Entrega del reporte de lectura del tema investigado en internet.

3.

21/01/2013

22/01/2013

Interactuando con Oracle server


3.1 Comando SQL en PL/SQL.
3.2 Recuperacin de datos en PL/SQL.
3.3 Insertando datos en PL/SQL. Borrando datos en PL/SQL.
3.4 Actualizando datos en PL/SQL.
3.5 COMMIT Y ROLLBACK.
3.6 Cursores.
3.7 Ejercicios Prcticos.
Avance del proyecto final.
4. Estructuras de control.
4.1 Comando IF.
4.2 Comando IF-THEN-ELSE.

4.3 Comando IF-THEN-ELSIF.


4.4 Condiciones Booleanas.
4.5 Bucles: LOOP, WHILE, FOR.
4.6 Ejercicios prcticos.
Revisin de los ejercicios de Prcticas y dudas de los temas.
Exposicin del equipo #2: seguridad de Base de Datos.
7

23/01/2013
Entrega del reporte de lectura del tema investigado en internet.

24/01/2013

28/01/2013

10

29/01/2013

11

30/01/2013

Revisin de avance del proyecto final y la informacin del portafolio.


5. Cursores.
5.1 Tipos de Cursores.
5.2 Declaracin.
5.3 Operaciones con cursores.
5.4 Variables aplicables.
5.5 Ejercicios Prcticos.
Avance del proyecto final
6. Cursores explcitos avanzados.
6.1 Cursores con parmetros.
6.2 Clusula FOR UPDATE.
6.3 Clusula WHERE CURRENT OF.
6.4 Cursor con Subconsultas.
6.5 Ejercicios Prcticos.
Avances del proyecto final
Revisin de los ejercicios de Prcticas y dudas de los temas.
Exposicin del equipo #3: Base de Datos distribuida y Arquitectura cliente servidor.

31/01/2013

Entrega del reporte de lectura del tema investigado en internet.


EXAMEN PRIMER PARCIAL

12

7.

13

04/02/2013

Sql avanzado
7.1 OPERADORES DE CONJUNTOS
7.1.1 Tipos.
7.1.2 INTERSET.
7.1.3 UNIN/UNIN ALL.
7.1.4 MINUS.
7.1.5 Ejercicios Prcticos.
Avance proyecto final

14

05/02/2013

1.1 Subconsultas correlacionadas.


1.1.1 Concepto.
1.1.2 Usando Subconsultas Correladas.
1.1.3 EXISTS. NOT EXISTS.
1.1.4 Ejercicios Prcticos.
Avance del proyecto final

8.

Bases de datos con MySQL.


8.1 Introduccin a MySQL.
8.2 Formas de uso de MySQL.
1.1 Administracin de bases de datos en MySQL.
1.2 Optimizacin de bases de datos en MySQL.

15

06/02/2013

16

07/02/2013

17

11/02/2013

Entregar reporte de lectura del tema de clasificacin de los sistemas de gestin


de base de datos.

18

12/02/2013

Revisin de proyecto Final y portafolio.


Entrega y revisin prctica del proyecto final y portafolio.

19

13/02/2013

EXAMEN SEGUNDO PARCIAL

20

14/02/2013

ENTREGA DE CALIFICACIONES ORDINARIAS


EXAMEN EXTRAORDINARIOS

ACTIVIDADES EN CLASE
Ejercicios 17 de enero
Ejercicios 22 de enero
Ejercicios 23 de enero
Ejercicios 24 de enero
Ejercicios 28 de enero
Ejercicios 29 de enero
Ejercicios 31 de enero
Ejercicios 7 de febrero

atrs

Ejercicios 17 de enero del 2013

EJERCICIOS 22 DE ENERO

EJERCICIOS 23 DE ENERO
1

EJERCICIOS 23 DE ENERO
3

EJERCICIOS 24 DE ENERO
1

EJERCICIOS 24 DE ENERO
3

EJERCICIOS 28 DE ENERO
1

EJERCICIOS 28 DE ENERO
3

EJERCICIOS 28 DE ENERO
5

EJERCICIOS 28 DE ENERO
7

EJERCICIOS 29 DE ENERO
1

EJERCICIOS 31 DE ENERO
1

7 de febrero del 2013

Jos Juan Garcia Borquez


ID: 25122003

Clausula WHERE CURRENT OF


Esta clausula se utiliza en la instruccin SELECT cuando se acompaa de la clausula FOR
UPDATE en cursor de Actualizacin el cual hace que solo se modifiquen los registros actuales
del cursor.
ACCEPT eldepa PROMPT 'DIGITE EL NUMERO DE DEPARTAMENTO'
DECLARE
v_ndepa VARCHAR2(4) := TO_CHAR('&eldepa');
CURSOR cpuestos(v_departamento IN VARCHAR2) IS
SELECT N_DPTO, NOMBRE, AP_PATERNO, PUESTO, TO_CHAR(SUELDO)
FROM EMPLEADOS WHERE N_DPTO = v_departamento FOR UPDATE;
v_ndpto VARCHAR2(5);
v_nombre varchar2(20);
v_paterno VARCHAR2(20);
v_puesto varchar2(40);
v_sueldo varchar2(15);
v_aumento number(7,2);
BEGIN
OPEN cpuestos(v_ndepa);
LOOP
fetch cpuestos into v_ndpto, v_nombre, v_paterno, v_puesto, v_sueldo;
exit when cpuestos%NOTFOUND;
update empleados set sueldo = v_sueldo+1000 where CURRENT of cpuestos;
DBMS_OUTPUT.put_line(v_ndpto || ' ' || to_char(v_sueldo) || ' ' ||
v_nombre || ' ' || v_paterno || ' ' || v_puesto);
end loop;
close cpuestos;
end;

Jos Juan Garcia Borquez


ID: 25122003

Cursor con subconsulta


Cursor que ejecuta una subconsulta seleccionando al empleado con sueldo mximo sueldo en
la nomina.
declare
cursor cpuestos is
select N_DPTO, NOMBRE, AP_PATERNO, PUESTO, TO_CHAR(SUELDO)
FROM EMPLEADOS WHERE empleados.sueldo = (select max (empleados.sueldo) from
empleados);
v_ndpto varchar2(5);
v_nombre varchar2(20);
v_paterno varchar2(20);
v_puesto varchar2(40);
v_sueldo varchar2(15);
BEGIN
OPEN cpuestos;
loop
fetch cpuestos into v_ndpto, v_nombre, v_paterno, v_puesto, v_sueldo;
exit when cpuestos%NOTFOUND;
DBMS_OUTPUT.put_line(v_ndpto || ' ' || to_char(v_sueldo) || ' ' ||
v_nombre || ' ' || v_paterno || ' ' || v_puesto);
end loop;
close cpuestos;
end;
UNION
Devuelve la suma de dos o ms conjuntos de resultados. El conjunto obtenido como resultado
de unin tiene la misma estructura que los conjuntos originales.
SELECT NOMBRE, AP_PATERNO, AP_MATERNO FROM ALUMNOS UNION
SELECT NOMBRE, AP_PATERNO, AP_MATERNO FROM EMPLEADOS;

Jos Juan Garcia Borquez


ID: 25122003

INTERSECT
Le da los registros que se encuentran en ambas consultas al eliminar las filas que solo se
encuentran en una u otra consulta.
SELECT NOMBRE, AP_PATERNO, AP_MATERNO FROM ALUMNOS INTERSECT
SELECT NOMBRE, AP_PATERNO, AP_MATERNO FROM EMPLEADOS;
MINUS
Le da los registros que se encuentran en la primera consulta y no en la segunda consulta
mediante la eliminacin de los resultados de todas las filas que se encuentran solo en la
segunda consulta.
SELECT NOMBRE, AP_PATERNO, AP_MATERNO FROM ALUMNOS MINUS
SELECT NOMBRE, AP_PATERNO, AP_MATERNO FROM EMPLEADOS;

MATERIAL DE APOYO
MANUAL MODULO 1
MANUAL MODULO 2
MANUAL MODULO 3

atrs

1.

Programacin PL/SQL, declaracin de variables.

Objetivos:
Reconocer las bases del bloque PL/SQL y sus secciones.
Describir el significado de las variables en PL/SQL
Distinguir entre variables PL/SQL y no PL/SQL.
Declarar variables PL/SQL
Ejecutar un bloque PL/SQL
PL/SQL proviene de Procedural Language (lenguaje procedural)/ Structured Query
Language (Lenguaje de consulta estructurado). PL/SQL ofrece un conjunto de
comandos procedurales (sentencias IF, bucles, asignaciones), organizado dentro
de bloques (como se explica ms adelante), que complementan y amplan el
alcance de SQL.
SQL*PLUS: es una herramienta de programacin y consulta que permite a los
usuarios la manipulacin directa de la informacin de la base de datos usando el
lenguaje SQL.

Privilegios de Sistema y de Objetos


En Oracle existen dos tipos de privilegios de usuario.
4.1 System: Que permite al usuario hacer ciertas tareas sobre la BD, como por
ejemplo crear un Tablespace. Estos permisos son otorgados por el administrador
o por alguien que haya recibido el permiso para administrar ese tipo de privilegio.
En general los permisos de sistema, permiten ejecutar comandos del tipo DDL
(Data definition Language), como CREATE, ALTER y DROP.
Entre todos los privilegios de sistema que existen, hay dos que son
los importantes: SYSDBA y SYSOPER. Estos son dados a otros usuarios
que sern administradores de base de datos.

M.C. JOS BENITO FRANCO URREA

Para otorgar varios permisos a la vez, se hace de la siguiente manera:


SQL> GRANT CREATE USER, ALTER USER, DROP USER TO bfranco;
4.2 Object: Este tipo de permiso le permite al usuario realizar ciertas acciones
en objetos de la BD, como una Tabla, Vista, un Procedure o Funcin, etc. Si a un
usuario no se le dan estos permisos slo puede acceder a sus propios objetos
(vase USER_OBJECTS). Este tipo de permisos los da el owner o dueo del
objeto, el administrador o alguien que haya recibido este permiso explcitamente
(con Grant Option).

Create Tablespace
Sirve para crear un tablespace.
Un tablespace es una unidad lgica de almacenamiento dentro de una base de
datos oracle.
Es un puente entre el sistema de ficheros del sistema operativo y la base de datos.
Cada tablespace se compone de, al menos, un datafile y un datafile solo puede
pertenecer a un tablespace.
Cada tabla o indice de oracle pertenece a un tablespace, es decir cuando se crea
una tabla o indice se crea en un tablespace determinado.
Sintaxis:
CREATE [UNDO] TABLESPACE tablespace_name
DATAFILE Datafile_Options Storage_Options ;
Datafile_Options:
'filespec' [AUTOEXTEND OFF]
'filespec' [AUTOEXTEND ON [NEXT int K | M] [MAXSIZE int K | M]]
La opcin Autoextend Maxsize es por defecto UNLIMITED si no se especifica
valor.
Storage_Options:
DEFAULT [COMPRESS|NOCOMPRESS] STORAGE storage_clause
MINIMUM EXTENT int {K|M}
M.C. JOS BENITO FRANCO URREA

BLOCKSIZE int K
LOGGING | NOLOGGING
FORCE LOGGING
ONLINE | OFFLINE
PERMANENT | TEMPORARY
EXTENT MANAGEMENT {DICTIONARY |
LOCAL {AUTOALLOCATE | UNIFORM [SIZE int K | M]} }
SEGMENT SPACE MANAGEMENT {MANUAL | AUTO}
Explicacin de la sintaxis utilizada para los comandos:
Las palabras en maysculas son comandos de oracle.
Las palabras en minsculas son opiones modificables
Las partes enmarcadas con [] son opcionales
Las partes enmarcadas con {} son alternativas (una u otra).
El simbolo | indica OR
Ejercicio prctico:
Objetivo: con la finalidad de ir construyendo el proyecto final y el laboratorio para
realizar las practicas, crearemos un Tablespace:
1. Crear en el C: una carpeta con nombre: C:\bd
2. Entrar al RUN SQL LINE
3. Conectarse a la base de datos system:
SQL> connect system
Password: (en blanco, dar enter) si conoce la contrasea digtela.
4.

Nuestra

instruccin

CREATE TABLESPACE crear

el tablespace ts_corporativo con el datafile ts_corp.dbf de 64MB y


dejaremos que Oracle se encargue de gestionar automticamente los
extents de los objetos que se creer en el tablespace.
5. Mediante esta sentencia asignamos un usuario a un tablespace, este ser
su tablespace por defecto cuando creamos un usuario.
SQL>CREATE USER
TABLESPACE Users;

jfranco

IDENTIFIED

BY

admin

DEFAULT

M.C. JOS BENITO FRANCO URREA

6. Mediante esta sentencia, en caso de tener creado ya el usuario le


asignamos un tablespace.
SQL > ALTER USER jfranco DEFAULT TABLESPACE ts_corporativo;
7. Otorgar el privilegio CREATE SESSION al usuario jfranco
SQL > GRANT CREATE SESSION TO jfranco;
8. Asignar un role predefinido al usuario.
SQL > GRANT DBA TO jfranco;
CONNECT

CREATE SESSION, CREATE TABLE, CREATE


VIEW, CREATE SYNONYM, CREATE SEQUENCE,
CREATE DATABASE LINK, CREATE CLUSTER,
ALTER SESSION

RESOURCE

CREATE TABLE, CREATE PROCEDURE,


CREATE SEQUENCE, CREATE TRIGGER,
CREATE TYPE, CREATE CLUSTER, CREATE
INDEXTYPE, CREATE OPERATOR

SCHEDULER_
ADMIN

CREATE ANY JOB, CREATE JOB, EXECUTE


ANY CLASS, EXECUTE ANY PROGRAM,
MANAGE SCHEDULER

DBA

Tiene la mayora de los privilegios, no asignar a los que no son


administradores.

SELECT_CATALOG_ROLE

No tiene privilegios de sistema, pero tiene cerca de 1600 privilegios de


objeto.

9. Ejecutar la herramienta SQL Developer

Oracle SQL Developer es una herramienta grfica gratis que mejora la


productividad y simplifica las tareas de desarrollo para base de datos Oracle.
Usando Oracle SQL Developer, podrs navegar, editar y crear objetos de base de
datos Oracle, ejecutar sentencias SQL, editar y depurar PL SQL, construccin de
PL SQL de pruebas unitarias, ejecutar informes y colocar archivos bajo control de
versiones.

M.C. JOS BENITO FRANCO URREA

NOTA: debemos tener instalada la versin de Java SDK JDK 1.6.11 o


superior.
CONECTARNOS CON LA BASE DE DATOS TS_CORP.DBF
Seleccionar del Menu Archivo - Nuevo

M.C. JOS BENITO FRANCO URREA

Nos presenta la siguiente pantalla:

Seleccionamos Conexin a Base de Datos y seleccionamos el botn


Aceptar.
Nos muestra la siguiente pantalla:

M.C. JOS BENITO FRANCO URREA

Vamos a llenar los campos con la siguiente informacin:

Presionamos el Botn Probar

Si el resultado fue Estado: Correcto la conexin ser exitosa.

Si es correcto el estado, presionar el Botn Conectar

M.C. JOS BENITO FRANCO URREA

Se presentar la conexin al lado izquierdo de la Base de datos.

La siguiente actividad es importar datos de un archivo en Excel de nombre


BDAlumnos.xls
Seleccionar Tablas, presionar el botn derecho del mouse y seleccionar
Importar Datos

M.C. JOS BENITO FRANCO URREA

Seleccionar y abrir
BDALUMNOS.XLSX

de

la

carpeta

Archivos

Excel

el

archivo

Aparece un asistente de importacin de Datos, Paso 1 de 5.

M.C. JOS BENITO FRANCO URREA

Paso 2 de 5: Nombre de la tabla ser ALUMNOS

Paso 3 de 5:

M.C. JOS BENITO FRANCO URREA

Paso 4 de 5

Paso 5 de 5:

M.C. JOS BENITO FRANCO URREA

Si seleccionamos la tabla se vera los siguientes datos:

Crear una nueva tabla de nombre CARRERAS


Campos de la Tabla
CVE_CARRERA
GTI
LAT
LA

DESCRIPCION
GESTION DE LAS TECNOLOGIAS DE LA INFORMACION
LICENCIADO EN ADMINISTRACION Y TURISMO
LICENCIADO EN ADMINISTRACION

M.C. JOS BENITO FRANCO URREA

Seleccionar Tablas y presionar el botn derecho del mouse, del men


seleccione Nueva Tabla.

Se puede agregar campos con esta pantalla bsica.

M.C. JOS BENITO FRANCO URREA

Tambin se puede utilizar en modo Avanzado:

M.C. JOS BENITO FRANCO URREA

1.1. Estructura de un bloque PL/SQL.


Construyendo bloques de programas PL/SQL
PL/SQL es un lenguaje de bloques estructurados. Un bloque PL/SQL est definido por las
palabras clave DECLARE, BEGIN, EXCEPTION, y END, las que separan el bloque en
tres secciones:

1. Declarativa (DECLARE): sentencias que declaran las variables, constantes y


otros elementos de cdigo, los que pueden ser utilizados dentro de ese bloque.
2. Ejecutables (BEGIN): las sentencias que se ejecutan cuando el bloque se corre.

M.C. JOS BENITO FRANCO URREA

3. El manejo de excepciones (EXCEPTION): una seccin especialmente


estructurada que puede utilizar para "capturar" o atrapar, cualquier excepcin que
se produce cuando se corre la seccin ejecutable.

ExcepcinVariables para control de errores.


BEGIN
Cdigo.
[EXCEPTION]
Control y tratamiento de errores.
Es el punto al que se transfiere el control del programa siempre que exista un
problema. Los indicadores de excepcin pueden ser definidos por el usuario o por
el sistema, como es por ejemplo la excepcin ZERO_DIVIDE.
Las excepciones se activan automticamente al ocurrir un error, existiendo la
definicin de la excepcin OTHERS que considera aquellos errores no definidos y
que siempre se ubica al final de todas las excepciones.
END [nombre del bloque];
Fin del Bloque.
Slo la seccin ejecutable es requerida. Usted puede no declarar nada en un bloque, y no
tiene que capturar las excepciones producidas en ese bloque.
Un bloque en s mismo es una instruccin ejecutable, por lo que los bloques se pueden
anidar dentro de otros bloques.

1.2. Tipos de Bloques.

1. Annimos.
Vamos a comenzar por el tipo de bloque ms sencillo que existe, ste tipo
de bloque no contiene seccin de encabezado por lo tanto no tiene un
nombre asignado, por eso se llama bloque annimo. Este tipo de bloque no
puede ser llamado por otro cdigo debido a que no tiene un handler
manejador por el cual se identifique al programa, bsicamente los bloques

M.C. JOS BENITO FRANCO URREA

annimos sirven de contenedores para ejecutar pequeos scripts o hacer


llamadas a otros bloques PL/SQL como procedures o funciones.

Nota: Al quedar los bloques annimos almacenados en el buffer, a no ser que se


guardasen en ficheros, se perderan al limpiar el buffer, cosa que no ocurre con los
procedimientos y funciones, que se almacenan en la propia base de datos.

2. Procedimientos o funciones.
Una vez que tenemos escrito un bloque de cdigo, podemos guardarlo en un
fichero .sql para su posterior uso, o bien guardarlo en base de datos para que
pueda ser ejecutado por cualquier aplicacin. El segundo caso se realiza mediante
procedimientos almacenados (Stored Procedure).
A la hora de guardar un bloque de cdigo hay que tener en cuenta ciertas normas:

La palabra reservada DECLARE desaparece.


Podremos crear procedimientos y funciones. Los procedimientos no podrn
retornar ningn valor sobre su nombre, mientras que las funciones deben
retornar un valor de un tipo de dato bsico.

Procedimientos:
Un procedimiento [almacenado] es un subprograma que ejecuta una accin
especfica y que no devuelve ningn valor por s mismo, como sucede con las
funciones. Un procedimiento tiene un nombre, un conjunto de parmetros
(opcional) y un bloque de cdigo. Para crear un procedimiento (stored procedure:
procedimiento almacenado) usaremos la siguiente sintaxis:

M.C. JOS BENITO FRANCO URREA

Cuando se crea un procedimiento, ste se compila en primer lugar y queda


almacenado en la base de datos de forma compilada. El cdigo compilado puede
ser posteriormente utilizado por cualquier bloque PL/SQL.
Para modificar un procedimiento creado debemos reemplazarlo por el nuevo
volviendo a compilarlo aadiendo las palabras clave OR REPLACE. Podemos
eliminar un procedimiento mediante la orden DROP PROCEDURE <nombre>
Funcin:
Las funciones son iguales que los procedimientos pero adems devuelven un
valor, por lo que la llamada a una funcin debe realizarse dentro de una expresin.
La orden RETURN dentro de una funcin devuelve el valor que la funcin debe
devolver, el cual se convierte al tipo especificado en la cabecera de la funcin.
Puede haber ms de una instruccin RETURN, pero solo se ejecutar la primera
que se encuentre dentro de la lgica del programa.
Para crear una funcin usaremos la siguiente sintaxis:

Restricciones en Funciones
No se permiten comandos INSERT, UPDATE o DELETE.
La funcin no puede llamar a otro subprograma que rompa una de las restricciones arriba
indicadas.

M.C. JOS BENITO FRANCO URREA

1.3. Uso de variables.


Las variables se pueden emplear para:

Almacenamiento temporal de datos.

Manipulacin de valores almacenados.

Reusabilidad.

Fcil Mantenimiento.

1.4. Manejo de variables PL/SQL.


PL/SQL permite declarar constantes y variables para ser utilizadas en cualquier expresin
dentro de un programa. La nica condicin exigida por PL/SQL es que cada variable (o
constante) debe estar declarada antes de ser utilizada en una expresin.
Reglas para nombres de variables:

Dos variables pueden tener el mismo nombre, si estn en bloques


diferentes.

El nombre de la variable (identificador) no debera ser el mismo que el de


una columna de una tabla utilizada en el bloque.

Por defecto, todas las variables se inicializan a NULL.

1.5. Tipos de Variables.

ESCALARES

BOOLEANAS

COMPUESTAS

LOB

DE ENLACE (BIND)

Variables Escalares
VARCHAR2 (longitud_mxima)
NUMBER [(precisin, escala)]
DATE
CHAR [(longitud_mxima)]

M.C. JOS BENITO FRANCO URREA

LONG
LONG RAW
BOOLEAN
BINARY_INTEGER
Variables BOOLEANAS

A una variable Boolean slo se le pueden asignar los valores: TRUE, FALSE o NULL.

Estas variables estn conectadas por los operadores lgicos AND, OR y NOT

Variables del Tipo de Datos Compuestos

Tipos:

REGISTROS PL/SQL

TABLAS PL/SQL

Contienen componentes internos

PL/SQL
Creacin de un Registro

Sintaxis:

Donde declaracin_campo significa:

PL/SQL
Ejemplo de Registro PL/SQL

Declarar un registro para almacenar el nmero de empleado, nombre, trabajo y sueldo de un


nuevo empleado:

Los componentes individuales del registro se referenciarn de forma cualificada; en este


ejemplo:

M.C. JOS BENITO FRANCO URREA

Variables LOB
Permiten almacenar bloques de datos no estructurados, como pantallas de texto,
imgenes grficas, vdeo clips, y sonido, de hasta 4 Gb. de tamao.
Character Large Object. Se utiliza para almacenar bloques grandes de datos de
CLOB
caracteres.
BLOB Binary Large Object. Se utiliza para almacenar objetos binarios grandes en la B.D.
Binary File. Se utiliza para almacenar objetos binarios grandes en archivos del sistema
BFILE
operativo, fuera de la B.D.
National Language Character Large Object. Se utiliza para almacenar en la B.D.
NCLOB
bloques grandes de datos NCHAR de un byte nico o multi-bytes de ancho fijo.
Variables de Enlace (Bind)
Son variables de SQL*Plus.
Las pueden referenciar bloques de PL/SQL mediante el uso del ampersand (&).
Ejemplo:

Atributo %TYPE
Permite declarar una variable basada en:
o

Otras variables previamente declaradas

La definicin de una columna de la base de datos

Preceder de %TYPE por:


o

La tabla y la columna de la base de datos

El nombre de la variable definida con anterioridad

Ejemplo:
v_ename emp.ename%TYPE;

M.C. JOS BENITO FRANCO URREA

TIPOS DE DATOS ALFANUMRICOS


Tipo de dato CHAR(n): Almacena cadenas de caracteres de longitud fija. Su rango
est entre 1 y 2.000 bytes de ocupacin.
Tipo de dato VARCHAR2(n): Almacena cadenas de caracteres de longitud
variable.
Tipo de dato VARCHAR(n): En Oracle8 es equivalente a VARCHAR2.
Tipo de dato NCHAR(n): Almacena un valor alfanumrico de longitud fija. Puede
almacenar caracteres ASCII, EBCDIC, UNICODE.
Tipo de dato NVARCHAR2(n): Almacena un valor alfanumrico de longitud
variable. Puede almacenar caracteres ASCII, EBCDIC,UNICODE
TIPOS DE DATOS NUMRICOS
Tipo de dato NUMBER(p, s): Almacena valores numricos en punto flotante que
pueden estar entre 1.0 x 10-130 y 9.9(38 nueves) 9 x 10125.
Tipo de dato FLOAT(N): Almacena un nmero en punto decimal sin restriccin de
dgitos decimales, donde n indica la precisin binaria mxima que puede moverse en
el rango 1 a 126.
TIPOS DE DATOS FECHA
Tipo de dato DATE: Almacena un valor de fecha y hora. Para un tipo de dato
DATE, Oracle almacena internamente los siguientes datos:
Siglo
Ao
Mes
Da
Hora
Minuto
Segundo

M.C. JOS BENITO FRANCO URREA

El formato por defecto de las fechas es: 'DD-MON-YYYY'


TIPO DE DATOS BINARIOS
Tipos de datos binarios: Permiten almacenar informacin en formato "crudo",
valores binarios tal y como se almacenan en el disco duro o como residen en
memoria.
Tipo de dato LONG: Almacena caracteres de longitud variable hasta 2 Gb. En
Oracle8 y siguientes versiones se deben usar los tipos de datos CLOB y NLOB para
almacenar grandes cantidades de datos alfanumricos.

OTROS TIPOS DE DATOS


Tipo de dato ROWID: Representa una direccin de la base de datos, ocupada por
una nica fila. Este tipo de dato sirve para guardar punteros a filas concretas.

1.6. Declaracin de Variables


La sintaxis para declarar variables es la siguiente:

donde:
tipo_dato: es el tipo de dato que va a poder almacenar la variable, este
puede ser cualquiera de los tipos soportandos por ORACLE, es
decir NUMBER , DATE , CHAR , VARCHAR,
VARCHAR2, BOOLEAN
... Adems para algunos tipos de datos (NUMBER y VARCHAR) podemos
especificar la longitud.
La clusula CONSTANT indica la definicin de una constante cuyo valor no
puede ser modificado. Se debe incluir la inicializacin de la constante en su
declaracin.
La clusula NOT NULL impide que a una variable se le asigne el valor nulo,
y por tanto debe inicializarse a un valor diferente de NULL.
Las variables que no son inicializadas toman el valor inicial NULL.
La inicializacin puede incluir cualquier expresin legal de PL/SQL, que
lgicamente debe corresponder con el tipo del identificador definido.
Los tipos escalares incluyen los definidos en SQL ms los tipos VARCHAR
y BOOLEAN. Este ltimo puede tomar los valores TRUE, FALSE y NULL, y

M.C. JOS BENITO FRANCO URREA

se suele utilizar para almacenar el resultado de alguna operacin


lgica. VARCHAR es un sinnimo de CHAR.
Tambin es posible definir el tipo de una variable o constante, dependiendo
del tipo de otro identificador, mediante la utilizacin de las
clusulas %TYPE y %ROWTYPE. Mediante la primera opcin se define
una variable o constante escalar, y con la segunda se define una variable
fila, donde identificador puede ser otra variable fila o una tabla.
Habitualmente se utiliza %TYPEpara definir la variable del mismo tipo que
tenga definido un campo en una tabla de la base de datos, mientras
que%ROWTYPE se utiliza para declarar varibales utilizando cursores.

1.7. Asignacin. Inicializacin de Variables y palabras


claves.

Set de Caracteres y Unidades Lxicas


Las instrucciones del lenguaje deben ser escritas utilizando un grupo de
caracteres vlidos. PL/SQL no es sensible a maysculas o minsculas. El grupo
de caracteres incluye los siguientes:

M.C. JOS BENITO FRANCO URREA

Letras maysculas y minsculas de la A a la Z

Nmeros del 0 al 9

Los smbolos ( ) + - * / < > = ! ~ ^ ; . @ % , # $ & _ | { } ? [ ]

Tabuladores, espacios y saltos de carro

Por ejemplo en la instruccin:


bono := salario * 0.10; -- clculo del bono
Se observan las siguientes unidades lxicas:

Los identificadores bono y salario

El smbolo compuesto :=

Los smbolos simples * ;

El literal numrico 0.10

El comentario clculo del bono

Delimitadores e Identificadores
Un delimitador es un smbolo simple o compuesto que tiene un significado
especial dentro de PL/SQL. Por ejemplo, es posible utilizar delimitadores para
representar operaciones aritmticas, por ejemplo:
Smbolo

Significado

operador de suma

indicador de atributo

delimitador de caracteres

selector de componente

operador de divisin

M.C. JOS BENITO FRANCO URREA

expresin o delimitador de lista

expresin o delimitador de lista

indicador de variable host

separador de tems

operador de multiplicacin

delimitador de un identificador entre comillas

operador relacional

<

operador relacional

>

operador relacional

indicador de acceso remoto

terminador de sentencias

negacin u operador de substraccin

Los delimitadores compuestos consisten de dos caracteres, como por ejemplo:


Smbolo

Significado

:=

operador de asignacin

=>

operador de asociacin

||

operador de concatenacin

**

operador de exponenciacin

<<

comienzo de un rtulo

M.C. JOS BENITO FRANCO URREA

>>

fin de un rtulo

/*

comienzo de un comentario de varias lneas

*/

fin de un comentario de varias lneas

..

operador de rango

<>

operador relacional

!=

operador relacional

^=

operador relacional

<=

operador relacional

>=

operador relacional

--

comentario en una lnea

Los identificadores incluyen constantes, variables, excepciones, cursores,


subprogramas y paquetes.
La longitud de un identificador no puede exceder los 30 caracteres. Se recomienda
que los nombres de los identificadores utilizados sean descriptivos.
Algunos identificadores especiales, llamados palabras reservadas, tienen un
especial significado sintctico en PL/SQL y no pueden ser redefinidos. Son
palabras reservadas, por ejemplo, BEGIN, END, ROLLBACK, etc.

Es posible asignar valores a las variables de dos formas:


La primera utiliza el operador :=. La variable se ubica al lado izquierdo y la
expresin al lado derecho del smbolo.
Por ejemplo:

M.C. JOS BENITO FRANCO URREA

impuesto:= precio * iva;


bono := Salario_actual * 0.10 ;
Monto:= TO_NUMBER(SUBSTR(750 dlares, 1, 3)) ;
Valido:= False ;

La segunda forma

de asignar valores a variables es obtener valores

directamente desde la base de datos, como en:


SELECT salario * 0.10 INTO bonus FROM emp WHERE empno = emp_id ;
Declaracin de Constantes
En la declaracin de una constante (muy similar a la de una variable), se debe
incorporar la palabra reservada constant e inmediatamente asignar el valor
deseado. En adelante, no se permitirn reasignaciones de valores para aquella
constante que ya ha sido definida.

Ejemplo: credit_limit CONSTANT real := 5000.00 ;

1.8.

Referenciando variables que no son de PL/SQL.

Almacenar el salario anual en una variable global de SQL*Plus.


:g_monthly_sal := v_sal / 12;
M.C. JOS BENITO FRANCO URREA

Referenciar variables no-PL/SQL como variables Host.


Preceder las referencias con dos puntos

(:)

1.9. Ejercicios Prcticos.


IMPORTAR LOS DATOS DEL ARHIVO DE TRABAJO DE
EXCEL BDCORPORATIVO.XLSX
HOJAS:
EMPLEADOS-DEPARTAMENTOS
EJEMPLO DE BLOQUE ANNIMO:
Declaracin de Variables y constantes con valor inicial:
SQL> SET SERVEROUTPUT ON;

Calcular un bono de 0.10 % del sueldo para el empleado nmero: 5232 de la


Tabla EMPLEADOS

M.C. JOS BENITO FRANCO URREA

Ejemplo de operaciones.

Ejemplo usando variables de sustitucin

M.C. JOS BENITO FRANCO URREA

2. Escribiendo comandos ejecutables


Objetivo:

Reconocer el significado de la seccin ejecutable


Escribir sentencias en la seccin ejecutable
Describir las reglas de bloques anidados
Ejecutar y comprobar un bloque PL/SQL

2.1. Lnea maestra para escribir un bloque


PL/SQL
Oracle permite acceder y manipular informacin de la base de datos definiendo
objetos procedurales (subprogramas) que se almacenan en la base de datos.
Estos objetos procedurales son unidades de programa PL/SQL:
Funciones y Procedimientos almacenados

1. Declarativa (DECLARE): sentencias que declaran las variables, constantes y


otros elementos de cdigo, los que pueden ser utilizados dentro de ese bloque.
2. Ejecutables (BEGIN): las sentencias que se ejecutan cuando el bloque se corre.
3. El manejo de excepciones (EXCEPTION): una seccin especialmente
estructurada que puede utilizar para "capturar" o atrapar, cualquier excepcin que
se produce cuando se corre la seccin ejecutable.

M.C. JOS BENITO FRANCO URREA

ExcepcinVariables para control de errores.


BEGIN
Cdigo.
[EXCEPTION]
Control y tratamiento de errores.
Es el punto al que se transfiere el control del programa siempre que exista un
problema. Los indicadores de excepcin pueden ser definidos por el usuario o por
el sistema, como es por ejemplo la excepcin ZERO_DIVIDE.
Las excepciones se activan automticamente al ocurrir un error, existiendo la
definicin de la excepcin OTHERS que considera aquellos errores no definidos y
que siempre se ubica al final de todas las excepciones.
END [nombre del bloque];
Fin del Bloque.
PROCEDIMIENTOS:
Un procedimiento es un subprograma que ejecuta una accin especfica y que no
devuelve ningn valor. Un procedimiento tiene un nombre, un conjunto de
parmetros (opcional) y un bloque de cdigo.
CREATE [OR REPLACE PROCEDURE [esquema].nombre-procedimiento
(nombre-parmetro {IN | OUT | IN OUT} tipo de dato, ..) {IS | AS}
Declaracin de variables;
Declaracin de constantes;
Declaracin de cursores;
BEGIN
Cuerpo del subprograma PL/SQL;
EXCEPTION
Bloque de excepciones PL/SQL;
END;

Descripcin de la sintaxis:
Nombre-parmetro: es el nombre que queramos dar al parmetro. Podemos utilizar
mltiples parmetros. En caso de no necesitarlos, podemos omitir los parntesis.
IN: especifica que el parmetro es de entrada y que por tanto dicho parmetro tiene que
tener un valor en el momento de llamar a la funcin o procedimiento. Si no se especifica
nada, los parmetros son por defecto de tipo entrada.

M.C. JOS BENITO FRANCO URREA

OUT: especifica que se trata de un parmetro de salida. Son parmetros cuyo valor es
devuelto despus de la ejecucin el procedimiento al bloque PL/SQL que lo llam. Las
funciones PLSQL no admiten parmetros de salida.
IN OUT: Son parmetros de entrada y salida a la vez.
Tipo-de-dato: Indica el tipo de dato PLSQL que corresponde al parmetro (NUMBER,
VARCHAR2, etc).

El uso de OR REPLACE permite sobreescribir un procedimiento existente. Si se


omite, y el procedimiento existe, se producir, un error. La sintaxis es muy
parecida a la de un bloque annimo, salvo porque se reemplaza la seccin
DECLARE por la secuencia PROCEDURE . IS en la especificacin del
procedimiento. Debemos especificar el tipo de datos de cada parmetro. Al
especificar el tipo de dato del parmetro no debemos especificar la longitud del
tipo. Los parmetros pueden ser de entrada (IN), de salida (OUT) o de entrada
salida (IN OUT). El valor por defecto es IN, y se toma ese valor en caso de que no
especifiquemos nada.

Cuando se crea un procedimiento o funcin, Oracle automticamente compila el


cdigo fuente, guarda el cdigo objeto en un rea compartida de la SGA (System
Global Area) y almacena tanto el cdigo fuente como el cdigo objeto en
catlogos del diccionario de datos.
El cdigo objeto permanece en la SGA, por tanto, los procedimientos o funciones
se ejecutan ms rpidamente y lo pueden compartir muchos usuarios.
SET SERVEROUTPUT ON

M.C. JOS BENITO FRANCO URREA

EJERCICIO PRCTICO:
Crear un procedimiento que permita consultar el sueldo de los empleados pasando
como parmetro su nmero de empleado, si no existe el empleado mandar un
mensaje de excepcin que indique que el empelado no fue encontrado.
SET SERVEROUTPUT ON

Ejecutamos el procedimiento:

Ejecutar el procedimiento con el nmero de empleado 8888 para ejecutar la


EXCEPTION

M.C. JOS BENITO FRANCO URREA

2.2. Comentarios.
Monolnea.- Comienzan con dos guiones y continua hasta el final de la lnea.
-- Esto es un comentario
Multilnea.- Comienzan con el delimitador /* y terminan con el delimitador */.
/* Esto es otro comentario, que puede abarcar
varias lneas */

1.1. Funciones SQL en PL/SQL: Conversin de


tipos, Mezclando
Funcin:
Las funciones son iguales que los procedimientos pero adems devuelven un
valor, por lo que la llamada a una funcin debe realizarse dentro de una expresin.
La orden RETURN dentro de una funcin devuelve el valor que la funcin debe
devolver, el cual se convierte al tipo especificado en la cabecera de la funcin.
Puede haber ms de una instruccin RETURN, pero solo se ejecutar la primera
que se encuentre dentro de la lgica del programa.
Para crear una funcin usaremos la siguiente sintaxis:

M.C. JOS BENITO FRANCO URREA

Restricciones en Funciones
No se permiten comandos INSERT, UPDATE o DELETE.
La funcin no puede llamar a otro subprograma que rompa una de las

restricciones arriba indicadas.

Ejercicio PRCTICO:
MOD
Devuelve el resto de la divisin entera entre dos nmeros.

MOD(<dividendo>, <divisor> )
SELECT MOD(20,15) -- Devuelve el modulo de dividir 20/15
FROM DUAL

PARA CONSULTAR LAS FUNCIONES INTEGRADAS EN PL/SQL VISITE TE LINK.


http://www.devjoker.com/contenidos/catss/67/Funciones-integradas-de-PLSQL.aspx

M.C. JOS BENITO FRANCO URREA

1.2.
bloques anidados y mbito de variables,
Operadores en PL/SQL.

Bloques Anidados y mbito de la Variable:

Operadores en PL/SQL
La siguiente tabla ilustra los operadores de PL/SQL.
Tipo de operador Operadores
Operador de
asignacin
Operadores
aritmticos

:= (dos puntos + igual)


+ (suma)
- (resta)
* (multiplicacin)
/ (divisin)

M.C. JOS BENITO FRANCO URREA

** (exponente)
= (igual a)
Operadores
relacionales o de <> (distinto de)
< (menor que)
comparacin
> (mayor que)
>= (mayor o igual a)
<= (menor o igual a)
Operadores
lgicos
Operador de
concatenacin

1.3.

AND (y lgico)
NOT (negacion)
OR (o lgico)
||

Ejercicios Prcticos.

Crear un procedimiento que sume dos nmeros:

Crear una funcin pl/sql que duplica la cantidad recibida como parmetro:

EJECUTAMOS LA FUNCIN

M.C. JOS BENITO FRANCO URREA

M.C. JOS BENITO FRANCO URREA

3. Interactuando con Oracle server


3.1.

Comando SQL en PL/SQL.

El SQL es un lenguaje unificado, lo utilizan todo tipo de usuarios, desde el


administrador de la base de datos, hasta el usuario final, permite la realizacin de
cualquier consulta de datos.
Las sentencias de SQL se clasifican como parte del DDL o del DML.
DDL(Data Definition Language) Lenguaje de Definicin de Datos: Son las
sentencias SQL que permiten definir los objetos de la Base de Datos. ALTER
DATABASE, CREATE TABLE, DROP SEQUENCE, GRANT.

DML(Data Manipulation Language) Lenguaje de manipulacin de datos: Son las


sentencias SQL que permiten manejar la base de datos. DELETE, INSERT,
SELECT, UPDATE.
Siempre que se realiza alguna operacin en la base de datos, no se realiza
directamente sobre la tabla sino sobre una copia local de esta. De tal manera que
si queremos que los resultados de estas operaciones se trasladen a la base de
datos, hay que confirmar dicha operacin con el comando commit. Si no
queremos que estos resultados modifiquen la base de datos (Deshacer) se utiliza
el comando rollback, aunque hay que hacer la claridad que algunas sentencias
SQL no pueden volverse atrs.
RESTRICCIONES
Las restricciones se utilizan para garantizar que los datos cumplan unas
condiciones especficas. SQL maneja las siguientes.

NOT NULL
Obliga a que la columna tenga un valor no nulo. Los
valores nulos son diferentes de 0 y el espacio en blanco.
UNIQUE
Evita valores repetidos en una columna, admitiendo
valores nulos.
CHECK
Verifica que se cumpla una condicin especifica
DEFAULT
Estable un valor por defecto para esta columna, si no
se le asigna ninguno.

M.C. JOS BENITO FRANCO URREA

PRIMARY KEY
Establece columna o conjunto de columnas que
hacen parte de la clave primaria. Solo puede existir una clave primaria por
tabla. Puede ser referenciada como clave fornea por otras tablas.
FOREIGN KEY
Establece que el contenido de esta columna ser uno
de los valores contenidos en una columna de otra tabla o de la misma. Se
puede obligar que cuando una fila de la tabla maestra sea borrada, todas
las filas de la tabla detalle cuya clave fornea coincida con la clave borrada
se borren tambin.

3.2.

Recuperacin de datos en PL/SQL.

El comando SELECT bsicamente te permite obtener o seleccionar las filas de


una o varias tablas que estn almacenadas en tu Base de Datos Oracle. Puedes
consultar los datos directamente desde la lnea de comandos o a travs de los PLSQL Procedures en Oraclepara poder procesar los registros obtenidos.
Para obtener los datos que deseas procesar en tus PL-SQL Procedures en Oracle,
el comando SELECT te provee de una serie de clusulas que te permiten
seleccionar las tablas, filtrar la informacin, agrupar los datos, ordenar el
resultado, unir consultas, etc.
Revisemos como se define la sintaxis bsica del comando SELECT:
/* PL-SQL Procedures en Oracle */
SELECT [distinct | All] {* | expresin} [c_alias]
FROM [tabla, vista] [t_alias]
[WHERE condicin]
[GROUP BY expresin [Having condicin] ]
[ORDER BY {expresion | posicin} [Asc | Desc]]
Donde:
SELECT= Permite seleccionar las columnas o expresiones que se quieren mostrar
en la consulta de tus PL-SQL Procedures en Oracle.
Distinct= Permite obtener solo las filas que son distintas, omitiendo las filas
duplicadas.
All= Permite obtener todas las filas obteniendo incluso las duplicadas, valor por
defecto.
* = Permite seleccionar todas las columnas de las tablas o vistas listadas en la
clusula FROM.
Expresin= Corresponde al nombre de una columna de las tablas o vistas
listadas en la clusula FROM, tambin puede contener funciones, subconsultas u
otros valores.
C_alias= Permite asignar un nombre a cada columna del Select.
FROM= Permite identificar las tablas o vistas de las cuales se quieren obtener los
datos en tus PL-SQL Procedures en Oracle.
Tabla= Corresponde al nombre de la o las tablas que se van a consultar.
M.C. JOS BENITO FRANCO URREA

Vista= Corresponde al nombre de la o las vistas que se van a consultar.


T_alias= Permite asignar un nombre abreviado para identificar a la tabla o vista.
WHERE= Permite identificar las condiciones para filtrar los datos que se quieren
obtener en tus PL-SQL Procedures en Oracle.
Condicin= Corresponde a las definiciones de los filtros que se deben aplicar al
conjunto de tablas o vistas listadas en la clusula FROM.
GROUP BY= Permite identificar las expresiones por las cuales se desean agrupar
los datos que se quieren obtener en tus PL-SQL Procedures en Oracle.
Having= Permite identificar las condiciones para filtrar los datos agrupados dentro
de la clusula GROUP BY.
ORDER BY= Permite identificar las expresiones por las cuales se desean ordenar
los datos que se quieren obtener en tus PL-SQL Procedures en Oracle.
Posicin= Corresponde al nmero de la columna por la cual se quieren ordenar
los datos.
Asc= Permite ordenar los datos de forma ascendente, valor por defecto.
Desc= Permite ordenar los datos de forma descendente.
Ejemplo #1: El gerente necesita saber cul es el sueldo ms alto que se paga en
la empresa. Veamos cmo se hace:
/* PL-SQL Function en Oracle */

Select max(empleados.sueldo) sueldo_mayor


From empleados;
Resultado:
SUELDO_MAYOR
-----------35000

Ejemplo #2: El gerente necesita saber cul es el sueldo ms alto y a que


empleado se le paga en la empresa. Veamos cmo se hace:
/* PL-SQL Function en Oracle */

Select empleados.nombre, empleados.ap_paterno, empleados.sueldo,


empleados.puesto from empleados
where empleados.sueldo = (Select max(empleados.sueldo) from
empleados);
Resultado:
NOMBRE AP_PATERNO SUELDO PUESTO
-------- ---------- ---------- ----------------------------ANDREA MENDOZA
35000 GERENTE

M.C. JOS BENITO FRANCO URREA

Ejemplo #3: El gerente necesita saber cul es el sueldo ms bajo y a que


empleado se le paga en la empresa. Veamos cmo se hace:
/* PL-SQL Function en Oracle */
Select empleados.nombre, empleados.ap_paterno, empleados.sueldo,
empleados.puesto from empleados
where empleados.sueldo = (Select min(empleados.sueldo) from empleados);
Resultados:
NOMBRE AP_PATERNO SUELDO PUESTO
-------- ---------- ---------- ----------------------------INES ARMENTA
3500 RECEPCIONISTA

Ejemplo #4: El gerente necesita saber cul es el sueldo ms alto por


departamento. Veamos cmo se hace:
/* PL-SQL Function en Oracle */

Select n_dpto, max(sueldo) sueldo_mayor


From empleados
Group by n_dpto;
Resultado:
N_DPTO SUELDO_MAYOR
------ -----------1805
15000
1804
25000
1800
35000
1801
15000
1803
15000
1802
15000
Ejercicio 5: consultar los departamentos.
SELECT * FROM departamentos;
Resultados:
N_DPTO DESCRIPCION
------ -----------------------------M.C. JOS BENITO FRANCO URREA

1800
1801
1802
1803
1804
1805

DIRECCION
RCURSOS FINANCIEROS
INFORMATICA
JURIDICO
RECURSOS HUMANOS
RECURSOS MATERIALES

6 filas seleccionadas

http://dominatuspackagesenoracle.com/blog/descubre-como-utilizar-la-function-max-entus-packages-en-oracle.html

3.3.
Insertando datos en PL/SQL. Borrando datos en
PL/SQL.
Insercin de Registros
El proceso de insercin de registros consiste en aadir a una tabla una o ms filas y en
cada fila todos o parte de sus campos.

INSERT INTO <nombre_tabla>


[(<campo1>[,<campo2>,...])]
values
(<valor1>,<valor2>,...);
NOTA: Slo podremos omitir un campo al efectuar una insercin cuando este acepte
valores nulos.

Ejemplo: Se requiere ingresar un nuevo empleado a la empresa.

INSERT INTO empleados(num_empleado, NOMBRE, AP_PATERNO,


AP_MATERNO, PUESTO, SUELDO, ANTIGUEDAD, N_DPTO)
VALUES ('9223','JOSE BENITO', 'FRANCO','URREA','JEFE DE
OFICINA',20000,'10','1802');
Regla de restriccin: el campo num_empleado debe estar declarado como llave
primaria para evitar duplicar nmeros de empleados.

3.4.

Actualizando datos en PL/SQL.

La instruccin UPDATE SQL le permite actualizar registros de una tabla.

M.C. JOS BENITO FRANCO URREA

Ejercicio 1: Se requiere actualizar el sueldo del nuevo empleado Nmero: 9223. El sueldo
nuevo ser de $ 30000.

UPDATE empleados SET sueldo = 30000 WHERE num_empleado = '9223';

TAREA 4: Investigar en internet como se hace una consulta con el


comando SELECT de dos tablas.
Las tablas a consultar son: ALUMNOS y CARRERAS.
NOTA: El campo para unir las dos tablas es CVE_CARRERA y debe de
considerarse en la Clusula WHERE del SELECT
EL RESULTADO DEBE DE SER EL SIGUIENTE:
MATRICULA NOMBRE DESCRIPCION
--------- ------ -------------------------------------------4201
MANUEL GESTION DE LAS TECNOLOGIAS DE LA INFORMACION
4202
PEDRO
GESTION DE LAS TECNOLOGIAS DE LA INFORMACION
4203
JUAN
GESTION DE LAS TECNOLOGIAS DE LA INFORMACION
4204
ARIEL
GESTION DE LAS TECNOLOGIAS DE LA INFORMACION
4205
LUCIA
LICENCIADO EN ADMINISTRACION Y TURISMO
4206
ALICIA
LICENCIADO EN ADMINISTRACION Y TURISMO
4207
MAGDA LICENCIADO EN ADMINISTRACION Y TURISMO
4208
DANNYA LICENCIADO EN ADMINISTRACION
4209
ROCIO
LICENCIADO EN ADMINISTRACION
4210
LUIS
LICENCIADO EN ADMINISTRACION

3.5.

COMMIT Y ROLLBACK.

Transacciones
Una transaccin es un conjunto de operaciones que se ejecutan en una base de datos, y
que son tratadas como una nica unidad lgica por el SGBD.
Es decir, una transaccin es una o varias sentencias SQL que se ejecutan en una base de
datos como una nica operacin, confirmandose o deshaciendose en grupo.
No todas las operaciones SQL son transaccionales. Slo son transaccionales las
operaciones correspondiente al DML, es decir:
sentencias SELECT, INSERT, UPDATE y DELETE
Para confirmar una transaccin se utiliza la sentencia COMMIT. Cuando
realizamos COMMIT los cambios se escriben en la base de datos.
Para deshacer una transaccin se utiliza la sentencia ROLLBACK. Cuando
realizamos ROLLBACK se deshacen todas las modificaciones realizadas por la
transaccin en la base de datos, quedando la base de datos en el mismo estado que
antes de iniciarse la transaccin.

M.C. JOS BENITO FRANCO URREA

Un ejemplo clsico de transaccin son las transferencias bancarias. Para realizar una
transferencia de dinero entre dos cuentas bancarias debemos descontar el dinero de una
cuenta, realizar el ingreso en la otra cuenta y grabar las operaciones y movimientos
necesarios, actualizar los saldos.
Si en alguno de estos puntos se produce un fallo en el sistema podramos haber
descontado el dinero de una de las cuentas y no haberlo ingresado en la otra. Por lo
tanto, todas estas operaciones deben ser correctas o fallar todas. En estos casos, al
confirmar la transaccin (COMMIT) o al deshacerla (ROLLBACK) garantizamos que todos
los datos quedan en un estado consistente.

El siguiente ejemplo muestra una supuesta transaccin bancaria:

DECLARE
importe NUMBER;
ctaOrigen VARCHAR2(23);
ctaDestino VARCHAR2(23);
BEGIN
importe := 100;
ctaOrigen := '2530 10 2000 1234567890';
ctaDestino := '2532 10 2010 0987654321';
UPDATE CUENTAS SET SALDO = SALDO - importe
WHERE CUENTA = ctaOrigen;
UPDATE CUENTAS SET SALDO = SALDO + importe
WHERE CUENTA = ctaDestino;
INSERT INTO MOVIMIENTOS
(CUENTA_ORIGEN, CUENTA_DESTINO,IMPORTE,
FECHA_MOVIMIENTO)
VALUES
(ctaOrigen, ctaDestino, importe*(-1), SYSDATE);
INSERT INTO MOVIMIENTOS
(CUENTA_ORIGEN, CUENTA_DESTINO,IMPORTE,
FECHA_MOVIMIENTO)
VALUES
(ctaDestino,ctaOrigen, importe, SYSDATE);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Error en la
transaccion:'||SQLERRM);
dbms_output.put_line('Se deshacen las modificaciones);
ROLLBACK;
END;

NOTA: ORACLE es completamente transaccional. Siempre debemos especificar


si que queremos deshacer o confirmar la transaccin.

M.C. JOS BENITO FRANCO URREA

3.6 Borrado de datos.


La sentencia DELETE.
Para borrar datos de una tabla, debemos utilizar la sentencia DELETE.
La sintaxis de la sentencia DELETE es la siguiente:

DELETE FROM <nombre_tabla>


[ WHERE <condicion>];
El siguiente ejemplo ilustra el uso de la sentencia DELETE. Es buena idea
especificar en la sentencia WHERE los campos que forman la clave primaria de la
tabla para evitar borrar datos que no queramos eliminar.
Ejercicio Prctico: Borrar de la base de datos el empleado 9223.
DELETE FROM EMPLEADOS WHERE NUM_EMPLEADO = '9223';

M.C. JOS BENITO FRANCO URREA

TAREAS REALIZADAS
Integridad de base de datos
Funciones de conversin de oracle
Seguridad de base de datos
Base de datos distribuida y arquitectura cliente
servidor

atrs

Jos Juan Garcia Borquez


ID: 25122003

Integridad de base de datos

La integridad proporciona un medio de asegurar que los cambios que se hacen en la base
de datos por usuarios autorizados no resultan en una prdida de continencia de los datos.

Las restricciones de integridad protegen la base de datos contra daos accidentales. Una
base de datos almacena informacin sobre alguna parte del mundo real, a la que
denominamos universo de discurso. Ciertas reglas, las restricciones de integridad,
gobiernan el minimundo. Cuando diseamos un esquema para una aplicacin de base de
datos particular, una actividad importante consiste en identificar las restricciones de
integridad que se deben cumplir en la base de datos.

Reglas de identidad.
o Regla de integridad de unicidad de la clave primaria: La regla de integridad de
unicidad est relacionada con la definicin de clave primaria que establece que
toda clave primaria que se elija para una relacin no debe tener valores repetidos
por lo que el conjunto de atributos CP es la clave primaria de una relacin R,
entonces la extensin de R no puede tener en ningn momento dos tuplas con la
misma combinacin de valores para los atributos de CP.
o Regla de integridad de entidad de la clave primaria: La regla de integridad de
entidad de la clave primaria dispone que los atributos de la clave primaria de una
relacin no pueden tener valores nulos. Esta regla es necesaria para que los
valores de las claves primarias puedan identificar las tuplas individuales de las
relaciones. Si las claves primarias tuviesen valores nulos, es posible que algunas
tuplas no se pudieran distinguir. Un SGBD relacional tendr que garantizar el
cumplimiento de esta regla de integridad en todas las inserciones y en todas las
modificaciones que afecten a atributos que pertenecen a la clave primaria de la
relacin.
o Regla de integridad referencial: La regla de integridad referencial est relacionada
con el concepto de clave fornea, lo que determina que todos los valores que
toma una clave fornea deben ser valores nulos o valores que existen en la clave
primaria que referencia. La necesidad de esta regla es debido a que las claves
forneas tienen por objetivo establecer una conexin con la clave primaria que
referencian. Si un valor de una clave fornea no estuviese presente.
o Regla de integridad de dominio: Esta regla establece dos condiciones: 1) La
primera condicin consiste en que un valor no nulo de un atributo Ai debe
pertenecer al dominio del atributo Ai; es decir, debe pertenecer a dominio(Ai).
Esta condicin implica que todos los valores no nulos que contiene la base de
datos para un determinado atributo deben ser del dominio declarado para dicho
atributo.
2) La segunda condicin sirve para establecer que los operadores que pueden
aplicarse sobre los valores dependen de los dominios de estos valores; es decir, un

Jos Juan Garcia Borquez


ID: 25122003
operador determinado slo se puede aplicar sobre valores que tengan dominios
que le sean adecuados.

Bibliografa
http://labredes.itcolima.edu.mx/fundamentosbd/sd_u3_3.htm
http://www.ecured.cu/index.php/Integridad_de_las_Bases_de_Datos

Jose Juan Garcia Borquez


ID:25122003

Funciones de conversin de Oracle.


ASCIISTR(string): convierte cualquier carcter de string que no son ASCII a \xxxx
donde xxxx representa un formato UTF-16
BIN_TO_NUM(expr1,expr2,expr3, ...): Convierte una cadena binaria a formato decimal
(number). Cada una expresin expr(i) debe ser un valor 0 o 1.
Ejemplo:
SELECT BIN_TO_NUM(1,0,1,0) FROM DUAL;
Resultado: 10
CAST(expr AS type_name): CAST(MULTISET(subconsulta) AS type_name)
Ejemplos:
1)
SELECT CAST('22-OCT-1997' AS TIMESTAMP WITH LOCAL TIME ZONE) FROM dual;
SELECT product_id,
CAST(ad_sourcetext AS VARCHAR2(30))
FROM print_media;
2)
CREATE TYPE cust_address_typ OID '82A4AF6A4CD1656DE034080020E0EE3D'
AS OBJECT
( street_address VARCHAR2(40)
, postal_code
VARCHAR2(10)
, city
VARCHAR2(30)
, state_province VARCHAR2(10)
, country_id
CHAR(2)
);
/
CREATE TYPE address_book_t AS TABLE OF cust_address_typ;
/
CREATE TYPE address_array_t AS VARRAY(3) OF cust_address_typ;
/
CREATE TABLE cust_address (
custno NUMBER,
street_address VARCHAR2(40),
postal_code VARCHAR2(10),
city VARCHAR2(30),
state_province VARCHAR2(10),
country_id CHAR(2));
CREATE TABLE cust_short (custno NUMBER, name VARCHAR2(31));

Jose Juan Garcia Borquez


ID:25122003
CREATE TABLE states (state_id NUMBER, addresses address_array_t);
SELECT s.custno, s.name,
CAST(MULTISET(SELECT ca.street_address,
ca.postal_code,
ca.city,
ca.state_province,
ca.country_id
FROM cust_address ca
WHERE s.custno = ca.custno)
AS address_book_t)
FROM cust_short s;
SELECT CAST(s.addresses AS address_book_t)
FROM states s
WHERE s.state_id = 111;
3)
CREATE TABLE projects
(empno NUMBER, project_name VARCHAR2(10));
CREATE TABLE emps_short
(empno NUMBER, last_name VARCHAR2(10));
CREATE TYPE project_table_typ AS TABLE OF VARCHAR2(10);
SELECT e.last_name,
CAST(MULTISET(SELECT p.project_name
FROM projects p
WHERE p.empno = e.empno
ORDER BY p.project_name)
AS project_table_typ)
FROM emps_short e;

CHARTOROWID(char): Convierte un valor de los tipos CHAR,VARCHAR2,NCHAR o


NVARCHAR2 a un valor de tipo ROWID.
Ejemplo:
SELECT ename
FROM scott.emp

Jose Juan Garcia Borquez


ID:25122003
WHERE
ROWID = CHARTOROWID('AAAiPQAHoAAAAK3AAA');
COMPOSE(char): Convierte char a una cadena Unicode normalizada al conjunto de
caracteres del dato de entrada.
SELECT COMPOSE ( 'o' || UNISTR('\0308') ) FROM DUAL;
CONVERT(char,destino_char_set,origen_char_set): Convierte char del conjunto de
caracteres origen_char_set al conjunto de caracteres destino_char_set.
DECOMPOSE(cadena,CANONICAL)
DECOMPOSE(cadena,COMPATIBILITY) Es valido solamente para caracteres
UNICODE.
SELECT DECOMPOSE ('Chteaux') FROM DUAL;
DECOMPOSE
Resultado: Cha^teaux
HEXTORAW(char): Convierte char a ROWID
NUMTODSINTERVAL:
NUMTOYMINTERVAL:
RAWTOHEX(raw): Convierte un carcter de tipo RAW a su equivalente hexadecimal
RAWTONHEX(raw): Convierte un carcter de tipo RAW a NVARCHAR2
ROWIDTOCHAR(rowid): Convierte un valor del tipo ROWID a un valor de tipo
VARCHAR2 cuya longitud es siempre 18
SELECT ROWID FROM scott.emp
WHERE ROWIDTOCHAR(ROWID) LIKE '%SAAb%';
ROWIDTONCHAR(rowid): Convierte un valor de tipo ROWID a NVARCHAR2
SCN_TO_TIMESTAMP(number): Transforma el valor number SCN (System Change
Number) al valor aproximado de tipo TIMESTAMP asociado a dicho number.
TIMESTAMP_TO_SCN(timestamp): Convierte el valo introducido timestamp del tipo
TIMESTAMP y devuelve el valor aproximado de SCN.
TO_BINARY_DOUBLE(expr,fmt,nlsparam): Devuelve un numero con doble precisin
en coma flotante.

Jose Juan Garcia Borquez


ID:25122003
TO_BINARY_FLOAT(expr,fmt,nlsparam): Devuelve un numero con precisin sencilla
en coma flotante.
TO_CHAR (character): Convierte valores de los tipos NCHAR,NVARCHAR2, CLOB o
NCLOB a conjunto de caracteres de la base de datos.
TO_CHAR (datetime,fmt,nlsparam),
TO_CHAR (interval,fmt,nlsparam)
Convierte un valor de tipo fecha o intervalo a un valor de tipo fecha (DATE, TIMESTAMP,
TIMESTAMP WITH TIMEZONE o TIMESTAMP WITH LOCAL TIME ZONE)
TO_CHAR (n,fmt,nlsparam)
Convierte el valor n de tipo NUMBER a un valor del tipo VARCHAR2, utilizando el formato
opcional fmt.
nlsparam debe ser un argumento con el siguiente formatos:
'NLS_NUMERIC_CHARACTERS = ''dg''
NLS_CURRENCY = ''text''
NLS_ISO_CURRENCY = territory '
El carcter d representa el separador decimal y el carcter g el separador de miles.
Text representa el smbolo de la moneda local y territory representa el smbolo de la
moneda internacional.
SELECT
TO_CHAR(-10000,'L99G999D99MI',
'NLS_NUMERIC_CHARACTERS = '',.'' NLS_CURRENCY = ''AusDollars'' ')
"Amount"
FROM DUAL;
Amount
------------------AusDollars10.000,00TO_CLOB(lob_column), TO_CLOB (char): TO_CLOB convierte un valor NCLOB de una
columna LOB o cualquier otro carcter al tipo CLOB values. char puede ser de uno de los
tipos CHAR, VARCHAR2, NCHAR,
NVARCHAR2, CLOB, or NCLOB.
TO_CLOB(lob_column), TO_CLOB (char): TO_CLOB convierte un valor NCLOB de una
columna LOB o cualquier otro carcter al tipo CLOB values. char puede ser de uno de los
tipos CHAR, VARCHAR2, NCHAR,
NVARCHAR2, CLOB, or NCLOB.
TO_DSINTERVAL(char,nlsparam): Convierte una cadena de caracteres del tipo
CHAR, VARCHAR2, NCHAR, o NVARCHAR2 a un valor de tipoINTERVAL DAY TO
SECOND.
Ejemplo:

Jose Juan Garcia Borquez


ID:25122003
SELECT empno, ename
FROM scott.emp
WHERE hiredate + TO_DSINTERVAL('100 10:00:00')
<= DATE '1990-01-01';
TO_LOB(long_column):Convierte un valor LONG o LONG RAW de la columna
long_column a un valor LOB.
TO_MULTI_BYTE(char)
TO_NCHAR (character,fmt,nlsparam): Convierte un string de tipo carcter, CLOB o
NCLOB del juego de caracteres de la base de datos al juego de caracteres nacional.
TO_NCHAR (datetime): TO_NCHAR (datetime) convierte de los tipos DATE,
TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE,
INTERVAL MONTH TO YEAR, o INTERVAL DAY TO SECOND del conjunto de
caracteres de la base de datos al conjunto de caracteres nacional.
Ejemplo:
SELECT TO_NCHAR(hiredate)
FROM scott.emp;
TO_NCHAR (number): TO_NCHAR (n,fmt,nlsparam) convierte n a una cadena en el
conjunto de caracteres nacional. El valor n puede ser de los tipos NUMBER,
BINARY_FLOAT, o BINARY_DOUBLE.
Ejemplo:
SELECT
TO_NCHAR(empno) "NCHAR_Customer_ID"
FROM
scott.emp
TO_NCLOB(char)
TO_NUMBER(expr,fmt,nlsparam)
TO_NUMBER convierte expr a un valor de tipo NUMBER. expr puede ser un valor de tipo
BINARY_FLOAT o BINARY_DOUBLE o un valor de tipo CHAR, VARCHAR2, NCHAR o
NVARCHAR2 que contengan un numero en el formato especificado mediante el modelo
de formato opcional fmt.
Ejemplo:
SELECT
TO_NUMBER('-AusDollars100','L9G999D99', ' NLS_NUMERIC_CHARACTERS =
'',.'' NLS_CURRENCY = ''AusDollars'' ') "Amount"
FROM DUAL;
Amount

Jose Juan Garcia Borquez


ID:25122003
----------100
TO_DSINTERVAL:
TO_SINGLE_BYTE(char): TO_SINGLE_BYTE devuelve char con todos sus multibytes
caracteres convertidos a su correspondientes caracteres simples. char debe ser de los
tipos CHAR, VARCHAR2, NCHAR, o NVARCHAR2. El valor devuelto es del mismo tipo
que el de char.
TO_TIMESTAMP
TO_TIMESTAMP_TZ:
TO_YMINTERVAL:
TRANSLATE ... USING:
UNISTR(string): UNISTR toma como argumento un texto y lo convierte a una cadena en
el conjunto de caracteres nacional.

Bibliografa
https://sites.google.com/site/josepando/home/funciones-sql/funciones-quedevuelven-una-valor-nico-para-cada-fila-de-una-consulta-o-vista/funciones-deconversin

Seguridad de base de datos


La seguridad en las bases de datos es la proteccin contra la revelacin no autorizada
(confidencial), la alteracin no autorizada (integridad) y contra la destruccin intencional o
involuntaria.
Proteccin dirigida a dos tipos de usuarios:
1. Los que no tienen derechos de acceso.
2. Los que tienen derechos limitados a ciertas acciones.
Datos -> activo mas valioso de una organizacin -> necesidad de controlarlo y
administrarlo cuidadosamente.
Parte o la totalidad de los datos corporativos -> importancia estratgica -> necesidad de
manejarlos en forma segura y confidencial.
Consideraciones sobre seguridad -> no se aplican solo a los datos -> brechas en la
seguridad pueden afectar otras partes del sistema que a su vez pueden afectar la base de
datos.
Algunas preguntas a plantearse son:

Cun valiosos son los datos?


Cules datos deben asegurarse?
Cunto costaran los accesos ilegales a los datos?
Cules son las implicaciones de los cambios o destrucciones de datos?
Qu medidas de seguridad afectan el funcionamiento de la base de datos?
Cmo pueden ocurrir los accesos no autorizados?

Jos Juan Garcia


Luis Molina
Oscar Amavizca

La

tecnologa y prototipo de los sistemas de


gestin de bases de datos distribuidas se
han desarrollado de uno a otro y cada
sistema adopta una arquitectura particular
propia.

El

dise de una BDD involucra 4 pasos:


1. Diseo del esquema conceptual donde
se describe la BD integral.
2. Diseo de fragmentacin.
3. Diseo de la asignacin de los
fragmentos.
4. Diseo de la BD fsica (transformar
los esquemas locales en reas de
almacenamiento y determinar mtodos
de acceso apropiados).

La fragmentacin y asignacin de los datos caracterizan


el diseo de BDD. La fragmentacin se ocupa
fundamentalmente de los criterios lgicos que motivan la
divisin de relaciones globales en fragmentos, mientras
que la asignacin se ocupa de los aspectos fsicos de su
ubicacin y rplicas en sitios; aunque hay una diferencia
entre ambos procesos, su interrelacin es importante
para obtener un diseo ptimo.
En caso que tambin se distribuyan las aplicaciones
debemos tener en cuenta el diseo de los esquemas, los
requerimientos ms importantes de las aplicaciones
tenemos las siguientes:
1. Sitio que comparte una aplicacin.
2. Frecuencia de activacin de la aplicacin
3. Cantidad, tipo y distribucin estadstica de los accesos
de cada aplicacin a cada dato requerido.
En el diseo de un sistema de bases de datos distribuidas
debemos tener en cuenta algunas estrategias y objetivos
y se deben en paralelo tomar decisiones sobre cmo hay
que distribuir los datos entre los sitios de la red.

A los problemas que presentamos en el diseo de las


Bases de Datos Centralizadas (BDC) se le aaden otros
nuevos cuando diseamos Bases de Datos Distribuidas
(BDD) entre los cuales se destacan la distribucin ptima
de datos y de las aplicaciones en los diferentes sitios.
Cuando pensamos en el diseo de las bases de datos
distribuidas debemos tener en cuenta la ubicacin de los
programas que accedern a las bases de datos y sobre los
propios datos que constituyen la base de datos, en
diferentes puntos de una red.
Sobre la ubicacin de los programas supondremos que
tenemos una copia de ellos en cada maquina donde se
necesite acceder a la base de datos. Sin embargo el
problema radica en como ubicaremos los datos en la red,
existen diferentes formas de repartir los datos: En solo
una maquina que almacene todos los datos y se encargue
de responder a todas las consultas del resto de la red
(sistema centralizado), ubicaramos la base de dato en
cada maquina donde se utilice, o pensaramos en repartir
las relaciones por toda la red.

La organizacin de los sistemas de bases de datos


distribuidos se ha clasificado tradicionalmente sobre el
nivel de comparticin, caractersticas de acceso y nivel de
conocimiento de los datos:

1. Inexistencia.
Los datos y programas se ejecutan en un ordenador sin
que exista comunicacin entre ellos.
2. Se comparten datos y no programas.
Existe una rplica de los programas de aplicacin en cada
mquina y los datos viajan a travs de la red.
3. Se comparten datos y programas.
Los datos y programas se reparten por los diferentes
sitios de la red, dado un programa ubicado en un
determinado sitio puede acceder a un servicio a otro
programa de segundo sitio solicitando acceder a los datos
ubicados en un tercero.

Esta arquitectura consiste bsicamente en un cliente


que realiza peticiones a otro programa (el servidor)
que le da respuesta. En esta arquitectura la capacidad
de proceso est repartida entre los clientes y los
servidores, aunque son ms importantes las ventajas
de tipo organizativo debidas a la centralizacin de la
gestin de la informacin y la separacin de
responsabilidades, lo que facilita y clarifica el diseo
del sistema.

Es el que inicia un requerimiento de servicio. El


requerimiento inicial puede convertirse en mltiples
requerimientos de trabajo a travs de redes LAN o WAN. La
ubicacin de los datos o de las aplicaciones es totalmente
transparente para el cliente.
El remitente de una solicitud es conocido como cliente. Sus
caractersticas son:
Es quien inicia solicitudes o peticiones, tienen por tanto un
papel activo en la comunicacin (dispositivo maestro o
amo).
Espera y recibe las respuestas del servidor.
Por lo general, puede conectarse a varios servidores a la
vez.
Normalmente interacta directamente con los usuarios
finales mediante una interfaz grfica de usuario.
Al contratar un servicio de redes , se tiene que tener en la
velocidad de conexin que le otorga al cliente y el tipo de
cable que utiliza , por ejemplo : cable de cobre ronda
entre 1 ms y 50 ms.

Es cualquier recurso de cmputo dedicado a responder a los


requerimientos del cliente. Los servidores pueden estar
conectados a los clientes a travs de redes LANs o WANs, para
proveer de mltiples servicios a los clientes y ciudadanos tales
como impresin, acceso a bases de datos, fax, procesamiento de
imgenes, etc.
Al receptor de la solicitud enviada por cliente se conoce como
servidor. Sus caractersticas son:
Al iniciarse esperan a que lleguen las solicitudes de los clientes,
desempean entonces un papel pasivo en la comunicacin
(dispositivo esclavo).
Tras la recepcin de una solicitud, la procesan y luego envan la
respuesta al cliente.
Por lo general, aceptan conexiones desde un gran nmero de
clientes (en ciertos casos el nmero mximo de peticiones puede
estar limitado).
No es frecuente que interacten directamente con los usuarios
finales.

CONCLUCION
Excelente curso, me ayudo a conocer mas sobre el
lenguaje SQL, a organizar, administrar y
consultar datos almacenados en una
computadora.
Tambin me enseo a ser capaz de resolver
problemas que tengan que ver con el uso de
PL/SQL y MYSQL.

atrs

INSTRUMENTOS DE EVALUACION
TEMARIO 1er PARCIAL
TEMARIO 2do PARCIAL

atrs

TEMARIO PRIMER EXMEN PARCIAL BASE DE DATOS III


1. PL/SQL
PL- Proviene de Procedural Language (lenguaje procedural)
SQL- Structured Query Language (Lenguaje de consulta estructurado).
Ofrece un conjunto de comandos procedurales (sentencias IF, bucles,
asignaciones), organizado dentro de bloques, que complementan y amplan
el alcance de SQL.
2. herramienta SQL Developer
Es una herramienta grfica gratis que mejora la productividad y simplifica
las tareas de desarrollo para base de datos Oracle. Podrs navegar, editar
y crear objetos de base de datos Oracle, ejecutar sentencias SQL, editar y
depurar PL SQL, construccin de PL SQL de pruebas unitarias, ejecutar
informes y colocar archivos bajo control de versiones.
3. Estructura de Un bloque PL/SQL
Est definido por las palabras clave DECLARE, BEGIN, EXCEPTION, y END

4. TIPOS DE BLOQUES QUE SE MANEJAN EN PL/SQL


ANNIMO, PROCEDIMIENTO Y FUNCIN

M.C. JOS BENITO FRANCO URREA

5. PROCEDIMIENTO.
Es un subprograma que ejecuta una accin especfica y que no devuelve ningn
valor por s mismo.
6. FUNCIN
Es un subprograma que ejecuta una accin especfica y que SI devuelve un valor
especfico.
7. ESCRIBE EN LA LNEA SI ES UN PROCEDIMIENTO (PROCEDURE) O
UNA FUNCIN (FUNCTION).
CREATE OR REPLACE PROCEDURE csueldo(num_empleado VARCHAR2)
IS
nombre_emp EMPLEADOS.NOMBRE%TYPE;
sueldo_emp EMPLEADOS.SUELDO%TYPE;
BEGIN
DBMS_OUTPUT.put_line('Numero de empleado ingresado: ' || num_emp);
SELECT NOMBRE, SUELDO INTO nombre_emp, sueldo_emp FROM EMPLEADOS
WHERE NUM_EMPLEADO=num_emp;
DBMS_OUTPUT.put_line('Nombre Empleado: ' || TRIM(nombre_emp));
DBMS_OUTPUT.put_line('Sueldo : '|| sueldo_emp);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.put_line('EMPLEADO NO ENCONTRADO!');
END;

CREATE OR REPLACE FUNCTION parimpar(num NUMERIC) RETURN VARCHAR2


IS
BEGIN
IF MOD(num,2)=0 THEN RETURN 'PAR';
ELSE RETURN 'IMPAR';
END IF;
END;

M.C. JOS BENITO FRANCO URREA

8. LA SENTENCIA IF-THEN-ELSE IF-END IF


Te permite ejecutar una secuencia de declaraciones de forma condicional. El valor de
una condicin debe ser verdadero (TRUE) para que sea ejecutado o falso (FALSE) para
que no se ejecute.

9. BUCLES WHILE, FOR, LOOP


Repiten una instruccin o un conjunto de instrucciones varias veces.

10. PRIMARY KEY (llave Primaria o principal)


Es un campo que define de manera nica un registro. Ninguno de los campos
que forman parte de la clave principal puede contener un valor nulo. Una tabla
slo puede tener una clave primaria.
11. FOREING KEY (llave fornea)
Una clave FORNEA o externa significa que los valores de una tabla tambin
pueden aparecer en otra tabla.
12. Instruccin COMMIT
Hace permanentes los cambios realizados en la base de datos durante la
transaccin actual. Tambin hace los cambios visibles para otros usuarios.
13. Instruccin ROLLBACK
Se deshacen todas las modificaciones realizadas por la transaccin en la base de
datos, quedando la base de datos en el mismo estado que antes de iniciarse la
transaccin.

14.

DDL(Data Definition Language) Lenguaje de Definicin de Datos.

Son las sentencias SQL que permiten definir los objetos de la Base de Datos.
ALTER DATABASE, CREATE TABLE, DROP SEQUENCE, GRANT.
1. SQL > GRANT DBA TO jfranco;
2. SQL>CREATE USER jfranco IDENTIFIED BY admin DEFAULT
TABLESPACE Users;
3. SQL > ALTER USER jfranco DEFAULT
TABLESPACE
ts_corporativo;

M.C. JOS BENITO FRANCO URREA

15.

DML(Data Manipulation Language) Lenguaje de manipulacin de datos

Son las sentencias SQL que permiten manejar la base de datos. DELETE,
INSERT, SELECT, UPDATE.
1. UPDATE empleados SET sueldo = 30000 WHERE num_empleado = '9223';

2. DELETE FROM EMPLEADOS WHERE NUM_EMPLEADO = '9223';


3. SELECT * FROM EMPLEADOS;

M.C. JOS BENITO FRANCO URREA

TEMARIOSEGUN
NDOEXAM
MENPARCIAL
1. IDENTIFICA
ADEQUETIPODECLARAR
RIASLOSSIGU
UIENTESDATTOS(VARCHA
AR,VARCHAR
R2,
DATE,NUM
MBER,BOLEAN):
12345
56VARC
CHAR2,VARCH
HAR
21/03//2013DATTE
10.34NU
UMBER(2,2)
47689NUM
MBER(7,0)
14/02
2/2013VARC
CHAR2,VARCH
HAR

2. IDENTIFIC
CALASSIGUIENTESEXPRESIONESC
COMO:DECLLARACINY
YASIGNACI
N
DE UN VA
ALOR A VA
ARIABLE, EX
XPRESIN DE
D COMPAR
RACIN, DEC
CLARACIN Y
ASIGNACI
N DE VALLOR A UNA
A CONSTANTTE, DECLAR
RACION DE LA VARIAB
BLE
IDENTIFICA
ANDOSOLO
OSUTIPO.
v_cveaalumnoVARCHAR2:=5423;DECLARACIN
D
YASIGNACIN
NDEVALORAVARIABLE
v_fechaDATE;
DECLARACINDELAVARRIABLEIDENTIFFICANDOSOLO
OSUTIPO
v_num
meroNUMBER
R(2):=10;DECCLARACINYA
ASIGNACIND
DEVALORAVA
ARIABLE
v_nom
mbreVARCHAR2(50):='Laurra';DECLA
ARACINYASIIGNACINDEV
VALORAVARIA
ABLE
constanteCONSTAN
NTNUMBER:==100;DECLARACINYA
ASIGNACINDEEVALORACON
NSTANTE
v_cveaalumno=v_laaclave;EX
XPRESINDECOMPARACIIN

3. IDENTIFICACUALINSTRU
UCCINDEO
OPERADORESDECONJUNTTOSPERTENEECEEL
ODELAINSTR
RUCCINSELECTDELOSSIGUIENTESCO
ONJUNTOS
RESULTADO
COMPARATTIVOS.(UNION
N,INTERSECTT,MINUS)
BA
ASEDATOS
A=ALUMNO
OS
B=EMPLEADOS
B

M.C.JOSBENITOFFRANCOURR
REA


A) SELECT NO
OMBRE, AP_PA
ATERNO, AP_
_MATERNO FR
ROM ALUMNO
OS UNION SE
ELECT NOMBRE
E,
AP_PATERNO
O, AP_MATERNO
O FROM EMPLE
EADOS;

B) SELECT NO
OMBRE,AP_
_PATERNO,A
AP_MATERNO
O FROM EMP
PLEADOS

INTER
RSECT SELLECT NOMBRE, AP_PATERNO, AP_M
MATERNO FR
ROM ALUMN
NOS

C) SELECT NO
OMBRE,AP_PA
ATERNO,AP_M
MATERNO FRO
OM ALUMNOS
S MINUS SEL
LECT NOMBRE,
AP_PATERN
NO, AP_MATERNO FROM EMPLEADOS

M.C.JOSBENITOFFRANCOURR
REA

EJERCICIO PRCTICO:
ESCRIBE LA ESTRUCTURA DE UNA TABLA DE TU PROYECTO FINAL Y ESCRIBE
EL CDIGO PARA EJECUTAR UN CURSOR DE CONSULTA AVANZADA
ESTRUCTURA TABLA EMPLEADOS

ACCEPT eldepa PROMPT 'DIGITE EL NMERO DE DEPTO: 1800-1805'


DECLARE
v_ndepa VARCHAR2(4) := TO_CHAR('&eldepa');
CURSOR cpuestos(v_departamento IN VARCHAR2) IS
SELECT N_DPTO, NOMBRE, AP_PATERNO, PUESTO, TO_CHAR(SUELDO)
FROM EMPLEADOS WHERE N_DPTO = v_departamento;
v_ndpto VARCHAR2(5);
v_nombre VARCHAR2(20);
v_paterno VARCHAR2(20);
v_puesto VARCHAR2(40);
v_sueldo VARCHAR2(15);

BEGIN
OPEN cpuestos (v_ndepa);
LOOP
FETCH cpuestos INTO v_ndpto, v_nombre, v_paterno, v_puesto, v_sueldo;
EXIT WHEN cpuestos%NOTFOUND;
DBMS_OUTPUT.put_line(v_ndpto || ' ' ||TO_CHAR(v_sueldo) || ' ' || v_nombre || ' '
|| v_paterno || ' ' || v_puesto);

END LOOP;
CLOSE cpuestos;

END;

M.C.JOSBENITOFRANCOURREA

FIN
GRACIAS

Anda mungkin juga menyukai