SEREM FORMACIÓN
Cliente : LUCENT TECHNOLOGIES
Indice INDICE...................................................................................................................................... INDICE...................................................................................................................................... 1 BASES DE DATOS. DATOS. SGDB....................................................................................................... 3 CONCEPTO DE BASE DE DATOS Y MODELO DE DATOS ................................................................ 3 MODELOS DE DATOS ................................................................................................................ 3 Modelo Jerárquico.............................................................................................................. Jerárquico.............................................................................................................. 4 Modelo Red o Distribuido................................................................................................... Distribuido................................................................................................... 4 Modelo Objeto.................................................................................................................... 4 EL MODELO RELACIONAL ......................................................................................................... 4 Relación. Relación. Tupla. Registro. Atributo..................................................................................... Atributo..................................................................................... 4 Base Matemática. Matemática. Dominio Dominio................................................................................................. ................................................................................................. 4 Clave .................................................................................................................................. 4 Componentes Componentes del Modelo Modelo Relacional Relacional .................................................................................. 5 Operadores......................................................................................................................... Operadores......................................................................................................................... 5 Definiciones Definiciones de Integridad.................................................................................................. Integridad.................................................................................................. 6 Reglas de Integridad........................................................................................................... Integridad........................................................................................................... 6 Lenguajes Lenguajes Relacionales ...................................................................................................... 6 DISEÑO DE UNA BASE DE DATOS ............................................................................................... 6 Etapas ................................................................................................................................ 6 Proceso Proceso de Normalización Normalización.. Formas Formas Normales..................................................................... 9 SISTEMAS DE GESTIÓN DE BASES DE DATOS .............................................................................. 9 SISTEMAS DE BASES DE DATOS ............................................................................................... 10
INFORMIX-S INFORMIX-SQL QL .................................................................................................................... 10 GENERALIDADES SOBRE INFORMIX-SQL ................................................................................. 10 Historia Historia ............................................................................................................................ 10 Definición..................................................................................... Definición..................................................................................... .................................... 11 Arquitectura Arquitectura ..................................................................................................................... 11 SISTEMA DE MENÚS ................................................................................................................ 12 Menú Principal:................................................................................................................ Principal:................................................................................................................ 12 Funcionamiento Funcionamiento del del Menú Principal Principal de Informix Informix .............................................................. 12 Utilidad de cada una de las opciones opciones del menú Principal Principal de Informix: Informix: ............................. 12 CREACIÓN DE UNA BASE DE DATOS ......................................................................................... 13 Opción del sistema sistema de menús. Procedimiento.................................................................... Procedimiento.................................................................... 13 CREACIÓN DE TABLAS ............................................................................................................ 14 Opción del sistema sistema de de menús menús ............................................................................................ 15 Reglas para 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 Generación automática de Formatos Formatos de Pantalla. Perform............................................... 20 EJECUCIÓN DE CONSULTAS ..................................................................................................... 24 Tipos de Consultas............................................................................................................ Consultas............................................................................................................ 24 Ejecución consultas consultas QBE desde Informix-SQL.................................................................. Informix-SQL.................................................................. 24 Consultas Consultas de datos que no han de cumplir ninguna condición........................................... 24 Consultas Consultas de datos que han de cumplir cumplir alguna condición condición ................................................. 25 CREACIÓN DE UN INFORME ...................................................................................................... 27 Generación Generación automática automática de Informes Informes.. ACE ........................................................................ 27
RDSQL .................................................................................................................................... 28 Escritura Escritura de Consultas SQL SQL desde Informix-SQL Informix-SQL.............................................................. .............................................................. 28 Lenguaje Lenguaje RDSQL. Consultas Consultas de selección sin condiciones............ condiciones............ .................................... 29
Manual de Informix-SQL
Pág. 1
http://www.serem.com
SEREM FORMACIÓN
Cliente : LUCENT TECHNOLOGIES
Exportar Exportar datos a Impresora o a Fichero ........................................................................... 31 Consultas Consultas con definición de condiciones........................................................................... condiciones........................................................................... 32 Funciones Funciones Agregadas........................................................................................................ Agregadas........................................................................................................ 36 Cláusula Cláusula GROUP GROUP BY........................................................................................................ BY ........................................................................................................ 37 Envío de los resultados resultados de una consulta consulta a una nueva tabla ............................................... 37 Establecimiento Establecimiento de relaciones entre tablas. ...................................................................... 38
FORMATOS FORMATOS PERSONA PERSONALIZAD LIZADOS OS ....................................................................................... 40 Creación Creación de un Formato Personalizad Personalizadoo Monotabla .......................................................... 40 Estructura Estructura de la especificación de formulario................................................................... formulario................................................................... 41 Secciones de la especificación especificación de formulario................................ formulario................................ .................................... 42 Creación Creación de Formatos Formatos Multitabla Multitabla ..................................................................................... 47 Formulario Formularioss generados desde desde el Sistema Operativo Operativo.......................................................... .......................................................... 55
INFORMES INFORMES PERSONALIZADOS......................................................................................... PERSONALIZADOS......................................................................................... 56 Creación Creación y modificación de un Informe Informe ............................................................................ 56 Secciones de un Informe Informe ACE ........................................................................................... 57 Sección Define.................................................................................................................. 59 Sección Input.................................................................................................................... Input .................................................................................................................... 59 Sección Output Output ................................................................................................................. 59 Sección Format................................................................................................................. Format................................................................................................................. 60 Acciones Ejecutables Ejecutables en un Informe.................................................................................. Informe.................................................................................. 60 Ejemplos de Listados Listados de Informes Informes ..................................................................................... 63 Informes Informes Creados desde desde el Sistema Operativo................................................................... Operativo................................................................... 63
MENÚS PERSONALIZAD PERSONALIZADOS................................................................................................ OS................................................................................................ 63 VARIABLES VARIABLES DE ENTORNO................................................................................................. ENTORNO................................................................................................. 67 CATÁLOGOS CATÁLOGOS DEL SGBD INFORMIX................................................................................ INFORMIX................................................................................ 69 BIBLIOGRAFÍA..................................................................................................................... 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 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 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 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 Estructura de Datos :
Cole Colecc cció iónn de obje objetos tos abstr abstrac actos tos forma formado doss por por datos. Operadores entre las Operadores que permiten manipular las estructuras. estructuras : Definiciones de Integridad : Conj Conjunt untoo de de con conce cepto ptoss y regl reglas as que que per permi miten ten 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 modelizar objetos complejos. complejos. El Modelo Relacional
Relación. Tupla. Registro. Atributo Propone datos almacenados en tablas, donde las filas son llamadas registros , tuplas o tuplas o n-tuplas y n-tuplas y las columnas campos o 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 dominio es cualquier conjunto finito o infinito. A cada dominio que participa en una relación se le 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 V 1, V 2, V 3, …V N donde V 1 es el valor del primer dominio, V 2 es el valor del segundo dominio, etc. Estos valores V 1, 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 tabla como sinónimo de relación ; renglón o renglón o registro como registro como sinónimo de tupla y tupla y campo como sinónimo de atributo . (C. J. Date, 1975). Cada atributo está designado por un nombre y nombre y caracterizado por un dominio . Un dominio es dominio es un tipo de datos con nombre (A. Zeroual, 1991). Dominio también 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 Oper Operad ador ores es Definic Definicion iones es de Integ Integri ridad dad Reglas Reglas de Integ Integri ridad dad
Dominios, Relaciones, Atributos, Tuplas Prop Propio ioss del álg álgebr ebraa relac relacio iona nal,l, es dec decir ir,, unión unión,, diferencia, producto cartesiano, proyección y selección. Concepto Concepto de de clave clavess y posib posibili ilidad dad de de valore valoress nulos. nulos. Integr Integrida idadd de claves claves primar primarias ias.. Integ Integrid ridad ad Referencial.
Operadores En lo que se refiere a los operadores, su función aparece reflejada en el esquema siguiente: Unión:
Diferen Diferencia cia:: Produc Producto to Carte Cartesia siano: no: Proyec Proyecció ción: n:
Selecc Selección ión::
Manual de Informix-SQL
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 resu resulta ltado do es es una una rela relació ciónn que que incl incluye uye todas todas las las tupl tuplas as de R que no están en S. El resu resulta ltado do inclu incluye ye todas todas las las tupla tuplass posibl posibles es resu resulta ltado do de concatenar cada tupla de R con todas las tuplas de S. El resu resulta ltado do se se obtie obtiene ne extr extraye ayendo ndo de la la rela relació ciónn R, el conjunto de atributos A 1…AN, y eliminando luego las tuplas repetidas si las hay. Consiste en una partición vertical de la relación. El result resultado ado se obtiene obtiene extraye extrayendo ndo de la relaci relación ón R todas las tuplas que cumplan la condición F. Consiste en una partición horizontal de la relación. relación.
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: Estabi Estabilid lidad: ad: Facil Facilida idadd de uso: Fiabil Fiabilida idad: d: Univer Universal salida idad: d:
Conside Considerar rar si alguna alguna de las las clav claves es es es menos menos propens propensaa a sufrir sufrir modificaciones en sus valores. Siempr Siempree es mas fácil fácil manej manejar ar una una clav clavee numéri numérica ca corta corta que una alfanumérica de muchos caracteres de longitud. Compro Comprobar bar la existe existenci nciaa de alguna alguna clave clave que presen presente te dígi dígitos tos de validación u otros sistemas de autodetección o corrección de errores. Pueden Pueden exis existir tir claves claves de uso uso muy muy exten extendid dido. o. (NIF (NIF,, Númer Númeroo de Seguridad Social…)
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, SQL, QUEL y QBE . SQL, propuesto inicialmente bajo el nombre de SQUARE y posteriormente SEQUEL, 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:
Estudio de los requerimientos del usuario:
Diseño Conceptual:
Manual de Informix-SQL
Cliente : LUCENT TECHNOLOGIES
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 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 realizar a la base de datos. Una lista de los datos que son significativos 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 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 sinónimos para un mismo atributo. Tipo : Los SGBD solo permiten un número reducido de tipos de
Pág. 7
http://www.serem.com
SEREM FORMACIÓN
Diseño Físico:
Implementación del diseño: Pruebas:
Manual de Informix-SQL
Cliente : LUCENT TECHNOLOGIES
atributos (como pueda ser numérico y 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, caracteres, fecha, lógico y memo. Requerido u Requerido u opcional : Especifica si es necesario o no introducir valores para ese atributo. Ocurrencia simple o 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 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 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 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 entidad y Restricciones 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
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 Primer Primeraa Forma Forma Normal Normal
Segunda Forma Normal
Tercer Terceraa Forma Forma Normal Normal
Forma Normal de Boyce-Codd
Def inición Una tabla tabla está está en en Prim Primera era Forma Forma Normal 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 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 tabla está está en Tercer Terceraa Forma Forma Normal 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.
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 Software y Usuarios . Datos Datos
Hardwar Hardwaree Software Software Usuari Usuarios os
Una base base de de datos datos se se puede puede defini definirr como como un un reposi repositor torio io de de datos 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 hardw hardware are se se compone compone de de los volúme volúmenes nes de de almacen almacenami amiento ento donde donde se encuentra la base de datos, junto con sus dispositivos dispositivos de control, canales, etc. Analiza Analizado do en el apartad apartadoo anter anterior ior.. Resp Responde onde al concepto concepto de SGBD. SGBD. Se consi consider deran an tres tres clases clases princi principal pales es de de usuar usuarios ios:: 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.
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 Screen permite pasar a la página siguiente y Resume finaliza Resume finaliza la ejecución de la ayuda.
Utilidad de cada una de las opciones del menú Principal de Informix: Form Form
Report Report Query Language User-M User-Menu enu Databas Databasee
Entra Entra en el conj conjunto unto de menús menús Perform Perform.. A travé travéss de estos estos menús 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. Permi Permite te accede accederr al menú menú ACE. ACE. ACE ACE es el gener generador ador de infor informes mes 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. Permi Permite te crear crear un un menú menú persona personalilizado zado cuya cuyass opcion opciones, es, a su su vez, vez, permitan acceder a formatos de pantalla, informes, etc. Permi Permite te reali realizar zar las las operac operacion iones es princ principa ipales les con con una base de de datos: datos: Seleccionar, Crear, Borrar…
Manual de Informix-SQL
Pág. 12
http://www.serem.com
SEREM FORMACIÓN Table Table
Cliente : LUCENT TECHNOLOGIES
Permi Permite te acceder acceder a un sistem sistemaa de menús menús que que posibi posibilit litan an la real realiza izació ciónn de operaciones relacionadas con tablas. Term Termin inaa la la eje ejecu cuci ción ón de Infor Informi mixx-SQL SQL..
Exit Exit
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
Modify
Generate
New
Compile
Drop
Exit
Modify
Generate
New
Compile
Drop
Exit
Opción Report
Run
Opción Query-Lenguage
New
Run Modif y Use-Editor Output Choose Save Info Drop Exit
Opción User-Menu
Run
Modify
Exit
Opción Database
Select
Create
Drop
Exit
Opción Table
Create
Alter
Info
Drop
Exit
Opción 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 Select Create Create
Drop Drop Exi Exit
Utilización Permit Permitee Selecc Seleccion ionar ar una una de las las bases bases de datos datos previ previame amente nte creada creadas. s. Permit Permitee crear crear una una nueva nueva base base de datos datos.. Pregun Pregunta ta por el nombr nombree que se 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. Permi Permite te elim elimin inar ar una una base base de de datos datos exi existe stente nte.. Regr Regres esaa al menú enú ante anterrior. or.
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 Creat Createe Alter Alter Info Info Drop Drop Exi Exit
Utilización Da com comie ienz nzoo al pro proce ceso so de cre creac ació iónn de una una tabl tabla. a. Permit Permitee modi modifica ficarr la la estru estructur cturaa de una tabla tabla ya creada. creada. Sumin Suminis istr traa info inform rmac ació iónn sob sobre re una una tabl tabla. a. Permi Permite te elim elimin inar ar una una tabl tablaa exi existe stente nte.. Regr Regres esaa al menú enú ante anterrior. or.
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 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 Modif y Drop Screen E x it 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 Add Modify Modify Drop Drop Screen Screen Exi Exit
Utilización Añade Añade una una nueva nueva col colum umna na a la la tabla tabla sel selec ecci ciona onada da.. Permit Permitee modifica modificarr las cara caracte cterís rístic ticas as del camp campoo selecc seleccion ionado. ado. Elim Elimin inaa la col colum umna na sel selec ecci ciona onada da de la la tabla tabla.. En el caso caso de de que la la definic definición ión de de una tabl tablaa ocupe ocupe mas mas de una una pantal pantalla, la, esta opción permite ir a la siguiente pantalla de definición. Regr Regres esaa al menú enú ante anterrior. or.
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
Manual de Informix-SQL
Pág. 16
Date
Money
Index
Null
http://www.serem.com
SEREM FORMACIÓN
Cliente : LUCENT TECHNOLOGIES
Tipos de Datos Básicamente, solo existen dos tipos de datos: Alfanuméricos y Alfanuméricos y Numéricos . Tipo Alfanumérico
Numérico
Declaración CHAR(Longitud)
Descripción Almacenan cu cualquier co combinación de de le 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. SMALLINT Almacena números enteros entre -32.767 y +32.767 INTEGER Almacena números enteros entre 2.147.483.647 y +2.147.483.647 SERIAL 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, SMAL SMALLI LINT NTFL FLOA OAT T Alma Almace cena na núme número ross en en pun punto to flot flotan ante te con con 8 dígitos significativos. FLOAT Almacena números en punto f lotante con 16 dígitos significativos. DECIMAL(precisión, Almacena números en punto flotante con 32 escala) 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 MONEY 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 DATE 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.
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 n o me m Char 20
Manual de Informix-SQL
Pág. 17
Index
Null
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 í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 ( 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 los campos hayan sido introducidas, control-c permitirá al usuario acceder al menú anterior, y la opción Exit proporcionará 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 n o me m 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 f ecin salar comis n u mh i nomem
Tipo integer integer smallint da t e da t e decimal decimal smallint char
Longitud
8, 0 8, 0 20
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.
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. Tipo de Director. P: Propiedad, F: Funciones.
Tabla: depto d epto (Datos de Departamentos)
Nombre numde numce
Tipo Integer Integer
direc
Integer
tidir
Char
Manual de Informix-SQL
Longitud
1
Pág. 19
http://www.serem.com
SEREM FORMACIÓN presu
Decimal
d epde
Integer
nomde
Char
Cliente : LUCENT TECHNOLOGIES
Presupuesto anual del departamento. Número de departamento del que depende. Nombre del departamento.
20
Tabla: tcentr (Datos de Centros de trabajo)
Nombre numce
Tipo Integer
nomce
Char
senas
Char
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.
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
E x it
El significado de cada una de estas opciones es el siguiente: Opción Run Run Modify Modify Generat Generatee
Utilización Utili Utiliza za un un formu formula lari rioo cread creadoo anter anterio iorm rmen ente. te. Permit Permitee modifica modificarr un formula formulari rioo creado creado anterio anteriorm rmente ente desde desde un edito editorr de texto. En UNIX el editor por defecto es VI . Permit Permitee generar generar un formula formulari rioo por defect defecto. o. Es la la opción opción que que se utili utilizar zaráá 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 Compil Compilee Drop Drop Exi Exit
Cliente : LUCENT TECHNOLOGIES
Permit Permitee crear crear un formul formulari arioo desde desde un editor editor de de texto. texto. Es Es neces necesari arioo conocer las especificaciones propias de ese tipo de fichero. Esta cuestión se abordará en este manual en un capítulo posterior. Cuando Cuando se genera genera o modific modificaa un formula formulario rio desde desde la la opción opción New , es necesario compilarlo después de su creación. Este procedimiento se realiza desde esta opción. Elimi Elimina na una una especifi especificac cación ión de Formul Formulari arioo exist existente ente.. Regr Regres esaa al menú enú ante anterrior. or.
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ú:
GENERATE FORM: Table-Selection-Complete Sele Select ct--moreore-Ta Tabl bles es Exit Exit Continue creating a default form with the selected tables. -----Page 1 of 1--------------1-----------------------------------------------------------M -----MANUAL--------ANUAL----------------------------Press ----Press F1 for Help---------Help----------
El significado de cada una de estas opciones es el siguiente: Opción Table-S Table-Sele electi ctionon-Com Comple plete te SelectSelect-mor more-T e-Tabl ables es Exit Exit
Utilización Crea Crea el formular formulario io utiliz utilizando ando la tabla tabla anteri anteriorm ormente ente especificada. Permi Permite te añadir añadir mas tablas tablas a la seleccio seleccionada nada anter anterior iormen mente. te. Se pueden añadir hasta diez tablas en un formulario. Regr Regres esaa al menú menú ante anteri rior or..
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 Query Next Next Previo Previous us Add Update Update Remo Remove ve Tabl Tablee Screen Screen Curren Currentt Master aster Detail Detail Output Output Exi Exit
Utilización Permit Permitee reali realizar zar una consult consultaa a la tabla tabla selec seleccio cionada nada.. Present Presentaa el siguie siguiente nte regist registro ro de la la list listaa acti activa. va. Present Presentaa el anterio anteriorr regi registr stroo de la lista lista activa. activa. Añade Añade datos datos a la la tabla. tabla. Esta es la la opció opciónn que se habrá habrá de selec seleccio cionar nar si se desea añadir datos de la forma mas sencilla. Permit Permitee modific modificar ar el el conten contenido ido de un regi registr stroo en la la tabla tabla activ activa. a. Elim Elimin inaa un regi registr stroo de la tabla tabla act activ iva. a. Sele Selecc ccio iona na la tabl tablaa act activ iva. a. En el caso caso de que que el formu formular lario io actua actuall no quepa quepa en la la pantal pantalla la presen presente, te, esta opción avanza a la siguiente pantalla para seguir viendo el contenido del formulario. Muestr Muestraa el el regi registr stroo acti activo vo de la tabla tabla acti activa. va. Selec Selecci cion onaa la tabl tablaa patró patrónn de la tabl tablaa activ activa. a. Selecc Seleccion ionaa una una tabl tablaa de de detal detalle le de la tabla tabla acti activa. va. Envía Envía el conteni contenido do del del formu formular lario io a un inform informee o a un arch archivo ivo.. Regr Regres esaa al menú enú ante anterrior. or.
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
Cliente : LUCENT TECHNOLOGIES
PERFORM: Query Next Previous Searches the active database table numem numde ex t e l fecna fecin salar comis
numhi nomem
[ [ [ [ [ [ [ [ [
Add Update Remove ** 1: temple table **
Table Screen...
] ] ] ] ] ] ] ] ]
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 Cont Contro roll-x Contr Control ol-a -a Contr Control ol-d -d Contr Control ol-f -f Contr Control ol-b -b Cont Contro roll-c Control Control-p -p Contr Control ol-w -w Del Delete ete Return, Control-j, Flecha abajo Control-k, Flecha Arriba Control-h, Flecha izquierda, Backspace Flecha derecha, Control-n Esc Escape ape
Manual de Informix-SQL
Descripción Bor Borra un car carác ácte terr. Pone Pone y quit quitaa modo modo inse inserc rció ión. n. Borra Borra hasta hasta el final final del del camp campo. o. Avanz Avanzaa rápi rápido do a trav través és de de los los cam campos pos.. Retr Retroc oceso eso ráp rápid idoo a trav través és de de los los camp campos os.. Inter nterru rum mpir pir. Propor Proporcio ciona na el el valo valorr mas mas recien reciente te del del campo. campo. Muestr uestraa el mens mensaj ajee de ayuda ayuda.. Canc Cancel elaa un coma comand ndo. o. 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. Entr Entrad adaa comp complletad etada. a.
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: Modif y 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 ex t e l fecna fecin salar comis
numhi nomem
[ [ [ [ [ [ [ [ [
Add Update Remove ** 1: temple table **
Table Screen...
] ] ] ] ] ] ] ] ]
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 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, ú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 ex t e l fecna fecin salar comis
numhi nomem
[ [ [ [ [ [ [ [ [
Add Update Remove ** 1: temple table **
Table Screen...
] ] ] ] ] ] ] ] ]
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 ex t e l fecna fecin salar comis
numhi nomem
[120 [ [ [ [ [ [ [ [
Add Update Remove ** 1: temple table **
Table Screen...
] ] ] ] ] ] ] ] ]
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 ?? Manual de Informix-SQL
Signif icado 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 Pág. 26
http://www.serem.com
SEREM FORMACIÓN =* =
Cliente : LUCENT TECHNOLOGIES
El valor * Valor Nulo
Notas: Ø Ø
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 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-SQ X-SQLL: Form orm 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
Modif y
Generate
New
Compile
Drop
Exit
El significado de cada una de estas opciones es el siguiente: Opción Run Run Modify Modify Generat Generatee New Compil Compilee Drop Drop Exi Exit
Utilización Ejec Ejecuta uta un infor informe me cread creadoo pre previ viam ament ente. e. Permit Permitee modific modificar ar un inform informee generad generadoo previa previamen mente. te. Se util utiliza izará rá el editor de texto por defecto. En el caso de Unix, este editor es VI . Genera Genera un inform informee por defecto. defecto. Esta Esta es la la opción opción que que se util utiliza izará rá en el caso presente. Crea Crea una nuev nuevaa especi especifica ficació ciónn de Inform Informe. e. Este Este proce proceso so se reali realiza za desde un editor de texto. Se estudiará adecuadamente en una sección posterior de este manual. Compil Compilaa un inform informee cread creadoo o modi modifica ficado do desde desde un edito editor. r. Elim Elimin inaa un info inform rmee crea creado do ante anteri rior orme mente nte.. Regr Regres esaa al menú enú ante anterrior. or.
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 Modif y 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 , 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
Modif y
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
INFORMIX-SQL: Form Report Query-Language User-Menu Use Informix Structured Query Language
Database
Table Exit
Una vez seleccionada esta opción, Informix presenta el siguiente menú: RDSQL: New Run Modif y Use-Editor Output Enter new RDSQL Statments using the RDSQL Editor.
Choose
Save
Inf o
Drop Exit
Las operaciones que permiten realizar cada una de estas opciones son las siguientes: Opción Utilización New Permit Permitee añadir añadir una nueva nueva senten sentencia cia SQL usando usando el editor editor de SQL. SQL. Run Run Ejec Ejecuta uta una una sente sentenc ncia ia SQL SQL previ previam ament entee redac redactad tada. a. Modify Modify Permit Permitee modifi modificar car una sente sentenci nciaa SQL creada creada anter anterior iormen mente. te. Use-Ed Use-Edito itorr Permit Permitee crear crear o modific modificar ar una sente sentenci nciaa SQL creada creada anter anterior iormen mente te usando el editor seleccionado por el usuario, o configurado por defecto. Output Output Envía Envía los los resul resultado tadoss de una una consu consulta lta a impre impresor soraa o a un ficher fichero. o. Choose Choose Elige Elige una línea línea de comando comando como como la la sente sentenci nciaa REDS REDSQL QL acti activa. va. Save Save Guarda Guarda las las sente sentenci ncias as SQL SQL actual actuales es en en un archiv archivoo de comando comandos. s. Info Propor Proporcio ciona na inform informaci ación ón acerc acercaa de las las tablas tablas de la la base base de datos datos activ activa. a. Drop Drop Elim Elimin inaa un un fich ficher eroo de de com comand andos os RD RDSQL SQL.. Exi Exit Regr Regres esaa al menú enú ante anterrior. or. Después de seleccionar la opción New en el menú RDSQL, Informix presenta una pantalla como la siguiente: New:
ESCAPE= Done Editing INSERT= Typeover/Insert DELE DE LET TE= Delet eletee Ch Chara aracte cter CONTR ONTROL OL--D= Del Delet etee res restt of of lin linee -----------------MANUAL1---------------------------------------Press F1 for HELP----------------------------------- _
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 simple es aquella que permitirá 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
Cliente : LUCENT TECHNOLOGIES
SELECT SELECT [campo [campo1,ca 1,campo mpo2,ca 2,campo mpo3,.. 3,....ca ..campo mpoN] N] FROM [Nombre de la tabla] 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:
SELEC SELECT T nome nomem, m,num numhi hi,s ,sal alar ar,co ,comi miss 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 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: E x it 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 Next Restar Restartt Exi Exit
Utilización Mues Muestr traa la sigui siguient entee pági página na de de resul resultad tados os.. Comien Comienza za desd desdee el princi principio pio de la la senten sentencia cia SQL actua actual.l. Regr Regres esaa al menú enú ante anterrior. or.
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 ORDE ORDER R BY
[campo1,campo2,campo3,....campoN] [Nombre de la tabla] [cam [campo po1, 1,ca cam mpo2, po2,ca camp mpo3 o3,. ,... ...c .cam ampo poN] N]
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 Modif y Use-Editor Output Choose Run and sends query results to a printer or a file.
Save
Inf o
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
Opción Printer Printer New-Fil New-Filee AppendAppend-Fil Filee Exi Exit
Cliente : LUCENT TECHNOLOGIES
Utilización Envía Envía el result resultado ado de la la consu consulta lta a una una Impr Impreso esora. ra. Genera Genera un un nuevo nuevo ficher ficheroo e inclu incluye ye en él los los datos datos de de salida salida de la la consulta. Añade Añade los los datos datos de de la consult consultaa a un fichero fichero existen existente. te. Regr Regres esaa al menú enú ante anterrior. or.
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. HAVING. SELECT FROM W HERE ORDE ORDER R BY
[campo1,campo2,campo3,....campoN] [Nombre de la tabla] [Condición] [cam [campo po1, 1,ca cam mpo2, po2,ca camp mpo3 o3,. ,... ...c .cam ampo poN] N]
En el ejemplo: SELECT FROM W HERE ORDER BY
nomem,numhi,salar,comis temple numhi=2 numhi,nomem
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 W HERE ORDE ORDER R BY
[campo1,campo2,campo3,....campoN] [Nombre de la tabla] [Campo ! = valor] [cam [campo po1, 1,ca cam mpo2, po2,ca camp mpo3 o3,. ,... ...c .cam ampo poN] N]
En el ejemplo:
Manual de Informix-SQL
Pág. 32
http://www.serem.com
SEREM FORMACIÓN
SELECT FROM W HERE ORDER BY
Cliente : LUCENT TECHNOLOGIES
nomem,numhi,salar,comis temple numhi ! =2 numhi,nomem
En este caso se presentarán los datos de aquellos empleados que NO tengan 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 menos cumplan una de las condiciones establecidas. SELECT FROM WHE WH ERE ORDE ORDER R BY
[campo1,campo2,campo3,....campoN] [Nombre de la tabla] [Campo1= va valor] AN AND [[C Campo2=valor] A AN ND ..... [cam [campo po1, 1,ca cam mpo2, po2,ca camp mpo3 o3,. ,... ...c .cam ampo poN] N]
En el ejemplo: SELECT FROM W HERE ORDER BY
nomem,numhi,salar,comis temple numhi > 3 AND numhi < 6 numhi,nomem
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 W HERE 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 WHE WH ERE ORDE ORDER R BY
[campo1,campo2,campo3,....campoN] [Nombre de la tabla] [Campo1 BETWEE WEEN valor1 AND valor2] [cam [campo po1, 1,ca cam mpo2, po2,ca camp mpo3 o3,. ,... ...c .cam ampo poN] N]
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 W HERE ORDER BY
nomem,numhi,salar,comis temple numhi BETW EEN 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 WHE WH ERE ORDE ORDER R BY
[campo1,campo2,campo3,....campoN] [Nombre de la tabla] [Campo1 IN (valor1, valor2.....valorN) [cam [campo po1, 1,ca cam mpo2, po2,ca camp mpo3 o3,. ,... ...c .cam ampo poN] N]
En el Ejemplo: SELECT FROM W HERE 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 W HERE ORDE ORDER R BY
[campo1,campo2,campo3,....campoN] [Nombre de la tabla] [Campo1 IS NULL] [cam [campo po1, 1,ca cam mpo2, po2,ca camp mpo3 o3,. ,... ...c .cam ampo poN] N]
En el Ejemplo: SELECT FROM W HERE 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 W HERE ORDE ORDER R BY
[campo1,campo2,campo3,....campoN] [Nombre de la tabla] [Campo1 MATCHES “valor*”] [cam [campo po1, 1,ca cam mpo2, po2,ca camp mpo3 o3,. ,... ...c .cam ampo poN] N]
En el ejemplo: SELECT FROM W HERE 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 W HERE 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 W HERE 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 W HERE ORDER BY
Cliente : LUCENT TECHNOLOGIES
nomem,numhi,salar,comis temple nomem MATCHES “[“[R-V]*” numhi,nomem
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
Utilización
COUN COUNT( T(*) *) COUNT( COUNT(DIS DISTI TINCT NCT nombre nombre-co -colum lumna) na)
Cuen Cuenta ta las fila filas. s. Cuenta Cuenta cuantos cuantos valores valores diferentes diferentes aparecen aparecen para el campo especificado. SUM(x SUM(x)) Suma Suma todo todoss los los val valor ores es de de una una col colum umna. na. SUM (DI (DISTI STINCT NCT nomb nombrere-col column umna) a) Solo Solo suma suma una vez vez los valore valoress repeti repetidos. dos. AVG(x AVG(x)) Halla Halla el valor valor medi medioo de los los valo valore ress de una una columna. AVG(DIS AVG(DISTI TINCT NCT nomb nombrere-col column umna) a) Solo Solo cuenta cuenta una vez los los valore valoress repetid repetidos os para para hallar la media. MAX( AX(x) x) Calcu Calcula la el el valo valorr máx máxim imoo de una una col colum umna na.. MIN(x IN(x)) Calcu Calcula la el el valo valorr mín mínim imoo de una una col colum umna na.. La “x” puede representar un nombre de columna o una expresión. Ejemplos: Función COUNT(*) COUNT( COUNT(DIS DISTI TINCT NCT nomb nombrere-col column umna) a) SUM SU M(x) SUM (DI (DISTI STINCT NCT nombre nombre-co -colum lumna) na) AVG( VG(x) AVG(DIS AVG(DISTI TINCT NCT nombre nombre-co -colum lumna) na) MAX AX((x) MIN(x) N(x)
Manual de Informix-SQL
Ejemplo SELLEC SE ECT T COU COUNT(*) FROM temple SELECT SELECT COUNT COUNT(DI (DISTI STINCT NCT numh numhi) i) FROM temple SELE SE LECT CT SU SUM M(sala salarr) FROM temple SELECT SELECT SUM SUM(DI (DISTI STINCT NCT salar) salar) FROM temple SELLEC SE ECT T AVG AVG(salar) FROM temple SELECT SELECT AVG(DIS AVG(DISTIN TINCTs CTsala alar) r) FROM temple SELE SE LECT CT MAX AX(s (sal alar ar)) FROM temple SELE SE LECT CT MIN(sa N(sallar) ar) FROM temple
Pág. 36
http://www.serem.com
SEREM FORMACIÓN
Cliente : LUCENT TECHNOLOGIES
La “x” puede representar un nombre de columna o una expresión.
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: SELEC SELECT T FROM GROUP BY HAVING ORDER BY
AVG(s AVG(sal alar ar), ), MAX( MAX(sa sala lar, r, MIN(s IN(sal alar ar), ), numde numde,, (M (MIN(s IN(sal alar ar)+ )+M MAX( AX(sa sala lar) r))/ )/22 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 SELE CT FROM GROUP BY INTO TE TEMP SELECT FROM
num numde, de, MI MIN(sa N(sallar) ar) míni mínim mo, MAX AX(s (sal alar ar)) máxi á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 WHE WH ERE
numem, nnoomem, te temple.numde, nnoomde temple, tdepto temple.numde = tdpto.numde
En el ejemplo anterior la columna numde debe 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)
son:
Los requisitos que se deben cumplir para poder realizar consultas de este tipo
Ø Ø
Ø
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
Tabla2
Campo1
Campo2
Campo2
Campo3
María José Alberto
1 3 2
1 2 2
Fú t b o l Baloncesto Balonmano
La sentencia SELECT FROM
campo1, campo3 tabla1, tabla2
Devolverá Campo1
Campo3
María María María José José José Alberto Alberto Alberto
Fútbol Baloncesto Balonmano Fútbol Baloncesto Balonmano Fútbol Baloncesto Balonmano
Sin embargo la sentencia
Manual de Informix-SQL
Pág. 39
http://www.serem.com
SEREM FORMACIÓN
SELECT FROM WHE WH ERE
Cliente : LUCENT TECHNOLOGIES
campo1, campo3 tabla1, tabla2 tabla1.campo2 = tabla2.campo2
Devolverá: Campo1
Campo3
María Alberto Alberto
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 WHE WH ERE
campo1, campo3 tabla1, outer tabla2 tabla1.campo2 = tabla2.campo2
En este caso el resultado de la consulta será: Campo1
Campo3
María José Alberto Alberto
Fútbol Baloncesto Balonmano
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 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 Complete (en el caso de que sea ésta la opción deseada), y, por último, seleccionar la opción Run y 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 ex t e l 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
E x it
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 Manual de Informix-SQL
[f000 [f001 [f002 ] [f003 [f004
] ] ] ] 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
Cliente : LUCENT TECHNOLOGIES
[f005 [f006 [f007 ] [f008
] ] ]
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 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: Manual de Informix-SQL
[f000
]
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
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:
[ [ [ [ [ [ [ [ ] [
Add
Update Remove Table Screen.. . ** 1: temple table **
] ] ] ] ] ] ] ]
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 Comme Comments nts:: Rever Reverse se:: Upshi Upshift: ft: Downs Downshi hift: ft: Autonex Autonext: t: Incl Include ude::
Pict Pictur ure: e:
Manual de Informix-SQL
Signif icado Añade Añade una una lín línea ea de de come comenta ntari rios os en en la parte parte inferior de la pantalla. Cambi Cambiaa la vis visual ualiz izac ació iónn de la la zona zona de dato datoss a vídeo inverso. Cambi Cambiaa todas todas las las letr letras as a mayú mayúsc scul ulas as.. Cambi Cambiaa todas todas las las letr letras as a minú minúsc scul ulas. as. Avanza Avanza automát automática icamen mente te el cursor cursor al siguie siguiente nte campo cuando el campo actual está lleno. Hace Hace que que los los datos datos sean sean com compr proba obados dos en una una lista de valores antes de aceptarlos como entrada. La Sintaxis es: INCLUDE=(“Valor1”, “Valor2”,….) Espec Especifi ifica ca un un patr patrón ón para para una una col colum umna na de de tipo tipo carácter. La sintaxis es: e s: 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
SEREM FORMACIÓN
Cliente : LUCENT TECHNOLOGIES
Righ Right: t: Noup Noupdat date: e: Query Querycl clear ear::
Requi Require red: d: Veri Verify: fy: Noentr Noentry: y: Defau Defaultlt:: Forma Format: t:
Zerofil Zerofill:l:
Justi Justific ficaa los los datos datos numér numéric icos os a la la dere derech cha. a. Impi Impide de que que se se modi modifiq fiquen uen dato datoss con con la opc opció iónn Update. No impide que se añadan datos. Limp Limpia ia el el conte conteni nido do de de un cam campo po que que une une dos dos tablas al entrar en la opción de consultar. Se aplica solamente a formatos de mas de una tabla. Requi Requier eree que que el cam campo po cont conteng engaa datos datos ante antess de modificarlo o dar de alta a la fila. Requi Requier eree que que se tecle tecleee la infor informa maci ción ón dos dos veces para asegurar su exactitud. Evit Evitaa que que los los datos datos se añad añadan an a una una col colum umna na al añadir una fila nueva. No impide la modificación de datos. Asig Asigna na un un val valor or por defec defecto to a un cam campo. po. Ejemplo: Default=TODAY. Contr Control olaa el forma formato to de de panta pantallllaa para para las 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”: FORMAT=”dd-mm-yy”: 23-12-97 2 3-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 Funcion Funcionaa igual igual que right, right, pero pero los los espaci espacios os a la la izquierda se rellenan con ceros.
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: Manual de Informix-SQL
[f000
]
[f001
]
[f002 ] [f003
]
Pág. 45
http://www.serem.com
SEREM FORMACIÓN ----------------------------Fecha de Ingreso: -----------------------Salario: --------Comisiones: ---------------Número de Hijos: ----------------------Nombre de Empleado: -----------------------------}
Cliente : LUCENT TECHNOLOGIES
[f004
]
[f005
]
[f006
]
[f007 ] [f008
]
end tables
temple 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 “11” seguido de cuatro 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
Cliente : LUCENT TECHNOLOGIES
Reverse, Right, Zerofill;
{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 Form de Informix-SQL y elegir la opción Generate : FORM: Run Modify Generate a default form.
Generate
New
Compile
Drop
E x it
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
GENERAT GENERATE E FORM: FORM: TableTable-Sel Select ection ion-C -Comp omplet letee Select-more-Tables Exit Select another table to include in the def ault form. -----Page 1 of 1--------------1-----------------------------------------------------------M -----MANUAL--------ANUAL----------------------------Press ----Press F1 for Help---------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 tdpto en primer lugar y la tabla temple en temple en segundo lugar: FORM: Modify Generate Run Use a form to enter data or query a Database.
New
Compile
Drop
E x it
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 t id i r 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
Cliente : LUCENT TECHNOLOGIES
PERFORM: Query Next Previous Searches the active database table numem numde ex t e l fecna fecin salar comis numhi nomem
[ [ [ [ [ [ [ [ [
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 Table se limitará a activar una u otra. database EJEMPLO1 screen { numde numce direc tidir presu depde nomde
[f000 [f001 [f002 [a] [f003 [f004 [f005
] ] ] ] ] ]
} screen {
numem numde extel fecna fecin salar comis numhi nomem } end
Manual de Informix-SQL
[f006 ] [f007 ] [f008 ] [f009 ] [f010 ] [f011 ] [f012 ] [f013 ] [f014
Pág. 49
]
http://www.serem.com
SEREM FORMACIÓN
Cliente : LUCENT TECHNOLOGIES
tables tdepto temple attributes f000 = tdepto.numde; f001 = tdepto.numce; f002 = tdepto.direc; a = tdepto.tidir; f003 = tdepto.presu; f004 = tdepto.depde; 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
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
Cliente : LUCENT TECHNOLOGIES
PERFORM: Query Next Previous Searches the active database table numde numce direc t id i r presu depde nomde numem numde extel fecna fecin salar comis numhi nomem
[ [ [ [ [ [ [
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 (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 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 Manual de Informix-SQL
[f000 [f001 [f002 [a] [f003 Pág. 51
] ] ] ] http://www.serem.com
SEREM FORMACIÓN depde nomde numem extel fecna fecin salar comis numhi nomem } end
Cliente : LUCENT TECHNOLOGIES
[f004 ] [f005 ] [f006 ] [f008 ] [f009 ] [f010 ] [f011 ] [f012 ] [f013 ] [f014
]
tables tdepto temple attributes f000 = tdepto.numde=temple.numde; f001 = tdepto.numce; f002 = tdepto.direc; a = tdepto.tidir; f003 = tdepto.presu; f004 = tdepto.depde; 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 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
Cliente : LUCENT TECHNOLOGIES
PERFORM: Query Next Previous Searches the active database table numde numce direc t id i r presu depde nomde numem extel fecna fecin salar comis numhi nomem
[ [ [ [ [ [ [
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 ex t e l fecna fecin salar comis numhi nomem
[
]
[ [ [ [ [ [ [ [
]
Add Update Remove ** 2: temple table **
Table Screen...
] ] ] ] ] ] ]
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 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 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 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á 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 Verificación . Por tanto, la única única operación que tendrá que realizar 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 E nlace 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-SQ X-SQLL: Form orm Report Query-Language Run, Modify, Create, or Drop a Report.
User-Menu
Database
Table Exit
A continuación la opción Generate , REPORT: Run Modif y 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
Modif y
Cliente : LUCENT TECHNOLOGIES
Generate
New
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 select y format 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: Define: Input Input:: Output:
Utilización Define Define las variab variables les locale localess que que se utiliz utilizará aránn en el informe. Gener Generaa mensa mensaje jess de peti petici ción ón de entr entrad adaa en infor informe mess interactivos. Especific fica: Ø 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:
Sección Database Sección Define
Sección Input
Sección Output
Sección Select
Manual de Informix-SQL
Sumario de la sintaxis de ACE DATABASE [nombre [nombre de la base de datos ] END DEFINE Variable [nombre variable tipodato ] Param[Integer Param[Integer ] [nombre parámetro tipo parámetro ].]. END INPUT Prompt For [nombre variable ] END
Using
[Cadena ]
OUTPUT Page Length [Integer [ Integer ] Right Margin [Integer [ Integer ] Left Margin [Integer [ Integer ] Top Margin [Integer [ Integer ] Bottom Margin [Integer [ Integer ] Report to [Nombre [Nombre de Fichero ] | Report to Pipe [Programa [ Programa ] | Report to Printer END SELECT [sentencias SQL] SQL] from [nombre [nombre de la tabla ] END
Pág. 58
http://www.serem.com
SEREM FORMACIÓN Sección Format
Cliente : LUCENT TECHNOLOGIES
FORMAT First Page Header Page Header Page Trailer On Every Row Before Group Of After Group Of On Last Row END
A continuación se estudiarán algunas de estas secciones detalladamente:
Sección Define DEFINE Variable
[nombre variable tipodato ].]. Las variables son utilizadas para permitir la entrada interactiva de ciertos valores durante la ejecución del informe. Nombre es Nombre es el nombre de la variable y Tipodato es Tipodato es el tipo de datos que va a almacenar. No es válida con los datos de tipo Serial . Param[Integer Param[Integer ] [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 nombre es el nombre utilizado en el informe y tipo representa 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 DEFINE ya que permite introducir los valores de las variables. Nombre variable es variable es el nombre asignado a la variable en la sección DEFINE . Cadena es Cadena es el texto a través del cual Informix-SQL preguntará al usuario.
END
Sección Output OUTPUT Page Length [Integer [ Integer ]: ]: Right Margin [Integer [ Integer ]: ]: Manual de Informix-SQL
Fija Fija el númer númeroo de líne líneas as por por pági página na.. El valo valorr por defecto es 66. Fija Fija el marg margen en der derech echoo (anc (ancho ho). ). El El val valor or por por Pág. 59
http://www.serem.com
SEREM FORMACIÓN
Cliente : LUCENT TECHNOLOGIES
defecto es 5. Fija Fija el marg margen en izqu izquie ierd rdo. o. El valo valorr por por defecto es 5. Fija Fija el marg margen en supe superi rior or.. El valo valorr por por defec defecto to es 3 líneas. Fija Fija el marg margen en supe superi rior or.. El valo valorr por por defec defecto to es 5 líneas. Envía Envía el conte conteni nido do del infor informe me a un un fiche fichero ro.. Enví Envíaa el el con conte teni nido do del del info inform rmee a un programa. Envía Envía el el conten contenido ido del informe informe a impre impresor sora. a.
Left Margin [Integer [Integer ]: ]: Top Margin [Integer [ Integer ]: ]: Bottom Margin [Integer [Integer ]: ]: Report to [Nombre [Nombre de Fichero ]: ]: | Report to Pipe [Programa [ Programa ]: ]: | Repor Reportt to Pri Printer nter:: END
Sección Format FORMAT (Primer tipo) Ever Everyy Row: Row:
Impl Implic icaa que que cada cada lín línea ea sea sea esc escri rita ta con con un un formato por defecto. Útil para crear listados rápidamente.
END FORMAT (Segundo Tipo) First Page Header [Acción [A cción ]: ]:
Page Trailer [Acción [A cción ]: ]: Page Header [Acción [A cción ]: ]: On Every Row [Acción [Acción ]: ]: On Last Row [Acción [Acción ]: ]: Before Group Of [Acción [A cción ]: After Group Of [Acción [Acción ]:
Espe Especi cific ficaa cóm cómoo ser seráá el el enc encabe abeza zado do de la primera página del informe. Acción es 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. Espe Especi cific ficaa cómo cómo será será el el pie pie de cada cada pági página na del del informe. Espe Especi cific ficaa cóm cómoo ser seráá el el enc encabe abeza zado do de cada cada página del informe. Espe Especi cific ficaa cómo cómo será será cada cada línea línea del infor informe me.. Puede utilizarse Using para Using para especificar los formatos de cada tipo de datos. Espe Especi cififica ca las las acc accio ione ness que que será seránn emprendidas después de la última línea seleccionada. Suelen ser cálculos. Cuando en la sección SELECT existe 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 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
Cliente : LUCENT TECHNOLOGIES
Acciones de Salida
PRIINT: PR
SKIP:
NEDD: NE DD: PAU AUS SE: PRIINT FILE PR FILE::
Sinta ntaxis: PRINT Column nº, Expresion, 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. Sinta ntaxis: SKIP nº Lines / 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. Sinta Sintaxi xis: s: NEDD NEDD nº Lin Lines es.. Fuerz Fuerzaa que un un deter determi mina nado do número de líneas estén juntas en la misma página. Sintax ntaxiis: PAU PAUS SE “Mensaje ”. ”. Interrumpe la salida del informe y muestra mensaje hasta que se pulse una tecla. Sint Sintax axis is:: PRI PRINT NT FILE FILE “NombreArchivo ”. ”. Envía la salida a un fichero cuyo nombre es NombreArchivo .
Acciones / Expresiones de Cálculo
L E T: OPERADORES: ARITMÉTICOS TOTA TOTALL OF: OF: MIN OF OF: MAX OF: OF: COUNT: COUNT: AVG AV G o AV AVER ERAG AGE: E: PERCENT: DATE ATE(): DAY(): MDA DAY Y(): MONTH ONTH(():
Manual de Informix-SQL
Sintaxis: LE LET NombreVariable = NombreVariable = Expresión . Permite asignar un valor a una Variable. +, - , *, /, **. Sint Sintax axis is:: TOT TOTAL AL OF Expresión . Calcula la suma de una Expresión. Sinta ntaxis: MI MIN OF OF Expresión . Calcula el valor mínimo de una Expresión. Sinta ntaxis: MA MAX OF Expresión . Calcula el valor máximo de una Expresión. Devuel Devuelve ve el número número de líneas líneas selecc seleccion ionada adass por por la cláusula WHERE. Sint Sintax axis is:A :AVG VG Expresión . Expresión . Calcula la media de una Expresión. Sintaxis: Expresión Sinta ntaxis: D DA ATE(Expresión ). ). Convierte la expresión en un valor de tipo DATE. Sinta ntaxis: DAY(Expresión ). ). Devuelve el número de día del mes, de la fecha dada como argumento. Sint Sintax axis is:: MDA DAY Y(mm, dd, yyyy ).Devuelve ).Devuelve un valor de tipo DATE de la fecha dada como argumento. Sint Sintax axis is:: MON MONTH TH((Expresión ). ). Devuelve el número del mes de la fecha dada como argumento. Pág. 61
http://www.serem.com
SEREM FORMACIÓN YEA EAR R(): WEEKD WEEKDAY AY((): PAGEN PAGENO: O: LINENO: LINENO: DATE: DA TE: TIM TIME: TODAY TODAY::
Cliente : LUCENT TECHNOLOGIES
Sinta ntaxis: YEA YEAR R(Expresión ). ). Devuelve el número del año de la fecha dada como argumento. Sint Sintax axis is:: WEEKD WEEKDAY AY((Expresión ). ). Devuelve el número del ida de la semana de la fecha dada como argumento. (0: Domingo, 1: Lunes, 2: Martes…) Conti Contiene ene el núme número ro de la págin páginaa actu actual al.. Contie Contiene ne el el núme número ro de la línea línea actual actual de la página. página. Conti Contiene ene la fec fecha ha act actual ual bajo bajo la la forma forma de de caden cadenaa de caracteres en formato americano. Cont Contiiene ene la la hor horaa act actua uall Conti Contiene ene la fec fecha ha act actual ual en mis misma ma form formaa que que el sistema Operativo.
Estructuras de Control
Estructu Estructura ra Secuen Secuencia cial:l: Alter Alternat nativ ivaa (If-T (If-Then hen-E -Els lse) e)::
Bucl Buclee WHILE WHILE:: Buc Bucle FOR: OR:
Las acci acciones ones son ejec ejecutad utadas as en la mism mismaa forma forma en que son encontradas en el código. A veces es necesario utilizar BEGIN y END. Sinta Sintaxi xis: s: IF Condición THEN 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. Sint Sintax axis is:: WH WHIILE Condición DO Condición DO Acción. Se realizará la acción todo el tiempo durante el que se cumpla Condición. Sinta ntaxis: FOR Variable = ValorInicial TO Variable = ValorFinal STEP ValorFinal STEP paso DO 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
Modif y
Cliente : LUCENT TECHNOLOGIES
Generate
New
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 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, 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 Repo Reporrt Quer Queryy-La Lang ngua uage ge 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á Modify permitirá crear un nuevo menú: USER-MENU: Run Modify E x it 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 -------SELECTION SECTION----------------------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 adds new new dat dataa to to the the acti active ve data databa base se tabl tablee ** 1: sysm sysmen enúú tab table le ** ========================MENU ENTRY FORM===================== Menú Menú Name Name Es el el nomb nombre re del menú. menú. Debe Debe llama llamars rsee main . Menú Title Un títul títuloo cualqu cualquier ieraa que que desee desee agregars agregarsee al menú. menú. Aparece Aparecerá rá en la la parte parte superio superiorr
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 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 -------SELECTION SECTION----------------------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 ttoo th the ac active da database ta table ** 2: 2: sy sysmenuitems ta table ** ** ========================MENU ENTRY FORM===================== Menú Name [main ] Menú enú Tit Title le Prim Primer er sist sistem emaa de de me menús nús ----------------------------------------------------------------------------------SELECTION -------SELECTION SECTION----------------------SECTION--------------------------------------------Selection number Número de la Selection Ty Type Tipo de de op operación qu que se se selección. El desee ejecutar. M:Menú, P: primero será “1” Programa, Q: Consulta SQL, R: Informe, F:Formulario, S:Fichero Script. Selection Tex t : Texto que presentará la opción. Selection Actio tion:
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 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 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 ttoo th the ac active da database ta table ** 2: 2: sy sysmenuitems ta table ** ** ========================MENU ENTRY FORM===================== Menú Name [main ] Menú enú Tit Title le Prim Primer er sist sistem emaa de de me menús nús ----------------------------------------------------------------------------------SELECTION -------SELECTION SECTION----------------------SECTION--------------------------------------------Selection number 1 Selection Type F Selection Tex t : 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 ttoo th the ac active da database ta table ** 2: 2: sy sysmenuitems ta table ** ** ========================MENU ENTRY FORM===================== Menú Name [main ] Menú enú Tit Title le Prim Primer er sist sistem emaa de de me menús nús ----------------------------------------------------------------------------------SELECTION -------SELECTION SECTION----------------------SECTION--------------------------------------------Selection number 2 Selection Type R Selection Tex t : 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 ‘e’ to return to previous menu o Exit. 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 INFOR INFORM MIXDI IXDIR R PATH PA TH
TERM TERM y TERM TERMCAP CAP
DBED DB EDIT IT DBPAT DB PATH H DBPR DB PRIN INT T
DBTE DB TEM MP DBDAT DB DATE E
DBMO DB MONE NEY Y
DBM DB MEN ENU U
DBDE DB DELI LIM MITER ITER
Manual de Informix-SQL
Cliente : LUCENT TECHNOLOGIES
Descripción Local Localiz izac ació iónn de los progr program amas as de Informix-SQL. Espe Especi cifificca al shel hell la la localización de los comandos Informix situados en el subdirectorio BIN. Inform Informix ix sumini suministr straa un un arch archivo ivo llamado TERMCAP con información sobre la mayoría de los terminales. Espe Especi cififica ca el edit editor or.. DBEDIT=nombre DBEDIT=nombre editor Espec Especifi ifica ca la ruta ruta de búsque búsqueda da para localizar una base de datos. Espe Especi cififica ca el com coman ando do de de Impresión. DBPRINT=”device DBPRINT=”device ” Espe Especi cififica ca dond dondee se se han han de de almacenar los ficheros temporales. Espec Especifi ifica ca el forma formato to para para los los datos de tipo DATE. DBDATE=formato 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/ Espec Especifi ifica ca el forma formato to de los los datos de tipo MONEY. DBMONEY=separador DBMONEY=separador unidad / unidad separador . Ejemplo: DBMONEY= , Pts Nomb Nombre re del del men menúú de usua usuari rioo llamado por informix-SQL. Informix utiliza el valor por defecto para activar el menú Main. Espec Especifi ifica ca el deli delimi mitad tador or para para los comandos LOAD y UNLOAD.
Pág. 68
Valor por defecto Es necesario establecerlo. Es necesario establecerlo. Es necesario establecerlo. Vi Directorio en curso. Lp
/tmp mdy4/
$100.00
Main
|
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 Systab tables Sysc Syscol olum umns ns Sysi Sysind ndex exes es
Sysusers Syst Systab abau auth th Sysc Syscol olau auth th Syno Synoni nim ms Sysd Sysdep epen ends ds Sysviews ews
Contenido Infor nform mación sobre bre to todas das la las ta tabla blas de de la la ba base de de da datos tos. Es Es la la mas importante del catálogo. Contiene tipos, identificadores y caminos de acceso. Cont Contiiene ene infor nform mació aciónn sobr sobree toda todass las colu colum mnas nas de la base base de datos. Nombres, tipos, longitudes y su posición dentro de la tabla. Cont Contiiene ene inf infor orm maci ación sobr sobree tod todos os los índic ndices es de la base 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. Control trolaa per perm misos y aut autori orizacione ones a nivel de de bas basee de de da datos tos. Para cada usuario, el nombre, la clave, el nivel de privilegios sobre la base de datos y el tipo de usuario. Cont Contrrola ola auto autorrizac izaciiones ones y perm permiisos sos para para las las tabl tablas as.. Cont Contrrola ola auto autorrizac izaciiones ones y perm permiisos sos a nive nivell de colu colum mna. na. Cont Contiiene ene sinó sinóni nimo moss par para las tabl tablas as y las vist vistas as crea creada dass por por los usuarios. Cont Contrrola ola de de qué qué tabl tablas as y vis vista tass dep depen ende de una una vi vista. sta. Así Así, si si una una tabla es suprimida, las vistas a las que está enlazada son suprimidas a su vez. Contie tiene cualqui quier vi vista creada ada de desde una se senten ntenccia RD RDSQL. QL.
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