curricula fundacion proydesa: dba oracle 10g (spanish)

427
1 Conceptos iniciales La base de datos provee muchas características útiles y poderosas. Muchas de estas características están incorporadas al nivel de SQL. SQL ha sido adoptado por la mayoría de los sistemas de gestión de base de datos relacionales (RDBMS). ANSI (American National Standards Institute) ha estado perfeccionando estándares del lenguaje SQL en los últimos 20 años. Oracle, como muchas otras compañías, ha adoptado el estándar ANSI de SQL y lo ha extendido para incluir un gran número de funcionalidades adicionales. El desarrollo de software para la gestión de información ha transitado por diferentes etapas, desde implementaciones sobre un sistema de archivos hasta las bases de datos relacionales y relacionales objeto. En la actualidad existen complejos sistemas de gestión de base de datos (DBMS), como Server, los cuales proveen funcionalidades de almacenamiento y acceso eficiente a datos, y diversas otras funcionalidades relacionadas a la gestión integral de datos. Con el advenimiento de la teoría de objetos y la proliferación del paradigma de orientación a objetos como base para el desarrollo de aplicaciones de software, surge en el campo de las bases de datos la necesidad de adaptar un modelo para mapear en forma directa, en la base de datos, los objetos manipulados por la aplicación de software. En este sentido, surgen las bases de datos objeto relacionales (ORDBMS) como una adaptación de las bases de datos relacionales brindando, a través de una capa de objetos, una interfase orientada a objetos que permite almacenar, acceder y recuperar datos objeto. Server, además de continuar dando soporte a la tecnología relacional, también soporta la tecnología objeto relacional brindando todas las funcionalidades necesarias para la gestión de datos objeto. 1.1 Introducción En la figura se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit). Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de: Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit). Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit). Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit). Prácticas: Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Upload: arru83

Post on 26-Jun-2015

1.922 views

Category:

Documents


6 download

DESCRIPTION

Curricula Oracle 10g Proydesa h/cap 6 (Español)

TRANSCRIPT

Page 1: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

1 Conceptos iniciales

   

La base de datos  provee muchas características útiles y poderosas. Muchas de estas características están incorporadas al nivel de SQL. SQL ha sido adoptado por la mayoría de los sistemas de gestión de base de datos relacionales (RDBMS). ANSI (American National Standards Institute) ha estado perfeccionando estándares del lenguaje SQL en los últimos 20 años. Oracle, como muchas otras compañías, ha adoptado el estándar ANSI de SQL y lo ha extendido para incluir un gran número de funcionalidades adicionales.

El desarrollo de software para la gestión de información ha transitado por diferentes etapas, desde implementaciones sobre un sistema de archivos hasta las bases de datos relacionales y relacionales objeto. En la actualidad existen complejos sistemas de gestión de base de datos (DBMS), como  Server, los cuales proveen funcionalidades de almacenamiento y acceso eficiente a datos, y diversas otras funcionalidades relacionadas a la gestión integral de datos.

Con el advenimiento de la teoría de objetos y la proliferación del paradigma de orientación a objetos como base para el desarrollo de aplicaciones de software, surge en el campo de las bases de datos la necesidad de adaptar un modelo para mapear en forma directa, en la base de datos, los objetos manipulados por la aplicación de software. En este sentido, surgen las bases de datos objeto relacionales (ORDBMS) como una adaptación de las bases de datos relacionales brindando, a través de una capa de objetos, una interfase orientada a objetos que permite almacenar, acceder y recuperar datos objeto.  Server, además de continuar dando soporte a la tecnología relacional, también soporta la tecnología objeto relacional brindando todas las funcionalidades necesarias para la gestión de datos objeto.

1.1 Introducción

   

En la figura  se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas: Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 2: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

1.1 Introducción

1.1.1 Objetivos

Esta sección brinda una visión general acerca de una base de datos Oracle cubriendo los aspectos básicos, teóricos y físicos de bases de datos relacionales, implementación Oracle RDBMS y ORDBMS.

También se abordará el modelado de datos, una introducción al lenguaje de consultas SQL y beneficios del lenguaje PL/SQL.

Además se realizará una introducción a iSQL*Plus, que es un entorno utilizado para ejecutar sentencias SQL

Page 3: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

1.1.1

Objetivos

1.1.1.1 Funciones

Funciones de Oracle10g  La versión Oracle10g entrega una infraestructura exhaustiva de alto rendimiento, que incluye:

Escalabilidad de departamentos a ubicaciones e-business de empresa. Arquitectura sólida, fiable, disponible y segura. Un modelo de desarrollo; sencillas opciones de despliegue. Saque provecho del juego de conocimientos actual de una organización en toda la plataforma

Oracle (lo que incluye SQL, PL/SQL, Java y XML) Una interfaz de gestión para todas las aplicaciones Tecnologías estándar de la industria, sin bloqueo propietario

Los tres productos de infraestructura de grid de la versión Oracle10g son:

Base de Datos Oracle 10g Oracle Application Server 10g  Oracle Enterprise Manager 10g Grid Control 

Oracle ofrece una plataforma para Internet exhaustiva y de alto rendimiento para e-commerce y almacenes de datos. La plataforma para Internet de Oracle incluye todo lo necesario para desarrollar, desplegar y gestionar aplicaciones de Internet, incluidas estas tres partes fundamentales:

Clientes basados en explorador para procesar la presentación Servidores de aplicaciones para ejecutar la lógica de negocio y servir la lógica de presentación para

clientes   basados en explorador Bases de datos para ejecutar la lógica de negocio con uso intensivo de base de datos y servir datos.

Oracle ofrece una amplia variedad de las herramientas de desarrollo más avanzadas controladas por GUI (interfaz gráfica de usuario) para crear aplicaciones de negocio, así como una gran serie de aplicaciones de software para muchas áreas de negocio e industria. Oracle Developer Suite incluye herramientas para desarrollar formularios e informes y para crear almacenes de datos. Las funciones, los paquetes y los procedimientos almacenados se pueden escribir mediante SQL, PL/SQL o Java.  La versión Oracle10g contiene la base de datos para la grid. La idea básica de grid computing es la noción de cálculo como un servicio, de forma análoga a la red eléctrica o a la red telefónica.

Como cliente de la red (grid), no se preocupa de dónde están los datos o de dónde se realiza el cálculo. Lo que desea es que el cálculo se realice y que le entreguen la información cuando la necesite. Grid computing

Page 4: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

puede reducir drásticamente el costo del cálculo, ampliar la disponibilidad de los recursos de cálculo y ofrecer una productividad y una calidad más altas.  ¿Qué significa: “Oracle Enterprise Manager 10g Grid Control? Oracle Enterprise Manager 10g Grid Control es la consola completa, integrada y central y el marco subyacente que automatiza las tareas administrativas entre juegos de sistemas en un entorno de grids.

Con Oracle Grid Control, puede agrupar varios nodos de hardware, bases de datos, servidores de aplicaciones y otros destinos en entidades lógicas simples.

1.1 Introducción

1.1.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 5: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 6: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 7: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

1.1 Introducción

1.1.3 Descripción de Base de Datos

Una base de datos es una colección de datos relacionados. Por dato se entiende a un hecho conocido que puede ser almacenado y que posee un significado implícito. Por ejemplo, considere los nombres, números de teléfono y direcciones de un conjunto de personas almacenados en una libreta de direcciones o en una computadora personal. Esto es una colección de datos relacionados con un significado implícito, de esta forma, es una base de datos. La definición precedente es genérica, sin embargo, el uso común del término base de datos es usualmente más restringido. Una base de datos posee las siguientes propiedades implícitas: 

Una base de datos representa algún aspecto del mundo real, algunas veces denominado universo de discurso o dominio de problema. Cambios en el dominio correspondiente son reflejados en la base de datos.

Una base de datos es una colección de datos lógica y coherente con un significado inherente. Una recolección de datos aleatoria no es una base de datos.

Una base de datos es diseñada, construida y cargada con datos para un propósito específico. Existe un grupo de usuarios y un conjunto de aplicaciones preconcebidas en las cuales dichos usuarios están interesados.

En resumen, una base de datos posee alguna fuente a partir de la cual se derivan los datos, algún grado de interacción con el mundo real, y una audiencia que está activamente interesada en los contenidos de la base de datos. Un Sistema de Gestión de Base de Datos (DBMS – Database Management System) es una colección de programas de software que permite crear y mantener una base de datos. De esta forma, el DBMS es un sistema de software de propósito general que facilita el proceso de definir, construir y manipular bases de datos para diferentes aplicaciones.  Definir una base de datos consiste de especificar los tipos de datos, estructuras y restricciones para los datos que serán almacenados en la base de datos. Construir la base de datos es el proceso de almacenar los datos propiamente dichos en un medio de almacenamiento controlado por el DBMS. Manipular una base de datos incluye funciones tales como: consultar la base de datos para recuperar datos específicos, actualizar la base de datos para reflejar cambios ocurridos en el mundo real, y generar reportes a partir de los datos. No es necesario utilizar un software DBMS de propósito general para implementar una base de datos computarizada. Uno podría escribir su propio conjunto de programas para crear y mantener la base de datos, en efecto, creando su propio software DBMS de propósito general. En cualquier caso, ya sea que se utilice un DBMS de propósito general o no, usualmente se emplea una considerable cantidad de software para manipular la base de datos. La base de datos propiamente dicha más el software DBMS conforman un Sistema de Base de Datos    -

Un DBMS proporciona un entorno conveniente y eficiente para ser utilizado al extraer y almacenar información en la base de datos. Un sistema de bases de datos proporciona a los usuarios una vista abstracta de los datos ocultando ciertos detalles de cómo se almacenan y mantienen los datos. Oracle

Page 8: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

10g Server es un software DBMS de propósito general.

La Base de Datos Oracle 10g está diseñada para almacenar y gestionar información de empresa. Permite reducir los costos de gestión y proporciona una alta calidad de servicio. La reducción en los requisitos de configuración y de gestión y el ajuste SQL automático han reducido de forma significativa el costo del mantenimiento del entorno.  La Base de Datos Oracle 10g forma parte de los productos de infraestructura de grid de la versión Oracle 10g. "Grid computing" está relacionado con ver el cálculo como un servicio. Si es un cliente, no necesita saber dónde residen los datos y qué computadora los almacena. Debería ser capaz de solicitar información o cálculos de sus datos y que se los entreguen.  La Base de Datos Oracle 10g gestiona todos sus datos. No se trata simplemente de los datos relacionales de objetos que se pueden esperar que gestione una base de datos de empresa.  También pueden ser datos no estructurados como: 

 Hojas de cálculo   Documentos de Word  Presentaciones de PowerPoint  XML Tipos de datos multimedia como MP3, gráficos, vídeo, etc. 

Ni siquiera es necesario que los datos estén en la base de datos. Base de Datos Oracle 10g dispone de servicios a través de los que puede almacenar metadatos sobre información almacenada en los sistemas de archivos. Puede utilizar el servidor de bases de datos para gestionar y servir información dondequiera que se encuentre.

Page 9: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 10: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

1.1 Introducción

1.1.4 Descripción de Servidor de aplicaciones (IAS)

La arquitectura de bases de datos tradicional cliente/servidor está basada en un modelo de dos capas. Este modelo consiste de una capa cliente y un servidor de bases de datos  . El procesamiento de las tareas y la lógica de aplicación son compartidos entre el servidor de bases de datos y el cliente. Existen muchas desventajas para este modelo. Los clientes en un modelo de dos capas son clientes gruesos, donde se encuentra la mayoría del procesamiento y lógica de aplicación. Esto produce un alto costo de mantenimiento de los clientes. Además, los clientes pueden ser de diferentes plataformas, para lo cual es necesario hacer el deployment (despliegue) de la aplicación para cada plataforma específica. 

Page 11: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

El modelo de tres capas resuelve los problemas del modelo de dos capas. En un modelo de tres capas, existe una capa entre los clientes y el servidor de base de datos  . Esta capa del medio es un servidor de aplicación que contiene el grueso de la lógica de aplicación. Los clientes en este modelo son clientes delgados. Con esta arquitectura, la lógica de aplicación está ubicada en una única capa lo cual facilita el mantenimiento de la misma. Oracle 10g Application Server es un servidor de aplicaciones confiable, escalable, seguro ubicado en la capa del medio (middle-tier). Oracle 10g Application Server brinda una infraestructura que puede crecer en base a las necesidades de la empresa u organización.  Oracle 10g Application Server posibilita a los usuarios implementar aplicaciones mediante una arquitectura de múltiples capas (multitiered). La capa del medio (middle-tier) posee la lógica de la aplicación enviando respuestas a las consultas realizadas por los clientes (normalmente navegadores Web). Una tercera capa (tier) contiene a la base de datos, de esta manera el procesamiento de transacciones en la misma puede ser optimizado. Mediante los servicios que brinda Oracle 10g Application Server se puede dar soporte a las distintas etapas que implica construir un e-business  . 

Oracle Application Server 10g proporciona una plataforma completa de infraestructura para desarrollar y desplegar aplicaciones de empresa, integrando muchas funciones, lo que incluye un entorno de tiempo de ejecución de J2EE y de servicios Web, un portal de empresa, un broker de integración de empresa, inteligencia de negocio, almacenamiento en caché Web y servicios de gestión de identidad.

Oracle Application Server 10g agrega nuevas funciones de grid computing, basándose en el éxito de Oracle9i Application Server, que cuenta con cientos de clientes que utilizan sus aplicaciones de empresa de producción.

Oracle Application Server 10g es el único servidor de aplicaciones que incluye servicios para todas las diferentes aplicaciones de servidores que pueda necesitar utilizar, como: 

o Portales o direcciones Web o Aplicaciones transaccionales Java o Aplicaciones de inteligencia de negocio  

También proporciona integración entre usuarios, aplicaciones y datos en toda la organización. Oracle Corporation asegura la futura compatibilidad con los estándares en evolución al implicar de forma activa a personal clave en los comités de normalización SQL. Los comités aceptados por la industria son ANSI (Instituto Nacional Americano de Normalización) e ISO (Organización Internacional de Normalización).  

Page 12: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 13: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

1.1 Introducción

1.1.5 Descripción de RDBMS y ORDBMS

 

Michael Stonebraker, en el paper "Object-Relational DBMS: The Next Wave," clasifica a las aplicaciones de bases de datos en cuatro tipos: datos simples sin consulta, datos simples con consulta, datos complejos sin consulta, y datos complejos con consultas. Estos cuatro tipos describen sistemas de archivos, DBMSs relacionales, DBMS orientados a objeto, y DBMSs objeto relacionales, respectivamente   .

Page 14: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

Una base de datos relacional está compuesta de muchas relaciones en la forma de tablas de dos dimensiones compuestas por filas y columnas conteniendo tuplas (o registros) relacionadas. Los tipos de consultas que atienden un sistema de gestión de base de datos relacional ( RDBMS ) varían desde simples consultas incluyendo una única tabla de base a consultas complicadas de múltiples tablas incluyendo uniones, anidamiento, diferencia o unión de conjuntos, y otras. 

Oracle 10g Server es un RDBMS que implementa todas las características relacionales más funcionalidades enriquecidas, como ser: commits rápidos, backup y recuperación, conectividad escalable, bloque a nivel de filas, consistencia de lectura, particionamiento de tablas, paralelización de consultas, bases de datos en cluster, exportación e importación de datos, entre otras.

La principal desventaja de bases de datos relacionales ocurre debido a su inhabilidad de manejar áreas de aplicación como bases de datos espaciales (ej.: CAD), aplicaciones que manipulan imágenes, y otros tipos de aplicaciones que incluyen la interrelación compleja de datos.

La ambición de representar objetos complejos ha provocado el desarrollo de sistemas orientados a objeto incluyendo características de orientación a objeto, tales como: tipos de dato abstractos y encapsulamiento (la estructura internad de los datos es ocultada y las operaciones externas pueden ser invocadas sobre el objeto especificado), herencia (tendiendo a la reutilización de definiciones existentes para crear nuevos objetos), etc. Una base de datos orientada a objetos emplea un modelo de datos que soporta características de orientación a objeto y tipos de datos abstractos.

Bases de datos orientadas a objeto utilizan el poderío de los lenguajes de programación orientados a objeto para proporcionar capacidades de programación de base de datos. Un sistema de gestión de base datos orientado a objetos ( OODBMS ) implementa un modelo de objeto, estandarizado por ODMG (Object Database Management Group), que consiste de tipos de dato, constructores de tipo, etc., similar al modelo estándar para bases de datos relacionales.

La principal desventaja de ODBMS es la mala performance en la manipulación y acceso a datos. No como en RDBMS, la optimización de consultas en OODBMS es altamente compleja. OODBMS también sufren problemas de escalabilidad, y no son capaces de soportar sistemas de gran escala.

El principal objetivo de un ORDBMS es brindar los beneficios tanto del modelo relacional como del modelo de objetos, tales como: escalabilidad y soporte de tipos de dato enriquecidos. ORDBMSs emplean un modelo de datos que incorpora características de orientación a objeto en RDBMSs. Toda la información es almacenada en tablas, pero algunas de las entradas tabulares en la base de datos pueden poseer estructuras de datos enriquecidas o complejas (tipos de dato abstractos). Un ORDBMS soporta una forma extendida de SQL. Las extensiones son necesarias debido a que ORDBMS dan soporte a tipos de dato abstractos.

Oracle 10g Server es un ORDBMS, el mismo implementa un sistema de tipos objeto como una extensión al modelo relacional. La interfase tipo objeto brindada por Oracle 10g Server continúa dando soporte a la funcionalidad de base de datos relacional y, además, SQL y otras varias interfases de programación, incluyendo PL/SQL, Java, OCI ( Oracle Call Interface), etc., han sido enriquecidas con nuevas extensiones para dar soporte a objetos. El resultado es un modelo objeto relacional, el cual es intuitivo y ofrece la riqueza de una interfase objeto, al mismo tiempo que preserva la concurrencia y el rendimiento de una base de datos relacional   .

Oracle Server soporta los modelos relacional y relacional de objetos. Oracle Server amplía las capacidades de creación de modelos de datos para soportar una base de datos relacional de objetos que proporciona una programación orientada a objetos, tipos de datos complejos, objetos de negocio complejos y compatibilidad plena con el mundo relacional. Incluye diversas funciones para un rendimiento y una funcionalidad superiores de aplicaciones OLTP (procesamiento de transacciones online), como un mejor uso compartido de estructuras de datos de tiempo de ejecución, mayores cachés de buffer y restricciones diferibles.  Las aplicaciones de almacenes de datos se aprovechan de mejoras como la ejecución paralela de operaciones de inserción, actualización y supresión; partición; y optimización de consultas compatible con ejecución paralela. Al operar dentro del marco de NCA (arquitectura de cálculo de red), el modelo Oracle soporta las aplicaciones de cliente/servidor y basadas en Web que se distribuyen y son de varias capas.  Para obtener más información sobre los modelos relacional y relacional de objetos, consulte el manual Database Concepts.  

Page 15: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

Mediante SQL, se puede comunicar con Oracle Server. SQL tiene las siguientes ventajas:   Eficaz. Fácil de aprender y utilizar.

Completo funcionalmente (Con SQL, se pueden definir, recuperar y manipular datos de las tablas.) .

Page 16: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

1.1 Introducción

1.1.6 Tipos de datos que gestiona una BD Oracle

Oracle 10g Server gestiona todo tipo de datos, desde datos de empresa (datos que modelan entidades del mundo real, o datos objeto) hasta datos semiestructurados y no estructurados. Como datos no estructurados se clasifican a imágenes, videos, archivos de sonido, etc. La categoría de datos semiestructurados abarca al mundo XML, donde se utiliza marcación de datos para dar cierto grado de “estructura” o autodescribir a los datos en sí mismos. Tanto los datos no estructurados como los semiestructurados pueden ser almacenados dentro de la base de datos o fuera de la misma. Oracle 10g Server provee servicios de base de datos para gestionar y servir datos almacenados fuera de la base datos, ya sea disponibles a través de la web, almacenados en el sistema de archivos local o remoto, o en cualquier otro medio de almacenamiento secundario. Por otro lado, Oracle 10g Server soporta en su totalidad el modelado de datos de empresa, o datos estructurados. Dentro de esta última clasificación se encuentra al conjunto de tipos de dato predefinidos incluidos en la base de datos, y a los tipos objeto  .  Cuando se crea una tabla para almacenar datos en la base de datos, es necesario especificar un tipo de dato para cada una de las columnas definidas. Oracle 10g Server posee varios tipos de datos predefinidos para satisfacer los requerimientos de una aplicación. Oracle 10g Server también soporta tipos de dato ANSI y DB2. Los tipos de dato predefinidos en Oracle pueden ser clasificados de manera genérica en caracteres, numéricos, long y raw, fecha y hora, objetos largos, y row ID. Los tipos de dato predefinidos y su utilización son tratados más adelante   .  Tipos objeto Oracle son tipos de datos definidos por el usuario que hacen posible modelar entidades complejas del mundo real, tales como clientes y órdenes de compra, como entidades unitarias (“objetos”) en la base de datos. Un tipo objeto es una clase de tipo de dato. Los mismos pueden utilizarse de la misma manera en que se trata a los tipos de dato más familiares, como VARCHAR2 y NUMBER. Por ejemplo, es posible definir un tipo objeto como el tipo de dato en una columna de una tabla relacional. La tecnología de objetos que incluye Oracle 10g Server es un nivel de abstracción construido sobre tecnología relacional Oracle. Nuevos tipos objeto pueden ser creados desde cualquier tipo de dato predefinido o tipo objeto previamente definido. Los metadatos de los tipos definidos por el usuario son almacenados en un esquema que se encuentra disponible para SQL, PL/SQL, Java, y otras interfases de publicación.

Page 17: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

1.1 Introducción

1.1.7 Modelo de Datos

Una característica fundamental de una base de datos es que la misma provee un nivel de abstracción de datos ocultando detalles acerca del almacenamiento de datos que no son necesarios para la mayoría de los usuarios de base de datos. Dicha abstracción es provista a través de un modelo de datos  .

Un modelo de datos es una colección de conceptos que pueden ser utilizados para describir la estructura de una base de datos. La estructura de una base de datos está conformada por los tipos de datos, las relaciones entre los datos, y las restricciones que existen sobre los datos. La mayoría de los modelos de datos también incluyen un conjunto de operaciones básicas para especificar recuperaciones y actualizaciones realizadas sobre la base de datos.

EL objetivo es generar un modelo que se amolde a muchos de estos usos, resulte comprensible para el usuario final y contenga suficientes detalles para que un desarrollador cree un sistema de base de datos.

Page 18: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

1.1 Introducción

1.1.8 Categorías de Modelos de Datos

Los modelos de datos existentes pueden ser categorizados de acuerdo a los tipos de conceptos que utilizan para describir la estructura de la base de datos.

Modelos de datos conceptuales o de alto nivel: Proveen conceptos cercanos a la forma en que la mayoría de los usuarios perciben los datos.

Modelos de datos físicos o de bajo nivel: Proveen conceptos que describen cómo se almacenan los datos en el medio de almacenamiento. Dichos conceptos generalmente son comprendidos y manejados por usuarios administradores de base de datos, y no por usuarios finales.

Modelos de datos representacionales o de implementación: Proveen conceptos que pueden ser entendidos por usuarios finales pero y que a la vez son cercanos a la forma en que los datos están organizados en la computadora. Dichos modelos ocultan algunos detalles acerca del almacenamiento de datos pero pueden ser implementados en un sistema de computación de forma directa.

Modelos de datos conceptuales utilizan conceptos tales como: entidades, atributos y relaciones. Modelos de datos físicos representan información en la forma de formatos de registros, ordenamiento de registros, y caminos de acceso. Un camino de acceso es una estructura que hace eficiente la búsqueda de registros particulares en una base de datos.

Modelos de datos representacionales o de implementación son los modelos utilizados frecuentemente por los DBMSs comerciales tradicionales, tales como: Oracle 10g Server  . Esta categoría incluye a los modelos de datos relacionales, ampliamente utilizados en la actualidad, y a los modelos de datos legados o heredados utilizados en el pasado (modelo de datos de red y modelo de datos jerárquico)  . Este tipo de modelo representa datos utilizando estructuras de registros y, de esta forma, generalmente son denominados modelos de datos basados en registros.

Page 19: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

1.1 Introducción

Page 20: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

1.1.9 El modelo Entidad – Relación

El modelo entidad relación (ER) es un modelo de datos conceptual de alto nivel. Este modelo, y sus extensiones, frecuentemente es utilizado para el diseño conceptual de aplicaciones de base de datos, y muchas herramientas de diseño de base de datos emplean sus conceptos. El modelo ER datos como entidades, son relaciones entre entidades y atributos. El objeto básico que el modelo ER representa es una entidad, la cual es una “cosa” del mundo real con existencia independiente. Una entidad puede ser un objeto con existencia física (una persona determinada, un auto, una casa, un empleado), o puede ser un objeto con una existencia conceptual (una compañía, un trabajo, un curso universitario). Cada entidad posee atributos; propiedades de interés que describen a la entidad.  Por ejemplo, una entidad empleado puede ser descrita por su apellido y nombre, edad, dirección, salario y tarea realizada. Una entidad particular poseerá un valor para cada uno de sus atributos  . Los valores de los atributos que describen cada entidad se tornan la mayor parte de los datos que son almacenados en una base de datos. Una base de datos normalmente contiene grupos de entidades que son similares. Por ejemplo, una compañía que posee cientos de empleados puede desear almacenar información similar para cada uno de sus empleados. Estas entidades “empleado” comparten el mismo conjunto de atributos, pero cada entidad posee sus propios valores para cada atributo. Un tipo entidad define una colección (o conjunto) de entidades que poseen los mismos atributos. Cada tipo entidad en la base de datos es descrita por su nombre y atributos. La colección de todas las entidades de un tipo entidad particular en la base de datos en un momento determinado es denominado conjunto de entidades, usualmente citado por el mismo nombre del tipo entidad correspondiente  .  Por ejemplo, EMPLEADO se refiere tanto a un tipo de entidad como al conjunto de todos los empleados almacenados en la base de datos. Una relación entre dos o más entidades representa una interacción entre las entidades. Existen varias relaciones implícitas entre tipos entidad. Una relación existe cuando un atributo de un tipo entidad hace referencia a otro tipo entidad. Por ejemplo, el atributo MANAGER del tipo entidad DEPARTMENT hace referencia al empleado que gerencia el departamento en cuestión. Un tipo relación entre tipos entidad define un conjunto de asociaciones (conjunto de relaciones) entre entidades de esos tipos  . Como ocurre con tipos entidad y conjuntos de entidades, un tipo relación y su correspondiente conjunto de relaciones son citados por el mismo nombre. Informalmente, cada relación perteneciente al conjunto de relaciones es una asociación de entidades, donde la asociación incluye una entidad de cada uno de los tipos entidad participantes.  Dichas relaciones instancias representan el hecho que las entidades participantes están relacionadas en alguna forma en el dominio de problema correspondiente. Por ejemplo, la relación WORKS_FOR entre los tipo entidad EMPLOYEE y DEPARTMENT asocia cada empleado con el departamento en el cual el mismo trabaja.

Page 21: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 22: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

1.1 Introducción

1.1.10 El modelo de Datos Relacional

El modelo de datos relacional utiliza el concepto de relación matemática, la cual puede representarse como una tabla de valores como su bloque de construcción básico.  Dicho modelo se basa en la teoría de conjuntos y la lógica de predicados de primer orden, y sus principales características son la simplicidad y su fundamentación matemática. Oracle 10g Server es un sistema de base de datos comercial que provee una implementación de este modelo  -  . El modelo relacional representa la base de datos como una colección de relaciones, donde cada relación se asemeja a una tabla de valores o archivo plano de registros.  Cuando una relación es pensada como una tabla de valores, cada fila en la tabla representa una colección de valores de datos relacionados.  En el modelo de datos relacional, cada fila en la tabla representa un hecho que corresponde a una entidad o relación en el mundo real. El nombre de la tabla y el nombre de las columnas son utilizados para facilitar la interpretación del significado de los valores en cada fila de la tabla. Por ejemplo, la tabla EMPLOYEE es denominada de esta manera ya que cada fila representa hechos acerca de una entidad empleado en particular. Los nombres de columnas especifican cómo interpretar los valores de datos en cada fila de acuerdo a la columna a la cual cada valor pertenece. Todos los valores en una columna son del mismo tipo de dato. En la terminología formal del modelo relacional, una fila es denominada una tupla, un encabezado de columna es denominado un atributo, y una tabla es denominada una relación. El tipo de dato describiendo los tipos de valores que pueden aparecer en cada columna es denominado dominio.

Page 23: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 24: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

1.1 Introducción

1.1.11 Elementos que componen una Tabla

La terminología utilizada en el modelo relacional es la siguiente: Tabla: La tabla es la estructura de almacenamiento básica en un Sistema de Administración de Base de Datos Relacional (RDBMS).Los datos de las tablas se almacenan en filas y columnas. Cada tabla se define con un nombre de tabla que la identifica unívocamente y un conjunto de columnas. Una vez que se crea una tabla, se le pueden insertar filas de datos válidos. Las filas de las tablas pueden ser consultadas, borradas o actualizadas.

 Columna: Una columna representa un tipo de datos en una tabla (por ejemplo, el nombre del cliente en la tabla Clientes). Una columna también puede ser referenciada como “atributo”. Cada columna tiene un nombre de columna, un tipo de dato (tal como CHAR, DATE o NUMBER), y un ancho (que puede ser predeterminado por el tipo de dato, como en el caso de DATE) o una escala y precisión (sólo para el tipo de dato NUMBER).Todos los valores de una columna determinada tienen el mismo tipo de datos, y éstos están extraídos de un conjunto de valores legales llamado el dominio de la columna. Las columnas de una tabla están dispuestas en un orden específico de izquierda a derecha. Sin embargo, el orden de éstas cuando se almacenan datos no es significativo, pero puede ser especificado cuando se los recupera.

 Fila: Una fila es una combinación de valores de columnas de una tabla (por ejemplo, la información acerca de un cliente en la tabla Clientes). Una fila a menudo se denomina “tupla” o “registro”. Cada tabla tiene cero o más filas, conteniendo cada una un único valor en cada columna. Las filas están desordenadas; por defecto, los datos están dispuestos de acuerdo a cómo se insertaron.

 Campo: Un campo se encuentra en la intersección de una fila y una columna. El campo puede contener datos. Si no hay datos en el campo, se dice que contiene un valor nulo. Los valores de los campos no se pueden descomponer en componentes más pequeños.

 Clave primaria: Una clave primaria es una columna o conjunto de columnas que identifican unívocamente cada fila de una tabla (por ejemplo, un número de cliente). Una tabla tiene una única clave primaria y debe contener un valor.

 Clave foránea: Una clave foránea es una columna o conjunto de columnas que se refieren a una clave primaria de la misma tabla o de otra. Se crean estas claves para reforzar las reglas de diseño de la base de datos relacional. Una tabla puede contener más de una clave foránea. Una combinación clave primaria/clave foránea crea una relación padre/hijo entre las tablas que las contienen. Las figuras  y    muestran gráficamente lo expresado anteriormente.

Page 25: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

1.1 Introducción

1.1.12 El Lenguaje de Consulta Estructurada (SQL)

Diseñado e implementado originariamente por IBM, SQL (Structured Query Language) es actualmente el lenguaje estándar para bases de datos relacionales comerciales. Esfuerzos de estandarización llevados a cabo por ANSI (American National Standard Institute) e ISO (International Standards Organization) han producido diferentes versiones estándar de SQL  . 

SQL es un lenguaje de base de datos integral   ; el mismo posee sentencias para la definición, consulta y actualización de datos. Adicionalmente, el mismo posee facilidades para definir vistas de base de datos, especificar restricciones de seguridad y definir el acceso a datos, definir restricciones de integridad, y para especificar el control de transacciones.

SQL utiliza los términos tabla, fila y columna para relación, tupla y atributo, respectivamente.

SQL es flexible y eficiente, con características que han sido diseñadas para la manipulación de datos facilitando el acceso y la actualización de bases de datos relacionales. Por ejemplo, la siguiente sentencia SQL borra de la base de datos todos los empleados que pertenecen al departamento numero 90:

DELETE FROM employees

WHERE department_id = 90;

SQL es un lenguaje de cuarta generación (declarativo), lo cual significa que una sentencia del lenguaje describe lo que quiere realizarse, pero no en la manera en que debe llevarse a cabo. En la sentencia DELETE mostrada anteriormente, por ejemplo, no es posible dilucidar de qué modo determinará la base de datos cuáles son los empleados que pertenecen al departamento número 90 (empleados que se eliminarán de la base de datos). Probablemente, el servidor Oracle recorrerá el conjunto de todos los empleados en un cierto orden para determinar los elementos que deben borrarse, pero en ningún momento se explicita cómo realizar dicha operación.

Todas las operaciones realizadas sobre la información en una base de datos Oracle son ejecutadas utilizando sentencias SQL. Una sentencia SQL es una cadena de caracteres SQL. Sólo una sentencia SQL completa puede ser ejecutada satisfactoriamente. Al ejecutarse un fragmento de sentencia se genera un error indicando que se requiere más texto  .

 

Page 26: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 27: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

1.1 Introducción

1.1.13 Diferencias con PL/SQL

Teniendo en cuenta que SQL es un lenguaje de cuarta generación (4GL) y que los lenguajes de tercera generación, como C y COBOL, son de naturaleza más procedimental. Un programa escrito en un lenguaje de tercera generación (3GL) implementa un algoritmo paso a paso para resolver el problema  .

Tanto los lenguajes 3GL como los 4GL tienen sus ventajas y desventajas. Los lenguajes 4GL como SQL son, por regla general, bastante simples (comparados con los de 3GL) y tienen menos sentencias. Asimismo, aíslan al usuario de los algoritmos y estructuras de datos subyacentes. En algunos casos, sin embargo, las estructuras procedimentales disponibles en los lenguajes 3GL resultan útiles para expresar un determinado programa. Y aquí es donde entra el PL/SQL, que combina la potencia y flexibilidad de un lenguaje de SQL (un 4GL) con las estructuras procedimentales de un 3GL.

PL/SQL significa Procedural Language/SQL (Lenguaje Procedimental/SQL). Como su propio nombre indica, PL/SQL amplía la funcionalidad de SQL añadiendo estructuras de las que pueden encontrarse en otros lenguajes procedimentales, como:

Variables y tipos (tanto predefinidos como definidos por el usuario) Estructuras de control, como bucles y órdenes IF-THEN-ELSE Procedimientos y funciones Tipos de objetos y métodos (en PL/SQL versión 8 o superior)

Las construcciones procedimentales están perfectamente integradas con Oracle SQL, lo que da como resultado un lenguaje potente y estructurado, combinando la flexibilidad de SQL con la potencia y configurabilidad de un 3GL. Por ejemplo si se quiere actualizar el salario del empleado número 250 y de no existirse lo insertará como un nuevo empleado   . 

Trabajando con Oracle 10g Server, es posible extender la funcionalidad del lenguaje SQL a través de funciones PL/SQL definidas por el usuario  . Utilizando funciones PL/SQL en sentencias SQL es posible:

Incrementar la productividad brindada al usuario extendiendo el lenguaje SQL. Mejora la expresividad del lenguaje SQL para tareas complejas o no posibles en SQL.

Mejorar la eficiencia de consultas. Funciones utilizadas en la cláusula WHERE de una consulta pueden filtrar datos utilizando criterios que, de otra forma, deberían ser evaluados por la aplicación.

Manipular cadenas de caracteres para representar tipos de datos especiales.Por ejemplo: latitud, longitud, temperatura, etc. 

Proveer ejecución de consultas en paralelo. Si la consulta es paralelizada, sentencias SQL en la función PL/SQL pueden también ser ejecutadas en paralelo (utilizando la opción de consulta en paralelo).

Page 28: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 29: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

1.1 Introducción

1.1.14 Tipos de sentencias SQL

  

 Sentencias SQL se dividen en las siguientes categorías   :

Sentencias de Lenguaje de Definición de Datos (DDL – Data Definition Language): crean, modifican y eliminan objetos de la base de datos (por ejemplo: CREATE, ALTER, DROP, RENAME).

Sentencias de Lenguaje de Manipulación de Datos (DML – Data Manipulation Language): insertan, modifican, eliminan y consultan filas de tablas de la base de datos (INSERT, UPDATE, DELETE, SELECT).

Sentencias de Lenguaje de Control de Datos (DCL – Data Control Language): permiten dar o restringir derechos de acceso a la base de datos y a objetos específicos dentro de la base de datos (GRANT, REVOKE).

Sentencias de Control de Transacciones: manejan los cambios hechos por los comandos del lenguaje de manipulación de datos. Los cambios a los datos pueden ser agrupados en transacciones lógicas (COMMIT, ROLLBACK, SAVEPOINT).

Sentencias de Control de Sesión: permiten que un usuario controle las propiedades de la sesión corriente, incluyendo la posibilidad de habilitar o deshabilitar roles, y cambiar la configuración del lenguaje (ALTER SESSION, SET ROLE).

Sentencias de Control de Sistema: cambian las propiedades de una instancia de Oracle 10g Server. Permiten cambiar diferentes parámetros de configuración, tal como el número mínimo de servidores compartidos, matar una sesión determinada y ejecutar otras tareas (ALTER SYSTEM, ALTER SESSION, etc.).

Sentencias de SQL embebido: permite la incorporación de sentencias DDL, DML y de control de transacciones en un programa escrito en lenguaje procedural (OPEN, CLOSE, FETCH, EXECUTE, etc.). 

Page 30: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

1.1 Introducción

1.1.15 Preguntas de Repaso sobre plataforma Oracle

  Laboratorio 1.1.15

Preguntas de repaso sobre la Plataforma Oracle

1.1 Introducción

1.1.16 AP: Modelado Entidad – Relación

  Laboratorio 1.1.16

Modelado Entidad - Relación

Modelado de datos. Diagrama Entidad – Relación. Claves, relaciones y cardinalidad de datos.

Duración Estimada: 40 min.

1.1 Introducción

1.1.17 Síntesis

Oracle surge de la teoría de bases de datos relacionales, concebida por E. F. Codd en la década del ´50, y extiende tales conceptos en una amplia gama de direcciones, tales como: data warehousing, procesamiento de transacciones en línea y soporte de aplicaciones web. 

El desarrollo de software para la gestión de información ha transitado diferentes alternativas en los últimos años.

Page 31: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

 Primeramente, el software que se utilizó para el almacenamiento y la recuperación de datos se basó en sistemas de archivos como medio de almacenamiento. Dicha solución requiere que el programador de aplicaciones defina cómo se almacena y cómo se recupera la información, utilizando un lenguaje de programación, tal como COBOL.  Luego surgieron las bases de datos en red y las bases de datos jerárquicas, tecnología que quedó en desuso debido a su incapacidad de base para brindar eficiencia y flexibilidad al gestionar grandes volúmenes de información.  Como cuarto paradigma de base de datos, basado en una teoría matemática formalizada, aparecen las bases de datos relacionales; paradigma que ganó rápidamente el mercado de gestión de datos y que evolucionó brindando acceso a datos rápido, flexible y seguro.  Debido a su fuerte basamento matemático, la tecnología relacional permitió, y continúa permitiendo, el desarrollo de mecanismos de optimización que se utilizan tanto en el acceso a datos como en la actualización de los mismos.  Sin duda, el auge de las bases de datos relacionales se debe a la adopción de un lenguaje estándar universal, SQL, lo que brinda ventajas de integración, estandarización y eficiencia, a la vez que posibilita el acceso a datos de manera rápida y sencilla.  Oracle 10g Server provee muchas características útiles y poderosas, muchas de las cuales están incorporadas al nivel de SQL. Además, Oracle 10g Server posee un lenguaje procedural interno a la base de datos que posibilita la extensión de SQL.  Este tema abordó conceptos de bases de datos relacionales y objeto relacionales, introdujo el lenguaje de consulta estructurado estándar SQL, señaló las diferencias que este último posee para con un lenguaje procedural (como PL/SQL), y profundizó en los modelos de datos.

Page 32: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 33: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 34: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 35: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 36: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 37: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 38: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2 Bloque de consulta básico

   

En una base de datos relacional los datos son almacenados en estructuras de almacenamiento o tablas. Las dos operaciones básicas a llevar a cabo sobre una base de datos relacional son la recuperación o el acceso a los datos almacenados, y el almacenamiento en sí o actualización de datos, ya sea: inserción, eliminación o modificación de datos. En una base de datos relacional, tanto para la recuperación de datos como para la actualización de los mismos, se utiliza el lenguaje SQL. La sentencia del lenguaje utilizada para la recuperación de datos a partir de la base de datos es la sentencia SELECT. SQL posee diversos operadores que pueden ser utilizados al escribir una consulta SQL, o SELECT. La sentencia SELECT, además, posee cláusulas que permiten restringir y ordenar el conjunto resultado, lo que permite presentar el resultado de una consulta según el formato requerido por el usuario final de la base de datos. SQL también provee la facilidad de invocar funciones, programas que reciben argumentos y calculan o retornan un valor en la sentencia SELECT. La invocación de funciones brinda mayor flexibilidad y potencia al lenguaje, a la vez que provee un mecanismo de extensión. Los datos en una base de datos relacional se almacenan en diferentes tablas, y dichas tablas se encuentran relacionadas por valores en común. Utilizando la sentencia SELECT, es posible escribir consultas que unen dos o más tablas relacionadas y presentan la información de manera unificada. 

Además del acceso a datos almacenados en diferentes tablas, en SQL es posible agregar o agrupar datos según valores comunes, lo que permite calcular valores sumarizados a nivel de grupo de filas. La sentencia SELECT posee una cláusula para especificar el agrupamiento de datos, y existen diferentes funciones de grupo para llevar a cabo cálculos a nivel de grupo.

Esta lección trata también el entorno iSQL*Plus, en el que se pueden ejecutar sentencias SQL.

2.1 Escritura de sentencias SQL SELECT Básicas

   

En la figura    se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 39: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.1 Escritura de sentencias SQL SELECT Básicas

2.1.1 Objetivos

En esta sub-unidad se presenta la sentencia SELECT del lenguaje de consulta estructurado SQL en su forma más primitiva, abordando también los operadores aritméticos, de concatenación y conceptos complementarios aplicables a dicha sentencia.

2.1 Escritura de sentencias SQL SELECT Básicas

2.1.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 40: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 41: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 42: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.1 Escritura de sentencias SQL SELECT Básicas

2.1.3 Descripción de la Sentencia SELECT

La herramienta fundamental de SQL es la sentencia SELECT, que permite seleccionar registros desde las tablas de la base de datos, devolviendo aquellos que cumplan las condiciones establecidas y pudiendo presentar el resultado en el orden deseado  .

Capacidades de las Sentencias SELECT de SQL

Proyección: Seleccione las columnas de una tabla que se ha devuelto mediante una consulta. Selección: Seleccione las filas de una tabla que se han devuelto mediante una consulta.

Unión: Junte datos almacenados en diferentes tablas especificando el enlace que hay entre ellos  .

Page 43: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.1 Escritura de sentencias SQL SELECT Básicas

2.1.4 Sintaxis de la Sentencia SELECT

 

En la figura  se muestra la sintaxis completa de la sentencia SELECT.

La sentencia SELECT permite recuperar de las tablas todas o un subconjunto de columnas especificadas por el usuario. Si se escribe *  , se seleccionarán todas las columnas. Si se desea seleccionar sólo algunas columnas de la tabla, se deben indicar los nombres de cada una de ellas, separadas por una coma  .

En su forma básica, una sentencia SELCT debe contener:

Una cláusula SELECT.

Una cláusiula FROM, que identifica la tabla que contiene las columnas que se muestran en la cláusula SELECT.

Page 44: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 45: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.1 Escritura de sentencias SQL SELECT Básicas

2.1.5 Escrituras de Sentencias SQL

A continuación se detallan algunas reglas para crear sentencias válidas, fáciles de interpretar

Las sentencias SQL no son sensibles a mayúsculas/minúsculas. (a menos que se indique que lo sean).

Las sentencias SQL se pueden introducir en una o en varias líneas. Las palabras clave no se pueden dividir en líneas ni se pueden abreviar. Las cláusulas se suelen colocar en líneas aparte para facilitar su lectura y su edición. Se deben utilizar sangrados para facilitar la lectura del código.

Las palabras clave se suelen introducir en mayúsculas; el resto de palabras, como nombres y columnas, se introduce en minúsculas.

2.1 Escritura de sentencias SQL SELECT Básicas

2.1.6 Utilidad de alias

El alias de columna renombra un encabezamiento de columna. Se especifica después de la columna en la lista SELECT con un espacio en blanco de separación . Por defecto, los encabezamieros alias aparecerán en mayúsculas.

Si el alias contiene espacios, caracteres especiales (como # o $) o es sensible a mayúsculas y minúsculas, se debe encerrar el alias entre comillas dobles (“ ”)  .

Se puede incluir la palabra clave AS delante del alias con el fin de cumplir con el estándar ANSI SQL 92.

2.1 Escritura de sentencias SQL SELECT Básicas

2.1.7 Operadores aritméticos

Page 46: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

Una expresión aritmética puede contener nombres de columnas, valores numéricos constantes y operadores aritméticos. 

Se pueden usar los operadores aritméticos en cualquier sentencia de SQL excepto en la cláusula FROM. Precedencia de Operadores

La multiplicación y la división tienen prioridad sobre la suma y la resta. Los operadores de la misma prioridad se evalúan de izquierda a derecha.

Los paréntesis pueden ser usados para cambiar la prioridad de evaluación y para clarificar las sentencias

Page 47: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.1 Escritura de sentencias SQL SELECT Básicas

2.1.8 Operador de concatenación

 

El operador de concatenación está representado por dos barras verticales ( || ). Se utiliza para vincular columnas con otras columnas, expresiones aritméticas o valores constantes. Como resultado de la concatenación se obtiene una columna que es una expresión de tipo caracter.

Cadenas de Literales

Un literal es un caracter, un número o una fecha que se ha incluido en la lista SELECT. Se imprime con cada fila devuelta.

Los literales de fecha y de caracteres deben ir entre comillas simples (' '); los literales de números no es necesario que vayan entre comillas.     Operador de Comillas (q) Alternativo El operador (q) se utiliza para seleccionar un delimitador propio. 

Page 48: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 49: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.1 Escritura de sentencias SQL SELECT Básicas

2.1.9 La palabra clave DISTINCT

A menos que se especifique de otra manera, SQL*Plus o ISQL*Plus muestran los resultados de una consulta sin eliminar las filas duplicadas. Para eliminar las filas duplicadas en el resultado, se debe incluir la palabra clave DISTINCT en la cláusula SELECT inmediatamente después del comando.DISTINCT se aplica a todas las columnas de la lista de la cláusula SELECT. Si hay varias columnas en la cláusula SELECT, el resultado de aplicar DISTINCT representa las diferentes combinaciones de las columnas.

Page 50: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.1 Escritura de sentencias SQL SELECT Básicas

2.1.10 El valor NULO

Si una fila carece de un valor para una columna en particular, se dice que contiene un “null”. NULL es un valor inaccesible, sin valor, desconocido o inaplicable. No representa ni un cero ni un espacio en blanco. El cero es un número y el espacio es un carácter. Las columnas de cualquier tipo de datos pueden contener valores nulos, a menos que hayan sido definidas como NOT NULL o como clave primaria (PRIMARY KEY) cuando se creó la tabla. Todos los operadores (exceptuando el de concatenación) retornan NULL cuando se les da un operando nulo. Valores Nulos en Expresiones AritméticasSi en una expresión, cualquier valor de una columna es nulo, el resultado también lo es. Por ejemplo, si se intenta ejecutar una división por cero, se obtendrá un error. Sin embargo, si se divide por un valor nulo, el resultado es nulo.

Page 51: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.1 Escritura de sentencias SQL SELECT Básicas

Page 52: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.1.11 Interacción de SQL e iSQL*Plus

SQL es un lenguaje de comandos para la comunicación con Oracle Server desde cualquier herramienta o aplicación. Oracle SQL contiene muchas extensiones.

 iSQL*Plus es una herramienta de Oracle que reconoce y envía sentencias SQL a Oracle Server para su ejecución y contiene su propio lenguaje de comandos. 

Funciones de SQL

Lo pueden utilizar diferentes usuarios, incluidos los que tengan poca o ninguna experiencia en programación

Es un lenguaje no procedural Es un lenguaje basado en el inglés

Funciones de iSQL*Plus

Se accede a él desde un explorador Acepta sentencias SQL Proporciona edición online para modificar sentencias SQL Controla los valores de entorno Formatea los resultados de las consultas en informes básicos Accede a bases de datos locales y remotas 

Sentencias SQL frente a Comandos de iSQL*Plus SQL:

Un lenguaje Estándar ANSI Las palabras clave no se pueden abreviar Las sentencias manipulan datos y definiciones de tablas en la base de datos

iSQL*Plus Un entorno Propietario de Oracle Las palabras clave se pueden abreviar Los comandos no permiten la manipulación de valores en la base de datos Se ejecuta en un explorador

Se carga centralmente; no es necesaria su implementación en cada máquina

Page 53: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.1 Escritura de sentencias SQL SELECT Básicas

2.1.12 Visión General de iSQL*Plus

Conexión a iSQL*Plus  Para conectarse desde un entorno de explorador:

1. Inicie el explorador. 2. Introduzca la dirección URL del entorno iSQL*Plus. 3. En la página Login, introduzca valores adecuados en los campos Username, Password y Connect

Identifier. 

Entorno iSQL*Plus

En el explorador, la página iSQL*Plus Workspace tiene varias áreas clave:

1. Cuadro de texto: Área en la que se escriben las sentencias SQL y los comandos de iSQL*Plus 2. Botón Execute: Haga clic en este botón para ejecutar las sentencias y los comandos del cuadro de

texto 3. Botón Load Script: Abre un formulario en el que puede identificar una ruta de acceso y un nombre

de archivo o una dirección URL que contiene comandos de SQL, PL/SQL o L*Plus para cargarlos en el cuadro de texto 

4. Botón Save Script: Guarda el contenido del cuadro de texto en un archivo   5. Botón Cancel: Detiene la ejecución del comando del cuadro de texto 6. Botón Clear Screen: Haga clic en este botón para limpiar el texto del cuadro de texto 7. Icono Logout: Haga clic en este icono para dar por terminada la sesión de iSQL*Plus y volver a la

página iSQL*Plus Login 8. Icono Preferences: Haga clic en este icono para cambiar la configuración de la interfaz, la

configuración del sistema o la contraseña 9. Icono Help: Proporciona acceso a la documentación de ayuda de iSQL*Plus 

Visualización de la Estructura de Tablas

El comando DESCRIBE muestra la estructura de una tabla  .  

Interacción con Archivos de Comandos

Page 54: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

 Puede guardar comandos y sentencias desde el cuadro de texto en iSQL*Plus a un archivo de comandos de texto del modo siguiente:

1. Escriba la sentencia SQL en el cuadro de texto en iSQL*Plus. 2. Haga clic en el botón Save Script. Se abrirá el recuadro de diálogo Windows File Save. Identifique el

nombre del archivo. La extensión por defecto será .uix. Puede cambiar el tipo de archivo a un archivo de texto o guardarlo como archivo .sql.   .

Puede recuperar un scripts guardado como .sql

Haga clic en el botón Load Script. Se abrirá un formulario desde el que puede escribir el nombre del archivo o una dirección URL que contenga los comandos de SQL, PL/SQL o SQL*Plus que desee introducir en el cuadro de texto.

Page 55: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 56: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.1 Escritura de sentencias SQL SELECT Básicas

2.1.13 AP: Utilización de la sentencia SELECT

  Laboratorio 2.1.13

Utilización de la sentencia SELECT

Utilización de la sentencia SELECT mediante operadores aritméticos y de concatenación. Aplicación de alias de columnas y eliminación de filas duplicadas.

 

Duración Estimada: 40 min.

2.1 Escritura de sentencias SQL SELECT Básicas

Page 57: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.1.14 AI: Selección de campos en la consulta

Teniendo en cuenta la tabla base JOBS donde se encuentran los distintos cargos que puede ocupar un empleado de la empresa, arrastre la/s opción/es hasta la posición correcta que crea necesaria/s para completar la sentencia SELECT y así obtener el resultado que se muestra a continuación.  

Teniendo en cuenta la tabla base LOCATIONS donde se encuentran las direcciones de los departamentos de la empresa, seleccione la/s sentencias SELECT que considere correcta/s para obtener el resultado que se muestra a continuación. .

2.1 Escritura de sentencias SQL SELECT Básicas

2.1.15 AI: Utilización de DISTINCT

Teniendo en cuenta la tabla base EMPLOYEES donde se encuentran los datos de todos los empleados de la empresa, seleccione la sentencia SELECT que considere correcta para obtener el resultado que se muestra a continuación.

Page 58: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 59: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.1 Escritura de sentencias SQL SELECT Básicas

2.1.16 Síntesis

Datos almacenados en una base de datos Oracle 10g son gestionados y accesados utilizando SQL. Una sentencia SELECT es utilizada para consultar datos a partir de una tabla o vista. 

En este tema se abordaron fundamentos de SQL, incluyendo tipos de dato y operadores. Los tipos de dato CHAR y VARCHAR2 son utilizados para almacenar información alfanumérica. El tipo de dato NUMBER es utilizado para almacenar valores numéricos. Valores tipo fecha pueden ser almacenados utilizando el tipo de dato DATE. 

Oracle 10g Server posee una amplia gama de operadores: aritméticos, de concatenación, de conjuntos, de comparación, de inclusión, lógicos, de comparación de patrones, de rangos, y de verificación de existencia y nulidad.

2.2 Restricción y ordenamiento de datos

   

En la figura    se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 60: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 61: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.2 Restricción y ordenamiento de datos

2.2.1 Objetivos

En este tema se verá cómo, a través de sentencias SQL, es posible limitar la información recuperada especificando criterios, y cómo visualizar los resultados en un orden específico. Para restringir el conjunto resultado se utilizan condiciones de comparación o condiciones lógicas.

2.2 Restricción y ordenamiento de datos

2.2.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 62: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.2 Restricción y ordenamiento de datos

2.2.3 Descripción de la cláusula WHERE

Se pueden restringir las filas recuperadas usando la cláusula WHERE. Una cláusula WHERE contiene una condición lógica, la cual usa operadores de comparación. Las filas procesadas son aquellas en que los datos que contienen satisfacen la/s condición/es lógicas. 

Page 63: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 64: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.2 Restricción y ordenamiento de datos

2.2.4 Sintaxis de la cláusula WHERE

 

En la figura    se muestra la sintaxis de la sentencia SELECT con la cláusula WHERE, la cual se ubica a continuación de la cláusula FROM. Se pueden usar nombres de columnas o expresiones en la cláusula WHERE, pero no alias de columnas.

Page 65: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

No es necesario incluir los nombres de columnas en la cláusula SELECT para poder usarlos en la cláusula WHERE.

2.2 Restricción y ordenamiento de datos

2.2.5 Condiciones de comparación

 

Los operadores de comparación se emplean en la cláusula WHERE para comparar una expresión con otra. El resultado de la comparación puede ser TRUE, FALSE, o UNKNOWN. En la figura  se muestra la sintaxis del uso de operadores dentro de la cláusula WHERE, en la figura   -   se listan los operadores de comparación y se presentan ejemplos.  A menudo es más fácil encontrar las filas que no cumplen una condición, que aquellas que sí lo hacen. La negación de algunos operadores se muestra en la figura  .

Operador LIKE

No siempre se conoce el valor exacto a buscar. Se pueden seleccionar filas que coincidan con un patrón de caracteres usando el operador LIKE. La operación de coincidencia se conoce como una búsqueda que incluye comodines. Se pueden utilizar dos símbolos para construir la búsqueda: % : Representa cualquier secuencia de cero o más caracteres_ : Denota un solo caracter Cuando se necesita una coincidencia exacta para los comodines “%” y “_”, se usa la opción ESCAPE. Dicha opción especifica cuál es el caracter ESCAPE. El operador LIKE se puede usar como una abreviatura para algunas comparaciones BETWEEN. .

Operadores IS NULL e IS NOT NULL

Los operadores IS NULL e IS NOT NULL testean valores que son nulos. Si se comparan valores nulos usando los otros operadores (=, >, etc.) el resultado será siempre FALSO porque un valor nulo no puede ser igual, mayor, distinto, etc. a otro valor. 

Page 66: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 67: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 68: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.2 Restricción y ordenamiento de datos

2.2.6 Condiciones lógicas

 

Un operador lógico combina los resultados de dos condiciones para producir un único resultado basado en ellos, o invertir el resultado de una condición. La tabla siguiente lista los operadores lógicos.   

Consultas de Datos con Condiciones Múltiples

Page 69: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

Se pueden especificar criterios complejos combinando varias condiciones. Los operadores AND y OR se pueden usar para componer expresiones lógicas. El operador AND retorna VERDADERO si ambas condiciones evaluadas son VERDADERAS, mientras que el operador OR retorna VERDADERO si alguna de las condiciones es VERDADERA. En los ejemplos de la figura   y  , las condiciones son las mismas pero el operador es distinto. El resultado obtenido en cada caso será muy diferente.

Page 70: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.2 Restricción y ordenamiento de datos

2.2.7 Descripción de la cláusula ORDER BY

 

El orden de las filas recuperadas por el resultado de una consulta es indefinido. Oracle 10g Server no puede buscar y traer las filas en el mismo orden para una consulta ejecutada dos veces. La cláusula ORDER BY puede ser utilizada para ordenar las filas. Si se usa, se ubica como la última cláusula en el comando SELECT. Se puede usar un alias de columna en la cláusula ORDER BY.

Ordenamiento de los Datos por Defecto

El orden por defecto es ascendente: Los valores numéricos se muestran con el valor más bajo en primer lugar, por ejemplo 1 a 999. Los valores de fecha se muestran con el valor más temprano en primer lugar, por ejemplo 01-01-

1992 antes que 01-01-1995. Los valores de caracteres se muestran en orden alfabético, por ejemplo primero la A y último la

Z. En Oracle 10g, los valores nulos se muestran últimos en las secuencias ascendentes y primeros

en las secuencias descendentes.

Si no se utiliza la cláusula ORDER BY, el orden no se define y Oracle Server puede no recuperar las filas en el mismo orden para la misma consulta dos veces. Utilice la cláusula ORDER BY para mostrar las filas en un orden específico.

Page 71: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 72: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.2 Restricción y ordenamiento de datos

2.2.8 Sintaxis de la cláusula ORDER BY

En la figura se muestra la sintaxis de la sentencia SELECT con la cláusula ORDER BY.

Es posible utilizar esta sentencia para presentar los datos de una tabla de diferentes maneras en cuanto al orden en que se muestran sus filas.

Para invertir el orden de recuperación de las filas, se especifica el comando DESC después del nombre de la columna en la cláusula ORDER BY. 

Otro método para ordenar el resultado de una consulta es por posición. Dicho método es útil específicamente cuando se ordena por una expresión larga. En vez de tipearla nuevamente, se puede especificar su posición en la lista SELECT.

Se puede ordenar el resultado de una consulta por más de una columna. El límite es la cantidad de columnas de la tabla. En la cláusula ORDER BY se especifican los nombres de las columnas separados por comas . Si se desea invertir el orden de una columna, se especifica DESC después de su nombre o posición.

IMPORTANTE : Se puede ordenar por columnas que no se encuentran en la lista SELECT.

Page 73: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 74: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.2 Restricción y ordenamiento de datos

2.2.9 Reglas de precedencia

 

Se pueden combinar los operadores AND y OR en la misma expresión lógica. Los resultados de todas las condiciones se combinan en el orden determinado por la precedencia de los operadores conectores. Cuando los operadores tienen igual precedencia, se ejecutan de izquierda a derecha. En la figura se indican los niveles de precedencia entre los operadores.

Page 75: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

 Cuando se usa negación de expresiones, los operadores de comparación también se evalúan primero. Para modificar las reglas de precedencia se deben utilizar paréntesis. Cada vez que se presenten dudas acerca de qué operación será ejecutada primero al evaluar una expresión, se debe usar paréntesis para clarificar la sentencia. Con iSQL*Plus, puede crear informes que pidan a los usuarios que suministren sus propios valores para restringir el rango de datos devueltos por variables de sustitución. Una variable se puede considerar un contenedor en el que los valores se almacenan temporalmente. Al ejecutarse la sentencia, el valor se sustituye.  Al ejecutar un informe, los usuarios a menudo desean restringir los datos que se devuelven dinámicamente. iSQL*Plus suministra esta flexibilidad con variables de usuario.  Uso del Comando DEFINE En iSQL*Plus, puede utilizar las variables de sustitución ampersand simple (&) para almacenar valores temporalmente. Puede predefinir variables mediante el comando DEFINE de iSQL*Plus. DEFINE crea y asigna un valor a una variable. iSQL*Plus almacena el valor que se suministra mediante el comando DEFINE; lo vuelve a utilizar siempre que se haga referencia al nombre de variable.

2.2 Restricción y ordenamiento de datos

Page 76: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.2.10 AP: Utilización del BETWEEN, IN, LIKE y NULL

  Laboratorio 2.2.10

Utilización de BETWEEN, IN, LIKE y NULL.

Restricción de filas recuperadas y ordenamineto de los resultados mostrados.

Duración Estimada: 30 min.

2.2 Restricción y ordenamiento de datos

2.2.11 AI: Restricciones AND, OR, NOT

 

Arrastre la/s opción/es hasta la posición correcta que crea necesaria/s para completar la sentencia

SELECT que muestre el código de departamento, el nombre donde el código de ubicación sea igual a

1700 y que tengan un director en dicho departamento, ordenando el resultado en forma descendente

por el código de departamento.

 

Arrastre la/s opción/es hasta la posición correcta que crea necesaria/s para completar la sentencia

SELECT que muestre el apellido, nombre y cargo que ocupan los empleados que pertenecen al

departamento 90 o los que estén a cargo del director cuyo código es igual a 124 o 205, ordenando el

resultado por el apellido.

Page 77: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.2 Restricción y ordenamiento de datos

2.2.12 AI: Utilización de BETWEEN

Teniendo en cuenta las columnas mostradas de la tabla base EMPLOYEES donde se encuentran los datos de todos los empleados de la empresa, seleccione la/s fila/s que se obtendrían como resultado al ejecutarse la siguiente sentencia SELECT.

Page 78: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.2 Restricción y ordenamiento de datos

2.2.13 Síntesis

En una sentencia SELECT, es posible limitar las filas seleccionadas utilizando una cláusula WHERE y ordenar los datos recuperados utilizando una cláusula ORDER BY. En este tema se abordaron estas cláusulas, así como también condiciones de comparación y condiciones lógicas. Utilizando operadores es posible escribir condiciones para restringir el resultado de una consulta SQL.

Page 79: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.3 Funciones de una sola fila

   

En la figura se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 80: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

 

Page 81: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.3 Funciones de una sola fila

2.3.1 Objetivos

Funciones son programas que toman cero o más argumentos y retornan un valor único. Oracle 10g ha desarrollado un número de funciones en SQL, las cuales pueden ser invocadas en sentencias SQL. Existen cinco clases de funciones significativas: funciones de una sola fila, funciones de agregación (también denominadas funciones de grupo), funciones analíticas, funciones de referencia a objetos, y funciones definidas por el usuario. Este punto focaliza el primer grupo de funciones: funciones de una sola fila.

Funciones de una sola fila operan sobre expresiones derivadas de columnas o literales, y las mismas son ejecutadas una vez por cada fila recuperada. Este tema cubre cuáles funciones de una sola fila se encuentran disponibles y las reglas que gobiernan el uso de las mismas.

2.3 Funciones de una sola fila

2.3.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 82: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 83: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.3 Funciones de una sola fila

2.3.3 ¿Qué es una función SQL predefinida?

Las funciones en una BD Oracle 10g pueden clasificarse, en forma genérica, en:

Funciones SQL: Las funciones SQL son funciones predefinidas en Oracle 10g y están disponibles para su utilización en distintas sentencias SQL.

Funciones Definidas por el Usuario (UDFs): Las funciones definidas por el usuario sirven para proveer funcionalidad que no está disponible en SQL o en funciones predefinidas SQL. Las mismas pueden ser escritas en PL/SQL o en Java.

Las funciones predefinidas SQL pueden agruparse según el tipo de dato de sus argumentos y sus valores de retorno. De esta clasificación surgen los siguientes grupos de funciones:

Funciones de una sola fila Funciones de grupo (o de varias filas) Funciones analíticas

Funciones de referencia a objetos

Page 84: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.3 Funciones de una sola fila

2.3.4 Conversión Implícita

Oracle 10g soporta conversión implícita y explícita de valores de un tipo de dato a otro. Es recomendado especificar conversiones explícitas en vez de confiar en conversiones automáticas o implícitas, por las siguientes razones: 

Las sentencias SQL son más fáciles de entender cuando se utilizan funciones de conversión de tipos de dato.

La conversión de tipo de dato automática puede tener un impacto negativo en performance. Las conversiones implícitas dependen del contexto en el cual las mismas ocurren y pueden no

funcionar de la misma forma en todos los casos. El comportamiento de una conversión explícita es más predecible. Los algoritmos de conversión

implícita están sujetos a modificaciones en diferentes versiones de software.

Oracle 10g automáticamente convierte un valor de un tipo de dato a otro cuando dicha conversión tiene sentido. Por Ej.: si se invoca a una función SQL con un argumento de un tipo de dato diferente al tipo de dato esperado por la misma, Oracle 10g implícitamente convierte el argumento al tipo de dato esperado antes de ejecutar la función SQL  - .

Existen reglas que gobiernan el momento y la dirección en la cual Oracle 10g Server realiza conversiones de tipos de dato implícitas .

Page 85: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 86: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.3 Funciones de una sola fila

2.3.5 Conversión Explícita

Es posible especificar explícitamente una conversión de tipo de dato utilizando funciones de conversión SQL.  Una función de conversión convierte un valor de un tipo de dato a otro. Generalmente, la nomenclatura de este tipo de funciones sigue el formato: “tipo_de_dato TO tipo_de_dato”. El primer tipo de dato es el tipo de dato de entrada, mientras que el segundo es el tipo de dato de salida .  La tabla muestra funciones SQL que explícitamente convierten un valor de un tipo de dato a otro .

Page 87: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.3 Funciones de una sola fila

2.3.6 Argumentos de entrada

Las funciones pueden recibir información de entrada a través de una lista de argumentos.Una función de una sola fila puede requerir cero o más argumentos dependiendo del tipo de operación que ésta realice. Un argumento es un valor o una expresión de un tipo de dato específico que la función utiliza para realizar la operación y retornar un único resultado.

Los argumentos deben ser pasados entre paréntesis a la función en el momento que ésta es invocada y delimitados por comas en caso requerir más de un argumento. La lista de argumentos puede estar integrada por variables, expresiones y/o constantes.

Es necesario respetar el orden y tipo de dato de los argumentos según se especifique en la sintaxis de la función utilizada.En caso que una función reciba como argumento un valor o resultado de una expresión cuyo tipo de dato sea diferente al que realmente espera, Oracle 10g Server realizará la conversión implícita siempre y cuando ésta sea válida. De lo contrario, se producirá un error.   Anidamiento de Funciones Las funciones de una sola fila se pueden anidar hasta cualquier nivel. Las funciones anidadas se evalúan desde el nivel más interno al más externo.  Fun 3 (Fun2 (Fun1 (col, argum1) , argum2), argum3)

Page 88: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 89: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 90: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.3 Funciones de una sola fila

2.3.7 Funciones de caracteres

    Las funciones de caracteres que retornan valores del mismo tipo de dato que el argumento de entrada. Las funciones de caracteres que retornan valores numéricos pueden tomar como argumento cualquier tipo de dato caracter . Límite en valores caracteres retornados:

Funciones que retornan valores CHAR están limitadas en longitud a 2000 bytes. Funciones que retornan valores VARCHAR2 están limitadas en longitud a 4000 bytes. Funciones que retornan valores CLOB están limitadas a 4 GB.

Reglas en el tratamiento de los límites:

Para funciones de tipo CHAR y VARCHAR2, si la longitud del valor de retorno excede el límite, Oracle Server trunca el valor y retorna el resultado sin un mensaje de error.

Para funciones CLOB, si la longitud del valor de retorno excede el límite, Oracle Server dispara un error y no retorna datos.

Funciones de Manejo de Mayusculas y Minusculas

LOWER: Convertir cadenas de caracteres a minusculas.

UPPER: Convertir cadenas de caracteres a mayusculas.

INITCAP: Convierte la primera letra de una cadena a mayusculas y el resto en minusculas.

Page 91: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.3 Funciones de una sola fila

2.3.8 Funciones numéricas

La mayoría de estas funciones retornan valores representados por dígitos con precisión de 38 decimales. Las funciones COS, COSH, EXP, LN, LOG, SIN, SINH, SQRT, TAN y TANH trabajan con precisión de 36 dígitos decimales. Las funciones ACOS, ASIN, ATAN y ATAN2 trabajan con precisión de 30 dígitos decimales. En la figura se muestra un listado exhaustivo de las funciones numéricas existentes en Oracle 10g Server.

Page 92: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.3 Funciones de una sola fila

2.3.9 Funciones para trabajar con datos NULOS

Si una columna en una fila no posee valor, se dice que la columna es nula o contiene el valor nulo (null). Valores nulos pueden aparecer en columnas de cualquier tipo de dato que no posean restricciones de integridad NOT NULL o PRIMARY KEY. Utilice un nulo cuando el valor actual no es conocido o cuando dicho valor no es significativo. No utilice nulo para representar un valor cero, debido a que los mismos no son equivalentes. Actualmente, Oracle 10g Server trata un valor caracter con longitud cero como nulo, sin embargo, esto puede no continuar siendo verdadero en futuras versiones del producto. De esta forma, Oracle 10g recomienda no tratar cadenas de caracteres vacías como nulos. Toda expresión aritmética conteniendo un nulo, siempre evalúa a nulo. Por ejemplo, 10 sumado a null da como resultado null. De hecho, todos los operadores (excepto concatenación) retornan null cuando existe un operando nulo. 

Funciones para trabajar con datos nulos Todas las funciones escalares (excepto REPLACE, NVL y CONCAT) retornan null cuando reciben un argumento nulo. Es posible utilizar la función NVL para retornar un valor en la ocurrencia de un nulo. Por ejemplo, la expresión NVL(COMM,0) retorna cero si COMM es nulo, o el valor de COMM si éste es no nulo. La función NVL2 evalua la primera expresión. Si la primera expresión no es nula, la función NVL2 retorna la segunda expresión. Si la primera expresión es nula, se retorna la tercera expresión. NVL2(expre1, expre2, expre3) La función NULLIF sirve para compara dos expresiones. Si son iguales, la función retorna un valor nulo. Si son diferentes, la función retorna la primera expresion. No se puede usar el literal NULL para la primera expresión.  La función COALESCE devuelve la primera expresión no nula de la lista. La mayoría de las funciones de agregación ignoran los valores nulos. Por ejemplo, considere una consulta que promedia los siguientes cinco valores: 1000, null, null, null, y 2000. Dicha consulta ignora los nulos y calcula el promedio como:

(1000+2000)/2 = 1500 Nulos en condiciones de comparación

Para verificar la existencia de valores nulos debe utilizarse únicamente las condiciones de comparación IS NULL y IS NOT NULL. Si se utiliza cualquier otra condición con nulos y el resultado depende del valor nulo, el resultado es desconocido (UNKNOWN). Debido a que el valor nulo representa ausencia de datos, un nulo no puede ser igual ni distinto de algún otro valor o de otro nulo.  Sin embargo, Oracle 10g Server considera dos nulos como iguales cuando se evalúa una función DECODE. Oracle 10g Server también considera dos valores nulos como iguales si los mismos aparecen en claves compuestas. Esto es, Oracle 10g Server considera idénticas dos claves compuestas que contengan nulos si todos los componentes no nulos de las claves son iguales. 

Nulos en condiciones  Una condición que evalúa a UNKNOWN actúa similar a FALSE. Por ejemplo, una sentencia SELECT con una condición en la cláusula WHERE que evalúa a UNKNOWN no retorna filas. No obstante, una condición que evalúa a UNKNOWN difiere de FALSE en que operaciones posteriores realizadas sobre la condición UNKNOWN darán como resultado UNKNOWN. Esto es, NOT FALSE evalúa a TRUE, pero NOT UNKNOWN evalúa a UNKNOWN. La figura muestra algunos ejemplos de evaluaciones considerando valores nulos.

Page 93: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.3 Funciones de una sola fila

2.3.10 Funciones de fechas

Las funciones de fecha operan sobre valores de tipo DATE (fecha/hora). Todas las funciones de fecha retornan un valor o un intervalo de valores de tipo DATE, excepto la función MONTHS_BETWEEN, la cual retorna un valor numérico. La figura muestra las funciones de fecha presentes en Oracle 10g Server. SYSDATE La función SYSDATE retorna la fecha y hora corriente. El tipo de dato del valor retornado es DATE. La función no requiere argumentos. En sentencias SQL distribuidas, esta función retorna la fecha y hora de la base de datos local . SYSTIMESTAMP La función SYSTIMESTAMP retorna la fecha del sistema, incluyendo fracciones de segundos y la zona horaria del sistema en el cual la base de datos reside. El tipo de retorno es TIMESTAMP WITH TIME ZONE  - . Elemento de Formato de Fecha RR El formato de fecha RR es similar al elemento YY, pero se puede usar para especificar siglos diferentes. Utilice el elemento de formato RR en lugar de YY para que el siglo del valor de retorno varíe según el año de dos dígitos especificado y los dos dígitos del año actual.

Page 94: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 95: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 96: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.3 Funciones de una sola fila

2.3.11 Modelos de formatos

Un modelo de formato es un literal caracter que describe el formato de datos DATE o NUMBER almacenados en una cadena de caracteres (o string). Cuando se convierte una cadena de caracteres a fecha o número, un modelo de formato especifica cómo Oracle 10g Server interpreta dicha cadena . Cabe destacar que un modelo de formato no modifica la representación interna del valor almacenado en la base de datos. En sentencias SQL, es posible utilizar un modelo de formato como argumento en las funciones TO_CHAR y TO_DATE:

Para especificar el formato que Oracle 10g Server utiliza para retornar un valor desde la base de datos

Para especificar el formato de un valor de forma que Oracle 10g Server pueda almacenarlo correctamente en la base de datos

Los valores de algunos formatos están determinados por el valor de ciertos parámetros de inicialización. Para tales formatos, es posible especificar los caracteres retornados por estos elementos de formato implícitamente utilizando el parámetro de inicialización NLS_TERRITORY. Es posible modificar el formato de fecha por defecto para una sesión a través de la sentencia ALTER SESSION. Todos los modelos de formato numéricos causan que el número en cuestión sea redondeado al número de dígitos significativos especificado en el modelo. Si un valor posee más dígitos significativos a la izquierda del punto decimal de los que son especificados en el formato, el símbolo numeral ( # ) reemplaza el valor. Si un valor positivo es extremadamente largo y no puede ser representado en el formato especificado, el símbolo tilde ( ~ ) reemplaza el valor (notar que el tilde representa el valor infinito). De la misma forma, si un número negativo es extremadamente pequeño y no puede ser representado en el formato especificado, el símbolo infinito negativo reemplaza el valor ( - ~ ). Esta situación normalmente ocurre cuando se está utilizando la función TO_CHAR con un modelo de formato numérico restrictivo, lo que provoca una operación de redondeo . La longitud total de un modelo de formato fecha no puede exceder los 22 caracteres. El formato de fecha por defecto es especificado, ya sea, explícitamente con el parámetro de inicialización NLS_DATE_FORMAT, o implícitamente con el parámetro de inicialización NLS_TERRITORY. Es posible modificar el formato de fecha por defecto en una sesión a través de la sentencia ALTER SESSION .

Page 97: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 98: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.3 Funciones de una sola fila

2.3.12 Función CASE

 

Las expresiones CASE pueden clasificarse en dos tipos generales: expresiones sencillas y expresiones de múltiples condiciones.La sintaxis mostrada en [SQL 3-54] corresponde a expresiones CASE sencillas. En este tipo de expresiones la condición implícita utilizada es la igualdad (=).A través de las expresiones CASE de múltiples condiciones puede utilizarse una combinación de condiciones. La sintaxis se muestra en la figura . En este tipo de expresiones, Oracle 10g Server busca de izquierda a derecha la primera ocurrencia de condición que sea verdadera, y devuelve return_expr. Si ninguna de las condiciones (condition) es verdadera y existe una cláusula ELSE, Oracle 10g Server devuelve else_expr. En caso contrario, Oracle 10g Server devuelve un valor nulo.

El número máximo de argumentos en una expresión CASE es de 255, y cada par WHEN...THEN cuenta como dos argumentos. Para evitar exceder el límite de 128 posibilidades, es posible anidar expresiones CASE. Esto es, return_expr puede ser en sí misma una expresión CASE.

2.3 Funciones de una sola fila

2.3.13 Función DECODE

 

Si expr y search contienen datos caracter, Oracle 10g Server los compara utilizando semántica de comparación sin completar con espacios en blanco. expr, search y result pueden ser de cualquiera de los tipos CHAR, VARCHAR2, NCHAR o NVARCHAR2. La cadena de caracteres retornada es de tipo VARCHAR2. Los valores search, result y default pueden ser derivados de expresiones. Oracle 10g Server evalúa cada valor search únicamente antes de compararlo a expr. Como consecuencia, nunca se evalúa un valor search si un valor search previo es igual a expr . Oracle 10g Server automáticamente convierte el valor expr y cada valor search al tipo de dato del primer valor search antes de realizar la comparación. Oracle 10g Server automáticamente convierte el valor de retorno al tipo de dato del primer valor result. Si el primer valor result posee tipo de dato CHAR o es nulo, se convierte el valor de retorno al tipo de dato VARCHAR2. En una función DECODE, Oracle 10g Server considera dos valores nulos como equivalentes. Si expr es nulo, se retorna el valor result del primer search que también es nulo. DECODE no necesariamente debe retornar un valor; la función puede retornar nulo .

El número máximo de componentes en la función DECODE, incluyendo expr, searches, results y default, es 255.

Page 99: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 100: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.3 Funciones de una sola fila

2.3.14 AP: Manipulación de NULOS

  Laboratorio 2.3.14

Manipulación de NULOS

Aplicar las funciones de una fila para el manejo de valores nulos.

Duración Estimada: 20 min.

2.3Funciones de una sola fila

2.3.15 AI: Argumentos de entrada y respuesta de la Función

 

Analice cada invocación de función y realice los siguientes ejercicios interactivos.

 En base a la invocación y los argumentos de entrada recibidos, una con flechas la invocación correspondiente al valor retornado .

 En base a la invocación y los argumentos de entrada recibidos, complete el valor retornado por la función .

En base a la invocación y los argumentos de entrada recibidos, una con flechas la invocación correspondiente al tipo de dato retornado .

Page 101: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.3 Funciones de una sola fila

2.3.16 AI: Conversión de datos

 

Lea con atención la sintaxis de invocación de funciones y considerando el conjunto de posibles resultados, una con flechas según corresponda.

2.3 Funciones de una sola fila

2.3.17 Síntesis

Este tema introdujo funciones de una sola fila. Se ilustró que las funciones de una sola fila retornan un valor para cada fila al momento en que la misma es recuperada desde la tabla o vista de base.  Funciones de una sola fila pueden ser utilizadas en sentencias SELECT en las cláusulas SELECT, WHERE y ORDER BY. Este tema cubrió la variedad de funciones disponibles para cada tipo de dato y algunas funciones que trabajan sobre cualquier tipo de dato.

Page 102: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.4 Visualización de datos de varias tablas

   

En la figura se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 103: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 104: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.4 Visualización de datos de varias tablas

2.4.1 Objetivos

Una base de datos posee muchas tablas donde se almacenan datos. En el tema “2.1 Escritura de sentencias SQL SELECT básicas” se vio cómo escribir consultas simples que seleccionan datos de una única tabla. La potencialidad primaria de bases de datos relacionales es la capacidad de unir dos o más tablas relacionadas y acceder a información. Utilizando la sentencia SELECT, es posible escribir consultas avanzadas que satisfacen requerimientos de usuario.

Este tema focaliza la atención en la consulta a datos a partir de más de una tabla utilizando uniones de tabla Oracle 10g Sever ha enriquecido las capacidades al realizar uniones en conformidad al estándar ANSI/ISO SQL1999. Dicho tema abarca la funcionalidad de los varios tipos de uniones existentes, y ejercita la sintaxis apropiada en cada caso.

2.4 Visualización de datos de varias tablas

2.4.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 105: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 106: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.4 Visualización de datos de varias tablas

Page 107: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.4.3 Descripción de claves ajenas (Foreign Key)

Una clave primaria no puede contener valores nulos. Esto es debido a que los valores de clave primaria son utilizados para identificar filas de manera unívoca en una tabla; si existieran valores de clave primaria nulos implica que no sería posible identificar algunas filas de la tabla. Dicho de otra forma, si dos o más filas de la tabla poseen valores nulos en su clave primaria, no sería posible distinguirlas. Este tipo de restricción de clave, o restricción de integridad sobre una relación, es impuesto sobre una o más columnas de una tabla individual.  Por otro lado, restricciones de clave especificadas sobre dos tablas son utilizadas para mantener la consistencia entre filas de ambas tablas. Informalmente, una restricción de integridad referencial asevera que una fila en una tabla haciendo referencia a otra tabla debe referenciar a una fila existente en la tabla destino. Por ejemplo, la columna DEPARTMENT_ID de la tabla EMPLOYEES proporciona el número de departamento en el cual trabaja cada empleado; esto es, su valor en cada fila de la tabla empleado debe coincidir con el valor de la columna DEPARTMENT_ID de alguna de las filas en la tabla DEPARTMENTS.  Una restricción de integridad referencial se establece a través de una clave foránea . En el ejemplo citado, la columna DEPARTMENT_ID en la tabla EMPLOYEES es una clave foránea y referencia a la tabla DEPARTMENTS, ya que sus valores (en EMPLOYEES) se corresponden a valores de clave primaria en la tabla DEPARTMENTS. Una clave foránea puede contener valores nulos, lo que implica que la fila correspondiente no posee una fila relacionada en la tabla destino. Una clave foránea puede hacer referencia a la misma tabla, estableciendo una autorelación. Por ejemplo, la columna MANAGER_ID de la tabla EMLPOYEES establece una autorelación entre empleados. Para un empleado determinado, la clave foránea MANAGER_ID referencia a otra fila en la misma tabla EMPLOYEES que corresponde al empleado director del empleado en cuestión .

Page 108: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.4 Visualización de datos de varias tablas

2.4.4 Unión de tablas – La condición WHERE

Para consultar datos a partir de más de una tabla, es necesario identificar columnas comunes que establezcan una relación entre las tablas. En la cláusula WHERE, se define la relación entre las tablas que aparecen en la cláusula FROM utilizando operadores de comparación. Dicha relación puede ser especificada utilizando una cláusula JOIN en vez de la cláusula WHERE. La cláusula JOIN es una característica nueva en Oracle 10g Server, adicionada para satisfacer el estándar ISO/ANSI SQL1999. Una consulta de múltiples tablas sin una relación de este tipo es conocida como producto cartesiano o unión cruzada (cross join).

 El operador más común utilizado para relacionar dos tablas en el operador de igualdad (=). Se denomina unión de igualdad si se relacionan dos tablas utilizando el operador de igualdad. La unión de igualdad también es denominada unión simple, unión interna o equijoin. Este tipo de unión combina filas de dos tablas que poseen valores equivalentes para las columnas especificadas, y retorna únicamente las filas que satisfacen la condición de igualdad .

Cuando la cláusula FROM incluye más de dos tablas, Oracle 10g Server sigue un algoritmo de unión tomando conjuntos de dos tablas por vez .

Page 109: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.4 Visualización de datos de varias tablas

2.4.5 Condiciones adicionales a la unión de tablas

Además de especificar la condición de unión en la cláusula WHERE, es posible especificar otras condiciones para limitar las filas recuperadas. Tales uniones son denominadas uniones complejas .

Page 110: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.4 Visualización de datos de varias tablas

2.4.6 Ambigüedad de columnas

Si múltiples tablas poseen los mismos nombres de columna, los nombres de columna duplicados deben ser cualificados en la consulta con el nombre de tabla o alias correspondiente (excepto cuando se utiliza sintaxis ANSI SQL). La cualificación de nombres de columna evita ambigüedad e incrementa la legibilidad de la consulta  - .

Usar el prefijo de tabla mejora el rendimiento de la consulta. Al realizar uniones con la cláusula USING, no puede cualificar una columna que se use en la propia cláusula USING.

 

Page 111: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.4 Visualización de datos de varias tablas

2.4.7 Utilización de Alias de las tablas

De la misma forma que para las columnas, las tablas también pueden tener alias. El nombre alias de la tabla se especifica al lado de la tabla, separado con un espacio. Los alias de tabla incrementan la legibilidad de la consulta. Los mismos también pueden ser utilizados para acortar los nombres de tabla largos con nombres alias reducidos en tamaño. Cuando tablas (o vistas) son especificadas en la cláusula FROM, Oracle 10g Server busca los objetos en el esquema (o usuario) conectado actualmente a la base de datos. Si la tabla pertenece a otro esquema, es necesario cualificar el nombre de tabla con el nombre del esquema correspondiente (esto puede evitarse utilizando sinónimos, los cuales serán tratados más adelante). Reglas de cualificación:

Es posible utilizar el nombre del propietario (o esquema) para cualificar un nombre de tabla. Es posible utilizar el nombre de tabla o el nombre de tabla y el esquema para cualificar una

columna  - . Es posible cualificar un nombre de columna con su esquema y tabla únicamente cuando el

nombre de tabla ha sido cualificado con el esquema correspondiente.

Cuando se utilizan nombres de alias de tabla, deben cualificarse los nombres de columna con el alias únicamente; cualificar las columnas con el nombre de tabla producirá un error .

Page 112: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 113: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.4 Visualización de datos de varias tablas

2.4.8 Uniones de NO igualdad

Si la consulta relaciona dos tablas utilizando un operador de igualdad (=), la misma es una unión de igualdad, también denominada unión interna o equijoin. Si se utiliza cualquier otro operador para relacionar las tablas en la consulta, la misma es denominada unión de no igualdad.

Se pueden utilizar otras condiciones (como <= y >=), pero BETWEEN es la más sencilla. Recuerde especificar el valor bajo en primer lugar y el alto al final cuando utilice BETWEEN.

Page 114: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.4 Visualización de datos de varias tablas

2.4.9 Uniones Externas

Una unión interna retorna sólo las filas coincidentes de ambas tablas. A veces, es necesario visualizar los datos de una tabla aún si no existe la fila correspondiente en la tabla relacionada. Para realizar esto, Oracle 10g Server provee un mecanismo denominado unión externa.  La unión externa retorna resultados basada en al condición de unión interna, así como también en las filas no coincidentes de una o ambas tablas. En la sintaxis Oracle 10g tradicional, el símbolo más encerrado entre paréntesis, (+), denota una unión externa en la consulta. Escriba (+) al lado del nombre de columna de la tabla donde puede no existir una fila correspondiente. Por ejemplo, para escribir una consulta que ejecute una unión externa de las tablas A y B y retorne todas las filas de A, se aplica el operador de unión externa (+) a todas las columnas de B en la condición de unión. Para todas las filas en A que no posean filas coincidentes en B, la consulta retorna valores nulos para las columnas de B. Dicho de otra manera, el operador de unión externa (+) va del lado de la relación donde se completa con valores nulos. Por ejemplo, para listar el país (de la tabla COUNTRIES) y la ciudad (de la tabla LOCATIONS), mostrando todos los países que pertenecen a la tabla COUNTRIES sin importar si poseen o no ciudades relacionadas en la tabla LOCATIONS. Para ejecutar esta unión externa, se utiliza un operador de unión externa junto a todas las columnas de la tabla LOCATIONS en la cláusula WHERE . El operador de unión externa (+) puede aparecer únicamente en la cláusula WHERE de una sentencia SELECT. Si existen múltiples condiciones de unión entre las tablas, el operador de unión externa debe ser utilizado en todas ellas  - .  Una unión externa, conteniendo el operador (+), no puede ser combinada con otra condición utilizando los operadores OR o IN  - .

Page 115: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 116: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 117: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.4 Visualización de datos de varias tablas

2.4.10 Sintaxis en Uniones Externas

Una unión externa izquierda es una unión entre dos tablas que retorna filas basada en la condición de comparación, así también como filas no coincidentes de la tabla que aparece del lado izquierdo en la cláusula FROM (o JOIN en sintaxis ANSI). Por ejemplo, si se combinan las tablas A y B (FROM A, B), y se desea visualizar todas las filas de A, el operador de unión externa es ubicado junto a todas las columnas de B. Esto es una unión externa izquierda. Notar el orden en que aparecen las tablas en la cláusula FROM . Una unión externa derecha es una unión entre dos tablas que retorna filas basada en la condición de comparación, así también como filas no coincidentes de la tabla que aparece del lado derecho en la cláusula FROM (o JOIN en sintaxis ANSI) .  Cabe resaltar que una consulta incluyendo una unión externa de tablas puede ser escrita tanto por izquierda como por derecha . Una unión externa completa (o full) es una unión entre dos tablas que retorna filas basada en la condición de comparación, así también como filas no coincidentes de la tabla del lado izquierdo y filas no coincidentes de la tabla del lado derecho de la cláusula JOIN ( sintaxis ANSI). Por ejemplo, suponer que se desea listar todos los apellidos de los empleados con sus nombres de departamento. Se desea incluir en el listado a todos los empleados, aún si los mismos no poseen un departamento asignado. Y también se desea incluir en el listado a todos los departamentos, aún si no existen empleados trabajando en dicho departamento. Una unión externa completa resuelve este requerimiento .

Unir tablas con las cláusulas NATURAL JOIN, USING u ON da como resultado una unión interna. Las filas sin correspondencias no se muestran en la salida. Para devolver las filas sin correspondencias, puede utilizar una unión externa. Una unión externa devuelve todas las filas que satisfacen la condición de unión y devuelve también algunas o todas las filas de una tabla para las que ninguna fila de la otra tabla satisface la condición de unión. 

Page 118: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

Hay tres tipos de uniones externas: LEFT OUTER RIGHT OUTER FULL OUTER

Con NATURAL JOIN puede unir tablas automáticamente basándose en columnas de las dos tablas que tengan tipos de datos y nombres correspondientes.  Se puede utilizar la cláusula USING para especificar únicamente las columnas que se deben utilizar para una unión igualitaria. Las columnas a las que se hace referencia en la cláusula USING no deben tener cualificador (nombre de tabla o alias) en ninguna parte de la sentencia SQL.

Utilice la cláusula ON para especificar una condición de unión. Esto le permite especificar condiciones de unión aparte de cualquier condición de búsqueda o de filtro en la cláusula WHERE. En sintaxis Oracle 10g, una consulta de unión externa completa no puede escribirse en forma directa utilizando el operador de unión externa (+) . Una forma de escribir una consulta de unión externa completa en sintaxis Oracle 10g es a través del operador UNION .

Page 119: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 120: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 121: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.4 Visualización de datos de varias tablas

2.4.11 Unión de una misma tabla

Una autounión combina una tabla a sí misma. El nombre de la tabla aparece dos veces en la cláusula FROM, con diferentes nombres de alias obligatoriamente. Los dos alias son tratados como dos tablas diferentes, y las mismas se combinan de la misma forma que cualquier conjunto de otras tablas, a través de columnas en común . 

Cuando se ejecuta una autounión en sintaxis ANSI, siempre debe utilizarse la sintaxis JOIN...ON. Los tipos de unión NATURAL, y JOIN...USING no pueden ser utilizados .  

La cláusula ON también se puede utilizar para unir columnas con nombres diferentes, dentro de la misma tabla o en una tabla diferente.

Page 122: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 123: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 124: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.4 Visualización de datos de varias tablas

2.4.12 Creación de Uniones en Tres Sentidos con Cláusula ON

 

Uniones en Tres Sentidos 

Es una unión de tres tablas. En la sintaxis es compatible con SQL:1999, las uniones se realizan de izquierda a derecha. De esta forma, la primera unión que se debe realizar segunda condición de unión puede hacer referencia a columnas de las tres tablas.es EMPLOYEES JOIN DEPARTMENTS. La primera condición de unión puede hacer referencia a columnas de EMPLOYEES y DEPARTMENTS pero no puede hacer referencia a columnas de LOCATIONS. La segunda condición de unión puede hacer referencia a columnas de las tres tablas. . 

Page 125: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.4 Visualización de datos de varias tablas

2.4.13 Productos Cartesianos

 

Cuando una condición de unión no es válida o se omite por completo, el resultado es un producto cartesiano, en el que se muestran todas las combinaciones de filas. 

Un producto cartesiano generar gran cantidad de filas y resultados no utiles. Debería incluir siempre una condición de unión válida a menos que tenga la necesidad específica de combinar todas las filas de todas las tablas.   . 

2.4 Visualización de datos de varias tablas

2.4.14 Uniones Cruzadas

 

La clausula CROSS JOIN produce el producto combinado o cartesiano entre dos tablas.

 

Page 126: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.4 Visualización de datos de varias tablas

2.4.15 AP: Uniones de dos tablas

  Laboratorio 2.4.15

Uniones de dos tablas.

Mostrar datos de dos tablas mediante el uso de uniones de igualdad y uniones externas.Duración Estimada: 40 min.

2.4 Visualización de datos de varias tablas

2.4.16 AP: Uniones de más de dos tablas

  Laboratorio 2.4.16

Uniones de más de dos tablas.

Mostrar datos de más de dos tablas mediante es uso de uniones de igualdad, autouniones y uniones externas.Duración Estimada: 40 min.

2.4 Visualización de datos de varias tablas

2.4.17 AI: Importancia de las claves ajenas

Diga si las siguientes afirmaciones son verdaderas o falsas en base al gráfico presentado conjuntamente.

Page 127: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.4 Visualización de datos de varias tablas

2.4.18 Síntesis

Uniones son utilizadas para relacionar dos o más tablas (o vistas). Trabajando con una base de datos relacional, es común resolver un requerimiento que involucre la unión de datos. Las tablas son unidas (o relacionadas) utilizando una columna en común entre ambas tablas en la cláusula WHERE de la consulta. Oracle 10g Server soporta la sintaxis de unión ANSI/ISO SQL1999. En dicha sintaxis, las tablas son unidas utilizando la palabra clave JOIN y una condición que pude ser especificada utilizando la cláusula ON.  Si la condición de unión utiliza el operador de igualdad (= o IN), la unión es denominada unión de igualdad. Si se utiliza cualquier otro operador para unir las tablas, la unión es denominada unión de no igualdad. Si no se especifica ninguna condición de unión entre las tablas, el resultado será un producto cartesiano: cada fila de la primera tabla es unida a cada fila de la segunda tabla. Para evitar un producto cartesiano, deben existir al menos n-1 condiciones de unión en la cláusula WHERE cuando existen n tablas en la cláusula FROM. Una tabla puede ser unida a sí misma, este tipo de unión es denominado autounión.  

Page 128: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

Si se desea seleccionar los resultados a partir de una tabla, aún si no existen las filas correspondientes en la tabla unida, se debe utilizar el operador de outer join: (+). En la sintaxis ANSI, es posible utilizar las palabras clave; NATURAL, JOIN, CROSS JOIN, LEFT JOIN, RIGHT JOIN, y FULL JOIN para especificar el tipo de unión a realizar.

2.5 Agregado de datos utilizando funciones de grupo

   

En la figura se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 129: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.5 Agregado de datos utilizando funciones de grupo

Page 130: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.5.1 Objetivos

Como ya ha sido introducido anteriormente, las funciones son programas que reciben cero o más argumentos y retornan un valor único. Este tema abarca funciones de agregación, las cuales también son denominadas funciones de grupo. Funciones de grupo se diferencian de funciones de una sola fila en cómo las mismas son evaluadas. Funciones de una sola fila son evaluadas una vez por cada recuperada. Funciones de grupo son evaluadas sobre grupos de una o más filas a la vez. Este tema considera cuáles funciones de grupo están disponibles en SQL y las reglas sobre cómo utilizarlas. Juntamente a estos conceptos, se explora la invocación a funciones de anidamiento. SQL posibilita el anidamiento de funciones de grupo en la invocación a funciones de una sola fila, y el anidamiento de funciones de una sola fila en la invocación a funciones de grupo.

2.5 Agregado de datos utilizando funciones de grupo

2.5.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 131: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.5 Agregado de datos utilizando funciones de grupo

Page 132: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.5.3 Descripción de las funciones de grupo

 

En contraste con las funciones a nivel de fila, las funciones de grupo operan sobre conjuntos de filas para devolver un resultado por cada uno de ellos. Dichos grupos pueden estar constituidos por la tabla entera o por partes de la misma.Cada una de las funciones de grupo acepta un argumento. Algunas de las funciones de grupo disponibles se muestran en la figura . Muchas opciones de grupo aceptan estas opciones: 

         DISTINCT: esta opción causa que una función de grupo considere sólo valores distintos de una expresión argumento.

         ALL: esta opción causa que una función de grupo considere todos los valores incluyendo todos los duplicados.

 Por ejemplo, el promedio DISTINCT de 1, 1, 1, y 3 es 2; el promedio ALL es 1,5. Si no se especifica una opción, se asume por defecto ALL. Todas las funciones de grupo, excepto COUNT(*), ignoran los valores nulos. Se puede usar la función NVL en el argumento de una función de grupo para sustituir un valor nulo por otro valor. Si una consulta con una función de grupo no retorna filas, o sólo retorna filas con valores nulos para el argumento de la función, la función de grupo retorna nulo.

2.5 Agregado de datos utilizando funciones de grupo

2.5.4 Sintaxis de las funciones de grupo

 

En la figura  se muestra la sintaxis de las funciones de grupo y en la figura  se muestran tres ejemplos de la utilización de las funciones de grupo.

Page 133: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.5 Agregado de datos utilizando funciones de grupo

2.5.5 La cláusula GROUP BY

 

Si se usa la cláusula GROUP BY en una sentencia SELECT, Oracle 10g Server divide las filas de una tabla o vista consultada en grupos. Oracle 10g Server aplica las funciones de grupo en la lista SELECT a cada grupo de filas y retorna una única fila resultado para cada grupo. Si se omite la cláusula GROUP BY, Oracle 10g Server aplica las funciones de grupo en la lista SELECT a todas las filas en la tabla o vista consultada.  

Guía

En una consulta que contiene una cláusula GROUP BY, todos los elementos de la lista SELECT deben ser expresiones de la cláusula GROUP BY, expresiones que contienen funciones de grupo o constantes. Si hay fallas en la inclusión de columna, aparecerá un mensaje de error.

Con el uso de la cláusula WHERE se pueden excluir filas antes de la división en grupos. No se puede usar la notación de posición o el alias de columna en la cláusula GROUP BY.

Page 134: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

Por defecto, las filas se ordenan en forma ascendente de acuerdo a la lista GROUP BY. Esto se puede modificar haciendo uso de la cláusula ORDER BY.

En la figura se muestran ejemplos de la utilización de la cláusula GROUP BY.

Page 135: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.5 Agregado de datos utilizando funciones de grupo

2.5.6 Agrupación por más de una columna

 

Se pueden devolver resultados resumen para grupos y subgrupos incluyendo más de una columna en la cláusula GROUP BY. El orden en el cual se listan las columnas en la cláusula GROUP BY determina la forma de ordenamiento por defecto.

2.5 Agregado de datos utilizando funciones de grupo

2.5.7 La cláusula HAVING

La cláusula HAVING se usa para restringir cuáles grupos de filas, definidas por la cláusula GROUP BY, son retornadas por la consulta. Oracle 10g Server procesa las cláusulas WHERE, GROUP BY y HAVING de la siguiente manera:

Page 136: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

Se deben especificar las cláusulas GROUP BY y HAVING después de la cláusula WHERE. Si se especifican ambas cláusulas (GROUP BY y HAVING), ellas pueden aparecer en cualquier orden.

Las funciones de grupo pueden aparecer en la lista de la cláusula SELECT y en la cláusula HAVING.

En la figura se muestran ejemplos de la utilización de la cláusula HAVING. 

1. Si la sentencia contiene una cláusula WHERE, Oracle 10g Server remueve todas las filas que no la satisfacen.

2. Oracle 10g Server calcula y da formato a los grupos como se especifica en la cláusula GROUP BY.

3. Oracle 10g Server remueve todos los grupos que no satisfacen la cláusula HAVING. 

Page 137: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.5 Agregado de datos utilizando funciones de grupo

2.5.8 AI: Manejo de la cláusula Group By

 

Arrastre la/s opcion/es hasta la posición correcta que crea necesaria/s para completar la sentencia SELECT que muestre del historial de cargos cada empleado y la cantidad de cargos que ha ocupado en la empresa, teniendo en cuenta solo los traspasos en que la fecha de inicio del cargo esta entre el año 1990 y el 2000. Ordene el resultado por número de empleado en forma ascendente.

Page 138: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.5 Agregado de datos utilizando funciones de grupo

2.5.9 AI: Manejo de la cláusula Having

 

Arrastre la/s opcion/es hasta la posición correcta que crea necesaria/s para completar la sentencia SELECT que muestre para cada cargo el salario medio que perciben los empleados que tienen asignado ese cargo. Solo tener en cuenta los cargos que tengan mas de un empleado. Ordene la salida por el salario medio en forma descendente.

Page 139: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

2.5 Agregado de datos utilizando funciones de grupo

2.5.10 Síntesis

Las funciones de grupo pueden ser utilizadas en una sentencia SELECT en las cláusulas SELECT, HAVING y ORDER BY.  La mayoría de las funciones de grupo pueden ser aplicadas a todos los valores de datos o sólo a los valores de datos distintos. Excepto con COUNT(*), las funciones de grupo ignoran los valores nulos.  Funciones definidas por el usuario (o escritas por el programador) no pueden ser utilizadas como funciones de grupo.

Page 140: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 141: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 142: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 143: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 144: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 145: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

3 Consultas y subconsultas

Page 146: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

   

En SQL, la sentencia SELECT permite escribir una consulta o requerimiento de acceso a datos almacenados en una base de datos relacional. Dichas consultas SQL van desde una operación simple al mostrar datos desde una única tabla, hasta operaciones complejas que involucran la unión de varias tablas, expresiones compuestas para restringir las filas resultantes, etc.  Cuando una consulta posee cierto grado de complejidad es útil dividirla en partes, lo cual brinda mayor flexibilidad en el reuso de partes y mejor legibilidad de la consulta como un todo.  Subconsultas se utilizan para dividir una consulta en varias partes.  Una subconsulta es una consulta en sí misma que posee existencia dentro de una consulta de nivel superior. Dicho mecanismo de subconsultas puede utilizarse en cualquier sentencia DML.  Por otro lado, Oracle 10g provee diferentes herramientas de software para interactuar con la base de datos y realizar tareas de administración. Dos de estas herramientas son SQL*Plus e iSQL*Plus.  Utilizando SQL*Plus es posible ejecutar cualquier sentencia SQL y cualquier programa PL/SQL, formatear resultados provenientes de consultas, y administrar la base de datos. iSQL*Plus es la interfase web de SQL*Plus.

3.1

Subconsultas (subqueries)

   

En la figura se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 147: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

3.1 Subconsultas (subqueries)

3.1.1 Objetivos

Una subconsulta es una consulta dentro de una consulta. En una consulta que posea varias partes, una subconsulta responde una parte del requerimiento, y la consulta padre responde la otra parte. Cuando se anidan varias subconsultas, la consulta más interna es evaluada en primer lugar. Subconsultas pueden utilizarse en cualquier sentencia DML. Subconsultas utilizadas en la cláusula FROM, en una consulta de nivel tope, son denominadas vistas en línea (inline view). Vistas en línea son tratadas en un tema posterior. Subconsultas que aparecen en la cláusula WHERE de una consulta son denominadas subconsultas anidadas.  Cuando una columna de la tabla utilizada en la consulta padre es referenciada en la subconsulta, dicha subconsulta se denomina subconsulta correlacionada. Una subconsulta escalar retorna una única fila conformada por un único valor de columna. Dicho tema abarca la funcionalidad de los diferentes tipos de subconsultas.

Page 148: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

3.1 Subconsultas (subqueries)

3.1.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 149: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

3.1 Subconsultas (subqueries)

3.1.3 Descripción de las Subconsultas

Una subconsulta es una sentencia SELECT que está incluida en una cláusula de otra sentencia SQL. Se pueden construir comandos simples y potentes usando subconsultas. Pueden ser muy útiles cuando se necesita seleccionar filas de una tabla con una condición que depende de los datos que están en la misma tabla o en alguna otra.

Se puede poner la subconsulta en algunas de las siguientes cláusulas de un comando SQL:

Cláusula WHERE. Cláusula HAVING. Cláusula FROM de una sentencia SELECT o DELETE (este tema se desarrollará mas adelante).

Frecuentemente se refiere a una subconsulta como un SELECT anidado, un sub-SELECT, o una sentencia SELECT interna.

Guía Una subconsulta debe estar encerrada entre paréntesis. La subconsulta debe aparecer a la derecha del operador de comparación. Las subconsultas no pueden contener una cláusula ORDER BY. Se puede tener una sola

cláusula ORDER BY para una sentencia SELECT, y específicamente debe ser la última cláusula en la sentencia SELECT principal.

Orden de Procesamiento de las Subconsultas Anidadas

Primero se ejecuta la subconsulta (SELECT anidado) y su resultado se pasa para completar la condición de la consulta principal, o externa.

Page 150: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

3.1 Subconsultas (subqueries)

3.1.4 Subconsultas de una sola Fila

 

Una subconsulta de filas simples devuelve una sola fila desde la sentencia SELECT anidada. Este tipo de subconsulta utiliza un operador de fila simple. El ejemplo presentado en la sección 3.1.3, contiene una subconsulta de filas simples, ya que devuelve un solo valor: el número del departamento en la cual trabaja Vargas. Se pueden mostrar los datos resultantes de una consulta principal usando una función de grupo en una subconsulta para devolver una fila simple.  

Page 151: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

Un error común es que una subconsulta de fila simple dé como resultado más de una fila.  Otros operadores de comparación de una sola fila 3

Page 152: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

3.1 Subconsultas (subqueries)

3.1.5 Subconsultas de varias Filas

 

Las subconsultas que devuelven más de una fila se denominan subconsultas de filas múltiples. Se debe usar un operador de filas múltiples, tal como IN, en lugar de un operador de fila simple. Este operador espera uno o más valores.

 Operadores de Filas Múltiples

 

Además del operador IN, SQL ofrece los operadores que se detallan a continuación para escribir

condiciones de búsqueda en subconsultas que devuelven más de una fila.

Page 153: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

3.1 Subconsultas (subqueries)

Page 154: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

3.1.6 Subconsultas en la cláusula HAVING

Además de la cláusula WHERE, las subconsultas también se pueden usar en la cláusula HAVING. Primero se ejecuta la subconsulta y el resultado es devuelto a la cláusula HAVING de la consulta principal.

3.1 Subconsultas (subqueries)

3.1.7 Valores Nulos en el Juego Resultante de una Subconsulta

En la imagen  se intenta mostrar todos los empleados que no tienen subordinados.  La consulta retorna “no rows selected”, esto se debe a que uno de los valores devueltos por la consulta interna es un valor nulo y por eso la consulta entera no devuelve ninguna fila.   No hay problema en que en el juego de resultados de una subconsulta haya valores nulos si se utiliza el operador IN.

3.1 Subconsultas (subqueries)

Page 155: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

3.1.8 AP: Subconsultas de una sola Fila

  Laboratorio 3.1.8

Subconsultas de una sola fila

Problemas en los que se requieran seleccionar filas de una tabla con alguna condición que dependa de datos ubicados en la misma tabla o en alguna otra.

Duración Estimada: 40 min.

3.1 Subconsultas (subqueries)

3.1.9 AP : Subconsultas de varias Filas

  Laboratorio 3.1.9

Subconsultas de varias filas

Problemas en los que se requieran seleccionar filas de una tabla con alguna condición que dependa de datos ubicados en la misma tabla o en alguna otra.Inconvenientes con valores nulos dentro de subconsultas.

Duración Estimada: 40 min.

3.1 Subconsultas (subqueries)

3.1.10 AI: Manejo de Subconsultas

 

Teniendo en cuenta la consulta principal sobre la tabla EMPLOYEES y las cuatro subconsultas que se podrían anexar a la misma, una con flechas cada una de las opciones de subconsultas presentadas con el resultado que crea correcto

Page 156: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

3.1 Subconsultas (subqueries)

3.1.11 Síntesis

Una subconsulta es una consulta dentro de una consulta. La escritura de subconsultas es una forma eficaz de manipular datos. Es posible escribir subconsultas de una sola fila y de múltiples filas. Subconsultas de una sola fila retornan cero o una fila; mientras que subconsultas de múltiples filas retornan cero o más filas. Los operadores de subconsultas más comúnmente utilizados son: IN y EXISTS.  Una subconsulta puede aparecer en la cláusula WHERE o en la cláusula FROM. Las mismas pueden también reemplazar nombres de tablas en sentencias DELETE, INSERT y UPDATE. Subconsultas que retornan un resultado formado por una fila y una columna son denominadas subconsultas escalares. Subconsultas escalares pueden ser utilizadas en la mayoría de lugares donde puede ser utilizada una expresión.

Page 157: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

3.2 Producción de una salida legible con iSQL*Plus

   

En la figura se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 158: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

3.2 Producción de una salida legible con iSQL*Plus

3.2.1 Objetivos

SQL*Plus, ampliamente utilizado por DBAs y desarrolladores para interactuar con la base de datos, es una herramienta poderosa propietaria de Oracle 10g Server. Utilizando SQL*Plus es posible ejecutar cualquier sentencia SQL y cualquier programa PL/SQL, formatear resultados provenientes de consultas, y administrar la base de datos. ISQL*Plus es la interfase web de SQL*Plus (en la versión actual, se encuentra disponible únicamente bajo plataforma Windows). SQL*Plus se encuentra empaquetado conjuntamente con el software Oracle y puede ser instalado utilizando la rutina de instalación del software cliente en cualquier PC. Dicha herramienta es automáticamente instalada cuando se instala el software servidor. Este tema discute las capacidades de SQL*Plus y su utilización. Los comandos SQL*Plus son un súper conjunto de los comandos iSQL*Plus.

3.2 Producción de una salida legible con iSQL*Plus

3.2.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 159: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

3.2 Producción de una salida legible con iSQL*Plus

3.2.3 Efectos interactivos del iSQL*Plus (& y &&)

En iSQL*Plus, se pueden usar variables de sustitución de tipo ampersand (&) simple para almacenar valores en forma temporal.

La utilización de variables de sustitución sirve a varios propósitos, entre ellos:

Especificar un rango de fechas dentro del cual se efectuarán los cálculos. Reportar al usuario solamente los datos que le son relevantes. Identificar datos para un área determinada. Pasar valores de una sentencia SQL a otra. Obtener el ingreso de parámetros desde un archivo en lugar de solicitarlos al usuario. Cambiar dinámicamente encabezados y pies de páginas.

Nota: iSQL*Plus no soporta chequeos de validación sobre lo que ingresa el usuario.

Page 160: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

Variables de Sustitución de Tipo Ampersand (&) Simple

Cuando se ejecuta una consulta, con frecuencia los usuarios desean restringir dinámicamente los datos devueltos. iSQL*Plus provee esta flexibilidad mediante el uso de variables. Se debe usar el signo ampersand (&) para identificar a cada variable en una sentencia SQL. No es necesario definir el valor para cada variable.

&variable_usuario: indica una variable en una sentencia SQL. Si la variable no existe, iSQL*Plus le solicita al usuario un valor. iSQL*Plus descarta la nueva variable una vez que ésta es usada.

Con un ampersand simple, el usuario es interrogado cada vez que se ejecuta el comando, para evitar tener que ingresar el valor de una variable de sustitución cada vez que se ejecute el comando, se debe utilizar un doble ampersand (&&), lo que produce que el valor ingresado la primera vez que se ejecuta el comando, se almacene para toda la sesión.

3.2 Producción de una salida legible con iSQL*Plus

3.2.4 Definición de Variables

Se pueden definir variables de usuario antes de ejecutar una sentencia SELECT. iSQL*Plus provee un comando para definir e inicializar variables del usuario: DEFINE  .

Guía

El comando DEFINE creará una variable si la misma no existe, y si existe la redefinirán automáticamente.

Cuando se usa el comando DEFINE, se deben utilizar apóstrofos para encerrar una cadena de caracteres que contenga un espacio en blanco.

El Comando UNDEFINE

Las variables permanecen definidas hasta que:

Se aplica el comando UNDEFINE sobre una variable. Se termina la sesión de iSQL*Plus.

Cuando se aplica UNDEFINE sobre una variable, se pueden verificar los cambios con el comando DEFINE. Cuando finaliza la sesión iSQL*Plus, se pierden las variables definidas en la misma.

En la figura , se muestra un ejemplo en donde se define, inicializa, usa y elimina una variable de usuario.

Page 161: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

3.2 Producción de una salida legible con iSQL*Plus

3.2.5 El comando VERIFY

 

Para confirmar los cambios en la sentencia, se usa el comando SET VERIFY de iSQL*Plus. Si SET VERIFY está configurado con el valor ON, obliga a iSQL*Plus a mostrar el texto del comando antes y después que el mismo reemplace las variables de sustitución por sus valores.  Recuerde que en una cláusula WHERE, los valores de tipo fecha y carácter deben estar encerrados entre apóstrofes. La misma regla se aplica a la sustitución de variables.A fin de evitar el ingreso de los apóstrofes en tiempo de ejecución, se debe encerrar, en la misma sentencia SQL, al ampersand (&) y a la variable dentro de apóstrofes.  Las variables de sustitución se pueden usar no solamente en la cláusula WHERE de una sentencia SQL, sino que además pueden usarse para sustituir cláusulas ORDER BY, nombres de tablas, nombres de columnas, expresiones, texto o sentencias SELECT completas.

Page 162: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

3.2 Producción de una salida legible con iSQL*Plus

3.2.6 Selección de parámetros del iSQL*Plus

En iSQL*Plus se puede configurar el entorno de trabajo para cada sesión abierta a través de las Variables de Sistema . Existen dos formas de personalizar el entorno de trabajo, una es a través de la pantalla Variables del Sistema que se encuentra dentro de la opción Preferencias y la otra es utilizando el comando SET .

SET system_variable value

Todas las variables de sistema toman valores por defecto cuando se inicia una sesión.

- Link de ayuda: https://helot.cs.cf.ac.uk

Page 163: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

.2 Producción de una salida legible con iSQL*Plus

3.2.7 AP: Consultas con

Page 164: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

condiciones Interactivas

  Laboratorio 3.2.7

Consultas con condiciones Interactivas

Utilización de  variables de sustitución iSQL*Plus con el fin de dar la posibilidad al operador de modificar la/s condición/es de búsqueda/s.

Duración Estimada: 40 min.

3.2Producción de una salida legible con iSQL*Plus

3.2.8 AP: Consultas con Campos Interactivos

  Laboratorio 3.2.8

Consultas con Campos Interactivos

Utilización de variables de sustitución en iSQL*Plus con el fin de dar la posibilidad al operador de elegir tanto las tablas como sus respectivas columnas a mostrar.

Duración Estimada: 20 min.

3.2Producción de una salida legible con iSQL*Plus

3.2.9 AI: Efectos interactivos de iSQL*Plus con &

Siga los pasos indicados en esta actividad para practicar la interacción de usuario con iSQL*Plus.

Page 165: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 166: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 167: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 168: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

3.2 Producción de una salida legible con iSQL*Plus

3.2.10 AI: Efectos interactivos de iSQL*Plus con &&

Siga los pasos indicados en esta actividad para practicar la interacción de usuario con iSQL*Plus.

Page 169: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

3.2 Producción de una salida legible con iSQL*Plus

3.2.11 Síntesis

SQL*Plus es la herramienta nativa de Oracle 10g para interactuar con la base de datos. SQL*Plus soporta todas las sentencias SQL y posee comandos propios para dar formato y para mejorar la utilización de la herramienta. En Oracle 10g, SQL*Plus incluye comandos que dan soporte a la administración de base de datos. Utilizando esta herramienta, es posible producir sentencias SQL interactivas y reportes con determinado formato de salida. SQL*Plus manipula su propio buffer donde almacena sentencias SQL. Es posible editar el buffer utilizando comandos de edición SQL*Plus. El comando DESCRIBE es utilizado para recuperar información acerca de una tabla, vista, función o procedimiento. 

Page 170: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

Múltiples comandos SQL y SQL*Plus pueden ser almacenados en un archivo y ejecutados como una unidad. Tales archivos se denominan scripts. En SQL*Plus, el comando SET es utilizado para configurar el ambiente de trabajo. El comando COLUMN es utilizado para definir las características de las columnas presentes en una consulta SQL. Es posible definir variables en SQL*Plus. Variables también pueden ser utilizadas en sentencias SQL. Determinados valores serán aceptados como entrada de usuario cuando la sentencia SQL es ejecutada. Variables definidas en SQL*Plus siempre poseen el tipo de dato CHAR. 

iSQL*Plus es la interfase web de SQL*Plus. iSQL*Plus consiste de tres capas: la capa cliente (browser), la capa intermedia (Oracle HTTP Server e iSQL*Plus Server), y la capa de base de datos (base de datos Oracle 10g y Oracle Net). Ciertos comandos SQL*Plus no se encuentran disponibles en iSQL*Plus.

Page 171: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 172: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 173: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 174: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 175: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

ACA SI SE LE ESCRIBE LA PALABRA QUE REALMENTE VA QUE ES “DEFINE” NO LO TOMA COMO VALIDO CUAK! Y EN LA PREGUNTA NUMERO 2 SI BIEN EN EL GRAFICO MARCA OK LA PREGUNTA NO LA TOMA PARA EL PUNTAJE FINAL. OTRO CUAK DEL CUESTIONARIO

Page 176: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4 Tablas

   

La tabla es la estructura básica de almacenamiento en una base de datos Oracle. Como parte de su definición, una tabla posee columnas, cada columna con un tipo específico de datos, y almacena filas de datos. Los usuarios finales y las aplicaciones de software acceden a datos a través de SQL, y manipulan datos a través de sentencias DML (Data Manipulation Language).  Los datos almacenados en varias tablas se relacionan a través de valores de columna comunes. Para establecer estas relaciones entre tablas se especifica que determinada columna puede tomar valores en un dominio o rango de valores específico, o que dicha columna referencia a una columna común en otra tabla. Estas especificaciones se denominan restricciones. Una restricción puede ser considerada como una regla o política definida en la base de datos para forzar reglas de negocio e integridad de datos.

4.1 Manipulación de datos

   

En la figura se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 177: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 178: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.1 Manipulación de datos

4.1.1 Objetivos

En una base de datos Oracle, es posible manipular datos utilizando sentencias DML (Data Manipulation Language). Este tema cubre cómo manipular datos y cómo coordinar cambios múltiples utilizando transacciones. 

Oracle 10g es una base de datos multiusuario, y más de un usuario o sesión puede cambiar datos al mismo tiempo. Este tema también abarca el mecanismo de bloqueos y cómo el mismo es utilizado para controlar esta concurrencia.

Otro efecto de una base de datos multiusuario es que los datos pueden cambiar durante la ejecución de sentencias. Es posible ejercitar determinados controles sobre la consistencia o visibilidad de estos cambios dentro de una transacción.

Page 179: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.1 Manipulación de datos

4.1.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 180: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.1 Manipulación de datos

4.1.3 Descripción de DML

El Lenguaje de Manipulación de Datos o DML (Data Manipulation Language) es una parte central del SQL. Cuando se quiere agregar, modificar, o eliminar datos de la base de datos, se ejecuta una sentencia DML. Un conjunto de sentencias DML que aun no se han hecho permanentes se denomina una transacción o unidad de trabajo lógica. En la figura se muestran los comandos de manejo de datos.

4.1 Manipulación de datos

4.1.4 Descripción del Insert – Sintaxis

Se puede agregar una nueva fila a una tabla por medio de la cláusula INSERT. Este comando con la cláusula VALUES inserta únicamente una fila por vez en la tabla.  Como se puede insertar una nueva fila con valores para cada columna, entonces no se requiere la lista de las columnas en la cláusula INSERT. Sin embargo, los valores deben ser listados de acuerdo al orden que por defecto (como se ven al ejecutarse un DESCRIBE de la tabla) tienen las columnas en la tabla.

Page 181: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

Guías

 Se debe encerrar a los valores de tipo caracter y fecha entre apóstrofos; y no encerrar los valores numéricos.

Para insertar valores nulos en una columna, se puede:

Omitir la columna de la lista (método implícito).Especificar la palabra clave NULL en la lista VALUES (método explícito). Especificar una cadena vacía (‘’) en la lista VALUES; para cadenas de caracteres y valores de fechas (método explícito).

 

Para insertar valores especiales, se pueden usar las siguientes funciones:

SYSDATE, que devuelve la fecha y hora actuales.UID, que devuelve un número entero que identifica unívocamente al usuario actual.USER, que devuelve un tipo VARCHAR2 que representa el nombre del usuario actual.  Para verificar que las filas fueron insertadas dentro de la tabla, se puede escribir una sentencia SELECT 

 . 

Sepa que puede usar valores nulos en la columna de destino verificando el estado Null  con el

comando DESCRIBE  de iSQL*Plus 

Page 182: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.1 Manipulación de datos

4.1.5 Inserción de Fechas

Cuando se ingresa un valor de fecha, el formato usado es el definido por la variable correspondiente en el registro de Windows para Oracle 10g. Si se requiere ingresar una fecha en otro formato, se debe utilizar la función TO_DATE.

Page 183: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.1 Manipulación de datos

4.1.6 Copia de Registros desde otra tabla

Se puede usar la sentencia INSERT para agregar filas a una tabla donde los valores se derivan de otras tablas ya existentes. En lugar de la cláusula VALUES, se usa una subconsulta. El número de columnas en la lista de la cláusula INSERT debe coincidir con el número de valores en la subconsulta.   En la figura se muestra un ejemplo en donde se copia a la tabla JOB_HISTORY los empleados del departamento numero 60.

4.1 Manipulación de datos

4.1.7 Descripción del Update – Sintaxis

Se pueden modificar filas existentes en una tabla usando la cláusula UPDATE.  Confirme la operación de actualización realizando una consulta en la tabla para mostrar las filas actualizadas.

Page 184: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.1 Manipulación de datos

4.1.8 Importancia del WHERE en actualizaciones

Por lo general, es conveniente usar la clave primaria para identificar a una fila en particular . El uso de otras columnas puede causar que inesperadamente se actualicen varias filas. Por ejemplo, identificar a una fila en la tabla VENDEDORES por la columna APELLIDOS es peligroso porque varios empleados pueden tener el mismo. Para verificar las modificaciones se puede escribir una sentencia SELECT que consulte las filas correspondientes.

Actualizar Todas las Filas de la Tabla

 

Si no se incluye una cláusula WHERE en el comando UPDATE, todas las filas de la tabla serán actualizadas.

Page 185: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.1 Manipulación de datos

4.1.9 Manejo de Foreign Key en actualizaciones

Si se intenta actualizar un registro con un valor que viola una restricción de integridad, se producirá un error. Si el valor especificado no existe en la tabla padre (en este caso no existe el departamento 250), entonces se obtendrá el código de error ORA-02291 que indica la violación. Puede actualizar varias columnas en la cláusula SET de una sentancia UPDATE escribiendo varias subconsultas.

4.1 Manipulación de datos

4.1.10 Descripción del Delete – Sintaxis

Se pueden eliminar filas usando la cláusula DELETE , si se omite la cláusula WHERE, se eliminarán todas las filas de la tabla. Para verificar las eliminaciones se puede escribir una sentencia SELECT que consulte las filas borradas.  En la figura se muestra un ejemplo del uso del comando DELETE.

Page 186: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.1 Manipulación de datos

4.1.11 Manejo de Foreign Key en eliminaciones

Si se intenta borrar un registro con un valor que viola una restricción de integridad, se producirá un error. Si el registro padre que se intenta borrar tiene registros hijos, se recibirá el mensaje de “registro hijo encontrado”, con el código ORA-02292 para esa violación.

Page 187: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.1 Manipulación de datos

4.1.12 Descripción del Merge – Beneficios

La sentencia MERGE, introducida en Oracle 10g, posibilita que una única sentencia SQL sea utilizada tanto para actualizar como para insertar filas en una tabla. La misma posee una especificación de unión que describe cómo determinar si debe ejecutarse una operación UPDATE o INSERT.

La sentencia MERGE provee una operación del tipo UPDATE-ELSE-INSERT, esto es, actualizar si la fila existe, insertar en caso contrario. Dicha operación es útil en ambientes de almacenes de datos (data warehousing), donde se realiza la actualización incremental de un destino basado en uno o más orígenes de datos.

Como ejemplo, considerar que existe una tabla denominada new_sales que contiene inserciones y actualizaciones que deben ser aplicadas a una tabla destino denominada sales. El diseño del proceso de carga del almacén de datos determina que la tabla new_sales contiene filas según la siguiente semántica:

Si un registro, identificado por sales_transaction_id, correspondiente a una transacción en la tabla new_sales existe en sales, entonces la tabla sales adicionar los valores monto de venta (sales_dollar_amount) y cantidad vendida (sales_quantity_sold) de la tabla new_sales a la fila existente en la tabla sales.

En caso contrario, el nuevo registro completo de la tabla new_sales en la tabla sales.

Previo a Oracle 10g, dicha semántica debería ser implementada a través de dos sentencias SQL. Una sentencia para actualizar las filas apropiadas en la tabla sales, y otra para insertar las nuevas filas en sales . A partir de Oracle 10g, una operación merge puede ser ejecutada utilizando una única sentencia SQL .

Todo trigger de INSERT o UPDATE definido sobre la tabla destino será ejecutado tal como si se ejecutase un INSERT o UPDATE estándar.

En la cláusula de actualización, no es posible especificar DEFAULT cuando se está actualizando una vista, y no es posible actualizar una columna que haya sido referenciada en la cláusula ON. Además, en la misma sentencia MERGE, no es posible actualizar la misma fila de la tabla destino múltiples veces. Es posible, no obstante, agregar los resultados en una vista en línea en la cláusula USING .

Page 188: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 189: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.1 Manipulación de datos

4.1.13 Descripción de transacciones

Oracle 10g Server asegura consistencia con los datos basándose en transacciones. Las transacciones otorgan más flexibilidad y control cuando cambian los datos y aseguran consistencia en los datos ante una eventual falla en el proceso del usuario o una falla del sistema. Existen tres tipos de transacciones

. Las transacciones consisten en comandos DML que llevan a cabo un cambio en los datos de manera consistente. Por ejemplo, una transferencia de fondos entre dos cuentas, debiera incluir un crédito en una cuenta y un débito en la otra por la misma cantidad. Ambas acciones debieran tener éxito o fallar como una sola operación. El crédito no debiera poder confirmarse sin el débito correspondiente. En la figura se muestran los comandos utilizados para el control de transacciones. El control de transacciones se puede hacer tanto en forma explícita como implícita .  El comando AUTOCOMMIT se puede activar y desactivar. Si se activa, cada sentencia DML individual se valida en cuanto se ejecuta. No puede hacer rollback en los cambios. Si se desactiva, la sentencia COMMIT aún se puede emitir explícitamente. Además, la sentencia COMMIT se omite al emitirse una sentencia DDL o al salir de iSQL*Plus.

Page 190: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 191: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.1 Manipulación de datos

4.1.14 Consistencia de Lecturas

Oracle 10g Server garantiza la consistencia de lectura registrando los valores anteriores de los datos que fueron cambiados por cada transacción (cometida o no) en los segmentos de rollback. Sólo Oracle 10g puede acceder a los segmentos de Rollback, ni los usuarios ni el DBA pueden acceder a ellos. Si hay una falla en el sistema, Oracle 10g automáticamente recupera la información del segmento, incluyendo las entradas de rollback para transacciones interactivas. Una vez que se completa la recuperación, Oracle 10g cancela las transacciones que no fueron completadas ni vueltas hacia atrás en el momento de la falla. Para cada segmento rollback, Oracle 10g mantiene una tabla de transacciones: 

una lista de todas las transacciones que usan los segmentos de rollback las entradas de rollback por cada cambio realizado por estas transacciones.  

Los segmentos de rollback registran los valores de los datos antes de los cambios para cada transacción, luego vinculan cada nuevo cambio al cambio previo. Si se debe recuperar una transacción, Oracle 10g aplica los cambios en cadena a los bloques de datos en orden de manera que los datos sean reestablecidos a sus valores originales. Cada vez que una transacción de usuario comienza, se le asigna un segmento de rollback en una de las siguientes dos maneras: Oracle 10g puede asignar una transacción automáticamente al próximo segmento de rollback disponible. La asignación de la transacción ocurre cuando se edita la primer sentencia DML en la transacción. Nunca se asignan transacciones de solo lectura a un segmento rollback. 

Una aplicación puede asignar una transacción a un segmento de rollback específico. Al comienzo de una transacción, un desarrollador o usuario de aplicaciones puede especificar un segmento rollback particular que Oracle 10g debería usar cuando se ejecute la transacción.

Cuando una transacción se completa (commit), Oracle 10g libera la información de rollback pero no la destruye inmediatamente. La información permanece en el segmento de rollback para crear vistas consistentes de lectura de los datos pertinentes para las consultas que comenzaron antes que la transacción se completara exitosamente.

Page 192: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 193: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 194: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.1 Manipulación de datos

4.1.15 Bloqueos

La sentencia SELECT FOR UPDATE se usa para bloquear registros específicos de una tabla, prohibiendo a otras sesiones modificar o borrar los registros bloqueados. Cuando los registros están bloqueados, otras sesiones pueden seleccionar estos registros pero no pueden modificarlos o bloquearlos. La sintaxis de esta sentencia es igual a la de la sentencia SELECT, agregándole la cláusula FOR UPDATE al final de la sentencia. Los registros bloqueados solo se liberarán a través de un COMMIT o ROLLBACK, aun cuando los datos no hayan sido modificados. Bloqueo de tabla La sentencia LOCK se usa para bloquear en forma explícita una tabla completa, prohibiéndole a otras sesiones realizar algunas o todas las operaciones DML sobre la misma. En la figura , se muestra la sintaxis de dicha sentencia.El uso de bloqueos explícitos incrementa la posibilidad de que se produzcan abrazos mortales (deadlocks), por o tanto se lo debe usar cuidadosamente y con moderación.Un abrazo mortal (deadlocks) ocurre cuando dos transacciones poseen bloqueos y cada una esta esperando por el bloqueo que maneja la otra. Oracle 10g Server detecta esta condición y dispara una excepción en una de las dos sesiones. Bloqueo DML Para administrar la concurrencia, múltiples sesiones modificando el mismo dato al mismo tiempo, Oracle 10g Server emplea los bloqueos a nivel de tabla y de registro. Los bloqueos a nivel de registro son siempre exclusivos, los de tabla pueden ser tanto compartido como exclusivo. Los bloqueos compartidos prohíben que haya otro exclusivo pero si permiten otros compartidos sobre el mismo recurso. Los exclusivos prohíben que haya tanto otro compartido como otro exclusivo. Sin embargo, los bloqueos no prohíben los accesos de lecturas. Para modificar un dato, Oracle 10g debe adquirir un bloqueo de nivel de registro sobre las filas que se modificaran. Las sentencias INSERT, UPDATE, DELETE y SELECT FOR UPDATE bloquean implícitamente los registros a los que afectan. Oracle 10g Server usa cinco tipos de bloqueos .En la figura , se muestra un cuadro resumiendo los tipos de bloqueos que maneja Oracle 10g Server.

Page 195: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 196: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 197: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.1 Manipulación de datos

4.1.16 AI: Insert

Ejercitar inserciones de datos uniendo con flechas.

Page 198: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.1 Manipulación de datos

4.1.17 AI: Update

Complete la sentencia UPDATE arrastrando las partes al lugar correspondiente. Para esto, considere las siguientes premisas con respecto a la sentencia UPDATE resultante: 

Actualiza sólo aquellos empleados que trabajan en “Santa Fe” o en “Buenos Aires” (localidades cuyos códigos corresponden a 2900 y 2700, respectivamente).

Para estos empleados, establece su valor department_id al ID de departamento correspondiente a “Bombinhas” (location_id 2100)

Establece el salario de cada empleado a 1,1 veces el salario promedio de su departamento Establece la comisión de cada empleado a 1,5 veces la comisión promedio de su departamento.

4.1 Manipulación de datos

4.1.18 AI: Delete

Responda “V” (Verdadero) o “F” (Falso) según sean los pares de sentencias DELETE equivalentes o no.

Page 199: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.1 Manipulación de datos

4.1.19 AI: Merge

Teniendo en cuenta el estado de las tablas PRODUCT_INFORMATION y NEW_PRICES antes y después de la ejecución de la operación de merge, lea cuidadosamente la sentencia MERGE ejecutada y clasifique las filas resultantes con “I” (Inserted) o “U” (Updated).

Page 200: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.1 Manipulación de datos

4.1.20 AI: Manejo de transacciones

¿Cuál de las sentencias de la figura no finaliza una transacción?

4.1 Manipulación de datos

4.1.21 Síntesis

Este tema abarcó cómo manipular datos. Esto incluye las sentencias DML INSERT, UPDATE, MERGE y DELETE, conjuntamente con SELECT FOR UPDATE y LOCK TABLE. La sentencia TRUNCATE posee similitudes a DELETE, pero también poseen diferencias importantes.

Se discutió sobre concurrencia y cómo utilizar bloqueos para gestionar cambios concurrentes, resaltando los causales de deadlocks (bloqueos simultáneos). Además, se discutió sobre consistencia y cómo utilizar transacciones para gestionar consistencia. La sentencia SET TRANSACTION es usualmente utilizada para establecer consistencia a nivel de sentencia o de transacción, y la misma puede también ser utilizada para asignar explícitamente una transacción a un segmento de rollback específico.

Page 201: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.2 Creación y gestión de tablas

   

En la figura se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 202: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 203: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.2 Creación y gestión de tablas

4.2.1 Objetivos

La tabla es la estructura básica de almacenamiento en una base de datos Oracle. Una tabla posee columnas como parte de su definición y almacena filas de datos. Este tema abarca la creación y modificación de tablas, así como también cubre los diferentes tipos de dato que pueden ser utilizados al especificar una columna.

4.2 Creación y gestión de tablas

4.2.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 204: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 205: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.2 Creación y gestión de tablas

4.2.3 Descripción de los objetos de una base de datos

Un esquema es una colección de objetos que están disponibles a un usuario. Los objetos de un esquema son las estructuras lógicas que refieren directamente a los datos de la base de datos. Los objetos de un esquema incluyen estructuras tales como tablas, vistas, secuencias, procedimientos almacenados, sinónimos e índices.  

Tablas: Una tabla es la unidad básica de almacenamiento de datos en una base de datos Oracle. Las tablas de una base de datos mantienen todos los datos accesibles por el usuario.

 Vistas: Una vista es una presentación “hecha a medida” de los datos en una o más tablas. Las vistas también pueden ser interpretadas como “consultas almacenadas”. Una vista es una “tabla virtual” que no contiene o almacena datos en la base de datos, sino que estos están definidos mediante una consulta.

 Secuencias: Una secuencia genera una lista serial de números únicos para columnas numéricas de tablas de una base de datos. Las secuencias simplifican la programación de la aplicación generando automáticamente valores numéricos únicos para las filas de una única tabla o múltiples tablas.

 Sinónimos: Un sinónimo es un alias para una tabla, vista, secuencia o unidad de programa. Un sinónimo no es realmente un objeto en sí mismo, sino una referencia directa a un objeto.

 Índices: Los índices son estructuras opcionales asociadas con tablas, que pueden ser creadas para incrementar la performance en la recuperación de datos. Cuando se procesa una consulta, Oracle 10g puede usar algunos o todos los índices disponibles para ubicar las filas consultadas eficientemente.Los índices son lógica y físicamente independientes de los datos. Ellos pueden ser creados y borrados en cualquier momento sin efecto sobre las tablas u otros índices.

Page 206: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.2 Creación y gestión de tablas

4.2.4 Descripción de DDL

Los comandos DDL son un subconjunto de comandos SQL usados para crear, modificar o eliminar estructuras de base de datos en Oracle, agregar comentarios para el diccionario de datos, establecer opciones de auditoría y analizar tablas, índices o cluster.

Esos comandos tienen un efecto inmediato sobre la base de datos y también graban información en el diccionario de datos.

Page 207: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.2.4 Descripción de DDL

4.2.4.1 Reglas de Nomenclatura

Instrucciones de Nomenclatura

 

Use nombres descriptivos pára tablas y otros objetos de base de datos

Page 208: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.2 Creación y gestión de tablas

4.2.5 Tablas de Usuario

Las tablas de usuario son tablas destinadas a ser utilizadas por los usuarios finales de la base de datos. Las mismas son creadas y manipuladas por los usuarios finales y contienen datos propios de las aplicaciones que utilizan la base de datos.

Un usuario final de la base de datos realiza inserciones, actualizaciones y eliminaciones de datos sobre tablas de usuario. Las tablas que pertenecen al diccionario de datos son gestionadas por el DBMS y no deberían ser modificadas por un usuario final.

Las tablas del diccionario de datos existen durante toda la vida útil de la base de datos y son vitales para el correcto funcionamiento de la misma. Las tablas de usuario poseen existencia finita; las mismas son creadas y eliminadas de acuerdo a requerimientos específicos de un usuario o aplicación particular .

Page 209: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 210: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 211: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 212: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.2 Creación y gestión de tablas

4.2.6 Diccionario de datos

El diccionario de datos es una de las partes más importantes de una base de datos Oracle. Es un conjunto de tablas solo-lectura las cuales proveen información acerca de su base de datos asociada.  Ya que el diccionario es solo-lectura, los usuarios solo pueden acceder al mismo ejecutando la sentencia SELECT.  Los datos en las tablas base de un diccionario de datos son necesarios para que Oracle 10g Server funcione. Por lo tanto, solo Oracle 10g Server debería escribir o cambiar el diccionario de datos. 

Durante la operación de una base de datos, Oracle 10g Server lee el diccionario de datos para averiguar

que los objetos existen y que usuarios tienen los permisos de acceso a ellos. Oracle 10g Server también

actualiza el diccionario de datos continuamente para reflejar los cambios en las estructuras y permisos

de la base de datos.

4.2 Creación y gestión de tablas

4.2.7 Tipos de datos

Cuando se crea una tabla, se debe especificar el tipo de dato deseado para cada columna de la misma. Oracle 10g Server posee varios tipos de datos para almacenar diferentes tipos de información y trata de diferente manera a valores con tipos de datos distintos. Los tipos de datos básicos son carácter (character), número (number), fecha (date) y RAW.

El ancho de columna determina el número de caracteres máximo para los valores de esa columna. Se debe especificar el tamaño para las columnas de tipo VARCHAR2. Se puede especificar el tamaño para las columnas de tipo NUMBER y CHAR, aunque se dispone de los valores por defecto (38 para

Page 213: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

NUMBER y 1 para CHAR).

Los tipos de datos en Oracle 10g pueden encontrarse clasificados en cinco grandes categorías:

Caracteres: almacenan datos alfanuméricos, representan palabras y texto, y manipulan cadenas de caracteres.

Numéricos: almacenan números de punto fijo o flotante de cualquier tamaño. Fecha y Hora: almacenan valores de fecha y hora de longitud fija. Binarios: almacenan imágenes, audio/video, archivos ejecutables, y datos similares. ROW ID: almacenan la dirección de almacenamiento físico de las filas de las tablas. Cada tabla

tiene una pseudo-columna llamada ROWID. 

Los tipos de objetos largos se utilizan para almacenar datos de gran tamaño y de longitud variable dentro de una base de datos Oracle 10g, estos tipos provienen de las diferentes categorías: CLOB, NCLOB, BLOB y BFILE.

4.2 Creación y gestión de tablas

4.2.8 Crear una tabla – Sintaxis

Es posible crear tablas para almacenar datos ejecutando el comando SQL CREATE TABLE. Este es uno de los comandos del lenguaje de definición de datos o DDL (Data Definition Language).  Para crear una tabla, un usuario debe tener el privilegio CREATE TABLE y un área de almacenamiento para crear objetos. El administrador de la base de datos usa comandos del lenguaje de control de datos o DCL (Data Control Language), para otorgarle privilegio a los usuarios. En la figura , se muestra la sintaxis abreviada de este comando y en la un ejemplo de su utilización. 

Nota: para obtener información sobre las tablas que tiene creadas en su esquema puede consultar la vista del diccionario de datos USER_TABLES.

Page 214: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.2 Creación y gestión de tablas

4.2.9 Modificar una tabla – Sintaxis

Una vez que se han creado las tablas, se pueden modificar sus estructuras usando el comando ALTER TABLE. También es posible agregar o eliminar columnas, modificar la longitud de las mismas, agregar o eliminar restricciones y habilitar o deshabilitar restricciones usando este comando.

Agregar una Columna

Se pueden agregar columnas a una tabla usando el comando ALTER TABLE con la cláusula ADD.  -

Page 215: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

Observaciones

No se puede especificar la posición de la columna. La nueva columna se convierte en la última. Si una tabla ya contiene filas cuando se agrega una columna, entonces todos los campos en la

columna nueva son inicialmente NULL. Solamente se puede definir una columna NOT NULL que no contiene filas, porque los datos no

pueden ser especificados al mismo tiempo que se agrega la columna.

Modificar una Columna

Se puede modificar la definición de una columna usando el comando ALTER TABLE con la cláusula MODIFY. La modificación de la columna puede incluir cambios de su tipo de dato, tamaño, valor por defecto y restricción de NOT NULL.  -  

Eliminar una Columna

Se puede eliminar una columna usando el comando ALTER TABLE con la cláusula DROP  -  o puede marcarla como no utilizada (con la cláusula SET UNUSED) para eliminarla en otro momento para evitar las horas pico de uso de la base de datos, sobre todo si la tabla es muy grande ya que Oracle 10g Server tiene que reconstruir la tabla entera y ocupa muchos recursos para reconstruir tablas grandes.  -  

Observaciones

Los índices y las restricciones de la/s columna/s también son eliminados. Las columnas marcadas como no utilizadas no aparecerán si ejecuta el comando DESCRIBE. No es posible seleccionar la columna a eliminar si hay más de una marcada como no utilizada.

En Oracle 10g Server se pueden eliminar más de una columna a la vez.

Opción DEFAULT: Cuando se define una tabla, se puede especificar que se asigne un valor por defecto a una columna mediante la opción DEFAULT. Esta opción evita que se introduzcan valores nulos en las columnas si se inserta una fila sin un valor para la columna. El valor por defecto puede ser un literal, una expresión o una función SQL . 

Page 216: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 217: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 218: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 219: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.2 Creación y gestión de tablas

4.2.10 Eliminar una tabla – Sintaxis

    

Si se quiere eliminar una tabla, se debe borrar tanto las filas como la estructura de la misma, invocando el comando DROP TABLE. Otros comandos que afectan a las tablas, que son cubiertos en esta sección son:

       RENAME, para cambiar el nombre a un objeto de la base de datos.       TRUNCATE, para eliminar todas las filas de una tabla.

 El comando DROP TABLE elimina la definición de una tabla en Oracle 10g. Cuando se elimina una tabla, la base de datos pierde todos los datos que hay en ella y todos sus índices asociados. La opción CASCADE CONSTRAINTS también elimina todas las restricciones de integridad dependientes.  El comando DROP TABLE, una vez ejecutado, es irreversible. Oracle 10g Server no consulta al usuario una vez que éste ejecuta el comando DROP TABLE. Si el usuario es el propietario de la tabla o tiene un privilegio de alto nivel, la tabla se elimina inmediatamente. Todos los comandos DDL llevan a cabo un commit, por lo tanto, la transacción se hace permanente. 

 Renombrar y Truncar una Tabla Existen comandos DDL, entre ellos el comando RENAME, que se usa para renombrar una tabla, vista, secuencia o sinónimo. Cuando renombra una tabla, Oracle 10g Server automáticamente transfiere las restricciones de integridad, índices y privilegios de la tabla vieja a la nueva. Todos los objetos que dependían de la tabla renombrada, tales como vistas, sinónimos, procedimientos almacenados y funciones, quedaran en estado inválido. Este comando se puede utilizar solo para renombrar los objetos

Page 220: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

que usted es dueño, no puede renombrar objetos de otro usuario, para eso se debe utilizar el comando ALTER TABLE con la cláusula RENAME TO.  El comando TRUNCATE TABLE , que se usa para eliminar todas las filas de una tabla y liberar el espacio utilizado por la misma. Utilizando la sentencia TRUCATE, es diferente a eliminar una tabla y recrearla, debido a que TRUNCATE no invalida a los objetos dependientes, además no elimina a los índices, triggers o restricciones de integridad referencial.

Nota: todos esos comandos son de definición de datos o DDL. Cuando se emiten esas sentencias, se realiza un commit automático. No se puede hacer un rollback sobre comandos DDL. Por lo tanto, se debe ser muy cuidadoso cuando se los ejecuta.

Page 221: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.2 Creación y gestión de tablas

4.2.11 AP: Creación y gestión de tablas

  Laboratorio 4.2.11

Creación y gestión de tablas

Creación de tablas, anexo de nuevas columnas y modificación de columnas existentes.Eliminación de contenidos de una tabla.

Duración Estimada: 30 min.

4.2 Creación y gestión de tablas

4.2.12 AI: Crear tablas

Teniendo en cuenta la sentencia CREATE TABLE presentada en la figura, seleccione la opción que mejor describa a esta sentencia.

Page 222: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.2 Creación y gestión de tablas

4.2.13 AI: Modificar tablas

Seleccione la/s sentencia/s que considere correcta/s para eliminar la columna SALARY de la tabla EMPLOYEES.

Page 223: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.2 Creación y gestión de tablas

4.2.14 Síntesis

Las tablas son la estructura básica para el almacenamiento de datos. Una tabla contiene filas y columnas, como una planilla de cálculo. Cada columna posee determinada característica que restringe y verifica los datos que la misma almacena. Existen varios tipos de dato que pueden ser utilizados para definir columnas. CHAR, NCHAR, VARCHAR2, CLOB y NCLOB son los tipos de dato caracter o alfanuméricos. BLOB, BFILE y RAW son los tipos de dato binarios. DATE, TIMESTAMP e INTERVAL son los tipos de dato fecha. Además, el tipo de dato TIMESTAMP puede almacenar información de zona horaria.La sentencia CREATE TABLE es utilizada para crear una nueva tabla. Una tabla debe poseer como mínimo una columna, y un tipo de dato debe ser asignado a dicha columna. Nombres de tabla y nombres de columna deben comenzar con una letra y pueden contener: letras, números o caracteres especiales. Es posible crear una nueva tabla a partir de una tabla existente utilizando la sentencia (CTAS) CREATE TABLE ... AS SELECT ... . Es posible adicionar, modificar o eliminar columnas de una tabla existente utilizando la sentencia ALTER TABLE. Antes de cambiar el tipo de dato de una columna, la misma debe estar vacía.

Page 224: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.3 Inclusión de restricciones

   

En la figura se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 225: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 226: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.3 Inclusión de restricciones

4.3.1 Objetivos

En una base de datos relacional, los datos almacenados en varias tablas pueden estar relacionados. Una restricción puede ser considera como una regla o política definida en la base de datos para forzar reglas de negocio e integridad de datos. Este tema abarca la creación y utilización de restricciones.

4.3 Inclusión de restricciones

4.3.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 227: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.3 Inclusión de restricciones

4.3.3 Descripción de restricciones

Las restricciones (constraints) garantizan el cumplimiento de las reglas a nivel de tablas, en cualquier momento que una fila es insertada, actualizada o borrada de la tabla. Las restricciones deben ser satisfechas para que la operación tenga éxito. Además, impiden la eliminación de una tabla si existen dependencias desde otras tablas.

 

Page 228: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

Todas las restricciones se encuentran almacenadas en el diccionario de datos. Las restricciones son fáciles de referenciar si se les da un nombre significativo. Los nombres deben seguir las reglas estándar para los nombres de los objetos. Si no se le asigna un nombre a la restricción, Oracle 10g Server genera uno con el formato SYS_Cn, donde n es un entero para crear un nombre único. Las restricciones pueden ser definidas a uno de dos niveles.  Obviamente existen otros métodos de definir reglas obre una columna de una tabla (triggers, procedimientos, funciones, etc.) pero las restricciones de integridad presentan algunas ventajas.

Page 229: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.3 Inclusión de restricciones

4.3.4 Tipos de restricciones

 

La Restricción NOT NULL

La restricción NOT NULL asegura que en la columna no se permitan valores nulos. Las columnas sin la restricción NOT NULL pueden contener valores nulos, por defecto. Esta restricción puede especificarse solamente a nivel de columna, no a nivel de tabla.

La Restricción UNIQUE

Una restricción UNIQUE define a una columna o combinación de ellas como una clave única. Dos filas en la misma tabla no pueden tener el mismo valor para esta clave. Se permiten valores nulos si la clave se basa en una sola columna.

Las restricciones UNIQUE pueden definirse como restricción a nivel de columna o restricción a nivel de tabla. Una clave única compuesta se crea usando la definición de restricción a nivel de tabla.

Para una columna clave única se crea automáticamente un índice UNIQUE.

Una restricción UNIQUE no es lo mismo que, o un sinónimo de, la restricción PRIMARY KEY.

La Restricción PRIMARY KEY

Una restricción PRIMARY KEY crea una clave primaria para la tabla. Se puede crear solamente una clave primaria por tabla. La restricción PRIMARY KEY es una columna, o conjunto de ellas, que identifican unívocamente a cada fila de una tabla. Esta restricción garantiza la unicidad de la columna (o combinación de ellas) y asegura que ninguna columna que sea parte de la clave primaria pueda contener un valor nulo.

Puede definirse a nivel de columna o de tabla. Una clave primaria compuesta se crea usando la definición a nivel de tabla.

Se crea automáticamente un índice UNIQUE para la columna PRIMARY KEY.

La Restricción FOREIGN KEY

La restricción FOREIGN KEY, o de integridad referencial, designa a una columna, o combinación de ellas, como una clave foránea y establece una relación con una clave primaria o clave única de la misma tabla o de otra tabla.

El valor de la clave foránea debe ser del mismo tipo que el de la tabla padre, o debe ser NULL.

Las restricciones FOREIGN KEY pueden definirse a nivel de columna o de tabla. Una clave foránea compuesta se crea usando la definición a nivel de tabla.

Las claves foráneas están basadas en valores de datos y son puramente lógicas, no son punteros físicos.

Una clave foránea que es parte de una clave primaria no puede tener un valor NULL porque ninguna parte de una clave primaria puede tenerlo.

La clave foránea se define en la tabla hija, y la tabla que contiene la columna referenciada es la tabla padre. Para definirla se usa una combinación de las siguientes palabras claves:

FOREIGN KEY se usa para definir la columna en la tabla hija, cuando se establece la restricción a nivel de tabla.

REFERENCES identifica la tabla y columna de la tabla padre. ON DELETE CASCADE indica que cuando se borra la fila en la tabla padre, las filas

dependientes en la tabla hija, también serán borradas. ON DELETE SET NULL convierte valores de clave ajena en nulos cuando se elimina el valor

Page 230: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

principal.

Sin la opción ON DELETE CASCADE, la fila en la tabla padre no puede ser borrada mientras haya referencias a ella en la tabla hija.

La Restricción CHECK

La restricción CHECK define la condición que cada fila debe satisfacer. La condición puede usar la misma sintaxis que las condiciones de las consultas, pero no permite:

Referencias a las pseudocolumnas CURRVAL, NEXTVAL, LEVEL o ROWNUM. Llamadas a las funciones SYSDATE, UID, USER o USERENV. Consultas que refieran a otros valores de otras filas.

Pueden ser definidas tanto a nivel de columna como a nivel de tabla. La sintaxis de la restricción puede aplicarse a cualquier columna en la tabla, no solamente a la columna sobre la que se está definiendo.

La figura  muestra un cuadro con los distintos tipos de restricciones desarrollados en este punto.

4.3 Inclusión de restricciones

4.3.5 La palabra clave CONSTRAINT

Las restricciones son generalmente creadas en el mismo momento que la tabla. Pueden ser agregadas a la tabla después de su creación y también desactivadas temporalmente, lo cual será tratado más adelante.

Nota: para visualizar las restricciones que tiene definidas sobre sus objetos puede consultar la vista del diccionario de datos USER_CONSTRAINTS, y para obtener información sobre las columnas incluidas en cada restricción USER_CONS_COLUMNS.

Page 231: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.3 Inclusión de restricciones

4.3.6 Sintaxis para generar CONSTRAINT

Se puede agregar o eliminar una restricción para tablas existentes usando el comando ALTER TABLE con la cláusula ADD o DROP.

Agregar una RestricciónPara agregar una restricción a una tabla existente se debe utilizar el comando ALTER TABLE con la cláusula ADD.

Page 232: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

El nombre de la restricción es opcional, aunque se lo recomienda. Si no se asigna un nombre a la restricción, el sistema generará uno.

Eliminar una Restricción

Para eliminar una restricción, se puede identificar el nombre de la restricción desde las vistas USER_CONSTRAINS y USER_CONS_COLUMNS del diccionario de datos. Luego se debe usar el comando ALTER TABLE con la cláusula DROP. La opción CASCADE de la cláusula DROP causa que también se elimine cualquier restricción dependiente.

Cuando se elimina una restricción de integridad, Oracle 10g Server ya no garantiza su cumplimiento y además ya no se encuentra disponible en el diccionario de datos.

Recomendaciones

· Se puede agregar, eliminar, habilitar o deshabilitar una restricción, pero no se puede modificar su estructura.

· Se puede agregar una restricción de NOT NULL a una columna existente usando la cláusula MODIFY del comando ALTER TABLE.

Page 233: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.3 Inclusión de restricciones

4.3.7 Desactivación – Activación de restricciones

Cuando se crea una restricción, a menos que se especifique lo contrario (usando la cláusula DISABLE), queda automáticamente habilitada. Se pueden habilitar o deshabilitar restricciones sin eliminarlas o recrearlas usando el comando ALTER TABLE con la cláusula ENABLE o DISABLE. Al deshabilitar una restricción de tipo UNIQUE KEY o PRIMARY KEY, Oracle 10g Server elimina el índice asociado a dicha restricción y cuando se vuelve a habilitar, el índice es creado nuevamente.No se puede deshabilitar una UNIQUE KEY o PRIMARY KEY si existen FOREING KEY habilitadas que le hacen referencia. Con la cláusula CASCADE se deshabilitan las restricciones de integridad dependientes. Las cláusulas ENABLE y DISABLE afectan solo a futuros datos que serán agregados o modificados en la tabla. En cambio, las cláusulas VALIDATE y NOVALIDATE en el comando ALTER TABLE actúan sobre los datos existentes.

Oracle 10g Server no permite operaciones DML en una tabla que contenga restricciones DISABLE VALIDADTE. Esta es una forma rápida de poner una tabla en modo solo lectura.

Page 234: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.3 Inclusión de restricciones

4.3.8 Verificación de restricciones diferidas

Diferir la validación de una restricción consiste en forzar el chequeo de las condiciones para que se realicen al final de una transacción. De esta forma, una restricción puede ser diferida (deferred) o no diferida (not deferred). Por otro lado, es posible especificar durante la creación de la restricción en la cláusula CONSTRAINTS si la misma puede ser diferible (DEFERRABLE) o no diferible (NOT DEFERRABLE). En este último caso, no se permitirá forzar el chequeo de manera diferida. Las restricciones pueden ser agregadas, eliminadas, habilitadas o deshabilitadas pero no alteradas. Específicamente no se puede alterar una restricción NOT DEFERRABLE para hacerla DEFERRABLE

. Si una restricción es diferible, utilizando los comandos SET CONSTRAINT o ALTER SESION SET CONSTRAINT es posible diferir la verificación de todas las restricciones en conjunto o de una restricción en particular. Para diferir la verificación de todas las restricciones se utiliza la cláusula ALL. Para diferir la verificación de una restricción particular se especifica el nombre de la misma. SET CONSTRAINT cambia el comportamiento para la transacción en curso y ALTER SESION SET CONSTRAINT para toda la sesión. Las definiciones de las restricciones de integridad se realizan en la creación de tablas (CREATE TABLE) o cuando se altera una tabla (ALTER TABLE). Cabe destacar que, si una restricción causa una acción (por ejemplo, DELETE CASCADE) la acción es siempre realizada como parte de la sentencia que la causa, independientemente si la restricción es diferida o inmediata.

Page 235: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.3 Inclusión de restricciones

4.3.9 AP: Manejo de todo tipo de restricciones

  Laboratorio 4.3.9

Manejo de todo tipo de restricciones

Aseguramiento de la integridad de los datos y cumplimiento de especificaciones de negocio mediante la aplicación de diferentes tipos de restricciones.

Duración Estimada: 20 min.

4.3 Inclusión de restricciones

4.3.10 AI: Restricciones Foreign Key

Seleccione la/s sentencia/s que usted consideren erróneas para generar claves ajenas (FOREING KEY).

Page 236: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.3 Inclusión de restricciones

4.3.11 AI: Restricciones Primary Key

Seleccione la sentencia que considere correcta para crear una clave primaria sobre la columna PROD_ID en la tabla de PRODUCTOS.

4.3 Inclusión de restricciones

4.3.12 AI: Restricciones Check

Cuales de las siguientes sentencias son válidas para crear una restricción de tipo CHEK en la tabla de PERSONAS.

Page 237: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

4.3 Inclusión de restricciones

4.3.13 Síntesis

Restricciones son creadas en la base de datos para forzar el cumplimiento de reglas de negocio y para especificar relaciones entre tablas. Una restricción NOT NULL puede ser especificada en la definición de una columna y es utilizada para prevenir valores nulos (ausencia de datos). Restricciones de verificación son utilizadas para verificar si los datos conforman o están de acuerdo con determinadas condiciones. Restricciones de clave primaria identifican de forma unívoca cada fila de una tabla. Puede existir solamente una clave primaria para una tabla, y las columnas en la clave primaria no pueden contener valores nulos. Una clave única es similar a una clave primaria, pero puede existir más de una clave única por tabla y sus columnas pueden contener valores nulos. Restricciones pueden ser habilitadas o deshabilitadas utilizando la sentencia ALTER TABLE. Una restricción puede estar en uno de los cuatro posibles estados: ENABLE VALIDATE, ENABLE NOVALIDATE, DISABLE VALIDATE, y DISABLE NOVALIDATE. El estado por defecto es ENABLE VALIDATE.

Page 238: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

JURO POR DIOS…. QUE NO IMPORTA QUE OPCION ELIJAS TODAS DICE QUE ESTAN MAL… LA RESPUESTA ES INSERT TABLE

Page 239: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 240: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

MMMMMMMMMMMMMMMM me suena a que es COMMIT, SAVEPOINT y ROLLBACK

Page 241: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 242: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 243: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5 Objetos de base de datos

   

Una consulta SQL, restringiendo las filas resultantes, agrupando valores a nivel de grupos de datos, realizando conversiones de datos, etc., puede ser almacenada en la base de datos. Dicha consulta almacenada se denomina vista de datos, o simplemente vista. Una vez que ha sido definida una vista, la misma puede ser tratada como una tabla más de la base de datos. Puede escribirse una sentencia SELECT que acceda, restrinja, agrupe, etc., datos a partir de la vista. Cada vez que se ejecuta una consulta sobre una vista, la consulta almacenada (o vista) es ejecutada. También es posible realizar actualizaciones de datos sobre las vistas, pero esta operación puede no ser posible debido a la complejidad de la vista en cuestión. Además de tablas y vistas, una base de datos Oracle contiene otros tipos de objetos. Secuencias son utilizadas para generar números secuencialmente. Sinónimos proveen alias (sobrenombres) a objetos. Índices son utilizados para mejorar la performance de consultas SQL. Paquetes, procedimientos y funciones, programados en PL/SQL o Java, también pueden ser almacenados en una base de datos Oracle. Por otro lado, Oracle  provee varias formas de controlar el acceso de usuarios. Existen diferentes métodos de autenticación y una cuenta de usuario está definida por un conjunto de atributos que controlan la forma en la cual el usuario se conecta e interactúa con la base de datos. Uno de los mecanismos para controlar el acceso de usuarios es a través de la asignación de privilegios. Otorgando y revocando privilegios es posible especificar las tareas que un usuario determinado puede ejecutar sobre los objetos de la base de datos. La definición de perfiles permite controlar cómo se utilizan los recursos del sistema.

5.1 Creación de vistas

   

En la figura se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 244: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.1 Creación de vistas

5.1.1 Objetivos

Una vista es una representación lógica de datos a partir de una o más tablas o vistas de base. Una vista puede ser pensada como una consulta almacenada en la base de datos. Oracle 10g Server permite crear restricciones sobre las vistas y restringir las operaciones que pueden ser realizadas sobre una vista. Este tema discute el uso de vistas, cómo crear y gestionar vistas, y cómo realizar consultas del tipo n-principales en Oracle 10g utilizando vistas en línea.

Page 245: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.1 Creación de vistas

5.1.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 246: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.1 Creación de vistas

5.1.3 Descripción de las VISTAS

Una vista es una presentación “hecha a medida” de los datos en una o más tablas. Una vista también puede ser pensada como una “consulta almacenada”.

Una vista es una “tabla virtual” en la base de datos cuyos contenidos están definidos por una consulta.Las vistas realmente no contienen o almacenan datos; en lugar de ello, ellas derivan sus datos de tablas sobre las cuales están basadas, referidas como tablas base de las vistas. Las tablas base pueden, a su vez, ser tablas o vistas.Como las tablas, las vistas se pueden consultar, actualizar, insertar en ellas o borrar de ellas, con restricciones. Todas las operaciones efectuadas sobre una vista en realidad afectan a las tablas base de la vista.

 Las vistas que involucran la unión (una sentencia SELECT que selecciona datos de múltiples tablas) de dos o más tablas sólo pueden ser actualizadas bajo ciertas condiciones.

Page 247: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 248: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 249: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 250: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.1 Creación de vistas

5.1.4 Beneficios de las vistas

Las vistas generalmente se utilizan para proveer un nivel de seguridad de tabla adicional restringiendo el acceso a un conjunto predeterminado de filas y columnas de una tabla. Por ejemplo, una vista de una tabla puede ser creada tal que las columnas con datos sensitivos (por ejemplo, información sobre el salario) no sean incluidas en la definición de la vista. Además ocultan la complejidad de los datos. Por ejemplo, una única vista puede combinar doce tablas de ventas mensuales para proveer un año de datos para realizar análisis y reportes. Una única vista puede ser utilizada para crear una unión, que es una muestra de columnas o filas relacionadas en múltiples tablas. Sin embargo, la vista oculta el hecho de que estos datos realmente provienen de varias tablas. Simplifican los comandos para el usuario. Por ejemplo, las vistas permiten a los usuarios seleccionar información de múltiples tablas sin requerir que los usuarios conozcan cómo realizar una subconsulta de correlación. Presentan los datos en una perspectiva diferente de la de la tabla base. Por ejemplo, las vistas proveen un significado a las columnas “renombradas” sin afectar las tablas en las cuales la vista está basada. Permiten a los desarrolladores crear aplicaciones utilizando vistas, lo cual les minimiza el impacto ante cambios en el origen de los datos o en la forma en la cual se obtienen, teniendo que solo modificar la definición de la vista. Almacenan consultas complejas. Por ejemplo, una consulta podría ejecutar cálculos extensos con información de una tabla. Grabando esta consulta como una vista, los cálculos son realizados sólo cuando la vista es consultada. Hay dos clasificaciones para las vistas: simples y complejas La diferencia básica tiene que ver con las operaciones DML (INSERT, UPDATE y DELETE).

Una vista simple es la que:

Deriva datos de una sola tabla No contiene funciones ni grupos de datos Puede realizar operaciones DML a través de la vista

 Una vista compleja es la que:

Deriva datos de muchas tablas Contiene funciones o grupos de datos No siempre permite operaciones DML a través de la vista

 

Page 251: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.1 Creación de vistas

5.1.5 Sintaxis para la creación de las vistas

Es posible crear una vista embebiendo una subconsulta en la sentencia CREATE VIEW.  

Para modificar una vista se debe utilizar la cláusula CREATE OR REPLACE en la sentencia CREATE VIEW. Puede controlar los nombres de columna mediante la inclusión de alias de columna en la subconsulta. Con la opción OR REPLACE, se puede crear una vista incluso si ya existe una con el mismo nombre, de modo que sustituirá a la versión antigua de la vista para su propietario. Esto significa que la vista se puede modificar sin tener que borrar, volver a crear y volver a otorgar privilegios de objeto.

Page 252: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.1 Creación de vistas

5.1.6 Consulta de una vista

Una vez creada una vista, puede visualizar los datos utilizando la sentencia SELECT de la misma forma que lo hace con las tablas.

Page 253: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 254: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.1 Creación de vistas

5.1.7 Cláusula : WITH CHECK OPTION

 Existen dos clasificaciones para las vistas: simples y complejasPara asegurarse que cuando se agregan o actualizan datos en una vista simple, los mismos puedan ser consultados a través de la vista, se utiliza la cláusula WITH CHECK OPTION. La diferencia tiene que ver con las operaciones DML (INSERT, UPDATE y DELETE).

Una vista simple es la que deriva datos de una sola tabla. Una vista compleja es la que  deriva datos de muchas tablas. 

Para asegurarse que cuando se agregan o actualizan datos en una vista simple, los mismos puedan ser consultados a través de la vista, se utiliza la cláusula WITH CHECK OPTION.

Page 255: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.1.7

Cláusula : WITH CHECK OPTION

5.1.7.1 Recuperación de Datos de una Vista

Puede extraer datos de una vista del mismo modo que de una tabla. Puede mostrar el contenido de toda la vista o sólo filas y columnas específicas.

5.1.7 Cláusula : WITH CHECK OPTION

5.1.7.2 Creación de Vistas Complejas

Puede ver la estructura de la vista mediante el comando DESCRIBE de iSQL*Plus. Muestre el contenido de la vista emitiendo una sentencia SELECT.

5.1.7

Cláusula : WITH CHECK OPTION

5.1.7.3 Denegación de Operaciones DML

Puede estar seguro de no producir operaciones DML en la vista creándola con la opción WITH READ ONLY.

Si intento eliminar una fila de una vista con restricción de sólo lectura producirá un error.

5.1 Creación de vistas

5.1.8 Cláusula : WITH READ ONLY

Para asegurar que no ocurran operaciones DML sobre una vista, ésta debe ser creada con la opción WITH READ ONLY.

Page 256: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.1 Creación de vistas

5.1.9 Eliminación de Vistas

  Puede utilizar la sentencia DROP VIEW para eliminar una vista. La sentencia elimina la definición de vista de la base de datos. Borrar vistas no afecta a las tablas en las que se base la vista.  Las vistas u otras aplicaciones basadas en vistas suprimidas se convierten en no válidas. Sólo puede eliminar una tabla su creador o un usuario con el privilegio DROP ANY VIEW.

Page 257: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.1 Creación de vistas

5.1.10 AP: Utilización de los N-Principales

  Laboratorio 5.1.10

Utilización de los N-Principales

Ejercitar la escritura de consultas para realizar análisis N-Principales, y comprender el mecanismo de resolución de análisis N-Principales.

Duración Estimada: 30 min.

5.1 Creación de vistas

5.1.11 AI: Generación de vistas con una tabla

Lea con atención las sintaxis de creación de vistas y considerando el conjunto los enunciados presentados, una con flechas según corresponda.

5.1 Creación de vistas

5.1.12 AI: Generación de vistas con más de una tabla

En base a la sentencia de creación de vista presentada, responda si las siguientes afirmaciones son

Page 258: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

verdaderas o falsas.

5.1 Creación de vistas

5.1.13 Síntesis

Una vista es una representación de datos hecha a medida a partir de una o más tablas o vistas de base. La vista es una consulta almacenada. Vistas pueden ser utilizadas para presentar una perspectiva diferente de los datos, para limitar el acceso a datos, o para ocultar una consulta compleja. Vistas pueden ser utilizadas de la misma en que se usan tablas en consultas. Es posible actualizar, eliminar e insertar datos en las tablas de base a partir de una vista (con restricciones), pero la operación puede afectar sólo una tabla a la vez si existe más de una tabla en la definición de la vista. Para modificar la definición de una vista, se debe recrear la vista utilizando la sentencia CREATE OR REPLACE. Para recompilar una vista, agregar o eliminar restricciones, se utiliza la sentencia ALTER VIEW. Restricciones declarativas pueden ser creadas sobre vistas; las restricciones no son impuestas. Los tipos de restricciones válidos son: de clave primaria, de clave única y de clave foránea. Una vista en línea es una consulta que puede ser utilizada en lugar de una tabla o vista en la cláusula FROM de una consulta. Utilizando la cláusula ORDER BY en vistas (y en vistas en línea), es posible ejecutar análisis del tipo n-principales.

Page 259: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.2 Otros objetos de base de datos

   

En la figura se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 260: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 261: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.2 Otros objetos de base de datos

5.2.1 Objetivos

Una base de datos Oracle puede contener mucho más que simples tablas y vistas. Secuencias pueden ser utilizadas para generar claves artificiales. Sinónimos proveen alias (sobrenombres) a objetos. Varios tipos de índices pueden ser utilizados para mejorar la performance de consultas SQL. Para ejecutar tareas de administración de base de datos es necesario conocer cómo utilizar paquetes, procedimientos y funciones. Un objeto secuencia en una base de datos Oracle es un generador de números secuenciales con nombre. Secuencias son frecuentemente utilizadas para generar claves artificiales o para ordenar filas que de otra manera no poseen orden. De la misma forma que ocurre para restricciones, secuencias sólo existen en el diccionario de datos.  Un objeto sinónimo en una base de datos Oracle es un alias (sobrenombre) a otro objeto de base de datos. Un sinónimo público está disponible para todos los usuarios, mientras que un sinónimo privado está disponible sólo para el propietario del mismo o para los usuarios a quienes el propietario otorga privilegios.  Índices son estructuras de datos que pueden ofrecer mejoras de performance, por sobre el recorrido completo de tablas, al obtener filas específicas de datos. No obstante, índices no siempre mejoran la performance.  Este tema abarca cómo crear, modificar y eliminar secuencias, sinónimos e índices, y cómo utilizar el diccionario de datos para realizar tareas de administración de base de datos relacionadas a estos tipos de objetos. Además, dicho tema revisa las tecnologías de indexación B-tree y bitmap (mapa de bits), y repasa cuándo y cómo índices pueden mejorar performance.

5.2 Otros objetos de base de datos

5.2.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 262: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.2 Otros objetos de base de datos

5.2.3 Descripción de Secuencias – Sintaxis

Una secuencia es un objeto de la base de datos creado por un usuario, y puede ser compartido por varios de ellos. Se puede utilizar un generador de secuencia para producir automáticamente una secuencia de números enteros únicos para las filas de una tabla.

Los números de una secuencia se almacenan y generan independientemente de las tablas. De esta manera, la misma secuencia puede ser utilizada por varias tablas.

Cuando se genera un número de secuencia, se incrementa la secuencia independientemente de que la transacción se confirme o se descarte.

En la figura , se muestra la sintaxis de lo expresado anteriormente.

Page 263: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

Si el valor INCREMENT BY es negativo, la secuencia descenderá. Adicionalmente, NOMAXVALUE entonces especifica un valor máximo de –1 y NOMINVALUE tiene un valor mínimo de –(1026).Si los valores de la secuencia se mantienen en memoria principal (en la cache), se perderán ante una falla o caída del sistema.Si se especifica la opción NOCYCLE, cualquier intento de generar un número de secuencia, una vez alcanzado el valor máximo, causará un error.

Un uso muy común de las secuencias es para crear valores de clave primaria, ya que el mismo debe ser único para cada fila.La secuencia se genera e incrementa (o decrementa) por una rutina interna de Oracle 10g. Son útiles en ambientes multiusuario porque reducen el tiempo de ejecución de una transacción, fundamentalmente cuando las sentencias de dos transacciones deben generar números secuenciales al mismo tiempo. El generador de secuencias elimina la “serialización” en la generación de estos números.

Una vez que una sentencia en una sesión del usuario genera un número de secuencia, el número de secuencia generado está disponible solo en esa sesión. Cada usuario que referencia una secuencia tiene acceso a sus números de secuencia propios (no los que puedan haber generado otros usuarios con la misma secuencia).Para eliminar una secuencia, se utiliza el comando DROP SEQUENCE .

Consulta de los Parámetros de una Secuencia

Una vez que se ha creado la secuencia, la misma es documentada en el diccionario de datos. Para consultar los parámetros de la secuencia, se los puede seleccionar de la tabla USER_SEQUENCES del diccionario de datos.

Page 264: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 265: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.2 Otros objetos de base de datos

5.2.4 Utilización de secuencias

Una vez creada la secuencia, se la puede usar para generar números secuenciales que se utilizarán en las tablas.  Para hacer referencia a los valores de la secuencia, se utilizan las pseudocolumnas NEXTVAL y CURRVAL.

Pseudocolumnas NEXTVAL y CURRVAL La pseudocolumna NEXTVAL se utiliza para obtener el próximo número de una secuencia específica.  Se debe cualificar NEXTVAL con el nombre de la secuencia.  Cuando se referencia a secuencia.NEXTVAL, un nuevo número de secuencia se genera y el número actual se coloca en CURRVAL.

La pseudocolumna CURRVAL se utiliza para hacer referencia al número de secuencia recientemente generado.  NEXTVAL debe ser usado para generar un número de secuencia en la sesión actual del usuario, antes de poder hacer referencia a CURRVAL.  Se debe cualificar a CURRVAL con el nombre de la secuencia.  Cuando se referencia a secuencia.CURRVAL, se obtiene el último valor devuelto al proceso del usuario.  -

Page 266: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.2.4

Utilización de secuencias

5.2.4.1 Caché de Valores de Secuencia

Caché de Valores de Secuencia Puede guardar en caché, secuencias de la memoria para otorgar un acceso más rápido a esos valores de secuencia. El caché se rellena la primera ver que hace referencia a la secuencia. Cada solicitud del siguiente valor de secuencia se recupera de la secuencia almacenada en caché. 

  Modificación de Secuencia

Si llega al límite MAXVALUE para la secuencia, no se asigna ningún valor adicional y recibirá un error que indicará que la secuencia excede el valor MAXVALUE. Para continuar utilizando la secuencia, la puede modificar mediante la sentencia ALTER SEQUENCE.

Page 267: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.2 Otros objetos de base de datos

5.2.5 Descripción de índices – Sintaxis

Un índice es un objeto de la base de datos que contiene una entrada por cada valor que aparece en las columnas indexadas de la tabla y permite acelerar la recuperación de filas. Si no se tiene un índice sobre la(s) columna(s), entonces se debe hacer un barrido total de la tabla para una búsqueda. Los índices reducen la necesidad de E/S de disco mediante el uso de una estructura Árbol B (B*Tree) indexada para ubicar rápidamente a los datos. El índice es automáticamente usado y mantenido por Oracle 10g Server. Una vez que un índice es creado, no se requiere actividad directa del usuario.La presencia de muchos índices sobre una tabla disminuye la performance de la tabla cuando se actualiza, inserta o borra porque tienen que actualizarse los índices asociados con las tablas. Los índices son lógica y físicamente independientes de la tabla sobre la que se aplican. Esto significa que pueden ser creados o eliminados en cualquier momento y no tienen efectos sobre la tabla base u otros índices. Un índice es una estructura opcional que es independiente de la estructura de la tabla. Cada índice se compone de valores de las columnas que se indexan, y punteros (o ROWID) a las filas que contienen esos valores. Cada puntero conduce directamente a la fila apropiada, en consecuencia se evita el barrido total de la tabla.

Árbol B (B*Tree)

Oracle 10g Server usa una estructura de índice de tipo árbol B balanceado. Esta es una estructura de búsqueda binaria, autobalanceada para igualar los tiempos de acceso para todas las filas. Es un método eficiente que asegura que el tiempo de acceso a un valor específico sea más o menos el mismo ya sea que la fila se encuentre al principio, al medio o al final de la tabla. Cada índice que Oracle 10g Server construye consiste de un número de páginas (o ramas) de almacenamiento organizadas en una estructura de árbol. Cada página (o rama) contiene una serie de valores de claves y punteros a las páginas (o ramas) inferiores en la estructura hasta que eventualmente el valor de la clave indica la ubicación del dato propiamente dicho. El identificador de la ubicación a nivel de la base de datos se denomina ROWID.

Para crear un índice sobre una o más columnas, se utiliza el comando CREATE INDEX.  - 

Page 268: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.2 Otros objetos de base de datos

5.2.6 Índices creados automáticamente

Se pueden crear dos tipos de índices . Un tipo es un índice único o unique. Oracle 10g Sever crea automáticamente este tipo de índice cuando en una tabla se definen una o más columnas que forman parte de una restricción PRIMARY KEY o UNIQUE. El índice toma el mismo nombre que la restricción. El otro tipo de índice que un usuario puede crear es un índice no único (non-unique). Por ejemplo, se puede crear un índice de columna FOREIGN KEY para una operación de unión en una consulta que acelere la respuesta. Los tipos de índices único y no único son mutuamente excluyentes, pero pueden estar formados por una o más columnas. Por ejemplo, se puede crear un índice único, concatenado.El orden de las columnas en un índice concatenado es importante. El Servidor lee las columnas de izquierda a derecha cuando averigua la eficiencia para elegir el índice. La decisión de crear índices es una decisión global de alto nivel. Con frecuencia, la creación y el mantenimiento de índices es una tarea del DBA.

Page 269: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.2 Otros objetos de base de datos

5.2.7 Descripción de Sinónimos – Sintaxis

Crear un Sinónimo para un Objeto

Para referirse a una tabla de otro usuario, se necesita prefijar el nombre de la tabla con el nombre del usuario que lo creó seguido por un punto. Crear un sinónimo elimina la necesidad de calificar el nombre del objeto con el esquema y provee un nombre alternativo para una tabla, vista, secuencia, procedimiento u otros objetos. Este método puede ser especialmente útil con objetos con nombres largos, tales como vistas. No requiere almacenamiento, solo un lugar en la definición en el diccionario de datos. Con la utilización de sinónimos se puede lograr:

enmascarar el nombre del dueño de un objeto simplificar las sentencias SQL para los usuarios de datos en aplicaciones distribuidas dar transparencia a la localización de las bases de datos

Se pueden crear sinónimos públicos y privados. Una vez que se ha creado un sinónimo, el mismo es documentado en el diccionario de datos. Para información a cerca de los sinónimos creados, se los puede seleccionar de la tabla USER_SYNONYMS del diccionario de datos.

Eliminar un Sinónimo

Para eliminar un sinónimo, se utiliza el comando DROP SYNONYM. Solamente el DBA puede eliminar un sinónimo público.

Nota: En Oracle 10g Server, el DBA puede específicamente otorgar el privilegio CREATE PUBLIC SYNONYM a cualquier usuario, permitiéndole al usuario crear sinónimos públicos.

Page 270: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.2 Otros objetos de base de datos

5.2.8 AP: Manejo de secuencias

  Laboratorio 5.2.8

Manejo de secuencias.

Ejercitar la creación y eliminación de secuencias. Utilización de secuencias en la creación de nuevos registros en otras tablas.

Duración Estimada: 30 min.

Page 271: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.2 Otros objetos de base de datos

5.2.9 AP: Manejo de sinónimos

Practica

  Laboratorio 5.2.9

Manejo de Sinónimos

Ejercitar la creación y eliminación de sinónimos. Utilización de sinónimos creados para la consulta de datos.

Duración Estimada: 20 min.

5.2 Otros objetos de base de datos

5.2.10 AI: Mayor velocidad con los Índices

Teniendo en cuenta los motivos por el cual es posible decidir si es conveniente o no crear un índice sobre ciertas columnas, responda si son verdaderas o falsas las siguientes afirmaciones.

5.2 Otros objetos de base de datos

5.2.11 Síntesis

Este tema abordó secuencias, sinónimos e índices.  Secuencias son generadores de números, y es posible utilizarlas junto a las palabras clave CURRVAL y NEXTVAL.  Un sinónimo es un mecanismo para darle un sobrenombre o alias a otro objeto, ya sea que dicho objeto sea local o remoto accesible a través de un enlace de base de datos. Los sinónimos pueden estar disponibles en forma global (públicos), o restringidos a usuarios limitados (privados). Los dos tipos principales de índices son los índices B-tree y bitmap. En este tema se profundizó sobre cuándo dichos índices pueden mejorar la performance de una consulta, y también que los mismos pueden empeorar las operaciones INSERT, DELETE y UPDATE.

Page 272: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.3 Control de acceso de usuarios

   

En la figura se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 273: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 274: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.3 Control de acceso de usuarios

5.3.1 Objetivos

Oracle 10g Server provee varias formas de controlar el acceso de usuarios. Cuando se crea un usuario, es posible especificar el método de autenticación utilizado así como otros atributos que controlan la forma en que el usuario accede e interactúa con la base de datos. También es posible modificar cuentas de usuario para agregar o cambiar atributos. La forma más común de controlar el acceso de usuarios es a través de privilegios. Oracle 10g Server incluye privilegios de objeto, privilegios de sistema, y privilegios de roles. Otorgando y revocando privilegios es posible especificar las tareas que un usuario determinado puede ejecutar sobre los objetos de la base de datos. Otro método de controlar cómo usuarios utilizan recursos del sistema es a través de perfiles. Este tema cubre cómo crear y modificar cuentas de usuario, cómo permitir o prevenir cambios utilizando privilegios y cómo gestionar la asignación de privilegios utilizando roles. Además, dicho tema abarca cómo asignar perfiles.

5.3 Control de acceso de usuarios

5.3.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 275: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.3 Control de acceso de usuarios

5.3.3 Descripción de Privilegios

 

Privilegios son los derechos para ejecutar sentencias SQL particulares. El administrador de la base de datos es un usuario de alto nivel con la capacidad para otorgarle permisos a los usuarios para acceder a la base de datos y sus objetos. Los usuarios requieren privilegios del sistema para obtener el acceso a la base de datos y privilegios de objetos para manipular el contenido de los objetos en la base de datos. A los usuarios, además se les puede dar el privilegio de otorgar privilegios adicionales a otros usuarios o a roles , que son grupos de privilegios relacionados que tienen un nombre.

Page 276: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

Privilegios del Sistema

Un privilegio del sistema es el derecho a realizar una acción particular, o realizar una acción sobre cualquier (“any”) objeto de un tipo particular. Por ejemplo, los privilegios para crear tablespaces o para borrar filas de cualquier tabla de una base de datos son privilegios del sistema.

Existen más de ochenta privilegios del sistema disponibles para los usuarios y roles, dentro de los cuales podemos mencionar a CREATE TABLE, CREATE ANY TABLE, SELECT ANY TABLE, ALTER SESSION entre otros. Los privilegios del sistema son otorgados generalmente por el administrador del sistema.

Privilegios de Objetos

Un privilegio sobre un objeto del schema es un derecho para efectuar una acción particular (INSER, UPDATE, REFERENCES, EXECUTE) sobre una tabla, vista, secuencia, procedimiento, función o paquete. Cada tipo de objeto tiene un determinado juego de privilegios otorgables.

Algunos otros objetos como clusters, índices, triggers y vínculos de base de datos (database links) no se asocian a privilegios sobre los objetos, sino que son controlados por medio de privilegios del sistema.

Un objeto del schema y su sinónimo son equivalentes en cuanto a los privilegios, esto implica que en cuanto a los privilegios referenciar el objeto o su sinónimo es lo mismo.

Un usuario posee automáticamente todos los privilegios sobre los objetos que se encuentran en su schema. Por lo tanto, un usuario puede garantizar cualquier privilegio sobre estos objetos a cualquier otro usuario o rol. Si la asignación de privilegios incluye GRANT OPTION, el usuario o rol a quien se le asigno esta opción, puede a su vez asignar estos privilegios a otros usuarios.

Page 277: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 278: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 279: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.3 Control de acceso de usuarios

5.3.4 Creación de Usuarios – Sintaxis

Un usuario es un nombre definido en la base de datos que se puede conectar y acceder a los objetos. Un schema es un conjunto nominado de objetos tales como tablas, vistas, clusters, procedimientos y paquetes asociados con un usuario particular.

 

Cuando se crea un usuario se crea el schema correspondiente con el mismo nombre. Por default, una

Page 280: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

vez que el usuario se conecta con la base de datos, el usuario tiene acceso a todos los objetos contenidos en el schema correspondiente. El usuario se asocia con el schema del mismo nombre, por lo tanto, los términos usuario y schema se usan para referirse a lo mismo.

 El DBA crea un nuevo usuario en Oracle 10g Server asignándole una cantidad de privilegios al

mismo. Esos privilegios determinan qué puede hacer el usuario a nivel de la base de datos. El DBA

crea al usuario ejecutando el comando CREATE USER . El usuario no tiene privilegios del

sistema. Una vez creado el usuario, puede asignarle los privilegios.

 

Cada base de datos tiene un usuario de grupo llamado PUBLIC. El usuario PUBLIC provee el acceso

público a objetos específicos del schema (tablas, vistas, etc.) y provee a todos los usuarios con

privilegios del sistema específicos. Todo usuario pertenece automáticamente al grupo de usuarios

PUBLIC.

 

Como miembros de PUBLIC, los usuarios pueden ver (seleccionar de) todas las tablas del diccionario

de datos prefijadas como USER and ALL. Además, un usuario puede garantizar un privilegio o un rol

a PUBLIC.

5.3 Control de acceso de usuarios

5.3.5 Otorgar privilegios – Sintaxis

Otorgar Privilegios del Sistema

El DBA usa el comando GRANT para asignarle privilegios del sistema al usuario. Una vez que se le otorgan los privilegios al usuario, éste puede usarlos inmediatamente.

Otorgar Privilegios Sobre un Objeto

El DBA puede permitir a los usuarios realizar una acción particular sobre una tabla, vista, secuencia o procedimiento almacenado otorgándole privilegios sobre los objetos. El propietario de un objeto tiene todos los privilegios sobre el mismo. Para que un usuario le otorgue acceso a sus objetos a otro usuario,

Page 281: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

debe ejecutar el comando GRANT.   Un privilegio otorgado con WITH GRANT OPTION puede ser transmitido a otros usuarios y roles por el depositario del privilegio. Los privilegios otorgados con WITH GRANT OPTION son quitados cuando se le quitan a quien los pasó u otorgó. Nota: Si a un usuario se le otorga un privilegio con WITH GRANT OPTION, entonces ese usuario también puede otorgar ese privilegio con WITH GRANT OPTION, de tal modo que una larga cadena de concesiones es posible, pero no se permiten concesiones circulares. Si un propietario revoca un privilegio a un usuario que además ha otorgado ese privilegio a otros usuarios, entonces el REVOKE quita todos los privilegios otorgados en cascada. Por ejemplo, sin un usuario A otorga el privilegio SELECT sobre la tabla Ventas al usuario B incluyendo la opción WITH GRANT OPTION, entonces el usuario B puede otorgar el mismo privilegio al usuario C con la misma opción, y lo mismo puede hacer el usuario C con el usuario D. Si el usuario A le quita el privilegio al usuario B o el usuario B es eliminado, entonces los usuarios C y D pierden los privilegios sobre la tabla Ventas concedidos por el usuario B.  -

Page 282: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 283: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 284: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 285: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 286: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.3 Control de acceso de usuarios

5.3.6 Quitar privilegios – Sintaxis

Para quitar los privilegios otorgados a otros usuarios se utiliza el comando REVOKE . Cuando se utiliza el comando REVOKE, los privilegios que uno especifica pueden ser quitados a los usuarios que se nombren y a todos los demás usuarios a quienes se les haya otorgado privilegios.

5.3 Control de acceso de usuarios

5.3.7 Descripción de roles – Sintaxis

Oracle 10g Server tiene un modo fácil y controlado de administrar privilegios a través de roles. En

general se emplean para asignar los privilegios relacionados con los usuarios finales de las

aplicaciones de un sistema o para asignar roles a otros roles. En general no se emplean para asignar

privilegios a los que desarrollan las aplicaciones, estos privilegios necesitan asignarse directamente.

Un rol es un grupo de privilegios relacionados que se le pueden otorgar a los usuarios y que lleva un nombre. Esto hace que otorgar y quitar privilegios sea fácil de realizar y mantener. 

Page 287: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

Un usuario puede tener varios roles y a varios usuarios se les puede asignar el mismo rol. Los roles se crean para una aplicación de la base de datos.

 Primero, el DBA debe crear el rol . Luego, puede asignar privilegios al rol y usuarios al rol. Una vez creado un rol, el DBA puede usar el comando GRANT para asignar usuarios al rol como así también asignar privilegios para el rol.

 Los roles de la base de datos tienen la siguiente funcionalidad:

un rol puede tener privilegios del sistema y privilegios de objetos del schema un rol se puede asignar a otros roles. No obstante un rol no se puede autorizar a sí mismo ni

tampoco de manera circular a cualquier usuario de la base de datos se le puede asignar cualquier rol. un rol asignado a un usuario se puede habilitar o inhabilitar en cualquier momento. un rol garantizado indirectamente (un rol asignado a un rol) puede ser explícitamente habilitado o

inhabilitado al usuario. No obstante para habilitar un rol que contiene otros roles, los roles contenidos se habilitan implícitamente habilitando el rol que los contiene.

5.3 Control de acceso de usuarios

5.3.8 Tabla de privilegios por Objeto

Los privilegios de objetos varían de un objeto a otro. En la figura , se muestra un resumen de los privilegios que se pueden otorgar sobre algunos tipos de objetos. Nota: procedimiento se refiere a procedimientos y funciones aislados y a construcciones package públicas. Los privilegios INDEX y REFERENCES no se pueden otorgar a un rol.Cada objeto tiene un conjunto particular de privilegios otorgables. UPDATE, REFERENCES e INSERT se pueden restringir especificando un subconjunto específico de columnas modificables. Un SELECT se puede restringir especificando un subconjunto de columnas seleccionables. El privilegio que se otorga sobre un sinónimo se traslada a la tabla base referenciada por ese sinónimo.

Page 288: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.3 Control de acceso de usuarios

5.3.9 Descripción de enlaces de Bases de datos remotas

Un enlace de base de datos es un objeto del esquema de una base de datos local que permite tener acceso a objetos que se encuentren en una base de datos remota. La base de datos remota no necesariamente debe ser Oracle. Una vez creado un enlace de base de datos, se puede utilizar para referenciar a las tablas y vistas sobre la base de datos remota anexando @dblink al nombre de la tabla o vista en una sentencia SQL.

Page 289: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 290: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.3 Control de acceso de usuarios

5.3.10 AP: Manejo de privilegios

  Laboratorio 5.3.10

Manejo de Privilegios.

Ejercitar la utilización de privilegios y roles para controlar el acceso de los usuarios.

Duración Estimada: 50 min.

5.3 Control de acceso de usuarios

5.3.11 AI: Gestión de usuarios y privilegios

Arrastre las opciones que crea correctas para completar las siguientes sentencias.

Page 291: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.3 Control de acceso de usuarios

5.3.12 Síntesis

En este tema se profundizó sobre cómo crear y gestionar cuentas de usuario, incluyendo la configuración de varios atributos sobre dichas cuentas. Seguidamente, se explicó acerca de privilegios de objeto y de sistema, y sobre cómo gestionar estos privilegios a través del uso de roles. Se aprendió cómo asignar y cómo quitar privilegios utilizando las sentencias GRANT y REVOKE. También se revisaron muchas de las vistas del diccionario de datos que proveen información sobre privilegios. Finalmente, este tema cubrió cómo gestionar grupos de usuario con perfiles. Perfiles permiten la configuración de recursos del sistema con el objetivo de limitar el consumo de recursos para determinados grupos de usuarios, así como la configuración de recursos relacionados a claves de acceso para gestionar las reglas de utilización de claves de acceso.

Page 292: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.4 Taller SQL

   

En la figura se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 293: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.4 Taller SQL

5.4.1 Objetivos

En el capítulo 14 del Kit de Estudiante se presenta un Taller SQL que aborda los temas tratados hasta el momento en el curso Introducción a Oracle9i: SQL.El objetivo principal de este taller consiste en crear un juego de tablas para una aplicación de video, realizando las actividades que se presentan en la figura .

Page 294: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.4 Taller SQL

5.4.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 295: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.4 Taller SQL

5.4.3 Secuencia de trabajo para el taller

En la figura se muestra un resumen de items de este Material Complementario asociados a cada etapa del Taller SQL, permitiendo al estudiante repasar conceptos y sintaxis de cláusulas SQL necesarias para realizar la actividad correspondiente.

Page 296: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 297: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 298: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 299: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

5.4 Taller SQL

5.4.4 Síntesis

Este tema abordó la implementación de un modelo de datos correspondiente a una aplicación de alquiler de videos. Primeramente, se crearon las tablas del modelo, se definieron relaciones entre tablas, y se verificaron los objetos creados contra el diccionario de datos. Seguidamente, se crearon secuencias, las que fueron utilizadas en la inserción de datos a las tablas.

Una vez que el modelo quedó definido y cargado con datos, se definió una vista personalizada sobre dicho modelo. Como paso siguiente, se actualizaron datos de negocio, y se modificó la definición de una tabla de dominio. Por último, se presentaron los datos con formato de reporte de impresión.

Page 300: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 301: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 302: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 303: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 304: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 305: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6 Funciones avanzadas

   

Adicionalmente a soportar el estándar SQL en su totalidad, Oracle 10g Server incluye múltiples extensiones que facilitan la ejecución de operaciones complejas y mejoran la performance en la manipulación de datos.

Oracle 10gServer soporta operadores para trabajar sobre conjuntos de filas, dichos operadores se denominan operadores SET. A través de operadores SET es posible llevar a cabo operaciones de unión, intersección y diferencia de conjuntos.

Otra funcionalidad brindada por Oracle 10g es la posibilidad de manipular zonas horarias en datos tipo fecha, con precisión hasta fracciones de segundos.

Por otro lado, el análisis de datos en línea, realizado mayoritariamente sobre almacenes de datos, requiere la confección de reportes de datos incluyendo subtotales a diferentes niveles de agrupamiento. Uno de los tipos más comunes de reportes en análisis de datos en línea son los reportes de tabulación cruzada o de doble entrada. Para realizar este tipo de análisis, Oracle 10g Server incluye extensiones a la cláusula GROUP BY que facilitan la escritura de sentencias SELECT.

Una práctica común en la manipulación de datos, es la división de una consulta general en partes menores, o subconsulas. Dicha práctica facilita la legibilidad y la resolución de consultas complejas.

Frecuentemente, el dominio del problema incluye relaciones recursivas sobre una misma tabla. Esta autorelación define una estructura jerárquica entre filas pertenecientes a una misma tabla. Oracle 10g Server incluye cláusulas especiales para la manipulación de datos almacenados jerárquicamente en una tabla plana.

Otras extensiones provistas por Oracle 10g Server son la creación de tablas externas, para acceder a datos almacenados fuera de la base de datos, y la inserción de múltiples tablas, para insertar datos en varias tablas de manera condicional a través de una única sentencia.

6.1 Uso de operadores SET

   

En la figura se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 306: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 307: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.1 Uso de operadores SET

6.1.1 Objetivos

Oracle 10gServer posee operadores especiales para trabajar con conjuntos de filas. Sobre dos conjuntos de filas determinados, si son compatibles, es posible realizar operaciones de unión, intersección y diferencia de conjuntos. Los operadores SET (operadores de conjunto) soportados por Oracle 10g Server son: UNION y UNION ALL para realizar operaciones de unión de conjuntos, INTERSECT para realizar intersección de conjuntos, y MINUS para realizar diferencia de conjuntos. Los operadores de unión de conjuntos se diferencian en el tratamiento de filas duplicadas: UNION no incluye filas duplicadas en el resultado, mientras que UNION ALL sí. Este tema aborda operadores SET, y su precedencia en consultas compuestas por más de un operador SET.

6.1 Uso de operadores SET

6.1.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 308: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.1 Uso de operadores SET

6.1.3 Operadores SET

 Los operadores SET pueden ser utilizados para seleccionar datos a partir de múltiples tablas. Operadores SET básicamente combinan el resultado de dos consultas en uno. La consulta que utiliza un operador SET es denominada consulta compuesta .

Todos los operadores SET poseen igual precedencia. Cuando múltiples operadores SET son utilizados en la misma consulta, los mismos son evaluados de izquierda a derecha, a menos que se especifique un orden diferente a través de paréntesis.

Los tipos de dato de las columnas resultantes, así como el número de columnas, debe coincidir en ambas consultas. Los nombres de columnas, o alias, de la primer sentencia SELECT son utilizados como nombres de columna en el conjunto resultado. Los conjuntos de datos mostrados en la figura  poseen el mismo número de columnas y en el orden correspondiente, de forma que los mismos pueden ser manipulados en conjunto a través de operadores SET.

UNION

Page 309: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

El operador UNION es utilizado para retornar filas ya sea de la primera como de la segunda consulta, sin duplicar las filas en el resultado. En la figura , notar que, no obstante la suma de filas resultantes de ambas consultas es nueve, el operador UNION retorna sólo valores únicos. Aparecen dos empleados cuyo apellido es King en el resultado, pero las fechas de contratación son diferentes. La diferenciación de elementos en el conjunto resultado se establece a nivel de fila .

UNION ALL

El operador UNION ALL no ordena ni filtra el conjunto resultado; el mismo retorna todas las filas de la primer consulta más todas las filas de la segunda, sin eliminar duplicados .

INTERSECT

El operador INTERSECT es utilizado para recuperar las filas retornadas por ambas consultas, esto es, las filas en común entre ambas consultas .

MINUS

El operador MINUS es utilizado para recuperar las filas retornadas por la primer consulta, que no son retornadas por la segunda consulta .

Page 310: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 311: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 312: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.1 Uso de operadores SET

6.1.4 ORDER BY en consultas compuestas

Puede existir únicamente una cláusula ORDER BY en la consulta; no es posible especificar una cláusula ORDER BY en cada consulta que forma parte de la consulta compuesta al utilizar operadores SET .  Al escribir la cláusula ORDER BY, es posible utilizar :

Los nombres de columnas empleados en la primer consulta, Los nombres de alias empleados en la primer consulta Notación posicional

Combinación de las anteriores

Page 313: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 314: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.1 Uso de operadores SET

6.1.5 AP: Manejo de operadores SET

  Laboratorio 6.1.5

Manejo de operadores SET

Comprender la estructura de consultas compuestas (consultas que utilizan operadores SET). Utilizar operadores SET para resolver diferentes requerimientos que requieran la manipulación de conjuntos de filas. Ordenar resultados en consultas con operadores SET.

Duración Estimada: 40 min.

6.1 Uso de operadores SET

6.1.6 AI: Uso de operadores SET

Los círculos representan conjuntos de resultados arrojados por las consultas denominadas A, B y C. Al combinar las consultas A, B y C a través de operadores SET, la región sombreada representa el resultado obtenido y la región sin sombrear representa las filas excluidas del resultado. Teniendo en cuenta la combinación de conjuntos, complete la expresión de consulta compuesta utilizando operadores SET (UNION, UNION ALL, INTERSECT, y MINUS).

Page 315: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.1 Uso de operadores SET

6.1.7 Síntesis

Operadores SET combinan los resultados de dos consultas compuestas en un único resultado. Consultas que contienen operadores SET son denominadas consultas compuestas. Los operadores SET SQL soportados por Oracle 10g Server son: UNION, UNION ALL, INTERSECT y MINUS.  Utilizando operadores SET, es posible combinar múltiples consultas. Todos los operadores SET poseen igual precedencia. Si una sentencia SQL posee múltiples operadores SET, Oracle 10g Server evalúa de izquierda a derecha excepto que los paréntesis especifiquen explícitamente un orden diferente.  Las expresiones correspondientes en las listas de selección de las consultas componentes en una consulta compuesta deben coincidir en número y tipos de dato, considerando que, según el caso, puede existir una conversión de tipos de dato implícita.

Este tema abordó operadores SET, su precedencia y utilización en la operación de conjuntos de filas.

Page 316: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.2 Funciones datetime de Oracle 10g

   

En la figura se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 317: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 318: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.2 Funciones datetime de Oracle 10g

6.2.1 Objetivos

Una subconsulta es una consulta dentro de una consulta. En una consulta que posea múltiples partes, una subconsulta responde parte de la consulta general, y la consulta padre responde el resto de la consulta. Cuando se anidan subconsultas, la subconsulta que se encuentra en el nivel más anidado es evaluada primero.  El mecanismo de separar una consulta general en partes menores es una práctica común y potente en la manipulación de datos. Este tema abarca los diferentes tipos de subconsultas y su utilización en consultas de nivel superior.

6.2 Funciones datetime de Oracle 10g

6.2.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 319: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.2 Funciones datetime de Oracle 10g

6.2.3 Descripción de las zonas horarias

Oracle 10g Sever introduce muchas características para la funcionalidad de la fecha, soportando las zonas horarias  para lo cual adiciona nuevos tipos de datos fecha/hora, como participante de la comisión elaboradora de las especificaciones del ANSI SQL.

Page 320: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

La zona horaria por defecto de la base de datos es la misma que la del sistema operativo. La zona horaria por defecto de la base de datos se define especificando la cláusula SET TIME_ZONE de la sentencia CREATE DATABASE. Si se omite, la zona horaria por defecto de la base de datos es la zona horaria del sistema operativo. La zona horaria de la base de datos se puede cambiar para una sesión con una sentencia ALTER SESSION.

Oracle 10g Server introduce los siguientes tipos de datos fecha/hora:

TIMESTAMP (TS) : permite almacenar el año, mes, día, hora, minuto, segundo y además es posible el fraccionamiento de segundos con una precisión de hasta nueve dígitos.

TIMESTAMP WITH TIME ZONE (TSTZ) : este tipo de dato es similar a TIMESTAMP, pero también almacena información sobre la zona horaria.

TIMESTAMP WITH LOCAL TIME ZONE (TSLTZ) : este tipo de dato también es similar a TIMESTAMP, y como TIMESTAMP WITH TIME ZONE incluye información sobre la zona horaria. A diferencia de TIMESTAMP WITH TIME ZONE, este tipo de dato no almacena la zona horaria junto con la fecha y hora, sino que almacena la hora en una forma normalizada a la zona horaria de la base de datos. Los datos se normalizan a la zona horaria de la base de datos cuando están almacenados y son ajustados a la zona horaria de la sesión cuando son seleccionados por los usuarios.

INTERVAL YEAR TO MONTH : este tipo de dato permite representar un período de tiempo en años y meses. Puede ser utilizado para almacenar la diferencia entre dos valores de fecha.

INTERVAL DAY TO SECOND : este tipo de dato permite representar un período de tiempo en días, horas, minutos y segundos. Puede ser utilizado para almacenar la diferencia entre dos valores de fecha, incluyendo los segundos.

Page 321: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.2 Funciones datetime de Oracle 10g

6.2.4 Detalle de las funciones disponibles

Oracle 10g Server provee una gran cantidad de funciones relacionadas con los cálculos que involucra el manejo de zona horaria. Algunas de estas funciones se muestran en la figura .

Page 322: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.2 Funciones datetime de Oracle 10g

6.2.5 AP: Modificar el formato de fecha de la sesión

  Laboratorio 6.2.5

Modificar el formato de fecha de la sesión

Utilizar las nuevas funcionalidades de los tipos de datos de fecha/hora de Oracle10g.

Duración Estimada: 20 min.

6.2 Funciones datetime de Oracle 10g

6.2.6 AI: Detalle de las zonas horarias

¿Cuál de los siguientes tipos de datos almacena información sobre la zona horaria junto a la fecha?

6.2 Funciones datetime de Oracle 10g

6.2.7 Síntesis

DATE es el tipo de dato generalmente utilizado para el almacenamiento y la manipulación de datos fecha / hora. Oracle 10g soporta nuevos tipos de dato, como TIMESTAMP e INTERVAL, para manipular datos fecha / hora. Los tipos de dato TIMESTAMP son: TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE. Los tipos de dato INTERVAL en Oracle 10g son: INTERVAL YEAR TO MONTH, e INTERVAL DAY TO SECOND. Este tema abordó los nuevos tipos de dato fecha / hora introducidos por Oracle 10g, formas de configurar una sesión para visualizar diferentes formatos de fecha, el almacenamiento y la manipulación de usos horarios, y cómo utilizar funciones de manipulación de tipos de dato fecha / hora.

Page 323: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.3 Mejoras de la cláusula GROUP

   

En la figura se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 324: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.3 Mejoras de la cláusula GROUP

6.3.1 Objetivos

La agregación de datos es una parte fundamental en el análisis de datos en data warehousing (almacenes de datos). Para mejorar el rendimiento en agregaciones de datos, Oracle 10g Server provee extensiones a la cláusula GROUP BY. A través de tales extensiones, es posible escribir una sentencia SELECT simple que incluya filas de subtotales por cada nivel de grupo y un total general. También se puede calcular de manera sencilla subtotales para las diferentes combinaciones posibles de agrupamientos derivadas de la expresión GROUP BY. Al incluir filas de subtotales en el resultado de una consulta SQL, dicho resultado queda conformado por filas a diferentes niveles de agrupamiento. Algunas de estas filas corresponden al nivel de grupo regular expresado en la cláusula GROUP BY, y otras corresponden a niveles de grupo agregados (filas superagregadas). Oracle 10g Server provee funciones especiales para identificar programáticamente el nivel de agrupamiento al que pertenece una fila determinada. Este tema aborda las extensiones a la cláusula GROUP BY soportados por Oracle 10g, y su funcionalidad para calcular reportes de tabulación cruzada y reportes incluyendo subtotales.

Page 325: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.3 Mejoras de la cláusula GROUP

6.3.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 326: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.3 Mejoras de la cláusula GROUP

6.3.3 Escenario de agregación

Para ilustrar el uso de una extensión GROUP BY, suponga una compañía hipotética que posee ventas a lo largo de todo el mundo, el seguimiento de las ventas se realiza en dólares y por canal de ventas. La figura presenta un reporte de tabulación cruzada simple (también se denomina de referencias cruzadas o de doble entrada) que muestra el total de ventas, correspondientes a septiembre de 2000, por país y por canal de ventas. Los países incluidos en el reporte son UK y US, y los canales de ventas considerados son Ventas directas e Internet.  Tener en cuenta que aún un reporte simple como este, consistiendo de sólo nueve valores en su grilla de datos, contiene cuatro subtotales y un total general. Los subtotales son por canal de ventas o por país. Los diferentes niveles de agregación (o niveles de agrupamiento de datos) clasifican los valores pertenecientes a la tabla en filas regulares y filas superagregadas . Cabe resaltar que la mitad de los valores computados no pueden ser calculados con una cláusula GROUP BY simple agrupando por canal y país. Para calcular los valores agregados de alto nivel se necesitan consultas adicionales . Oracle 10g Server posee comandos de base de datos que ofrecen mejoras en los cálculos de subtotales, lo que brinda ventajas funcionales al llevar a cabo operaciones de análisis, consulta y reporte de datos. Los principales beneficios obtenidos al utilizar estas extensiones provistas por Oracle 10g Server son:

Programación simplificada, requiere menos código SQL Procesamiento de consultas más rápido y eficiente Reducción en la carga de procesamiento del cliente y en el tráfico de red, ya que el trabajo de

agregación es realizado por el servidor de base de datos

Oportunidad de almacenar agregaciones en cache

Page 327: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 328: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 329: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 330: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 331: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.3 Mejoras de la cláusula GROUP

6.3.4 Superagregados

Los modificadores a la cláusula GROUP BY, CUBE y ROLLUP, permiten crear agregaciones de agregados, o superagregados. Estos superagregados o filas de sumarización son incluidos en el conjunto resultado de manera similar a utilizar la sentencia COMPUTE en cortes de control en SQLPLus; esto es, los mismos son incluidos en los datos y contienen valores nulos en las columnas agregadas. ROLLUP crea agregaciones jerárquicas. CUBE crea agregaciones para todas las combinaciones de columnas especificadas. Las principales ventajas de CUBE y ROLLUP es que las mismas permiten agregaciones más robustas que COMPUTE y además funcionan con cualquier herramienta SQL.  Debido a que todo resultado de una consulta SQL posee el formato de una tabla plana con filas y columnas, el resultado arrojado por una consulta que utilice una extensión Oracle 10g a la cláusula GROUP BY estará compuesto de filas a diferentes niveles de agregación .

Page 332: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 333: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 334: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.3 Mejoras de la cláusula GROUP

6.3.5 Revisión cláusula GROUP BY

La cláusula GROUP BY produce un grupo de filas único para cada combinación de valores de las columnas que aparecen en la expresión de agrupamiento. Considerando los datos de ejemplo mostrados en la figura

, un agrupamiento por género y por estado civil produce el resultado mostrado en la figura . Notar que la columna resultante denominada CREDIT es un cálculo que contiene la suma de los límites crediticios para cada combinación única de valores de género y estado civil.

Page 335: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 336: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 337: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 338: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.3 Mejoras de la cláusula GROUP

6.3.6 Descripción de Rollup

ROLLUP permite calcular en una sentencia SELECT múltiples niveles de subtotales y, además, también calcula un total general. ROLLUP es una extensión simple de la cláusula GROUP BY y es altamente eficiente. Dicho operador crea subtotales jerárquicamente que se despliegan desde el nivel más detallado hacia el total general, siguiendo una lista de agrupamientos especificados en la cláusula GROUP BY.

ROLLUP toma como argumento una lista ordenada de columnas de agrupamiento. Primero calcula los valores agregados estándares (o regulares) especificados en la cláusula GROUP BY. Luego, calcula subtotales de nivel superior en forma progresiva, moviéndose de derecha a izquierda a través de las columnas de agrupamiento. Finalmente, calcula el total general. ROLLUP crea subtotales a “n+1” niveles, donde “n” es el número de columnas de agrupamiento especificadas .

El orden de las columnas en el modificador ROLLUP es significante, ya que dicho orden determina dónde Oracle 10g Server produce subtotales. ROLLUP crea agregaciones jerárquicas, de manera que el orden de las expresiones en la cláusula ROLLUP es significante. El ordenamiento sigue las mismas convenciones utilizadas en la cláusula GROUP BY; de lo más general a lo más específico. Al invertirse el orden se obtienen subtotales diferentes.

Interpretando nulos en el resultado

Valores nulos retornados por las extensiones GROUP BY no siempre corresponden a valores nulos tradicionales. Por el contrario, un nulo puede indicar que la fila resultante correspondiente es un subtotal o fila superagregada   - .

Page 339: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 340: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 341: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 342: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.3 Mejoras de la cláusula GROUP

6.3.7 Descripción de Cube

El operador CUBE produce subtotales para todas las posibles agregaciones, no sólo para aquellas en la jerarquía de columnas especificadas. El número de agregaciones creadas por el modificador CUBE está dado por el número de combinaciones distintas de valores de datos en todas las columnas que aparecen en la cláusula CUBE. Esto es, CUBE calcula valores para todas las combinaciones consideradas por el operador ROLLUP y agrega combinaciones adicionales.

Page 343: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

 CUBE crea agregaciones para todas las combinaciones de columnas, de manera que, diferenciándose de ROLLUP, el orden de expresiones no es significante. En términos de análisis multidimensional, CUBE genera todos los subtotales que pueden ser calculados para un cubo de datos con las dimensiones especificadas, donde cada dimensión corresponde a una columna especificada en la expresión de agrupamiento .

Page 344: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 345: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 346: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 347: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.3 Mejoras de la cláusula GROUP

6.3.8 Funciones Grouping

 

Al utilizar ROLLUP y CUBE se crean filas superagregadas en el resultado. La función GROUPING sirve para distinguir cuáles filas en el conjunto resultado corresponden a sobtotales o filas superagregadas, y determinar cuál es el nivel de agrupamiento de la fila.

GROUPING recibe como argumento un nombre de columna, y retorna el valor 1 cuando encuentra un valor nulo creado por la operación de CUBE o ROLLUP. Esto es, si el nulo indica que la fila es un subtotal o fila superagregada, GROUPING retorna 1. Para cualquier otro valor, incluyendo nulos almacenados, GROUPING retorna 0 .

Función GROUPING_ID  

Para conocer el nivel de agrupamiento de una fila determinada es posible utilizar la función GROUPING_ID. Dicha función retorna un número que permite determinar el nivel de agrupamiento exacto. Para cada fila, la función GROUPING_ID toma el conjunto de ceros y unos, que serían generados si se utilizara la función GROUPING correspondiente, y los concatena formando un vector de bits. El vector de bits es tratado como un número binario, y el valor en notación decimal correspondiente es retornado por la función GROUPING_ID .

Función GROUP_ID

Las extensiones a la cláusula GROUP BY permiten obtener resultados incluyendo niveles de agrupamiento duplicados. La función GROUP_ID permite distinguir agrupamientos duplicados. Si existen múltiples conjuntos de filas calculados para un nivel de agrupamiento determinado, GROUP_ID asigna el valor cero a todas las filas en el primer conjunto. Valores consecutivos, comenzando en uno, son asignados a cada conjunto de filas duplicadas correspondientes al agrupamiento en cuestión .

Page 348: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 349: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 350: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.3 Mejoras de la cláusula GROUP

6.3.9 AP: Uso de extensiones en la cláusula GROUP BY

  Laboratorio 6.3.9

Uso de extensiones en la cláusula GROUP BY.

Entender los niveles de agrupamiento formados por CUBE y ROLLUP. Diferenciar programáticamente filas regulares y filas superagregadas. Comprender la sintaxis de extensiones a la cláusula GROUP BY.

Duración Estimada: 45 min.

6.3 Mejoras de la cláusula GROUP

6.3.10 AI: Rollup, Cube y Grouping Sets

En base al enunciado, conteste verdadero “V” o falso “F”.

Page 351: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 352: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.3 Mejoras de la cláusula GROUP

6.3.11 Síntesis

Oracle 10g Server provee extensiones a la cláusula GROUP BY. CUBE, ROLLUP y GROUPING SETS facilitan la realización de reportes de tabulación cruzada y la inclusión de filas de subtotales en el resultado de una consulta. ROLLUP calcula agregaciones a diferentes niveles de agregación, desde lo más detallado hasta el total general. CUBE calcula todas las combinaciones posibles de agregaciones. GROUPING SETS permite especificar de forma precisa los juegos de grupo que se desea calcular en una sentencia SELECT. Utilizando las distintas extensiones a la cláusula GROUP BY, es posible escribir expresiones de agrupamiento combinadas o compuestas. ROLLUP es útil en la inclusión de filas de subtotales, CUBE es útil para el cómputo de reportes de tabulación cruzada. La función GROUPING permite identificar a qué nivel de agrupamiento pertenece la fila en cuestión, posibilitando el ordenamiento, filtrado y la personalización de filas subtotales en el resultado. Este tema abordó las extensiones provistas por Oracle 10g Server a la cláusula GROUP BY, cómo incluir filas subtotales en el resultado de una consulta SQL, y cómo computar el cubo de combinaciones de agrupamientos posibles. Además, dicho tema profundizó en cómo diferenciar, en el resultado de una consulta, filas agregadas regulares y filas superagregadas.

6.4 Subconsultas avanzadas

   

En la figura se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 353: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 354: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.4 Subconsultas avanzadas

6.4.1 Objetivos

Una subconsulta es una consulta dentro de una consulta. En una consulta que posea múltiples partes, una subconsulta responde parte de la consulta general, y la consulta padre responde el resto de la consulta. Cuando se anidan subconsultas, la subconsulta que se encuentra en el nivel más anidado es evaluada primero.  El mecanismo de separar una consulta general en partes menores es una práctica común y potente en la manipulación de datos. Este tema abarca los diferentes tipos de subconsultas y su utilización en consultas de nivel superior.

6.4 Subconsultas avanzadas

6.4.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 355: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.4 Subconsultas avanzadas

6.4.3 Subconsultas de varias Columnas

Una subconsulta es de columna múltiple cuando tiene más de una columna en la cláusula SELECT de la misma. Son generalmente usadas para comparar condiciones de columna o en sentencias UPDATE. Cuando dos o más columnas serán comprobadas al mismo tiempo, deben encerrarse entre paréntesis.

 -

Page 356: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.4 Subconsultas avanzadas

6.4.4 Subconsultas en la cláusula FROM

 

Una subconsulta puede aparecer en la cláusula FROM de la sentencia SELECT. Esto es similar a definir y usar una vista, esto también se conoce como vistas en línea.

La subconsulta en la cláusula FROM debe estar encerrada entre paréntesis y además es posible asignarle un alias. Las columnas seleccionadas en la subconsulta pueden ser referenciadas en la consulta principal, tal como se referencian las de una tabla o vista normal.   

Page 357: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.4 Subconsultas avanzadas

6.4.5 Subconsultas Correlacionadas

Una subconsulta correlacionada es cuando la subconsulta hace referencia a una columna de una tabla referenciada en la sentencia principal. Una subconsulta correlacionada es evaluada por cada fila procesada en la sentencia principal, por lo tanto la misma se ejecuta una vez por cada fila retornada por la consulta padre. La sentencia padre puede ser un SELECT , UPDATE o DELETE . Permite responder a cuestiones cuya respuesta depende del valor en cada fila de la consulta principal. Por ejemplo, ¿qué empleados ganan más que el salario medio de su departamento?, donde para cada registro padre se calcula el salario medio de su departamento . Este tipo de consultas también se utilizan cuando se desea actualizar o borrar filas de una tabla basadas en filas de otra tabla.

Page 358: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 359: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.4 Subconsultas avanzadas

6.4.6 Subconsultas Escalares

Una subconsulta escalar retorna exactamente el valor de columna de una fila. Pueden ser utilizadas en la mayoría de los lugares donde se usa un nombre de columna o una expresión, tales como dentro de las funciones de una sola fila como un argumento de entrada, en la cláusula VALUE de la sentencia INSERT, en un ORDER BY, en el WHERE y en un SELECT .

Las subconsultas escalares también se pueden utilizar en expresiones CASE o DECODE y no pueden ser usadas en las cláusulas GROUP BY, HAVING, START WHITH y CONNECT BY entre otras.

Page 360: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.4 Subconsultas avanzadas

6.4.7 Descripción del operador Exists - Sintaxis

La cláusula EXISTS (o NOT EXISTS) comprueba si una subconsulta devuelve algún valor (EXISTS) o no devuelve ninguno (NOT EXISTS).  Por lo general se usan junto con una consulta anidada correlacionada. En la figura , la consulta de primer nivel busca en la tabla de departamentos los nombres y, para cada fila, comprueba —mediante la subconsulta— que para ese número de departamento no existan empleados que hayan sido contratados el 3 de diciembre de 1990. En general, EXISTS(Q) devuelve VERDADERO si hay por lo menos un registro en el resultado de la consulta Q y devuelve FALSO en caso contrario. Por otro lado, NOT EXISTS(Q) devuelve VERDADERO si no hay registros en el resultado de la consulta Q y devuelve FALSO en caso contrario.

Page 361: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.4 Subconsultas avanzadas

6.4.8 AP: Prácticas con Exists

  Laboratorio 6.4.8

Utilización de la operador EXISTS

Comprender la utilización del operador EXISTS verificando la existencia de un valor determinado sobre un conjunto resultado.

Duración Estimada: 40 min.

6.4 Subconsultas avanzadas

6.4.9 AP: Actualizaciones correlacionadas

  Laboratorio 6.4.9

Actualizaciones Correlacionadas

Ejercitar el uso de las sentencias UPDATE y DELETE con subconsultas correlacionadas.

Duración Estimada: 40 min.

Page 362: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.4 Subconsultas avanzadas

6.4.10 AI: Consultas correlacionadas

Indique cuál de las siguientes sentencias es una subconsulta correlacionada.

6.4 Subconsultas avanzadas

6.4.11 Síntesis

Una subconsulta es una consulta dentro de una consulta. La escritura de subconsultas es un mecanismo potente de manipular datos. Subconsultas que retornan varias columnas son denominadas subconsultas de múltiples columnas, y las mismas sirven para comparar múltiples valores (o filas de valores).  Subconsultas utilizadas en la cláusula FROM de una consulta de nivel superior son denominadas vistas en línea. Cuando una columna de la tabla utilizada en la consulta padre es referenciada en la subconsulta, dicha subconsulta se denomina subconsulta correlacionada.  Una subconsulta escalar retorna una única fila conformada por un único valor de columna. Subconsultas escalares pueden ser utilizadas en la mayoría de los lugares donde puede aparecer una expresión. IN y EXISTS son los operadores más comúnmente utilizados con subconsultas. Subconsultas pueden aparecer en la cláusula WHERE o en la cláusula FROM. Además, subconsultas pueden ser utilizadas en lugar de nombres de tablas en sentencias DELETE, INSERT y UPDATE.  Este tema abarcó la funcionalidad de los diferentes tipos de subconsultas, y su utilización en la separación de consultas generales en partes.

Page 363: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.5 Recuperación Jerárquica

   

En la figura se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 364: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.5 Recuperación Jerárquica

6.5.1 Objetivos

Cuando una tabla contiene datos relacionados jerárquicamente, es posible seleccionar filas en un orden jerárquico. Oracle 10g Server incluye cláusulas especiales para escribir una consulta jerárquica. El resultado en este tipo de consulta, en general, es un conjunto de filas relacionadas representando una estructura de árbol invertido, comenzando desde la raíz y descendiendo por las ramas hasta las hojas. Una estructura de árbol puede ser recorrida desde abajo hacia arriba (bottom-up) o desde arriba hacia abajo (top-down).  Utilizando ordenamiento común de filas en una consulta jerárquica puede destruir la estructura de árbol representada en el resultado. Oracle 10g Server posee una cláusula especial de ordenamiento para ordenar filas hermanas (hijas del mismo padre). Este tema aborda consultas jerárquicas, filas padre / hijas, expresiones padre / hijos, y ordenamiento de filas respetando los niveles en una estructura de árbol.

Page 365: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.5 Recuperación Jerárquica

6.5.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 366: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.5 Recuperación Jerárquica

6.5.3 Estructura de árbol

Una tabla plana en una base de datos relacional puede contener una relación consigo misma o autorelación. La tabla EMPLOYEES posee una relación de este tipo, en la cual la columna MANAGER_ID referencia a un empleado por su EMPLOYEE_ID. Dicho de otra manera, los valores que toma la columna MANAGER_ID corresponden a un EMPLOYEE_ID determinado. Esta relación jerárquica que existe entre las filas de una misma tabla puede visualizarse en la forma de árbol .

Page 367: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 368: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 369: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 370: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 371: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.5 Recuperación Jerárquica

6.5.4 Consultas Jerárquicas

Oracle soporta cláusulas especiales, que pueden ser utilizadas en una sentencia SELECT, para recuperar y recorrer estructuras de árbol. Una consulta SQL que contenga las cláusulas START WITH y CONNECT BY se denomina consulta jerárquica. Si una tabla contiene datos jerárquicos, es posible seleccionar filas en un orden jerárquico utilizando una consulta jerárquica. 

START WITH especifica la/s fila/s raíz de la jerarquía CONNECT BY especifica la relación entre filas padres y filas hijas en la jerarquía.

En una consulta jerárquica, la condición seguida a CONNECT BY debe ser cualificada con el operador PRIOR para hacer referencia a la fila padre. Esto es: 

… PRIOR expression = expression                         o … expression = PRIOR expression Si la condición es compuesta, el operador PRIOR puede ser utilizado sólo en una condición. Por ejemplo: CONNECT BY last_name != ’King’ AND PRIOR employee_id = manager_id PRIOR es un operador unario y posee la misma precedencia que los operadores aritméticos “+” y “-“. El mismo evalúa la expresión inmediata siguiente para la fila padre de la fila corriente en una consulta jerárquica. PRIOR es comúnmente utilizado al comparar valores de columnas con el operador de igualdad. Teóricamente, es posible utilizar otros operadores, que no sea el de igualdad, en la cláusula CONNECT BY. No obstante, las condiciones creadas con estos otros operadores pueden causar bucles infinitos a través de las combinaciones posibles. En estos casos, Oracle Server detecta el bucle en tiempo de ejecución y retorna un error. 

La forma en que Oracle Server procesa una cláusula WHERE, si existe, en una consulta jerárquica depende de:

Si la cláusula WHERE no contiene una unión, Oracle  Server aplica todos los predicados que no correspondan al CONNECT BY después de realizar el procesamiento CONNECT BY sin afectar a las filas restantes de la jerarquía.

Si la cláusula WHERE contiene una unión, Oracle Server aplica los predicados de unión antes de realizar el procesamiento CONNECT BY. 

Oracle Server utiliza la información de las cláusulas de una consulta jerárquica para formar la jerarquía resultante realizando una serie de pasos y retorna el resultado en orden: raíz – izquierda – derecha  - .  En una consulta jerárquica, no debe utilizarse las cláusulas ORDER BY o GROUP BY, ya que las mismas destruyen el orden de la jerarquía establecido por CONNECT BY. Si se desea ordenar las filas a nivel de hermanos (hijos del mismo padre), utilice la cláusula ORDER SIBLINGS BY .

SYS_CONNECT_BY_PATH

La función SYS_CONNECT_BY_PATH(x, c), disponible a partir de Oracle, toma dos argumentos, “x” es una columna y “c” es un caracter simple. Dicha función es válida únicamente con consultas jerárquicas, y la misma retorna el camino (o path) de la columna “x”, delimitado por el caracter “c”, desde la raíz hacia el nodo para cada fila retornada por la condición de CONNECT BY .

A los nodos de un árbol se les asignan números de niveles desde la raíz. Utilice la función LPAD en conjunción con la pseudocolumna LEVEL para mostrar un informe jerárquico como árbol con sangrado.

Eliminación de Ramas

Puede utilizar las cláusulas WHERE y CONNECT BY para eliminar el árbol; es decir, para controlar qué

Page 372: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

nodos o qué filas se muestran. El predicado que utilice funciona como condición booleana.

Page 373: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 374: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.5 Recuperación Jerárquica

6.5.5

AP: Informes de estructuras jerárquicas

  Laboratorio 6.5.5

Informes de estructuras jerárquicas

Comprender el almacenamiento plano de estructuras jerárquicas a través de autorelaciones. Escribir expresiones CONNECT BY. Recorrer estructuras jerárquicas. Entender el uso de LEVEL para identificar el nivel de la jerarquía y dar formato a un resultado jerárquico.

Duración Estimada: 45 min.

6.5 Recuperación Jerárquica

6.5.6 AI: Estructuras Jerárquicas

En base al enunciado, conteste verdadero “V” o falso “F”.

Page 375: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.5 Recuperación Jerárquica

6.5.7 Síntesis

Una relación jerárquica entre filas de una tabla puede ser recuperada a través de consultas jerárquicas. Se denomina consulta jerárquica a toda sentencia SELECT que incluya las cláusulas CONNECT BY y START WITH.  START WITH especifica la/s fila/s raíz o puntos de comienzo a partir de los cuales se construye la jerarquía de filas resultantes. CONNECT BY especifica la relación entre filas padre y filas hijas en la jerarquía. El operador PRIOR en la cláusula CONNECT BY hace referencia a la fila padre. A través de la expresión en la cláusula CONNECT BY es posible especificar el orden de recorrido del árbol para construir el resultado. Por cada fila retornada en una consulta jerárquica, la pseudocolumna LEVEL retorna el valor 1 para una fila raíz, el valor 2 para una fila hija de esa raíz, y así sucesivamente. Una fila raíz es la fila ubicada al tope en el árbol invertido. Una fila hija es cualquier otra fila no raíz. Una fila padre es cualquier fila que posee filas hijas. Una fila hoja es cualquier fila sin filas hijas.  Para ordenar el resultado retornado por una consulta jerárquica es posible utilizar la cláusula ORDER SIBLINGS BY. La palabra reservada SIBLINGS sólo es válida en consultas que posean la cláusula CONNECT BY. ORDER SIBLINGS BY preserva el orden especificado en la consulta jerárquica y luego aplica la cláusula de ordenamiento a los hermanos en la jerarquía. Este tema abordó consultas jerárquicas, las palabras clave y funciones Oracle para recorrer y construir estructuras de árbol, y el ordenamiento de filas respetando los niveles existentes en la jerarquía de filas.

Page 376: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.6 Extensiones de Oracle 10g para sentencias DML y DDL

   

En la figura se presenta una clasificación de los contenidos tratados en esta subunidad teniendo en cuenta la relación de los mismos con el Material del Estudiante (kit).

Esta clasificación sugiere diferentes momentos de lectura, estudio y revisión entre los contenidos de este currículo y el Material del Estudiante (Kit). Según esta clasificación los contenidos pueden ser de:

Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas, temas o unidad asociados al Material del Estudiante (Kit).

Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en el Material del Estudiante (Kit).

Prácticas : Actividades de laboratorios e interactivas incluidas como práctica adicional al Material del Estudiante (Kit).

Page 377: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.6 Extensiones de Oracle 10g para sentencias DML y DDL

6.6.1 Objetivos

Oracle 10g Server incluye extensiones útiles para la manipulación y definición de datos.  A partir de Oracle 10g, la sentencia INSERT puede ser utilizada para adicionar filas a más de una tabla a la vez, esto es, una única sentencia DML inserta en más de una tabla basada en alguna condición. Esta inserción en múltiples tablas es muy útil para la carga eficiente de datos, ya que es posible adicionar datos a múltiples tablas destino realizando una única pasada por la tabla fuente, lo que implica un número ínfimo de invocaciones a la base de datos. Por otro lado, utilizando DLL es posible crear metadatos para una tabla almacenada fuera de la base de datos. Una tabla que no es almacenada en la base de datos es denominada tabla externa. Una vez creados los metadatos correspondientes es posible acceder a fuentes externas en forma transparente, como si permanecieran en tablas de la base de datos local.  Este tema aborda extensiones Oracle 10g a sentencias DML y DDL, sus ventajas y restricciones.

6.6 Extensiones de Oracle 10g para sentencias DML y DDL

6.6.2 Cuestionario de Iniciación

Coloque el cursor sobre los botones numerados que aparecen a la izquierda para visualizar las preguntas de iniciación. Si desea, puede desplegar su respuesta.

Page 378: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 379: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 380: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.6 Extensiones de Oracle 10g para sentencias DML y DDL

6.6.3 Inserciones Múltiples

En Oracle 10g, la sentencia INSERT puede ser utilizada para agregar filas a más de una tabla al mismo tiempo. En versiones anteriores, esta funcionalidad requiere varias sentencias INSERT INTO o con condiciones lógicas IF-THEN-ELSE.

Esta sentencia es muy útil para carga de datos en forma eficiente, puesto que los datos a agregar solo se buscan una sola vez, minimizando la cantidad de llamadas a la base de datos.

Los cuatro tipos de sentencias INSERT para inserciones en varias tablas son:

INSERT incondicional: agrega las filas en todas las tablas sin ninguna condición. Todas las sentencias INSERT se ejecutarán simultáneamente.

INSERT de rotación: inserta filas en tablas normalizadas de la base de datos con datos provenientes de una fuente no normalizada, transformando cada registro de la tabla origen en N registros de la/s tabla/s destino, siendo N igual al número de cláusulas INTO que se especifiquen en la sentencia.

INSERT ALL condicional: evalúa cada uno de las cláusulas WHEN para determinar si la fila se inserta en cada tabla especificada en cada cláusula INTO. Todas las cláusulas WHEN son evaluadas y solo en las que la condición es verdadera se ejecutan las cláusulas INTO correspondiente. Una cláusula ELSE opcional puede también ser utilizada.

INSERT FRIST condicional: evalúa cada una de las cláusulas WHEN en orden en el cual aparecen en la declaración y ejecuta solamente la cláusula INTO que pertenezca a la primer cláusula WHEN que se evalúe como verdadero. Una cláusula ELSE opcional puede también ser utilizada.

Page 381: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 382: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.6 Extensiones de Oracle 10g para sentencias DML y DDL

6.6.4 Descripción de Tablas Externas

Oracle 10g Release 1 (9.0.1), proporciona una manera de tener acceso a datos en fuentes externas como si estuvieran almacenados en una tabla de la base de datos. Usted puede conectarse a la base de datos y crear los metadatos para la tabla externa, usando el comando DDL CREATE TABLE ... ORGANIZATION EXTERNAL. Este comando está dividido en dos partes: una que describe los tipos de la columna, y la otra (los parámetros de acceso) que describe el mapeo de los datos externos a las columnas de datos Oracle 10g. Una tabla externa no describe ningún dato almacenado en la base de datos ni cómo los datos se almacenan en la fuente externa. En cambio, describe cómo el nivel de la tabla externa debe presentar los datos al servidor. Es responsabilidad del controlador de acceso y del nivel de tabla externa es hacer las transformaciones necesarias sobre los datos del archivo de datos de modo que coincida con la definición de la tabla externa.

Page 383: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.6 Extensiones de Oracle 10g para sentencias DML y DDL

6.6.5 Consultas de tablas externas

Las tablas externas son de solo lectura, por lo tanto, no se pueden realizar operaciones DML ni crear índices sobre ellas.Una tabla externa puede consultarse utilizando una sentencia SELECT de la misma forma en que se consulta cualquier otra tabla local. Cuando se accede a una tabla externa a través de una sentencia SQL, las columnas o campos de la tabla externa pueden ser utilizados de la misma forma en que se utilizan columnas de tablas locales. También es posible utilizar campos de tablas externas como argumentos de cualquier función predefinida SQL, función PL/SQL, o función Java . 

Este mecanismo de consulta sobre tablas externas es útil en la etapa de carga y transformación de datos en un almacén de datos.

Page 384: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 385: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 386: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.6 Extensiones de Oracle 10g para sentencias DML y DDL

6.6.6 AP: Manipulación de datos externos

  Laboratorio 6.6.6

Manipulación de datos externos

Comprender la utilización de tablas externas e incorporar datos externos a la base de datos. Ejercitar la definición de tablas externas como forma de incorporar datos a la base de datos.

Duración Estimada: 30 min.

6.6 Extensiones de Oracle 10g para sentencias DML y DDL

6.6.7 AI: Inserciones condicionales

Arrastre los componentes para armar la sentencia de inserción múltiple teniendo en cuenta el siguiente caso:

Suponga que existe una compañía de venta de libros, videos y CDs de audio. Dicha compañía posee una tabla SALES_DETAIL que contiene información acerca de todas las ventas. Como requerimiento del sistema de ventas, es necesario cargar esta información en tres tablas focalizadas específicamente en las tres categorías de productos: libros (B), audio (A), y videos (V). Estas tablas específicas a una categoría son utilizadas por un sistema de análisis de ventas. La tabla SALES_DETAIL posee una columna denominada PROD_CATEGORY.  En base a los valores que posee dicha columna debe decidirse en cuál de las anteriores tres tablas realizar la inserción de datos. Si la categoría es ‘B’, realizar la inserción en la tabla BOOK_SALES. Si la categoría es ‘A’, realizar la inserción en la tabla AUDIO_SALES. Si la categoría es ‘V’, realizar la inserción en la tabla VIDEO_SALES.

Page 387: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

6.6 Extensiones de Oracle 10g para sentencias DML y DDL

6.6.8 Síntesis

A partir de Oracle 10g, es posible realizar inserciones de múltiples tablas. A través de esta sentencia INSERT se realiza la inserción de datos en más de una tabla a la vez. Una sentencia de inserción múltiple incluye varias cláusulas WHEN condicionales, cada una especificando la inserción de datos en una tabla destino a través de la cláusula INTO.  La palabra clave ALL especifica a Oracle 10g Server que evalúe cada una de las cláusulas WHEN, independientemente que alguna de las mismas evalúe a verdadero o no. En contraposición, la palabra clave FIRST especifica que debe detenerse la evaluación de cláusulas WHEN después de encontrar la primer ocurrencia WHEN que evalúe a verdadero.  En Oracle 10g, es posible acceder a datos almacenados en fuentes externas como si los mismos estuvieran en tablas de la base de datos. A través de sentencias de definición de datos es posible crear metadatos que describen la fuente externa y permiten su acceso desde la base de datos. La definición de una tabla externa consiste de dos partes: la descripción de los tipos de dato de columnas Oracle 10g, y los parámetros de acceso que definen un mapeo desde datos externos hacia columnas de datos en la base de datos.  La definición de una tabla externa define cómo un nivel de tabla externo presenta los datos al servidor de base de datos. Todo mapeo necesario para cumplir dicho contrato es responsabilidad del driver que manipula el acceso a los datos externos. Además, una tabla externa es de sólo lectura; esto es, no es posible ejecutar operaciones DML y no es posible crear índices sobre tablas externas. Este tema abordó algunas de las extensiones Oracle 10g a sentencias DML y DDL.

Page 388: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 389: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 390: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)
Page 391: Curricula Fundacion Proydesa: DBA Oracle 10g (Spanish)

No pude copiar mas porque no tengo acceso a los otros modulos… valga el laburo que me tomo hacer ctrl. V ctrl. C de los slides al Word… realmente me rompi el culo saludos!!!