SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Indice
INDICE...................................................................................................................................... 1 BASES DE DATOS. SGDB....................................................................................................... 3 CONCEPTO DE BASE DE DATOS Y MODELO DE DATOS ................................................................ 3 MODELOS DE DATOS ................................................................................................................ 3 Modelo Jerárquico.............................................................................................................. 4 Modelo Red o Distribuido................................................................................................... 4 Modelo Objeto.................................................................................................................... 4 EL MODELO RELACIONAL......................................................................................................... 4 Relación. Tupla. Registro. Atributo..................................................................................... 4 Base Matemática. Dominio................................................................................................. 4 Clave .................................................................................................................................. 4 Componentes del Modelo Relacional .................................................................................. 5 Operadores......................................................................................................................... 5 Definiciones de Integridad.................................................................................................. 6 Reglas de Integridad........................................................................................................... 6 Lenguajes Relacionales ...................................................................................................... 6 DISEÑO DE UNA BASE DE DATOS ............................................................................................... 6 Etapas ................................................................................................................................ 6 Proceso de Normalización. Formas Normales..................................................................... 9 SISTEMAS DE GESTIÓN DE BASES DE DATOS .............................................................................. 9 SISTEMAS DE BASES DE DATOS ............................................................................................... 10 INFORMIX-SQL .................................................................................................................... 10 GENERALIDADES SOBRE INFORMIX-SQL ................................................................................. 10 Historia ............................................................................................................................ 10 Definición......................................................................................................................... 11 Arquitectura ..................................................................................................................... 11 SISTEMA DE MENÚS ................................................................................................................ 12 Menú Principal:................................................................................................................ 12 Funcionamiento del Menú Principal de Informix .............................................................. 12 Utilidad de cada una de las opciones del menú Principal de Informix: ............................. 12 CREACIÓN DE UNA BASE DE DATOS ......................................................................................... 13 Opción del sistema de menús. Procedimiento.................................................................... 13 CREACIÓN DE TABLAS ............................................................................................................ 14 Opción del sistema de menús ............................................................................................ 15 Reglas para crear Nombres de Campos ............................................................................ 16 Tipos de Datos.................................................................................................................. 17 Índices .............................................................................................................................. 18 Valor Null......................................................................................................................... 18 Tablas Ejemplo................................................................................................................. 19 CREACIÓN DE UN FORMATO DE PANTALLA PARA AÑADIR DATOS ................................................ 20 Generación automática de Formatos de Pantalla. Perform............................................... 20 EJECUCIÓN DE CONSULTAS ..................................................................................................... 24 Tipos de Consultas............................................................................................................ 24 Ejecución consultas QBE desde Informix-SQL.................................................................. 24 Consultas de datos que no han de cumplir ninguna condición........................................... 24 Consultas de datos que han de cumplir alguna condición ................................................. 25 CREACIÓN DE UN INFORME...................................................................................................... 27 Generación automática de Informes. ACE ........................................................................ 27 RDSQL .................................................................................................................................... 28 Escritura de Consultas SQL desde Informix-SQL .............................................................. 28 Lenguaje RDSQL. Consultas de selección sin condiciones................................................ 29

Manual de Informix-SQL

Pág. 1

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Exportar datos a Impresora o a Fichero ........................................................................... 31 Consultas con definición de condiciones........................................................................... 32 Funciones Agregadas........................................................................................................ 36 Cláusula GROUP BY ........................................................................................................ 37 Envío de los resultados de una consulta a una nueva tabla ............................................... 37 Establecimiento de relaciones entre tablas. ...................................................................... 38 FORMATOS PERSONALIZADOS ....................................................................................... 40 Creación de un Formato Personalizado Monotabla .......................................................... 40 Estructura de la especificación de formulario................................................................... 41 Secciones de la especificación de formulario .................................................................... 42 Creación de Formatos Multitabla ..................................................................................... 47 Formularios generados desde el Sistema Operativo .......................................................... 55 INFORMES PERSONALIZADOS......................................................................................... 56 Creación y modificación de un Informe ............................................................................ 56 Secciones de un Informe ACE ........................................................................................... 57 Sección Define.................................................................................................................. 59 Sección Input .................................................................................................................... 59 Sección Output ................................................................................................................. 59 Sección Format................................................................................................................. 60 Acciones Ejecutables en un Informe.................................................................................. 60 Ejemplos de Listados de Informes ..................................................................................... 63 Informes Creados desde el Sistema Operativo................................................................... 63 MENÚS PERSONALIZADOS................................................................................................ 63 VARIABLES DE ENTORNO................................................................................................. 67 CATÁLOGOS DEL SGBD INFORMIX................................................................................ 69 BIBLIOGRAFÍA..................................................................................................................... 69

Manual de Informix-SQL

Pág. 2

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Bases de Datos. SGDB
Concepto de Base de Datos y Modelo de Datos
Una base de datos se puede definir como una colección de datos almacenados por un largo período de tiempo y estructurados de tal forma que se puedan gestionar fácilmente (J. Leffler, 1989). Así, una base de datos en sentido amplio, funcionaría como un depósito donde se almacenan esos datos. Un ejemplo de base de datos perfectamente válido podría ser el conjunto de tarjetas que guardan información acerca de los libros existentes en una biblioteca. Estas tarjetas pueden estar duplicadas en diferentes archivos de forma que en la parte superior de cada una de ellas aparezca el autor (para poder realizar búsquedas por autor). En la parte superior de otro conjunto de tarjetas duplicado del primero podría aparecer el título del libro (para poder realizar búsquedas por títulos) y así sucesivamente. El hecho concreto es que siempre se estaría almacenando la misma información, pero organizada de diferentes formas para poder ser consultada según diferentes contenidos. Si estos conjuntos de tarjetas se esparcieran por el suelo simplemente volcando los cajones que las contienen, seguramente nadie duda de que los datos guardados seguirían siendo los mismos, pero dejarían de constituir una base de datos ya que no existiría ninguna estructura que posibilitase su manejo. Este autor distingue entre los conceptos de datos e información, basándose en que la información es la base para la toma de decisiones y los datos son los valores registrados. Podría interpretarse que la información es el significado de los datos para el usuario. De esta forma, si los datos no son accesibles, no pueden proporcionar información. Otra definición un tanto mas abstracta es la propuesta por A. Abdellatif y A. Zeroual en 1991: Una base de datos es un conjunto integrado de datos que modelizan un universo concreto formado por objetos interrelacionados y en el que los objetos de un mismo tipo constituyen una entidad y el lazo entre diferentes entidades constituye una asociación. El proceso de modelizar entidades y asociaciones se llama modelización y se realiza siguiendo un modelo de datos. Un modelo de datos es un sistema formal y abstracto que permite describir los datos de acuerdo con unas reglas y convenios predefinidos (E. Rivero, 1988). Los modelos de datos se diferencian en la representación de las asociaciones y en las operaciones aplicables a las entidades y asociaciones. Un modelo de datos siempre presenta tres componentes (E. Rivero, 1988): Estructura de Datos: Operadores entre las estructuras: Definiciones de Integridad: Colección de objetos abstractos formados por datos. Operadores que permiten manipular las estructuras. Conjunto de conceptos y reglas que permiten expresar que valores de datos pueden aparecer válidamente en el sistema.

Modelos de Datos
Además del Modelo Relacional que, por su importancia, se estudiará por separado, existen otros modelos de datos que se definirán brevemente a continuación.

Manual de Informix-SQL

Pág. 3

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Modelo Jerárquico
En este modelo solamente es posible una asociación o lazo: aquella que se puede representar como de 1:N, o padre/hijo. Una base de datos que siga este modelo se podría representar como un árbol donde las ramas son los lazos y las hojas son las entidades. Una entidad recibe el nombre de segmento y está formada por campos. (A. Zeroual 1991)

Modelo Red o Distribuido
En este modelo son posibles todos los tipos de lazos (N:M). Una entidad recibe el nombre de Tipo de Registro y esta compuesta de items. Un lazo entre dos entidades se denomina Tipo Conjunto y comprende un tipo de registro llamado Propietario y otro llamado Miembro. (Especificaciones del grupo DBGT del comité CODASYL).

Modelo Objeto
En este modelo, los datos se estructuran de forma dinámica. A partir de tipos base, se construyen nuevos tipos (o clases) que, a su vez, participan en la construcción de otros nuevos tipos o clases, y así sucesivamente. La construcción se hace por herencia o por composición. Este modelo se distingue de los demás por su flexibilidad y, por tanto, por su capacidad de modelizar objetos complejos.

El Modelo Relacional Relación. Tupla. Registro. Atributo
Propone datos almacenados en tablas, donde las filas son llamadas registros, tuplas o n-tuplas y las columnas campos o atributos. Cada una de estas tablas es un caso especial de la construcción conocida en matemáticas como relación, término que presenta una definición mucho mas precisa que la de tabla o archivo.

Base Matemática. Dominio
Matemáticamente, una relación es un subconjunto finito del producto cartesiano de una serie de dominios, donde dominio es cualquier conjunto finito o infinito. A cada dominio que participa en una relación se le da un nombre que lo identifica de forma única en esa relación, de tal manera que una tupla puede definirse como una lista ordenada de valores V1, V2, V3, … VN donde V1 es el valor del primer dominio, V2 es el valor del segundo dominio, etc. Estos valores V1, V2, V3, … VN son los atributos. (E. Rivero, 1988).

Clave
Si se parte de la base de que una relación es un conjunto, entonces todas sus tuplas han de ser diferentes, es decir no se pueden repetir sus valores. A partir de aquí se define que un conjunto de atributos de la relación que no pueden tomar valores repetidos es una clave. Toda relación tiene al menos una clave, pero puede tener mas de una, aunque suele aceptarse la conveniencia de emplear siempre la misma clave como identificador. A esta clave se le suele llamar clave primaria. Las claves restantes son las claves alternativas.

Manual de Informix-SQL

Pág. 4

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Las claves se utilizan para identificar cada una de las tuplas de una relación. La única forma de dirigirse a una tupla determinada, distinguiéndola de todas las demás, es mediante los valores de los atributos de alguna de sus claves (E. Rivero, 1988). Por otra parte, frecuentemente en la literatura y el software se utiliza la palabra tabla como sinónimo de relación; renglón o registro como sinónimo de tupla y campo como sinónimo de atributo. (C. J. Date, 1975). Cada atributo está designado por un nombre y caracterizado por un dominio. Un dominio es un tipo de datos con nombre (A. Zeroual, 1991). Dominio también se puede definir como un conjunto o depósito de valores del cual se sacan los que aparecen en una columna específica (C. J. Date, 1975). Estos conceptos están íntimamente ligados con su significado matemático, expresado en el párrafo anterior.

Componentes del Modelo Relacional
Según se vio anteriormente, todo modelo de datos presenta una serie de componentes. En el caso del modelo relacional, estos componentes son: Estructura de Datos Operadores Dominios, Relaciones, Atributos, Tuplas Propios del álgebra relacional, es decir, unión, diferencia, producto cartesiano, proyección y selección. Concepto de claves y posibilidad de valores nulos. Integridad de claves primarias. Integridad Referencial.

Definiciones de Integridad Reglas de Integridad

Operadores
En lo que se refiere a los operadores, su función aparece reflejada en el esquema siguiente: Unión: Se representa por R U S, donde R y S son relaciones. Es el resultado de una relación que incluye todas las tuplas de R y todas las tuplas de S y ninguna mas. Si hubiera alguna repetida en esas relaciones, solo figurará una vez en el resultado. El resultado es una relación que incluye todas las tuplas de R que no están en S. El resultado incluye todas las tuplas posibles resultado de concatenar cada tupla de R con todas las tuplas de S. El resultado se obtiene extrayendo de la relación R, el conjunto de atributos A1… AN, y eliminando luego las tuplas repetidas si las hay. Consiste en una partición vertical de la relación. El resultado se obtiene extrayendo de la relación R todas las tuplas que cumplan la condición F. Consiste en una partición horizontal de la relación.

Diferencia: Producto Cartesiano:

Proyección:

Selección:

Manual de Informix-SQL

Pág. 5

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Definiciones de Integridad
Según la definición de clave primaria, ésta no debería tomar valores nulos para evitar ambigüedades. Esta condición es la que se ha denominado Regla de Integridad de Claves Primarias. En la literatura es frecuente encontrarla como Integridad de Entidad. (E. Rivero, 1988) Cuando una relación presenta varias claves, cualquiera de ellas puede ser designada a priori como primaria. Para seleccionar las mas conveniente, existen una serie de criterios que el diseñador de la base de datos debe tener en cuenta. Estos criterios son: Estabilidad: Facilidad de uso: Fiabilidad: Considerar si alguna de las claves es menos propensa a sufrir modificaciones en sus valores. Siempre es mas fácil manejar una clave numérica corta que una alfanumérica de muchos caracteres de longitud. Comprobar la existencia de alguna clave que presente dígitos de validación u otros sistemas de autodetección o corrección de errores. Pueden existir claves de uso muy extendido. (NIF, Número de Seguridad Social… )

Universalidad:

Reglas de Integridad
Otra de las reglas que contempla el modelo relacional es la Regla de Integridad Referencial o Integridad de Referencia. Es posible que algunas relaciones hagan referencia a otras por medio de las claves primarias de éstas, de tal forma que no pueda existir ninguna tupla en aquellas relaciones que no exista simultáneamente en alguna de éstas (E. Rivero, 1988).

Lenguajes Relacionales
Los operadores de conjuntos aplicados a las tablas constituyen el Álgebra Relacional. Estos operadores de conjuntos no pueden constituir un lenguaje de manipulación de datos por sí solos. Los principales lenguajes relacionales conocidos son SQL, QUEL y QBE. SQL, propuesto inicialmente bajo el nombre de SQUARE y posteriormente SEQUEL, fue desarrollado para el sistema R (Prototipo de SGBD relacional de IBM). QUEL fue desarrollado por la universidad de Berkeley para el SGBD Ingres. QBE (Query by Example), desarrollado por IBM y concebido para usuarios finales con pocos conocimientos sobre Bases de Datos. Está considerado como el primero de los gestores de formatos de pantalla y se basa en rellenar campos predefinidos en una pantalla.

Diseño de una Base de Datos Etapas

Manual de Informix-SQL

Pág. 6

http://www.serem.com

SEREM FORMACIÓN Planificación:

Cliente: LUCENT TECHNOLOGIES

Estudio de los requerimientos del usuario:

Diseño Conceptual:

Alcance del diseño: Se plantea el alcance global del diseño de la base de datos, es decir, se definen los límites precisos del sistema que se va a representar mediante la base de datos. Restricciones del diseño: Estas restricciones pueden estar relacionadas directamente con la cuestión financiera, con el hardware, con el software o con los usuarios. Planificación de cambios: El diseñador debe tener en cuenta que existe la posibilidad de que, durante el ciclo de vida de la base de datos, surjan cambios. Estos cambios pueden estar relacionados con el sistema que representa la base de datos, con el hardware, con el software, con los usuarios o con la propia base de datos. El diseño de estar realizado de forma que tanto alteraciones en los datos existentes como crecimiento de la información o cambios en el mismo diseño de la base de datos puedan ser implementados de la forma mas sencilla posible. Un estudio detallado de las necesidades de los usuarios determinará esencialmente que descenderá el número de modificaciones que se habrán de realizar a posteriori. La información de las necesidades de los usuarios puede estar organizada de la siguiente forma: Una lista de todos los informes que necesitarán los usuarios, Una lista de todos los posibles tipos de preguntas que los usuarios necesitarán realizar a la base de datos. Una lista de los datos que son significativos para los usuarios, con el nombre que se habrá de dar a esos datos. Este nombre tendrá que ser aceptado por todos los usuarios. Es una construcción abstracta que representa el sistema real, y es absolutamente independiente de cualquier sistema de gestión de bases de datos. En este sentido, funciona de forma diferente al diseño físico. El diseño físico sí que ha de tener en cuenta el SGBD sobre el que se va a trabajar. Las herramientas de las que dispone el diseñador para organizar sus ideas son las siguientes: Tipos de Entidad: Cada entidad debe representar un grupo de objetos o sucesos similares y se utilizan para representar distintas clases de aspectos de la realidad. Atributos: Un tipo de entidad representa un conjunto de objetos utilizando las características de interés de esos objetos. Las características mas fáciles de representar de los objetos son los números, ya que son los tipos de caracteres que mejor maneja cualquier ordenador. Los atributos están a su vez, determinados por una serie de cualidades que pueden tomar diferentes valores. Las cualidades de los atributos son las siguientes: Nombre: A cada uno de los atributos se le debe asociar un nombre único, escogido de forma que indique la característica del tipo de objetos representados por el tipo de entidad. La mayoría de SGBD permite un número de caracteres lo suficientemente alto como para poder asignar un nombre que cumpla estos requerimientos. Además, algunos SGBD permiten la utilización de múltiples nombres o sinónimos para un mismo atributo. Tipo: Los SGBD solo permiten un número reducido de tipos de

Manual de Informix-SQL

Pág. 7

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Diseño Físico:

Implementación del diseño: Pruebas:

atributos (como pueda ser numérico y cadena. Estas limitaciones han de ser tenidas en cuenta durante el proceso de diseño conceptual, en el caso de que el diseñador sepa que SGBD se va a utilizar en la implementación real. Los tipos mas frecuentes son: numérico, de cadena de caracteres, fecha, lógico y memo. Requerido u opcional: Especifica si es necesario o no introducir valores para ese atributo. Ocurrencia simple o múltiple: Especifica si el atributo puede tener un único valor, o puede tomar múltiples valores. Elección de Tipos de Entidad y Atributos: El sistema debe estar representado por un número suficiente de tipos de entidad y por sus correspondientes atributos de forma que la representación de la base de datos pueda almacenar y devolver una cantidad de información adecuada. Relaciones o Asociaciones: Se asume aquí el significado de relación en el sentido de asociación, descrito anteriormente. Según los autores, relación puede utilizarse como representación matemática del concepto de tabla, o como asociación. En este último sentido, están íntimamente ligadas a la consistencia de los datos y a la recuperación de los datos en caso de consulta. Las relaciones son fundamentalmente de tres tipos: Uno a varios, en la que a un registro de una tabla, le puede corresponder un número indeterminado de registros de la otra. Uno a uno, en la que a un registro de una tabla le corresponde directamente un solo registro de otra tabla y que es un caso especial de la relación Uno a Varios. Varios a varios, en la que a varios registros de una tabla les pueden corresponder un número indeterminado de registros de la otra tabla. Las claves, y en particular, la clave primaria o principal, juegan un papel destacado en las relaciones, ya que un valor específico de la clave en la tabla principal define automáticamente una serie de valores en la tabla asociada (donde este atributo no es clave principal). Un caso especial de relaciones son las relaciones recursivas que se dan dentro de una misma tabla. Restricciones: Las relaciones pueden estar sujetas a ciertos tipos de restricciones. Estos tipos son: Restricciones sobre los valores de atributos determinados, Restricciones sobre dos o mas atributos de una misma tabla o entidad y Restricciones sobre los atributos de dos o mas entidades. Atributos Derivados: Este tipo de atributos obtienen su valor no de forma directa, sino a través de algún tipo de calculo determinado. En esta etapa, el diseño conceptual se transforma en modelo físico de la base de datos. Se trata de un diseño consistente con el sistema de gestión de bases de datos que se va a utilizar. Equivale a la traducción de un diagrama de flujo a un lenguaje concreto como Pascal o Cobol. El modelo físico se introduce en el SGBD sobre el que va a trabajar. Sería el equivalente a la introducción del programa en el ordenador. Se prueba el diseño implementado para comprobar que el SGBD funciona de la forma apropiada

Manual de Informix-SQL

Pág. 8

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Proceso de Normalización. Formas Normales
Habiendo estudiado el modelo conceptual de un universo dado, el siguiente paso consiste en traducir dicho diseño a un conjunto de tablas relacionales. Es importante saber que tablas mal diseñadas producirán problemas predecibles en la gestión de datos. Para eliminar estos problemas, se ha desarrollado una técnica sistemática para la traducción de un modelo conceptual a un conjunto de tablas relacionales correctamente diseñadas. Esta técnica recibe el nombre de Normalización. El núcleo de esta técnica consiste en un conjunto de definiciones para cada tipo de entidad. Estas definiciones reciben el nombre de Formas Normales. Forma Normal Primera Forma Normal Definición Una tabla está en Primera Forma Normal si: 1. No Existen dos filas idénticas. 2. Cada entrada de la tabla contiene un único valor. La primera de las características de las tablas en Primera forma normal es coherente con lo que anteriormente se estudió respecto a que un determinado atributo no podía repetir su valor para dos filas diferentes (Concepto de Clave Principal o Primaria). En el segundo caso se determina que una intersección Fila / Columna no puede adoptar mas de un valor, es decir, un atributo para una determinada fila, ha de tener un valor único. Una tabla está en Segunda Forma Normal si: 1. Está en Primera Forma Normal. 2. Cuando todos los atributos no principales presentan dependencia funcional total respecto de cada una de las claves. Se dice que un atributo es funcionalmente dependiente de otro si conocido valor del segundo, se identifica al primero. Una tabla está en Tercera Forma Normal si: 1. Está en Segunda Forma Normal 2. Ningún atributo no principal depende transitivamente de ninguna clave. Dependencia Transitiva: Si un atributo determina funcionalmente al segundo y éste determina funcionalmente a un tercero, entonces el primero determina funcionalmente al tercero. Una tabla está en Forma Normal de Boyce-Codd si: 1. Está en Tercera Forma Normal 2. Cada determinante es, o bien la clave, o bien una clave alterna.

Segunda Forma Normal

Tercera Forma Normal

Forma Normal de Boyce-Codd

Sistemas de Gestión de Bases de Datos
Entre la base de datos física y los usuarios del sistema existe un nivel de software que recibe el nombre de Sistema de gestión de Bases de Datos o SGBD.

Manual de Informix-SQL

Pág. 9

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Este maneja todas las solicitudes de acceso a la base de datos por parte de los usuarios. Una función general de un SGBD es proteger a los usuarios contra todos los detalles a nivel de hardware. Un SGBD no pasa de ser una parte a nivel de software de una estructura mas grande y compleja que se define como un Sistema de Bases de Datos.

Sistemas de Bases de Datos
Un Sistema de Bases de Datos es un sistema de mantenimiento de registros basado en computadoras y cuyo propósito general es registrar y mantener información. Incluye una serie de componentes clave: Datos, Hardware, Software y Usuarios. Datos Una base de datos se puede definir como un repositorio de datos almacenados, y en general es tanto integrada como compartida. Integrada porque puede considerarse como una unificación de varios archivos, y compartida porque ofrece la posibilidad de que varios usuarios accedan al mismo tiempo a esos datos. El hardware se compone de los volúmenes de almacenamiento donde se encuentra la base de datos, junto con sus dispositivos de control, canales, etc. Analizado en el apartado anterior. Responde al concepto de SGBD. Se consideran tres clases principales de usuarios: Programador de aplicaciones, Administrador de bases de datos y el Usuario final. El primero es el encargado de diseñar y generar programas de aplicación. El segundo es el encargado de controlar los permisos de acceso, y en general, de las labores de configuración y mantenimiento con el objetivo de que tanto la seguridad como el rendimiento están garantizados en todo momento. El tercero opera con la base de datos a nivel de terminal. Éste puede utilizar un lenguaje de consulta proporcionado como parte integral del sistema.

Hardware

Software Usuarios

Informix-SQL
Generalidades sobre Informix-SQL Historia
La historia de Informix comienza en 1980 con la fundación de RDS (Relational Database Inc.) por Roger Shippl para producir C-ISAM (Indexed Sequential Access Method in C) sobre Unix y MS-DOS. Dos años mas tarde RDS produce Informix como un SGBD relacional basado en C-ISAM. Actualmente C-ISAM es una librería de subrutinas para uso de programadores en C, de tal forma que los usuarios finales nunca usan C-ISAM directamente, sino a través de programas que utilizan C-ISAM. En 1984 RDS anuncia Informix-SQL. Procede de la versión anterior de Informix en la que se ha reemplazado el antiguo lenguaje de consultas -INFORMER- por SQL debido a que éste último se había convertido en el lenguaje de referencia de los sistemas relacionales modernos.

Manual de Informix-SQL

Pág. 10

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

El nombre RDS perduró hasta 1986, año en que la compañía cambió de nombre para convertirse en Informix, reflejando de este modo el nombre de los productos por los que era mas conocida.

Definición
Informix-SQL es un Sistema de Gestión de Bases de Datos Relacionales que utiliza SQL. En inglés se utilizan también las iniciales RDBMS (Relational Database Management System). SQL (Structured Query Language) es un lenguaje escrito específicamente para operar con bases de datos relacionales, y proporciona un conjunto de herramientas para su administración y manejo. Una extensión ha sido añadida a la norma SQL para ofrecer al usuario un lenguaje mas completo. Este nuevo lenguaje es procedural y permite la definición y manipulación de datos a través de interfaces o de programas clásicos. Junto con C-ISAM constituye la única forma de acceder a las bases de datos. Informix-SQL consta de un servidor de datos, un generador de informes (ACE), un generador de formatos de pantalla (PERFORM), un editor SQL interactivo y un generador de menús para personalizar aplicaciones.

Arquitectura
Funcionalmente, Informix-SQL está organizado en tres niveles. El primero concierne a la gestión de datos y está compuesto por el servidor de datos. Éste utiliza generalmente C-ISAM para el almacenamiento y acceso a los datos, pero puede utilizar Informix -Turbo o Informix-OnLine. Ofrece un optimizador de sentencias SQL para determinar el camino óptimo de acceso a los datos y aceleradores para aumentar el rendimiento de la búsqueda de datos. El segundo nivel está formado por un conjunto de utilidades de desarrollo de aplicaciones. Estas utilidades son las siguientes: Un editor de esquemas de bases de datos interactivo que permite la creación, borrado y modificación de estructuras de datos sin utilizar un lenguaje de definición de datos. Estas operaciones se realizan utilizando una serie de opciones en un sistema de menús. El editor guía al usuario a través de la definición de las diferentes características de las tablas. Un editor SQL interactivo. El lenguaje RDSQL de Informix está compuesto de órdenes que aseguran la definición, manipulación y control de los datos. Un generador que permite la creación y utilización de formatos de pantalla. La manipulación de datos a través de la pantalla es una alternativa fundamental de cara a los usuarios finales que no conocen SQL. PERFORM, como generador de formatos de pantalla permite crear un formato simple de una manera interactiva. Para alcanzar las posibilidades mas complejas es necesario recurrir a un pequeño lenguaje de programación. Un generador que permite la creación y utilización de informes. ACE es la herramienta que permite generar estos informes. Como en el caso de PERFORM, los informes mas sencillos se pueden generar de un modo interactivo, mientras que para crear los mas sofisticados es necesario recurrir a un lenguaje. Un generador de menús que permite personalizar las aplicaciones. Estos menús que el usuario puede generar son capaces de integrar todos los módulos generados por las herramientas descritas anteriormente.
Manual de Informix-SQL Pág. 11 http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

El tercer nivel está formado por la interface de usuario. A través de esta interface, los usuarios pueden acceder con facilidad a las diferentes utilidades de Informix-SQL. Esta interface está basada en la utilización de menús jerárquicos desplegables.

Sistema de menús Menú Principal:
INFORMIX-SQL: Form Report Query-Language User-Menu Database Table Exit Run, Modify, Create or Drop a Form -------------------------------------------------------------------------Press F1 for Help--------------------------------

Funcionamiento del Menú Principal de Informix
En Informix, el Menú Principal está formado por dos líneas horizontales. La línea superior es la línea de opciones. La Línea inferior del menú presenta una ayuda referida a la opción seleccionada de la línea superior. Para seleccionar una opción cualquiera es suficiente con pulsar las teclas de las flechas izquierda y derecha en el teclado. La opción correspondiente aparecerá en vídeo inverso y en la línea inferior aparecerá un mensaje de ayuda referido a dicha opción. Otra forma de seleccionar una opción es pulsar la tecla correspondiente a la inicial de esa opción. En este caso, la opción se seleccionará automáticamente y no dará lugar a ver el mensaje de ayuda, apareciendo en su lugar las subopciones correspondientes a la opción principal seleccionada. Por otra parte, ejecutando la combinación de teclas CONTROL-W, o en otros casos F1, se accede a una pantalla de ayuda. Esta pantalla presenta a su vez dos opciones en el menú: Screen permite pasar a la página siguiente y Resume finaliza la ejecución de la ayuda.

Utilidad de cada una de las opciones del menú Principal de Informix:
Form Entra en el conjunto de menús Perform. A través de estos menús se pueden crear y ejecutar formatos de pantalla. Estos formatos pueden ser utilizados para realizar operaciones con los datos sin necesidad de repetir o, en su caso, conocer sentencias SQL. Permite acceder al menú ACE. ACE es el generador de informes de Informix. A través de este sistema de menús se pueden crear y ejecutar informes definidos por el usuario. Accede al sistema de menús Query Language. Permite realizar operaciones a partir de sentencias redactadas en lenguaje RDSQL. RDSQL es la implementación de la norma SQL realizada por Informix. Permite crear un menú personalizado cuyas opciones, a su vez, permitan acceder a formatos de pantalla, informes, etc. Permite realizar las operaciones principales con una base de datos: Seleccionar, Crear, Borrar…

Report

Query Language User-Menu Database

Manual de Informix-SQL

Pág. 12

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Table Exit

Permite acceder a un sistema de menús que posibilitan la realización de operaciones relacionadas con tablas. Termina la ejecución de Informix-SQL.

Las subopciones correspondientes a cada una de estas opciones del menú principal se estudiarán en su orden correspondiente. En todo caso, a continuación aparece un cuadro con las opciones de segundo orden para cada una de las opciones principales. Cuando se elige una de estas opciones de segundo orden, en general Informix pasa a permitir que el usuario elija el objeto sobre el que desea ejecutar la acción, o en su caso, le asigne un nombre. En algunas de estas pantallas, (Las que no presentan opción Exit), para salir sin añadir ningún dato se puede pulsar Control-c.

Opción Form Run Opción Report Run Modify Generate New Compile Drop Exit

Modify

Generate

New

Compile

Drop

Exit

Opción Query-Lenguage New Run Modify Use-Editor Opción User-Menu Run Opción Database Select Opción Table Create Opción Exit

Output Choose

Save Info Drop

Exit

Modify

Exit

Create

Drop

Exit

Alter

Info

Drop

Exit

Creación de una Base de Datos Opción del sistema de menús. Procedimiento
INFORMIX-SQL: Form Report Query-Language Select, Create, or Drop a Database. User-Menu Database Table Exit

Una vez que se ha realizado una detallada labor de diseño de una base de datos, el siguiente paso consiste en su implementación a través de un SGBD. En el presente capítulo se estudiarán los pasos necesarios para crear una Base de Datos utilizando Informix-SQL.

Manual de Informix-SQL

Pág. 13

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Una vez pulsada la combinación de caracteres “ isql” en el prompt del sistema operativo, aparece la pantalla de presentación de Informix-SQL, y a continuación la pantalla principal con el menú en su parte superior. Para crear una base de datos, se elegirá la opción Database, bien seleccionándola utilizando las teclas de movimiento de cursor y pulsando Enter, o bien simplemente pulsando la letra inicial de la opción, en este caso, la letra d. Automáticamente, aparecerá el menú correspondiente a la opción seleccionada del menú principal. Para la opción Database, el menú de Informix presenta las siguientes subopciones:

Opción Select Create

Utilización Permite Seleccionar una de las bases de datos previamente creadas. Permite crear una nueva base de datos. Pregunta por el nombre que se le desea atribuir, y la convierte en la base de datos activa. Este proceso se traduce en la creación de un nuevo subdirectorio del directorio por defecto, donde se almacenarán todos los ficheros correspondientes de la nueva base de datos creada. Permite eliminar una base de datos existente. Regresa al menú anterior.

Drop Exit

Para crear una base de datos, se elegirá la opción Create. En el siguiente paso, Informix pregunta por el nombre de la base de datos. Se puede añadir cualquier nombre que soporte el sistema operativo (Unix). Una vez escrito el nombre y pulsado Enter, la base de datos creada pasa a ser la base de datos activa. Si se desea ver el contenido del directorio actual, o ejecutar algún comando propio del sistema operativo, lo único que debe hacer el usuario es preceder ese comando por el carácter !. Por ejemplo, si se desea comprobar la creación de la nueva base de datos, la orden a teclear en Unix será: !ls En el subdirectorio creado con el nombre de la base de datos se crearán una serie de ficheros llamados Catálogos del Sistema donde se registrará toda la información sobre la base de datos creada. Si se deseara abortar la ejecución de cualquier menú, se utilizará la opción Exit. En el caso de que el menú activo no presente esa opción, (como cuando está preguntando por un nombre, por ejemplo) para salir de ese menú, se puede utilizar la combinación de teclas control-c. El ejemplo que se seguirá en el presente manual consistirá en una base de datos destinada a almacenar información acerca de los empleados de una empresa. El nombre de la base de datos será Manual1. Informix asignará automáticamente la extensión .dbs.

Creación de tablas
Una vez creada la base de datos, el siguiente paso consiste en el proceso de creación de tablas. Estas tablas ya han sido diseñadas, y el único trabajo que resta es implementar esas tablas en Informix. Cuando se genera una tabla en Informix, se crean dos ficheros con las extensiones .Dat y .Idx. Estos ficheros guardan información sobre datos e índices respectivamente.

Manual de Informix-SQL

Pág. 14

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Opción del sistema de menús
INFORMIX-SQL: Form Report Query-Language Create, Alter, or Drop a database Table. User-Menu Database Table Exit

Para crear una tabla en Informix, se seleccionará la opción Table del menú principal por cualquiera de los procedimientos escritos anteriormente. Una vez seleccionada la opción, aparecen las siguientes opciones:
TABLE: Create Create a new table Alter Info Drop Exit

La utilización de las opciones es la siguiente: Opción Create Alter Info Drop Exit Utilización Da comienzo al proceso de creación de una tabla. Permite modificar la estructura de una tabla ya creada. Suministra información sobre una tabla. Permite eliminar una tabla existente. Regresa al menú anterior.

Una vez seleccionada la opción Create, Informix pregunta por el nombre de la tabla.
Create Table>> Enter the table name you wish to create with the schema editor.

El nombre de una tabla debe cumplir los siguientes requisitos: Ø Máximo de 18 caracteres de los cuales, los 7 primeros han de ser diferentes a los de los nombres de otras tablas. Ø Debe empezar por un carácter alfabético. Ø Debe contener letras, números y guiones de subrayado. Ø No existe diferencia entre mayúsculas y minúsculas. Ø No se pueden utilizar palabras reservadas de Informix-SQL. La base de datos contendrá tres tablas destinadas a guardar datos de empleados, datos de los departamentos donde trabajan los empleados y situación física del puesto de trabajo. Como se ha visto anteriormente, la información dentro de una tabla está distribuida en diferentes Campos o Atributos. Cada atributo debe tener un tipo asociado (Conjunto de valores posibles que puede tomar dicho atributo).

Manual de Informix-SQL

Pág. 15

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Create Table>> temple Modify Drop Screen Exit Add Adds Columns to the table above the line with the highlight -----Page 1 of 1-----------------------------------------MANUAL---------------------Press F1 for Help------Column Name Type Lenght Index Null

Para seleccionar las opciones del menú principal se utiliza la barra espaciadora. Para seleccionar las características del atributo que se está definiendo, se utilizan las flechas de movimiento de cursor. El significado de cada una de las opciones del menú principal es el siguiente: Opción Add Modify Drop Screen Exit Utilización Añade una nueva columna a la tabla seleccionada. Permite modificar las características del campo seleccionado. Elimina la columna seleccionada de la tabla. En el caso de que la definición de una tabla ocupe mas de una pantalla, esta opción permite ir a la siguiente pantalla de definición. Regresa al menú anterior.

Al seleccionar la opción Add, la pantalla se divide en dos paneles. En el panel superior van apareciendo las opciones de que se dispone al rellenar los espacios del panel inferior. La primera operación consistirá en asignar nombre al primer campo.
Add Name >> Enter Column name. Enter adds it. Interrupt returns to CREATE / ALTER menu -----Page 1 of 1-----------------------------------------MANUAL---------------------Press F1 for Help----------Column Name Type Lenght Index Null

Reglas para crear Nombres de Campos
Los nombres de columnas siguen las mismas convenciones que los nombres de tablas. También deben cumplir las siguientes reglas: Ø Los nombres de campo deben ser únicos en una tabla. Ø El mismo nombre puede ser usado en diferentes tablas Una vez añadido el nombre de la columna, el siguiente paso es especificar el tipo de datos que será almacenado en esa columna.
Add Type temple: Numeric Serial Char Permits any combination of letters, numbers and symbols -----Page 1 of 1------MANUAL-----Press F1 for Help Column Name Type Lenght nomem Date Money

Index

Null

Manual de Informix-SQL

Pág. 16

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Tipos de Datos
Básicamente, solo existen dos tipos de datos: Alfanuméricos y Numéricos. Tipo Alfanumérico Declaración CHAR(Longitud) Descripción Almacenan cualquier combinación de letras, dígitos y caracteres especiales. Se debe especificar una longitud máxima. La longitud máxima permitida en Informix-SQL es de 32767 caracteres. Almacena números enteros entre -32.767 y +32.767 Almacena números enteros entre 2.147.483.647 y +2.147.483.647 Almacenados como INTEGER. Son números asignados automáticamente por RDSQL. Por defecto una columna de este tipo comienza por 1, pero se le puede asignar un valor inicial diferente, Almacena números en punto flotante con 8 dígitos significativos. Almacena números en punto flotante con 16 dígitos significativos. Almacena números en punto flotante con 32 dígitos significativos. Precisión: Es el número total de dígitos. Escala: Es el número total de dígitos después del punto de decimal. Por defecto es 16, 2 Almacenado como DECIMAL. Se muestran dos dígitos después del punto decimal. Es precedido por el carácter monetario $ o por el símbolo definido en la variable de entorno DBMONEY Almacenado como un INTEGER. Representa el número de días desde el 31 de Diciembre de 1.899. Así, el 1-1-1900 es +1.

Numérico

SMALLINT INTEGER SERIAL

SMALLINTFLOAT FLOAT DECIMAL(precisión, escala)

MONEY

DATE

A continuación se establece la longitud deseada para ese campo.
Add Length >> Enter Column length. Return adds it. -----Page 1 of 1------MANUAL-----Press F1 for Help Column Name Type Lenght nomem Char 20

Index

Null

Manual de Informix-SQL

Pág. 17

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

El siguiente paso es especificar si se define esa columna como índice o no.
Add Index temple: No Yes Specifies that this column will have an index. -----Page 1 of 1-----------------------------------------MANUAL---------------------Press F1 for Help-------Column Name Type Lenght Index Null nomem Char 20

Índices
Para cada una de las columnas de la tabla, además de indicar su tipo y longitud, se puede indicar si dicha columna será o no índice de la tabla. Un índice es una etiqueta que se asigna a una o varias columnas para localizar los datos de manera mas rápida y eficiente. Existen dos tipos de índices: Único (Unique): No permite duplicar los valores dentro de una columna. Dups: Permite duplicar valores dentro de una columna. La estrategia de indexación depende de los siguientes criterios: Se deberá definir un índice en una columna cuando: Ø Se usa frecuentemente la columna para búsquedas y clasificación. Ø La columna se utiliza para enlazar dos o mas tablas. Ø Se quiere asegurar entradas únicas en la columna. No se deberá definir un índice en una columna cuando: Ø No se pueden indexar columnas cuya longitud total exceda de 120 bytes. Ø Grandes columnas alfanuméricas. Ø Columnas que contengan un gran número de valores duplicados. Ø No es recomendable utilizar un índice cuando la tabla contenga menos de doscientas filas. En última instancia, es necesario especificar si esa columna va a permitir valores nulos o no.
Add Nulls temple: No Yes Permits null values in this column. -----Page 1 of 1-----------------------------------------MANUAL---------------------Press F1 for Help--------Column Name Type Lenght Index Null nomem Char 20

Valor Null
El último dato que necesita Informix-SQL para definir un campo es si éste puede guardar o no valores nulos. El valor NULL se utiliza para representar valores
Manual de Informix-SQL Pág. 18 http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

desconocidos en una columna y se pueden utilizar para cualquier tipo de datos. No representa lo mismo una intersección Fila / Columna en la que no se ha añadido ningún valor (null), que una en la que se haya introducido un valor cero o un valor espacio en blanco. Estas operaciones se repetirán para cada uno de los campos de la tabla. Cuando todas las especificaciones de los campos hayan sido introducidas, control-c permitirá al usuario acceder al menú anterior, y la opción Exit proporcionará un menú en el que se confirmarán o no los cambios realizados.
Exit temple: Discard-new-table Build-new-table Builds a new table and returns to the table menu. -----Page 1 of 1------MANUAL-----Press F1 for Help Column Name Type Lenght Index nomem Char 20

Null Yes

Eligiendo la opción Build-a-new-table esas especificaciones serán confirmadas y la tabla será construida.

Tablas Ejemplo
Las tablas que van a ser utilizadas en este manual presentan la siguiente estructura: Tabla: temple (Datos de Empleados) Nombre numem numde extel fecna fecin salar comis numhi nomem Tipo integer integer smallint date date decimal decimal smallint char 20 8,0 8,0 Longitud Indice yes no no no no no no no no Nulo no yes yes yes yes yes yes yes yes Descripción Número de empleado. Número de Departamento. Extensión telefónica. Fecha de Nacimiento. Fecha de ingreso. Salario mensual. Comisión mensual. Número de hijos. Nombre del empleado.

Tabla: depto (Datos de Departamentos) Nombre numde numce Tipo Integer Integer Longitud Indice Yes Nulo No Descripción Número de Departamento. Número de centro de trabajo donde está el departamento. Número del empleado que es el director de departamento. 1 Tipo de Director. P: Propiedad, F: Funciones.

direc

Integer

tidir

Char

Manual de Informix-SQL

Pág. 19

http://www.serem.com

SEREM FORMACIÓN presu depde nomde Decimal Integer Char 20

Cliente: LUCENT TECHNOLOGIES Presupuesto anual del departamento. Número de departamento del que depende. Nombre del departamento.

Tabla: tcentr (Datos de Centros de trabajo) Nombre numce Tipo Integer Longitud Indice Yes Nulo Descripción Número de centro de trabajo donde está el departamento. Nombre del centro de trabajo. Dirección del centro de trabajo.

nomce senas

Char Char

Creación de un formato de pantalla para añadir datos
Una vez creadas las tablas, la siguiente operación consistirá en añadir datos a esas tablas, para lo cual Informix-SQL proporciona el menú PERFORM. Perform es una utilidad que genera automáticamente formatos de pantalla a través de los cuales el usuario puede añadir o modificar datos sin necesidad de tener conocimiento alguno sobre ningún lenguaje de manipulación de datos.

Generación automática de Formatos de Pantalla. Perform
Para generar un formato de pantalla, se elige la opción Form del menú principal.
INFORMIX-SQL: Form Report Query-Language Run, Modify, Create, or Drop a Form User-Menu Database Table Exit

Una vez seleccionada esa opción, aparece el siguiente menú:
FORM: Modify Generate Run Use a form to enter data or query a database. New Compile Drop Exit

El significado de cada una de estas opciones es el siguiente: Opción Run Modify Generate Utilización Utiliza un formulario creado anteriormente. Permite modificar un formulario creado anteriormente desde un editor de texto. En UNIX el editor por defecto es VI. Permite generar un formulario por defecto. Es la opción que se utilizará para crear formularios fácilmente sin necesidad de poseer conocimientos adicionales.

Manual de Informix-SQL

Pág. 20

http://www.serem.com

SEREM FORMACIÓN New

Cliente: LUCENT TECHNOLOGIES

Compile

Drop Exit

Permite crear un formulario desde un editor de texto. Es necesario conocer las especificaciones propias de ese tipo de fichero. Esta cuestión se abordará en este manual en un capítulo posterior. Cuando se genera o modifica un formulario desde la opción New, es necesario compilarlo después de su creación. Este procedimiento se realiza desde esta opción. Elimina una especificación de Formulario existente. Regresa al menú anterior.

Al elegir la opción Generate, Informix-SQL pregunta por el nombre que se desea dar a esa especificación de formulario.
GENERATE FORM >> Enter the name you want to assign to the form, then press Enter. -----Page 1 of 1-----------------------------------------MANUAL---------------------Press F1 for Help---------

A continuación Informix-SQL pregunta sobre que tabla se desea que actúe ese formulario, de forma que al añadir datos, estos vayan a parar a esa tabla, o que a la hora de realizar consultas utilizando este formulario, esas consultas afecten a dicha tabla.
CHOOSE TABLE >> Choose the table to be used in the default form. -----Page 1 of 1-----------------------------------------MANUAL---------------------Press F1 for Help---------

Una vez especificada la tabla, Informix-SQL pregunta si se desea utilizar toda la tabla, o seleccionar otras tablas a través del siguiente menú:

Table-Selection-Complete Select-more-Tables Exit Continue creating a default form with the selected tables. -----Page 1 of 1-----------------------------------------MANUAL---------------------Press F1 for Help----------

GENERATE FORM:

El significado de cada una de estas opciones es el siguiente: Opción Table-Selection-Complete Select-more-Tables Exit Utilización Crea el formulario utilizando la tabla anteriormente especificada. Permite añadir mas tablas a la seleccionada anteriormente. Se pueden añadir hasta diez tablas en un formulario. Regresa al menú anterior.

Se seleccionará la opción Table-selection-Complete, Informix-SQL creará el formulario, y dejará al usuario en el menú de formulario. Si se desea ejecutar el formulario para comenzar a añadir datos a la tabla, se debe elegir la opción Run y especificar el nombre del formulario que se desea ejecutar.

Manual de Informix-SQL

Pág. 21

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Una vez seleccionada la opción Run, Informix-SQL presenta el siguiente menú en pantalla. Desde este menú se pueden añadir datos y realizar consultas. En este apartado el manual se limitará a estudiar cómo se pueden añadir estos datos. En el siguiente capítulo se estudiará como se pueden realizar consultas.
PERFORM: Query Next Previous Add Update Remove Table Screen Current

Master

Detail

Output

Exit

El significado de cada una de estas opciones es el siguiente: Opción Query Next Previous Add Update Remove Table Screen Utilización Permite realizar una consulta a la tabla seleccionada. Presenta el siguiente registro de la lista activa. Presenta el anterior registro de la lista activa. Añade datos a la tabla. Esta es la opción que se habrá de seleccionar si se desea añadir datos de la forma mas sencilla. Permite modificar el contenido de un registro en la tabla activa. Elimina un registro de la tabla activa. Selecciona la tabla activa. En el caso de que el formulario actual no quepa en la pantalla presente, esta opción avanza a la siguiente pantalla para seguir viendo el contenido del formulario. Muestra el registro activo de la tabla activa. Selecciona la tabla patrón de la tabla activa. Selecciona una tabla de detalle de la tabla activa. Envía el contenido del formulario a un informe o a un archivo. Regresa al menú anterior.

Current Master Detail Output Exit

Una vez seleccionada la opción Run y el formulario que se desea ejecutar, el aspecto de la pantalla es el siguiente:

Manual de Informix-SQL

Pág. 22

http://www.serem.com

SEREM FORMACIÓN
PERFORM: Query Next Previous Searches the active database table numem numde extel fecna fecin salar comis [ [ [ [ [ [ [ [ [ ] ] ] ] ] ] ] ]

Cliente: LUCENT TECHNOLOGIES
Add Update Remove ** 1: temple table ** Table Screen...

numhi
nomem

]

En la pantalla, los nombres que aparecen a la izquierda representan los nombres de los campos, y las zonas que aparecen entre corchetes, el lugar donde se han de introducir los datos que se incluirán en esos campos. A través de la opción Add, el cursor se sitúa en el primer campo (especificado entre corchetes) y posibilita la introducción de datos. Existen una serie de combinaciones de teclas que facilitan el movimiento por estos campos: Tecla Control-x Control-a Control-d Control-f Control-b Control-c Control-p Control-w Delete Return, Control-j, Flecha abajo Control-k, Flecha Arriba Control-h, Flecha izquierda, Backspace Flecha derecha, Control-n Escape Descripción Borra un carácter. Pone y quita modo inserción. Borra hasta el final del campo. Avanza rápido a través de los campos. Retroceso rápido a través de los campos. Interrumpir. Proporciona el valor mas reciente del campo. Muestra el mensaje de ayuda. Cancela un comando. Moverse de campo a campo durante los comandos Query, Add y Update. Mueve el cursor atrás al comienzo del campo anterior. Mueve el cursor hacia atrás un carácter en un campo.

Mueve el cursor un espacio a la derecha en un campo. Entrada completada.

Manual de Informix-SQL

Pág. 23

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Ejecución de consultas Tipos de Consultas
Como se expresó en los capítulos iniciales, existen fundamentalmente dos tipos de consultas ejecutables desde Informix-SQL. El primer tipo lo forman las consultas QBE (Query by Example). Para ejecutar una consulta de este tipo, no es necesario conocer ningún lenguaje de manipulación de datos, sino solamente saber cómo son realizadas estas consultas desde Informix-SQL. El otro tipo de consultas está formado por aquellas que se redactan utilizando lenguaje SQL (Structured Query Language). En el caso concreto de Informix el lenguaje exacto que se utiliza es RDSQL. Consiste en una norma basada en SQL con algunas ampliaciones. Para crear y ejecutar consultas de este tipo, es necesario conocer RDSQL en profundidad. Este lenguaje se estudiará en el apartado siguiente.

Ejecución consultas QBE desde Informix-SQL
Cuando se necesita obtener algunos datos de los almacenados en las tablas, se pueden dar dos situaciones: que esos datos conformen la totalidad de la tabla (es decir, no tengan que cumplir ninguna condición especial) o bien que el usuario necesite encontrar solamente aquellos datos que cumplan una condición especificada mas o menos compleja.

Consultas de datos que no han de cumplir ninguna condición
Una vez activada la base de datos que contiene las tablas a las cuales se desea realizar la consulta, el usuario seleccionará la opción Form desde el menú principal de Informix.
INFORMIX-SQL: Form Report Query-Language Run, Modify, Create, or Drop a Form User-Menu Database Table Exit

Una vez seleccionada esta opción, aparecerá el siguiente menú en pantalla:

FORM: Modify Generate Run Use a form to enter data or query a database

New

Compile

Drop

Exit

Seleccionando la opción Run, Informix preguntará a continuación qué formulario se desea ejecutar:
RUN FORM >> Choose a form with Arrows Keys, or enter a name, then press Enter ------------------Manual-----------------------------------------------------Press F1 for Help----------------------ATEMPLE

ATEMPLE es el nombre del formulario creado en la sección anterior para añadir datos a la tabla. Se utilizarán las teclas de las flechas o se escribirá el nombre. Al pulsar Enter, este formulario queda como activo y la pantalla aparece con la siguiente presentación:
Manual de Informix-SQL Pág. 24 http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

PERFORM: Query Next Previous Searches the active database table numem numde extel fecna fecin salar comis [ [ [ [ [ [ [ [ [ ] ] ] ] ] ] ] ]

Add Update Remove ** 1: temple table **

Table Screen...

numhi
nomem

]

Desde esta pantalla, el usuario está en disposición de, o bien añadir datos, como se explicó en el apartado anterior, o bien realizar consultas a la base de datos como se verá a continuación. Para obtener todos los datos de la tabla, se seleccionará la opción Query y a continuación se pulsará la tecla Escape. En las zonas de la pantalla destinadas a datos (entre corchetes) aparecerán los valores de los campos del primer registro de la tabla. Para pasar a ver los datos de los siguientes registros se utilizará la opción Next. Desde los siguientes registros, para acceder a los valores de un registro anterior, se utilizará la opción Previous. Por último, para abandonar esta pantalla se utilizará la opción Exit.

Consultas de datos que han de cumplir alguna condición
Desde la misma pantalla en la que se realizaban consultas para obtener datos sin condiciones:

PERFORM: Query Next Previous Searches the active database table numem numde extel fecna fecin salar comis [ [ [ [ [ [ [ [ [ ] ] ] ] ] ] ] ]

Add Update Remove ** 1: temple table **

Table Screen...

numhi
nomem

]

Al seleccionar la opción Query, en lugar de pulsar Escape como en el caso anterior, utilizando las teclas de las flechas, se situará el cursor sobre el campo sobre

Manual de Informix-SQL

Pág. 25

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

el que se desea establecer la condición, y se escribirá el criterio que deben cumplir los registros que se desea aparezcan en pantalla.
PERFORM: Query Next Previous Searches the active database table numem numde extel fecna fecin salar comis [120 [ [ [ [ [ [ [ [ ] ] ] ] ] ] ] ] ] Add Update Remove ** 1: temple table ** Table Screen...

numhi
nomem

Una vez tecleado el valor en el campo correspondiente, sigue el mismo procedimiento que en la sección anterior: Pulsación de la tecla Escape. Los registros cuyo campo numde (Ejemplo superior) almacene el valor 120, aparecerán en pantalla. Las opciones Next y Previous permitirán al usuario desplazarse por todos estos registros. En el caso del ejemplo, solo hay uno que cumple la condición, ya que el campo numem es índice único (clave). Este procedimiento es válido tanto si se especifica un valor para un campo único, o se introducen valores en varios campos. Al pulsar Escape Informix-SQL presentará en pantalla todos los registros que cumplan simultáneamente las condiciones especificadas. Es posible no solo establecer un operador de igualdad para los valores de los campos. Existen una serie de operadores que se pueden introducir para comparar los valores introducidos con los correspondientes de los registros. Estos operadores son los siguientes: Operador > < <= >= = <> V1:V2 V1|V2 << >> s* [Ss]* S?? Significado Mayor que Menor que Menor o Igual que Mayor o igual que Igual que Distinto a Valores entre V1 y V2 incluidos Valor V1 o V2 El valor mas bajo El valor mas alto Valores que empiezan por S Valores que comienzan por S o s Valor de tres caracteres que comiencen por S

Manual de Informix-SQL

Pág. 26

http://www.serem.com

SEREM FORMACIÓN =* = Notas: El valor * Valor Nulo

Cliente: LUCENT TECHNOLOGIES

Ø Si un campo se deja en blanco en una consulta, se supone que cualquier valor es aceptable en ese campo. Ø No se puede combinar el operador de rangos con el uso de comodines en el mismo campo.

Creación de un informe
Al igual que en el caso de los formularios, Informix-SQL puede generar automáticamente Informes basados en los datos contenidos en las tablas. Estos informes se pueden destinar impresora o a un archivo para su posterior impresión o exportación a otras aplicaciones. Como en el caso de los formularios, el generador de informes (ACE) no requiere tener conocimientos de ningún lenguaje de manipulación de datos.

Generación automática de Informes. ACE
Para generar un informe, una vez seleccionada la base de datos, se utilizará la opción Report del menú principal:

INFORMIX-SQL: Form Report Query-Language Run, Modify, Create, or Drop a Report.

User-Menu

Database

Table

Exit

Una vez seleccionada esta opción aparece el siguiente sistema de menús:
REPORT: Run Run a report Modify Generate New Compile Drop Exit

El significado de cada una de estas opciones es el siguiente: Opción Run Modify Generate New Utilización Ejecuta un informe creado previamente. Permite modificar un informe generado previamente. Se utilizará el editor de texto por defecto. En el caso de Unix, este editor es VI. Genera un informe por defecto. Esta es la opción que se utilizará en el caso presente. Crea una nueva especificación de Informe. Este proceso se realiza desde un editor de texto. Se estudiará adecuadamente en una sección posterior de este manual. Compila un informe creado o modificado desde un editor. Elimina un informe creado anteriormente. Regresa al menú anterior.

Compile Drop Exit

Manual de Informix-SQL

Pág. 27

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Como se ha dicho anteriormente, la opción Generate es la que permitirá crear un informe de la manera mas sencilla.
REPORT: Run Modify Generate a deafult Report Generate New Compile Drop Exit

Una vez seleccionada esta opción, Informix presenta la siguiente pantalla:
GENERATE REPORT >> Enter the name you want to assign to the report, then press Enter

En este momento, se ha de especificar el nombre que se desea asignar al informe. Al pulsar Enter , Informix-SQL presenta el siguiente menú:
CHOOSE TABLE >> Choose the table to be used in the default report --------------------MANUAL1---------------------------------Press F1 for Help-------------------------------------temple tcentr tdepto

En este menú se pide al usuario que seleccione la tabla sobre cuyos datos se desea elaborar el informe. Automáticamente el informe es generado e Informix-SQL deja al usuario en el menú principal de Informes.
REPORT: Run Run a Report Modify Generate New Compile Drop Exit

A continuación, la opción Run ejecutará el informe en pantalla.

RDSQL
RDSQL es la norma creada a partir de SQL con algunas ampliaciones que permiten mejorar el rendimiento de SQL estándar. Es propio de Informix aunque, en general, las diferencias entre uno y otro sean escasas. RDSQL esta basado en una serie de cláusulas u órdenes que aplicadas a una o varias tablas de una base de datos, proporcionan la posibilidad de realizar operaciones de manipulación de datos.

Escritura de Consultas SQL desde Informix-SQL
Para poder generar una consulta en SQL desde Informix-SQL, se elegirá la opción Query-Language del menú principal de Informix, una vez seleccionada la Base de Datos sobre la que se desea establecer la consulta. Si no se hubiese seleccionado previamente, Informix-SQL indicará al usuario a través de un menú que seleccione la base de datos deseada.

Manual de Informix-SQL

Pág. 28

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES
Database Table Exit

INFORMIX-SQL: Form Report Query-Language User-Menu Use Informix Structured Query Language

Una vez seleccionada esta opción, Informix presenta el siguiente menú:
RDSQL: New Run Modify Use-Editor Output Enter new RDSQL Statments using the RDSQL Editor. Choose Save Info Drop Exit

Las operaciones que permiten realizar cada una de estas opciones son las siguientes: Opción Utilización New Run Modify Use-Editor Output Choose Save Info Drop Exit Permite añadir una nueva sentencia SQL usando el editor de SQL. Ejecuta una sentencia SQL previamente redactada. Permite modificar una sentencia SQL creada anteriormente. Permite crear o modificar una sentencia SQL creada anteriormente usando el editor seleccionado por el usuario, o configurado por defecto. Envía los resultados de una consulta a impresora o a un fichero. Elige una línea de comando como la sentencia REDSQL activa. Guarda las sentencias SQL actuales en un archivo de comandos. Proporciona información acerca de las tablas de la base de datos activa. Elimina un fichero de comandos RDSQL. Regresa al menú anterior.

Después de seleccionar la opción New en el menú RDSQL, Informix presenta una pantalla como la siguiente:
ESCAPE= Done Editing INSERT= Typeover/Insert DELETE= Delete Character CONTROL-D= Delete rest of line -----------------MANUAL1---------------------------------------Press F1 for HELP-----------------------------------_ New:

El cursor se sitúa automáticamente en la parte inferior de la pantalla, zona que corresponde al editor RDSQL. A partir de este momento, Informix espera la introducción de sentencias correctas en lenguaje RDSQL.

Lenguaje RDSQL. Consultas de selección sin condiciones
La estructura mas simple es aquella que permitirá al usuario mostrar los valores de una serie de campos de todos los registros de la tabla. Estas son las consultas llamadas de Selección. No afectan al contenido de las tablas, sino que se limitan a mostrar datos almacenados. En este caso la sintaxis de esa sentencia será la siguiente:

Manual de Informix-SQL

Pág. 29

http://www.serem.com

SEREM FORMACIÓN SELECT [campo1,campo2,campo3,....campoN] FROM [Nombre de la tabla]

Cliente: LUCENT TECHNOLOGIES

Si en la cláusula SELECT se sustituye la lista de nombres de campos por un asterisco (*), el resultado reflejará todos los campos de la tabla especificada en FROM. En el ejemplo del manual, la sintaxis será la siguiente:

SELECT nomem,numhi,salar,comis FROM temple Esta consulta proporcionará los nombres de los empleados, su número de hijos, su salario y su comisión, tomando los datos de la tabla temple (Datos de empleados). Una vez redactada la consulta, se pulsará Escape. Informix presentará el menú RDSQL, y en él se elegirá la opción Run. Automáticamente se mostrará en pantalla el resultado de la consulta.
RUN: Exit Next Restart Display next page of Query Results. -----------------MANUAL1---------------------------------------Press F1 for HELP nomem numhi salar comis Pons, César 3 310000 110000 Lasa, Mario 1 350000 110000 Terol, Luciano 2 290000 Pérez, Julio 0 440000 110000 Aguirre, Aureo 2 310000 50000 Pérez, Marcos 2 480000 Veiga, Juliana 4 300000 100000 Gálvez, Pilar 2 380000 Sanz, Lavinia, 3 280000 80000 Alba, Adriana 0 450000 López, Antonio 6 720000 ... ... ....

Las opciones del menú principal permiten realizar las siguientes acciones: Opción Next Restart Exit Utilización Muestra la siguiente página de resultados. Comienza desde el principio de la sentencia SQL actual. Regresa al menú anterior.

Utilizando la opción Exit, se puede regresar al menú anterior. Desde este menú, utilizando la opción Modify, se puede modificar la redacción de la sentencia SQL.
Manual de Informix-SQL Pág. 30 http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

A esa misma sentencia se le puede añadir la cláusula ORDER BY, de forma que el resultado se devuelva ordenado. Hay que tener en cuenta que, para poder ordenar según una columna, es necesario que esa columna se muestre en la consulta. Se puede sustituir los nombres de las columnas por enteros indicando la posición de cada columna en la lista de columnas. SELECT FROM ORDER BY [campo1,campo2,campo3,....campoN] [Nombre de la tabla] [campo1,campo2,campo3,....campoN]

En el ejemplo: SELECT FROM ORDER BY nomem,numhi,salar,comis temple numhi,nomem

El resultado se presentará igual que en el caso anterior, pero ordenado por número de hijos, y a igualdad de número de hijos, ordenado por nombres de empleado. ORDER BY puede ir seguido de DESC, en cuyo caso presentará los datos ordenados de forma descendente.

SELECT FROM ORDER BY

nomem,numhi,salar,comis temple numhi,nomem DESC

SELECT puede llevar añadidas las cláusulas ALL, DISTINTC, UNIQUE. Estas cláusulas proporcionan la posibilidad de: ALL: Todos los valores. Es la opción por defecto. DISTINCT / UNIQUE: Seleccionar los valores diferentes de la tabla.

Exportar datos a Impresora o a Fichero
Al terminar la visualización de los resultados, en el caso anterior se ha seleccionado la opción Modify. En lugar de elegir Modify, es posible seleccionar la opción Output. Esta opción permitirá exportar el resultado de esa consulta a un fichero o a una impresora.
RDSQL: New Run Modify Use-Editor Output Run and sends query results to a printer or a file. Choose Save Info Drop Exit

Al elegir Output, Informix presenta el siguiente menú:
RDSQL: Printer New-File Sends Query results to a Printer Append-File Exit

La utilidad de cada una de las opciones del menú es la siguiente:

Manual de Informix-SQL

Pág. 31

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Opción Printer New-File Append-File Exit

Utilización Envía el resultado de la consulta a una Impresora. Genera un nuevo fichero e incluye en él los datos de salida de la consulta. Añade los datos de la consulta a un fichero existente. Regresa al menú anterior.

Si se selecciona la opción New-File, Informix preguntará por el nombre que se desea asignar al nuevo fichero y generará éste automáticamente. Si se selecciona la opción Append-File, Informix preguntará por el nombre de un fichero existente y añadirá los datos de la consulta actual a los que ya hubiese incluidos en ese fichero.

Consultas con definición de condiciones
A la sentencia redactada en el ejercicio anterior, se le pueden añadir cláusulas que expresen una condición de forma que los listados emitidos presentarán solo los registros que cumplan la condición o condiciones especificadas. Estas cláusulas son WHERE y HAVING. SELECT FROM WHERE ORDER BY En el ejemplo: SELECT FROM WHERE ORDER BY nomem,numhi,salar,comis temple numhi=2 numhi,nomem [campo1,campo2,campo3,....campoN] [Nombre de la tabla] [Condición] [campo1,campo2,campo3,....campoN]

Esta nueva sentencia presentará los mismos datos que la anterior, pero solo para aquellos empleados cuyo número de hijos sea igual a dos. Toda consulta a una tabla con un gran número de filas será mas eficiente si la columna de la cláusula WHERE está indexada. La cláusula WHERE puede establecer una exclusión de valores. En este caso, su sintaxis será la siguiente: SELECT FROM WHERE ORDER BY En el ejemplo: [campo1,campo2,campo3,....campoN] [Nombre de la tabla] [Campo != valor] [campo1,campo2,campo3,....campoN]

Manual de Informix-SQL

Pág. 32

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

SELECT FROM WHERE ORDER BY

nomem,numhi,salar,comis temple numhi !=2 numhi,nomem

En este caso se presentarán los datos de aquellos empleados que NO tengan dos hijos. WHERE puede establecer varias condiciones simultáneamente unidas por un operador AND o un operador OR. En el primer caso seleccionará todos los registros que cumplan todas las condiciones establecidas. En el segundo caso, presentará aquellos registros que al menos cumplan una de las condiciones establecidas. SELECT FROM WHERE ORDER BY En el ejemplo: SELECT FROM WHERE ORDER BY nomem,numhi,salar,comis temple numhi > 3 AND numhi < 6 numhi,nomem [campo1,campo2,campo3,....campoN] [Nombre de la tabla] [Campo1= valor] AND [Campo2=valor] AND ... [campo1,campo2,campo3,....campoN]

Esta consulta mostrará aquellos registros cuyo número de hijos es estrictamente mayor que tres y estrictamente menor que seis. En el siguiente caso, la consulta mostrará los datos de los empleados que tengan o dos o cinco hijos: SELECT FROM WHERE ORDER BY nomem,numhi,salar,comis temple numhi = 2 OR numhi = 5 numhi,nomem

Where permite también establecer condiciones basadas en un rango de valores, utilizando la cláusula BETWEEN: SELECT FROM WHERE ORDER BY [campo1,campo2,campo3,....campoN] [Nombre de la tabla] [Campo1 BETWEEN valor1 AND valor2] [campo1,campo2,campo3,....campoN]

Manual de Informix-SQL

Pág. 33

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

En el ejemplo, esta consulta mostrará aquellos registros cuyo número de hijos esté entre los valores de 3 y 6 (Ambos incluidos), es decir, los empleados que tengan 3, 4, 5, o 6 hijos. SELECT FROM WHERE ORDER BY nomem,numhi,salar,comis temple numhi BETWEEN 3 AND 6 numhi,nomem

Otra forma de establecer la comparación del contenido de un campo con varios valores es utilizar la cláusula IN. En este caso, Informix devuelve los registros en los que el campo especificado contiene alguno de los valores establecidos en la cláusula. SELECT FROM WHERE ORDER BY [campo1,campo2,campo3,....campoN] [Nombre de la tabla] [Campo1 IN (valor1, valor2.....valorN) [campo1,campo2,campo3,....campoN]

En el Ejemplo: SELECT FROM WHERE ORDER BY nomem,numhi,salar,comis temple numhi IN (1,2) numhi,nomem

En este caso, Informix-SQL mostrará solo aquellos registros correspondientes a empleados cuyo número de hijos sea 1, 2, o 6. WHERE puede estudiar aquellos casos en los que el contenido del campo sea nulo. (NULL). En este caso, la cláusula añadida es IS NULL. SELECT FROM WHERE ORDER BY [campo1,campo2,campo3,....campoN] [Nombre de la tabla] [Campo1 IS NULL] [campo1,campo2,campo3,....campoN]

En el Ejemplo: SELECT FROM WHERE ORDER BY nomem,numhi,salar,comis temple comis IS NULL numhi,nomem

Informix presentará aquellos empleados que tengan un valor nulo en el campo comis (comisiones).

Manual de Informix-SQL

Pág. 34

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

WHERE posibilita realizar búsquedas utilizando metacaracteres. En este caso, utiliza las dos siguientes cláusulas: MATCHES, para modelos basados en metacaracteres de UNIX (*, ?, []). LIKE, para modelos basados en metacaracteres ANSI (%, _) La sintaxis será la siguiente: SELECT FROM WHERE ORDER BY [campo1,campo2,campo3,....campoN] [Nombre de la tabla] [Campo1 MATCHES “ valor*” ] [campo1,campo2,campo3,....campoN]

En el ejemplo: SELECT FROM WHERE ORDER BY nomem,numhi,salar,comis temple nomem MATCHES “ Polo*” numhi,nomem

Informix buscará aquellos registros correspondientes a empleados cuyo nombre comience por “ Polo”seguido de cualquier cadena de caracteres. En el siguiente ejemplo, Informix realizará exactamente la misma operación: SELECT FROM WHERE ORDER BY nomem,numhi,salar,comis temple nomem LIKE “ Polo%” numhi,nomem

Si en lugar de MATCHES o LIKE, se utiliza NOT LIKE o NOT MATCHES, Informix mostrará todos menos los que correspondan al modelo. En el ejemplo: SELECT FROM WHERE ORDER BY nomem,numhi,salar,comis temple nomem NOT LIKE “ Polo%” numhi,nomem

Informix mostrará todos los registros correspondientes a empleados, menos aquellos cuyo nombre comience por “ Polo” seguido de cualquier cadena de caracteres. En el siguiente ejemplo, Informix mostrará todos los registros correspondientes a empleados cuyo nombre comienza por cualquier letra entre la R y la V.

Manual de Informix-SQL

Pág. 35

http://www.serem.com

SEREM FORMACIÓN SELECT FROM WHERE ORDER BY nomem,numhi,salar,comis temple nomem MATCHES “ [R-V]*” numhi,nomem

Cliente: LUCENT TECHNOLOGIES

Obsérvese que, al utilizar la cláusula MATCHES, se ha de utilizar el metacarácter asterisco en lugar del metacarácter porcentaje.

Funciones Agregadas
Las funciones agregadas disponibles son: Función COUNT(*) COUNT(DISTINCT nombre-columna) Utilización

Cuenta las filas. Cuenta cuantos valores diferentes aparecen para el campo especificado. SUM(x) Suma todos los valores de una columna. SUM (DISTINCT nombre-columna) Solo suma una vez los valores repetidos. AVG(x) Halla el valor medio de los valores de una columna. AVG(DISTINCT nombre-columna) Solo cuenta una vez los valores repetidos para hallar la media. MAX(x) Calcula el valor máximo de una columna. MIN(x) Calcula el valor mínimo de una columna. La “ puede representar un nombre de columna o una expresión. x” Ejemplos: Función COUNT(*) COUNT(DISTINCT nombre-columna) SUM(x) SUM (DISTINCT nombre-columna) AVG(x) AVG(DISTINCT nombre-columna) MAX(x) MIN(x) Ejemplo SELECT COUNT(*) FROM temple SELECT COUNT(DISTINCT numhi) FROM temple SELECT SUM(salar) FROM temple SELECT SUM(DISTINCT salar) FROM temple SELECT AVG(salar) FROM temple SELECT AVG(DISTINCTsalar) FROM temple SELECT MAX(salar) FROM temple SELECT MIN(salar) FROM temple

Manual de Informix-SQL

Pág. 36

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

La “ puede representar un nombre de columna o una expresión. x”

Cláusula GROUP BY
La cláusula GROUP BY se utiliza para producir una única fila de resultados para cada grupo. Un grupo es un conjunto de filas que tienen el mismo valor en una columna dada. Ejemplo: SELECT FROM GROUP BY ORDER BY SUM(salar), numhi temple numhi numhi

Esta consulta mostrará el total de la suma de los sueldos de cada grupo de empleados que tiene el mismo número de hijos, ordenado ascendentemente por número de hijos. Cada fila que contiene un valor nulo en la columna sobre la cual actúa la cláusula GROUP BY es tratada como un grupo por separado. Esto es consistente con el hecho de que, en realidad, el valor NULL es desconocido. No existe, pues, razón para tratar todos los valores NULL como si fueran el mismo. Para establecer condiciones utilizando funciones agregadas, es posible utilizar la cláusula HAVING. Ejemplo: SELECT FROM GROUP BY HAVING ORDER BY AVG(salar), MAX(salar, MIN(salar), numde, (MIN(salar)+MAX(salar))/2 temple numde AVG(salar)>400000 numde

Esta consulta devolverá los valores Medio del salario, Máximo del salario, Mínimo del salario, La media de los dos y el número de departamento, agrupados por departamentos, ordenados por departamentos y que cumplan que la media del salario es mayor que 400.000.

Envío de los resultados de una consulta a una nueva tabla
Si se añade la cláusula INTO TEMP al final de la consulta, los resultados de ésta se almacenarán en una nueva tabla cuyo nombre se especificará detrás de la cláusula INTO TEMP. Hay que tener en cuenta que en este caso no se puede utilizar ORDER BY. Ejemplo: SELECT FROM INTO TEMP numde, nomem temple salida

Manual de Informix-SQL

Pág. 37

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Informix generará automáticamente la tabla salida con los datos resultado de la consulta en su interior. Esta tabla es temporal y solo podrá ser utilizada en las siguientes consultas. Se borrará automáticamente al salir de Informix-SQL. Si se dese almacenar una expresión o función en una tabla temporal, es necesario asignar un alias a esa expresión, como se muestra en el ejemplo siguiente: SELECT FROM GROUP BY INTO TEMP SELECT FROM numde, MIN(salar) mínimo, MAX(salar) máximo temple numde salida; numde, mínimo, máximo salida

En este ejemplo se realizan dos consultas consecutivas. En la primera se genera la tabla salida, y en la segunda se seleccionan los datos desde esa tabla. Las dos consultas están separadas por un carácter “ ;”

Establecimiento de relaciones entre tablas.
Una sentencia SELECT puede obtener información de varias tablas, devolviendo los datos especificados de cada una de las tablas. Se crea una nueva tabla temporal mediante la fusión horizontal de estas filas, y esta tabla proporciona la información que es mostrada. Las sentencias SELECT que acceden a más de una tabla normalmente unen las tablas mediante una condición de igualdad en la cláusula WHERE. SELECT FROM WHERE numem, nomem, temple.numde, nomde temple, tdepto temple.numde = tdpto.numde

En el ejemplo anterior la columna numde debe estar calificada, es decir, debe ir precedida del nombre de la tabla. Esta consulta devolverá por cada uno de los empleados: su número, su nombre, el número y el nombre del departamento al que pertenece. (Nótese que la información del nombre del departamento no se encuentra en la tabla de empleados) Los requisitos que se deben cumplir para poder realizar consultas de este tipo son: Ø Ø Las tablas deben tener una columna en común es decir, dos columnas que se pueden comparar. Las columnas de join deben ser de tipos compatibles: Un dato SERIAL se almacena como un entero. Entonces, una columna SERIAL puede ser comparado con una columna INTEGER en la condición. Para comparar columnas CHAR, deben tener la misma longitud. Por razones de rendimiento, las columnas en la condición de JOIN deben tener índices.

Ø

Manual de Informix-SQL

Pág. 38

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Cuando no se incluye la cláusula WHERE en una consulta a varias tablas, se generarán todas las posibles combinaciones. Esto se conoce como Producto Cartesiano. SELECT FROM numem, temple.numde, nomde temple, tdepto

Debe notarse que una consulta de JOIN entre dos tablas se realiza de las siguiente forma: Ø Ø Ø Se realiza el producto cartesiano de las tablas especificadas en la cláusula FROM. Se seleccionan las filas que cumplen la condición especificada en la cláusula WHERE. Se muestran las columnas especificadas en la cláusula SELECT.

Supóngase que se han definido las siguientes tablas: Tabla1 Campo1 María José Alberto Campo2 1 3 2 Tabla2 Campo2 1 2 2 Campo3 Fútbol Baloncesto Balonmano

La sentencia SELECT FROM campo1, campo3 tabla1, tabla2

Devolverá Campo1 María María María José José José Alberto Alberto Alberto Sin embargo la sentencia Campo3 Fútbol Baloncesto Balonmano Fútbol Baloncesto Balonmano Fútbol Baloncesto Balonmano

Manual de Informix-SQL

Pág. 39

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

SELECT FROM WHERE

campo1, campo3 tabla1, tabla2 tabla1.campo2 = tabla2.campo2

Devolverá: Campo1 María Alberto Alberto Campo3 Fútbol Baloncesto Balonmano

Como se puede observar la SELECT anterior, no muestra datos cuando campo1 = José, ya que dicha fila contiene en el campo de unión de ambas tablas, un valor no registrado en Tabla2. Este tipo de consulta trata a las tablas de forma simétrica; es decir, una fila de una tabla se empareja con una fila de la otra sólo cuando ambas filas tienen valor en la columna de unión. Para subsanar la situación anterior, permitiendo que en nuestra consulta apareciera la información cuando el campo1 = José, bastará con realizar una sentencia SELECT con el siguiente formato: SELECT FROM WHERE campo1, campo3 tabla1, outer tabla2 tabla1.campo2 = tabla2.campo2

En este caso el resultado de la consulta será: Campo1 María José Alberto Alberto Baloncesto Balonmano Campo3 Fútbol

Formatos Personalizados
Como se ha visto anteriormente, Informix permite generar formatos de pantalla por defecto. Estos formatos permiten al usuario tanto añadir datos, como modificar o borrar estos datos e incluso realizar consultas. Sin embargo, el formato de pantalla que se genera por defecto es sumamente sencillo, y habrá ocasiones en las que se deseará crear formatos de pantalla mas sofisticados.

Creación de un Formato Personalizado Monotabla
Para comenzar a comprender el funcionamiento de los formatos de pantalla definidos por el usuario, lo mas fácil es partir de un formato generado automáticamente. Como se recordará, para crear un formato por defecto, lo único que es necesario hacer es elegir la opción Form del menú principal. En el siguiente

Manual de Informix-SQL

Pág. 40

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

menú, elegir la opción Generate, especificar el nombre que se desea asignar a este formato, especificar la tabla cuyos datos se desean gestionar desde este formato, elegir la opción Table - Selection - Complete (en el caso de que sea ésta la opción deseada), y, por último, seleccionar la opción Run y especificar que formato se desea ejecutar. Como se decía en el párrafo anterior, en este manual se va a partir de un formato creado por defecto, y se va a modificar utilizando un editor de texto. El editor de texto por defecto en Unix es el VI. El formato creado automáticamente se presenta en pantalla como aparece en la figura siguiente:
PERFORM: Query Next Previous Searches the active database table numem numde extel fecna fecin salar comis numhi nomem [ [ [ [ [ [ [ [ [ ] ] ] ] ] ] ] ] ] Add Update Remove ** 1: temple table ** Table Screen...

Para modificar este formato, y adaptarlo a las exigencias propias, será necesario salir al menú principal de formatos pulsando e o seleccionando la opción Exit en el menú. Esta operación presentará en pantalla el menú principal de formatos.
FORM: Run Modify Modify a form specification. Generate New Compile Drop Exit

En este menú, se seleccionará la opción Modify. En el siguiente menú, se especificará el nombre del formato que se desea modificar. Informix-SQL activará automáticamente el editor por defecto (VI) y en pantalla aparecerá la especificación de Formulario tal como aparece a continuación.

Estructura de la especificación de formulario
database EJEMPLO1 screen { numem numde extel fecna fecin

[f000 [f001 [f002 ] [f003 [f004

] ] ] ]

Manual de Informix-SQL

Pág. 41

http://www.serem.com

SEREM FORMACIÓN salar comis numhi nomem } end tables temple attributes f000 = temple.numem; f001 = temple.numde; f002 = temple.extel; f003 = temple.fecna; f004 = temple.fecin; f005 = temple.salar; f006 = temple.comis; f007=temple.numhi; f008=temple.nomem; end [f005 [f006 [f007 ] [f008 ] ]

Cliente: LUCENT TECHNOLOGIES

]

En este fichero de texto se pueden realizar una serie de modificaciones para adaptar el formato a lo que se desee. Los elementos de este formulario son los siguientes:

Secciones de la especificación de formulario
En la parte superior (Sección DATABASE), se define sobre qué base de datos se está trabajando. (Database EJEMPLO1). Esta sección - a diferencia de otras - no necesita un mensaje (end) que indique donde termina. En la siguiente sección (screen), se determina como aparecerán los datos en pantalla. En la parte de la derecha están escritos los nombres de los campos de la tabla. Estos nombres pueden ser cambiados por otros que el usuario final identifique mas fácilmente. En la parte derecha aparecen unas etiquetas que enlazan el nombre de campo aparecido a la derecha con su contenido (aparecido a la Izquierda). Estas etiquetas presentan un código que está definido en la cuarta sección del formulario (atributes). Tanto la sección screen como la sección atributes deben llevar un indicador de fin de sección. Este indicador es la etiqueta end. La tercera sección (tables) especifica sobre que tabla se ha construido el formulario. En este caso, la tabla es temple (Datos de Empleados) Es posible añadir nuevos modificadores a cada sección, de forma que el formulario adquiera un aspecto y funcionamiento diferente al creado por defecto. Una primera modificación podría ser la siguiente: database EJEMPLO1 screen { Número de empleado:

[f000

]

Manual de Informix-SQL

Pág. 42

http://www.serem.com

SEREM FORMACIÓN -----------------------------Número de Departamento: -----------------------------------Extensión telefónica: ---------------------------Fecha de Nacimiento: ----------------------------Fecha de Ingreso: -----------------------Salario: --------Comisiones: ---------------Número de Hijos: ----------------------Nombre de Empleado: -----------------------------} end tables temple attributes f000 = temple.numem; f001 = temple.numde; f002 = temple.extel; f003 = temple.fecna; f004 = temple.fecin; f005 = temple.salar; f006 = temple.comis; f007=temple.numhi; f008=temple.nomem; end

Cliente: LUCENT TECHNOLOGIES

[f001 [f002 ] [f003 [f004 [f005 [f006 [f007 ] [f008

]

] ] ] ]

]

Como se puede comprobar, solo se han cambiado los nombres de los campos por indicaciones mas familiares al lenguaje normal y se han añadido una serie de subrayados. Cuando se ha terminado de realizar esas modificaciones, se saldrá del editor guardando los cambios, e Informix presentará automáticamente el menú de Modificar Formato en pantalla.
MODIFY FORM: Compile Save-and-Exit Compile the form specification. Discard-and-Exit

Primero se seleccionará la opción Compile. Esta opción prepara la especificación de formulario modificada desde el editor, a una especificación que

Manual de Informix-SQL

Pág. 43

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Informix pueda ejecutar. Si no se han encontrado errores, Informix activa la opción Save-and-Exit. Esta opción guardará las modificaciones y dejará el formulario listo para ejecutarse, presentando en pantalla el menú principal de Formularios. La opción Discard-and-Exit abandona todos los cambios que se hayan realizado desde el editor y deja la especificación de formulario como estaba antes de editarlo. Al ejecutar la opción Run, la pantalla aparecerá como la siguiente:
PERFORM: Query Next Previous Add Remove Table Screen.. . ** 1: temple table ** Update

Searches the active database table Número de Empleado: Número de Departamento: Extensión Telefónica: Fecha de Nacimiento: Fecha de Ingreso: Salario: Comisiones: Número de Hijos: Nombre de Empleado: [ [ [ [ [ [ [ [ ] [ ] ] ] ] ] ] ]

]

Igual que es posible modificar estructuras de informes, simplemente añadiendo nuevos textos, también es posible añadir nuevos atributos a los campos, en la sección correspondiente. Estos atributos son los siguientes: Atributo Comments: Reverse: Upshift: Downshift: Autonext: Include: Significado Añade una línea de comentarios en la parte inferior de la pantalla. Cambia la visualización de la zona de datos a vídeo inverso. Cambia todas las letras a mayúsculas. Cambia todas las letras a minúsculas. Avanza automáticamente el cursor al siguiente campo cuando el campo actual está lleno. Hace que los datos sean comprobados en una lista de valores antes de aceptarlos como entrada. La Sintaxis es: INCLUDE=(“ Valor1” , “ Valor2” .) ,… Especifica un patrón para una columna de tipo carácter. La sintaxis es: picture=” --------… ” donde los guiones y puntos representan alguno de los caracteres siguientes: A: Cualquier letra #: Cualquier número. X: Cualquier carácter. Otro: Se coloca el mismo carácter representado.
Pág. 44 http://www.serem.com

Picture:

Manual de Informix-SQL

SEREM FORMACIÓN Right: Noupdate: Queryclear:

Cliente: LUCENT TECHNOLOGIES Justifica los datos numéricos a la derecha. Impide que se modifiquen datos con la opción Update. No impide que se añadan datos. Limpia el contenido de un campo que une dos tablas al entrar en la opción de consultar. Se aplica solamente a formatos de mas de una tabla. Requiere que el campo contenga datos antes de modificarlo o dar de alta a la fila. Requiere que se teclee la información dos veces para asegurar su exactitud. Evita que los datos se añadan a una columna al añadir una fila nueva. No impide la modificación de datos. Asigna un valor por defecto a un campo. Ejemplo: Default=TODAY. Controla el formato de pantalla para las columnas de tipo decimal, smallfloat, float y date. Ejemplos: Cadena de Formato de fecha: Defecto: 23/12/1997 FORMAT=” mm/dd/yy” 23/12/97 : FORMAT=” yymmdd” 971223 : FORMAT=” dd-mm-yy” 23-12-97 : FORMAT=” mmm dd, yyyy” Dic 23, 1997 : FORMAT=” (ddd) mmm,yyyy” (Sat. Dic 23, : 1997 Cadena de Formato numérico: FORMAT=” ###.###” 234.566 : FORMAT=” ###,###.##” 123,234.566 : Funciona igual que right, pero los espacios a la izquierda se rellenan con ceros.

Required: Verify: Noentry:

Default: Format:

Zerofill:

Así, el listado del formato de pantalla que, en principio solo fue modificado en cuanto a la adición de algunos textos y algunos subrayados, puede quedar convertido en lo siguiente:
database EJEMPLO1 screen { Número de empleado: -----------------------------Número de Departamento: -----------------------------------Extensión telefónica: ---------------------------Fecha de Nacimiento:

[f000 [f001 [f002 ] [f003

] ]

]

Manual de Informix-SQL

Pág. 45

http://www.serem.com

SEREM FORMACIÓN
----------------------------Fecha de Ingreso: -----------------------Salario: --------Comisiones: ---------------Número de Hijos: ----------------------Nombre de Empleado: -----------------------------} end tables temple

Cliente: LUCENT TECHNOLOGIES

[f004 [f005 [f006 [f007 ] [f008

] ] ]

]

attributes f000=temple.numem, autonext, Comments="Introduzca el número de empleado", Reverse, Include=(100 to 999), Right, Noupdate, Verify;
{Esta primera zona de datos mostrará en la parte inferior de la pantalla el mensaje “ Introduzca el número de empleado“ aparecerá en vídeo inverso, solo admitirá valores desde el 100 al 999, estos , valores quedarán lineados por la derecha, no podrán ser modificados y será necesario introducirlos dos veces para comprobar su validez. Esta línea no será visible porque está escrita entre llaves.}

f001=temple.numde, autonext, Comments="Introduzca el número de departamento del empleado", Reverse, Include=(100 to 999), Required;
{Esta segunda zona de datos mostrará en la parte inferior de la pantalla el mensaje “ Introduzca el número de departamento del empleado“ aparecerá en vídeo inverso, solo admitirá valores desde el , 100 al 999, y será necesario introducir algún valor para poder dar de alta la fila.}

f002=temple.extel, Comments="Introduzca la extensión del empleado", Reverse, autonext, Picture="11####";
{Esta tercera zona de datos mostrará en la parte inferior de la pantalla el mensaje “ Introduzca la extensión del empleado“ aparecerá en vídeo inverso, enviará el cursor al campo siguiente , automáticamente cuando esté lleno el campo actual y exigirá como valor “ seguido de cuatro 11” dígitos.}

f003=temple.fecna, autonext, Comments="Introduzca la fecha de nacimiento del empleado", Reverse, Include=("01/01/40"to"01/01/98");
{Esta cuarta zona de datos enviará el cursor al campo siguiente automáticamente cuando esté lleno el campo actual, mostrará en la parte inferior de la pantalla el mensaje “ Introduzca la fecha de nacimiento del empleado“ aparecerá en vídeo inverso y solo admitirá valores desde el 1/1/1940 , hasta el 1/1/1998.}

f004=temple.fecin, autonext, Comments="Introduzca la fecha de entrada del empleado", Reverse;
{Esta quinta zona de datos enviará el cursor al campo siguiente automáticamente cuando esté lleno el campo actual, mostrará en la parte inferior de la pantalla el mensaje “ Introduzca la fecha de entrada del empleado“ y aparecerá en vídeo inverso.}

f005=temple.salar, autonext, Comments="Introduzca el salario del empleado", Reverse, Upshift;
{Esta sexta zona de datos enviará el cursor al campo siguiente automáticamente cuando esté lleno el campo actual, mostrará en la parte inferior de la pantalla el Introduzca el salario del empleado“ , aparecerá en vídeo inverso y guardará todas las letras como mayúsculas.}

f006=temple.comis, autonext, Comments="Introduzca la comisión del empleado", Reverse, Right;
{Esta séptima zona de datos enviará el cursor al campo siguiente automáticamente cuando esté lleno el campo actual, mostrará en la parte inferior de la pantalla el Introduzca la comisión del empleado“ aparecerá en vídeo inverso y alineará a la derecha los datos introducidos.} ,

f007=temple.numhi, autonext, Comments="Introduzca el número de hijos del empleado",
Manual de Informix-SQL Pág. 46 http://www.serem.com

SEREM FORMACIÓN Reverse, Right, Zerofill;

Cliente: LUCENT TECHNOLOGIES

{Esta octava zona de datos enviará el cursor al campo siguiente automáticamente cuando esté lleno el campo actual, mostrará en la parte inferior de la pantalla el Introduzca el número de hijos del empleado“ aparecerá en vídeo inverso, alineará los caracteres introducidos a la derecha y rellenará , el resto de posiciones con ceros.}

f008=temple.nomem, Comments="Introduzca el nombre de empleado", reverse, Upshift, Noentry;
{Esta décima zona de datos mostrará en la parte inferior de la pantalla el Introduzca el nombre del empleado“ aparecerá en vídeo inverso, guardará todas las letras como mayúsculas y no permitirá , añadir datos nuevos.}

end En el ejemplo superior, los identificadores de sección están escritos en negrilla y los comentarios a las diferentes líneas, en cursiva. En el VI, las líneas correspondientes a definiciones de etiquetas no pueden estar divididas. Aquí aparecen así por motivos de longitud.

Creación de Formatos Multitabla
Hasta el momento, se ha visto como crear un formulario para acceder a datos procedentes de una sola tabla. La base del modelo relacional consiste en tener la información distribuida en una serie de tablas de forma que la redundancia de datos sea la menor posible, de tal manera que el trabajo mas frecuente consistirá en utilizar varias tablas, tanto a la hora de obtener información, como a la hora de introducirla. Es posible crear un formulario que afecte a varias tablas. El procedimiento es similar al caso estudiado anteriormente, pero es necesario establecer una serie de especificaciones adicionales para que permanezca la consistencia de los datos. Según lo dicho anteriormente, para crear un formulario que afecte a una serie de tablas, una vez seleccionada la base de datos, el procedimiento parte del menú Form de Informix-SQL y elegir la opción Generate:
FORM: Run Modify Generate a default form. Generate New Compile Drop Exit

Igual que cuando se trataba de una sola tabla, Informix-SQL preguntará por el nombre que se dese aplicar al formulario:
GENERATE FORM >> Enter the name you want to assign to the form, then press Enter. -----Page 1 of 1-----------------------------------------MANUAL---------------------Press F1 for Help---------

A continuación, preguntará sobre qué tabla se desea construir el formulario:
CHOOSE TABLE >> Choose the table to be used in the default form. -----Page 1 of 1-----------------------------------------MANUAL---------------------Press F1 for Help---------

Una vez elegida la tabla, aparece el siguiente menú, en el cual comienzan las diferencias respecto al caso anterior. En lugar de seleccionar Table-SelectionComplete, hay que seleccionar la opción Select-more-Tables.:

Manual de Informix-SQL

Pág. 47

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

GENERATE FORM: Table-Selection-Complete Select-more-Tables Exit Select another table to include in the default form. -----Page 1 of 1-----------------------------------------MANUAL---------------------Press F1 for Help----------

En este momento se seleccionará la segunda tabla, y se repetirá el proceso tantas veces como tablas se deseen añadir. Un formulario puede afectar a un máximo de diez tablas. Cuando ya no se deseen añadir mas tablas, la última opción será elegir Table-Selection-complete, con lo que informix-SQL devolverá al usuario al menú principal de Formularios. En el ejemplo se ha elegido la tabla tdpto en primer lugar y la tabla temple en segundo lugar:
FORM: Modify Generate Run Use a form to enter data or query a Database. New Compile Drop Exit

Seleccionando la opción Run, y especificando el nombre del formulario, éste se ejecutará y la pantalla aparecerá como sigue:
PERFORM: Query Next Previous Searches the active database table numde numce direc tidir presu depde nomde [ [ [ [ [ [ [ ] ] ] ] ] ] ] Add Update Remove ** 1: tdpto table ** Table Screen...

En la figura anterior aparece el formulario con el mismo aspecto que tendría en el caso de estar vinculado a una única tabla, sin embargo ahora el usuario puede pasar a trabajar con la segunda tabla vinculada al formulario utilizando la opción Table del menú:
PERFORM: Query Next Selects the current table Previous Add Update Remove ** 1: temple table ** Table Screen...

Al elegir esta opción, el mensaje de la segunda línea de la fila de menús cambia, y en pantalla aparecen los campos de la segunda tabla:

Manual de Informix-SQL

Pág. 48

http://www.serem.com

SEREM FORMACIÓN
PERFORM: Query Next Previous Searches the active database table numem numde extel fecna fecin salar comis numhi nomem [ [ [ [ [ [ [ [ [ ] ] ] ] ] ] ] ]

Cliente: LUCENT TECHNOLOGIES
Add Update Remove ** 2: temple table ** Table Screen...

]

Si desde el menú principal de Formularios, se selecciona la opción Modify, se podrá acceder al código generado automáticamente para este formulario. Una posibilidad es eliminar la segunda screen (En negrita y cursiva en el listado). Realizando este cambio, ambas tablas aparecerán simultáneamente en la misma pantalla, y la opción Table se limitará a activar una u otra. database EJEMPLO1 screen { numde numce direc tidir presu depde nomde } screen { numem numde extel fecna fecin salar comis numhi nomem } end

[f000 [f001 [f002 [a] [f003 [f004 [f005

] ] ] ] ] ]

[f006 ] [f007 ] [f008 ] [f009 ] [f010 ] [f011 ] [f012 ] [f013 ] [f014

]

Manual de Informix-SQL

Pág. 49

http://www.serem.com

SEREM FORMACIÓN tables tdepto temple attributes f000 = tdepto.numde; f001 = tdepto.numce; f002 = tdepto.direc; a = tdepto.tidir; f003 = tdepto.presu; f004 = tdepto.depde; f005 = tdepto.nomde; f006 = temple.numem; f007 = temple.numde; f008 = temple.extel; f009 = temple.fecna; f010 = temple.fecin; f011 = temple.salar; f012 = temple.comis; f013 = temple.numhi; f014 = temple.nomem; end

Cliente: LUCENT TECHNOLOGIES

Con esta simple modificación, después de compilar, salvar y ejecutar el formulario, la pantalla aparecerá ahora como sigue:

Manual de Informix-SQL

Pág. 50

http://www.serem.com

SEREM FORMACIÓN
PERFORM: Query Next Previous Searches the active database table numde numce direc tidir presu depde nomde numem numde extel fecna fecin salar comis numhi nomem [ [ [ [ [ [ [ ] ] ] ] ] ] ]

Cliente: LUCENT TECHNOLOGIES
Add Update Remove ** 2: temple table ** Table Screen...

Como se puede apreciar, solo están activos los campos correspondientes a la primera tabla. (Son los que aparecen con corchetes). Al elegir la opción Table, la situación se invierte, y solo aparecen activos los campos correspondientes a la segunda tabla (figura siguiente). Observando esta pantalla, el usuario comprobará que el campo común a esas dos tablas (numde, Número de departamento), aparece dos veces, una por cada tabla. Es te campo ha de presentar el mismo valor en las dos tablas ya que será el que permita enlazarlas. Un cambio sencillo en el código evitará esta duplicación, y permitirá posteriormente gestionar los datos de forma eficiente. Es suficiente con asignar la misma etiqueta a los dos campos numde de las dos tablas, además será necesario eliminar la etiqueta sobrante, ya que dos campos diferentes van a utilizar la misma etiqueta. Asimismo será necesario eliminar una de las dos referencias al campo en el formulario para que éste solamente aparezca una vez. Este enlace recibe el nombre de Enlace Simple. El código del formulario generado después de estas modificaciones es el siguiente: database EJEMPLO1 screen { numde numce direc tidir presu

[f000 [f001 [f002 [a] [f003

] ] ] ]

Manual de Informix-SQL

Pág. 51

http://www.serem.com

SEREM FORMACIÓN depde nomde numem extel fecna fecin salar comis numhi nomem } end tables tdepto temple attributes f000 = tdepto.numde=temple.numde; f001 = tdepto.numce; f002 = tdepto.direc; a = tdepto.tidir; f003 = tdepto.presu; f004 = tdepto.depde; f005 = tdepto.nomde; f006 = temple.numem; f008 = temple.extel; f009 = temple.fecna; f010 = temple.fecin; f011 = temple.salar; f012 = temple.comis; f013 = temple.numhi; f014 = temple.nomem; end

Cliente: LUCENT TECHNOLOGIES [f004 ] [f005 ] [f006 ] [f008 ] [f009 ] [f010 ] [f011 ] [f012 ] [f013 ] [f014

]

Como se puede comprobar, la etiqueta [f007] ha desaparecido, y ahora la etiqueta f000 identifica tanto al campo numde de la primera tabla como al campo numde de la segunda tabla. Después de compilar, guardar y ejecutar, la pantalla aparece como sigue:

Manual de Informix-SQL

Pág. 52

http://www.serem.com

SEREM FORMACIÓN
PERFORM: Query Next Previous Searches the active database table numde numce direc tidir presu depde nomde numem extel fecna fecin salar comis numhi nomem [ [ [ [ [ [ [ ] ] ] ] ] ] ]

Cliente: LUCENT TECHNOLOGIES
Add Update Remove ** 2: temple table ** Table Screen...

En esta pantalla, si se ejecuta la opción Table, se activará la segunda tabla, el campo numde permanecerá activado, se desactivarán todos los demás campos de la primera tabla, y se activarán todos los campos de la segunda.
PERFORM: Query Next Previous Searches the active database table numde numce direc tidir presu depde nomde numem extel fecna fecin salar comis numhi nomem [ ] Add Update Remove Table Screen...

** 2: temple table **

[ [ [ [ [ [ [ [

] ] ] ] ] ] ] ]

Con los procedimientos descritos hasta aquí, se ha conseguido que dos tablas aparezcan en el mismo formulario, pero al realizar una consulta, se observa que para cada número de departamento solamente aparece un empleado. En realidad, lo

Manual de Informix-SQL

Pág. 53

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

único que se ha descrito hasta ahora es el formato del formulario, pero en ningún caso se le ha dicho a Informix-SQL cómo tiene que manejar los datos el formulario creado en base a esas dos tablas. Ambas están relacionadas a través del campo numde común a las dos. Este campo es clave principal en la primera tabla (índice único sin nulos). La operación que se ha de realizar en primer lugar es definir cual es la tabla principal y cual es la asociada. Esto se realiza desde una nueva sección del formulario que lleva el nombre de Instructions. La sección Instructions va al final de las secciones existentes, y ha de presentar una instrucción que defina cual es la tabla principal y cual es la asociada. La sección completa en formato general será como la que sigue: instructions tabla1 MASTER OF tabla2 end y particularizada para el ejemplo: instructions tdepto MASTER OF temple end Una vez definidos los status de tabla master o principal y de tabla Detail o asociada, se compila el formulario, se almacena y se ejecuta. El resultado en pantalla es aparentemente el mismo, pero con la particularidad de que si se activa la segunda tabla el campo numde permanece activado, se desactiva el resto de campos de la primera tabla y se activan todos los campos de la segunda. En esta situación, si se realiza una consulta por número de departamento, (numde), para cada número de departamento especificado aparecen todos los empleados que pertenecen a ese departamento. Para pasar de un empleado a otro se utiliza la opción next o previous. Si la primera tabla está activa, la opción detail activará la segunda tabla, y estando activada la segunda tabla, la opción master activará la primera. Otro problema aparte consiste en definir cómo han de funcionar los datos por lo que se refiere a las dependencias funcionales establecidas entre ellos. Esta cuestión toma especial relevancia a la hora de añadir datos. Por principio, no se debería poder añadir ningún nuevo empleado sin que antes existiese el departamento al que pertenece, o dicho de otro modo, no debe ser posible añadir un registro a la segunda tabla si antes no existe en la primera el valor del campo a través del cual se establece la relación. En el estado actual de la base de datos de ejemplo, es posible añadir un empleado que pertenezca al departamento 5000, cuando en realidad éste no existe. Estos conceptos están íntimamente ligados a la idea de integridad referencial a la que se aludió en el capítulo correspondiente al diseño de bases de datos, y que especificaba que, tanto los datos como su funcionamiento en el seno de la base de datos diseñada, deben ser consistentes con la realidad. Ciertamente, un empleado no puede pertenecer a un departamento que no existe, igual que un departamento no puede estar situado en un centro de trabajo (edificio físico) que no existe. Para implementar estos funcionamientos en un formulario de Informix-SQL, es necesario añadir una sentencia que realice una verificación de datos antes de que estos puedan ser dados de alta en la base de datos. Realmente, no se puede añadir

Manual de Informix-SQL

Pág. 54

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

un registro de estas características desde el formulario multitabla creado, ya que al haber un solo campo común activo esta operación no puede realizarse, sin embargo, cabe la posibilidad de utilizar un formulario que solo afectase a la tabla secundaria. En este formulario, el usuario podría añadir un registro con un valor cualquiera en el campo común. Para evitar esta situación, y mantener la integridad de los datos, es necesario implementar algún mecanismo de verificación. Este mecanismo lleva el nombre de enlace de Verificación. Por tanto, la única operación que tendrá que realizar el usuario es añadir la siguiente línea en el código del formulario: Identificador de Campo= columnatabla1=*columnatabla2 En la base de datos de ejemplo: [f000]=depto.numde=*temple.numde El asterisco implica que cada vez que se desee añadir nuevos datos en la columna de la tabla 2, se realizará una verificación de forma que ese nuevo valor se comparará con todos (*) los valores de la columna correspondiente a la tabla 1 y si no cumple la condición de ser igual a alguno de ellos, entonces Informix-SQL emitirá un mensaje de error y no permitirá la adición de ese nuevo registro. Después de salir, compilar , guardar y ejecutar, se comprobará que no es posible añadir o modificar un registro de la tabla asociada (detail) si el valor introducido para el campo común no existe en la tabla principal. Un tercer tipo de enlace es el llamado Enlace de referencia. Éste permite mostrar los datos que tengan relación con aquellos que acaban de introducirse en el campo. La sintaxis correspondiente es: Identificador de campo=columna de base, LOOKUP Campo de Referencia=Columna de Referencia JOINING Columna de Enlace

Formularios generados desde el Sistema Operativo
Informix proporciona al usuario la oportunidad de generar formularios de pantalla trabajando directamente desde el sistema operativo. Para realizar esta operación, será necesario teclear el código correspondiente al formulario desde el editor de texto que se utilice. Una vez tecleado este código, será necesario almacenar el archivo con un nombre cualquiera y extensión .PER. A continuación, y siempre desde el indicador del Sistema Operativo, se ha de teclear la orden: sformbld nombrearchivo.PER Este comando realiza la llamada al módulo de compilación de formularios, que genera un nuevo fichero con el mismo nombre y extensión .FRM. Por último, para ejecutar el formulario creado, se utiliza el comando:

Manual de Informix-SQL

Pág. 55

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES sperform nombrearchivo.FRM

Esta orden ejcuta el formulario como si se hubiese realizado dentro del entorno de Informix-SQL. Cuando todo este proceso se realiza desde el sistema de menús de Informix, el procedimiento interno que se sigue es exactamente el mismo, pero en este caso resulta absolutamente transparente para el usuario, ya que es el propio Informix-SQL el encargado de llamar a estos módulos.

Informes Personalizados
Igual que en el caso de los formatos de pantalla, Informix posibilita la creación de informes por defecto utilizando solamente las opciones correspondientes del sistema de menús que se vieron anteriormente en este manual, pero no solo es posible la creación de estos informes, sino que además se pueden generar informes tan complejos como se desee, bien creándolos desde el principio utilizando un editor, o bien creando el informe desde el sistema de menús, y luego modificándolo a través de la utilización de ese mismo editor.

Creación y modificación de un Informe
A partir del menú principal, y utilizando en primer lugar la opción Report,
INFORMIX-SQL: Form Report Query-Language Run, Modify, Create, or Drop a Report. User-Menu Database Table Exit

A continuación la opción Generate,
REPORT: Run Modify Generate a deafult Report Generate New Compile Drop Exit

asignando un nombre:
GENERATE REPORT >> Enter the name you want to assign to the report, then press Enter

especificando cual es la tabla sobre la que se desea crear el informe:
CHOOSE TABLE >> Choose the table to be used in the default report --------------------MANUAL1---------------------------------Press F1 for Help-------------------------------------temple tcentr tdepto

y, por último, utilizando la opción Run:

Manual de Informix-SQL

Pág. 56

http://www.serem.com

SEREM FORMACIÓN
REPORT: Run Run a Report Modify Generate New

Cliente: LUCENT TECHNOLOGIES
Compile Drop Exit

y especificando cual es el informe que se desea ejecutar, este informe aparecerá por pantalla sin necesidad de mas operaciones. Existe la posibilidad de modificar este informe utilizando la opción Modify del menú de Informes:
REPORT: Run Modify Modify a Report Specification. Generate New Compile Drop Exit

Al elegir esta opción, Informix-SQL preguntará cual es el nombre del informe que se desea modificar:
MODIFY REPORT >> Choose a report with Arrow Keys, or Enter a name, then press Enter. --------------------MANUAL1------------------------------------Press F1 for Help----------------------------------info1 info2 info3

Una vez seleccionado el informe, se lanza automáticamente el editor (VI), y el código que aparece en pantalla es el siguiente: database MANUAL end select numem, numde extel, fecna, fecin, salar, comis, numhi, nomem from temple end format every row end

Secciones de un Informe ACE
Igual que en el caso de los formularios, aparecen una serie de secciones definidas por la palabra end. Estas secciones son las correspondientes a database, select y format y son imprescindibles para el funcionamiento del informe.

Manual de Informix-SQL

Pág. 57

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Además de estas secciones imprescindibles, en un informe ACE pueden incluirse una serie de secciones opcionales que modificarán tanto el aspecto del informe, como su funcionamiento. Estas secciones son las siguientes: Sección Define: Input: Output: Utilización Define las variables locales que se utilizarán en el informe. Genera mensajes de petición de entrada en informes interactivos. Especifica: Ø Márgenes, pie de página y encabezado. Ø Destino del informe: Pantalla, Impresora o Programa.

Teniendo en cuenta lo expresado anteriormente, el código de un informe podría estar formado por lo siguiente: Sumario de la sintaxis de ACE Sección Database Sección Define DATABASE [nombre de la base de datos] END DEFINE Variable Param[Integer] END

[nombre variable tipodato] [nombre parámetro tipo parámetro].

Sección Input

INPUT Prompt For [nombre variable] END OUTPUT Page Length [Integer] Right Margin [Integer] Left Margin [Integer] Top Margin [Integer] Bottom Margin [Integer] Report to [Nombre de Fichero] | Report to Pipe [Programa] | Report to Printer END

Using

[Cadena]

Sección Output

Sección Select

SELECT [sentencias SQL] from [nombre de la tabla] END

Manual de Informix-SQL

Pág. 58

http://www.serem.com

SEREM FORMACIÓN Sección Format FORMAT First Page Header Page Header Page Trailer On Every Row Before Group Of After Group Of On Last Row END

Cliente: LUCENT TECHNOLOGIES

A continuación se estudiarán algunas de estas secciones detalladamente:

Sección Define
DEFINE Variable

Param[Integer]

[nombre variable tipodato]. Las variables son utilizadas para permitir la entrada interactiva de ciertos valores durante la ejecución del informe. Nombre es el nombre de la variable y Tipodato es el tipo de datos que va a almacenar. No es válida con los datos de tipo Serial. [nombre parámetro tipo parámetro]. Permite al usuario definir algunos parámetros cuando se lanza la ejecución desde el sistema operativo, y no desde la opción Run. El entero representa el número de parámetro, nombre es el nombre utilizado en el informe y tipo representa cualquier tipo de datos menos los datos de tipo serial.

END

Sección Input
INPUT Prompt For [nombre variable]

Using

[Cadena]. Esta sección está estrechamente ligada a la sección DEFINE ya que permite introducir los valores de las variables. Nombre variable es el nombre asignado a la variable en la sección DEFINE. Cadena es el texto a través del cual Informix-SQL preguntará al usuario.

END

Sección Output
OUTPUT Page Length [Integer]: Right Margin [Integer]:
Manual de Informix-SQL

Fija el número de líneas por página. El valor por defecto es 66. Fija el margen derecho (ancho). El valor por
Pág. 59 http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES defecto es 5. Fija el margen izquierdo. El valor por defecto es 5. Fija el margen superior. El valor por defecto es 3 líneas. Fija el margen superior. El valor por defecto es 5 líneas. Envía el contenido del informe a un fichero. Envía el contenido del informe a un programa. Envía el contenido del informe a impresora.

Left Margin [Integer]: Top Margin [Integer]: Bottom Margin [Integer]: Report to [Nombre de Fichero]: | Report to Pipe [Programa]: | Report to Printer: END

Sección Format
FORMAT (Primer tipo) Every Row:

Implica que cada línea sea escrita con un formato por defecto. Útil para crear listados rápidamente.

END FORMAT (Segundo Tipo) First Page Header [Acción]:

Page Trailer [Acción]: Page Header [Acción]: On Every Row [Acción]:

On Last Row [Acción]:

Before Group Of [Acción]:

After Group Of [Acción]:

Especifica cómo será el encabezado de la primera página del informe. Acción es una expresión de ACE que ejecuta una operación definida. Las acciones que soporta ACE se estudiarán a continuación. Especifica cómo será el pie de cada página del informe. Especifica cómo será el encabezado de cada página del informe. Especifica cómo será cada línea del informe. Puede utilizarse Using para especificar los formatos de cada tipo de datos. Especifica las acciones que serán emprendidas después de la última línea seleccionada. Suelen ser cálculos. Cuando en la sección SELECT existe una cláusula GROUP BY, se puede especificar un Encabezado para cada grupo de líneas. Cuando en la sección SELECT existe una cláusula GROUP BY, se puede especificar un Pie para cada grupo de líneas.

END

Acciones Ejecutables en un Informe

Manual de Informix-SQL

Pág. 60

http://www.serem.com

SEREM FORMACIÓN Acciones de Salida PRINT:

Cliente: LUCENT TECHNOLOGIES

SKIP:

NEDD: PAUSE:

PRINT FILE:

Sintaxis: PRINT Column nº, Expresion, nº Spaces, ASCII nº, USING Formato, Clipped. Donde: Column nº: Especifica en que columna se presentará. nº Spaces: Añade la salida de n espacios en blanco. ASCII nº: Número ASCII de cualquier carácter de control. Clipped: Elimina los blancos a la derecha en una columna tipo Char. Sintaxis: SKIP nº Lines / SKIP Top of Page. Donde: nº Lines: Especifica que saltará el número de líneas expresado. Top of Page: Saltará a la primera línea de la página siguiente. No se puede utilizar en una cabecera o pie de página. Sintaxis: NEDD nº Lines. Fuerza que un determinado número de líneas estén juntas en la misma página. Sintaxis: PAUSE “ Mensaje” Interrumpe la salida del . informe y muestra mensaje hasta que se pulse una tecla. Sintaxis: PRINT FILE “ NombreArchivo” Envía la salida . a un fichero cuyo nombre es NombreArchivo.

Acciones / Expresiones de Cálculo LET: Sintaxis: LET NombreVariable = Expresión. Permite asignar un valor a una Variable. OPERADORES: +, - , *, /, **. ARITMÉTICOS TOTAL OF: Sintaxis: TOTAL OF Expresión. Calcula la suma de una Expresión. MIN OF: Sintaxis: MIN OF Expresión. Calcula el valor mínimo de una Expresión. MAX OF: Sintaxis: MAX OF Expresión. Calcula el valor máximo de una Expresión. COUNT: Devuelve el número de líneas seleccionadas por la cláusula WHERE. AVG o AVERAGE: Sintaxis:AVG Expresión . Calcula la media de una Expresión. PERCENT: Sintaxis: Expresión DATE(): Sintaxis: DATE(Expresión). Convierte la expresión en un valor de tipo DATE. DAY(): Sintaxis: DAY(Expresión). Devuelve el número de día del mes, de la fecha dada como argumento. MDAY(): Sintaxis: MDAY(mm, dd, yyyy).Devuelve un valor de tipo DATE de la fecha dada como argumento. MONTH(): Sintaxis: MONTH(Expresión). Devuelve el número del mes de la fecha dada como argumento.

Manual de Informix-SQL

Pág. 61

http://www.serem.com

SEREM FORMACIÓN YEAR(): WEEKDAY():

Cliente: LUCENT TECHNOLOGIES Sintaxis: YEAR(Expresión). Devuelve el número del año de la fecha dada como argumento. Sintaxis: WEEKDAY(Expresión). Devuelve el número del ida de la semana de la fecha dada como argumento. (0: Domingo, 1: Lunes, 2: Martes… ) Contiene el número de la página actual. Contiene el número de la línea actual de la página. Contiene la fecha actual bajo la forma de cadena de caracteres en formato americano. Contiene la hora actual Contiene la fecha actual en misma forma que el sistema Operativo.

PAGENO: LINENO: DATE: TIME: TODAY:

Estructuras de Control Estructura Secuencial:

Alternativa (If-Then-Else):

Bucle WHILE:

Bucle FOR:

Las acciones son ejecutadas en la misma forma en que son encontradas en el código. A veces es necesario utilizar BEGIN y END. Sintaxis: IF Condición THEN Acción1 ELSE Acción2. Si se da la condición, se realizará la Acción1, en otro caso, se realizará la Acción2. Sintaxis: WHILE Condición DO Acción. Se realizará la acción todo el tiempo durante el que se cumpla Condición. Sintaxis: FOR Variable = ValorInicial TO Variable = ValorFinal STEP paso DO Acción. Se realiza la Acción mientras la variable va tomando valores desde ValorInicial hasta ValorFinal en incrementos STEP.

Una vez que el usuario ha terminado de redactar el código necesario para que el informe realice las acciones deseadas, Informix-SQL presenta el menú de Modificación de Informes:
MODIFYREPORT: Compile Save-and-Exit Compile the report specification. Discard-and-Exit

La primera acción que se debe realizar es compilar el informe, es decir, traducir el texto a algo que Informix pueda entender. Para ello se elegirá la opción Compile. Si no hay errores, Informix-SQL volverá a dejar al usuario en el mismo menú y aparecerá un mensaje en la parte inferior de la pantalla indicando que no ha habido errores de compilación. Ahora será necesario guardar los cambios realizados. Para ello se elegirá la opción Save-and-Exit. Si no se deseara guardar los cambios, la opción a elegir sería Discard-and-Exit. Una vez salvado el informe, Informix-SQL presentará el menú principal de Informes para poder ejecutar la opción Run, y ver así los resultados producidos por el informe creado.

Manual de Informix-SQL

Pág. 62

http://www.serem.com

SEREM FORMACIÓN
REPORT: Run Run a Report Modify Generate New

Cliente: LUCENT TECHNOLOGIES
Compile Drop Exit

Ejemplos de Listados de Informes

Informes Creados desde el Sistema Operativo
Es posible la creación de informes desde el Sistema Operativo, utilizando directamente un editor para crear el informe desde el primer momento, y no utilizar así Informix-SQL para generar el informe base sobre el que luego se trabajará. Para llevar a cabo este proceso, se generará el código del informe desde el editor y se guardará con el nombre que se desee y la extensión .ACE. Una vez generado el fichero, desde el prompt del Sistema Operativo se tecleará la siguiente orden: saceprep nombrearchivo.ACE Informix-SQL emitirá un mensaje en el que informa al usuario de que el informe ha sido compilado con éxito y se ha generado un nuevo archivo con el mismo nombre que el anterior, pero con extensión .ARC. El último paso que queda para la utilización de este informe es ejecutarlo. Para ello, y siempre desde el indicador del Sistema Operativo, hay que teclear la orden: sacego nombrearchivo.ARC Informix llevará a cabo la ejecución del informe en función de cómo éste haya sido diseñado. Cuando el usuario compila y ejecuta un informe desde el Sistema de menús de Informix-SQL, el procedimiento que se sigue internamente es exactamente el mismo, pero en este caso se lleva a cabo de forma absolutamente transparente para el usuario, ya que es el propio Informix el encargado de llamar a los módulos saceprep y sacego.

Menús Personalizados
A veces resulta útil crear un entorno en el que los usuarios finales solo tengan que elegir una opción entre unas pocas que conforman un menú. En este sentido, Informix-SQL presenta una utilidad de generación de menús que facilita al programador esta tarea, de tal forma que se puede crear una pequeña aplicación basada en una serie de opciones sencillas, que a su vez lleven a otra serie de subopciones, cada una de las cuales con una operatividad concreta. Lógicamente, para llevar a cabo este proceso, es necesario especificar cual es el texto de cada una de las opciones, y qué operación se ha de realizar al elegirla. La estructura del sistema de menús que se puede generar es típicamente jerárquica. Para cada una de las opciones del menú principal, se pueden crear una serie de subopciones y así sucesivamente. A estas opciones se les puede asignar la ejecución de un programa, un formulario, un informe, una consulta SQL, un fichero script, o una subopción.

Manual de Informix-SQL

Pág. 63

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Para llevar a cabo el proceso de generación de un sistema de menús, se elegirá la opción User-Menú del menú principal de Informix-SQL:
INFORMIX-SQL: Form Report Query-Language User-Menu Database Table Exit Run or Modify a Custom-built Menu -------------------------------------------------------------------------Press F1 for Help--------------------------------

Al seleccionar la opción User-Menú, el nuevo menú que aparece gestiona la creación y posterior funcionamiento del sistema de menús:
USER-MENU: Exit Run Modify Run the User Menu for the current Database -------------------------------------------------------------------------Press F1 for Help--------------------------------

La opción Modify permitirá crear un nuevo menú:
USER-MENU: Run Modify Exit Modify the User-menu for the Current Database -------------------------------------------------------------------------Press F1 for Help--------------------------------

Y presentará la pantalla de creación o modificación de menús:
PERFORM: Query Next Previous Add Update Remove Table Screen... Searches the active database table ** 1: temple table ** ========================MENU ENTRY FORM===================== Menú Name [ ] Menú Title [ ] ----------------------------------------------SELECTION SECTION----------------------------------Selection number Selection Type Selection Text: Selection Action:

Manual de Informix-SQL

Pág. 64

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Es te menú tiene un gran parecido con el menú principal de PERFORM. Para comenzar a crear el menú, es necesario pulsar la opción Add. El cursor irá recorriendo cada una de las opciones de la parte inferior de la pantalla:
ESCAPE adds new data Interrupt discards it Arrows keys move cursor adds new data to the active database table ** 1: sysmenú table ** ========================MENU ENTRY FORM===================== Menú Name Es el nombre del menú. Debe llamarse main. Menú Title Un título cualquiera que desee agregarse al menú. Aparecerá en la parte superior

Una vez especificado el nombre del menú y el texto de la línea de título, para añadir estos valores se pulsará Escape. En la segunda línea del sistema de menús, aparece “ **1:sysmenu table**” En . realidad lo que se está generando, son dos tablas, una con los nombres de los menús y otra con las opciones de cada uno de estos menús. La primera se llama “ sysmenu” y la segunda “ , sysmenuitem” Para pasar a generar las opciones de este . menú main, se utilizará la opción Table del menú principal de Informix-SQL. Al pulsar esta opción, se activará la parte inferior de la pantalla (SELECTION SECTION). En esta zona se identificarán cada una de las opciones del menú de usuario creado:
PERFORM: Query Next Previous Add Update Remove Table Screen... Selects the current table ** 2: sysmenuitems table ** ========================MENU ENTRY FORM===================== Menú Name [main ] Menú Title [Primer sistema de menús ] ----------------------------------------------SELECTION SECTION----------------------------------Selection number Selection Type Selection Text: Selection Action:

Una vez pulsada la opción Table, se pulsará la opción Add. Esta opción colocará el cursor en el campo Menú Name. El usuario se deberá desplazar hasta la zona inferior de la pantalla para rellenar los campos con sus valores correspondientes:

Manual de Informix-SQL

Pág. 65

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

PERFORM: Query Next Previous Update Remove Table Screen... Add Adds a row to the active database table ** 2: sysmenuitems table ** ========================MENU ENTRY FORM===================== Menú Name [main ] Menú Title Primer sistema de menús ----------------------------------------------SELECTION SECTION----------------------------------Selection number Número de la Selection Type Tipo de operación que se selección. El desee ejecutar. M:Menú, P: primero será “ 1” Programa, Q: Consulta SQL, R: Informe, F:Formulario, S:Fichero Script. Selection Text: Texto que presentará la opción. Selection Action:

Nombre del menú, Línea de comandos, Nombre del Query Script, Nombre del Informe o Nombre del Formulario.

Una vez rellenos todos los campos de esta pantalla, para salir se pulsará Escape. Para añadir las especificaciones de la segunda opción, se pulsara otra vez la opción Add y se repetirá todo el proceso. Al terminar, se sale del menú con la opción Exit. Para ejecutar este menú de usuario, se elegirá la opción Run en el nuevo menú presentado en pantalla. En el ejemplo inferior, pantalla de especificaciones para la primera opción:
PERFORM: Query Next Previous Update Remove Table Screen... Add Adds a row to the active database table ** 2: sysmenuitems table ** ========================MENU ENTRY FORM===================== Menú Name [main ] Menú Title Primer sistema de menús ----------------------------------------------SELECTION SECTION----------------------------------Selection number 1 Selection Type F Selection Text: Primera Opción Selection Action:

NombreForm

A continuación, las especificaciones para la segunda opción:

Manual de Informix-SQL

Pág. 66

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

PERFORM: Query Next Previous Update Remove Table Screen... Add Adds a row to the active database table ** 2: sysmenuitems table ** ========================MENU ENTRY FORM===================== Menú Name [main ] Menú Title Primer sistema de menús ----------------------------------------------SELECTION SECTION----------------------------------Selection number 2 Selection Type R Selection Text: Segunda Opción Selection Action:

NombreInfor

Y la presentación en pantalla será la siguiente al ejecutar Run: Primer Sistema de Menús 1.- Primera Opción 2.- Segunda Opción

Use space bar, arrow keys, or type number to make selection. Enter ‘ to return to previous menu o Exit. e’ Enter carriage Return to execute selection: 1

Variables de Entorno
Se pueden especificar variables de entorno en Informix-SQL. Si no se establecen valores personalizados, estas variables asumen su valor por defecto.

Manual de Informix-SQL

Pág. 67

http://www.serem.com

SEREM FORMACIÓN Variable INFORMIXDIR PATH

Cliente: LUCENT TECHNOLOGIES Descripción Localización de los programas de Informix-SQL. Especifica al shell la localización de los comandos Informix situados en el subdirectorio BIN. Informix suministra un archivo llamado TERMCAP con información sobre la mayoría de los terminales. Especifica el editor. DBEDIT=nombre editor Especifica la ruta de búsqueda para localizar una base de datos. Especifica el comando de Impresión. DBPRINT=” device” Especifica donde se han de almacenar los ficheros temporales. Especifica el formato para los datos de tipo DATE. DBDATE=formato formato=combinación de elementos d (día), m (mes), y (año). El año puede ser expresado por dos o cuatro cifras. El separador puede ser un carácter especial cualquiera. Ejemplo: DBDATE=dmy2/ Especifica el formato de los datos de tipo MONEY. DBMONEY=separador unidad / unidad separador. Ejemplo: DBMONEY= , Pts Nombre del menú de usuario llamado por informix-SQL. Informix utiliza el valor por defecto para activar el menú Main. Especifica el delimitador para los comandos LOAD y UNLOAD. Valor por defecto Es necesario establecerlo. Es necesario establecerlo.

TERM y TERMCAP

Es necesario establecerlo.

DBEDIT DBPATH

Vi Directorio en curso.

DBPRINT

Lp

DBTEMP

/tmp

DBDATE

mdy4/

DBMONEY

$100.00

DBMENU

Main

DBDELIMITER

|

Manual de Informix-SQL

Pág. 68

http://www.serem.com

SEREM FORMACIÓN

Cliente: LUCENT TECHNOLOGIES

Catálogos del SGBD Informix
Los catálogos del sistema son las tablas que definen la base de datos. El SGDB accede automáticamente a las tablas cuando se ejecuta cualquier sentencia SQL. El Administrador de la base de datos puede modificar directamente el contenido de los catálogos. Nombre de Fichero Systables Contenido Información sobre todas las tablas de la base de datos. Es la mas importante del catálogo. Contiene tipos, identificadores y caminos de acceso. Contiene información sobre todas las columnas de la base de datos. Nombres, tipos, longitudes y su posición dentro de la tabla. Contiene información sobre todos los índices de la base de datos. Para cada índice, contiene el nombre, identificador de la tabla, tipo de índice y una lista que puede contener hasta 8 identificadores de columnas que componen el índice. Controla permisos y autorizaciones a nivel de base de datos. Para cada usuario, el nombre, la clave, el nivel de privilegios sobre la base de datos y el tipo de usuario. Controla autorizaciones y permisos para las tablas. Controla autorizaciones y permisos a nivel de columna. Contiene sinónimos para las tablas y las vistas creadas por los usuarios. Controla de qué tablas y vistas depende una vista. Así, si una tabla es suprimida, las vistas a las que está enlazada son suprimidas a su vez. Contiene cualquier vista creada desde una sentencia RDSQL.

Syscolumns

Sysindexes

Sysusers

Systabauth Syscolauth Synonims Sysdepends

Sysviews

Bibliografía
& & & & & & & & Documentación Oficial Informix-SQL. Manual de Formación. Introducción a Informix-SQL. Departamento de Formación. AT&T Microelectrónica España. Enero 1991. Base de Datos Relacionales. E. Rivero Cornelio. Editorial Paraninfo. 1988. El Modelo Relacional de Datos. C. Fernández Baizán. Ediciones Díaz de Santos. 1987. SQL para usuarios y programadores. J. Benavides Abajo. Editorial Paraninfo. 1991. Informix. La base de datos relacional para Unix. A. Abdellatif y A. Zeroual. Ediciones Díaz de Santos. 1992. Introducción a los Sistemas de Bases de Datos. C. J. Date. Editorial Addison-Wesley Iberoamericana. 1986. Using Informix-SQL. Jonathan Leffler. Editorial Addison-Wesley Publishing Company. 1991.

Manual de Informix-SQL

Pág. 69

http://www.serem.com

SEREM FORMACIÓN &

Cliente: LUCENT TECHNOLOGIES

Introducción práctica al diseño de Sistemas de Gestión de Bases de Datos. Gerry M. Litton. Ediciones Anaya Multimedia. 1991.

Manual de Informix-SQL

Pág. 70

http://www.serem.com

Sign up to vote on this title
UsefulNot useful