Está en la página 1de 389

1

Conceptos iniciales La base de datos provee muchas caractersticas tiles y poderosas. Muchas de estas caractersticas estn incorporadas al nivel de SQL. SQL ha sido adoptado por la mayora de los sistemas de gestin de base de datos relacionales (RDBMS). ANSI (American National Standards Institute) ha estado perfeccionando estndares del lenguaje SQL en los ltimos 20 aos. Oracle, como muchas otras compaas, ha adoptado el estndar ANSI de SQL y lo ha extendido para incluir un gran nmero de funcionalidades adicionales. El desarrollo de software para la gestin de informacin 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 gestin 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 gestin integral de datos. Con el advenimiento de la teora de objetos y la proliferacin del paradigma de orientacin 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 aplicacin de software. En este sentido, surgen las bases de datos objeto relacionales (ORDBMS) como una adaptacin de las bases de datos relacionales brindando, a travs de una capa de objetos, una interfase orientada a objetos que permite almacenar, acceder y recuperar datos objeto. Server, adems de continuar dando soporte a la tecnologa relacional, tambin soporta la tecnologa objeto relacional brindando todas las funcionalidades necesarias para la gestin de datos objeto.

1.1

Introduccin En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas: Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

1.1

Introduccin 1.1.1 Objetivos Esta seccin brinda una visin general acerca de una base de datos Oracle cubriendo los aspectos bsicos, tericos y fsicos de bases de datos relacionales, implementacin Oracle RDBMS y ORDBMS. Tambin se abordar el modelado de datos, una introduccin al lenguaje de consultas SQL y beneficios del lenguaje PL/SQL. Adems se realizar una introduccin a iSQL*Plus, que es un entorno utilizado para ejecutar sentencias SQL

1.1.1 Objetivos 1.1.1.1 Funciones de Oracle10g Funciones

La versin Oracle10g entrega una infraestructura exhaustiva de alto rendimiento, que incluye:

Escalabilidad de departamentos a ubicaciones e-business de empresa. Arquitectura slida, fiable, disponible y segura. Un modelo de desarrollo; sencillas opciones de despliegue. Saque provecho del juego de conocimientos actual de una organizacin en toda la plataforma Oracle (lo que incluye SQL, PL/SQL, Java y XML) Una interfaz de gestin para todas las aplicaciones Tecnologas estndar de la industria, sin bloqueo propietario

Los tres productos de infraestructura de grid de la versin 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 presentacin Servidores de aplicaciones para ejecutar la lgica de negocio y servir la lgica de presentacin para clientes basados en explorador Bases de datos para ejecutar la lgica de negocio con uso intensivo de base de datos y servir datos.

Oracle ofrece una amplia variedad de las herramientas de desarrollo ms avanzadas controladas por GUI (interfaz grfica 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 versin Oracle10g contiene la base de datos para la grid. La idea bsica de grid computing es la nocin de clculo como un servicio, de forma anloga a la red elctrica o a la red telefnica. Como cliente de la red (grid), no se preocupa de dnde estn los datos o de dnde se realiza el clculo. Lo que desea es que el clculo se realice y que le entreguen la informacin cuando la necesite. Grid computing puede reducir drsticamente el costo del clculo, ampliar la disponibilidad de los recursos de clculo y ofrecer una productividad y una calidad ms 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 lgicas simples.

1.1

Introduccin 1.1.2 Cuestionario de Iniciacin

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

1.1 Introduccin 1.1.3 Descripcin de Base de Datos

Una base de datos es una coleccin de datos relacionados. Por dato se entiende a un hecho conocido que puede ser almacenado y que posee un significado implcito. Por ejemplo, considere los nombres, nmeros de telfono y direcciones de un conjunto de personas almacenados en una libreta de direcciones o en una computadora personal. Esto es una coleccin de datos relacionados con un significado implcito, de esta forma, es una base de datos. La definicin precedente es genrica, sin embargo, el uso comn del trmino base de datos es usualmente ms restringido. Una base de datos posee las siguientes propiedades implcitas: Una base de datos representa algn 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 coleccin de datos lgica y coherente con un significado inherente. Una recoleccin de datos aleatoria no es una base de datos. Una base de datos es diseada, construida y cargada con datos para un propsito especfico. Existe un grupo de usuarios y un conjunto de aplicaciones preconcebidas en las cuales dichos usuarios estn interesados. En resumen, una base de datos posee alguna fuente a partir de la cual se derivan los datos, algn grado de interaccin con el mundo real, y una audiencia que est activamente interesada en los contenidos de la base de datos. Un Sistema de Gestin de Base de Datos (DBMS Database Management System) es una coleccin de programas de software que permite crear y mantener una base de datos. De esta forma, el DBMS es un sistema de software de propsito 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 sern 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 especficos, 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 propsito general para implementar una base de datos computarizada. Uno podra escribir su propio conjunto de programas para crear y mantener la base de datos, en efecto, creando su propio software DBMS de propsito general. En cualquier caso, ya sea que se utilice un DBMS de propsito general o no, usualmente se emplea una considerable cantidad de software para manipular la base de datos. La base de datos propiamente dicha ms 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 informacin 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 cmo se almacenan y mantienen los datos. Oracle

10g Server es un software DBMS de propsito general.

La Base de Datos Oracle 10g est diseada para almacenar y gestionar informacin de empresa. Permite reducir los costos de gestin y proporciona una alta calidad de servicio. La reduccin en los requisitos de configuracin y de gestin y el ajuste SQL automtico 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 versin Oracle 10g. "Grid computing" est relacionado con ver el clculo como un servicio. Si es un cliente, no necesita saber dnde residen los datos y qu computadora los almacena. Debera ser capaz de solicitar informacin o clculos 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. Tambin pueden ser datos no estructurados como:

Hojas de clculo Documentos de Word Presentaciones de PowerPoint XML Tipos de datos multimedia como MP3, grficos, vdeo, etc.

Ni siquiera es necesario que los datos estn en la base de datos. Base de Datos Oracle 10g dispone de servicios a travs de los que puede almacenar metadatos sobre informacin almacenada en los sistemas de archivos. Puede utilizar el servidor de bases de datos para gestionar y servir informacin dondequiera que se encuentre.

1.1 Introduccin 1.1.4 Descripcin 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 lgica de aplicacin 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 mayora del procesamiento y lgica de aplicacin. Esto produce un alto costo de mantenimiento de los clientes. Adems, los clientes pueden ser de diferentes plataformas, para lo cual es necesario hacer el deployment (despliegue) de la aplicacin para cada plataforma especfica.

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 aplicacin que contiene el grueso de la lgica de aplicacin. Los clientes en este modelo son clientes delgados. Con esta arquitectura, la lgica de aplicacin 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 organizacin. Oracle 10g Application Server posibilita a los usuarios implementar aplicaciones mediante una arquitectura de mltiples capas (multitiered). La capa del medio (middle-tier) posee la lgica de la aplicacin 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 ejecucin de J2EE y de servicios Web, un portal de empresa, un broker de integracin de empresa, inteligencia de negocio, almacenamiento en cach Web y servicios de gestin de identidad. Oracle Application Server 10g agrega nuevas funciones de grid computing, basndose en el xito de Oracle9i Application Server, que cuenta con cientos de clientes que utilizan sus aplicaciones de empresa de produccin. 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 o o

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

Tambin proporciona integracin entre usuarios, aplicaciones y datos en toda la organizacin.


Oracle Corporation asegura la futura compatibilidad con los estndares en evolucin al implicar de forma activa a personal clave en los comits de normalizacin SQL. Los comits aceptados por la industria son ANSI (Instituto Nacional Americano de Normalizacin) e ISO (Organizacin Internacional de Normalizacin).

1.1 Introduccin 1.1.5 Descripcin 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 .

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 gestin de base de datos relacional ( RDBMS ) varan desde simples consultas incluyendo una nica tabla de base a consultas complicadas de mltiples tablas incluyendo uniones, anidamiento, diferencia o unin de conjuntos, y otras. Oracle 10g Server es un RDBMS que implementa todas las caractersticas relacionales ms funcionalidades enriquecidas, como ser: commits rpidos, backup y recuperacin, conectividad escalable, bloque a nivel de filas, consistencia de lectura, particionamiento de tablas, paralelizacin de consultas, bases de datos en cluster, exportacin e importacin de datos, entre otras. La principal desventaja de bases de datos relacionales ocurre debido a su inhabilidad de manejar reas de aplicacin como bases de datos espaciales (ej.: CAD), aplicaciones que manipulan imgenes, y otros tipos de aplicaciones que incluyen la interrelacin compleja de datos. La ambicin de representar objetos complejos ha provocado el desarrollo de sistemas orientados a objeto incluyendo caractersticas de orientacin 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 reutilizacin de definiciones existentes para crear nuevos objetos), etc. Una base de datos orientada a objetos emplea un modelo de datos que soporta caractersticas de orientacin a objeto y tipos de datos abstractos. Bases de datos orientadas a objeto utilizan el podero de los lenguajes de programacin orientados a objeto para proporcionar capacidades de programacin de base de datos. Un sistema de gestin 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 estndar para bases de datos relacionales. La principal desventaja de ODBMS es la mala performance en la manipulacin y acceso a datos. No como en RDBMS, la optimizacin de consultas en OODBMS es altamente compleja. OODBMS tambin 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 caractersticas de orientacin a objeto en RDBMSs. Toda la informacin 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 extensin al modelo relacional. La interfase tipo objeto brindada por Oracle 10g Server contina dando soporte a la funcionalidad de base de datos relacional y, adems, SQL y otras varias interfases de programacin, 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 ampla las capacidades de creacin de modelos de datos para soportar una base de datos relacional de objetos que proporciona una programacin 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 ejecucin, mayores cachs de buffer y restricciones diferibles. Las aplicaciones de almacenes de datos se aprovechan de mejoras como la ejecucin paralela de operaciones de insercin, actualizacin y supresin; particin; y optimizacin de consultas compatible con ejecucin paralela. Al operar dentro del marco de NCA (arquitectura de clculo 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 ms informacin sobre los modelos relacional y relacional de objetos, consulte el manual Database Concepts.

Mediante SQL, se puede comunicar con Oracle Server. SQL tiene las siguientes ventajas: Eficaz. Fcil de aprender y utilizar. Completo funcionalmente (Con SQL, se pueden definir, recuperar y manipular datos de las tablas.) .

1.1 Introduccin 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 imgenes, videos, archivos de sonido, etc. La categora de datos semiestructurados abarca al mundo XML, donde se utiliza marcacin 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 travs 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 clasificacin 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 aplicacin. Oracle 10g Server tambin soporta tipos de dato ANSI y DB2. Los tipos de dato predefinidos en Oracle pueden ser clasificados de manera genrica en caracteres, numricos, long y raw, fecha y hora, objetos largos, y row ID. Los tipos de dato predefinidos y su utilizacin son tratados ms 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 ms 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 tecnologa de objetos que incluye Oracle 10g Server es un nivel de abstraccin construido sobre tecnologa 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 publicacin.

1.1 Introduccin 1.1.7 Modelo de Datos

Una caracterstica fundamental de una base de datos es que la misma provee un nivel de abstraccin de datos ocultando detalles acerca del almacenamiento de datos que no son necesarios para la mayora de los usuarios de base de datos. Dicha abstraccin es provista a travs de un modelo de datos . Un modelo de datos es una coleccin 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 mayora de los modelos de datos tambin incluyen un conjunto de operaciones bsicas 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.

1.1 Introduccin 1.1.8 Categoras 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 mayora de los usuarios perciben los datos. Modelos de datos fsicos o de bajo nivel: Proveen conceptos que describen cmo 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 implementacin: Proveen conceptos que pueden ser entendidos por usuarios finales pero y que a la vez son cercanos a la forma en que los datos estn organizados en la computadora. Dichos modelos ocultan algunos detalles acerca del almacenamiento de datos pero pueden ser implementados en un sistema de computacin de forma directa.

Modelos de datos conceptuales utilizan conceptos tales como: entidades, atributos y relaciones. Modelos de datos fsicos representan informacin 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 bsqueda de registros particulares en una base de datos. Modelos de datos representacionales o de implementacin son los modelos utilizados frecuentemente por los DBMSs comerciales tradicionales, tales como: Oracle 10g Server . Esta categora 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 jerrquico) . Este tipo de modelo representa datos utilizando estructuras de registros y, de esta forma, generalmente son denominados modelos de datos basados en registros.

1.1 Introduccin 1.1.9 El modelo Entidad Relacin

El modelo entidad relacin (ER) es un modelo de datos conceptual de alto nivel. Este modelo, y sus extensiones, frecuentemente es utilizado para el diseo conceptual de aplicaciones de base de datos, y muchas herramientas de diseo de base de datos emplean sus conceptos. El modelo ER datos como entidades, son relaciones entre entidades y atributos. El objeto bsico 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 fsica (una persona determinada, un auto, una casa, un empleado), o puede ser un objeto con una existencia conceptual (una compaa, un trabajo, un curso universitario). Cada entidad posee atributos; propiedades de inters que describen a la entidad. Por ejemplo, una entidad empleado puede ser descrita por su apellido y nombre, edad, direccin, 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 compaa que posee cientos de empleados puede desear almacenar informacin 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 coleccin (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 coleccin 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 relacin entre dos o ms entidades representa una interaccin entre las entidades. Existen varias relaciones implcitas entre tipos entidad. Una relacin 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 cuestin. Un tipo relacin 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 relacin y su correspondiente conjunto de relaciones son citados por el mismo nombre. Informalmente, cada relacin perteneciente al conjunto de relaciones es una asociacin de entidades, donde la asociacin incluye una entidad de cada uno de los tipos entidad participantes. Dichas relaciones instancias representan el hecho que las entidades participantes estn relacionadas en alguna forma en el dominio de problema correspondiente. Por ejemplo, la relacin WORKS_FOR entre los tipo entidad EMPLOYEE y DEPARTMENT asocia cada empleado con el departamento en el cual el mismo trabaja.

1.1 Introduccin 1.1.10 El modelo de Datos Relacional

El modelo de datos relacional utiliza el concepto de relacin matemtica, la cual puede representarse como una tabla de valores como su bloque de construccin bsico. Dicho modelo se basa en la teora de conjuntos y la lgica de predicados de primer orden, y sus principales caractersticas son la simplicidad y su fundamentacin matemtica. Oracle 10g Server es un sistema de base de datos comercial que provee una implementacin de este modelo . El modelo relacional representa la base de datos como una coleccin de relaciones, donde cada relacin se asemeja a una tabla de valores o archivo plano de registros. Cuando una relacin es pensada como una tabla de valores, cada fila en la tabla representa una coleccin 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 relacin en el mundo real. El nombre de la tabla y el nombre de las columnas son utilizados para facilitar la interpretacin 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 cmo 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 terminologa formal del modelo relacional, una fila es denominada una tupla, un encabezado de columna es denominado un atributo, y una tabla es denominada una relacin. El tipo de dato describiendo los tipos de valores que pueden aparecer en cada columna es denominado dominio.

1.1 Introduccin 1.1.11 Elementos que componen una Tabla

La terminologa utilizada en el modelo relacional es la siguiente: Tabla: La tabla es la estructura de almacenamiento bsica en un Sistema de Administracin 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 unvocamente y un conjunto de columnas. Una vez que se crea una tabla, se le pueden insertar filas de datos vlidos. 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 tambin 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 precisin (slo para el tipo de dato NUMBER).Todos los valores de una columna determinada tienen el mismo tipo de datos, y stos estn extrados de un conjunto de valores legales llamado el dominio de la columna. Las columnas de una tabla estn dispuestas en un orden especfico 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 combinacin de valores de columnas de una tabla (por ejemplo, la informacin acerca de un cliente en la tabla Clientes). Una fila a menudo se denomina tupla o registro. Cada tabla tiene cero o ms filas, conteniendo cada una un nico valor en cada columna. Las filas estn desordenadas; por defecto, los datos estn dispuestos de acuerdo a cmo se insertaron. Campo: Un campo se encuentra en la interseccin 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 ms pequeos. Clave primaria: Una clave primaria es una columna o conjunto de columnas que identifican unvocamente cada fila de una tabla (por ejemplo, un nmero de cliente). Una tabla tiene una nica clave primaria y debe contener un valor. Clave fornea: Una clave fornea 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 diseo de la base de datos relacional. Una tabla puede contener ms de una clave fornea. Una combinacin clave primaria/clave fornea crea una relacin padre/hijo entre las tablas que las contienen. Las figuras y muestran grficamente lo expresado anteriormente.

1.1 1.1.12

Introduccin El Lenguaje de Consulta Estructurada (SQL)

Diseado e implementado originariamente por IBM, SQL (Structured Query Language) es actualmente el lenguaje estndar para bases de datos relacionales comerciales. Esfuerzos de estandarizacin llevados a cabo por ANSI (American National Standard Institute) e ISO (International Standards Organization) han producido diferentes versiones estndar de SQL . SQL es un lenguaje de base de datos integral ; el mismo posee sentencias para la definicin, consulta y actualizacin 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 trminos tabla, fila y columna para relacin, tupla y atributo, respectivamente. SQL es flexible y eficiente, con caractersticas que han sido diseadas para la manipulacin de datos facilitando el acceso y la actualizacin 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 generacin (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 cules son los empleados que pertenecen al departamento nmero 90 (empleados que se eliminarn 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 ningn momento se explicita cmo realizar dicha operacin. Todas las operaciones realizadas sobre la informacin en una base de datos Oracle son ejecutadas utilizando sentencias SQL. Una sentencia SQL es una cadena de caracteres SQL. Slo una sentencia SQL completa puede ser ejecutada satisfactoriamente. Al ejecutarse un fragmento de sentencia se genera un error indicando que se requiere ms texto .

1.1 Introduccin 1.1.13 Diferencias con PL/SQL

Teniendo en cuenta que SQL es un lenguaje de cuarta generacin (4GL) y que los lenguajes de tercera generacin, como C y COBOL, son de naturaleza ms procedimental. Un programa escrito en un lenguaje de tercera generacin (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, aslan 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 ampla la funcionalidad de SQL aadiendo 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 mtodos (en PL/SQL versin 8 o superior)

Las construcciones procedimentales estn 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 nmero 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 travs 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 clusula WHERE de una consulta pueden filtrar datos utilizando criterios que, de otra forma, deberan ser evaluados por la aplicacin. Manipular cadenas de caracteres para representar tipos de datos especiales. Por ejemplo: latitud, longitud, temperatura, etc. Proveer ejecucin de consultas en paralelo.

Si la consulta es paralelizada, sentencias SQL en la funcin PL/SQL pueden tambin ser ejecutadas en paralelo (utilizando la opcin de consulta en paralelo).

1.1 Introduccin 1.1.14 Tipos de sentencias SQL

Sentencias SQL se dividen en las siguientes categoras

Sentencias de Lenguaje de Definicin 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 Manipulacin 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 especficos dentro de la base de datos (GRANT, REVOKE). Sentencias de Control de Transacciones: manejan los cambios hechos por los comandos del lenguaje de manipulacin de datos. Los cambios a los datos pueden ser agrupados en transacciones lgicas (COMMIT, ROLLBACK, SAVEPOINT). Sentencias de Control de Sesin: permiten que un usuario controle las propiedades de la sesin corriente, incluyendo la posibilidad de habilitar o deshabilitar roles, y cambiar la configuracin del lenguaje (ALTER SESSION, SET ROLE). Sentencias de Control de Sistema: cambian las propiedades de una instancia de Oracle 10g Server. Permiten cambiar diferentes parmetros de configuracin, tal como el nmero mnimo de servidores compartidos, matar una sesin determinada y ejecutar otras tareas (ALTER SYSTEM, ALTER SESSION, etc.). Sentencias de SQL embebido: permite la incorporacin de sentencias DDL, DML y de control de transacciones en un programa escrito en lenguaje procedural (OPEN, CLOSE, FETCH, EXECUTE, etc.).

1.1

Introduccin 1.1.15 Preguntas de Repaso sobre plataforma Oracle

Laboratorio 1.1.15 Preguntas de repaso sobre la Plataforma Oracle


1.1 1.1.16 Introduccin AP: Modelado Entidad Relacin

Laboratorio 1.1.16 Modelado Entidad - Relacin Modelado de datos. Diagrama Entidad Relacin. Claves, relaciones y cardinalidad de datos.
Duracin Estimada: 40 min.

1.1 Introduccin 1.1.17 Sntesis

Oracle surge de la teora de bases de datos relacionales, concebida por E. F. Codd en la dcada del
50, y extiende tales conceptos en una amplia gama de direcciones, tales como: data warehousing, procesamiento de transacciones en lnea y soporte de aplicaciones web.

El desarrollo de software para la gestin de informacin ha transitado diferentes alternativas en los ltimos aos. Primeramente, el software que se utiliz para el almacenamiento y la recuperacin de datos se bas en sistemas de archivos como medio de almacenamiento. Dicha solucin requiere que el programador de aplicaciones defina cmo se almacena y cmo se recupera la informacin, utilizando un lenguaje de programacin, tal como COBOL. Luego surgieron las bases de datos en red y las bases de datos jerrquicas, tecnologa que qued en desuso debido a su incapacidad de base para brindar eficiencia y flexibilidad al gestionar grandes volmenes de informacin. Como cuarto paradigma de base de datos, basado en una teora matemtica formalizada, aparecen las bases de datos relacionales; paradigma que gan rpidamente el mercado de gestin de datos y que evolucion brindando acceso a datos rpido, flexible y seguro. Debido a su fuerte basamento matemtico, la tecnologa relacional permiti, y contina permitiendo, el desarrollo de mecanismos de optimizacin que se utilizan tanto en el acceso a datos como en la actualizacin de los mismos. Sin duda, el auge de las bases de datos relacionales se debe a la adopcin de un lenguaje estndar universal, SQL, lo que brinda ventajas de integracin, estandarizacin y eficiencia, a la vez que posibilita el acceso a datos de manera rpida y sencilla. Oracle 10g Server provee muchas caractersticas tiles y poderosas, muchas de las cuales estn incorporadas al nivel de SQL. Adems, Oracle 10g Server posee un lenguaje procedural interno a la base de datos que posibilita la extensin de SQL. Este tema abord conceptos de bases de datos relacionales y objeto relacionales, introdujo el lenguaje de consulta estructurado estndar SQL, seal las diferencias que este ltimo posee para con un lenguaje procedural (como PL/SQL), y profundiz en los modelos de datos.

Bloque de consulta bsico En una base de datos relacional los datos son almacenados en estructuras de almacenamiento o tablas. Las dos operaciones bsicas a llevar a cabo sobre una base de datos relacional son la recuperacin o el acceso a los datos almacenados, y el almacenamiento en s o actualizacin de datos, ya sea: insercin, eliminacin o modificacin de datos. En una base de datos relacional, tanto para la recuperacin de datos como para la actualizacin de los mismos, se utiliza el lenguaje SQL. La sentencia del lenguaje utilizada para la recuperacin 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, adems, posee clusulas que permiten restringir y ordenar el conjunto resultado, lo que permite presentar el resultado de una consulta segn el formato requerido por el usuario final de la base de datos. SQL tambin provee la facilidad de invocar funciones, programas que reciben argumentos y calculan o retornan un valor en la sentencia SELECT. La invocacin de funciones brinda mayor flexibilidad y potencia al lenguaje, a la vez que provee un mecanismo de extensin. Los datos en una base de datos relacional se almacenan en diferentes tablas, y dichas tablas se encuentran relacionadas por valores en comn. Utilizando la sentencia SELECT, es posible escribir consultas que unen dos o ms tablas relacionadas y presentan la informacin de manera unificada. Adems del acceso a datos almacenados en diferentes tablas, en SQL es posible agregar o agrupar datos segn valores comunes, lo que permite calcular valores sumarizados a nivel de grupo de filas. La sentencia SELECT posee una clusula para especificar el agrupamiento de datos, y existen diferentes funciones de grupo para llevar a cabo clculos a nivel de grupo. Esta leccin trata tambin el entorno iSQL*Plus, en el que se pueden ejecutar sentencias SQL.

2.1

Escritura de sentencias SQL SELECT Bsicas

En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

2.1 Escritura de sentencias SQL SELECT Bsicas 2.1.1 Objetivos En esta sub-unidad se presenta la sentencia SELECT del lenguaje de consulta estructurado SQL en su forma ms primitiva, abordando tambin los operadores aritmticos, de concatenacin y conceptos complementarios aplicables a dicha sentencia.

2.1

Escritura de sentencias SQL SELECT Bsicas 2.1.2 Cuestionario de Iniciacin

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

2.1 Escritura de sentencias SQL SELECT Bsicas 2.1.3 Descripcin 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

Proyeccin: Seleccione las columnas de una tabla que se ha devuelto mediante una consulta. Seleccin: Seleccione las filas de una tabla que se han devuelto mediante una consulta. Unin: Junte datos almacenados en diferentes tablas especificando el enlace que hay entre ellos .

2.1 Escritura de sentencias SQL SELECT Bsicas 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 seleccionarn todas las columnas. Si se desea seleccionar slo algunas columnas de la tabla, se deben indicar los nombres de cada una de ellas, separadas por una coma . En su forma bsica, una sentencia SELCT debe contener: Una clusula SELECT. Una clusiula FROM, que identifica la tabla que contiene las columnas que se muestran en la clusula SELECT.

2.1

Escritura de sentencias SQL SELECT Bsicas 2.1.5 Escrituras de Sentencias SQL A continuacin se detallan algunas reglas para crear sentencias vlidas, fciles de interpretar

Las sentencias SQL no son sensibles a maysculas/minsculas. (a menos que se indique que lo sean). Las sentencias SQL se pueden introducir en una o en varias lneas. Las palabras clave no se pueden dividir en lneas ni se pueden abreviar. Las clusulas se suelen colocar en lneas aparte para facilitar su lectura y su edicin. Se deben utilizar sangrados para facilitar la lectura del cdigo. Las palabras clave se suelen introducir en maysculas; el resto de palabras, como nombres y columnas, se introduce en minsculas.

2.1 Escritura de sentencias SQL SELECT Bsicas 2.1.6 Utilidad de alias

El alias de columna renombra un encabezamiento de columna. Se especifica despus de la columna en la lista SELECT con un espacio en blanco de separacin . Por defecto, los encabezamieros alias aparecern en maysculas. Si el alias contiene espacios, caracteres especiales (como # o $) o es sensible a maysculas y minsculas, 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 estndar ANSI SQL 92.

2.1

Escritura de sentencias SQL SELECT Bsicas 2.1.7 Operadores aritmticos

Una expresin aritmtica puede contener nombres de columnas, valores numricos constantes y operadores aritmticos. Se pueden usar los operadores aritmticos en cualquier sentencia de SQL excepto en la clusula FROM. Precedencia de Operadores La multiplicacin y la divisin tienen prioridad sobre la suma y la resta. Los operadores de la misma prioridad se evalan de izquierda a derecha. Los parntesis pueden ser usados para cambiar la prioridad de evaluacin y para clarificar las sentencias

2.1 Escritura de sentencias SQL SELECT Bsicas 2.1.8 Operador de concatenacin

El operador de concatenacin est representado por dos barras verticales ( || ). Se utiliza para vincular columnas con otras columnas, expresiones aritmticas o valores constantes. Como resultado de la concatenacin se obtiene una columna que es una expresin de tipo caracter. Cadenas de Literales
Un literal es un caracter, un nmero 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 nmeros no es necesario que vayan entre comillas. Operador de Comillas (q) Alternativo El operador (q) se utiliza para seleccionar un delimitador propio.

2.1

Escritura de sentencias SQL SELECT Bsicas 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 clusula SELECT inmediatamente despus del comando. DISTINCT se aplica a todas las columnas de la lista de la clusula SELECT. Si hay varias columnas en la clusula SELECT, el resultado de aplicar DISTINCT representa las diferentes combinaciones de las columnas.

2.1 Escritura de sentencias SQL SELECT Bsicas 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 nmero y el espacio es un carcter. 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 concatenacin) retornan NULL cuando se les da un operando nulo. Valores Nulos en Expresiones Aritmticas Si en una expresin, cualquier valor de una columna es nulo, el resultado tambin lo es. Por ejemplo, si se intenta ejecutar una divisin por cero, se obtendr un error. Sin embargo, si se divide por un valor nulo, el resultado es nulo.

2.1

Escritura de sentencias SQL SELECT Bsicas

2.1.11 Interaccin de SQL e iSQL*Plus SQL es un lenguaje de comandos para la comunicacin con Oracle Server desde cualquier herramienta o aplicacin. Oracle SQL contiene muchas extensiones. iSQL*Plus es una herramienta de Oracle que reconoce y enva sentencias SQL a Oracle Server para su ejecucin y contiene su propio lenguaje de comandos. Funciones de SQL

Lo pueden utilizar diferentes usuarios, incluidos los que tengan poca o ninguna experiencia en programacin Es un lenguaje no procedural Es un lenguaje basado en el ingls

Funciones de iSQL*Plus

Se accede a l desde un explorador Acepta sentencias SQL Proporciona edicin online para modificar sentencias SQL Controla los valores de entorno Formatea los resultados de las consultas en informes bsicos Accede a bases de datos locales y remotas

Sentencias SQL frente a Comandos de iSQL*Plus SQL:

Un lenguaje Estndar 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 manipulacin de valores en la base de datos Se ejecuta en un explorador Se carga centralmente; no es necesaria su implementacin en cada mquina

2.1 Escritura de sentencias SQL SELECT Bsicas 2.1.12 Conexin a iSQL*Plus Para conectarse desde un entorno de explorador: 1. Inicie el explorador. Introduzca la direccin URL del entorno iSQL*Plus. En la pgina Login, introduzca valores adecuados en los campos Username, Password y Connect Identifier. Visin General de iSQL*Plus

2. 3.

Entorno iSQL*Plus En el explorador, la pgina iSQL*Plus Workspace tiene varias reas clave:

1. 2. 3. 4. 5. 6. 7. 8.

Cuadro de texto: rea en la que se escriben las sentencias SQL y los comandos de iSQL*Plus Botn Execute: Haga clic en este botn para ejecutar las sentencias y los comandos del cuadro de texto Botn Load Script: Abre un formulario en el que puede identificar una ruta de acceso y un nombre de archivo o una direccin URL que contiene comandos de SQL, PL/SQL o L*Plus para cargarlos en el cuadro de texto Botn Save Script: Guarda el contenido del cuadro de texto en un archivo Botn Cancel: Detiene la ejecucin del comando del cuadro de texto Botn Clear Screen: Haga clic en este botn para limpiar el texto del cuadro de texto Icono Logout: Haga clic en este icono para dar por terminada la sesin de iSQL*Plus y volver a la pgina iSQL*Plus Login Icono Preferences: Haga clic en este icono para cambiar la configuracin de la interfaz, la configuracin del sistema o la contrasea

9. Icono Help: Proporciona acceso a la documentacin de ayuda de iSQL*Plus


Visualizacin de la Estructura de Tablas El comando DESCRIBE muestra la estructura de una tabla .

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

1. 2.

Escriba la sentencia SQL en el cuadro de texto en iSQL*Plus. Haga clic en el botn Save Script. Se abrir el recuadro de dilogo Windows File Save. Identifique el nombre del archivo. La extensin 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 botn Load Script. Se abrir un formulario desde el que puede escribir el nombre del archivo o una direccin URL que contenga los comandos de SQL, PL/SQL o SQL*Plus que desee introducir en el cuadro de texto.

2.1

Escritura de sentencias SQL SELECT Bsicas 2.1.13 AP: Utilizacin de la sentencia SELECT

Laboratorio 2.1.13 Utilizacin de la sentencia SELECT

Utilizacin de la sentencia SELECT mediante operadores aritmticos y de concatenacin. Aplicacin de alias de columnas y eliminacin de filas duplicadas.

Duracin Estimada: 40 min.

2.1 Escritura de sentencias SQL SELECT Bsicas

2.1.14

AI: Seleccin 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 opcin/es hasta la posicin correcta que crea necesaria/s para completar la sentencia SELECT y as obtener el resultado que se muestra a continuacin.

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 continuacin. .

2.1 Escritura de sentencias SQL SELECT Bsicas 2.1.15 AI: Utilizacin 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 continuacin.

2.1 Escritura de sentencias SQL SELECT Bsicas 2.1.16 Sntesis

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 informacin alfanumrica. El tipo de dato NUMBER es utilizado para almacenar valores numricos. Valores tipo fecha pueden ser almacenados utilizando el tipo de dato DATE. Oracle 10g Server posee una amplia gama de operadores: aritmticos, de concatenacin, de conjuntos, de comparacin, de inclusin, lgicos, de comparacin de patrones, de rangos, y de verificacin de existencia y nulidad.

2.2

Restriccin y ordenamiento de datos

En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

2.2 Restriccin y ordenamiento de datos 2.2.1 Objetivos

En este tema se ver cmo, a travs de sentencias SQL, es posible limitar la informacin recuperada especificando criterios, y cmo visualizar los resultados en un orden especfico. Para restringir el conjunto resultado se utilizan condiciones de comparacin o condiciones lgicas.

2.2

Restriccin y ordenamiento de datos 2.2.2 Cuestionario de Iniciacin

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

2.2 Restriccin y ordenamiento de datos 2.2.3 Descripcin de la clusula WHERE

Se pueden restringir las filas recuperadas usando la clusula WHERE. Una clusula WHERE contiene una condicin lgica, la cual usa operadores de comparacin. Las filas procesadas son aquellas en que los datos que contienen satisfacen la/s condicin/es lgicas.

2.2 Restriccin y ordenamiento de datos 2.2.4 Sintaxis de la clusula WHERE

En la figura se muestra la sintaxis de la sentencia SELECT con la clusula WHERE, la cual se ubica a continuacin de la clusula FROM. Se pueden usar nombres de columnas o expresiones en la clusula WHERE, pero no alias de columnas.

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

2.2 Restriccin y ordenamiento de datos 2.2.5 Condiciones de comparacin

Los operadores de comparacin se emplean en la clusula WHERE para comparar una expresin con otra. El resultado de la comparacin puede ser TRUE, FALSE, o UNKNOWN. En la figura se muestra la sintaxis del uso de operadores dentro de la clusula WHERE, en la figura se listan los operadores de comparacin y se presentan ejemplos. A menudo es ms fcil encontrar las filas que no cumplen una condicin, que aquellas que s lo hacen. La negacin 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 patrn de caracteres usando el operador LIKE. La operacin de coincidencia se conoce como una bsqueda que incluye comodines. Se pueden utilizar dos smbolos para construir la bsqueda: % : Representa cualquier secuencia de cero o ms caracteres _ : Denota un solo caracter Cuando se necesita una coincidencia exacta para los comodines % y _, se usa la opcin ESCAPE. Dicha opcin especifica cul 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. .

2.2

Restriccin y ordenamiento de datos 2.2.6 Condiciones lgicas

Un operador lgico combina los resultados de dos condiciones para producir un nico resultado basado en ellos, o invertir el resultado de una condicin. La tabla siguiente lista los operadores lgicos. Consultas de Datos con Condiciones Mltiples

Se pueden especificar criterios complejos combinando varias condiciones. Los operadores AND y OR se pueden usar para componer expresiones lgicas. 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.

2.2 Restriccin y ordenamiento de datos 2.2.7 Descripcin de la clusula 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 clusula ORDER BY puede ser utilizada para ordenar las filas. Si se usa, se ubica como la ltima clusula en el comando SELECT. Se puede usar un alias de columna en la clusula ORDER BY. Ordenamiento de los Datos por Defecto El orden por defecto es ascendente: Los valores numricos se muestran con el valor ms bajo en primer lugar, por ejemplo 1 a 999. Los valores de fecha se muestran con el valor ms temprano en primer lugar, por ejemplo 01-011992 antes que 01-01-1995. Los valores de caracteres se muestran en orden alfabtico, 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 clusula 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 clusula ORDER BY para mostrar las filas en un orden especfico.

2.2 Restriccin y ordenamiento de datos 2.2.8 Sintaxis de la clusula ORDER BY

En la figura

se muestra la sintaxis de la sentencia SELECT con la clusula 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 recuperacin de las filas, se especifica el comando DESC despus del nombre de la columna en la clusula ORDER BY. Otro mtodo para ordenar el resultado de una consulta es por posicin. Dicho mtodo es til especficamente cuando se ordena por una expresin larga. En vez de tipearla nuevamente, se puede especificar su posicin en la lista SELECT. Se puede ordenar el resultado de una consulta por ms de una columna. El lmite es la cantidad de columnas de la tabla. En la clusula ORDER BY se especifican los nombres de las columnas separados por comas . Si se desea invertir el orden de una columna, se especifica DESC despus de su nombre o posicin.

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

2.2 Restriccin y ordenamiento de datos 2.2.9 Reglas de precedencia

Se pueden combinar los operadores AND y OR en la misma expresin lgica. 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. Cuando se usa negacin de expresiones, los operadores de comparacin tambin se evalan primero. Para modificar las reglas de precedencia se deben utilizar parntesis. Cada vez que se presenten dudas acerca de qu operacin ser ejecutada primero al evaluar una expresin, se debe usar parntesis 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 sustitucin. 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 dinmicamente. iSQL*Plus suministra esta flexibilidad con variables de usuario. Uso del Comando DEFINE En iSQL*Plus, puede utilizar las variables de sustitucin 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

Restriccin y ordenamiento de datos

2.2.10

AP: Utilizacin del BETWEEN, IN, LIKE y NULL

Laboratorio 2.2.10 Utilizacin de BETWEEN, IN, LIKE y NULL. Restriccin de filas recuperadas y ordenamineto de los resultados mostrados.
Duracin Estimada: 30 min.

2.2 Restriccin y ordenamiento de datos 2.2.11 AI: Restricciones AND, OR, NOT

Arrastre la/s opcin/es hasta la posicin correcta que crea necesaria/s para completar la sentencia SELECT que muestre el cdigo de departamento, el nombre donde el cdigo de ubicacin sea igual a 1700 y que tengan un director en dicho departamento, ordenando el resultado en forma descendente por el cdigo de departamento.

Arrastre la/s opcin/es hasta la posicin 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 estn a cargo del director cuyo cdigo es igual a 124 o 205, ordenando el resultado por el apellido.

2.2 Restriccin y ordenamiento de datos 2.2.12 AI: Utilizacin 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 obtendran como resultado al ejecutarse la siguiente sentencia SELECT.

2.2 Restriccin y ordenamiento de datos 2.2.13 Sntesis

En una sentencia SELECT, es posible limitar las filas seleccionadas utilizando una clusula WHERE y ordenar los datos recuperados utilizando una clusula ORDER BY. En este tema se abordaron estas clusulas, as como tambin condiciones de comparacin y condiciones lgicas. Utilizando operadores es posible escribir condiciones para restringir el resultado de una consulta SQL.

2.3 Funciones de una sola fila

En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

2.3 2.3.1

Funciones de una sola fila Objetivos

Funciones son programas que toman cero o ms argumentos y retornan un valor nico. Oracle 10g ha desarrollado un nmero 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 agregacin (tambin denominadas funciones de grupo), funciones analticas, 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 cules 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 Iniciacin

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

2.3 Funciones de una sola fila 2.3.3 Qu es una funcin SQL predefinida?

Las funciones en una BD Oracle

10g pueden clasificarse, en forma genrica, en: 10g y estn

Funciones SQL: Las funciones SQL son funciones predefinidas en Oracle disponibles para su utilizacin 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 segn el tipo de dato de sus argumentos y sus valores de retorno. De esta clasificacin surgen los siguientes grupos de funciones: Funciones de una sola fila Funciones de grupo (o de varias filas) Funciones analticas Funciones de referencia a objetos

2.3 Funciones de una sola fila 2.3.4 Conversin Implcita

Oracle 10g soporta conversin implcita y explcita de valores de un tipo de dato a otro. Es recomendado
especificar conversiones explcitas en vez de confiar en conversiones automticas o implcitas, por las siguientes razones: Las sentencias SQL son ms fciles de entender cuando se utilizan funciones de conversin de tipos de dato. La conversin de tipo de dato automtica puede tener un impacto negativo en performance. Las conversiones implcitas 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 conversin explcita es ms predecible. Los algoritmos de conversin implcita estn sujetos a modificaciones en diferentes versiones de software.

Oracle 10g automticamente convierte un valor de un tipo de dato a otro cuando dicha conversin tiene
sentido. Por Ej.: si se invoca a una funcin SQL con un argumento de un tipo de dato diferente al tipo de dato esperado por la misma, Oracle 10g implcitamente convierte el argumento al tipo de dato esperado antes de ejecutar la funcin SQL . Existen reglas que gobiernan el momento y la direccin en la cual Oracle 10g Server realiza conversiones de tipos de dato implcitas .

2.3 Funciones de una sola fila 2.3.5 Conversin Explcita

Es posible especificar explcitamente una conversin de tipo de dato utilizando funciones de conversin SQL.

Una funcin de conversin 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 explcitamente convierten un valor de un tipo de dato a otro .

2.3 Funciones de una sola fila 2.3.6 Argumentos de entrada

Las funciones pueden recibir informacin de entrada a travs de una lista de argumentos. Una funcin de una sola fila puede requerir cero o ms argumentos dependiendo del tipo de operacin que sta realice. Un argumento es un valor o una expresin de un tipo de dato especfico que la funcin utiliza para realizar la operacin y retornar un nico resultado. Los argumentos deben ser pasados entre parntesis a la funcin en el momento que sta es invocada y delimitados por comas en caso requerir ms 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 segn se especifique en la sintaxis de la funcin utilizada. En caso que una funcin reciba como argumento un valor o resultado de una expresin cuyo tipo de dato sea diferente al que realmente espera, Oracle 10g Server realizar la conversin implcita siempre y cuando sta sea vlida. 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

evalan desde el nivel ms interno al ms externo. Fun 3 (Fun2 (Fun1 (col, argum1) , argum2), argum3)

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 numricos pueden tomar como argumento cualquier tipo de dato caracter . Lmite en valores caracteres retornados: Funciones que retornan valores CHAR estn limitadas en longitud a 2000 bytes. Funciones que retornan valores VARCHAR2 estn limitadas en longitud a 4000 bytes. Funciones que retornan valores CLOB estn limitadas a 4 GB. Reglas en el tratamiento de los lmites: Para funciones de tipo CHAR y VARCHAR2, si la longitud del valor de retorno excede el lmite, 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 lmite, 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.

2.3 Funciones de una sola fila 2.3.8 Funciones numricas

La mayora de estas funciones retornan valores representados por dgitos con precisin de 38 decimales. Las funciones COS, COSH, EXP, LN, LOG, SIN, SINH, SQRT, TAN y TANH trabajan con precisin de 36 dgitos decimales. Las funciones ACOS, ASIN, ATAN y ATAN2 trabajan con precisin de 30 dgitos decimales. En la figura 10g Server. se muestra un listado exhaustivo de las funciones numricas existentes en Oracle

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 vacas como nulos. Toda expresin aritmtica conteniendo un nulo, siempre evala a nulo. Por ejemplo, 10 sumado a null da como resultado null. De hecho, todos los operadores (excepto concatenacin) 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 funcin NVL para retornar un valor en la ocurrencia de un nulo. Por ejemplo, la expresin NVL(COMM,0) retorna cero si COMM es nulo, o el valor de COMM si ste es no nulo. La funcin NVL2 evalua la primera expresin. Si la primera expresin no es nula, la funcin NVL2 retorna la segunda expresin. Si la primera expresin es nula, se retorna la tercera expresin. NVL2(expre1, expre2, expre3) La funcin NULLIF sirve para compara dos expresiones. Si son iguales, la funcin retorna un valor nulo. Si son diferentes, la funcin retorna la primera expresion. No se puede usar el literal NULL para la primera expresin. La funcin COALESCE devuelve la primera expresin no nula de la lista. La mayora de las funciones de agregacin 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 comparacin Para verificar la existencia de valores nulos debe utilizarse nicamente las condiciones de comparacin IS NULL y IS NOT NULL. Si se utiliza cualquier otra condicin 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 algn otro valor o de otro nulo. Sin embargo, Oracle 10g Server considera dos nulos como iguales cuando se evala una funcin DECODE. Oracle 10g Server tambin considera dos valores nulos como iguales si los mismos aparecen en claves compuestas. Esto es, Oracle 10g Server considera idnticas dos claves compuestas que contengan nulos si todos los componentes no nulos de las claves son iguales. Nulos en condiciones Una condicin que evala a UNKNOWN acta similar a FALSE. Por ejemplo, una sentencia SELECT con una condicin en la clusula WHERE que evala a UNKNOWN no retorna filas. No obstante, una condicin que evala a UNKNOWN difiere de FALSE en que operaciones posteriores realizadas sobre la condicin UNKNOWN darn como resultado UNKNOWN. Esto es, NOT FALSE evala a TRUE, pero NOT UNKNOWN evala a UNKNOWN. La figura muestra algunos ejemplos de evaluaciones considerando valores nulos.

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 funcin MONTHS_BETWEEN, la cual retorna un valor numrico. La figura muestra las funciones de fecha presentes en Oracle 10g Server. SYSDATE La funcin SYSDATE retorna la fecha y hora corriente. El tipo de dato del valor retornado es DATE. La funcin no requiere argumentos. En sentencias SQL distribuidas, esta funcin retorna la fecha y hora de la base de datos local . SYSTIMESTAMP La funcin 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 vare segn el ao de dos dgitos especificado y los dos dgitos del ao actual.

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 nmero, un modelo de formato especifica cmo Oracle 10g Server interpreta dicha cadena . Cabe destacar que un modelo de formato no modifica la representacin 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 estn determinados por el valor de ciertos parmetros de inicializacin. Para tales formatos, es posible especificar los caracteres retornados por estos elementos de formato implcitamente utilizando el parmetro de inicializacin NLS_TERRITORY. Es posible modificar el formato de fecha por defecto para una sesin a travs de la sentencia ALTER SESSION. Todos los modelos de formato numricos causan que el nmero en cuestin sea redondeado al nmero de dgitos significativos especificado en el modelo. Si un valor posee ms dgitos significativos a la izquierda del punto decimal de los que son especificados en el formato, el smbolo numeral ( # ) reemplaza el valor. Si un valor positivo es extremadamente largo y no puede ser representado en el formato especificado, el smbolo tilde ( ~ ) reemplaza el valor (notar que el tilde representa el valor infinito). De la misma forma, si un nmero negativo es extremadamente pequeo y no puede ser representado en el formato especificado, el smbolo infinito negativo reemplaza el valor ( - ~ ). Esta situacin normalmente ocurre cuando se est utilizando la funcin TO_CHAR con un modelo de formato numrico restrictivo, lo que provoca una operacin 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, explcitamente con el parmetro de inicializacin NLS_DATE_FORMAT, o implcitamente con el parmetro de inicializacin NLS_TERRITORY. Es posible modificar el formato de fecha por defecto en una sesin a travs de la sentencia ALTER SESSION .

2.3 Funciones de una sola fila 2.3.12 Funcin CASE

Las expresiones CASE pueden clasificarse en dos tipos generales: expresiones sencillas y expresiones de mltiples condiciones. La sintaxis mostrada en [SQL 3-54] corresponde a expresiones CASE sencillas. En este tipo de expresiones la condicin implcita utilizada es la igualdad (=). A travs de las expresiones CASE de mltiples condiciones puede utilizarse una combinacin 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 condicin que sea verdadera, y devuelve return_expr. Si ninguna de las condiciones (condition) es verdadera y existe una clusula ELSE, Oracle 10g Server devuelve else_expr. En caso contrario, Oracle 10g Server devuelve un valor nulo. El nmero mximo de argumentos en una expresin CASE es de 255, y cada par WHEN...THEN cuenta como dos argumentos. Para evitar exceder el lmite de 128 posibilidades, es posible anidar expresiones CASE. Esto es, return_expr puede ser en s misma una expresin CASE.

2.3 Funciones de una sola fila 2.3.13 Funcin DECODE

Si expr y search contienen datos caracter, Oracle 10g Server los compara utilizando semntica de comparacin 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 evala cada valor search nicamente antes de compararlo a expr. Como consecuencia, nunca se evala un valor search si un valor search previo es igual a expr . Oracle 10g Server automticamente convierte el valor expr y cada valor search al tipo de dato del primer valor search antes de realizar la comparacin. Oracle 10g Server automticamente 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 funcin DECODE, Oracle 10g Server considera dos valores nulos como equivalentes. Si expr es nulo, se retorna el valor result del primer search que tambin es nulo. DECODE no necesariamente debe retornar un valor; la funcin puede retornar nulo . El nmero mximo de componentes en la funcin DECODE, incluyendo expr, searches, results y default, es 255.

2.3

Funciones de una sola fila 2.3.14 AP: Manipulacin de NULOS

Laboratorio 2.3.14 Manipulacin de NULOS Aplicar las funciones de una fila para el manejo de valores nulos.
Duracin Estimada: 20 min.

2.3

Funciones de una sola fila 2.3.15 AI: Argumentos de entrada y respuesta de la Funcin

Analice cada invocacin de funcin y realice los siguientes ejercicios interactivos. En base a la invocacin y los argumentos de entrada recibidos, una con flechas la invocacin correspondiente al valor retornado . En base a la invocacin y los argumentos de entrada recibidos, complete el valor retornado por la funcin . En base a la invocacin y los argumentos de entrada recibidos, una con flechas la invocacin correspondiente al tipo de dato retornado .

2.3

Funciones de una sola fila 2.3.16 AI: Conversin de datos

Lea con atencin la sintaxis de invocacin de funciones y considerando el conjunto de posibles resultados, una con flechas segn corresponda.

2.3 Funciones de una sola fila 2.3.17 Sntesis

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 clusulas 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.

2.4

Visualizacin de datos de varias tablas

En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

2.4 Visualizacin 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 bsicas se vio cmo 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 ms tablas relacionadas y acceder a informacin. Utilizando la sentencia SELECT, es posible escribir consultas avanzadas que satisfacen requerimientos de usuario. Este tema focaliza la atencin en la consulta a datos a partir de ms de una tabla utilizando uniones de tabla Oracle 10g Sever ha enriquecido las capacidades al realizar uniones en conformidad al estndar 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

Visualizacin de datos de varias tablas 2.4.2 Cuestionario de Iniciacin

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

2.4 Visualizacin de datos de varias tablas

2.4.3

Descripcin 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 unvoca en una tabla; si existieran valores de clave primaria nulos implica que no sera posible identificar algunas filas de la tabla. Dicho de otra forma, si dos o ms filas de la tabla poseen valores nulos en su clave primaria, no sera posible distinguirlas. Este tipo de restriccin de clave, o restriccin de integridad sobre una relacin, es impuesto sobre una o ms 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 restriccin 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 nmero 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 restriccin de integridad referencial se establece a travs de una clave fornea . En el ejemplo citado, la columna DEPARTMENT_ID en la tabla EMPLOYEES es una clave fornea 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 fornea puede contener valores nulos, lo que implica que la fila correspondiente no posee una fila relacionada en la tabla destino. Una clave fornea puede hacer referencia a la misma tabla, estableciendo una autorelacin. Por ejemplo, la columna MANAGER_ID de la tabla EMLPOYEES establece una autorelacin entre empleados. Para un empleado determinado, la clave fornea MANAGER_ID referencia a otra fila en la misma tabla EMPLOYEES que corresponde al empleado director del empleado en cuestin .

2.4 Visualizacin de datos de varias tablas 2.4.4 Unin de tablas La condicin WHERE

Para consultar datos a partir de ms de una tabla, es necesario identificar columnas comunes que establezcan una relacin entre las tablas. En la clusula WHERE, se define la relacin entre las tablas que aparecen en la clusula FROM utilizando operadores de comparacin. Dicha relacin puede ser especificada utilizando una clusula JOIN en vez de la clusula WHERE. La clusula JOIN es una caracterstica nueva en Oracle 10g Server, adicionada para satisfacer el estndar ISO/ANSI SQL1999. Una consulta de mltiples tablas sin una relacin de este tipo es conocida como producto cartesiano o unin cruzada (cross join). El operador ms comn utilizado para relacionar dos tablas en el operador de igualdad (=). Se denomina unin de igualdad si se relacionan dos tablas utilizando el operador de igualdad. La unin de igualdad tambin es denominada unin simple, unin interna o equijoin. Este tipo de unin combina filas de dos tablas que poseen valores equivalentes para las columnas especificadas, y retorna nicamente las filas que satisfacen la condicin de igualdad . Cuando la clusula FROM incluye ms de dos tablas, Oracle 10g Server sigue un algoritmo de unin tomando conjuntos de dos tablas por vez .

2.4

Visualizacin de datos de varias tablas 2.4.5 Condiciones adicionales a la unin de tablas

Adems de especificar la condicin de unin en la clusula WHERE, es posible especificar otras condiciones para limitar las filas recuperadas. Tales uniones son denominadas uniones complejas

2.4 Visualizacin de datos de varias tablas 2.4.6 Ambigedad de columnas

Si mltiples 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 cualificacin de nombres de columna evita ambigedad e incrementa la legibilidad de la consulta . Usar el prefijo de tabla mejora el rendimiento de la consulta. Al realizar uniones con la clusula USING, no puede cualificar una columna que se use en la propia clusula USING.

2.4 Visualizacin de datos de varias tablas 2.4.7 Utilizacin de Alias de las tablas

De la misma forma que para las columnas, las tablas tambin 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 tambin pueden ser utilizados para acortar los nombres de tabla largos con nombres alias reducidos en tamao. Cuando tablas (o vistas) son especificadas en la clusula 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 sinnimos, los cuales sern tratados ms adelante). Reglas de cualificacin: 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 .

2.4 Visualizacin 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 unin de igualdad, tambin denominada unin interna o equijoin. Si se utiliza cualquier otro operador para relacionar las tablas en la consulta, la misma es denominada unin de no igualdad. Se pueden utilizar otras condiciones (como <= y >=), pero BETWEEN es la ms sencilla. Recuerde especificar el valor bajo en primer lugar y el alto al final cuando utilice BETWEEN.

2.4 Visualizacin de datos de varias tablas 2.4.9 Uniones Externas

Una unin interna retorna slo las filas coincidentes de ambas tablas. A veces, es necesario visualizar los datos de una tabla an si no existe la fila correspondiente en la tabla relacionada. Para realizar esto, Oracle 10g Server provee un mecanismo denominado unin externa. La unin externa retorna resultados basada en al condicin de unin interna, as como tambin en las filas no coincidentes de una o ambas tablas. En la sintaxis Oracle 10g tradicional, el smbolo ms encerrado entre parntesis, (+), denota una unin 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 unin externa de las tablas A y B y retorne todas las filas de A, se aplica el operador de unin externa (+) a todas las columnas de B en la condicin de unin. 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 unin externa (+) va del lado de la relacin donde se completa con valores nulos. Por ejemplo, para listar el pas (de la tabla COUNTRIES) y la ciudad (de la tabla LOCATIONS), mostrando todos los pases que pertenecen a la tabla COUNTRIES sin importar si poseen o no ciudades relacionadas en la tabla LOCATIONS. Para ejecutar esta unin externa, se utiliza un operador de unin externa junto a todas las columnas de la tabla LOCATIONS en la clusula WHERE . El operador de unin externa (+) puede aparecer nicamente en la clusula WHERE de una sentencia SELECT. Si existen mltiples condiciones de unin entre las tablas, el operador de unin externa debe ser utilizado en todas ellas . Una unin externa, conteniendo el operador (+), no puede ser combinada con otra condicin utilizando los operadores OR o IN .

2.4 Visualizacin de datos de varias tablas 2.4.10 Sintaxis en Uniones Externas

Una unin externa izquierda es una unin entre dos tablas que retorna filas basada en la condicin de comparacin, as tambin como filas no coincidentes de la tabla que aparece del lado izquierdo en la clusula 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 unin externa es ubicado junto a todas las columnas de B. Esto es una unin externa izquierda. Notar el orden en que aparecen las tablas en la clusula FROM . Una unin externa derecha es una unin entre dos tablas que retorna filas basada en la condicin de comparacin, as tambin como filas no coincidentes de la tabla que aparece del lado derecho en la clusula FROM (o JOIN en sintaxis ANSI) . Cabe resaltar que una consulta incluyendo una unin externa de tablas puede ser escrita tanto por izquierda como por derecha . Una unin externa completa (o full) es una unin entre dos tablas que retorna filas basada en la condicin de comparacin, as tambin como filas no coincidentes de la tabla del lado izquierdo y filas no coincidentes de la tabla del lado derecho de la clusula 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, an si los mismos no poseen un departamento asignado. Y tambin se desea incluir en el listado a todos los departamentos, an si no existen empleados trabajando en dicho departamento. Una unin externa completa resuelve este requerimiento . Unir tablas con las clusulas NATURAL JOIN, USING u ON da como resultado una unin interna. Las filas sin correspondencias no se muestran en la salida. Para devolver las filas sin correspondencias, puede utilizar una unin externa. Una unin externa devuelve todas las filas que satisfacen la condicin de unin y devuelve tambin algunas o todas las filas de una tabla para las que ninguna fila de la otra tabla satisface la condicin de unin.

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

Con NATURAL JOIN puede unir tablas automticamente basndose en columnas de las dos tablas que tengan tipos de datos y nombres correspondientes. Se puede utilizar la clusula USING para especificar nicamente las columnas que se deben utilizar para una unin igualitaria. Las columnas a las que se hace referencia en la clusula USING no deben tener cualificador (nombre de tabla o alias) en ninguna parte de la sentencia SQL. Utilice la clusula ON para especificar una condicin de unin. Esto le permite especificar condiciones de unin aparte de cualquier condicin de bsqueda o de filtro en la clusula WHERE. En sintaxis Oracle 10g, una consulta de unin externa completa no puede escribirse en forma directa utilizando el operador de unin externa (+) . Una forma de escribir una consulta de unin externa completa en sintaxis Oracle 10g es a travs del operador UNION .

2.4 Visualizacin de datos de varias tablas 2.4.11 Unin de una misma tabla

Una autounin combina una tabla a s misma. El nombre de la tabla aparece dos veces en la clusula 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 travs de columnas en comn . Cuando se ejecuta una autounin en sintaxis ANSI, siempre debe utilizarse la sintaxis JOIN...ON. Los tipos de unin NATURAL, y JOIN...USING no pueden ser utilizados . La clusula ON tambin se puede utilizar para unir columnas con nombres diferentes, dentro de la misma tabla o en una tabla diferente.

2.4 Visualizacin de datos de varias tablas 2.4.12 Creacin de Uniones en Tres Sentidos con Clusula ON

Uniones en Tres Sentidos

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

2.4 Visualizacin de datos de varias tablas 2.4.13 Productos Cartesianos

Cuando una condicin de unin no es vlida 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. Debera incluir siempre una condicin de unin vlida a menos que tenga la necesidad especfica de combinar todas las filas de todas las tablas. .

2.4

Visualizacin de datos de varias tablas 2.4.14 Uniones Cruzadas

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

2.4

Visualizacin 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.
Duracin Estimada: 40 min.

2.4

Visualizacin de datos de varias tablas 2.4.16 AP: Uniones de ms de dos tablas

Laboratorio 2.4.16

Uniones de ms de dos tablas.


Mostrar datos de ms de dos tablas mediante es uso de uniones de igualdad, autouniones y uniones externas.
Duracin Estimada: 40 min.

2.4

Visualizacin 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 grfico presentado conjuntamente.

2.4 Visualizacin de datos de varias tablas 2.4.18 Sntesis

Uniones son utilizadas para relacionar dos o ms tablas (o vistas). Trabajando con una base de datos relacional, es comn resolver un requerimiento que involucre la unin de datos. Las tablas son unidas (o relacionadas) utilizando una columna en comn entre ambas tablas en la clusula WHERE de la consulta. Oracle 10g Server soporta la sintaxis de unin ANSI/ISO SQL1999. En dicha sintaxis, las tablas son unidas utilizando la palabra clave JOIN y una condicin que pude ser especificada utilizando la clusula ON. Si la condicin de unin utiliza el operador de igualdad (= o IN), la unin es denominada unin de igualdad. Si se utiliza cualquier otro operador para unir las tablas, la unin es denominada unin de no igualdad. Si no se especifica ninguna condicin de unin 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 unin en la clusula WHERE cuando existen n tablas en la clusula FROM. Una tabla puede ser unida a s misma, este tipo de unin es denominado autounin.

Si se desea seleccionar los resultados a partir de una tabla, an 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 unin a realizar.

2.5

Agregado de datos utilizando funciones de grupo

En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

2.5 Agregado de datos utilizando funciones de grupo

2.5.1

Objetivos

Como ya ha sido introducido anteriormente, las funciones son programas que reciben cero o ms argumentos y retornan un valor nico. Este tema abarca funciones de agregacin, las cuales tambin son denominadas funciones de grupo. Funciones de grupo se diferencian de funciones de una sola fila en cmo 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 ms filas a la vez. Este tema considera cules funciones de grupo estn disponibles en SQL y las reglas sobre cmo utilizarlas. Juntamente a estos conceptos, se explora la invocacin a funciones de anidamiento. SQL posibilita el anidamiento de funciones de grupo en la invocacin a funciones de una sola fila, y el anidamiento de funciones de una sola fila en la invocacin a funciones de grupo.

2.5

Agregado de datos utilizando funciones de grupo 2.5.2 Cuestionario de Iniciacin

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

2.5 Agregado de datos utilizando funciones de grupo

2.5.3

Descripcin 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 opcin causa que una funcin de grupo considere slo valores distintos de una expresin argumento. ALL: esta opcin causa que una funcin 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 opcin, se asume por defecto ALL. Todas las funciones de grupo, excepto COUNT(*), ignoran los valores nulos. Se puede usar la funcin NVL en el argumento de una funcin de grupo para sustituir un valor nulo por otro valor. Si una consulta con una funcin de grupo no retorna filas, o slo retorna filas con valores nulos para el argumento de la funcin, la funcin 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 ejemplos de la utilizacin de las funciones de grupo.

se muestran tres

2.5 Agregado de datos utilizando funciones de grupo 2.5.5 La clusula GROUP BY

Si se usa la clusula 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 clusula GROUP BY, Oracle 10g Server aplica las funciones de grupo en la lista SELECT a todas las filas en la tabla o vista consultada.

Gua

En una consulta que contiene una clusula GROUP BY, todos los elementos de la lista SELECT deben ser expresiones de la clusula GROUP BY, expresiones que contienen funciones de grupo o constantes. Si hay fallas en la inclusin de columna, aparecer un mensaje de error. Con el uso de la clusula WHERE se pueden excluir filas antes de la divisin en grupos. No se puede usar la notacin de posicin o el alias de columna en la clusula GROUP BY.

Por defecto, las filas se ordenan en forma ascendente de acuerdo a la lista GROUP BY. Esto se puede modificar haciendo uso de la clusula ORDER BY. En la figura se muestran ejemplos de la utilizacin de la clusula GROUP BY.

2.5 Agregado de datos utilizando funciones de grupo 2.5.6 Agrupacin por ms de una columna

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

2.5 Agregado de datos utilizando funciones de grupo 2.5.7 La clusula HAVING

La clusula HAVING se usa para restringir cules grupos de filas, definidas por la clusula GROUP BY, son retornadas por la consulta. Oracle 10g Server procesa las clusulas WHERE, GROUP BY y HAVING de la siguiente manera:

Se deben especificar las clusulas GROUP BY y HAVING despus de la clusula WHERE. Si se especifican ambas clusulas (GROUP BY y HAVING), ellas pueden aparecer en cualquier orden. Las funciones de grupo pueden aparecer en la lista de la clusula SELECT y en la clusula HAVING. En la figura se muestran ejemplos de la utilizacin de la clusula HAVING.

1. Si la sentencia contiene una clusula WHERE, Oracle 10g Server remueve todas las filas que no 2.
la satisfacen. Oracle 10g Server calcula y da formato a los grupos como se especifica en la clusula GROUP BY.

3. Oracle 10g Server remueve todos los grupos que no satisfacen la clusula HAVING.

2.5 Agregado de datos utilizando funciones de grupo 2.5.8 AI: Manejo de la clusula Group By

Arrastre la/s opcion/es hasta la posicin 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 ao 1990 y el 2000. Ordene el resultado por nmero de empleado en forma ascendente.

2.5 Agregado de datos utilizando funciones de grupo 2.5.9 AI: Manejo de la clusula Having

Arrastre la/s opcion/es hasta la posicin 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.

2.5

Agregado de datos utilizando funciones de grupo 2.5.10 Sntesis

Las funciones de grupo pueden ser utilizadas en una sentencia SELECT en las clusulas SELECT, HAVING y ORDER BY. La mayora de las funciones de grupo pueden ser aplicadas a todos los valores de datos o slo 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.

Consultas y subconsultas

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 operacin simple al mostrar datos desde una nica tabla, hasta operaciones complejas que involucran la unin 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 administracin. 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. Subconsultas (subqueries) 1
En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

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 ms interna es evaluada en primer lugar. Subconsultas pueden utilizarse en cualquier sentencia DML. Subconsultas utilizadas en la clusula FROM, en una consulta de nivel tope, son denominadas vistas en lnea (inline view). Vistas en lnea son tratadas en un tema posterior. Subconsultas que aparecen en la clusula 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.

3.1

Subconsultas (subqueries) 3.1.2 Cuestionario de Iniciacin

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

3.1 Subconsultas (subqueries) 3.1.3 Descripcin de las Subconsultas

Una subconsulta es una sentencia SELECT que est incluida en una clusula 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 condicin que depende de los datos que estn en la misma tabla o en alguna otra. Se puede poner la subconsulta en algunas de las siguientes clusulas de un comando SQL: Clusula WHERE. Clusula HAVING. Clusula 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.

Gua
Una subconsulta debe estar encerrada entre parntesis. La subconsulta debe aparecer a la derecha del operador de comparacin. Las subconsultas no pueden contener una clusula ORDER BY. Se puede tener una sola clusula ORDER BY para una sentencia SELECT, y especficamente debe ser la ltima clusula 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 condicin de la consulta principal, o externa.

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 seccin 3.1.3, contiene una subconsulta de filas simples, ya que devuelve un solo valor: el nmero del departamento en la cual trabaja Vargas. Se pueden mostrar los datos resultantes de una consulta principal usando una funcin de grupo en una subconsulta para devolver una fila simple.

Un error comn es que una subconsulta de fila simple d como resultado ms de una fila. Otros operadores de comparacin de una sola fila 3

3.1 Subconsultas (subqueries) 3.1.5 Subconsultas de varias Filas

Las subconsultas que devuelven ms de una fila se denominan subconsultas de filas mltiples. Se debe usar un operador de filas mltiples, tal como IN, en lugar de un operador de fila simple. Este operador espera uno o ms valores. Operadores de Filas Mltiples Adems del operador IN, SQL ofrece los operadores que se detallan a continuacin para escribir condiciones de bsqueda en subconsultas que devuelven ms de una fila.

3.1 Subconsultas (subqueries)

3.1.6

Subconsultas en la clusula HAVING

Adems de la clusula WHERE, las subconsultas tambin se pueden usar en la clusula HAVING. Primero se ejecuta la subconsulta y el resultado es devuelto a la clusula 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)

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 condicin que dependa de datos ubicados en la misma tabla o en alguna otra.
Duracin 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 condicin que dependa de datos ubicados en la misma tabla o en alguna otra. Inconvenientes con valores nulos dentro de subconsultas.
Duracin Estimada: 40 min.

3.1 3.1.10

Subconsultas (subqueries) AI: Manejo de Subconsultas

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

3.1 Subconsultas (subqueries) 3.1.11 Sntesis

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 mltiples filas. Subconsultas de una sola fila retornan cero o una fila; mientras que subconsultas de mltiples filas retornan cero o ms filas. Los operadores de subconsultas ms comnmente utilizados son: IN y EXISTS. Una subconsulta puede aparecer en la clusula WHERE o en la clusula FROM. Las mismas pueden tambin 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 mayora de lugares donde puede ser utilizada una expresin.

3.2

Produccin de una salida legible con iSQL*Plus

En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

3.2 Produccin 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 versin 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 instalacin del software cliente en cualquier PC. Dicha herramienta es automticamente instalada cuando se instala el software servidor. Este tema discute las capacidades de SQL*Plus y su utilizacin. Los comandos SQL*Plus son un sper conjunto de los comandos iSQL*Plus.

3.2 3.2.2

Produccin de una salida legible con iSQL*Plus Cuestionario de Iniciacin

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

3.2 Produccin de una salida legible con iSQL*Plus 3.2.3 Efectos interactivos del iSQL*Plus (& y &&)

En iSQL*Plus, se pueden usar variables de sustitucin de tipo ampersand (&) simple para almacenar valores en forma temporal. La utilizacin de variables de sustitucin sirve a varios propsitos, entre ellos: Especificar un rango de fechas dentro del cual se efectuarn los clculos. 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 parmetros desde un archivo en lugar de solicitarlos al usuario. Cambiar dinmicamente encabezados y pies de pginas.

Nota: iSQL*Plus no soporta chequeos de validacin sobre lo que ingresa el usuario. Variables de Sustitucin de Tipo Ampersand (&) Simple Cuando se ejecuta una consulta, con frecuencia los usuarios desean restringir dinmicamente 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 sustitucin 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 sesin.

3.2

Produccin de una salida legible con iSQL*Plus 3.2.4 Definicin 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 . Gua El comando DEFINE crear una variable si la misma no existe, y si existe la redefinirn automticamente. Cuando se usa el comando DEFINE, se deben utilizar apstrofos 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 sesin de iSQL*Plus.

Cuando se aplica UNDEFINE sobre una variable, se pueden verificar los cambios con el comando DEFINE. Cuando finaliza la sesin iSQL*Plus, se pierden las variables definidas en la misma. En la figura usuario. , se muestra un ejemplo en donde se define, inicializa, usa y elimina una variable de

3.2 Produccin 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 despus que el mismo reemplace las variables de sustitucin por sus valores. Recuerde que en una clusula WHERE, los valores de tipo fecha y carcter deben estar encerrados entre apstrofes. La misma regla se aplica a la sustitucin de variables. A fin de evitar el ingreso de los apstrofes en tiempo de ejecucin, se debe encerrar, en la misma sentencia SQL, al ampersand (&) y a la variable dentro de apstrofes. Las variables de sustitucin se pueden usar no solamente en la clusula WHERE de una sentencia SQL, sino que adems pueden usarse para sustituir clusulas ORDER BY, nombres de tablas, nombres de columnas, expresiones, texto o sentencias SELECT completas.

3.2 Produccin de una salida legible con iSQL*Plus 3.2.6 Seleccin de parmetros del iSQL*Plus

En iSQL*Plus se puede configurar el entorno de trabajo para cada sesin abierta a travs de las Variables de Sistema . Existen dos formas de personalizar el entorno de trabajo, una es a travs de la pantalla Variables del Sistema que se encuentra dentro de la opcin 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 sesin. - Link de ayuda: https://helot.cs.cf.ac.uk

.2

Produccin de una salida legible con iSQL*Plus 3.2.7 AP: Consultas con

condiciones Interactivas

Laboratorio 3.2.7 Consultas con condiciones Interactivas Utilizacin de variables de sustitucin iSQL*Plus con el fin de dar la posibilidad al operador de modificar la/s condicin/es de bsqueda/s.
Duracin Estimada: 40 min.

3.2

Produccin de una salida legible con iSQL*Plus 3.2.8 AP: Consultas con Campos Interactivos

Laboratorio 3.2.8 Consultas con Campos Interactivos Utilizacin de variables de sustitucin en iSQL*Plus con el fin de dar la posibilidad al operador de elegir tanto las tablas como sus respectivas columnas a mostrar.
Duracin Estimada: 20 min.

3.2

Produccin 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 interaccin de usuario con iSQL*Plus.

3.2

Produccin 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 interaccin de usuario con iSQL*Plus.

3.2 Produccin de una salida legible con iSQL*Plus 3.2.11 Sntesis

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 utilizacin de la herramienta. En Oracle 10g, SQL*Plus incluye comandos que dan soporte a la administracin 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 edicin SQL*Plus. El comando DESCRIBE es utilizado para recuperar informacin acerca de una tabla, vista, funcin o procedimiento.

Mltiples 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 caractersticas de las columnas presentes en una consulta SQL. Es posible definir variables en SQL*Plus. Variables tambin pueden ser utilizadas en sentencias SQL. Determinados valores sern 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.

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

Tablas

La tabla es la estructura bsica de almacenamiento en una base de datos Oracle. Como parte de su definicin, una tabla posee columnas, cada columna con un tipo especfico de datos, y almacena filas de datos. Los usuarios finales y las aplicaciones de software acceden a datos a travs de SQL, y manipulan datos a travs de sentencias DML (Data Manipulation Language). Los datos almacenados en varias tablas se relacionan a travs 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 especfico, o que dicha columna referencia a una columna comn en otra tabla. Estas especificaciones se denominan restricciones. Una restriccin puede ser considerada como una regla o poltica definida en la base de datos para forzar reglas de negocio e integridad de datos.
4.1 Manipulacin de datos

En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

4.1 Manipulacin 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 cmo manipular datos y cmo coordinar cambios mltiples utilizando transacciones. Oracle 10g es una base de datos multiusuario, y ms de un usuario o sesin puede cambiar datos al mismo tiempo. Este tema tambin abarca el mecanismo de bloqueos y cmo el mismo es utilizado para controlar esta concurrencia. Otro efecto de una base de datos multiusuario es que los datos pueden cambiar durante la ejecucin de sentencias. Es posible ejercitar determinados controles sobre la consistencia o visibilidad de estos cambios dentro de una transaccin.

4.1

Manipulacin de datos 4.1.2 Cuestionario de Iniciacin

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

4.1 Manipulacin de datos 4.1.3 Descripcin de DML

El Lenguaje de Manipulacin 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 transaccin o unidad de trabajo lgica. En la figura se muestran los comandos de manejo de datos.

4.1 Manipulacin de datos 4.1.4 Descripcin del Insert Sintaxis

Se puede agregar una nueva fila a una tabla por medio de la clusula INSERT. Este comando con la clusula 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 clusula 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.

Guas

Se debe encerrar a los valores de tipo caracter y fecha entre apstrofos; y no encerrar los valores numricos.

Para insertar valores nulos en una columna, se puede: Omitir la columna de la lista (mtodo implcito). Especificar la palabra clave NULL en la lista VALUES (mtodo explcito). Especificar una cadena vaca () en la lista VALUES; para cadenas de caracteres y valores de fechas (mtodo explcito).

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

SYSDATE, que devuelve la fecha y hora actuales. UID, que devuelve un nmero entero que identifica unvocamente 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

4.1 Manipulacin de datos 4.1.5 Insercin 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 funcin TO_DATE.

4.1 Manipulacin 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 clusula VALUES, se usa una subconsulta. El nmero de columnas en la lista de la clusula INSERT debe coincidir con el nmero 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

Manipulacin de datos 4.1.7 Descripcin del Update Sintaxis

Se pueden modificar filas existentes en una tabla usando la clusula UPDATE. Confirme la operacin de actualizacin realizando una consulta en la tabla para mostrar las filas actualizadas.

4.1 Manipulacin 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 clusula WHERE en el comando UPDATE, todas las filas de la tabla sern actualizadas.

4.1 Manipulacin de datos 4.1.9 Manejo de Foreign Key en actualizaciones

Si se intenta actualizar un registro con un valor que viola una restriccin 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 cdigo de error ORA-02291 que indica la violacin. Puede actualizar varias columnas en la clusula SET de una sentancia UPDATE escribiendo varias subconsultas.

4.1 Manipulacin de datos 4.1.10 Descripcin del Delete Sintaxis

Se pueden eliminar filas usando la clusula DELETE , si se omite la clusula WHERE, se eliminarn 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.

4.1 Manipulacin de datos 4.1.11 Manejo de Foreign Key en eliminaciones

Si se intenta borrar un registro con un valor que viola una restriccin 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 cdigo ORA-02292 para esa violacin.

4.1 Manipulacin de datos 4.1.12 Descripcin 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 especificacin de unin que describe cmo determinar si debe ejecutarse una operacin UPDATE o INSERT. La sentencia MERGE provee una operacin del tipo UPDATE-ELSE-INSERT, esto es, actualizar si la fila existe, insertar en caso contrario. Dicha operacin es til en ambientes de almacenes de datos (data warehousing), donde se realiza la actualizacin incremental de un destino basado en uno o ms orgenes 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 diseo del proceso de carga del almacn de datos determina que la tabla new_sales contiene filas segn la siguiente semntica: Si un registro, identificado por sales_transaction_id, correspondiente a una transaccin 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 semntica debera ser implementada a travs 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 operacin 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 estndar. En la clusula de actualizacin, no es posible especificar DEFAULT cuando se est actualizando una vista, y no es posible actualizar una columna que haya sido referenciada en la clusula ON. Adems, en la misma sentencia MERGE, no es posible actualizar la misma fila de la tabla destino mltiples veces. Es posible, no obstante, agregar los resultados en una vista en lnea en la clusula USING .

4.1 Manipulacin de datos 4.1.13 Descripcin de transacciones

Oracle 10g Server asegura consistencia con los datos basndose en transacciones. Las transacciones otorgan ms 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 crdito en una cuenta y un dbito en la otra por la misma cantidad. Ambas acciones debieran tener xito o fallar como una sola operacin. El crdito no debiera poder confirmarse sin el dbito correspondiente. En la figura se muestran los comandos utilizados para el control de transacciones.

El control de transacciones se puede hacer tanto en forma explcita

como implcita

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 an se puede emitir explcitamente. Adems, la sentencia COMMIT se omite al emitirse una sentencia DDL o al salir de iSQL*Plus.

4.1 Manipulacin 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 transaccin (cometida o no) en los segmentos de rollback. Slo 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 automticamente recupera la informacin del segmento, incluyendo las entradas de rollback para transacciones interactivas. Una vez que se completa la recuperacin, Oracle 10g cancela las transacciones que no fueron completadas ni vueltas hacia atrs 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 transaccin, luego vinculan cada nuevo cambio al cambio previo. Si se debe recuperar una transaccin, 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 transaccin de usuario comienza, se le asigna un segmento de rollback en una de las siguientes dos maneras: Oracle 10g puede asignar una transaccin automticamente al prximo segmento de rollback disponible. La asignacin de la transaccin ocurre cuando se edita la primer sentencia DML en la transaccin. Nunca se asignan transacciones de solo lectura a un segmento rollback. Una aplicacin puede asignar una transaccin a un segmento de rollback especfico. Al comienzo de una transaccin, un desarrollador o usuario de aplicaciones puede especificar un segmento rollback particular que Oracle 10g debera usar cuando se ejecute la transaccin. Cuando una transaccin se completa (commit), Oracle 10g libera la informacin de rollback pero no la destruye inmediatamente. La informacin permanece en el segmento de rollback para crear vistas consistentes de lectura de los datos pertinentes para las consultas que comenzaron antes que la transaccin se completara exitosamente.

4.1 Manipulacin de datos 4.1.15 Bloqueos

La sentencia SELECT FOR UPDATE se usa para bloquear registros especficos de una tabla, prohibiendo a otras sesiones modificar o borrar los registros bloqueados. Cuando los registros estn 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, agregndole la clusula FOR UPDATE al final de la sentencia. Los registros bloqueados solo se liberarn a travs 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 explcita una tabla completa, prohibindole 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 explcitos incrementa la posibilidad de que se produzcan abrazos mortales (deadlocks), por o tanto se lo debe usar cuidadosamente y con moderacin. 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 condicin y dispara una excepcin en una de las dos sesiones. Bloqueo DML Para administrar la concurrencia, mltiples 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 prohben que haya otro exclusivo pero si permiten otros compartidos sobre el mismo recurso. Los exclusivos prohben que haya tanto otro compartido como otro exclusivo. Sin embargo, los bloqueos no prohben 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 implcitamente 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.

4.1

Manipulacin de datos 4.1.16 AI: Insert

Ejercitar inserciones de datos uniendo con flechas.

4.1

Manipulacin 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 slo aquellos empleados que trabajan en Santa Fe o en Buenos Aires (localidades cuyos cdigos 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 comisin de cada empleado a 1,5 veces la comisin promedio de su departamento.

4.1

Manipulacin de datos 4.1.18 AI: Delete

Responda V (Verdadero) o F (Falso) segn sean los pares de sentencias DELETE equivalentes o no.

4.1 Manipulacin de datos 4.1.19 AI: Merge

Teniendo en cuenta el estado de las tablas PRODUCT_INFORMATION y NEW_PRICES antes y despus de la ejecucin de la operacin de merge, lea cuidadosamente la sentencia MERGE ejecutada y clasifique las filas resultantes con I (Inserted) o U (Updated).

4.1 4.1.20

Manipulacin de datos AI: Manejo de transacciones

Cul de las sentencias de la figura no finaliza una transaccin?

4.1 Manipulacin de datos 4.1.21 Sntesis

Este tema abarc cmo 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 tambin poseen diferencias importantes. Se discuti sobre concurrencia y cmo utilizar bloqueos para gestionar cambios concurrentes, resaltando los causales de deadlocks (bloqueos simultneos). Adems, se discuti sobre consistencia y cmo utilizar transacciones para gestionar consistencia. La sentencia SET TRANSACTION es usualmente utilizada para establecer consistencia a nivel de sentencia o de transaccin, y la misma puede tambin ser utilizada para asignar explcitamente una transaccin a un segmento de rollback especfico.

4.2

Creacin y gestin de tablas

En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

4.2 Creacin y gestin de tablas 4.2.1 Objetivos

La tabla es la estructura bsica de almacenamiento en una base de datos Oracle. Una tabla posee columnas como parte de su definicin y almacena filas de datos. Este tema abarca la creacin y modificacin de tablas, as como tambin cubre los diferentes tipos de dato que pueden ser utilizados al especificar una columna.

4.2

Creacin y gestin de tablas 4.2.2 Cuestionario de Iniciacin

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

4.2 Creacin y gestin de tablas 4.2.3 Descripcin de los objetos de una base de datos

Un esquema es una coleccin de objetos que estn disponibles a un usuario. Los objetos de un esquema son las estructuras lgicas 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, sinnimos e ndices. Tablas: Una tabla es la unidad bsica 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 presentacin hecha a medida de los datos en una o ms tablas. Las vistas tambin 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 estn definidos mediante una consulta. Secuencias: Una secuencia genera una lista serial de nmeros nicos para columnas numricas de tablas de una base de datos. Las secuencias simplifican la programacin de la aplicacin generando automticamente valores numricos nicos para las filas de una nica tabla o mltiples tablas. Sinnimos: Un sinnimo es un alias para una tabla, vista, secuencia o unidad de programa. Un sinnimo 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 recuperacin 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 lgica y fsicamente independientes de los datos. Ellos pueden ser creados y borrados en cualquier momento sin efecto sobre las tablas u otros ndices.

4.2 Creacin y gestin de tablas 4.2.4 Descripcin 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 auditora y analizar tablas, ndices o cluster. Esos comandos tienen un efecto inmediato sobre la base de datos y tambin graban informacin en el diccionario de datos.

4.2.4

Descripcin de DDL 4.2.4.1 Instrucciones de Nomenclatura Reglas de Nomenclatura

Use nombres descriptivos pra tablas y otros objetos de base de datos

4.2 Creacin y gestin 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 deberan 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 especficos de un usuario o aplicacin particular .

4.2 Creacin y gestin de tablas 4.2.6 Diccionario de datos

El diccionario de datos es una de las partes ms importantes de una base de datos Oracle. Es un conjunto de tablas solo-lectura las cuales proveen informacin 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 debera escribir o cambiar el diccionario de datos. Durante la operacin 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 tambin actualiza el diccionario de datos continuamente para reflejar los cambios en las estructuras y permisos de la base de datos.

4.2 Creacin y gestin 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 informacin y trata de diferente manera a valores con tipos de datos distintos. Los tipos de datos bsicos son carcter (character), nmero (number), fecha (date) y RAW. El ancho de columna determina el nmero de caracteres mximo para los valores de esa columna. Se debe especificar el tamao para las columnas de tipo VARCHAR2. Se puede especificar el tamao para las columnas de tipo NUMBER y CHAR, aunque se dispone de los valores por defecto (38 para NUMBER y 1 para CHAR).

Los tipos de datos en Oracle 10g pueden encontrarse clasificados en cinco grandes categoras:

Caracteres: almacenan datos alfanumricos, representan palabras y texto, y manipulan cadenas de caracteres. Numricos: almacenan nmeros de punto fijo o flotante de cualquier tamao. Fecha y Hora: almacenan valores de fecha y hora de longitud fija. Binarios: almacenan imgenes, audio/video, archivos ejecutables, y datos similares. ROW ID: almacenan la direccin de almacenamiento fsico 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 tamao y de longitud variable dentro de una base de datos Oracle 10g, estos tipos provienen de las diferentes categoras: CLOB, NCLOB, BLOB y BFILE.

4.2 Creacin y gestin 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 definicin 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 utilizacin.

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

4.2 Creacin y gestin 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. Tambin 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 clusula ADD.

Observaciones No se puede especificar la posicin 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 definicin de una columna usando el comando ALTER TABLE con la clusula MODIFY. La modificacin de la columna puede incluir cambios de su tipo de dato, tamao, valor por defecto y restriccin de NOT NULL. Eliminar una Columna Se puede eliminar una columna usando el comando ALTER TABLE con la clusula DROP o puede marcarla como no utilizada (con la clusula 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 tambin son eliminados. Las columnas marcadas como no utilizadas no aparecern si ejecuta el comando DESCRIBE. No es posible seleccionar la columna a eliminar si hay ms de una marcada como no utilizada.

En Oracle 10g Server se pueden eliminar ms de una columna a la vez.


Opcin DEFAULT: Cuando se define una tabla, se puede especificar que se asigne un valor por defecto a una columna mediante la opcin DEFAULT. Esta opcin 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 expresin o una funcin SQL .

4.2 Creacin y gestin 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 seccin 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 definicin 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 opcin CASCADE CONSTRAINTS tambin 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 transaccin 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 sinnimo. Cuando renombra una tabla, Oracle 10g Server automticamente transfiere las restricciones de integridad, ndices y privilegios de la tabla vieja a la nueva. Todos los objetos que dependan de la tabla renombrada, tales como vistas, sinnimos, procedimientos almacenados y funciones, quedaran en estado invlido. Este comando se puede utilizar solo para renombrar los objetos que usted es dueo, no puede renombrar objetos de otro usuario, para eso se debe utilizar el comando ALTER TABLE con la clusula 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, adems no elimina a los ndices, triggers o restricciones de integridad referencial.

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

4.2

Creacin y gestin de tablas 4.2.11 AP: Creacin y gestin de tablas

Laboratorio 4.2.11 Creacin y gestin de tablas Creacin de tablas, anexo de nuevas columnas y modificacin de columnas existentes. Eliminacin de contenidos de una tabla.
Duracin Estimada: 30 min.

4.2

Creacin y gestin de tablas 4.2.12 AI: Crear tablas

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

4.2 4.2.13

Creacin y gestin de tablas AI: Modificar tablas

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

4.2 Creacin y gestin de tablas 4.2.14 Sntesis

Las tablas son la estructura bsica para el almacenamiento de datos. Una tabla contiene filas y columnas, como una planilla de clculo. Cada columna posee determinada caracterstica 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 alfanumricos. BLOB, BFILE y RAW son los tipos de dato binarios. DATE, TIMESTAMP e INTERVAL son los tipos de dato fecha. Adems, el tipo de dato TIMESTAMP puede almacenar informacin de zona horaria. La sentencia CREATE TABLE es utilizada para crear una nueva tabla. Una tabla debe poseer como mnimo 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, nmeros 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 vaca.

4.3

Inclusin de restricciones

En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

4.3 Inclusin de restricciones 4.3.1 Objetivos

En una base de datos relacional, los datos almacenados en varias tablas pueden estar relacionados. Una restriccin puede ser considera como una regla o poltica definida en la base de datos para forzar reglas de negocio e integridad de datos. Este tema abarca la creacin y utilizacin de restricciones.

4.3

Inclusin de restricciones 4.3.2 Cuestionario de Iniciacin

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

4.3 Inclusin de restricciones 4.3.3 Descripcin 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 operacin tenga xito. Adems, impiden la eliminacin de una tabla si existen dependencias desde otras tablas.

Todas las restricciones se encuentran almacenadas en el diccionario de datos. Las restricciones son fciles de referenciar si se les da un nombre significativo. Los nombres deben seguir las reglas estndar para los nombres de los objetos. Si no se le asigna un nombre a la restriccin, 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 mtodos de definir reglas obre una columna de una tabla (triggers, procedimientos, funciones, etc.) pero las restricciones de integridad presentan algunas ventajas.

4.3 Inclusin de restricciones 4.3.4 Tipos de restricciones

La Restriccin NOT NULL La restriccin NOT NULL asegura que en la columna no se permitan valores nulos. Las columnas sin la restriccin NOT NULL pueden contener valores nulos, por defecto. Esta restriccin puede especificarse solamente a nivel de columna, no a nivel de tabla. La Restriccin UNIQUE Una restriccin UNIQUE define a una columna o combinacin 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 restriccin a nivel de columna o restriccin a nivel de tabla. Una clave nica compuesta se crea usando la definicin de restriccin a nivel de tabla. Para una columna clave nica se crea automticamente un ndice UNIQUE. Una restriccin UNIQUE no es lo mismo que, o un sinnimo de, la restriccin PRIMARY KEY. La Restriccin PRIMARY KEY Una restriccin PRIMARY KEY crea una clave primaria para la tabla. Se puede crear solamente una clave primaria por tabla. La restriccin PRIMARY KEY es una columna, o conjunto de ellas, que identifican unvocamente a cada fila de una tabla. Esta restriccin garantiza la unicidad de la columna (o combinacin 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 definicin a nivel de tabla. Se crea automticamente un ndice UNIQUE para la columna PRIMARY KEY. La Restriccin FOREIGN KEY La restriccin FOREIGN KEY, o de integridad referencial, designa a una columna, o combinacin de ellas, como una clave fornea y establece una relacin con una clave primaria o clave nica de la misma tabla o de otra tabla. El valor de la clave fornea 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 fornea compuesta se crea usando la definicin a nivel de tabla. Las claves forneas estn basadas en valores de datos y son puramente lgicas, no son punteros fsicos. Una clave fornea que es parte de una clave primaria no puede tener un valor NULL porque ninguna parte de una clave primaria puede tenerlo. La clave fornea se define en la tabla hija, y la tabla que contiene la columna referenciada es la tabla padre. Para definirla se usa una combinacin de las siguientes palabras claves: FOREIGN KEY se usa para definir la columna en la tabla hija, cuando se establece la restriccin 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, tambin sern borradas.

ON DELETE SET NULL convierte valores de clave ajena en nulos cuando se elimina el valor principal.

Sin la opcin ON DELETE CASCADE, la fila en la tabla padre no puede ser borrada mientras haya referencias a ella en la tabla hija. La Restriccin CHECK La restriccin CHECK define la condicin que cada fila debe satisfacer. La condicin 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 restriccin 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 Inclusin 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 despus de su creacin y tambin desactivadas temporalmente, lo cual ser tratado ms 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 informacin sobre las columnas incluidas en cada restriccin USER_CONS_COLUMNS.

4.3 Inclusin de restricciones 4.3.6 Sintaxis para generar CONSTRAINT

Se puede agregar o eliminar una restriccin para tablas existentes usando el comando ALTER TABLE con la clusula ADD o DROP. Agregar una Restriccin Para agregar una restriccin a una tabla existente se debe utilizar el comando ALTER TABLE con la clusula ADD.

El nombre de la restriccin es opcional, aunque se lo recomienda. Si no se asigna un nombre a la restriccin, el sistema generar uno. Eliminar una Restriccin Para eliminar una restriccin, se puede identificar el nombre de la restriccin desde las vistas USER_CONSTRAINS y USER_CONS_COLUMNS del diccionario de datos. Luego se debe usar el comando ALTER TABLE con la clusula DROP. La opcin CASCADE de la clusula DROP causa que tambin se elimine cualquier restriccin dependiente. Cuando se elimina una restriccin de integridad, Oracle 10g Server ya no garantiza su cumplimiento y adems ya no se encuentra disponible en el diccionario de datos.

Recomendaciones
Se puede agregar, eliminar, habilitar o deshabilitar una restriccin, pero no se puede modificar su estructura. Se puede agregar una restriccin de NOT NULL a una columna existente usando la clusula MODIFY del comando ALTER TABLE.

4.3 Inclusin de restricciones 4.3.7 Desactivacin Activacin de restricciones

Cuando se crea una restriccin, a menos que se especifique lo contrario (usando la clusula DISABLE), queda automticamente habilitada. Se pueden habilitar o deshabilitar restricciones sin eliminarlas o recrearlas usando el comando ALTER TABLE con la clusula ENABLE o DISABLE. Al deshabilitar una restriccin de tipo UNIQUE KEY o PRIMARY KEY, Oracle 10g Server elimina el ndice asociado a dicha restriccin 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 clusula CASCADE se deshabilitan las restricciones de integridad dependientes. Las clusulas ENABLE y DISABLE afectan solo a futuros datos que sern agregados o modificados en la tabla. En cambio, las clusulas VALIDATE y NOVALIDATE en el comando ALTER TABLE actan sobre los datos existentes.
Oracle 10g Server no permite operaciones DML en una tabla que contenga restricciones DISABLE VALIDADTE. Esta es una forma rpida de poner una tabla en modo solo lectura.

4.3 Inclusin de restricciones 4.3.8 Verificacin de restricciones diferidas

Diferir la validacin de una restriccin consiste en forzar el chequeo de las condiciones para que se realicen al final de una transaccin. De esta forma, una restriccin puede ser diferida (deferred) o no diferida (not deferred). Por otro lado, es posible especificar durante la creacin de la restriccin en la clusula 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. Especficamente no se puede alterar una restriccin NOT DEFERRABLE para hacerla DEFERRABLE . Si una restriccin es diferible, utilizando los comandos SET CONSTRAINT o ALTER SESION SET CONSTRAINT es posible diferir la verificacin de todas las restricciones en conjunto o de una restriccin en particular. Para diferir la verificacin de todas las restricciones se utiliza la clusula ALL. Para diferir la verificacin de una restriccin particular se especifica el nombre de la misma. SET CONSTRAINT cambia el comportamiento para la transaccin en curso y ALTER SESION SET CONSTRAINT para toda la sesin. Las definiciones de las restricciones de integridad se realizan en la creacin de tablas (CREATE TABLE) o cuando se altera una tabla (ALTER TABLE). Cabe destacar que, si una restriccin causa una accin (por ejemplo, DELETE CASCADE) la accin es siempre realizada como parte de la sentencia que la causa, independientemente si la restriccin es diferida o inmediata.

4.3

Inclusin 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 aplicacin de diferentes tipos de restricciones.
Duracin Estimada: 20 min.

4.3

Inclusin de restricciones 4.3.10 AI: Restricciones Foreign Key

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

4.3

Inclusin 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

Inclusin de restricciones 4.3.12 AI: Restricciones Check

Cuales de las siguientes sentencias son vlidas para crear una restriccin de tipo CHEK en la tabla de PERSONAS.

4.3 Inclusin de restricciones 4.3.13 Sntesis

Restricciones son creadas en la base de datos para forzar el cumplimiento de reglas de negocio y para especificar relaciones entre tablas. Una restriccin NOT NULL puede ser especificada en la definicin de una columna y es utilizada para prevenir valores nulos (ausencia de datos). Restricciones de verificacin son utilizadas para verificar si los datos conforman o estn de acuerdo con determinadas condiciones. Restricciones de clave primaria identifican de forma unvoca 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 ms 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 restriccin 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.

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

MMMMMMMMMMMMMMMM me suena a que es COMMIT, SAVEPOINT y ROLLBACK

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 ms 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. Tambin es posible realizar actualizaciones de datos sobre las vistas, pero esta operacin puede no ser posible debido a la complejidad de la vista en cuestin. Adems de tablas y vistas, una base de datos Oracle contiene otros tipos de objetos. Secuencias son utilizadas para generar nmeros secuencialmente. Sinnimos 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, tambin pueden ser almacenados en una base de datos Oracle. Por otro lado, Oracle provee varias formas de controlar el acceso de usuarios. Existen diferentes mtodos de autenticacin y una cuenta de usuario est definida por un conjunto de atributos que controlan la forma en la cual el usuario se conecta e interacta con la base de datos. Uno de los mecanismos para controlar el acceso de usuarios es a travs de la asignacin 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 definicin de perfiles permite controlar cmo se utilizan los recursos del sistema.
5.1 Creacin de vistas

En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

5.1 Creacin de vistas 5.1.1 Objetivos

Una vista es una representacin lgica de datos a partir de una o ms 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, cmo crear y gestionar vistas, y cmo realizar consultas del tipo nprincipales en Oracle 10g utilizando vistas en lnea.

5.1

Creacin de vistas 5.1.2 Cuestionario de Iniciacin

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

5.1 Creacin de vistas 5.1.3 Descripcin de las VISTAS

Una vista es una presentacin hecha a medida de los datos en una o ms tablas. Una vista tambin puede ser pensada como una consulta almacenada. Una vista es una tabla virtual en la base de datos cuyos contenidos estn 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 estn 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 unin (una sentencia SELECT que selecciona datos de mltiples tablas) de dos o ms tablas slo pueden ser actualizadas bajo ciertas condiciones.

5.1 Creacin 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, informacin sobre el salario) no sean incluidas en la definicin de la vista. Adems ocultan la complejidad de los datos. Por ejemplo, una nica vista puede combinar doce tablas de ventas mensuales para proveer un ao de datos para realizar anlisis y reportes. Una nica vista puede ser utilizada para crear una unin, que es una muestra de columnas o filas relacionadas en mltiples 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 informacin de mltiples tablas sin requerir que los usuarios conozcan cmo realizar una subconsulta de correlacin. 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 definicin de la vista.

Almacenan consultas complejas. Por ejemplo, una consulta podra ejecutar clculos extensos con informacin de una tabla. Grabando esta consulta como una vista, los clculos son realizados slo cuando la vista es consultada.
Hay dos clasificaciones para las vistas: simples y complejas La diferencia bsica 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 travs 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 travs de la vista

5.1 Creacin de vistas 5.1.5 Sintaxis para la creacin de las vistas

Es posible crear una vista embebiendo una subconsulta en la sentencia CREATE VIEW. Para modificar una vista se debe utilizar la clusula CREATE OR REPLACE en la sentencia CREATE VIEW. Puede controlar los nombres de columna mediante la inclusin de alias de columna en la subconsulta. Con la opcin OR REPLACE, se puede crear una vista incluso si ya existe una con el mismo nombre, de modo que sustituir a la versin 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.

5.1

Creacin 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.

5.1 Creacin de vistas 5.1.7 Clusula : 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 travs de la vista, se utiliza la clusula 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 travs de la vista, se utiliza la clusula WITH CHECK OPTION.

5.1.7 Clusula : WITH CHECK OPTION 5.1.7.1 Recuperacin 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 slo filas y columnas especficas.
5.1.7 5.1.7.2 Clusula : WITH CHECK OPTION Creacin 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 Clusula : WITH CHECK OPTION 5.1.7.3 Denegacin de Operaciones DML

Puede estar seguro de no producir operaciones DML en la vista crendola con la opcin WITH READ ONLY. Si intento eliminar una fila de una vista con restriccin de slo lectura producir un error.
5.1 Creacin de vistas 5.1.8 Clusula : WITH READ ONLY

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

5.1

Creacin de vistas 5.1.9 Eliminacin de Vistas

Puede utilizar la sentencia DROP VIEW para eliminar una vista. La sentencia elimina la definicin 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 vlidas. Slo puede eliminar una tabla su creador o un usuario con el privilegio DROP ANY VIEW.

5.1 5.1.10

Creacin de vistas AP: Utilizacin de los N-Principales

Laboratorio 5.1.10 Utilizacin de los N-Principales Ejercitar la escritura de consultas para realizar anlisis NPrincipales, y comprender el mecanismo de resolucin de anlisis N-Principales.
Duracin Estimada: 30 min.

5.1

Creacin de vistas 5.1.11 AI: Generacin de vistas con una tabla

Lea con atencin las sintaxis de creacin de vistas y considerando el conjunto los enunciados presentados, una con flechas segn corresponda.

5.1

Creacin de vistas 5.1.12 AI: Generacin de vistas con ms de una tabla

En base a la sentencia de creacin de vista presentada, responda si las siguientes afirmaciones son verdaderas o falsas.

5.1 Creacin de vistas 5.1.13 Sntesis

Una vista es una representacin de datos hecha a medida a partir de una o ms 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 operacin puede afectar slo una tabla a la vez si existe ms de una tabla en la definicin de la vista. Para modificar la definicin 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 vlidos son: de clave primaria, de clave nica y de clave fornea. Una vista en lnea es una consulta que puede ser utilizada en lugar de una tabla o vista en la clusula FROM de una consulta. Utilizando la clusula ORDER BY en vistas (y en vistas en lnea), es posible ejecutar anlisis del tipo n-principales.

5.2

Otros objetos de base de datos

En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

5.2 Otros objetos de base de datos 5.2.1 Objetivos

Una base de datos Oracle puede contener mucho ms que simples tablas y vistas. Secuencias pueden ser utilizadas para generar claves artificiales. Sinnimos proveen alias (sobrenombres) a objetos. Varios tipos de ndices pueden ser utilizados para mejorar la performance de consultas SQL. Para ejecutar tareas de administracin de base de datos es necesario conocer cmo utilizar paquetes, procedimientos y funciones. Un objeto secuencia en una base de datos Oracle es un generador de nmeros 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 slo existen en el diccionario de datos. Un objeto sinnimo en una base de datos Oracle es un alias (sobrenombre) a otro objeto de base de datos. Un sinnimo pblico est disponible para todos los usuarios, mientras que un sinnimo privado est disponible slo 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 especficas de datos. No obstante, ndices no siempre mejoran la performance. Este tema abarca cmo crear, modificar y eliminar secuencias, sinnimos e ndices, y cmo utilizar el diccionario de datos para realizar tareas de administracin de base de datos relacionadas a estos tipos de objetos. Adems, dicho tema revisa las tecnologas de indexacin B-tree y bitmap (mapa de bits), y repasa cundo y cmo ndices pueden mejorar performance.

5.2

Otros objetos de base de datos 5.2.2 Cuestionario de Iniciacin

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

5.2 Otros objetos de base de datos 5.2.3 Descripcin 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 automticamente una secuencia de nmeros enteros nicos para las filas de una tabla. Los nmeros 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 nmero de secuencia, se incrementa la secuencia independientemente de que la transaccin se confirme o se descarte. En la figura , se muestra la sintaxis de lo expresado anteriormente.

Si el valor INCREMENT BY es negativo, la secuencia descender. Adicionalmente, NOMAXVALUE entonces especifica un valor mximo de 1 y NOMINVALUE tiene un valor mnimo de (1026). Si los valores de la secuencia se mantienen en memoria principal (en la cache), se perdern ante una falla o cada del sistema. Si se especifica la opcin NOCYCLE, cualquier intento de generar un nmero de secuencia, una vez alcanzado el valor mximo, causar un error. Un uso muy comn 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 ejecucin de una transaccin, fundamentalmente cuando las sentencias de dos transacciones deben generar nmeros secuenciales al mismo tiempo. El generador de secuencias elimina la serializacin en la generacin de estos nmeros. Una vez que una sentencia en una sesin del usuario genera un nmero de secuencia, el nmero de secuencia generado est disponible solo en esa sesin. Cada usuario que referencia una secuencia tiene acceso a sus nmeros 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 Parmetros de una Secuencia Una vez que se ha creado la secuencia, la misma es documentada en el diccionario de datos. Para consultar los parmetros de la secuencia, se los puede seleccionar de la tabla USER_SEQUENCES del diccionario de datos.

5.2 Otros objetos de base de datos 5.2.4 Utilizacin de secuencias

Una vez creada la secuencia, se la puede usar para generar nmeros secuenciales que se utilizarn 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 prximo nmero de una secuencia especfica. Se debe cualificar NEXTVAL con el nombre de la secuencia. Cuando se referencia a secuencia.NEXTVAL, un nuevo nmero de secuencia se genera y el nmero actual se coloca en CURRVAL. La pseudocolumna CURRVAL se utiliza para hacer referencia al nmero de secuencia recientemente generado. NEXTVAL debe ser usado para generar un nmero de secuencia en la sesin 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. -

5.2.4 Utilizacin 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 ms rpido 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. Modificacin de Secuencia
Si llega al lmite MAXVALUE para la secuencia, no se asigna ningn 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.

5.2 Otros objetos de base de datos 5.2.5 Descripcin 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 recuperacin 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 bsqueda. Los ndices reducen la necesidad de E/S de disco mediante el uso de una estructura rbol B (B*Tree) indexada para ubicar rpidamente a los datos. El ndice es automticamente 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 lgica y fsicamente 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 bsqueda binaria, autobalanceada para igualar los tiempos de acceso para todas las filas. Es un mtodo eficiente que asegura que el tiempo de acceso a un valor especfico sea ms 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 nmero de pginas (o ramas) de almacenamiento organizadas en una estructura de rbol. Cada pgina (o rama) contiene una serie de valores de claves y punteros a las pginas (o ramas) inferiores en la estructura hasta que eventualmente el valor de la clave indica la ubicacin del dato propiamente dicho. El identificador de la ubicacin a nivel de la base de datos se denomina ROWID. Para crear un ndice sobre una o ms columnas, se utiliza el comando CREATE INDEX. -

5.2 Otros objetos de base de datos 5.2.6 ndices creados automticamente

Se pueden crear dos tipos de ndices . Un tipo es un ndice nico o unique. Oracle 10g Sever crea automticamente este tipo de ndice cuando en una tabla se definen una o ms columnas que forman parte de una restriccin PRIMARY KEY o UNIQUE. El ndice toma el mismo nombre que la restriccin. 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 operacin de unin 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 ms 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 decisin de crear ndices es una decisin global de alto nivel. Con frecuencia, la creacin y el mantenimiento de ndices es una tarea del DBA.

5.2 Otros objetos de base de datos 5.2.7 Descripcin de Sinnimos Sintaxis

Crear un Sinnimo 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 sinnimo 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 mtodo puede ser especialmente til con objetos con nombres largos, tales como vistas. No requiere almacenamiento, solo un lugar en la definicin en el diccionario de datos. Con la utilizacin de sinnimos se puede lograr: enmascarar el nombre del dueo de un objeto simplificar las sentencias SQL para los usuarios de datos en aplicaciones distribuidas dar transparencia a la localizacin de las bases de datos Se pueden crear sinnimos pblicos y privados. Una vez que se ha creado un sinnimo, el mismo es documentado en el diccionario de datos. Para informacin a cerca de los sinnimos creados, se los puede seleccionar de la tabla USER_SYNONYMS del diccionario de datos. Eliminar un Sinnimo Para eliminar un sinnimo, se utiliza el comando DROP SYNONYM. Solamente el DBA puede eliminar un sinnimo pblico. Nota: En Oracle 10g Server, el DBA puede especficamente otorgar el privilegio CREATE PUBLIC SYNONYM a cualquier usuario, permitindole al usuario crear sinnimos pblicos.

5.2

Otros objetos de base de datos 5.2.8 AP: Manejo de secuencias

Laboratorio 5.2.8 Manejo de secuencias. Ejercitar la creacin y eliminacin de secuencias. Utilizacin de secuencias en la creacin de nuevos registros en otras tablas.
Duracin Estimada: 30 min.

5.2

Otros objetos de base de datos 5.2.9 Practica AP: Manejo de sinnimos

Laboratorio 5.2.9 Manejo de Sinnimos Ejercitar la creacin y eliminacin de sinnimos. Utilizacin de sinnimos creados para la consulta de datos.
Duracin 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 Sntesis

Este tema abord secuencias, sinnimos e ndices. Secuencias son generadores de nmeros, y es posible utilizarlas junto a las palabras clave CURRVAL y NEXTVAL. Un sinnimo es un mecanismo para darle un sobrenombre o alias a otro objeto, ya sea que dicho objeto sea local o remoto accesible a travs de un enlace de base de datos. Los sinnimos pueden estar disponibles en forma global (pblicos), 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 cundo dichos ndices pueden mejorar la performance de una consulta, y tambin que los mismos pueden empeorar las operaciones INSERT, DELETE y UPDATE.

5.3

Control de acceso de usuarios

En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

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 mtodo de autenticacin utilizado as como otros atributos que controlan la forma en que el usuario accede e interacta con la base de datos. Tambin es posible modificar cuentas de usuario para agregar o cambiar atributos. La forma ms comn de controlar el acceso de usuarios es a travs 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 mtodo de controlar cmo usuarios utilizan recursos del sistema es a travs de perfiles. Este tema cubre cmo crear y modificar cuentas de usuario, cmo permitir o prevenir cambios utilizando privilegios y cmo gestionar la asignacin de privilegios utilizando roles. Adems, dicho tema abarca cmo asignar perfiles.

5.3

Control de acceso de usuarios 5.3.2 Cuestionario de Iniciacin

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

5.3 Control de acceso de usuarios 5.3.3 Descripcin 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, adems 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.

Privilegios del Sistema Un privilegio del sistema es el derecho a realizar una accin particular, o realizar una accin 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 ms 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 accin particular (INSER, UPDATE, REFERENCES, EXECUTE) sobre una tabla, vista, secuencia, procedimiento, funcin o paquete. Cada tipo de objeto tiene un determinado juego de privilegios otorgables. Algunos otros objetos como clusters, ndices, triggers y vnculos 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 sinnimo son equivalentes en cuanto a los privilegios, esto implica que en cuanto a los privilegios referenciar el objeto o su sinnimo es lo mismo. Un usuario posee automticamente 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 asignacin de privilegios incluye GRANT OPTION, el usuario o rol a quien se le asigno esta opcin, puede a su vez asignar estos privilegios a otros usuarios.

5.3 Control de acceso de usuarios 5.3.4 Creacin 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 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 trminos usuario y schema se usan para referirse a lo mismo. El DBA crea un nuevo usuario en Oracle 10g Server asignndole 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 Una vez creado el usuario, puede asignarle los privilegios. . El usuario no tiene privilegios del sistema.

Cada base de datos tiene un usuario de grupo llamado PUBLIC. El usuario PUBLIC provee el acceso pblico a objetos especficos del schema (tablas, vistas, etc.) y provee a todos los usuarios con privilegios del sistema especficos. Todo usuario pertenece automticamente 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. Adems, 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 accin particular sobre una tabla, vista, secuencia o procedimiento almacenado otorgndole 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,

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 tambin 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 adems 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 opcin WITH GRANT OPTION, entonces el usuario B puede otorgar el mismo privilegio al usuario C con la misma opcin, 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. -

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 dems usuarios a quienes se les haya otorgado privilegios.

5.3 Control de acceso de usuarios 5.3.7 Descripcin de roles Sintaxis

Oracle 10g Server tiene un modo fcil y controlado de administrar privilegios a travs 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 fcil de realizar y mantener.

Un usuario puede tener varios roles y a varios usuarios se les puede asignar el mismo rol. Los roles se crean para una aplicacin 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 tambin 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 explcitamente habilitado o inhabilitado al usuario. No obstante para habilitar un rol que contiene otros roles, los roles contenidos se habilitan implcitamente 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 varan de un objeto a otro. En la figura privilegios que se pueden otorgar sobre algunos tipos de objetos.

, se muestra un resumen de los

Nota: procedimiento se refiere a procedimientos y funciones aislados y a construcciones package pblicas. 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 especfico de columnas modificables. Un SELECT se puede restringir especificando un subconjunto de columnas seleccionables. El privilegio que se otorga sobre un sinnimo se traslada a la tabla base referenciada por ese sinnimo.

5.3 5.3.9

Control de acceso de usuarios Descripcin 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.

5.3

Control de acceso de usuarios 5.3.10 AP: Manejo de privilegios

Laboratorio 5.3.10 Manejo de Privilegios. Ejercitar la utilizacin de privilegios y roles para controlar el acceso de los usuarios.
Duracin Estimada: 50 min.

5.3

Control de acceso de usuarios 5.3.11 AI: Gestin de usuarios y privilegios

Arrastre las opciones que crea correctas para completar las siguientes sentencias.

5.3 Control de acceso de usuarios 5.3.12 Sntesis

En este tema se profundiz sobre cmo crear y gestionar cuentas de usuario, incluyendo la configuracin de varios atributos sobre dichas cuentas. Seguidamente, se explic acerca de privilegios de objeto y de sistema, y sobre cmo gestionar estos privilegios a travs del uso de roles. Se aprendi cmo asignar y cmo quitar privilegios utilizando las sentencias GRANT y REVOKE. Tambin se revisaron muchas de las vistas del diccionario de datos que proveen informacin sobre privilegios. Finalmente, este tema cubri cmo gestionar grupos de usuario con perfiles. Perfiles permiten la configuracin de recursos del sistema con el objetivo de limitar el consumo de recursos para determinados grupos de usuarios, as como la configuracin de recursos relacionados a claves de acceso para gestionar las reglas de utilizacin de claves de acceso.

5.4

Taller SQL

En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

5.4

Taller SQL 5.4.1 Objetivos

En el captulo 14 del Kit de Estudiante se presenta un Taller SQL que aborda los temas tratados hasta el momento en el curso Introduccin a Oracle9i: SQL. El objetivo principal de este taller consiste en crear un juego de tablas para una aplicacin de video, realizando las actividades que se presentan en la figura .

5.4 Taller SQL 5.4.2 Cuestionario de Iniciacin

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

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 clusulas SQL necesarias para realizar la actividad correspondiente.

5.4 Taller SQL 5.4.4 Sntesis

Este tema abord la implementacin de un modelo de datos correspondiente a una aplicacin 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 insercin 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 definicin de una tabla de dominio. Por ltimo, se presentaron los datos con formato de reporte de impresin.

Funciones avanzadas

Adicionalmente a soportar el estndar SQL en su totalidad, Oracle 10g Server incluye mltiples extensiones que facilitan la ejecucin de operaciones complejas y mejoran la performance en la manipulacin de datos. Oracle 10gServer soporta operadores para trabajar sobre conjuntos de filas, dichos operadores se denominan operadores SET. A travs de operadores SET es posible llevar a cabo operaciones de unin, interseccin y diferencia de conjuntos. Otra funcionalidad brindada por Oracle 10g es la posibilidad de manipular zonas horarias en datos tipo fecha, con precisin hasta fracciones de segundos. Por otro lado, el anlisis de datos en lnea, realizado mayoritariamente sobre almacenes de datos, requiere la confeccin de reportes de datos incluyendo subtotales a diferentes niveles de agrupamiento. Uno de los tipos ms comunes de reportes en anlisis de datos en lnea son los reportes de tabulacin cruzada o de doble entrada. Para realizar este tipo de anlisis, Oracle 10g Server incluye extensiones a la clusula GROUP BY que facilitan la escritura de sentencias SELECT. Una prctica comn en la manipulacin de datos, es la divisin de una consulta general en partes menores, o subconsulas. Dicha prctica facilita la legibilidad y la resolucin de consultas complejas. Frecuentemente, el dominio del problema incluye relaciones recursivas sobre una misma tabla. Esta autorelacin define una estructura jerrquica entre filas pertenecientes a una misma tabla. Oracle 10g Server incluye clusulas especiales para la manipulacin de datos almacenados jerrquicamente en una tabla plana. Otras extensiones provistas por Oracle 10g Server son la creacin de tablas externas, para acceder a datos almacenados fuera de la base de datos, y la insercin de mltiples tablas, para insertar datos en varias tablas de manera condicional a travs de una nica sentencia.
6.1 Uso de operadores SET

En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

6.1 6.1.1

Uso de operadores SET 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 unin, interseccin y diferencia de conjuntos. Los operadores SET (operadores de conjunto) soportados por Oracle 10g Server son: UNION y UNION ALL para realizar operaciones de unin de conjuntos, INTERSECT para realizar interseccin de conjuntos, y MINUS para realizar diferencia de conjuntos. Los operadores de unin 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 ms de un operador SET.

6.1

Uso de operadores SET 6.1.2 Cuestionario de Iniciacin

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

6.1 Uso de operadores SET 6.1.3 Operadores SET

Los operadores SET pueden ser utilizados para seleccionar datos a partir de mltiples tablas. Operadores SET bsicamente 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 mltiples 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 travs de parntesis. Los tipos de dato de las columnas resultantes, as como el nmero 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 nmero de columnas y en el orden correspondiente, de forma que los mismos pueden ser manipulados en conjunto a travs de operadores SET.

UNION 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 slo valores nicos. Aparecen dos empleados cuyo apellido es King en el resultado, pero las fechas de contratacin son diferentes. La diferenciacin 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 ms 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 comn 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 .

6.1 Uso de operadores SET 6.1.4 ORDER BY en consultas compuestas

Puede existir nicamente una clusula ORDER BY en la consulta; no es posible especificar una clusula ORDER BY en cada consulta que forma parte de la consulta compuesta al utilizar operadores SET . Al escribir la clusula ORDER BY, es posible utilizar :

Los nombres de columnas empleados en la primer consulta, Los nombres de alias empleados en la primer consulta Notacin posicional Combinacin de las anteriores

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 manipulacin de conjuntos de filas. Ordenar resultados en consultas con operadores SET.
Duracin Estimada: 40 min.

6.1 Uso de operadores SET 6.1.6 AI: Uso de operadores SET

Los crculos representan conjuntos de resultados arrojados por las consultas denominadas A, B y C. Al combinar las consultas A, B y C a travs de operadores SET, la regin sombreada representa el resultado obtenido y la regin sin sombrear representa las filas excluidas del resultado. Teniendo en cuenta la combinacin de conjuntos, complete la expresin de consulta compuesta utilizando operadores SET (UNION, UNION ALL, INTERSECT, y MINUS).

6.1 Uso de operadores SET 6.1.7 Sntesis

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 mltiples consultas. Todos los operadores SET poseen igual precedencia. Si una sentencia SQL posee mltiples operadores SET, Oracle 10g Server evala de izquierda a derecha excepto que los parntesis especifiquen explcitamente un orden diferente. Las expresiones correspondientes en las listas de seleccin de las consultas componentes en una consulta compuesta deben coincidir en nmero y tipos de dato, considerando que, segn el caso, puede existir una conversin de tipos de dato implcita. Este tema abord operadores SET, su precedencia y utilizacin en la operacin de conjuntos de filas.

6.2

Funciones datetime de Oracle 10g

En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

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 mltiples 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 ms anidado es evaluada primero. El mecanismo de separar una consulta general en partes menores es una prctica comn y potente en la manipulacin de datos. Este tema abarca los diferentes tipos de subconsultas y su utilizacin en consultas de nivel superior.

6.2

Funciones datetime de Oracle 10g 6.2.2 Cuestionario de Iniciacin

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

6.2 Funciones datetime de Oracle 10g 6.2.3 Descripcin de las zonas horarias

Oracle 10g Sever introduce muchas caractersticas para la funcionalidad de la fecha, soportando las zonas horarias para lo cual adiciona nuevos tipos de datos fecha/hora, como participante de la comisin elaboradora de las especificaciones del ANSI SQL.

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 clusula 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 sesin con una sentencia ALTER SESSION. Oracle 10g Server introduce los siguientes tipos de datos fecha/hora: TIMESTAMP (TS) : permite almacenar el ao, mes, da, hora, minuto, segundo y adems es posible el fraccionamiento de segundos con una precisin de hasta nueve dgitos. TIMESTAMP WITH TIME ZONE (TSTZ) : este tipo de dato es similar a TIMESTAMP, pero tambin almacena informacin sobre la zona horaria. TIMESTAMP WITH LOCAL TIME ZONE (TSLTZ) : este tipo de dato tambin es similar a TIMESTAMP, y como TIMESTAMP WITH TIME ZONE incluye informacin 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 estn almacenados y son ajustados a la zona horaria de la sesin cuando son seleccionados por los usuarios. INTERVAL YEAR TO MONTH : este tipo de dato permite representar un perodo de tiempo en aos 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 perodo de tiempo en das, horas, minutos y segundos. Puede ser utilizado para almacenar la diferencia entre dos valores de fecha, incluyendo los segundos.

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 clculos que involucra el manejo de zona horaria. Algunas de estas funciones se muestran en la figura .

6.2

Funciones datetime de Oracle 10g 6.2.5 AP: Modificar el formato de fecha de la sesin

Laboratorio 6.2.5 Modificar el formato de fecha de la sesin Utilizar las nuevas funcionalidades de los tipos de datos de fecha/hora de Oracle10g.
Duracin Estimada: 20 min.

6.2

Funciones datetime de Oracle 10g 6.2.6 AI: Detalle de las zonas horarias

Cul de los siguientes tipos de datos almacena informacin sobre la zona horaria junto a la fecha?

6.2 Funciones datetime de Oracle 10g 6.2.7 Sntesis

DATE es el tipo de dato generalmente utilizado para el almacenamiento y la manipulacin 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 sesin para visualizar diferentes formatos de fecha, el almacenamiento y la manipulacin de usos horarios, y cmo utilizar funciones de manipulacin de tipos de dato fecha / hora.

6.3

Mejoras de la clusula GROUP

En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

6.3 Mejoras de la clusula GROUP 6.3.1 Objetivos

La agregacin de datos es una parte fundamental en el anlisis de datos en data warehousing (almacenes de datos). Para mejorar el rendimiento en agregaciones de datos, Oracle 10g Server provee extensiones a la clusula GROUP BY. A travs de tales extensiones, es posible escribir una sentencia SELECT simple que incluya filas de subtotales por cada nivel de grupo y un total general. Tambin se puede calcular de manera sencilla subtotales para las diferentes combinaciones posibles de agrupamientos derivadas de la expresin 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 clusula GROUP BY, y otras corresponden a niveles de grupo agregados (filas superagregadas). Oracle 10g Server provee funciones especiales para identificar programticamente el nivel de agrupamiento al que pertenece una fila determinada. Este tema aborda las extensiones a la clusula GROUP BY soportados por Oracle 10g, y su funcionalidad para calcular reportes de tabulacin cruzada y reportes incluyendo subtotales.

6.3

Mejoras de la clusula GROUP 6.3.2 Cuestionario de Iniciacin

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

6.3 Mejoras de la clusula GROUP 6.3.3 Escenario de agregacin

Para ilustrar el uso de una extensin GROUP BY, suponga una compaa hipottica que posee ventas a lo largo de todo el mundo, el seguimiento de las ventas se realiza en dlares y por canal de ventas. La figura presenta un reporte de tabulacin cruzada simple (tambin se denomina de referencias cruzadas o de doble entrada) que muestra el total de ventas, correspondientes a septiembre de 2000, por pas y por canal de ventas. Los pases incluidos en el reporte son UK y US, y los canales de ventas considerados son Ventas directas e Internet. Tener en cuenta que an un reporte simple como este, consistiendo de slo nueve valores en su grilla de datos, contiene cuatro subtotales y un total general. Los subtotales son por canal de ventas o por pas. Los diferentes niveles de agregacin (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 clusula GROUP BY simple agrupando por canal y pas. 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 clculos de subtotales, lo que brinda ventajas funcionales al llevar a cabo operaciones de anlisis, consulta y reporte de datos. Los principales beneficios obtenidos al utilizar estas extensiones provistas por Oracle 10g Server son: Programacin simplificada, requiere menos cdigo SQL Procesamiento de consultas ms rpido y eficiente Reduccin en la carga de procesamiento del cliente y en el trfico de red, ya que el trabajo de agregacin es realizado por el servidor de base de datos Oportunidad de almacenar agregaciones en cache

6.3 Mejoras de la clusula GROUP 6.3.4 Superagregados

Los modificadores a la clusula GROUP BY, CUBE y ROLLUP, permiten crear agregaciones de agregados, o superagregados. Estos superagregados o filas de sumarizacin 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 jerrquicas. CUBE crea agregaciones para todas las combinaciones de columnas especificadas. Las principales ventajas de CUBE y ROLLUP es que las mismas permiten agregaciones ms robustas que COMPUTE y adems 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 extensin Oracle 10g a la clusula GROUP BY estar compuesto de filas a diferentes niveles de agregacin .

6.3 6.3.5

Mejoras de la clusula GROUP Revisin clusula GROUP BY

La clusula GROUP BY produce un grupo de filas nico para cada combinacin de valores de las columnas que aparecen en la expresin de agrupamiento. Considerando los datos de ejemplo mostrados en la figura , un agrupamiento por gnero y por estado civil produce el resultado mostrado en la figura . Notar que la columna resultante denominada CREDIT es un clculo que contiene la suma de los lmites crediticios para cada combinacin nica de valores de gnero y estado civil.

6.3 Mejoras de la clusula GROUP 6.3.6 Descripcin de Rollup

ROLLUP permite calcular en una sentencia SELECT mltiples niveles de subtotales y, adems, tambin calcula un total general. ROLLUP es una extensin simple de la clusula GROUP BY y es altamente eficiente. Dicho operador crea subtotales jerrquicamente que se despliegan desde el nivel ms detallado hacia el total general, siguiendo una lista de agrupamientos especificados en la clusula GROUP BY. ROLLUP toma como argumento una lista ordenada de columnas de agrupamiento. Primero calcula los valores agregados estndares (o regulares) especificados en la clusula GROUP BY. Luego, calcula subtotales de nivel superior en forma progresiva, movindose de derecha a izquierda a travs de las columnas de agrupamiento. Finalmente, calcula el total general. ROLLUP crea subtotales a n+1 niveles, donde n es el nmero de columnas de agrupamiento especificadas . El orden de las columnas en el modificador ROLLUP es significante, ya que dicho orden determina dnde Oracle 10g Server produce subtotales. ROLLUP crea agregaciones jerrquicas, de manera que el orden de las expresiones en la clusula ROLLUP es significante. El ordenamiento sigue las mismas convenciones utilizadas en la clusula GROUP BY; de lo ms general a lo ms especfico. 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 .

6.3 Mejoras de la clusula GROUP 6.3.7 Descripcin de Cube

El operador CUBE produce subtotales para todas las posibles agregaciones, no slo para aquellas en la jerarqua de columnas especificadas. El nmero de agregaciones creadas por el modificador CUBE est dado por el nmero de combinaciones distintas de valores de datos en todas las columnas que aparecen en la clusula CUBE. Esto es, CUBE calcula valores para todas las combinaciones consideradas por el operador ROLLUP y agrega combinaciones adicionales.

CUBE crea agregaciones para todas las combinaciones de columnas, de manera que, diferencindose de ROLLUP, el orden de expresiones no es significante. En trminos de anlisis multidimensional, CUBE genera todos los subtotales que pueden ser calculados para un cubo de datos con las dimensiones especificadas, donde cada dimensin corresponde a una columna especificada en la expresin de agrupamiento .

6.3 Mejoras de la clusula GROUP 6.3.8 Funciones Grouping

Al utilizar ROLLUP y CUBE se crean filas superagregadas en el resultado. La funcin GROUPING sirve para distinguir cules filas en el conjunto resultado corresponden a sobtotales o filas superagregadas, y determinar cul 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 operacin 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 . Funcin GROUPING_ID Para conocer el nivel de agrupamiento de una fila determinada es posible utilizar la funcin GROUPING_ID. Dicha funcin retorna un nmero que permite determinar el nivel de agrupamiento exacto. Para cada fila, la funcin GROUPING_ID toma el conjunto de ceros y unos, que seran generados si se utilizara la funcin GROUPING correspondiente, y los concatena formando un vector de bits. El vector de bits es tratado como un nmero binario, y el valor en notacin decimal correspondiente es retornado por la funcin GROUPING_ID . Funcin GROUP_ID Las extensiones a la clusula GROUP BY permiten obtener resultados incluyendo niveles de agrupamiento duplicados. La funcin GROUP_ID permite distinguir agrupamientos duplicados. Si existen mltiples 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 cuestin .

6.3

Mejoras de la clusula GROUP 6.3.9 AP: Uso de extensiones en la clusula GROUP BY

Laboratorio 6.3.9 Uso de extensiones en la clusula GROUP BY. Entender los niveles de agrupamiento formados por CUBE y ROLLUP. Diferenciar programticamente filas regulares y filas superagregadas. Comprender la sintaxis de extensiones a la clusula GROUP BY.
Duracin Estimada: 45 min.

6.3

Mejoras de la clusula GROUP 6.3.10 AI: Rollup, Cube y Grouping Sets

En base al enunciado, conteste verdadero V o falso F.

6.3 Mejoras de la clusula GROUP 6.3.11 Sntesis

Oracle 10g Server provee extensiones a la clusula GROUP BY. CUBE, ROLLUP y GROUPING SETS facilitan la realizacin de reportes de tabulacin cruzada y la inclusin de filas de subtotales en el resultado de una consulta. ROLLUP calcula agregaciones a diferentes niveles de agregacin, desde lo ms 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 clusula GROUP BY, es posible escribir expresiones de agrupamiento combinadas o compuestas. ROLLUP es til en la inclusin de filas de subtotales, CUBE es til para el cmputo de reportes de tabulacin cruzada. La funcin GROUPING permite identificar a qu nivel de agrupamiento pertenece la fila en cuestin, posibilitando el ordenamiento, filtrado y la personalizacin de filas subtotales en el resultado. Este tema abord las extensiones provistas por Oracle 10g Server a la clusula GROUP BY, cmo incluir filas subtotales en el resultado de una consulta SQL, y cmo computar el cubo de combinaciones de agrupamientos posibles. Adems, dicho tema profundiz en cmo diferenciar, en el resultado de una consulta, filas agregadas regulares y filas superagregadas.

6.4

Subconsultas avanzadas

En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

6.4 Subconsultas avanzadas 6.4.1 Objetivos

Una subconsulta es una consulta dentro de una consulta. En una consulta que posea mltiples 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 ms anidado es evaluada primero. El mecanismo de separar una consulta general en partes menores es una prctica comn y potente en la manipulacin de datos. Este tema abarca los diferentes tipos de subconsultas y su utilizacin en consultas de nivel superior.

6.4

Subconsultas avanzadas 6.4.2 Cuestionario de Iniciacin

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

6.4 Subconsultas avanzadas 6.4.3 Subconsultas de varias Columnas

Una subconsulta es de columna mltiple cuando tiene ms de una columna en la clusula SELECT de la misma. Son generalmente usadas para comparar condiciones de columna o en sentencias UPDATE. Cuando dos o ms columnas sern comprobadas al mismo tiempo, deben encerrarse entre parntesis. -

6.4 Subconsultas avanzadas 6.4.4 Subconsultas en la clusula FROM

Una subconsulta puede aparecer en la clusula FROM de la sentencia SELECT. Esto es similar a definir y usar una vista, esto tambin se conoce como vistas en lnea. La subconsulta en la clusula FROM debe estar encerrada entre parntesis y adems 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.

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 ms que el salario medio de su departamento?, donde para cada registro padre se calcula el salario medio de su departamento . Este tipo de consultas tambin se utilizan cuando se desea actualizar o borrar filas de una tabla basadas en filas de otra tabla.

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 mayora de los lugares donde se usa un nombre de columna o una expresin, tales como dentro de las funciones de una sola fila como un argumento de entrada, en la clusula VALUE de la sentencia INSERT, en un ORDER BY, en el WHERE y en un SELECT . Las subconsultas escalares tambin se pueden utilizar en expresiones CASE o DECODE y no pueden ser usadas en las clusulas GROUP BY, HAVING, START WHITH y CONNECT BY entre otras.

6.4 Subconsultas avanzadas 6.4.7 Descripcin del operador Exists - Sintaxis

La clusula EXISTS (o NOT EXISTS) comprueba si una subconsulta devuelve algn 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 nmero 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.

6.4

Subconsultas avanzadas 6.4.8 AP: Prcticas con Exists

Laboratorio 6.4.8 Utilizacin de la operador EXISTS Comprender la utilizacin del operador EXISTS verificando la existencia de un valor determinado sobre un conjunto resultado.
Duracin 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.
Duracin Estimada: 40 min.

6.4

Subconsultas avanzadas 6.4.10 AI: Consultas correlacionadas

Indique cul de las siguientes sentencias es una subconsulta correlacionada.

6.4 Subconsultas avanzadas 6.4.11 Sntesis

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 mltiples columnas, y las mismas sirven para comparar mltiples valores (o filas de valores). Subconsultas utilizadas en la clusula FROM de una consulta de nivel superior son denominadas vistas en lnea. 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 mayora de los lugares donde puede aparecer una expresin. IN y EXISTS son los operadores ms comnmente utilizados con subconsultas. Subconsultas pueden aparecer en la clusula WHERE o en la clusula FROM. Adems, 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 utilizacin en la separacin de consultas generales en partes.

6.5

Recuperacin Jerrquica

En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

6.5 Recuperacin Jerrquica 6.5.1 Objetivos

Cuando una tabla contiene datos relacionados jerrquicamente, es posible seleccionar filas en un orden jerrquico. Oracle 10g Server incluye clusulas especiales para escribir una consulta jerrquica. El resultado en este tipo de consulta, en general, es un conjunto de filas relacionadas representando una estructura de rbol invertido, comenzando desde la raz 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 comn de filas en una consulta jerrquica puede destruir la estructura de rbol representada en el resultado. Oracle 10g Server posee una clusula especial de ordenamiento para ordenar filas hermanas (hijas del mismo padre). Este tema aborda consultas jerrquicas, filas padre / hijas, expresiones padre / hijos, y ordenamiento de filas respetando los niveles en una estructura de rbol.

6.5

Recuperacin Jerrquica 6.5.2 Cuestionario de Iniciacin

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

6.5 Recuperacin Jerrquica 6.5.3 Estructura de rbol

Una tabla plana en una base de datos relacional puede contener una relacin consigo misma o autorelacin. La tabla EMPLOYEES posee una relacin 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 relacin jerrquica que existe entre las filas de una misma tabla puede visualizarse en la forma de rbol .

6.5 Recuperacin Jerrquica 6.5.4 Consultas Jerrquicas

Oracle soporta clusulas especiales, que pueden ser utilizadas en una sentencia SELECT, para
recuperar y recorrer estructuras de rbol. Una consulta SQL que contenga las clusulas START WITH y CONNECT BY se denomina consulta jerrquica. Si una tabla contiene datos jerrquicos, es posible seleccionar filas en un orden jerrquico utilizando una consulta jerrquica. START WITH especifica la/s fila/s raz de la jerarqua CONNECT BY especifica la relacin entre filas padres y filas hijas en la jerarqua.

En una consulta jerrquica, la condicin 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 condicin es compuesta, el operador PRIOR puede ser utilizado slo en una condicin. 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 aritmticos + y -. El mismo evala la expresin inmediata siguiente para la fila padre de la fila corriente en una consulta jerrquica. PRIOR es comnmente utilizado al comparar valores de columnas con el operador de igualdad. Tericamente, es posible utilizar otros operadores, que no sea el de igualdad, en la clusula CONNECT BY. No obstante, las condiciones creadas con estos otros operadores pueden causar bucles infinitos a travs de las combinaciones posibles. En estos casos, Oracle Server detecta el bucle en tiempo de ejecucin y retorna un error. La forma en que Oracle Server procesa una clusula WHERE, si existe, en una consulta jerrquica depende de: Si la clusula WHERE no contiene una unin, Oracle Server aplica todos los predicados que no correspondan al CONNECT BY despus de realizar el procesamiento CONNECT BY sin afectar a las filas restantes de la jerarqua.
Si la clusula WHERE contiene una unin, Oracle Server aplica los predicados de unin antes de realizar el procesamiento CONNECT BY.

Oracle Server utiliza la informacin de las clusulas de una consulta jerrquica para formar la jerarqua
resultante realizando una serie de pasos y retorna el resultado en orden: raz izquierda derecha . En una consulta jerrquica, no debe utilizarse las clusulas ORDER BY o GROUP BY, ya que las mismas destruyen el orden de la jerarqua establecido por CONNECT BY. Si se desea ordenar las filas a nivel de hermanos (hijos del mismo padre), utilice la clusula ORDER SIBLINGS BY . SYS_CONNECT_BY_PATH La funcin 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 funcin es vlida nicamente con consultas jerrquicas, y la misma retorna el camino (o path) de la columna x, delimitado por el caracter c, desde la raz hacia el nodo para cada fila retornada por la condicin de CONNECT BY . A los nodos de un rbol se les asignan nmeros de niveles desde la raz. Utilice la funcin LPAD en conjuncin con la pseudocolumna LEVEL para mostrar un informe jerrquico como rbol con sangrado. Eliminacin de Ramas Puede utilizar las clusulas WHERE y CONNECT BY para eliminar el rbol; es decir, para controlar qu nodos o qu filas se muestran. El predicado que utilice funciona como condicin booleana.

6.5

Recuperacin Jerrquica

6.5.5 AP: Informes de estructuras jerrquicas

Laboratorio 6.5.5 Informes de estructuras jerrquicas Comprender el almacenamiento plano de estructuras jerrquicas a travs de autorelaciones. Escribir expresiones CONNECT BY. Recorrer estructuras jerrquicas. Entender el uso de LEVEL para identificar el nivel de la jerarqua y dar formato a un resultado jerrquico.
Duracin Estimada: 45 min.

6.5

Recuperacin Jerrquica 6.5.6 AI: Estructuras Jerrquicas

En base al enunciado, conteste verdadero V o falso F.

6.5 Recuperacin Jerrquica 6.5.7 Sntesis

Una relacin jerrquica entre filas de una tabla puede ser recuperada a travs de consultas jerrquicas. Se denomina consulta jerrquica a toda sentencia SELECT que incluya las clusulas CONNECT BY y START WITH. START WITH especifica la/s fila/s raz o puntos de comienzo a partir de los cuales se construye la jerarqua de filas resultantes. CONNECT BY especifica la relacin entre filas padre y filas hijas en la jerarqua. El operador PRIOR en la clusula CONNECT BY hace referencia a la fila padre. A travs de la expresin en la clusula CONNECT BY es posible especificar el orden de recorrido del rbol para construir el resultado. Por cada fila retornada en una consulta jerrquica, la pseudocolumna LEVEL retorna el valor 1 para una fila raz, el valor 2 para una fila hija de esa raz, y as sucesivamente. Una fila raz es la fila ubicada al tope en el rbol invertido. Una fila hija es cualquier otra fila no raz. 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 jerrquica es posible utilizar la clusula ORDER SIBLINGS BY. La palabra reservada SIBLINGS slo es vlida en consultas que posean la clusula CONNECT BY. ORDER SIBLINGS BY preserva el orden especificado en la consulta jerrquica y luego aplica la clusula de ordenamiento a los hermanos en la jerarqua. Este tema abord consultas jerrquicas, las palabras clave y funciones Oracle para recorrer y construir estructuras de rbol, y el ordenamiento de filas respetando los niveles existentes en la jerarqua de filas.

6.6

Extensiones de Oracle 10g para sentencias DML y DDL

En la figura se presenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de los mismos con el Material del Estudiante (kit). Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el Material del Estudiante (Kit). Segn esta clasificacin 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). Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante (Kit).

6.6 Extensiones de Oracle 10g para sentencias DML y DDL 6.6.1 Objetivos

Oracle 10g Server incluye extensiones tiles para la manipulacin y definicin de datos. A partir de Oracle 10g, la sentencia INSERT puede ser utilizada para adicionar filas a ms de una tabla a la vez, esto es, una nica sentencia DML inserta en ms de una tabla basada en alguna condicin. Esta insercin en mltiples tablas es muy til para la carga eficiente de datos, ya que es posible adicionar datos a mltiples tablas destino realizando una nica pasada por la tabla fuente, lo que implica un nmero 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 Iniciacin

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

6.6 Extensiones de Oracle 10g para sentencias DML y DDL 6.6.3 Inserciones Mltiples

En Oracle 10g, la sentencia INSERT puede ser utilizada para agregar filas a ms de una tabla al mismo tiempo. En versiones anteriores, esta funcionalidad requiere varias sentencias INSERT INTO o con condiciones lgicas 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 condicin. Todas las sentencias INSERT se ejecutarn simultneamente. INSERT de rotacin: 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 nmero de clusulas INTO que se especifiquen en la sentencia. INSERT ALL condicional: evala cada uno de las clusulas WHEN para determinar si la fila se inserta en cada tabla especificada en cada clusula INTO. Todas las clusulas WHEN son evaluadas y solo en las que la condicin es verdadera se ejecutan las clusulas INTO correspondiente. Una clusula ELSE opcional puede tambin ser utilizada. INSERT FRIST condicional: evala cada una de las clusulas WHEN en orden en el cual aparecen en la declaracin y ejecuta solamente la clusula INTO que pertenezca a la primer clusula WHEN que se evale como verdadero. Una clusula ELSE opcional puede tambin ser utilizada.

6.6 Extensiones de Oracle 10g para sentencias DML y DDL 6.6.4 Descripcin 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 parmetros de acceso) que describe el mapeo de los datos externos a las columnas de datos Oracle 10g. Una tabla externa no describe ningn dato almacenado en la base de datos ni cmo los datos se almacenan en la fuente externa. En cambio, describe cmo 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 definicin de la tabla externa.

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 travs 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. Tambin es posible utilizar campos de tablas externas como argumentos de cualquier funcin predefinida SQL, funcin PL/SQL, o funcin Java .

Este mecanismo de consulta sobre tablas externas es til en la etapa de carga y transformacin de datos en un almacn de datos.

6.6

Extensiones de Oracle 10g para sentencias DML y DDL 6.6.6 AP: Manipulacin de datos externos

Laboratorio 6.6.6 Manipulacin de datos externos Comprender la utilizacin de tablas externas e incorporar datos externos a la base de datos. Ejercitar la definicin de tablas externas como forma de incorporar datos a la base de datos.
Duracin 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 insercin mltiple teniendo en cuenta el siguiente caso: Suponga que existe una compaa de venta de libros, videos y CDs de audio. Dicha compaa posee una tabla SALES_DETAIL que contiene informacin acerca de todas las ventas. Como requerimiento del sistema de ventas, es necesario cargar esta informacin en tres tablas focalizadas especficamente en las tres categoras de productos: libros (B), audio (A), y videos (V). Estas tablas especficas a una categora son utilizadas por un sistema de anlisis de ventas. La tabla SALES_DETAIL posee una columna denominada PROD_CATEGORY. En base a los valores que posee dicha columna debe decidirse en cul de las anteriores tres tablas realizar la insercin de datos. Si la categora es B, realizar la insercin en la tabla BOOK_SALES. Si la categora es A, realizar la insercin en la tabla AUDIO_SALES. Si la categora es V, realizar la insercin en la tabla VIDEO_SALES.

6.6 Extensiones de Oracle 10g para sentencias DML y DDL 6.6.8 Sntesis

A partir de Oracle 10g, es posible realizar inserciones de mltiples tablas. A travs de esta sentencia INSERT se realiza la insercin de datos en ms de una tabla a la vez. Una sentencia de insercin mltiple incluye varias clusulas WHEN condicionales, cada una especificando la insercin de datos en una tabla destino a travs de la clusula INTO. La palabra clave ALL especifica a Oracle 10g Server que evale cada una de las clusulas WHEN, independientemente que alguna de las mismas evale a verdadero o no. En contraposicin, la palabra clave FIRST especifica que debe detenerse la evaluacin de clusulas WHEN despus de encontrar la primer ocurrencia WHEN que evale 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 travs de sentencias de definicin de datos es posible crear metadatos que describen la fuente externa y permiten su acceso desde la base de datos. La definicin de una tabla externa consiste de dos partes: la descripcin de los tipos de dato de columnas Oracle 10g, y los parmetros de acceso que definen un mapeo desde datos externos hacia columnas de datos en la base de datos. La definicin de una tabla externa define cmo 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. Adems, una tabla externa es de slo 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.

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!!!

También podría gustarte