Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
COMPUTACIN E
INFORMTICA
MANUAL DE APRENDIZAJE
ADMINISTRACIN DE
BASE DE DATOS
CDIGO: 89001560
Profesional Tcnico
ADMINISTRACIN DE BASE DE DATOS
TABLA DE CONTENIDO:
Tarea 01: Aplicar los principios fundamentales de una auditora de base de
datos. ................................................................................................................................................ 7
OPERACIONES ........................................................................................................................ 8
IDENTIFICAR LOS OBJETIVOS DE LA AUDITORA DE BASE DE DATOS. .......................... 8
DEFINIR LAS TAREAS DEL ADMINISTRADOR DE LA BD ................................................... 10
ANALIZAR LA DOCUMENTACIN DE LA BD. ....................................................................... 12
DEFINIR LAS TCNICAS DE RECUPERACIN. ................................................................... 16
REALIZAR UNA EVALUACIN DE RIESGOS DE LA BD. ..................................................... 20
FUNDAMENTO TERICO: ................................................................................................. 24
IDENTIFICAR LOS OBJETIVOS DE LA AUDITORIA DE BASE DE DATOS. ........................ 24
DEFINIR LAS TAREAS DEL ADMINISTRADOR DE LA BD ................................................... 27
ANALIZAR LA DOCUMENTACIN DE LA BD. ....................................................................... 38
DEFINIR LAS TCNICAS DE RECUPERACIN. ................................................................... 46
REALIZAR UNA EVALUACIN DE RIESGOS DE LA BD. ..................................................... 56
Tarea 02: Utilizar clusulas avanzadas y optimizar las consultas a una base
de datos......................................................................................................................................... 64
OPERACIONES ...................................................................................................................... 65
INSERTAR EN MLTIPLES FILAS EN UNA TABLA. ............................................................. 65
UTILIZAR ALIAS EN UNA CONSULTA SQL. .......................................................................... 79
APLICAR LA SENTENCIA SQL JOIN PARA VARIAS TABLAS. ............................................. 86
CONVERTIR TIPOS DE DATOS AL MOMENTO DE EJECUTAR LA CONSULTA.............. 103
APLICAR INSTRUCCIONES AVANZADAS EN LAS CONSULTAS A LA BD. ...................... 111
CREAR FUNCIONES EN UNA BASE DE DATOS. ............................................................... 115
FUNDAMENTO TERICO: ............................................................................................... 120
INSERTAR EN MLTIPLES FILAS EN UNA TABLA. ........................................................... 120
UTILIZAR ALIAS EN UNA CONSULTA SQL. ........................................................................ 133
APLICAR LA SENTENCIA SQL JOIN PARA VARIAS TABLAS ............................................ 135
CONVERTIR TIPOS DE DATOS AL MOMENTO DE EJECUTAR LA CONSULTA.............. 136
APLICAR INSTRUCCIONES AVANZADAS EN LAS CONSULTAS A LA BD. ...................... 141
CREAR FUNCIONES EN UNA BASE DE DATOS. ............................................................... 145
01
TAREA 01: APLICAR LOS PRINCIPIOS FUNDAMENTALES DE
UNA AUDITORA DE BASE DE DATOS.
En esta tarea trataremos las siguientes operaciones:
Identificar los objetivos de la auditoria de base de datos.
Definir las tareas del administrador de la bd.
Analizar la documentacin de la bd.
Definir las tcnicas de recuperacin.
Realizar una evaluacin de riesgos de la bd.
Equipos y Materiales:
Orden de Ejecucin:
OPERACIONES.
Operacin:
Qu es la Auditora de BD?
Aspectos Claves.
Segregacin de funciones.
El sistema de auditora de base de datos no puede ser administrado por los
DBA del rea de IT.
Auditoria.
Uno de los aspectos ms fundamentales del trabajo del DBA es proteger los datos
de la organizacin. Esto incluye hacer copias de seguridad peridicas de los datos
y mantenerlos a salvo de la destruccin accidental o intencional. Adems, disear,
implementar y probar un plan de recuperacin para que cuando se presenten los
problemas, los datos se pueden restaurar rpidamente.
Planificacin de capacidad.
Administracin de cambios.
Desarrollo de aplicaciones.
Anlisis de Datos
As pues para tener una buena base de datos es necesario eso, hacer un
estudio minucioso de cada datos de cada parte de la informacin que se
requiere manipular, que relacin tendrn los datos entre s, quienes van a
manejar la informacin, hasta que niveles se requiere que la informacin se
muestre completamente, el flujo que debe seguir hasta el cliente final, interfaces
de entrada y salida, la conformacin para los reportes, todo ello forma parte del
anlisis de datos para tener archivos robustos, estructurados, consistentes,
adems todo ello debe quedar en documentos para cuando surjan
incontinencias o bien se requiera una reingeniera de los archivos.
Tipos de datos.
Una base de datos est compuesta por campos cada uno de ellos con una
caracterstica que le llamaremos tipo de dato, estos varan segn como los
necesitemos los tipos de datos conocidos y ms usados son:
Estos tipos de datos son los ms utilizados dentro del diseo de una base de
datos, con los cuales podemos realizar el diseo de la base de datos, son una
parte importante para darle sentido a los datos que se utilizarn en sta.
Tambin debemos nombrar los campos y los archivos de manera que sea
descriptiva y con solo leerlos nos demos cuenta que es lo que significan,
aunque para ellos tambin se debe de elaborar un diccionario de datos en el
cual se describe cada archivo, campo y relacin entra ellas.
Nota: se ejemplificar con bases de datos relacionales ya que son las que se
utilizan en la actualidad.
Para hacerlo debemos hacerlo con abreviaciones o palabras clave para su fcil
manejo por ejemplo:
Cada quien puede asignar los nombres de campo a conveniencia, pero a veces
no tomamos una secuencia al hacerlo y la mayor parte de las veces
nombramos de manera desordenada o solo poniendo el nombre que queremos
que lleve, por lo que aqu con este ejemplo veremos una manera de nombrarlos
y que con ello se pueda identificar fcilmente e inclusive para realizar relaciones
entre ellos. Como mencionamos en el ejemplo de los datos:
Por otro lado tambin es necesario nombrar los archivos que componen las
bases de datos, lo recomendable es usar abreviaturas clave que puedan ayudar
a su fcil identificacin, como hemos estado viendo en los campos usamos la
abreviatura "cve" para dar a entender que es una clave, o la letra "c" para
identificar que es la cadena descripcin "cDescripcion" . As tambin los
archivos deben de ser nombrados, con abreviaturas as que por ejemplo para la
tabla de empelados podemos llamarla de la siguiente manera APEmpleado,
donde "A" y "P" significarn lo siguiente: "A=Archivo" y "P=Principal" o bien
Empleado
Donde "BD" significa base de datos. Cada analista puede usar la nomenclatura
como convenga para la identificacin de sus archivos.
Por lo tanto un campo relacional es aquel que establecer una asociacin con
una o ms bases de datos que lo utilice para darle sentido a la informacin que
representa.
Una computadora, al igual que cualquier otro dispositivo elctrico o mecnico, est
sujeta a fallos. stos se producen por diferentes motivos como: fallos de disco,
cortes de corriente, errores en el software, un incendio en la habitacin de la
computadora o incluso sabotaje. En cada uno de estos casos puede perderse
informacin. Por tanto, el sistema de bases de datos debe realizar con anticipacin
acciones que garanticen que las propiedades de atomicidad y durabilidad de las
transacciones, se preservan a pesar de tales fallos. Una parte integral de un
sistema de bases de datos es un esquema de recuperacin, el cual es
responsable de la restauracin de la base de datos al estado consistente previo al
fallo. El esquema de recuperacin tambin debe proporcionar alta disponibilidad;
esto es, debe minimizar el tiempo durante el que la base de datos no se puede
usar despus de un fallo.
Los diferentes elementos que componen una base de datos pueden ser
almacenados y accedidos con diferentes medios de almacenamiento.
PAGINACIN EN LA SOMBRA.
Variables:
Im: Impacto del riesgo sobre el objetivo del rea de TI.
Pr: Probabilidad de materializacin del riesgo.
Re: Riesgo estimado.
Ra: Riesgo aceptado.
Rr: Riesgo residual.
Rg: Riesgo gestionable o por administrar.
Cc: Cobertura de Control.
Ca: Calificacin del control en la revisin.
Ir: Relacin de impacto del riesgo en el objetivo.
Ip: Relacin de impacto del proceso en el riesgo.
If: Relacin de impacto del factor en el proceso.
Ic: Relacin de impacto del control sobre el factor o proceso.
Ec: Efectividad de la cobertura del control.
Ca: Calificacin del control
Frmulas metodolgicas.
En general:
PRC-VUL01
Pag. 1/4
INS-01 Gestin de Riesgos
Versin 1.0
Fecha Monitoreo de vulnerabilidades de P15-C15
01/09/2008 bases de datos Oracle
1. Determinacin de los ambientes de base de datos a monitorear.
Seleccin de servidores
Criterios:
Importancia para las operaciones de la organizacin.
Mantenimiento histrico del equipo.
Estado de actualizacin.
Grado de exposicin al ambiente externo.
2. Obtener la versin de software de cada ambiente.
Debe identificarse la versin actual del software BD, e identificar las vulnerabilidades activas y
posible materializacin.
Obtener, a partir de fuentes certificadas, la especificacin de vulnerabilidades activas para
cada ambiente de acuerdo a su versin de software.
Acceder a documentacin proporcionada por empresas internacionales encargadas de la
recoleccin y estudio de incidencias presentadas en sistemas de informacin comerciales, que
atentan contrta la seguridad de los mismos, y por ende, la seguridad de la informacin
organizacional.
3. Sitio de soporte en lnea del proveedor METALINK.
Sitios de empresas reconocidas por su labro en la identificaci de vulnerabilidades de software.
PRC-VUL01
Pag. 2/4
INS-01 Gestin de Riesgos
Versin 1.0
Fecha Monitoreo de vulnerabilidades de P15-C15
01/09/2008 bases de datos Oracle
4. Identificar, de las vulnerabilidades detectadas, aquellas que no han sido corregidas en cada
uno de los ambientes. Determinar cuales de ellas no han sido corregidas. Con este fin ser{a
necesario consultar la bitcora de correccin de vulnerabilidades.
En caso de no contar con registro previo de vulnerabilidades tratadas, se deber llevar a cabo
un anlisis sobre cada vulnerabilidad para determinar si esta se encuentra o no corregida. Para
ello ser necesario efectuar laboratorios de prueba y revisiones de la configuracin.
PRC-VUL01
Pag. 3/4
INS-01 Gestin de Riesgos
Versin 1.0
Fecha Monitoreo de vulnerabilidades de P15-C15
01/09/2008 bases de datos Oracle
6. Gestionar la metodologa de aplicacin de las correcciones.
Previo a la aplicacin de cualquier procedimiento, se deber llevar a cabo una planificacin
cuidados de la estrategia de ejecucin. Para ello, se debern tomar en cuenta los siguientes
aspectos.
Necesidad de sacar de lnea el sistema.
Usuarios y sistemas afectados: determinar cantidad y tipo de usuarios y sistemas que se
veran afectados. Esto permitir definir la flexibilidad existente para la interrupcin del
servicio, as como planes para la coordinacin de interrupcin de operaciones.
Riesgo involucrado: Conociendo el riesgo existente se debern tomar medidas preventivas,
como lo son la cracin de respaldos, planes de contingencia, etc.
Tiempo mximo de inaccesibilidad de la informacin: Permite definir ventanas de operacin.
PRC-VUL01
Pag. 4/4
INS-01 Gestin de Riesgos
Versin 1.0
Fecha Monitoreo de vulnerabilidades de P15-C15
01/09/2008 bases de datos Oracle
Nota: La versin final del plan deber quedar documentada, asignndole un cdigo nico que
permita refereneciale a futuro para efectos de control y auditora. Dicho cdigo de identificacin
ser requerido dentro de la bitcora de ejecucin del procedimiento de monitoreo.
9. Para cada vulnerabilidad detectada, y sobre la que se aplic el presente instructivo, generar
una entrada en el registro PRC-VUL01 INS-01 REG-01.
Monitoreo de vulnerabilidades de
Pag. _/_
PRC-VUL01 INS-01 REG-01 bases de datos Oracle
Versin 1.0
Consecutivo
asdP15-C15asd (Ic INFORMACIN
Gestin de Riesgos
75%) CONFIDENCIA
L
FUNDAMENTO TERICO:
o Observacin.
o Realizacin de cuestionarios.
o Entrevistas a auditados y no auditados.
o Muestreo estadstico.
o Flujogramas.
o Listas de chequeo.
o Mapas conceptuales.
o Desempeo.
Fiabilidad.
Eficacia.
Rentabilidad.
Seguridad.
Privacidad.
o Gobierno corporativo
Administracin del Ciclo de vida de los sistemas.
Servicios de Entrega y Soporte.
Proteccin y Seguridad.
Planes de continuidad y Recuperacin de desastres.
Rendimiento.
El rendimiento de una base de datos incluye su velocidad para ubicar los datos as
como su habilidad para ser utilizada con otras aplicaciones. Los administradores
de la base de datos ayudan a disear un indexado para aumentar la velocidad de
bsqueda y asistir con una disposicin y un diseo adecuado para la base de
datos. Tambin aseguran que las distintas aplicaciones de programas tengan la
habilidad de acceder a la informacin dentro de la base de datos y producir una
salida adecuada es cargar el servidor.
Evitar desastres.
Muchas veces, las fallas de sistemas y de disco rgido y los virus pueden destruir
los datos de una empresa. Los administradores se aseguran de que la proteccin
de virus adecuada est en su lugar y corran regularmente para analizarlos. Estos
programas tambin tienen que estar actualizados con los ltimos diccionarios de
virus para detectar nuevas amenazas diseadas para infiltrar un sistema y destruir
los datos. Los administradores tambin revisan regularmente que todos los
componentes estn funcionando adecuadamente y realicen anlisis regulares en
el disco rgido para buscar alguna corrupcin.
Retencin de informacin.
Los administradores de bases de datos evitan la prdida de datos haciendo copias
de seguridad regulares del sistema y manteniendo las copias de seguridad en un
lugar seguro. Los sistemas con entradas diarias grandes necesitan copias de
seguridad que son ms frecuentes. Esto evita la prdida de nueva informacin.
Cualquier dato que no est gravado en una cinta o un disco tiene que ser
reingresada manualmente luego de un desastre, tomando tiempo fuera de los
negocios normales, por lo tanto, los administradores deben determinar la
frecuencia de las copias de seguridad basado a los negocios de la empresa y
realiza las copias correspondientemente.
Una vez diseada la BD, es puesta en prctica utilizando productos del DBMS,
procedindose entonces a la creacin de los datos (captura inicial). El DBA
participa en el desarrollo de procedimientos y controles para asegurar la calidad y
la alta integridad de la BD.
Las solicitudes de modificacin son inevitables una vez que el sistema ha entrado
en operacin, pueden aparecer solicitudes de nuevos requerimientos o estos
pueden resultar de una comprensin inadecuada de los mismos. En cualquier
caso, debern efectuarse modificaciones en relacin con toda la comunidad de la
BD, ya que el impacto de tales alteraciones ser resentido por ms de una
aplicacin. En algunos casos, pueden darse modificaciones que presentan efectos
negativos para algunos usuarios; estos casos debern ser tratados esgrimiendo
como argumento los beneficios globales que sern obtenidos de tales
alteraciones.
Documentacin.
En los casos de cadas del sistema se presenta una situacin parecida; los
respaldos son requeridos y habr de verificarse su estructura; formato y escala
para integrarlos a la operacin del sistema.
Aunque el DBA protege los datos, no los procesa. El DBA no es usuario del
sistema, en consecuencia, no administra valores de datos; el DBA administra
actividad de datos. Dado que la BD es un recurso compartido, el DBA debe
proporcionar estndares, guas de accin, procedimientos de control y la
documentacin necesaria para garantizar que los usuarios trabajan en forma
cooperativa y complementaria al procesar datos en la BD.
Debe procurarse siempre que los estndares que sern aplicados beneficien
tambin a los usuarios, privilegiando siempre la optimizacin en la operacin del
DBMS y el apego de las polticas de la empresa.
Entre las alternativas ms utilizadas por el DBA para tratar de resolver o minimizar
este problema se encuentran las siguientes:
Las tcnicas de recuperacin son otra funcin esencial del DBA al administrar la
actividad de datos. A pesar de que el DBMS lleva a cabo una parte del proceso de
recuperacin, los usuarios determinan en forma critica la operatividad de esos
sistemas de proteccin. El DBA debe anticipar fallas y definir procedimientos
estndares de operacin; los usuarios deben saber que hacer cuando el sistema
este cado y que es lo primero que debe realizarse cuando el sistema este puesto
en marcha nuevamente. El personal de operacin deber saber cmo iniciar el
proceso de recuperacin de la BD que copias de seguridad utilizar; como
programar la rejecucin del tiempo perdido y de las tareas pendientes; es
importante tambin establecer un calendario para llevar a cabo estas actividades
sin afectar a otros sistemas dentro de la organizacin que hagan uso de los
mismos recursos de computo. Destacan por su importancia en el proceso de
recuperacin y a su vez en la atencin que prestan a otros sectores de la
organizacin. Los dispositivos de comunicacin remota, los sistemas de
interconexin y otros accesorios de uso compartido.
externo incluir con toda probabilidad los medios para especificar dicha
correspondencia, pero en este caso tambin el esquema y la correspondencia
debern poder separarse con claridad. Cada esquema externo y la
correspondencia asociada existirn en ambas versiones fuentes y objeto. Otros
aspectos de la funcin de enlace con los usuarios incluyen las consultas sobre
diseo de aplicaciones, la impetracin de instruccin tcnica, la ayuda en la
localizacin y resolucin de problemas, y otros servicios profesionales similares
relacionados con el sistema.
o Definir las verificaciones de seguridad e integridad: las verificaciones de
seguridad y de integridad pueden considerarse parte del esquema conceptual.
El DDL conceptual incluir los medios para especificar dichas verificaciones.
o Definir procedimientos de respaldo y recuperacin: cuando una empresa se
decide a utilizar un sistema de base de datos, se vuelve dependiente en grado
sumo del funcionamiento correcto de ese sistema. En caso de que sufra dao
cualquier porcin de la base de datos por causa de un error humano,
digamos, o una falla en el equipo o en el sistema que lo apoya resulta
esencial poder reparar los datos implicados con un mnimo de retraso y
afectando lo menos posible el resto del sistema. En teora, por ejemplo la
disponibilidad de los datos no daados no debera verse afectada. El DBA debe
definir y poner en practica un plan de recuperacin adecuado que incluya, por
ejemplo una descarga o "vaciado" peridico de la base de datos en un medio de
almacenamiento de respaldo, y procedimientos para cargar otra vez la base de
datos a partir de vaciado ms reciente cuando sea necesario.
o Supervisar el desempeo y responder a cambios en los requerimientos: es
responsabilidad del DBA organizar el sistema de modo que se obtenga el
desempeo que sea "mejor para la empresa", y realizar los ajustes apropiados
cuando cambien los requerimientos.
Cuando el fabricante del DBMS en uso anuncie una nueva versin del producto,
debe realizarse un anlisis de las caractersticas que esta incorpora e insopesarlas
contra las necesidades de la comunidad de usuarios. Si se decide la adquisicin
del producto, los usuarios deben ser notificados y capacitados en su uso. El DBA
deber administrar y controlar la migracin tanto de las estructuras, como de los
datos y las aplicaciones.
Anlisis documental.
El anlisis documental es el conjunto de operaciones que representan el contenido
y la forma del documento bajo una forma distinta de la original, para facilitar su
consulta o recuperacin posterior.
Un documento no puede ser registrado en un centro de documentacin en su
forma primaria debido a su extensin, complejidad y presentacin, sino que debe
Todas las operaciones del anlisis documental han de quedar reflejadas en unos
soportes, ya sean estos manuales (catlogos de fichas) o automatizados (bases
de datos on line, catlogos cerrados en CD-ROM...) que forman los registros.
Los niveles de anlisis estn en relacin directa con los elementos que integran el
documento (d = inf. + sop.), el contenido (informacin) y la forma (soporte),
distinguindose as entre anlisis formal o externo y anlisis de contenido e
interno, cada uno con sus propias tcnicas:
Podremos hacer una descripcin fsica basada en las normas ISBD y un anlisis
de contenido superficial a partir de una clasificacin universal o encabezamientos
de materia, propio de los sistemas bibliotecarios de catalogacin y cuya finalidad
primordial es la creacin de un inventario de documentos.
Por el contrario, un sistema documental especializado realiza el anlisis de
contenido basado en la significacin o contexto. Es un autntico anlisis en
profundidad que implica las tcnicas documentales de indizacin y resumen.
indizacin por sus relaciones contextuales. Estos ltimos dan un valor aadido
a los tesauros frente a otro tipo de vocabularios de indizacin ya que permiten
abordar el anlisis del texto desde mltiples puntos de vista, incluso desde el
plano contextual de las asociaciones de ideas que cobran sentido dentro de una
disciplina o investigacin.
Las listas de autoridades o de identificadores son vocabularios alfabticos
independientes que permiten normalizar trminos tales como nombres propios
de personas, instituciones, ttulos de obras, nombres geogrficos o cualquier
otro nombre necesario en la indizacin y que por mltiples razones no es
posible incluir en el tesauro. No olvidemos que segn la especialidad de la base
de datos, necesitaremos diferentes campos complementarios de contenido.
o METODOLOGA DE INDIZACIN.
Tcnica de clustering.
Es un modelo probabilstico que permite las frecuencias de los trminos de
bsqueda en los documentos recuperados. Se atribuyen unos valores (pesos) que
actan como agentes para agrupar los documentos por orden de importancia,
mediante algoritmos ranking.
Tcnicas de stemming.
Morfolgicamente las palabras estn estructuradas en prefijos, sufijos y la raz. La
tcnica de Stemming lo que pretende es eliminar las posibles confusiones
semnticas que se puedan dar en la bsqueda de un concepto, para ello trunca la
palabra y busca solo por la raz.
Algoritmos utilizados para desechar prefijos y sufijos:
Paice/Husk
S-stemmer / n-gramas
Tcnicas lingsticas.
Pretenden acotar de una manera eficaz los documentos relevantes. Por esta
razn, esta tcnica lo consigue mediante una correcta indizacin en el proceso de
tratamiento de los documentos con ayuda de ndices, tesauros, etc.; evitando las
ambigedades lxicas y semnticas a la hora de establecer las consultas.
Internet.
o Revistas Electrnicas.
Buscadores. Los buscadores son herramientas que permiten localizar y
recuperar la informacin almacenada en internet. El funcionamiento es
parecido a las bases de datos, almacenan las pginas con determinadas
caractersticas (metadatos) y que posteriormente tras utilizar unas palabras
clave emiten un listado de las ms relevantes.
o Buscadores Generales.
Recomendados para las bsquedas en las que el usuario no sabe mucho
sobre el tema en concreto, Directorio y motores especializados.
o Metabuscadores.
Son buscadores, con la cualidad de que no slo buscan en una nica base
de datos, sino que al introducir los conceptos de bsqueda hace el barrido en
distintas bases de datos, de esta forma la amplitud de resultados es mayor.
o Buscadores selectivos.
Utilizan una base de datos especializada en una materia.
o Agentes Inteligentes.
Los agentes inteligentes son herramientas que permiten localizar informacin
de forma automtica, slo necesita que se le definan un perfil de bsqueda y
donde debe lanzarla (bases de datos, sitios web, etc.) y, automticamente va
presentando un informe sobre la nueva informacin que va surgiendo.
o ndices.
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 48
ADMINISTRACIN DE BASE DE DATOS
o Componentes:
Descriptores admitidos o preferentes: son aquellos trminos normalizados
(donde han sufrido un proceso de expurgo denegando plurales, evitando
sinnimos, etc.) que el tesauro los considera aptos para asignarlos a un
documento y que posteriormente facilite la recuperacin.
Descriptores no admitidos: son aquellos que aun estando normalizados no
se consideran adecuado para utilizarlos (suelen ser sinnimos, trminos
no utilizados en el campo de actuacin, etc.).
o Relaciones:
Jerrquicas: indican cuando un trmino es ms especfico que otro.
Asociativas: Indican que los trminos guardan alguna relacin.
Sinnimos: Indican que dos trminos son sinnimos y cual de ellos se
utiliza como admitido.
o Lenguajes.
Cada sistema de recuperacin tiene su propio lenguaje de interrogacin, que
es el que le permite "hablar" en el mismo lenguaje que la base de datos. Este
lenguaje como cualquier otro tiene sus propia sintaxis que especifica las
caractersticas especiales de la bsqueda determinando en cada momento la
relacin que tienen los elementos de bsqueda. Las reglas gramaticales en
el lenguaje de interrogacin son los operadores.
No existen pautas que nos indiquen como hacer con exactitud todas las
bsqueda debido a que cada consulta es distinta. Por eso es conveniente
definir un procedimiento bsico de trabajo:
Ecuaciones simples.
Ecuaciones Compuestas.
Operadores.
Y lgico (AND).
NO lgico (NOT).
O lgico (OR).
Cerca (NEAR).
Junto (ADJ).
Frases.
Presencia / Ausencia
Ausencia.
Proximidad.
Por campos.
o Concepto.
La navegacin es el programa que permite consultar y obtener informacin
mediante los sistemas hipertexto.
o Metadatos.
Los metadatos en la navegacin y recuperacin de informacin se utilizan
para detectar informacin relevante de una forma rpida y eficaz. Las
etiquetas describen el contenido del recurso web, que posteriormente utilizan
las herramientas de bsqueda para localizar y acceder al recurso.
Principalmente son las etiquetas de palabra clave y ttulo las que dan paso a
localizar el documento.
o Tcnica de clustering.
Es un modelo probabilstico que permite las frecuencias de los trminos de
bsqueda en los documentos recuperados. Se atribuyen unos valores
(pesos) que actan como agentes para agrupar los documentos por orden de
importancia, mediante algoritmos ranking.
Algoritmo K-means.
COBWEB.
Algoritmo EM.
o Tcnicas de stemming.
Morfolgicamente las palabras estn estructuradas en prefijos, sufijos y la
raz. La tcnica de Stemming lo que pretende es eliminar las posibles
confusiones semnticas que se puedan dar en la bsqueda de un concepto,
para ello trunca la palabra y busca solo por la raz.
Paice/Husk
S-stemmer / n-gramas
Tcnicas lingsticas
Pretenden acotar de una manera eficaz los documentos relevantes. Por esta
razn, esta tcnica lo consigue mediante una correcta indizacin en el
proceso de tratamiento de los documentos con ayuda de ndices, tesauros,
etc.; evitando las ambigedades lxicas y semnticas a la hora de establecer
las consultas.
Calidad de la recuperacin.
Este tipo abarca todos los riesgos asociados con la autorizacin, completitud y
exactitud de la entrada, procesamiento y reportes de las aplicaciones utilizadas
en una organizacin. Estos riesgos aplican en cada aspecto de un sistema de
soporte de procesamiento de negocio y estn presentes en mltiples lugares, y
en mltiples momentos en todas las partes de las aplicaciones; no obstante
estos riesgos se manifiestan en los siguientes componentes de un sistema:
Interface del usuario: Los riesgos en esta rea generalmente se relacionan con
las restricciones, sobre las individualidades de una organizacin y su
autorizacin de ejecutar funciones negocio/sistema; teniendo en cuenta sus
necesidades de trabajo y una razonable segregacin de obligaciones
Seguridad de la Informacin.
La informacin es un recurso que, como el resto de los dems activos
comerciales, tiene valor para una organizacin y por consiguiente debe ser
debidamente protegida.
Caractersticas a cumplir:
- Confidencialidad: se garantiza que la informacin sea accesible slo a
aquellas personas autorizadas a tener acceso a ella.
- Integridad: se salvaguarda la exactitud y totalidad de la informacin y los
mtodos de procesamiento.
- Disponibilidad: se garantiza que los usuarios autorizados tengan acceso a la
informacin y a los recursos relacionados con ella toda vez que se requiera.
Requerimientos de Seguridad.
La gerencia de TIC, debe identificar sus requerimientos de seguridad, para ello
cuenta con tres insumos:
Evaluacin de riesgos
Requisitos legales
Requisitos para el procesamiento de la informacin
Evaluacin de Riesgos.
Proceso, en que se identifican las amenazas a los activos, se evalan las
vulnerabilidades y probabilidades de ocurrencia, y adems se estima el impacto
potencial de una falla de seguridad permite establecer las prioridades para la
administracin de riesgos logrando de esta forma la identificacin, evaluacin,
seleccin y ejecucin de medidas para la tratar los riesgos.
La Metodologa.
La aplicacin de la metodologa, requiere:
1. La documentacin de los procesos que se ejecutan sobre el sistema gestor de
base de datos.
2. Identificar factores de riesgos en estos procesos.
3. Determinar los controles o ausencia de controles actuales que se aplica.
4. Establecer las relaciones de impacto.
La relacin de impacto.
Objetivo - riesgo
Riesgo procesos
Estructura de Riesgos.
Nivel Nivel
Riesgo Descripcion Probabilidad Impacto
Estimado Aceptado
R1 Integridad 2 3 6 2
R2 Disponibilidad 4 2 8 2
R3 Confidencialidad 2 4 8 1
Probabilidad de ocurrencia.
Impacto sobre el objetivo.
Nivel estimado de riesgo.
Nivel acepta de riesgo.
01
componentes del P3 Gestin de componentes de memoria.
sistema gestor de P4 Gestin de grupo de archivos.
base de datos P5 Gestin de ndices.
P6 Gestin de registro de transacciones.
P7 Gestin de usuarios.
P8 Gestin de perfiles.
Gestion de
seguridad lgica del P9 Gestin de roles y privilegios.
02
sistema de gestor P10 Gestin deseguridad de transaccin.
de base de datos
P11 Gestin derepaldo de datos.
Variables.
Im: Impacto del riesgo sobre el objetivo del rea de TIC.
Pr: Probabilidad de materializacin del riesgo.
Re: Riesgo estimado.
Ra: Riesgo aceptado.
Rr: Riesgo residual.
Rg: Riesgo gestionable o por administrar.
Cc: Cobertura de Control.
Ca: Calificacin del control en la revisin.
Ir: Relacin de impacto del riesgo en el objetivo.
Ip: Relacin de impacto del proceso en el riesgo.
If: Relacin de impacto del factor en el proceso.
Ic: Relacin de impacto del control sobre el factor o proceso.
Ec: Efectividad de la cobertura del control.
Ca: Calificacin del control
Frmulas metodolgicas.
1. Re = (Ir * Pr) Riesgo estimado
2. Cc = Re * Ip * If * Ic Cobertura del control
3. Rr = Re Cc Riesgo residual
4. Rg = Rr - Ra Riesgo gestin
En general:
02
TAREA 02: UTILIZAR CLAUSULAS AVANZADAS Y OPTIMIZAR
LAS CONSULTAS A UNA BASE DE DATOS.
OPERACIONES
En esta tarea trataremos las siguientes operaciones:
Insertar en mltiples filas en una tabla.
Utilizar alias en una consulta sql.
Aplicar la sentencia sql join para varias tablas.
Convertir tipos de datos al momento de ejecutar la consulta.
Aplicar instrucciones avanzadas en las consultas a la bd.
Crear funciones en una base de datos.
Equipos y Materiales:
Orden de Ejecucin:
OPERACIONES
Operacin:
2.1. INSERTAR EN MLTIPLES FILAS EN UNA TABLA.
Los ejemplos de esta seccin demuestran mtodos para insertar filas de una tabla
en otra.
NOTA:
Las tablas usadas en estos ejemplos se encuentran en la parte de teora.
La forma ms directa de insertar una fila nueva en una tabla es mediante una
sentencia INSERT. En la forma ms simple de esta sentencia debemos indicar la
tabla a la que queremos aadir filas, y los valores de cada columna. Las columnas
de tipo cadena o fechas deben estar entre comillas sencillas o dobles, para las
columnas numricas esto no es imprescindible, aunque tambin pueden estar
entrecomilladas.
| Pegano | 1993-02-10 |
+---------+------------+
4 rows in set (0.08 sec)
mysql>
Si no necesitamos asignar un valor concreto para alguna columna, podemos
asignarle el valor por defecto indicado para esa columna cuando se cre la tabla,
usando la palabra DEFAULT:
mysql> INSERT INTO ciudad2 VALUES ('Perillo', DEFAULT);
Query OK, 1 row affected (0.03 sec)
En este caso, como habamos definido un valor por defecto para poblacin de
5000, se asignar ese valor para la fila correspondiente a 'Perillo'.
Otra opcin consiste en indicar una lista de columnas para las que se van a
suministrar valores. A las columnas que no se nombren en esa lista se les asigna
el valor por defecto. Este sistema, adems, permite usar cualquier orden en las
columnas, con la ventaja, con respecto a la anterior forma, de que no necesitamos
conocer el orden de las columnas en la tabla para poder insertar datos:
mysql>
Existe otra sintaxis alternativa, que consiste en indicar el valor para cada columna:
mysql>
Una vez ms, a las columnas para las que no indiquemos valores se les asignarn
sus valores por defecto. Tambin podemos hacer esto usando el valor DEFAULT.
Para las sintaxis que lo permiten, podemos observar que cuando se inserta ms
de una fila en una nica sentencia, obtenemos un mensaje desde MySQL que
indica el nmero de filas afectadas, el nmero de filas duplicadas y el nmero de
avisos.
Para que una fila se considere duplicada debe tener el mismo valor que una fila
existente para una clave principal o para una clave nica. En tablas en las que no
exista clave primaria ni ndices de clave nica no tiene sentido hablar de filas
duplicadas. Es ms, en esas tablas es perfectamente posible que existan filas con
los mismos valores para todas las columnas.
Por ejemplo, en mitabla5 tenemos una clave nica sobre la columna 'nombre':
Si intentamos insertar dos filas con el mismo valor de la clave nica se produce un
error y la sentencia no se ejecuta. Pero existe una opcin que podemos usar para
los casos de claves duplicadas: ON DUPLICATE KEY UPDATE. En este caso
podemos indicar a MySQL qu debe hacer si se intenta insertar una fila que ya
existe en la tabla. Las opciones son limitadas: no podemos insertar la nueva fila,
sino nicamente modificar la que ya existe. Por ejemplo, en la tabla 'ciudad3'
podemos usar el ltimo valor de poblacin en caso de repeticin:
mysql> INSERT INTO ciudad3 (nombre, poblacion) VALUES
-> ('Madrid', 7000000);
Query OK, 1 rows affected (0.02 sec)
mysql>
+--------+-----------+
| nombre | poblacion |
+--------+-----------+
| Madrid | 7200000 |
| Pars | 0|
+--------+-----------+
2 rows in set (0.00 sec)
mysql>
Actualizar filas
Podemos modificar valores de las filas de una tabla usando la sentencia UPDATE.
En su forma ms simple, los cambios se aplican a todas las filas, y a las columnas
que especifiquemos.
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]
+---------+-----------+
| nombre | poblacion |
+---------+-----------+
| Berln | 6600000 |
| Londres | 11000000 |
| Madrid | 7920000 |
| Pars | 10120000 |
| Roma | 10450000 |
+---------+-----------+
mysql>
+-------+--------+-----------+
+-------+--------+-----------+
11 | Madrid | 6790000 |
| 12 | Pars | 8730000 |
| 13 | Berln | 3395000 |
| 14 | Roma | 7760000 |
+-------+--------+-----------+
mysql>
Pero no tenemos por qu actualizar todas las filas de la tabla. Podemos limitar el
nmero de filas afectadas de varias formas.
+-------+--------+-----------+
+-------+--------+-----------+
| 11 | Madrid | 6790000 |
| 12 | Pars | 8730000 |
| 13 | Berln | 3395000 |
| 14 | Roma | 7992800 |
+-------+--------+-----------+
mysql>
En este caso slo hemos aumentado la poblacin de las ciudades cuyo nombre
sea 'Roma'. Las condiciones pueden ser ms complejas. Existen muchas
funciones y operadores que se pueden aplicar sobre cualquier tipo de columna, y
tambin podemos usar operadores booleanos como AND u OR. Veremos esto con
ms detalle en otros captulos.
Otra forma de limitar el nmero de filas afectadas es usar la clusula LIMIT. Esta
clusula permite especificar el nmero de filas a modificar:
+-------+--------+-----------+
+-------+--------+-----------+
| 1 | Madrid | 6790000 |
| 2 | Pars | 8730000 |
| 13 | Berln | 3395000 |
| 14 | Roma | 7992800 |
+-------+--------+-----------+
mysql>
Esta clusula se puede combinar con WHERE, de modo que slo las 'n' primeras
filas que cumplan una determinada condicin se modifiquen.
+---------+------------+
| nombre | fecha |
+---------+------------+
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 74
ADMINISTRACIN DE BASE DE DATOS
| Fulano | 1985-04-12 |
| Mengano | 1978-06-15 |
| Tulano | 2000-12-02 |
| Pegano | 1993-02-10 |
+---------+------------+
mysql>
+---------+------------+
| nombre | fecha |
+---------+------------+
| Fulano | 1985-04-12 |
| Mengano | 1978-06-15 |
| Tulano | 2001-12-02 |
| Pegano | 1993-02-10 |
+---------+------------+
mysql>
Cuando exista una clave primaria o nica, se usar ese orden por defecto, si no se
especifica una clusula ORDER BY.
Eliminar filas
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]
mysql>
Pero es ms frecuente que slo queramos eliminar ciertas filas que cumplan
determinadas condiciones. La forma ms normal de hacer esto es usar la clusula
WHERE:
+-------+--------+-----------+
+-------+--------+-----------+
| 1 | Madrid | 6790000 |
| 13 | Berln | 3395000 |
| 14 | Roma | 7992800 |
+-------+--------+-----------+
mysql>
Tambin podemos usar las clusulas LIMIT y ORDER BY del mismo modo que en
la sentencia UPDATE, por ejemplo, para eliminar las dos ciudades con ms
poblacin:
+-------+--------+-----------+
+-------+--------+-----------+
| 13 | Berln | 3395000 |
+-------+--------+-----------+
mysql>
Cuando queremos eliminar todas las filas de una tabla, vimos en el punto anterior
que podamos usar una sentencia DELETE sin condiciones. Sin embargo, existe
una sentencia alternativa, TRUNCATE, que realiza la misma tarea de una forma
mucho ms rpida.
mysql>
Problema:
Creamos la tabla:
Colocamos un alias "Libros de Borges" para la expresin "count(*)" para tener una
salida ms clara:
Otros problemas:
PERSONAS.
Cedula Nombre Primer_Apellido Segundo_Apellido Sexo Direccin Telefono Salario Cedula_Sup Cod_dep
23423445 Ana Mara Betancur Bermudez F Cra 45 11-13 3433444 1,700,000 43890231 2
DEPENDIENTES.
DEPARTAMENTOS.
PROYECTOS.
OPERACIN SELECT
La sintaxis bsica de esta operacin es:
WHERE <condiciones>
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 82
ADMINISTRACIN DE BASE DE DATOS
Ejemplos:
FROM personas
Resultado/
Cedula Nombre
71134534 Juan
12453535 Gloria
75556743 Pedro
43533322 Patricia
78900456 Carlos
SELECT nombre,primer_apellido,segundo_apellido,direccion,telfono
FROM personas
Resultado/
FROM personas
Resultado/
Cedula Nombre
78900456 Carlos
SELECT dependientes.*
Resultado/
SELECT d.*
FROM personas p, dependientes d
Resultado/
Dichas tablas estarn relacionadas entre ellas de alguna forma, a travs de alguna
de sus columnas.
Una clave primaria es una columna con un valor nico para cada registro de una
tabla.
El propsito del JOIN es unir informacin de diferentes tablas, para no tener que
repetir datos en diferentes tablas.
Hasta ahora hemos trabajado con una sola tabla, pero en general, se trabaja con
varias tablas.
Por ejemplo, los datos de nuestra tabla "libros" podran separarse en 2 tablas, una
"libros" y otra "editoriales" que guardar la informacin de las editoriales. En
nuestra tabla "libros" haremos referencia a la editorial colocando un cdigo que la
identifique. Veamos:
Problema:
Por ello, si hacemos referencia a un campo de una tabla que tiene el mismo
nombre que el campo de la otra tabla consultada, debemos especificar a cul tabla
pertenece dicho campo.
Left join.
Problema:
o Para obtener la lista de todas las editoriales y los libros de las mismas, incluso
de las cuales no tenemos libros usamos:
Un "left join" se usa para hacer coincidir registros en una tabla (izquierda) con otra
tabla (derecha), pero, si un valor de la tabla de la izquierda no encuentra
coincidencia en la tabla de la derecha, se genera una fila extra (una por cada valor
no encontrado) con todos los campos seteados a "null".
fila seteada a "null". No hay libros de la editorial "Sudamericana", entonces esa fila
contiene "null" en todos los campos correspondientes a "libros".
Para encontrar los valores de cdigo de la tabla "editoriales" que estn presentes
en la tabla "libros" usamos un "where":
select nombre,titulo
from editoriales as e
left join libros as l
on e.codigo=l.codigoeditorial
where l.codigoeditorial is not null;
Right join.
Problema:
select nombre,titulo
from editoriales as e
left join libros as l
on e.codigo=l.codigoeditorial;
o Esta sentencia busca los nombres de las editoriales que estn presentes en
"libros". Podemos realizar la bsqueda de modo inverso con "right join":
select nombre,titulo
from libros as l
right join editoriales as e
on e.codigo=l.codigoeditorial;
La primera, con "left join", busca valores de "codigo" de la tabla "editoriales" (tabla
de la izquierda) coincidentes con los valores de "codigoeditorial" de la tabla "libros"
(tabla de la derecha). La segunda, con "right join", busca valores de
"codigoeditorial" de la tabla "libros" (tabla de la derecha) coincidentes con los
valores de "codigo" de la tabla "editoriales" (tabla de la izquierda).
cross join.
Problema:
select c.*,p.*
from comidas as c
cross join postres as p;
o Retorna el mismo resultado que un simple "join" sin parte "on", es decir, si
condicin de enlace:
select c.*,p.*
from comidas as c
join postres as p;
o Para obtener el nombre del plato principal, del postre y el precio total de cada
combinacin (men) tipeamos la siguiente sentencia:
select c.nombre,p.nombre,
c.precio+p.precio as total
from comidas as c
cross join postres as p;
select c1.nombre,c1.precio,c2.nombre,c2.precio
from comidas as c1
cross join comidas as c2
where c1.rubro='plato principal' and
c2.rubro='postre';
Note que utilizamos 2 alias para la misma tabla y empleamos un "where" para
combinar el "plato principal" con el "postre".
select c1.nombre,c2.nombre,
c1.precio+c2.precio as total
from comidas as c1
cross join comidas as c2
where c1.rubro='plato principal' and
c2.rubro='postre';
natural join.
Problema:
select titulo,nombre
from libros as l
natural join editoriales as e;
select titulo,nombre
from libros as l
join editoriales as e
on l.codigoeditorial=e.codigoeditorial;
select nombre,titulo
from editoriales as e
natural left join libros as l;
que tiene la misma salida que:
select nombre,titulo
from editoriales as e
left join libros as l
on e.codigoeditorial=l.codigoeditorial;
Hay que tener cuidado con este tipo de "join" porque si ambas tablas tiene ms de
un campo con igual nombre, MySQL no sabr por cual debe realizar la unin.
select l.nombre,e.nombre
from libros as l
natural join editoriales as e;
No hay salida.
Si usamos "natural join", unir las tablas por el campo "codigo", que es el campo
que tienen igual nombre, pero el campo "codigo" de "libros" no hace referencia al
cdigo de la editorial sino al del libro, as que la salida ser errnea:
select l.*,e.*
from libros as l
natural join editoriales as e;
Note que el libro con cdigo "3" de editorial "Planeta" aparece como perteneciente
a la editorial "Paidos" (cdigo 3) porque busc coincidencia del cdigo del libro con
el cdigo de editorial.
Existen otros tipos de "join" adems del simple "join", "left join", "right join", "cross
join" y "natural join". Vemoslos.
"inner join" es igual que "join". Con "inner join", todos los registros no coincidentes
son descartados, slo los coincidentes se muestran en el resultado:
select nombre,titulo
from editoriales as e
inner join libros as l
on e.codigo=l.codigoeditorial;
select nombre,titulo
from editoriales as e
join libros as l
on e.codigo=l.codigoeditorial;
Una biblioteca registra la informacin de sus libros en una tabla llamada "libros",
los datos de sus socios en "socios" y los prstamos en una tabla "prestamos".
create socios(
documento char(8) not null,
nombre varchar(30),
domicilio varchar(30),
primary key (numero)
);
aparece el cdigo del libro pero no sabemos el nombre y tampoco el nombre del
socio sino su documento. Para obtener los datos completos de cada prstamo,
incluyendo esos datos, necesitamos consultar las tres tablas.
select nombre,titulo,fechaprestamo
from prestamos as p
join socios as s
on s.documento=p.documento
join libros as l
on codigolibro=codigo;
Para ver todos los prestamos, incluso los que no encuentran coincidencia en las
otras tablas, usamos:
select nombre,titulo,fechaprestamo
from prestamos as p
left join socios as s
on p.documento=s.documento
left join libros as l
on l.codigo=p.codigolibro;
Podemos ver aquellos prstamos con valor coincidente para "libros" pero para
"socio" con y sin coincidencia:
select nombre,titulo,fechaprestamo
from prestamos as p
left join socios as s
on p.documento=s.documento
join libros as l
on p.codigolibro=l.codigo;
Funciones de conversin
'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));
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;
3)
CREATE TABLE projects
(empno NUMBER, project_name 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;
DECOMPOSE(cadena,CANONICAL)
DECOMPOSE(cadena,COMPATIBILITY) Es valido solamente para caracteres
UNICODE.
SELECT DECOMPOSE ('Chteaux') FROM DUAL;
DECOMPOSE
Resultado: Cha^teaux
hexadecimal
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)
Amount
-------------------
AusDollars10.000,00-
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.
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
----------
-100
TO_DSINTERVAL:
CUANTIFICADOR ALL.
Se utilizar de forma conjunta con una consulta anidada que devuelva ms de un valor y
un operador de comparacin que no sea la igualdad.
Sirve para seleccionar los valores que cumplan una determinada condicin para todos los
valores de la consulta anidada. (No se suele utilizar con igualdad).
EJEMPLO 1:
Nombre de las asignaturas que tengan ms crditos.
SELECT Nombre
FROM ASIGNATURA
WHERE Creditos >= ALL (SELECT Creditos
FROM ASIGNATURA);
Otra forma:
SELECT Nombre
FROM ASIGNATURA
WHERE Creditos = (SELECT MAX(Creditos)
FROM ASIGNATURA);
EJEMPLO 2:
Personas que viven en la ciudad que vive ms gente.
SELECT *
FROM PERSONA
WHERE Ciudad IN (SELECT Ciudad
FROM PERSONA
GROUP BY Ciudad
HAVING COUNT(*) >= ALL (SELECT COUNT(*)
FROM PERSONA
GROUP BY Ciudad));
CUANTIFICADOR ANY.
En conjuncin con una consulta anidada que devuelve varios valores, sirve para
determinar cuando una determinada condicin se verifica para al menos uno de los
valores que devuelve la subconsulta. (No se suele utilizar con desigualdad).
EJEMPLO 1:
Personas que viven en cualquier ciudad excepto en la que vive ms gente.
SELECT *
FROM PERSONA
WHERE Ciudad IN (SELECT Ciudad
FROM PERSONA
GROUP BY Ciudad
HAVING COUNT(*) < ANY (SELECT COUNT(*)
FROM PERSONA
GROUP BY Ciudad));
Ejemplo 1:
select salary
from employees
where employee_id=100;
Ejemplo 2:
Ejemplo 3:
Ejemplo 4:
Ejemplo 5:
Ejemplo 6:
Ejemplo 7:
Ejemplo 8:
Ejemplo 9:
Mostrar todos los empleados cuyo salario sea igual al salario del empleado David
Austin y cuyo cargo sea IT_PROG.
return(result);
[EXCEPTION]
-- Sentencias control de excepcion
END [<fn_name>];
Ejemplo 01:
CREATE OR REPLACE
FUNCTION fn_Obtener_Precio(p_producto VARCHAR2)
RETURN NUMBER
IS
result NUMBER;
BEGIN
SELECT PRECIO INTO result
FROM PRECIOS_PRODUCTOS
WHERE CO_PRODUCTO = p_producto;
return(result);
EXCEPTION
WHEN NO_DATA_FOUND THEN
return 0;
END ;
DECLARE
Valor NUMBER;
BEGIN
Valor := fn_Obtener_Precio('000100');
END;
SELECT CO_PRODUCTO,
DESCRIPCION,
fn_Obtener_Precio(CO_PRODUCTO)
FROM PRODUCTOS;
Ejemplo 02
Crear una funcin para calcular el sueldo total de un empleado pasado como
parmetro. Tenga en cuenta que hay que aadir la comisin (que es un
porcentaje adicional del salario) al salario.
Creamos la tabla
Funcion:
EXECUTE contratar_empleado('P
rimero',1000.00,.07,null);
EXECUTE contratar_empl
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 117
ADMINISTRACIN DE BASE DE DATOS
eado('Segundo',
2000,.10,1);
EXECUTE contratar_empleado(
'Tercero',2300.25,.15,2);
--SELECT * FROM empleados;
CREATE OR REPLACE FUNCTION
obtener_salario(w_cod_emp IN
empleados.cod_emp%TYPE)
RETURN NUMBER IS w_salario_
bruto empleados.salario%TYPE;
BEGIN
SELECT salario*(1+comision) INTO
w_salario_bruto FROM empleados
WHERE cod_emp = w_cod_emp;
RETURN (w_salario_bruto);
END obtener_salario;
/
/* Prueba de funcin desde una instruccin SQL */
SELECT cod_emp,nom_emp,salario,co
mision,obtener_salario(cod_emp) FROM
empleados;
/* Prueba de funcin desde un bloque */
SET serveroutput ON;
BEGIN
DBMS_OUTPUT.PUT_LINE('Probando el
salario de COD_EMP 1 '||' >>>>
'||obtener_salario(1));
END;
/
Ejemplo 03:
Crear una funcin pl/sql que duplica la cantidad recibida como parmetro
BEGIN
return (valor * 2);
END;
/
show errors
var x number;
EXEC :x := duplicador(5);
print x;
Ejemplo 04:
Crear una funcin pl/sql llamada factorial que devuelva el factorial de un nmero,
por ejemplo 5! = 1 * 2 * 3 * 4 * 5 = 120
show errors
var x number;
EXEC :x := factorial(5);
print x;
FUNDAMENTO TERICO:
Podemos insertar en una tabla varias filas con una sola sentencia SELECT INTO
si los valores a insertar se pueden obtener como resultado de una consulta, en
este caso sustituimos la clusula VALUES lista de valores por una sentencia
SELECT como las que hemos visto hasta ahora. Cada fila resultado de la
SELECT forma una lista de valores que son los que se insertan en una nueva fila
de la tabla destino. Es como si tuviesemos una INSERT...VALUES por cada fila
resultado de la sentencia SELECT. La sintaxis es la siguiente:
Hasta ahora hemos trabajado con una sola tabla, pero en general, se trabaja con
varias tablas.
Por ejemplo, los datos de nuestra tabla "libros" podran separarse en 2 tablas, una
"libros" y otra "editoriales" que guardar la informacin de las editoriales. En
nuestra tabla "libros" haremos referencia a la editorial colocando un cdigo que la
identifique. Veamos:
De este modo, evitamos almacenar tantas veces los nombres de las editoriales en
la tabla "libros" y guardamos el nombre en la tabla "editoriales"; para indicar la
editorial de cada libro agregamos un campo referente al cdigo de la editorial en la
tabla "libros" y en "editoriales".
Indicamos el nombre de la tabla luego del "from" ("libros"), unimos esa tabla con
"join" y el nombre de la otra tabla ("editoriales"), luego especificamos la condicin
para enlazarlas con "on", es decir, el campo por el cual se combinarn. "on" hace
coincidir registros de las dos tablas basndose en el valor de algn campo, en
este ejemplo, los cdigos de las editoriales de ambas tablas, el campo
"codigoeditorial" de "libros" y el campo "codigo" de "editoriales" son los que
enlazarn ambas tablas.
left join.
Hemos visto cmo usar registros de una tabla para encontrar registros de otra
tabla, uniendo ambas tablas con "join" y enlazndolas con una condicin "on" en la
cual colocamos el campo en comn. O sea, hacemos un "join" y asociamos
registros de 2 tablas usando el "on", buscando coincidencia en los valores del
campo que tienen en comun ambas tablas.
Un "left join" se usa para hacer coincidir registros en una tabla (izquierda) con otra
tabla (derecha), pero, si un valor de la tabla de la izquierda no encuentra
coincidencia en la tabla de la derecha, se genera una fila extra (una por cada valor
no encontrado) con todos los campos seteados a "null".
La primera sentencia opera as: por cada valor de codigo de "editoriales" busca
coincidencia en la tabla "libros", si no encuentra coincidencia para algn valor,
genera una fila seteada a "null".
Luego del "on" se especifican los campos que se asociarn; no se deben colocar
condiciones en la parte "on" para restringir registros que deberan estar en el
resultado, para ello hay que usar la clusula "where".
Un "left join" puede tener clausula "where" que restringa el resultado de la consulta
considerando solamente los registros que encuentran coincidencia en la tabla de
la derecha:
select e.nombre,l.titulo
from editoriales as e
left join libros as l
on e.codigo=l.codigoeditorial
where l.codigoeditorial is not null;
El anterior "left join" muestra los valores de la tabla "editoriales" que estn
presentes en la tabla de la derecha ("libros").
El anterior "left join" muestra los valores de la tabla "editoriales" que no encuentran
correspondencia en la tabla de la derecha, "libros".
right join.
"right join" opera del mismo modo que "left join" slo que la bsqueda de
coincidencias la realiza de modo inverso, es decir, los roles de las tablas se
invierten, busca coincidencia de valores desde la tabla de la derecha en la tabla de
la izquierda y si un valor de la tabla de la derecha no encuentra coincidencia en la
tabla de la izquierda, se genera una fila extra (una por cada valor no encontrado)
con todos los campos seteados a "null".
select nombre,titulo
from editoriales as e
left join libros as l
on e.codigo=l.codigoeditorial;
select nombre,titulo
from libros as l
right join editoriales as e
on e.codigo=l.codigoeditorial;
cross join.
"cross join" retorna todos los registros de todas las tablas implicadas en la unin,
devuelve el producto cartesiano. No es muy utilizado.
El restaurante quiere combinar los registros de ambas tablas para mostrar los
distintos menes que ofrece. Podemos USAR "cross join":
select c.*,p.*
from comidas as c
cross join postres as p;
select c.*,p.*
from comidas as c
join postres as p;
Podemos organizar la salida del "cross join" para obtener el nombre del plato
principal, del postre y el precio total de cada combinacin (men):
select c.nombre,p.nombre,
c.precio+p.precio as total
from comidas as c
cross join postres as p;
Si los datos de las tablas anteriores ("comidas" y "postres") estuvieran en una sola
tabla con la siguiente estructura:
select c1.nombre,c1.precio,c2.nombre,c2.precio
from comidas as c1
cross join comidas as c2
where c1.rubro='plato principal' and
c2.rubro='postre';
select c1.nombre,c2.nombre,
c1.precio+c2.precio as total
from comidas as c1
cross join comidas as c2
where c1.rubro='plato principal' and
c2.rubro='postre';
natural join.
"natural join" se usa cuando los campos por los cuales se enlazan las tablas tienen
el mismo nombre.
select titulo,nombre
from libros as l
natural join editoriales as e;
select titulo,nombre
from libros as l
join editoriales as e
on l.codigoeditorial=e.codigoeditorial;
select nombre,titulo
from editoriales as e
natural left join libros as l;
select nombre,titulo
from editoriales as e
Es decir, con "natural join" no se coloca la parte "on" que especifica los campos
por los cuales se enlazan las tablas, porque MySQL busca los campos con igual
nombre y enlaza las tablas por ese campo.
Hay que tener cuidado con este tipo de "join" porque si ambas tablas tiene ms de
un campo con igual nombre, MySQL no sabr por cual debe realizar la unin. Por
ejemplo, si el campo "titulo" de la tabla "libros" se llamara "nombre", las tablas
tendran 2 campos con igual nombre ("codigoeditorial" y "nombre").
Otro problema que puede surgir es el siguiente. Tenemos la tabla "libros" con los
siguientes campos: codigo (del libro), titulo, autor y codigoeditorial, y la tabla
"editoriales" con estos campos: codigo (de la editorial) y nombre. Si usamos
"natural join", unir las tablas por el campo "codigo", que es el campo que tienen
igual nombre, pero el campo "codigo" de "libros" no hace referencia al cdigo de la
editorial sino al del libro, as que la salida ser errnea.
Existen otros tipos de "join" adems del simple "join", "left join", "right join", "cross
join" y "natural join". Vemoslos.
"inner join" es igual que "join". Con "inner join", todos los registros no coincidentes
son descartados, slo los coincidentes se muestran en el resultado:
select nombre,titulo
from editoriales as e
inner join libros as l
on e.codigo=l.codigoeditorial;
select nombre,titulo
from editoriales as e
join libros as l
on e.codigo=l.codigoeditorial;
Una biblioteca registra la informacin de sus libros en una tabla llamada "libros",
los datos de sus socios en "socios" y los prstamos en una tabla "prestamos".
create socios(
documento char(8) not null,
nombre varchar(30),
domicilio varchar(30),
primary key (numero)
);
Aparece el cdigo del libro pero no sabemos el nombre y tampoco el nombre del
socio sino su documento. Para obtener los datos completos de cada prstamo,
incluyendo esos datos, necesitamos consultar las tres tablas.
select nombre,titulo,fechaprestamo
from prestamos as p
join socios as s
on s.documento=p.documento
join libros as l
on codigolibro=codigo;
Para ver todos los prestamos, incluso los que no encuentran coincidencia en las
otras tablas, usamos:
select nombre,titulo,fechaprestamo
from prestamos as p
left join socios as s
on p.documento=s.documento
left join libros as l
on l.codigo=p.codigolibro;
Podemos ver aquellos prestamos con valor coincidente para "libros" pero para
"socio" con y sin coincidencia:
select nombre,titulo,fechaprestamo
from prestamos as p
left join socios as s
on p.documento=s.documento
join libros as l
on p.codigolibro=l.codigo;
Un alias puede tener hasta 255 caracteres, acepta todos los caracteres. La
palabra clave "as" es opcional en algunos casos, pero es conveniente usarla. Si el
alias consta de una sola cadena las comillas no son necesarias, pero si contiene
ms de una palabra, es necesario colocarla entre comillas.
Se pueden utilizar alias en las clsulas "group by", "order by", "having". Por
ejemplo:
Los alias sern de suma importancia cuando rescate datos desde el lenguaje PHP
Con una composicin interna slo se obtienen las filas que tienen al menos una
fila de la otra tabla que cumpla la condicin.
Continuando con el artculo anterior, veremos en este las consultas SELECT
combinado columnas de distintas tablas. Este tipo de consultas nos permiten
explotar nuestro almacn de negocio de forma ms efectiva al relacionar datos de
distintas tablas.
Para crear una consulta de datos anexados, siga estos pasos bsicos:
NOTA:
Para obtener ms informacin sobre los tipos de datos y cmo usarlos, vea el
artculo Modificar o cambiar el tipo de datos definido para un campo.
1. Abra la base de datos que contiene los registros que desee anexar.
2. En el grupo Otros de la ficha Crear, haga clic en Diseo de consulta.
todos los campos de cada tabla o consulta. En esta ilustracin se muestra una
tabla tpica en el diseador de consultas.
4. Haga doble clic en los campos que desee anexar. Los campos seleccionados
aparecen en la fila Campo de la cuadrcula de diseo (la seccin inferior del
diseador de consultas).
Para agregar rpidamente todos los campos de una tabla, haga doble clic en el
asterisco (*) que aparece en la parte superior de la lista de campos de tabla. En
esta ilustracin se muestra la cuadrcula de diseo con todos los campos
agregados.
CRITERIOS EFECTO
Devuelve todos los nmeros mayores que 234. Para buscar todos los
> 234
nmeros menores que 234, use < 234.
>= "Daz" Devuelve todos los registros desde Daz hasta el final del alfabeto.
Encuentra todos los registros en los que el contenido exacto del campo no
es exactamente igual a "Alemania". El criterio devolver registros que
Sin "Alemania"
contienen caracteres adems de "Alemania," como "Alemania (euro)" o
"Europa (Alemania)".
Busca todos los registros, salvo los que empiezan por T. Si la base de
Sin "T*" datos usa los caracteres comodn ANSI-92, use el signo de porcentaje (%)
en vez del asterisco (*).
En(Canad,Reino En una lista, busca todos los registros que contengan Canad o Reino
Unido) Unido.
En un campo con el tipo de datos Texto, busca todos los registros que
empiecen por las letras comprendidas entre A y D. Si la base de datos usa
Como "[A-D]*"
el juego de caracteres comodn ANSI-92, use el signo de porcentaje en
vez del asterisco.
Busca todos los registros que incluyan el grupo de letras "ar". Si la base
Como "*ar*" de datos usa el juego de caracteres comodn ANSI-92, use el signo de
porcentaje en vez del asterisco.
Busca todos los registros que empiecen por "Casa" y contengan una
Como "Casa Dewe?" segunda cadena de 5 letras, cuyas cuatro primeras letras son "Dewe" y
cuya ltima letra se desconoce (lo cual viene indicado por el signo de
interrogacin). Si la base de datos usa el juego de caracteres comodn
< Fecha() - 30 Devuelve todas las fechas con una antigedad de ms de 30 das.
Entre Fecha() Y Devuelve todos los registros entre la fecha actual y tres meses a partir de
AgregFecha("M", 3, la fecha actual.
Fecha())
Devuelve todos los registros que contengan un valor nulo (en blanco o sin
Es Nulo
definir).
Devuelve todos los registros que contienen una cadena de longitud cero.
Las cadenas de longitud cero se utilizan cuando es necesario agregar un
valor a un campo obligatorio, pero an no se conoce el valor. Por ejemplo,
""
un campo puede requerir un nmero de fax, pero puede que algunos
clientes no tengan fax. En ese caso, se incluye un par de comillas dobles
sin espacios entre ellas ("") en lugar de un nmero.
O bien,
3. Llegado a este punto, podr optar por anexar los registros de una tabla a otra
tabla de la misma base de datos, o bien, a una tabla de otra base de datos.
NOTA Si desea copiar registros a una nueva tabla, deber usar una consulta
de creacin de tabla.
Tipos de consultas.
No. Tiempo
No. Datos solicitados Consulta SQL registros de
obtenidos ejecucin
Mostrar el nombre de
1 todos los estados SELECT destado FROM Estados; 32 0.047 sec.
registrados.
GROUP BY destado;
select count(cmunicipios)
Mostrar cuantos
from municipios
3 municipios tiene el 1 0.000 sec.
estado de Morelos where estado=(select cestados from estados where
destado = 'morelos');
SELECT COUNT(cmunicipios)
UNION ALL
SELECT COUNT(cmunicipios)
UNION ALL
SELECT COUNT(cmunicipios)
UNION ALL
SELECT COUNT(cmunicipios)
UNION ALL
SELECT COUNT(cmunicipios)
7 Mostrar el nmero de create view sonora as select count(cmunicipios) as 'son' 1 0.033 sec
municipios entre Sonora
from municipios
GROUP BY dAsentamiento;
GROUP BY dmunicipio;
GROUP BY dtipoasentamiento;
SELECT DISTINCT cp
SELECT DISTINCT cp
SELECT dmunicipio
Muestre los municipios FROM Estados, Municipios
18 que se llaman igual que 7 0.016 sec.
el estado WHERE cestados = estado AND destado = dmunicipio
GROUP BY dmunicipio;
SELECT dmunicipio
FROM Municipios
Muestre el municipio con
19 el nombre ms largo WHERE LENGTH(dmunicipio) = 1 0.062 sec.
(SELECT MAX(CHAR_LENGTH(dmunicipio)) FROM
Municipios);
ORDER BY dasentamiento;
Directrices.
Todas las vistas y las funciones definidas por el usuario a las que hace
referencia la funcin deben estar enlazadas con un esquema.
Todos los objetos a los que hace referencia la funcin deben encontrarse en la
misma base de datos que la funcin. Se debe hacer referencia a los objetos
mediante nombres de una o dos partes.
Se debe disponer de permisos REFERENCES en todos los objetos (tablas,
vistas y funciones definidas por el usuario) a los que hace referencia la funcin.
Sintaxis Funciones.
BEGIN
Cuerpo del subprograma PL/SQL;
EXCEPTION
Bloque de excepciones PL/SQL;
END;
Llamadas a funciones.
Realizar lo siguiente:
03
TAREA 03: ELABORAR PROCEDIMIENTOS ALMACENADOS.
OPERACIONES.
En esta tarea trataremos las siguientes operaciones:
Definir la utilidad de un procedimiento almacenado.
Disear procedimientos almacenados simples y complejos.
Administrar los procedimientos almacenados en una bd.
Equipos y Materiales:
Orden de Ejecucin:
OPERACIONES
Operacin:
Ejemplo.
de datos MASTER. Este procedimiento es llamado por una funcin todos los das
a las 00:10 otorgndole como nombre de tabla HYS_"FECHAACTUAL".
Desarrollo de Procedimientos:
Parmetros:
o Se declaran despus del nombre del subprograma en la cabecera PL/SQL
o Transfieren o comunican datos entre el emisor de la llamada y el subprograma.
o Se utilizan como variables locales, pero dependen del modo de transferencia de
parmetros:
Un parmetro IN (valor por defecto) proporciona valores para que un
subprograma los procese.
Un parmetro OUT devuelve un valor al emisor de la llamada.
Un parmetro IN OUT proporciona un valor de entrada, que se puede
devolver (salida) como valor modificado.
Ejemplo:
Ejemplo:
o Utilice variables del host de iSQL*Plus, ejecute QUERY_EMP con variables del
host e imprima las variables del host.
Transferencia de Parmetros:
Ejemplos:
IN OUT IN OUT
Modo por defecto Se debe especificar Se debe especificar
Se transfiere al subprograma;
El valor se transfiere al Se devuelve al entono de
se devuelve al entorno de
subprograma llamada
llamada
El parmetro formal funciona
Variable no inicializada Variable inicializada
como una constante
El parmetro real puede ser un
literal, una expresin, una
Debe ser una variable Debe ser una variable
constante o una variable
inicializada
Se le puede asignar un valor No s e puede asignar un valor No se le puede asignar un
por defecto por defecto valor por defecto
Excepciones Manejadas
Ejemplos:
Excepciones no Manejadas.
Ejemplo:
Eliminacin de Procedimientos.
Puede eliminar un procedimiento que est almacenado en la base de datos.
Sintaxis:
Ejemplo:
DELIMITER //
BEGIN
ELSE
END IF;
END;
Para hacer una llamada al procedimiento almacenado basta con usar la sentencia
call:
FUNDAMENTO TERICO:
Definicin de un Procedimiento.
Un procedimiento es un bloque PL/SQL con nombre que puede aceptar
parmetros (a veces denominados argumentos). Generalmente, un procedimiento
se utiliza para realizar una accin. Tiene una cabecera, una seccin de
declaraciones, una seccin ejecutable y una seccin de manejo de excepciones
opcional. Para llamar a un procedimiento, se utiliza el nombre del procedimiento
en la seccin ejecutable de otro bloque PL/SQL.
Desarrollo de Procedimientos.
Los parmetros reales pueden ser valores literales, variables o expresiones que se
proporcionan en la lista de parmetros de un subprograma llamado. En el segundo
ejemplo, se realiza una llamada a raise_sal, donde la variable emp_id proporciona
el valor de parmetro real para el parmetro formal id y 2000 se proporciona como
el valor de parmetro real para sal. Parmetros reales:
Nota:
Se pueden declarar uno o ms parmetros formales, separndolos entre s
mediante una coma
Ejemplo:
El ejemplo muestra un procedimiento con dos parmetros IN. Al ejecutar esta
primera sentencia en iSQL*Plus se crea el procedimiento raise_salary en la base
de datos. El segundo ejemplo llama a raise_salary y proporciona el primer valor de
parmetro 176 para el identificador de empleado y un aumento del porcentaje del
salario del 10% para el segundo valor de parmetro.
Ejemplo:
En este ejemplo, se crea un procedimiento con parmetros OUT para recuperar
informacin sobre un empleado. El procedimiento acepta el valor 171 para el
identificador de empleado y recupera el nombre y el salario del empleado con
identificador 171 en los dos parmetros OUT. El procedimiento query_emp tiene
tres parmetros formales. Dos de ellos son parmetros OUT que devuelven
valores al entorno de llamada, que se muestra en el recuadro de cdigo situado en
la parte inferior de la transparencia. El procedimiento acepta un valor de
identificador de empleado a travs del parmetro id. Las variables emp_name y
emp_salary se rellenan con la informacin recuperada de la consulta en los dos
parmetros OUT correspondientes.
Si imprime los valores devueltos en variables PL/SQL del bloque de llamada que
se muestra en el segundo bloque de cdigo, las variables contendrn los
siguientes valores:
- emp_name contiene el valor Smith.
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 166
ADMINISTRACIN DE BASE DE DATOS
Si intenta utilizar o leer parmetros OUT dentro del procedimiento que los declara,
Los ejemplos muestran dos formas de visualizar los valores devueltos de los
parmetros OUT.
- La primera tcnica utiliza variables PL/SQL en un bloque annimo para
recuperar los valores del parmetro OUT. El procedimiento
DBMS_OUPUT.PUT_LINE se llama para imprimir los valores que contienen las
variables PL/SQL. SET SERVEROUPUT debe estar en modo ON.
- La segunda tcnica muestra cmo utilizar las variables iSQL*Plus que se crean
con el comando VARIABLE. Las variables iSQL*Plus son externas al bloque
PL/SQL y se conocen como variables ligadas o de host. Para hacer referencia a
variables de host desde un bloque PL/SQL, debe anteponer dos puntos (:) a los
nombres. Para mostrar los valores almacenados en las variables de host, debe
utilizar el comando PRINT de iSQL*Plus seguido del nombre de la variable
iSQL*Plus (sin los dos puntos, ya que no se trata de un comando PL/SQL o un
contexto).
- SQL*Plus o iSQL*Plus
- Oracle Forms y Oracle Reports
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 167
ADMINISTRACIN DE BASE DE DATOS
- Aplicaciones Java y C
El sistema PL/SQL utiliza una tcnica llamada enlace para asociar los valores
proporcionados desde ubicaciones externas a variables PL/SQL o parmetros
declarados en los subprogramas PL/SQL.
Ejemplo:
Con un parmetro IN OUT, puede transferir un valor a un procedimiento que se
puede actualizar. El valor de parmetro real proporcionado desde el entorno de
llamada se puede devolver de las siguientes formas:
- Como el valor original sin cambiar.
- Como un nuevo valor que se define dentro del procedimiento
Nota:
Un parmetro IN OUT funciona como variable inicializada.
Transferencia de Parmetros:
Ejemplos:
Nota:
Debe proporcionar un valor para cada parmetro a menos que se asigne un valor
por defecto al parmetro formal. La especificacin de valores por defecto para
parmetros formales se describe a continuacin.
Nota:
No se pueden asignar valores por defecto a parmetros OUT e IN OUT.
- El primer ejemplo asigna los valores por defecto para cada parmetro.
- El segundo ejemplo ilustra una combinacin de notacin posicional y con
nombre para asignar valores. En este caso, el uso de notacin con nombre se
muestra como ejemplo.
- El ltimo ejemplo utiliza el valor por defecto del parmetro name y el valor
proporcionado para el parmetro loc.
Normalmente, puede utilizar la notacin con nombre para sustituir los valores por
defecto de los parmetros formales. Sin embargo, no se puede saltar la
especificacin de un parmetro real si no se ha proporcionado ningn valor por
defecto para un parmetro formal.
Nota:
Todos los parmetros posicionales se deben anteponer a los parmetros con
nombre en una llamada de subprograma. De lo contrario, recibir un mensaje de
error, como se muestra en el siguiente ejemplo:
Los parmetros OUT o IN OUT deben tener un valor asignado antes de volver al
entorno de llamada. No se pueden asignar valores por defecto a los parmetros
OUT e IN OUT. Para mejorar el rendimiento con parmetros OUT e IN OUT, se
puede utilizar la indicacin del compilador NOCOPY para solicitar la transferencia
por referencia.
Nota:
El uso de NOCOPY se describe ms adelante en este curso.
Excepciones Manejadas.
Cuando se produce una excepcin y sta se maneja, tiene lugar el siguiente flujo
de cdigo:
1. Se produce la excepcin.
2. Se transfiere el control al manejador de excepciones.
3. El bloque se termina.
4. El programa o bloque de llamada se sigue ejecutando como si no hubiera
ocurrido nada.
Excepciones Manejadas:
Ejemplo:
Los dos procedimientos del ejemplo son los siguientes:
Excepciones No Manejadas.
1. Se produce la excepcin.
2. El bloque termina porque no existe ningn manejador de excepciones; se
realiza un rollback de cualquier operacin DML realizada en el procedimiento.
3. La excepcin se propaga a la seccin de excepciones del procedimiento de
llamada.
Excepciones No Manejadas:
Ejemplo:
El ejemplo de cdigo de la transparencia muestra add_department_noex, que no
tiene una seccin de excepciones. En este caso, la excepcin se produce cuando
se agrega el departamento Editing. Debido a la falta de manejo de excepciones en
los subprogramas, no se agrega ningn registro de departamento nuevo a la tabla
DEPARTMENTS. Al ejecutar el procedimiento
create_departments_noex se produce un resultado similar al siguiente:
ORA-06512: at line 1
Eliminacin de Procedimientos.
El cdigo de origen para los subprogramas PL/SQL se almacena en las tablas del
diccionario de datos. Los procedimientos PL/SQL compilados correcta o
EXECUTE.
de datos y a la vez dentro de todas o algunas de las tablas de las bases de datos
del mismo. Para ello podemos utilizar a los Procedimientos almacenados
autocreables que es una forma de generar ciclos redundantes a travs de los
procedimientos almacenados.
Usos.
Ventajas.
El servidor de la base de datos tiene acceso directo a los datos necesarios para
manipular y slo necesita enviar el resultado final al usuario. Los procedimientos
almacenados pueden permitir que la lgica del negocio se encuentre como un API
en la base de datos, que pueden simplificar la gestin de datos y reducir la
necesidad de codificar la lgica en el resto de los programas cliente. Esto puede
reducir la probabilidad de que los datos se corrompan por el uso de programas
clientes defectuosos o errneos. De este modo, el motor de base de datos puede
asegurar la integridad de los datos y su consistencia con la ayuda de
procedimientos almacenados. Algunos afirman que las bases de datos deben ser
utilizadas para el almacenamiento de datos solamente, y que la lgica de negocio
slo debera aplicarse en la capa de negocio de cdigo, a travs de aplicaciones
cliente que deban acceder a los datos. Sin embargo, el uso de procedimientos
almacenados no se opone a la utilizacin de una capa de negocio.
Sintasis:
type:
characteristic:
LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA
}
routine_body:
Estos comandos crean una rutina almacenada. Desde MySQL 5.0.3, para crear
una rutina, es necesario tener el permiso CREATE ROUTINE, y los permisos
ALTER ROUTINE y EXECUTE se asignan automticamente a su creador. Si se
permite logueo binario necesita tambin el permisos SUPER
Por defecto, la rutina se asocia con la base de datos actual. Para asociar la rutina
explcitamente con una base de datos, especifique el nombre como
db_name.sp_name al crearlo.
MySQL permite a las rutinas que contengan comandos DDL (tales como CREATE
y DROP) y comandos de transaccin SQL (como COMMIT). Esto no lo requiere el
estndar, y por lo tanto, es especfico de la implementacin.
Nota:
mysql> delimiter //
mysql> delimiter ;
+------+
| @a |
+------+
|3 |
+------+
mysql> delimiter //
-> //
mysql> delimiter ;
Function: hello
sql_mode:
Utilidades.
Los procedimientos almacenados son muy tiles sobre todo en arquitecturas
cliente/servidor donde hay un servidor muy potente el cual se puede aprovechar
Tanto los parmetros de entrada como los de salida son opcionales. Podemos
tener un procedimiento que no tenga parmetros de entrada, pero s de salida y
viceversa. Como todo buen programador sabe, los parmetros de entrada sirven
para pasarle datos al procedimiento que necesita para llevar a cabo una accin
Tanto los parmetros de entrada como los de salida son opcionales. Podemos
tener un procedimiento que no tenga parmetros de entrada, pero s de salida y
viceversa. Como todo buen programador sabe, los parmetros de entrada sirven
para pasarle datos al procedimiento que necesita para llevar a cabo una accin
determinada. Los parmetros de salida devuelven al programa cliente que ejecut
el procedimiento el resultado del mismo.
Sintaxis.
@f_Naciento datetime,
@email varchar(50)
AS
NSERT INTO CLIENTES (nombre, apellidos, f_nacimiento, email)
VALUES (@nombre, @apellidos, @f_naciento, @email)
Ejemplos.
El siguiente ejemplo muestra un procedimiento almacenado en SQL Server que
inserta un registro en la tabla Inventario:
USE [bd_inventario]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Autor: Yosbany
-- Fecha:
-- Descripcin:
-- =============================================
ALTER PROCEDURE [dbo].[Insertar_Inventario]
--Parmetros de entrada
END
Llamando el procedimiento.
USE [bd_inventario]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Yosbany
-- Fecha:
-- Description:
-- =============================================
ADOStoredProc1->Active=false; // Lo desactivamos
TParameters *parameters = ADOStoredProc1->Parameters;
parameters->Clear();
- Mayor seguridad.
- Mantenimiento ms sencillo.
Cuando las aplicaciones cliente llaman a procedimientos y mantienen las
operaciones de base de datos en la capa de datos, solo deben actualizarse los
cambios de los procesos en la base de datos subyacente. El nivel de aplicacin
permanece independiente y no tiene que tener conocimiento sobre los cambios
realizados en los diseos, las relaciones o los procesos de la base de datos.
- Rendimiento mejorado.
De forma predeterminada, un procedimiento se compila la primera vez que se
ejecuta y crea un plan de ejecucin que vuelve a usarse en posteriores
ejecuciones. Como el procesador de consultas no tiene que crear un nuevo
plan, normalmente necesita menos tiempo para procesar el procedimiento.
Si ha habido cambios importantes en las tablas o datos a los que se hace
referencia en el procedimiento, el plan precompilado podra hacer que el
procedimiento se ejecutara con mayor lentitud. En este caso, volver a crear el
procedimiento y forzar un nuevo plan de ejecucin puede mejorar el rendimiento
- Temporales.
Los procedimientos temporales son una forma de procedimientos definidos por
el usuario. Los procedimientos temporales son iguales que los procedimientos
permanentes salvo porque se almacenan en tempdb. Hay dos tipos de
procedimientos temporales: locales y globales. Se diferencian entre s por los
nombres, la visibilidad y la disponibilidad. Los procedimientos temporales
locales tienen como primer carcter de sus nombres un solo signo de nmero
(#); solo son visibles en la conexin actual del usuario y se eliminan cuando se
cierra la conexin. Los procedimientos temporales globales presentan dos
signos de nmero (##) antes del nombre; son visibles para cualquier usuario
despus de su creacin y se eliminan al final de la ltima sesin en la que se
usa el procedimiento.
- Sistema.
Los procedimientos del sistema se incluyen con SQL Server. Estn
almacenados fsicamente en la base de datos interna y oculta Resource y se
muestran de forma lgica en el esquema sys de cada base de datos definida
por el sistema y por el usuario. Adems, la base de datos msdb tambin
contiene procedimientos almacenados del sistema en el esquema dbo que se
usan para programar alertas y trabajos. Dado que los procedimientos del
sistema empiezan con el prefijo sp_, le recomendamos que no use este prefijo
cuando asigne un nombre a los procedimientos definidos por el usuario. Para
obtener una lista completa de los procedimientos del sistema, vea
Procedimientos almacenados del sistema (Transact-SQL).
SQL Server admite los procedimientos del sistema que proporcionan una
interfaz de SQL Server a los programas externos para varias actividades de
mantenimiento. Estos procedimientos extendidos usan el prefijo xp_. Para
obtener una lista completa de los procedimientos extendidos, vea
Procedimientos almacenados extendidos generales (Transact-SQL).
04
Equipos y Materiales:
Orden de Ejecucin:
OPERACIONES
Operacin:
En general, las sentencias de control utilizables por PL/SQL coinciden con las de
cualquier lenguaje de alto nivel. Sin embargo, existen una serie de funciones
utilizables dentro del cuerpo de un disparador que resultan de gran utilidad. Entre
ellas, vamos a estudiar aqu, las funciones inserting, deleting y updating, y la
funcin RAISE_ERROR_APPLICATION.
Ejemplo.
CREATE OR REPLACE TRIGGER ejemplo
BEFORE INSERT OR UPDATE OR DELETE ON tabla
BEGIN
IF DELETING THEN
Acciones asociadas al borrado
ELSIF INSERTING THEN
Acciones asociadas a la insercin
ELSE
Acciones asociadas a la modificacin
END IF;
END
Funcin RAISE_APPLICATION_ERROR
Dnde: nro_error es un nmero asignado por el usuario que debe estar entre
20000 y -20999 y mensaje es el mensaje que aparecer por pantalla al usuario
cuando se produzca el error.
Ejemplo.
CREATE OR REPLACE TRIGGER ejemplo
BEFORE DELETE ON tabla
FOR EACH ROW
BEGIN
IF tabla.columna= valor_no_borrable THEN
RAISE_APPLICATION_ERROR(-20000, La fila no se puede
borrar);
END IF;
...
END ejemplo;
. Declaracin de variables
Sintaxis:
CREATE...
BEFORE...
[FOR EACH ROW ...]
DECLARE
Declaracin de variables
BEGIN
...
ROWTYPE es el tipo de los registros OLD y NEW. Con esto crearemos una
variable nombre del tipo de la tabla. Para asignar el valor de una columna se
pondr como: nombre.nombrecolumna, de esta forma podremos hacer
asignaciones del tipo nombre.nombrecolumna = :OLD.nombrecolumna)
nombre nombretabla.nombrecolumna%TYPE
Crea una variable nombre del mismo tipo que el de la columna nombrecolumna
de la tabla nombretabla.
Al ejecutar la orden
Los disparadores de sustitucin (INSTEAD OF) slo pueden definirse sobre vistas
en Oracle 8 y se activan en lugar de la orden DML que provoc el disparo. Los
disparadores de sustitucin deben estar a nivel de fila.
Ejemplo.
Tipos.
Ejemplo.
Un sencillo ejemplo (para SQL Server) sera crear un Trigger para insertar un
pedido de algn producto cuando la cantidad de ste, en nuestro almacn, sea
inferior a un valor dado.
END
Disparadores en MySQL.
Disparadores en PostgreSQL.
Ejemplo 2:
AS
DECLARE @descrip VARCHAR(MAX)
SELECT @descrip=Descripcion FROM t_Libro
JOIN inserted
ON inserted.codigolibro=t_Libro.codigo
WHERE t_Libro.codigo=inserted.codigolibro
IF (@descrip >= (SELECT IdAutor FROM inserted ))
UPDATE t_Libro SET Rodaje=Rodaje-inserted.codigolibro
FROM t_Libro
JOIN inserted
ON inserted.codigolibro=t_Libro.codigo
WHERE codigo=t_Libro.codigolibro
ELSE
BEGIN
raiserror ('',10,1)
ROLLBACK TRANSACTION
END
FUNDAMENTO TERICO:
Componentes principales.
DEFINICIONES.
DEFINIR LA IMPORTANCIA DE IMPORTAR Y EXPORTAR DATOS.
EXPORTACIN.
Una vez elegido el objeto(s) a exportar, Microsft Access abre un cuadro de dilogo
en el que hay que seleccionar la carpeta y el nombre del archivo
al que se exportar el objeto(s) seleccionado(s).
Por ltimo hay que elegir el lugar y el nombre del archivo donde sern exportados
los datos.
Si se utiliza el nombre del tipo de datos TEXT sin especificar la longitud opcional
(TEXT(25), por ejemplo), se crea un campo LONGTEXT. Esto permite escribir
instrucciones CREATE TABLE que producirn tipos de datos coherentes con
Microsoft SQL Server.
Los caracteres de los campos definidos como TEXT (tambin conocidos como
MEMO) o CHAR (tambin conocidos como TEXT(n) con una longitud especfica)
se almacenan en el formato de representacin Unicode. Los caracteres Unicode
requieren siempre dos bytes para el almacenamiento de cada carcter. Para las
bases de datos de Microsoft Jet ya existentes que contengan principalmente
datos de tipo carcter, esto puede significar que el tamao del archivo de base
de datos sea casi el doble cuando se convierta al formato Microsoft Jet 4.0. Sin
embargo, la representacin Unicode de muchos juegos de caracteres, antes
denominados juegos de caracteres de un solo byte (SBCS), puede comprimirse
fcilmente a caracteres de un solo byte. Si define una columna CHAR con el
atributo COMPRESSION, los datos se comprimirn automticamente a medida
que se almacenen y se descomprimirn cuando se recuperen de la columna.
Equipos y Materiales:
Computadora con microprocesadores core 2 Duo o de mayor capacidad.
Sistema operativo Windows.
Acceso a internet.
Software de manejo de Base de Datos.
Orden de Ejecucin:
Definir la importancia de importar y exportar datos.
Identificar los tipos de formatos que soporta una bd.
Exportar la informacin de una o ms tablas de una bd.
Importar informacin de un fichero a la base de datos.
OPERACIONES
Para este ejemplo crearemos una BD sencilla para poder trabajar con ella.
PASO 1.
Realizamos los pasos segn el grafico. Darle clic en Ir a Pgina Inicial de Base de
Datos.
PASO 2.
PASO 3.
PASO 4.
Nos desconectamos del usuario system para entrar con el nuevo usuario creado.
PASO 5.
Procedemos a crear las tablas con nuestro nuevo Usuario, para ello damos clic en
Explorador de Objetos, Luego en la pestaa crear y para finalizar en la pestaa
Tabla
Creamos todas las tablas que sean necesarias segn el modelo entidad relacin.
PASO 6.
Cuando ya creemos las respectivas tablas pasamos a llenar los datos en las
distintas tablas, segn el orden corresponda, para no tener problemas con las
llaves forneas
c. Le damos crear, y hacemos lo mismo hasta llenar los datos que necesitamos y
en todas las tablas que necesitamos
PASO 7.
Escribir la siguiente lnea para exportar los datos de la estructura de nuestra Base
de Datos: exp userid=system/manager file="NombreArchivo".dmp
owner="suUsuario"
Verificamos el archivo.
PASO 8.
IMPORTAR.
Nota: antes de ejecutar este comando, se debe crear la cuenta con los privilegios
y roles iguales.
Los tipos de datos soportados por Oracle se agrupan en los siguientes conjuntos.
VARCHAR BLOB
NCHAR CLOB
NVARCHAR2 NLOB
Los valores alfanumricos van encerrados entre comilla simple: 'Alfanumrico' Los
valores numricos son nmero simples: 123 Las fechas van encerradas entre
comillas simples: '1/12/2000' Los valores binarios no pueden ser representados
(son fotos, videos)
Almacena valores numricos en punto flotante que pueden ir desde 1.0 x 10-130
hasta 9.9(38 nueves) 9 x 10125 . El almacenamiento interno de los valores
numricos en notacin cientfica:
Mantisa x 10exponente
Para un tipo de dato DATE, Oracle almacena internamente los siguientes datos:
Siglo
Ao
Mes
Da
Hora
Minuto
Segundo
Dos dgitos para el da Las tres primeras siglas del mes (depende del idioma
instalado). Cuatro dgitos para el ao.
Por ejemplo:
'1-JAN-2001' '2-DEC-1943'
Almacena caracteres de longitud variable hasta 2 Gb. Este tipo de dato se soporta
para compatibilidad con versiones anteriores. En Oracle y siguientes versiones de
debe usar los tipos de datos CLOB y NLOB para almacenar grandes cantidades
de datos alfanumricos.
Representa una direccin de la base de datos, ocupada por una nica fila. El
ROWID de una fila es un identificador nico para una fila dentro de una base de
datos. No hay dos filas con el mismo ROWID. Este tipo de dato sirve para guardar
punteros a filas concretas.
Este comando puede ejecutarse desde SSH (por lo tanto deber tener acceso
mediante SSH)
o bien :
Nota:
Tenga cuidado de no dar ningn fichero existente en este directorio.
Exportar Toda la Base de Datos (XE) y todos sus respectivos esquemas, usuarios
y objetos (archivo.ORA).
Nombre del archivo que se va a generar con la ruta completa, por ejemplo:
c:\epsdistribuida.dmp (dmp es la extensin con la que se debe dejar)
Tipo de exportacin: 1 (Toda la base de datos, ojo que son todos los usuarios
incluyendo el system), 2 (Un usuario) y 3 (Una tablas nada ms). Para este
proceso seleccionar 2
Exportar privilegios: S
Comprimir el archivo: S
Nombre de los de los usuarios a exportar. Solo se van a exportar los objetos del
usuario CAMILO. Si es ms de uno, ir colocndolos y dar, cuando no haya ms.
Basta para ello utilizar la redireccion "<" indicando el fichero dumpo que contenga
la estructura y los datos SQL.
Nota : Para restaurar una base de datos desde cero, es necesario que la base de
datos est creada y vaca__
o bien :
Para ello primero debe instalar oracle 10g en su maquina, como este no es el
tema de este artculo no vamos a mostrar el proceso de instalacin, lo que si es
importante mencionar los siguientes tips:
Primero debemos instalar Oracle 10g, por ejemplo podemos usar el SID o
identificador nico del servicio de Oracle siguiente: UTNDB
A continuacin el primer paso una vez instalado oracle 10g, es crear el 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.
Para crear un tablespace podemos usar sqlplus que viene por defecto en la
instalacin, para ello debemos ingresar a la bdd con el usuario system all
debemos crear el tablespace llamado ACADEMICO ejecutando el siguiente cdigo
a travs sqlplus:
Luego creamos el usuario sobre utndb dentro del tablespace ACADEMICO con
los siguientes permisos:
Las anteriores lineas indican que el usuario utndb tendr acceso a la vista
DBA_USERS del usuario sys, pues en este caso, varios procedimientos de
nuestra aplicacin hacen referencia y uso de esta vista.
que incluya indices, claves foraneas, tablas con campos blob, secuenciasetc
en Oracle
Nombre del archivo que se va a importar con la ruta completa, por ejemplo:
c:\epsdistribuida.dmp.
Ignorar errores: S.
Importar privilegios: S.
FUNDAMENTO TERICO.
Para extraer datos desde una base de datos a un fichero se usa la sentencia
SELECT... INTO OUTFILE.
En cuanto a las opciones de exportacin son las mismas que para las clusulas
FIELDS y LINES de LOAD DATA. Su sintaxis es:
[FIELDS
[TERMINATED BY '\t']
[ESCAPED BY '\\' ]
[LINES
[STARTING BY '']
[TERMINATED BY '\n']
Por ejemplo, para obtener un fichero de texto a partir de la tabla 'gente', con
las columnas delimitadas por ';', entrecomillando las columnas de texto con '"'
y separando cada fila por la secuencia '\r\n', usaremos la siguiente sentecia:
mysql>
"Fulano";"1974-04-12"
"Mengano";"1978-06-15"
"Tulano";"2000-12-02"
"Pegano";"1993-02-10"
"Mengano";\N
La fecha para "Mengano" era NULL, para indicarlo se muestra el valor \N.
[REPLACE | IGNORE]
[FIELDS
[TERMINATED BY '\t']
[ESCAPED BY '\\' ]
[LINES
[STARTING BY '']
[TERMINATED BY '\n']
[(col_name,...)]
Las clusulas REPLACE e IGNORE afectan al modo en que se tratan las filas
ledas que contengan el mismo valor para una clave principal o nica para una fila
existente en la tabla. Si se especifica REPLACE se sustituir la fila actual por la
leda. Si se especifica IGNORE el valor ledo ser ignorado.
La misma utilidad tiene la clusula IGNORE nmero LINES, que nos permite que
las primeras nmero lneas no se interpreten como datos a importar. Es frecuente
que los ficheros de texto que usaremos como fuente de datos contengan algunas
cabeceras que expliquen el contenido del fichero, o que contengan los nombres de
cada columna. Usando esta clusula podemos ignorarlas.
La ltima parte nos permite indicar la columna a la que ser asignada cada una de
las columnas ledas, esto ser til si el orden de las columnas en la tabla no es el
mismo que en el fichero de texto, o si el nmero de columnas es diferente en
ambos.
fecha,nombre
2004-03-15,Xulana
2000-09-09,Con Clase
1998-04-15,Pingrana
Como vemos, hay dos filas al principio que no contienen datos vlidos, las
columnas estn separadas con comas y, como hemos editado el fichero con el
"notepad", las lneas terminan con "\n\r". La sentencia adecuada para leer los
datos es:
-> (fecha,nombre);
mysql>
+-----------+------------+
| nombre | fecha |
+-----------+------------+
| Fulano | 1974-04-12 |
| Mengano | 1978-06-15 |
| Tulano | 2000-12-02 |
| Pegano | 1993-02-10 |
| Mengano | NULL |
| Xulana | 2004-03-15 |
| Pingrana | 1998-04-15 |
+-----------+------------+
mysql>
Estos son los tipos de datos que soporta el SQL de Microsoft Jet versin 4.0
INTEGER1
TINYINT BYTE 1 byte Un nmero entero entre 0 y 255.
INTEGER4
LONGTEXT
LONGCHAR 2 bytes por
MEMO carcter. Desde cero hasta un mximo de 2.14
TEXT
NOTE (Consulte gigabytes.
NTEXT las notas).
TEXT(n)
ALPHANUMERIC
CHARACTER
STRING
VARCHAR
CHARACTER
VARYING 2 bytes por
NCHAR
carcter.
CHAR NATIONAL Desde cero a 255 caracteres.
CHARACTER
(Consulte
NATIONAL CHAR las notas).
NATIONAL
CHARACTER
VARYING
NATIONAL CHAR
VARYING
Una vez dentro del phpMyAdmin, debemos seleccionar la base de datos que
deseamos exportar a un archivo.
Una vez dentro del phpmyadmin, debemos seleccionar la base de datos que
hemos creado y a la cual deseamos importar nuestro archivo.
Nos mostrar la ventana donde nos permite examinar en nuestro disco duro el
archivo de la base de datos. Haga clic en "Examinar", seleccione el archivo y
acepte.
Hecho esto slo nos queda hacer clic en "Continuar" y esperar que se cargue el
archivo. Tardar ms o menos dependiendo del tamao del archivo.