Upload
edgard-hidalgo
View
62
Download
1
Embed Size (px)
Citation preview
IBM® DB2® Universal Database
Iniciación al SQLVersión 7
GC10-3496-00
IBM
IBM® DB2® Universal Database
Iniciación al SQLVersión 7
GC10-3496-00
IBM
Antes de utilizar esta información y el producto al que da soporte, asegúrese de leer la información general incluidaen el “Apéndice C. Avisos” en la página 115.
Este documento contiene información sobre productos patentados de IBM. Se proporciona de acuerdo con un contratode licencia y está protegido por la ley de la propiedad intelectual. La presente publicación no incluye garantías deproducto y las declaraciones que contiene no deben interpretarse como tales.
Puede solicitar publicaciones a través del representante de IBM o sucursal de IBM de su localidad, o bien llamando alos números de teléfono 1-800-879-2755, en los Estados Unidos, o 1-800-IBM-4YOU, en Canadá.
Cuando envía información a IBM, otorga a IBM un derecho no exclusivo para utilizar o distribuir dicha informaciónen la forma en que IBM considere adecuada, sin contraer ninguna obligación con el remitente.
© Copyright International Business Machines Corporation 1993, 2000. Reservados todos los derechos.
Contenido
Bienvenido . . . . . . . . . . . . vDocumentación afín para este manual. . . . vConvenios tipográficos de resaltado . . . . vi
Capítulo 1. Bases de datos relacionales ySQL . . . . . . . . . . . . . . . 1
Capítulo 2. Organización de los datos . . . 3Tablas . . . . . . . . . . . . . . 3Vistas . . . . . . . . . . . . . . 4Esquemas . . . . . . . . . . . . . 4Tipos de datos . . . . . . . . . . . 5
Capítulo 3. Creación de tablas y vistas . . 9Creación de tablas . . . . . . . . . . 9Inserción de datos . . . . . . . . . . 10Cambio de datos . . . . . . . . . . 12Supresión de datos . . . . . . . . . . 13Creación de vistas . . . . . . . . . . 13
Utilización de vistas para manejar datos . 15
Capítulo 4. Utilización de sentencias SQLpara acceder a datos . . . . . . . . 17Conexión a una base de datos . . . . . . 18Investigación de errores . . . . . . . . 18Selección de columnas . . . . . . . . 19Selección de filas . . . . . . . . . . 20Clasificación de filas . . . . . . . . . 22Supresión de filas duplicadas . . . . . . 24Orden de operaciones . . . . . . . . . 24Utilización de expresiones para calcularvalores . . . . . . . . . . . . . . 25Asignación de nombres a las expresiones . . 26Selección de datos de más de una tabla . . . 26Utilización de una subconsulta . . . . . . 27Utilización de funciones . . . . . . . . 28
Funciones de columna . . . . . . . 29Funciones escalares . . . . . . . . 30Funciones de tabla . . . . . . . . . 30
Agrupación . . . . . . . . . . . . 31Utilización de una cláusula WHERE conuna cláusula GROUP BY . . . . . . . 31Utilización de la cláusula HAVINGdespués de la cláusula GROUP BY . . . 32
Capítulo 5. Expresiones y subconsultas . . 35Selecciones completas escalares . . . . . 35Conversión de tipos de datos . . . . . . 35Expresiones CASE . . . . . . . . . . 36Expresiones de tabla . . . . . . . . . 37
Expresiones de tabla anidadas . . . . . 38Expresiones de tabla comunes . . . . . 39
Nombres de correlación . . . . . . . . 40Subconsultas correlacionadas . . . . . . 41
Implementación de una subconsultacorrelacionada . . . . . . . . . . 43
Capítulo 6. Utilización de operadores ypredicados en consultas . . . . . . . 47Combinación de consultas medianteoperadores de conjunto . . . . . . . . 47
Operador UNION . . . . . . . . . 47Operador EXCEPT . . . . . . . . . 48Operador INTERSECT . . . . . . . 49
Predicados . . . . . . . . . . . . 50Utilización del predicado IN . . . . . 50Utilización del predicado BETWEEN . . . 50Utilización del predicado LIKE. . . . . 51Utilización del predicado EXISTS . . . . 51Predicados cuantificados . . . . . . . 52
Capítulo 7. SQL avanzado . . . . . . . 53Aplicación de reglas de negocio conrestricciones y desencadenantes . . . . . 53
Claves . . . . . . . . . . . . . 54Restricciones de unicidad . . . . . . 54Restricciones de integridad referencial . . 54Restricciones de comprobación de tabla . . 55Desencadenantes . . . . . . . . . 56
Uniones . . . . . . . . . . . . . 60Consultas complejas . . . . . . . . . 65
Consultas ROLLUP y CUBE . . . . . 65Consultas recursivas . . . . . . . . 65
Funciones OLAP . . . . . . . . . . 66
Capítulo 8. Personalización y mejora delmanejo de datos . . . . . . . . . . 67Tipos definidos por el usuario . . . . . . 67Funciones definidas por el usuario . . . . 68Objetos grandes . . . . . . . . . . . 69
© Copyright IBM Corp. 1993, 2000 iii
Manejo de objetos grandes (LOB) . . . . 70Registros especiales . . . . . . . . . 70Introducción a las vistas de catálogo . . . . 71
Selección de filas en catálogos del sistema 71
Apéndice A. Tablas de base de datos deejemplo . . . . . . . . . . . . . 73La base de datos de ejemplo . . . . . . 74
Para crear la base de datos de ejemplo . . 74Borrado de la base de datos de ejemplo . . 74Tabla CL_SCHED . . . . . . . . . 75Tabla DEPARTMENT . . . . . . . . 75Tabla EMPLOYEE . . . . . . . . . 75Tabla EMP_ACT . . . . . . . . . 79Tabla EMP_PHOTO . . . . . . . . 81Tabla EMP_RESUME . . . . . . . . 81Tabla IN_TRAY . . . . . . . . . . 82Tabla ORG . . . . . . . . . . . 82Tabla PROJECT . . . . . . . . . . 83Tabla SALES . . . . . . . . . . . 84Tabla STAFF . . . . . . . . . . . 85Tabla STAFFG . . . . . . . . . . 86
Archivos de ejemplo con el tipo de datosBLOB y CLOB . . . . . . . . . . . 87
Foto de Quintana . . . . . . . . . 87Currículum de Quintana . . . . . . . 87Foto de Nicholls . . . . . . . . . 88Currículum de Nicholls . . . . . . . 89
Foto de Adamson . . . . . . . . . 90Currículum de Adamson. . . . . . . 90Foto de Walker . . . . . . . . . . 91Currículum de Walker . . . . . . . 92
Apéndice B. Utilización de la biblioteca deDB2 . . . . . . . . . . . . . . 93Archivos PDF y manuales impresos sobreDB2 . . . . . . . . . . . . . . . 93
Información sobre DB2 . . . . . . . 93Impresión de los manuales PDF . . . . 104Solicitud de los manuales impresos . . . 105
Documentación en línea de DB2 . . . . . 106Acceso a la ayuda en línea . . . . . . 106Visualización de información en línea . . 108Utilización de los asistentes de DB2 . . . 111Configuración de un servidor dedocumentos . . . . . . . . . . . 112Búsqueda de información en línea . . . 113
Apéndice C. Avisos . . . . . . . . . 115Marcas registradas . . . . . . . . . 118
Índice . . . . . . . . . . . . . 121
Cómo ponerse en contacto con IBM . . 125Información del producto . . . . . . . 125
iv Iniciación al SQL
Bienvenido
Este manual está pensado para proporcionar a los usuarios información básicasobre el Lenguaje de Consulta Estructurada (Structured Query Language,SQL) y las bases de datos relacionales. En el presente manual, el lectorencontrará lo siguiente:v Una descripción de los conceptos básicos utilizados en el producto DB2.v Una explicación de cómo realizar tareas de manejo de bases de datos.v Una demostración de las tareas mediante ejemplos sencillos.
Si usted es el administrador del sistema, antes de poner en práctica cualquierade los ejemplos de este manual, debe realizar lo siguiente:v Instalar y configurar el servidor tal como se describe en el manual Guía
rápida de iniciación correspondiente a su sistema operativo. Crear la base dedatos SAMPLE utilizando la opción ″Primeros Pasos″. La base de datosSAMPLE también se puede crear desde un indicador de línea de mandatos.Vea el manual Consulta de SQL para obtener detalles. Nota: No coloquedatos propios en la base de datos SAMPLE de DB2.
v Crear el ID de usuario del administrador de DB2, tal como se describe en elmanual Guía rápida de iniciación.
Si usted no es el administrador del sistema, asegúrese de que tiene un ID deusuario válido y la autorización y los privilegios apropiados para acceder a labase de datos SAMPLE.
Documentación afín para este manual
Las publicaciones siguientes pueden serle de utilidad:
Guía rápida deiniciación
Contiene información necesaria para instalar y utilizar el gestor de bases dedatos.
Consulta de SQL Contiene información de consulta sobre SQL.
AdministrationGuide
Contiene información necesaria para diseñar, implementar y mantener unabase de datos, a la que se accede de forma local o en un entornocliente/servidor.
ApplicationDevelopment Guide
Explica el proceso de desarrollo de aplicaciones y cómo codificar, compilar yejecutar programas de aplicación que utilizan SQL incorporado para accedera la base de datos, o se ejecutan como procedimientos almacenados DB2utilizando el lenguaje de procedimientos del SQL (u otros lenguajes deprogramación soportados).
© Copyright IBM Corp. 1993, 2000 v
Convenios tipográficos de resaltado
En el presente manual se utilizan los convenios siguientes:
Negrita En los ejemplos, indica mandatos y palabras claves predefinidas por elsistema.
Cursiva Se utiliza para indicar algo de lo siguiente:v La primera aparición de un término nuevov Término que remite a otra fuente de información.
MAYÚSCULAS Se utiliza para indicar algo de lo siguiente:v Mandatos y palabras claves predefinidas por el sistema.v Ejemplos de valores datos determinados o nombres de columnas.
vi Iniciación al SQL
Capítulo 1. Bases de datos relacionales y SQL
En una base de datos relacional, los datos se almacenan en tablas. Una tabla esun conjunto de filas y columnas. La Figura 1 en la página 4 es un ejemplográfico de una tabla. En la figura, las columnas (vertical) y las filas(horizontal) aparecen marcadas. El Lenguaje de Consulta Estructurada (SQL) seutiliza para recuperar o actualizar datos mediante la especificación decolumnas, tablas y las diversas relaciones que existen entre ellas.
El SQL es un lenguaje estandarizado para definir y manejar datos en una basede datos relacional. Las sentencias de SQL se ejecutan mediante un gestor debases de datos. Un gestor de bases de datos es un programa de software quemaneja los datos.
Una base de datos relacional particionada es una base de datos relacional en laque los datos se manejan entre varias particiones (también llamadas nodos).Una forma sencilla de visualizar conceptualmente las particiones es considerarque cada partición es una máquina física. En el presente manual, centraremosnuestra atención en las bases de datos de partición única.
Puede acceder a la base de datos de ejemplo (SAMPLE) y ensayar losejemplos de este manual mediante el SQL interactivo, utilizando una interfaztal como el Procesador de línea de mandatos (CLP) o el Centro de mandatos(CC).
© Copyright IBM Corp. 1993, 2000 1
2 Iniciación al SQL
Capítulo 2. Organización de los datos
Este capítulo ofrece descripciones conceptuales importantes de tablas, vistas yesquemas. Se da una visión general que muestra la conexión existente entre losdiferentes componentes de una base de datos relacional. La última seccióncontiene un breve análisis de algunos de los tipos de datos importantes deuso más frecuente.
Tablas
Las tablas son estructuras lógicas formadas por un número definido decolumnas y un número variable de filas. Una columna es un conjunto devalores pertenecientes a un mismo tipo de datos. Una fila es una sucesión devalores que forman un registro individual de la tabla. Las filas no estánnecesariamente ordenadas dentro de una tabla. Para ordenar el conjuntoresultante, es necesario especificar explícitamente una ordenación en lasentencia SQL que selecciona datos de la tabla. En la intersección de cada filacon cada columna se encuentra un dato elemental determinado que sedenomina valor. En la Figura 1 en la página 4, ’Sanders’ es un ejemplo de unvalor contenido en la tabla.
Una tabla base contiene datos de usuario y se crea mediante la sentenciaCREATE TABLE. Una tabla resultante es un conjunto de filas que el gestor debases de datos selecciona o genera a partir de una o más tablas base parasatisfacer una consulta.
La Figura 1 en la página 4 muestra una sección de una tabla. Las columnas yfilas aparecen marcadas.
© Copyright IBM Corp. 1993, 2000 3
Vistas
Una vista proporciona una forma alternativa de examinar los datos de una omás tablas. Es una ventana dinámica sobre tablas.
Las vistas permiten que varios usuarios vean presentaciones diferentes de losmismos datos. Por ejemplos, varios usuarios pueden estar accediendo a unatabla de datos sobre los empleados de una empresa. Un jefe de departamentopuede ver datos sobre sus empleados, pero no los datos referidos a empleadosde otro departamento. Un jefe de selección de personal puede ver las fechasde contratación de todos los empleados, pero no sus salarios, mientras que unjefe de finanzas ve los salarios pero no las fechas de contratación. Cada unode estos usuarios trabaja con una vista obtenida a partir de una tabla real.Cada vista tiene el aspecto de una tabla y un nombre propio.
La ventaja de utilizar vistas es que pueden servir para controlar el acceso adatos confidenciales. De esta forma, personas diferentes pueden tener acceso acolumnas o filas diferentes de los datos.
Esquemas
Un esquema es un conjunto de objetos con nombre (tablas y vistas, porejemplo). Un esquema proporciona una clasificación lógica de los objetos de labase de datos.
Un esquema se crea implícitamente cuando el usuario crea una tabla, unavista o cualquier otro objeto con nombre. O bien, puede crear un esquemaexplícitamente utilizando la sentencia CREATE SCHEMA.
Figura 1. Visualización de una tabla
4 Iniciación al SQL
Cuando crea un objeto con nombre, puede calificar (asociar) su nombre con elnombre del esquema determinado. El nombre de un objeto con nombre tienedos partes, la primera de las cuales es el nombre del esquema al que estáasignado el objeto. Si no especifica un nombre de esquema, el objeto se asignaal esquema por omisión. (El nombre del esquema por omisión es el ID deautorización del usuario que ejecuta la sentencia.)
En el SQL interactivo, que es el método utilizado para ejecutar los ejemplos deeste manual, el ID de autorización es el ID de usuario especificado mediantela sentencia CONNECT. Por ejemplo, si el nombre de una tabla es STAFF, y elID de usuario especificado es USERXYZ, entonces el nombre de tablacalificado es USERXYZ.STAFF. Vea “Conexión a una base de datos” en lapágina 18 para obtener detalles sobre la sentencia CONNECT.
Algunos nombres de esquema son reservados. Por ejemplo, las funcionesincorporadas pertenecen al esquema SYSIBM, mientras que las funcionesdefinidas por usuario preinstaladas pertenecen al esquema SYSFUN. Vea elmanual Consulta de SQL para obtener detalles sobre la sentencia CREATESCHEMA.
Tipos de datos
Los tipos de datos definen valores aceptables para constantes, columnas,variables de lenguaje principal, funciones, expresiones y registros especiales.Esta sección describe los tipos de datos a los que hacen referencia losejemplos. Para obtener una lista y descripción completas de otros tipos dedatos, vea el manual Consulta de SQL.
Serie de caracteres
Una serie de caracteres es una secuencia de bytes. La longitud de laserie es el número de bytes de la secuencia. Si la longitud es cero, elvalor se denomina serie vacía.
Serie de caracteres de longitud fija
CHAR(x) es una serie de caracteres de longitud fija. Elatributo de longitud x debe estar comprendido entre 1 y 254,inclusive.
Serie de caracteres de longitud variable
Las series de caracteres de longitud variable son de tres tipos:VARCHAR, LONG VARCHAR y CLOB.
Los tipos VARCHAR(x) son series de caracteres de longitudvariable, por lo que una serie de longitud 9 se puede insertaren VARCHAR(15), pero la longitud de la serie será 9.
Capítulo 2. Organización de los datos 5
Vea “Objetos grandes” en la página 69 para obtener detallessobre CLOB.
Serie gráfica de caracteres
Una serie gráfica es una secuencia de datos de caracteres de doble byte.
Serie gráfica de longitud fija
GRAPHIC(x) es una serie de caracteres de longitud fija. Elatributo de longitud x debe estar comprendido entre 1 y 127,inclusive.
Serie gráfica de longitud variable
Las series gráficas de longitud variable son de tres tipos:VARGRAPHIC, LONG VARGRAPHIC y DBCLOB. Vea“Objetos grandes” en la página 69 para obtener detalles sobreDBCLOB.
Serie binaria de caracteres
Una serie binaria es una secuencia de bytes. Se utiliza para representardatos no tradicionales, tales como imágenes. Binary Large OBject(BLOB) es una serie binaria. Vea “Objetos grandes” en la página 69para obtener más información.
Números
Todos los números tienen un signo y una precisión. La precisión es elnúmero de bits o dígitos excluido el signo.
SMALLINTSMALLINT (″small integer″) es un número entero de dos bytescon una precisión de 5 dígitos.
INTEGERINTEGER (″large integer″) es un número entero de cuatro bytescon una precisión de 10 dígitos.
BIGINTBIGINT (″big integer″) es un número entero de ocho bytes conuna precisión de 19 dígitos.
REAL REAL (número de coma flotante y precisión simple) es unaaproximación de 32 bits de un número real.
DOUBLEDOUBLE (número de coma flotante y precisión doble) es unaaproximación de 64 bits de un número real. DOUBLE tambiénse denomina FLOAT.
DECIMAL(p,s)
6 Iniciación al SQL
DECIMAL es un número decimal. La posición de la comadecimal está determinada por la precisión (p) y la escala (s) delnúmero. La precisión es el número total de dígitos y debe sermenor que 32. La escala es el número de dígitos de la partefraccionaria y siempre es menor o igual que el valor de laprecisión. Si no se especifican la precisión ni la escala, poromisión toman los valores de 5 y 0, respectivamente.
Valores de fecha y hora
Los valores de fecha y hora son representaciones de fechas, horas eindicaciones de fecha y hora (serie de caracteres de 14 dígitos querepresenta una fecha y hora válidas en el formato aaaaxxddhhmmss).Los valores de fecha y hora se pueden utilizar en determinadasoperaciones aritméticas y operaciones sobre series de caracteres; soncompatibles con determinadas series de caracteres, pero no son niseries ni números.1
Fecha Una fecha es un valor que consta de tres partes (año, mes ydía).
Hora Una hora es un valor que consta de tres partes (hora, minuto ysegundo) y designa una hora del día de acuerdo con un relojde 24 horas.
Indicación de fecha y horaUna indicación de fecha y hora es un valor que consta de sietepartes (año, mes, día, hora, minuto, segundo y microsegundo)y designa una fecha y una hora.
Valor nulo
El valor nulo es un valor especial que es distinto de todos los valoresno nulos. Significa la ausencia de cualquier otro valor en la columna yfila en cuestión. El valor nulo existe para todos los tipos de datos.
La tabla siguiente destaca las características de los tipos de datosutilizados en los ejemplos. Todos los tipos de datos numéricos estándefinidos en un rango determinado. El rango de los tipos de datosnuméricos también se incluye en la tabla. Puede utilizar esta tablacomo guía de consulta rápida para conocer la utilización correcta delos tipos de datos.
1. En el presente manual, se hace referencia a las representaciones ISO de los valores de fecha y hora.
Capítulo 2. Organización de los datos 7
Tipo dedatos
Tipo Característica Ejemplo o rango
CHAR(15) serie decaracteres delongitud fija
longitud máxima igual a254
’día soleado ’
VARCHAR(15) serie decaracteres delongitudvariable
longitud máxima igual a32672
’día soleado’
SMALLINT número 2 bytes de longitud 5dígitos de precisión
rango de -32768 a 32767
INTEGER número 4 bytes de longitud 10dígitos de precisión
rango de -2147483648 a2147483647
BIGINT número 8 bytes de longitud 19dígitos de precisión
rango de-9223372036854775808 a9223372036854775807
REAL número aproximación de 32 bits decoma flotante y precisiónsimple
rango de -3,402E+38 a-1,175E-37 o de 1,175E-37 a-3,402E+38 o cero
DOUBLE número aproximación de 64 bits decoma flotante y precisióndoble
rango de -1,79769E+308 a-2,225E-307 o de 2,225E-307a 1,79769E+308 o cero
DECIMAL(5,2) número la precisión es 5 la escalaes 2
rango de -10**31+1 a10**31-1
DATE fecha y hora valor de tres partes 1991-10-27
TIME fecha y hora valor de tres partes 13.30.05
TIMESTAMP fecha y hora valor de siete partes 1991-10-27-13.30.05.000000
Vea la tabla Compatibilidad de los Tipos de Datos, en el manual Consulta deSQL, para obtener más información.
8 Iniciación al SQL
Capítulo 3. Creación de tablas y vistas
Este capítulo describe cómo puede crear y manejar tablas y vistas en DB2Universal Database. Mediante diagramas y ejemplos se examina la relaciónentre tablas y vistas.
Este capítulo trata los temas siguientes:v Creación de tablas y Creación de vistasv Inserción de datosv Cambio de datosv Supresión de datosv Utilización de vistas para manejar datos
Creación de tablas
Para crear sus propias tablas utilice la sentencia CREATE TABLE,especificando los nombres y tipos de las columnas, así como restricciones. Lasrestricciones se analizan en “Aplicación de reglas de negocio con restriccionesy desencadenantes” en la página 53.
La sentencia siguiente crea una tabla llamada PERS, que es similar a la tablaSTAFF, pero tiene una columna más para la fecha de nacimiento.
CREATE TABLE PERS( ID SMALLINT NOT NULL,NAME VARCHAR(9),DEPT SMALLINT WITH DEFAULT 10,JOB CHAR(5),YEARS SMALLINT,SALARY DECIMAL(7,2),COMM DECIMAL(7,2),BIRTH_DATE DATE)
Esta sentencia crea una tabla que no contiene datos. La sección siguientedescribe cómo insertar datos en una tabla nueva.
Tal como muestra el ejemplo, se especifica un nombre y un tipo de datos paracada columna. Los tipos de datos se tratan en “Tipos de datos” en la página 5.NOT NULL es opcional y se puede especificar para indicar que no sepermiten valores nulos en una columna. Los valores por omisión también sonopcionales.
Existen otras muchas opciones que puede especificar en una sentenciaCREATE TABLE, tales como restricciones de unicidad o restricciones referenciales.
© Copyright IBM Corp. 1993, 2000 9
Para obtener más información sobre todas las opciones, vea la sentenciaCREATE TABLE en el manual Consulta de SQL.
Inserción de datos
Cuando crea una nueva tabla, no contiene ningún dato. Para entrar nuevasfilas en una tabla, debe utilizar la sentencia INSERT. Esta sentencia tiene dosformatos generales:v En uno de los formatos, se utiliza una cláusula VALUES para especificar
valores para las columnas de una o más filas. Este formato general es elutilizado en los tres ejemplos siguientes para insertar datos en las tablas.
v En el otro formato, en lugar de especificar valores, se especifica unaselección completa para identificar columnas pertenecientes a filas de otrastablas y/o vistas.
La selección completa es una sentencia de selección que se utiliza en lassentencias INSERT o CREATE VIEW, o a continuación de un predicado.Cuando una selección completa está encerrada entre paréntesis sueledenominarse subconsulta.
Dependiendo de las opciones por omisión que haya elegido al crear la tabla,para cada fila que inserte, debe proporcionar un valor a cada columna oaceptar un valor por omisión. Los valores por omisión de los diversos tiposde datos se tratan en el manual Consulta de SQL.
La sentencia siguiente utiliza una cláusula VALUES para insertar una fila dedatos en la tabla PERS:
INSERT INTO PERSVALUES (12, 'Harris', 20, 'Sales', 5, 18000, 1000, '1950-1-1')
La sentencia siguiente utiliza la cláusula VALUES para insertar tres filas en latabla PERS, en la que sólo se conocen los ID, los nombres y los puestos detrabajo. Si una columna está definida como NOT NULL y no tiene valor poromisión, debe especificar un valor para ella.
Puede utilizar las palabras WITH DEFAULT para ampliar la cláusula NOTNULL de una definición de columna en una sentencia CREATE TABLE. Siuna columna está definida como NOT NULL WITH DEFAULT o como valorpor omisión fijo, tal como WITH DEFAULT 10, y no especifica la columna enla lista de columnas, el valor por omisión se coloca en esa columna en la filainsertada. Por ejemplo, en la sentencia CREATE TABLE, se especificó un valorpor omisión sólo para la columna DEPT y se definió como igual a 10. Por lotanto, el número de departamento (DEPT) se establece en 10 y cualquier otracolumna cuyo valor no se proporcione explícitamente se establece en NULL.
10 Iniciación al SQL
INSERT INTO PERS (NAME, JOB, ID)VALUES ('Swagerman', 'Prgmr', 500),
('Limoges', 'Prgmr', 510),('Li', 'Prgmr', 520)
La sentencia siguiente devuelve el resultado de las inserciones:SELECT *
FROM PERS
ID NAME DEPT JOB YEARS SALARY COMM BIRTH_DATE------ --------- ------ ----- ------ --------- --------- ----------
12 Harris 20 Sales 5 18000.00 1000.00 01/01/1950500 Swagerman 10 Prgmr - - - -510 Limoges 10 Prgmr - - - -520 Li 10 Prgmr - - - -
Observe que, en este caso, no se han especificado valores para cada columna.Los valores NULL se visualizan en forma de guión (–). Para que este esquemafuncione, la lista de nombres de columnas debe corresponder, en orden y entipo de datos, con los valores proporcionados en la cláusula VALUES. Si seomite la lista de nombres de columnas (como ocurre en el primer ejemplo), lalista de los valores de datos que siguen a VALUES deben estar en el mismoorden que las columnas de la tabla en la que se insertan, y el número devalores debe ser igual al número de columnas de la tabla.
Cada valor debe ser compatible con el tipo de datos de la columna donde seinserta el valor. Si la definición de una columna indica que la columna puedecontener un valor nulo y no se especifica un valor para esa columna, entoncesse da el valor NULL a esa columna en la fila insertada.
El ejemplo siguiente inserta el valor nulo en YEARS, COMM y BIRTH_DATE,pues no se han especificado valores para esas columnas de la fila.
INSERT INTO PERS (ID, NAME, JOB, DEPT, SALARY)VALUES (410, 'Perna', 'Sales', 20, 20000)
El segundo formato de la sentencia INSERT es muy práctico para llenar unatabla con valores procedentes de filas de otra tabla. Tal como se mencionó, enlugar de especificar valores, se especifica una selección completa paraidentificar columnas pertenecientes a filas de otras tablas y/o vistas.
El ejemplo siguiente selecciona datos de la tabla STAFF correspondientes amiembros del departamento 38 y los inserta en la tabla PERS:
INSERT INTO PERS (ID, NAME, DEPT, JOB, YEARS, SALARY)SELECT ID, NAME, DEPT, JOB, YEARS, SALARY
FROM STAFFWHERE DEPT = 38
Capítulo 3. Creación de tablas y vistas 11
Después de esta inserción, la siguiente sentencia SELECT produce unresultado igual a la selección completa de la sentencia INSERT.
SELECT ID, NAME, DEPT, JOB, YEARS, SALARYFROM PERSWHERE DEPT = 38
El resultado es:ID NAME DEPT JOB YEARS SALARY------ --------- ------ ----- ------ ---------
30 Marenghi 38 Mgr 5 17506.7540 O'Brien 38 Sales 6 18006.0060 Quigley 38 Sales - 16808.30120 Naughton 38 Clerk - 12954.75180 Abrahams 38 Clerk 3 12009.75
Cambio de datos
Utilice la sentencia UPDATE para modificar los datos de una tabla. Medianteesta sentencia, puede cambiar el valor de una o más columnas para cada filaque cumpla la condición de búsqueda impuesta por la cláusula WHERE.
El ejemplo siguiente actualiza información referente al empleado cuyo ID es410:
UPDATE PERSSET JOB='Prgmr', SALARY = SALARY + 300WHERE ID = 410
La cláusula SET especifica las columnas que se deben actualizar y proporcionalos valores.
La cláusula WHERE es opcional y especifica las filas que se deben actualizar.Si se omite la cláusula WHERE, el gestor de bases de datos actualiza cada filade la tabla o vista con los valores proporcionados por el usuario.
En este ejemplo, primero se menciona la tabla (PERS), después se especificauna condición para la fila que se debe actualizar. La informacióncorrespondiente al empleado número 410 ha cambiado: su puesto de trabajoahora es Prgmr y su salario ha aumentado en $300.
Puede modificar los datos de varias filas incluyendo una cláusula WHEREque sea aplicable a dos o más filas. El ejemplo siguiente aumenta el salario decada vendedor en un 15%:
UPDATE PERSSET SALARY = SALARY * 1.15WHERE JOB = 'Sales'
12 Iniciación al SQL
Supresión de datos
Utilice la sentencia DELETE para suprimir filas de datos de una tablabasándose en la condición de búsqueda especificada por la cláusula WHERE.El ejemplo siguiente suprime la fila donde el ID de empleado es 120:
DELETE FROM PERSWHERE ID = 120
La cláusula WHERE es opcional y especifica las filas que se deben suprimir. Sise omite la cláusula WHERE, el gestor de bases de datos suprime todas lasfilas de la tabla o vista.
Puede utilizar la sentencia DELETE para suprimir más de una fila. El ejemplosiguiente suprime todas las filas donde el departamento del empleado es 20:
DELETE FROM PERSWHERE DEPT = 20
Cuando suprime una fila, suprime la fila completa, no valores determinadosde ella.
Para suprimir la definición de una tabla así como su contenido, emita lasentencia DROP TABLE, tal como se describe en el manual Consulta de SQL.
Creación de vistas
Tal como se describe en “Vistas” en la página 4, una vista proporciona unaforma alternativa de examinar los datos de una o más tablas. Mediante lacreación de vistas, puede restringir la información a la que podrán acceder losdiversos usuarios. El diagrama siguiente muestra la relación entre vistas ytablas.
En la Figura 2 en la página 14, View_A permite el acceso sólo a las columnasAC1 y AC2 de TABLE_A.
View_AB permite el acceso a la columna AC3 de TABLE_A y a la columnaBC2 de TABLE_B.
Mediante View_A, restringe el acceso que los usuarios tienen a TABLE_A, ymediante VIEW_AB, limita el acceso a determinadas columnas de ambastablas.
Capítulo 3. Creación de tablas y vistas 13
La sentencia siguiente crea una vista de los empleados no directivos deldepartamento 20 de la tabla STAFF, donde no se muestra ni el salario ni lacomisión contenidos en la tabla base.
CREATE VIEW STAFF_ONLYAS SELECT ID, NAME, DEPT, JOB, YEARS
FROM STAFFWHERE JOB <> 'Mgr' AND DEPT=20
Después de crear la vista, la sentencia siguiente visualiza el contenido de lavista:
SELECT *FROM STAFF_ONLY
Esta sentencia produce el resultado siguiente:ID NAME DEPT JOB YEARS------ --------- ------ ----- ------
20 Pernal 20 Sales 880 James 20 Clerk -190 Sneider 20 Clerk 8
Figura 2. Relación entre tablas y vistas
14 Iniciación al SQL
Como ejemplo adicional, podemos utilizar las tablas STAFF y ORG para crearuna vista que lista el nombre de cada departamento y el nombre del jefe deese departamento. La sentencia siguiente crea dicha vista:
CREATE VIEW DEPARTMENT_MGRSAS SELECT NAME, DEPTNAME
FROM STAFF, ORGWHERE MANAGER = ID
Puede limitar la posibilidad de hacer inserciones y actualizaciones en unatabla mediante una vista utilizando la cláusula WITH CHECK OPTION alcrear una vista. Esta cláusula hace que el gestor de bases de datos verifiqueque cualquier actualización o inserción en la vista se ajuste a la definición dela vista, y rechace las que no sean conformes. Si se omite esta cláusula, lasinserciones y actualizaciones no se comparan con la definición de la vista.Para obtener detalles sobre cómo opera la cláusula WITH CHECK OPTION,vea la sentencia CREATE VIEW en el manual Consulta de SQL.
Utilización de vistas para manejar datosAl igual que la sentencia SELECT, las sentencias INSERT, DELETE y UPDATEse aplican a una vista como si ésta fuera una tabla real. Las sentenciasmanejan los datos contenidos en la(s) tabla(s) base asociada(s). Cuando seaccede de nuevo a la vista, se evalúa utilizando las tablas base más actuales.Si no se utiliza la cláusula WITH CHECK OPTION, los datos modificadosmediante una vista pueden no aparecer en los nuevos accesos a la vista, puespuede que los datos ya no sean conformes a la definición original de la vista.
El ejemplo siguiente actualiza la vista FIXED_INCOME:CREATE VIEW FIXED_INCOME (LNAME, DEPART, JOBTITLE, NEWSALARY)
AS SELECT NAME, DEPT, JOB, SALARYFROM PERSWHERE JOB <> 'Sales' WITH CHECK OPTION
UPDATE FIXED_INCOMESET NEWSALARY = SALARY * 1.10WHERE LNAME = 'Li'
La actualización realizada en la vista anterior equivale (salvo por la opción devalidación) a actualizar la tabla base PERS:
UPDATE PERSSET SALARY = SALARY * 1.10WHERE NAME = 'Li'
AND JOB <> 'Sales'
Observe que debido a que la vista se crea utilizando WITH CHECK OPTIONpara la restricción JOB <> 'Sales' en CREATE VIEW FIXED_INCOME, laactualización siguiente no se permitirá cuando el empleado Limoges pase aVentas:
Capítulo 3. Creación de tablas y vistas 15
UPDATE FIXED_INCOMESET JOBTITLE = 'Sales'WHERE LNAME = 'Limoges'
Las columnas definidas por expresiones tales como SALARY + COMM oSALARY * 1.25 no se pueden actualizar. Si define una vista que contiene unao más de tales columnas, el propietario no recibe el privilegio de actualizaciónpara dichas columnas. Las sentencias INSERT no están permitidas en lasvistas que contienen tales columnas, pero sí que pueden utilizarse sentenciasDELETE.
Considere una tabla PERS donde ninguna columna está definida como NOTNULL. Podría insertar filas en la tabla PERS mediante la vistaFIXED_INCOME, aunque la vista no contenga las columnas ID, YEARS,COMM ni BIRTHDATE de la tabla PERS en la que se basa. Las columnas novisualizables mediante la vista se establecen en NULL o en el valor poromisión, según corresponda.
Sin embargo, la tabla PERS tiene la columna ID definida como NOT NULL. Siintenta insertar una fila mediante la vista FIXED_INCOME, el sistema intentainsertar valores nulos en todas las columnas de PERS que la vista “no puedevisualizar”. Debido a que la columna ID no está incluida en la vista y nopermite valores nulos, el sistema no autoriza la inserción mediante la vista.
Para conocer las reglas y restricciones referentes a la modificación de vistas,vea la sentencia CREATE VIEW en el manual Consulta de SQL.
16 Iniciación al SQL
Capítulo 4. Utilización de sentencias SQL para acceder adatos
Esta sección describe cómo conectarse a una base de datos y recuperar datosutilizando sentencias SQL.
Los ejemplos muestran la sentencia a entrar seguida (en la mayoría de loscasos) por los resultados que se obtendrían al emitir la sentencia para la basede datos de ejemplo. Observe que aunque las sentencias aparecen escritas enmayúsculas, se pueden entrar según una combinación cualquiera de caracteresen mayúsculas y minúsculas (excepto cuando la sentencia está encerrada entrecomillas simples (’) o comillas dobles (’’)).
La base de datos SAMPLE, incluida con DB2 Universal Database, consta devarias tablas, que están listadas en el “Apéndice A. Tablas de base de datos deejemplo” en la página 73. Esta base de datos se puede crear utilizando el panelde instalación ″Primeros Pasos″. También puede crear la base de datosSAMPLE desde la línea de mandatos. Vea el manual Consulta de SQL paraobtener más detalles.
Observe que DB2 Universal Database incluye otras bases de datos de ejemplopara mostrar la funcionalidad del Data Warehouse Center y del OLAP StarterKit. Los ejemplos del presente manual sólo utilizan la base de datos generalSAMPLE.
Dependiendo de cómo se haya configurado la base de datos, puede sernecesario que califique los nombres de tablas utilizados anteponiendo comoprefijo el nombre de esquema y un punto. Para los ejemplos de este manual,se supone que el esquema por omisión es USERID. Por tanto, puede hacerreferencia a la tabla ORG como USERID.ORG. Consulte al administrador siesto es necesario o no.
Este capítulo trata los temas siguientes:v Conexión a una base de datosv Investigación de erroresv Selección de columnas y Selección de filasv Clasificación de filas y Supresión de filas duplicadasv Orden de operacionesv Utilización de expresiones para calcular valoresv Asignación de nombres a las expresiones
© Copyright IBM Corp. 1993, 2000 17
v Selección de datos de más de una tablav Utilización de una subconsultav Utilización de funcionesv Agrupación
Conexión a una base de datos
Es necesario que se conecte a una base de datos para poder utilizar sentenciasSQL a fin de consultar o manejar la base de datos. La sentencia CONNECTasocia una conexión de base de datos con un nombre de usuario.
Por ejemplo, para conectarse a la base de datos SAMPLE, escriba el mandatosiguiente en el procesador de línea de mandatos de DB2 :
CONNECT TO SAMPLE USER USERID USING PASSWORD
(Asegúrese de que elige un ID de usuario y una contraseña que sean válidosen el sistema servidor).
En este ejemplo, USER es USERID y USING es PASSWORD.
El mensaje siguiente le indica que ha establecido una conexión satisfactoria:Database Connection Information
Database product = DB2/NT 7.1.0SQL authorization ID = USERIDLocal database alias = SAMPLE
Una vez conectado, puede empezar a manejar la base de datos. Para obtenermás detalles sobre las conexiones, consulte la sentencia CONNECT en elmanual Consulta de SQL.
Investigación de errores
Cada vez que comete un error al escribir cualquiera de los ejemplos o seproduce un error durante la ejecución de una sentencia SQL, el gestor debases de datos devuelve un mensaje de error. El mensaje de error consta deun identificador de mensaje, una breve explicación y un estado SQL(SQLSTATE).
Los errores SQLSTATE son códigos de error comunes a la familia deproductos DB2. Los errores SQLSTATE se ajustan al estándar SQL92 deISO/ANSI.
Por ejemplo, si el ID de usuario o la contraseña eran incorrectos en lasentencia CONNECT, el gestor de bases de datos devuelve el identificador demensaje SQL1403N y el estado SQL 08004. El mensaje es el siguiente:
18 Iniciación al SQL
SQL1403N El nombre de usuario y/o la contraseña proporcionadosson incorrectos. SQLSTATE=08004
Puede obtener más información sobre el mensaje de error escribiendo unsigno de interrogación final (?) seguido del identificador de mensaje o elestado SQL:
? SQL1403NO BIEN
? SQL1403O BIEN
? 08004
Observe que la penúltima línea de la descripción del error SQL1403N indicaque el código SQL es -1403. El código SQL es un código de error específicodel producto. Los identificadores de mensaje que terminan con una N(Notificación) o una C (Crítico) representan un error y tienen un código SQLnegativo. Los identificadores de mensaje que terminan con una W (de″Warning″, Aviso) representan un aviso y tienen un código SQL positivo.
Selección de columnas
Utilice la sentencia SELECT para seleccionar determinadas columnas de unatabla. En la sentencia, especifique una lista de nombres de columnasseparados por comas. Esta lista se denomina lista de selección.
La sentencia siguiente selecciona nombres de departamento (DEPTNAME) ynúmeros de departamento (DEPTNUMB) de la tabla ORG de la base de datosSAMPLE:
SELECT DEPTNAME, DEPTNUMBFROM ORG
Esta sentencia produce el resultado siguiente:
DEPTNAME DEPTNUMB-------------- --------Head Office 10New England 15Mid Atlantic 20South Atlantic 38Great Lakes 42Plains 51Pacific 66Mountain 84
Utilizando un asterisco (*) puede seleccionar todas las columnas de la tabla. Elejemplo siguiente lista todas las columnas y filas de la tabla ORG:
Capítulo 4. Utilización de sentencias SQL para acceder a datos 19
SELECT *FROM ORG
Esta sentencia produce el resultado siguiente:DEPTNUMB DEPTNAME MANAGER DIVISION LOCATION-------- -------------- ------- ---------- -------------
10 Head Office 160 Corporate New York15 New England 50 Eastern Boston20 Mid Atlantic 10 Eastern Washington38 South Atlantic 30 Eastern Atlanta42 Great Lakes 100 Midwest Chicago51 Plains 140 Midwest Dallas66 Pacific 270 Western San Francisco84 Mountain 290 Western Denver
Selección de filas
Para seleccionar determinadas filas de una tabla, a continuación de lasentencia SELECT utilice la cláusula WHERE para especificar la condición ocondiciones que debe cumplir una fila para ser seleccionada. Un criterio paraseleccionar filas de una tabla es una condición de búsqueda.
Una condición de búsqueda consta de uno o más predicados. Un predicadoespecifica una condición que es verdadera o falsa (o desconocida) referente auna fila. Puede especificar condiciones en la cláusula WHERE utilizando lospredicados básicos siguientes:
Predicado Función
x = y x es igual a y
x <> y x no es igual a y
x < y x es menor que y
x > y x es mayor que y
x <= y x es menor o igual que y
x >= y x es mayor o igual que y
IS NULL/IS NOT NULL verifica la existencia de valores nulos
Cuando defina condiciones de búsqueda, tenga la precaución de realizaroperaciones aritméticas sólo sobre tipos de datos numéricos y hacercomparaciones sólo entre tipos de datos compatibles. Por ejemplo, no puedecomparar series de texto con números.
Si selecciona filas basándose en un valor de tipo carácter, ese valor debe estarencerrado entre comillas simples (por ejemplo, WHERE JOB = 'Clerk') y cadacarácter se debe escribir exactamente tal como existe en la base de datos. Si el
20 Iniciación al SQL
valor de datos está escrito en minúsculas en la base de datos y lo escribe enmayúsculas, no se seleccionará ninguna fila. Si selecciona filas basándose enun valor numérico, ese valor no debe estar encerrado entre comillas (porejemplo, WHERE DEPT = 20).
El ejemplo siguiente selecciona sólo las filas de la tabla STAFFcorrespondientes al departamento 20:
SELECT DEPT, NAME, JOBFROM STAFFWHERE DEPT = 20
Esta sentencia produce el resultado siguiente:DEPT NAME JOB------ --------- -----
20 Sanders Mgr20 Pernal Sales20 James Clerk20 Sneider Clerk
El ejemplo siguiente utiliza AND para especificar más de una condición.Puede especificar tantas condiciones como desee. El ejemplo selecciona losoficinistas del departamento 20 de la tabla STAFF:
SELECT DEPT, NAME, JOBFROM STAFFWHERE JOB = 'Clerk'AND DEPT = 20
Esta sentencia produce el resultado siguiente:DEPT NAME JOB------ --------- -----
20 James Clerk20 Sneider Clerk
Se genera un valor nulo cuando no se especifica ningún valor y la columna noacepta un valor por omisión. También puede darse cuando el valor seestablece específicamente en un valor nulo. Sólo puede ocurrir en lascolumnas que están definidas para aceptar valores nulos. La definición yaceptación de valores nulos en tablas se trata en “Creación de tablas” en lapágina 9.
Utilice los predicados IS NULL y IS NOT NULL para verificar un valor nulo.
La sentencia siguiente lista empleados cuya comisión no se conoce:SELECT ID, NAME
FROM STAFFWHERE COMM IS NULL
Capítulo 4. Utilización de sentencias SQL para acceder a datos 21
Esta sentencia produce el resultado siguiente:ID NAME------ ---------
10 Sanders30 Marenghi50 Hanes
100 Plotz140 Fraye160 Molinare210 Lu240 Daniels260 Jones270 Lea290 Quill
El valor cero no es lo mismo que el valor nulo. La sentencia siguienteselecciona los empleados de una tabla cuya comisión es cero:
SELECT ID, NAMEFROM STAFFWHERE COMM = 0
Debido a que no existen valores iguales a cero en la columna COMM de latabla de ejemplo, el conjunto resultante devuelto esta vacío.
El ejemplo siguiente selecciona todas las filas de la tabla STAFF para las queel valor de YEARS es mayor que 9:
SELECT NAME, SALARY, YEARSFROM STAFFWHERE YEARS > 9
Esta sentencia produce el resultado siguiente:NAME SALARY YEARS--------- --------- ------Hanes 20659.80 10Lu 20010.00 10Jones 21234.00 12Quill 19818.00 10Graham 21000.00 13
Clasificación de filas
Puede desear que la información devuelta esté en un orden determinado.Utilice la cláusula ORDER BY para clasificar la información según los valoresde una o más columnas.
22 Iniciación al SQL
La sentencia siguiente visualiza los empleados del departamento 84clasificados por el número de años en el empleo:
SELECT NAME, JOB, YEARSFROM STAFFWHERE DEPT = 84ORDER BY YEARS
Esta sentencia produce el resultado siguiente:NAME JOB YEARS--------- ----- ------Davis Sales 5Gafney Clerk 5Edwards Sales 7Quill Mgr 10
Especifique ORDER BY como última cláusula de la sentencia SELECTcompleta. Las columnas mencionadas en esta cláusula pueden ser expresioneso cualquier columna de la tabla. Los nombres de columnas indicados en lacláusula ORDER BY no es necesario especificarlos en la lista de selección.
Puede ordenar las filas por orden ascendente o descendente, especificandoexplícitamente ASC o DESC en la cláusula ORDER BY. Si no se especificaningún orden, las filas se ordenan automáticamente por orden ascendente. Lasentencia siguiente visualiza los empleados del departamento 84 clasificadospor orden descendente según el número de años en el empleo:
SELECT NAME, JOB, YEARSFROM STAFFWHERE DEPT = 84ORDER BY YEARS DESC
Esta sentencia produce el resultado siguiente:NAME JOB YEARS--------- ----- ------Quill Mgr 10Edwards Sales 7Davis Sales 5Gafney Clerk 5
Las filas se pueden ordenar por valores de tipo carácter así como por valoresnuméricos. La sentencia siguiente visualiza los empleados del departamento84 clasificados por orden alfabético del nombre:
SELECT NAME, JOB, YEARSFROM STAFFWHERE DEPT = 84ORDER BY NAME
Esta sentencia produce el resultado siguiente:
Capítulo 4. Utilización de sentencias SQL para acceder a datos 23
NAME JOB YEARS--------- ----- ------Davis Sales 5Edwards Sales 7Gafney Clerk 5Quill Mgr 10
Supresión de filas duplicadas
Puede desear que la sentencia SELECT no le devuelva información duplicada.Por ejemplo, STAFF tiene una columna DEPT con varios números dedepartamento que están listados más de una vez, y una columna JOB en laque aparecen descripciones repetidas de puestos de trabajo.
Para eliminar filas duplicadas, utilice la opción DISTINCT en la cláusulaSELECT. Por ejemplo, si inserta DISTINCT en la sentencia, cada puesto detrabajo de un departamento se lista una sola vez:
SELECT DISTINCT DEPT, JOBFROM STAFFWHERE DEPT < 30ORDER BY DEPT, JOB
Esta sentencia produce el resultado siguiente:DEPT JOB------ -----10 Mgr15 Clerk15 Mgr15 Sales20 Clerk20 Mgr20 Sales
DISTINCT ha suprimido todas las filas que contienen datos duplicados en elconjunto de columnas especificadas en la sentencia SELECT.
Orden de operaciones
Es importante tener en cuenta el orden de las operaciones. El resultado de unacláusula es la entrada para la siguiente, como se indica en la lista mostradamás abajo. En la sección “Asignación de nombres a las expresiones” en lapágina 26 se muestra un ejemplo donde el orden de las operaciones esimportante.
La secuencia siguiente de operaciones no es necesariamente la forma en quelas operaciones se realizan dentro del código de DB2. Esta explicación sencillasimplemente permite tener una visión más intuitiva de las consultas de basesde datos. La secuencia de operaciones es la siguiente:
24 Iniciación al SQL
1. Cláusula FROM2. Cláusula WHERE3. Cláusula GROUP BY4. Cláusula HAVING5. Cláusula SELECT6. Cláusula ORDER BY
Utilización de expresiones para calcular valores
Una expresión es un cálculo o función incluido en una sentencia. La sentenciasiguiente calcula los salarios que recibirían los empleados del departamento 38si cada uno recibiera una prima de $500:
SELECT DEPT, NAME, SALARY + 500FROM STAFFWHERE DEPT = 38ORDER BY 3
El resultado es:DEPT NAME 3------ --------- ----------------38 Abrahams 12509.7538 Naughton 13454.7538 Quigley 17308.3038 Marenghi 18006.7538 O'Brien 18506.00
Observe que el nombre de la tercera columna es un número. Este número logenera el sistema, pues SALARY+500 no especifica un nombre de columna.Posteriormente, la cláusula ORDER BY utiliza este número para hacerreferencia a la tercera columna. La sección “Asignación de nombres a lasexpresiones” en la página 26 describe cómo dar nombres significativos a lasexpresiones.
Puede formar expresiones aritméticas utilizando los operadores aritméticosbásicos correspondientes a la suma (+), la resta (−), la multiplicación (*) y ladivisión ( ⁄).
Los operadores pueden actuar sobre valores numéricos contenidos en diversostipos de operandos, algunos de los cuales son:v Nombres de columnas (como en RATE * HOURS)v Valores constantes (como en RATE * 1.07)v Funciones escalares (como en LENGTH(NAME) + 1).
Capítulo 4. Utilización de sentencias SQL para acceder a datos 25
Asignación de nombres a las expresiones
La cláusula opcional AS le permite asignar un nombre significativo a unaexpresión, lo cual hace más fácil hacer referencia a la expresión. Puede utilizaruna cláusula AS para dar un nombre a un elemento cualquiera de la lista deselección.
La sentencia siguiente visualiza todos los empleados cuyo salario máscomisión es menor que $13.000. La expresión SALARY + COMM se denominaPAY:
SELECT NAME, JOB, SALARY + COMM AS PAYFROM STAFFWHERE (SALARY + COMM) < 13000ORDER BY PAY
Esta sentencia produce el resultado siguiente:NAME JOB PAY--------- ----- ----------Yamaguchi Clerk 10581.50Burke Clerk 11043.50Scoutten Clerk 11592.80Abrahams Clerk 12246.25Kermisch Clerk 12368.60Ngan Clerk 12714.80
Mediante la cláusula AS, puede hacer referencia a un nombre de columnadeterminado en la cláusula ORDER BY, en lugar de utilizar el númerogenerado por el sistema. En este ejemplo se compara (SALARY + COMM) con13000 en la cláusula WHERE, en lugar de utilizar el nombre PAY. Esto esdebido al orden de las operaciones. La cláusula WHERE se evalúa antes deasignar el nombre PAY a (SALARY + COMM), debido a que la sentenciaSELECT se ejecuta después de la cláusula WHERE. Por ello, no se puedeutilizar PAY en el predicado.
Selección de datos de más de una tabla
Puede utilizar la sentencia SELECT para crear informes que contenganinformación procedente de dos o más tablas. Esta operación se sueledenominar unión. Por ejemplo, puede unir datos de las tablas STAFF y ORGpara formar una nueva tabla. Para unir dos tablas, especifique en la cláusulaSELECT las columnas que desea que se visualicen, indique los nombres de lastablas en una cláusula FROM y especifique la condición de búsqueda en lacláusula WHERE. La cláusula WHERE es opcional.
El ejemplo siguiente asocia el nombre de cada jefe de departamento con unnombre de departamento. Es necesario seleccionar información de dos tablas,pues la información sobre empleados (tabla STAFF) y la información sobredepartamentos (tabla ORG) están almacenadas por separado. La consulta
26 Iniciación al SQL
siguiente selecciona las columnas NAME y DEPTNAME de las tablas STAFF yORG, respectivamente. La condición de búsqueda limita la selección a las filasdonde los valores de la columna MANAGER son los mismos que los valoresde la columna ID:
SELECT DEPTNAME, NAMEFROM ORG, STAFFWHERE MANAGER = ID
La Figura 3 muestra cómo se comparan columnas de dos tablas diferentes. Losvalores contenidos en recuadrados indican una coincidencia con la condiciónde búsqueda.
La sentencia SELECT produce el resultado siguiente:DEPTNAME NAME-------------- ---------Mid Atlantic SandersSouth Atlantic MarenghiNew England HanesGreat Lakes PlotzPlains FrayeHead Office MolinarePacific LeaMountain Quill
El resultado lista el nombre cada jefe y su departamento.
Utilización de una subconsulta
Cuando escribe una sentencia SELECT de SQL, puede colocar sentenciasSELECT adicionales dentro de la cláusula WHERE. Cada SELECT adicionalinicia una subconsulta.
ID NAME
STAFFDEPT J
10
20
30
40
50
60
Sanders
Pernal
Marenghi
O'Brien
Hanes
Quigley
20
20
38
38
15
38
15
Mg
Sa
Mg
Sa
Mg
Sa
Sa
ORGDEPTNUMB DEPTNAME MANAGER D
10
15
20
38
42
51
Head Office
New England
Mid Atlantic
South Atlantic
Great Lakes
Plains
160
50
10
30
100
140
270
Co
Ea
Ea
Ea
Mi
Mi
We
MANAGER=ID ?
Figura 3. Selección en las tablas STAFF y ORG
Capítulo 4. Utilización de sentencias SQL para acceder a datos 27
A su vez, una subconsulta puede incluir otra subconsulta separada, cuyoresultado se coloca en la cláusula WHERE de la subconsulta original. Además,una cláusula WHERE puede incluir subconsultas en más de una condición debúsqueda. La subconsulta puede hacer referencia a tablas y columnas que sondiferentes de las utilizadas en la consulta principal.
La sentencia siguiente selecciona en la tabla ORG la división y la ubicacióndel empleado cuyo ID en la tabla STAFF es 280:
SELECT DIVISION, LOCATIONFROM ORGWHERE DEPTNUMB = (SELECT DEPT
FROM STAFFWHERE ID = 280)
Cuando DB2 procesa una sentencia, primero determina el resultado de lasubconsulta. En este ejemplo, el resultado de la subconsulta es 66, pues elempleado cuyo ID es 280 está en el departamento 66. A continuación, elresultado final se toma de la fila de la tabla ORG cuyo valor de columna paraDEPTNAME es 66. El resultado final es:
DIVISION LOCATION---------- -------------Western San Francisco
Cuando se utiliza una subconsulta, el gestor de bases de datos la evalúa ycoloca directamente el valor resultante en el cláusula WHERE.
En “Subconsultas correlacionadas” en la página 41 se dan más detalles sobrelas subconsultas.
Utilización de funciones
Esta sección proporciona una breve información básica sobre las funciones quese utilizarán en los ejemplos a lo largo de todo el manual. Una función de basede datos es una relación entre un conjunto de valores de datos de entrada y unvalor resultante.
Las funciones pueden estar incorporadas o definidas por el usuario. DB2Universal Database proporciona muchas funciones incorporadas y funcionespreinstaladas definidas por el usuario.
Las funciones incorporadas están el esquema SYSIBM; y las funcionespreinstaladas definidas por el usuario se encuentran en el esquema SYSFUN.SYSIBM y SYSFUN son esquemas reservados.
Las funciones incorporadas y las funciones preinstaladas definidas por elusuario no satisfacen nunca todas las necesidades del usuario. Por lo tanto,los desarrolladores de aplicaciones pueden necesitar crear su propia colección
28 Iniciación al SQL
de funciones, destinadas específicamente a sus aplicaciones. Las funcionesdefinidas por el usuario hacen que esto sea posible, ampliando el ámbito deDB2 Universal Database para incluir, por ejemplo, funciones personalizadasde gestión o científicas. En “Funciones definidas por el usuario” en lapágina 68 se proporciona más información sobre este tema.
Funciones de columnaLas funciones de columna actúan sobre un conjunto de valores de una columnay obtienen un valor resultante individual. A continuación siguen algunosejemplos de funciones de columna. Para obtener una lista completa, consultela publicación Consulta de SQL.
AVG Devuelve la suma de un conjunto de valores dividida por elnúmero de valores de ese conjunto
COUNT Devuelve el número de filas o valores de un conjunto de filaso valores.
MAX Devuelve el valor más alto de un conjunto de valores.
MIN Devuelve el valor más bajo de un conjunto de valores.
La sentencia siguiente selecciona el salario máximo en la tabla STAFF:SELECT MAX(SALARY)
FROM STAFF
Esta sentencia devuelve el valor 22959.20 de la tabla de ejemplo STAFF.
El ejemplo siguiente selecciona los nombres y salarios de los empleados cuyosalario es mayor que el salario promedio, pero han estado trabajando en laempresa un tiempo menor que el número promedio de años.
SELECT NAME, SALARYFROM STAFFWHERE SALARY > (SELECT AVG(SALARY) FROM STAFF)AND YEARS < (SELECT AVG(YEARS) FROM STAFF)
Esta sentencia produce el resultado siguiente:NAME SALARY
--------- ---------Marenghi 17506.75Daniels 19260.25Gonzales 16858.20
En la cláusula WHERE del ejemplo anterior, la función de columna estáespecificada en una subconsulta, en lugar de estar aplicada directamente (porejemplo: WHERE SALARY > AVG(SALARY)). Las funciones de columna no sepueden especificar en la cláusula WHERE. Esto es debido al orden de lasoperaciones. Considere que la cláusula WHERE se evalúa antes que lacláusula SELECT. En consecuencia, cuando se evalúa la cláusula WHERE, la
Capítulo 4. Utilización de sentencias SQL para acceder a datos 29
función de columna no tiene acceso al conjunto de valores. La cláusulaSELECT selecciona este conjunto de valores en un momento posterior.
Puede utilizar la palabra clave DISTINCT como parte del argumento de unafunción de columna para eliminar los valores duplicados antes de aplicar unafunción. De este modo, COUNT(DISTINCT WORKDEPT) calcula el númerode departamentos diferentes.
Funciones escalaresUna función escalar realiza una operación sobre un valor individual y devuelveotro valor individual. A continuación siguen algunos ejemplos de funcionesescalares proporcionadas por DB2 Universal Database.
ABS Devuelve el valor absoluto de un número.
HEX Devuelve la representación hexadecimal de un valor.
LENGTH Devuelve el número de bytes de un argumento (en el caso deuna serie gráfica de caracteres devuelve el número decaracteres de doble byte.)
YEAR Extrae la porción del año en un valor de fecha y hora.
Para obtener una lista y descripción detalladas de las funciones escalares,consulte el manual Consulta de SQL.
La sentencia siguiente devuelve los nombres de departamento de la tablaORG y la longitud de cada uno de estos nombres:
SELECT DEPTNAME, LENGTH(DEPTNAME)FROM ORG
Esta sentencia produce el resultado siguiente:DEPTNAME 2-------------- -----------Head Office 11New England 11Mid Atlantic 12South Atlantic 14Great Lakes 11Plains 6Pacific 7Mountain 8
Nota: Debido a que no se utilizó la cláusula AS para dar un nombresignificativo a LENGTH(DEPTNAME), en la segunda columna aparece unnúmero generado por el sistema.
Funciones de tablaLas funciones de tabla devuelven columnas de una tabla, obteniendo una tablasimilar a la creada por una sentencia CREATE TABLE sencilla.
30 Iniciación al SQL
Las funciones de tabla sólo se pueden utilizar en la cláusula FROM de unasentencia SQL.
Actualmente, la única función de tabla que puede utilizarse en DB2 UniversalDatabase es SQLCACHE_SNAPSHOT.
SQLCACHE_SNAPSHOTDevuelve en forma de tabla los resultados de una instantáneade la antememoria de sentencias del SQL dinámico de DB2.
Agrupación
DB2 Universal Database tiene la capacidad de analizar datos basándose endeterminadas columnas de una tabla.
El usuario puede organizar las filas de una tabla de acuerdo con unaestructura de agrupación definida en una cláusula GROUP BY. En su formamás simple, un grupo es un conjunto de filas, cada una de las cuales tiene elmismo valor en las columnas especificadas por ″GROUP BY″. Los nombres decolumnas indicados en la cláusula SELECT deben ser una columna deagrupación o una función de columna. Las funciones de columna devuelvenun valor para cada grupo definido por la cláusula GROUP BY. Cada grupoestá representado por una fila individual en el conjunto resultante. El ejemplosiguiente lista el salario máximo de cada número de departamento:
SELECT DEPT, MAX(SALARY) AS MAXIMUMFROM STAFFGROUP BY DEPT
Esta sentencia produce el resultado siguiente:DEPT MAXIMUM------ ---------
10 22959.2015 20659.8020 18357.5038 18006.0042 18352.8051 21150.0066 21000.0084 19818.00
Observe que MAX(SALARY) se calcula para cada departamento, que es ungrupo definido por la cláusula GROUP BY, no para la empresa completa.
Utilización de una cláusula WHERE con una cláusula GROUP BYUna consulta de agrupación puede utilizar una cláusula WHERE convencionalque suprime las filas que no reúnen los requisitos antes de que se formen losgrupos y se calculen las funciones de columna. Es necesario especificar lacláusula WHERE antes que la cláusula GROUP BY. Por ejemplo:
Capítulo 4. Utilización de sentencias SQL para acceder a datos 31
SELECT WORKDEPT, EDLEVEL, MAX(SALARY) AS MAXIMUMFROM EMPLOYEEWHERE HIREDATE > '1979-01-01'GROUP BY WORKDEPT, EDLEVELORDER BY WORKDEPT, EDLEVEL
El resultado es:WORKDEPT EDLEVEL MAXIMUM-------- ------- -----------D11 17 18270.00D21 15 27380.00D21 16 36170.00D21 17 28760.00E11 12 15340.00E21 14 26150.00
Observe que cada nombre de columna especificado en la sentencia SELECTtambién aparece en la cláusula GROUP BY. Si no se mencionan los nombresde columna en ambos lugares, se obtiene un error. La cláusula GROUP BYdevuelve una fila para cada combinación exclusiva de WORKDEPT yEDLEVEL.
Utilización de la cláusula HAVING después de la cláusula GROUP BYPuede aplicar una condición restrictiva a los grupos, de forma que DB2devuelva un resultado sólo para los grupos que cumplen la condición. Parahacer esto, incluya una cláusula HAVING después de la cláusula GROUP BY.Una cláusula HAVING puede contener uno o más predicados unidos por losoperadores AND y OR. Cada predicado compara una propiedad del grupo(tal como AVG(SALARY)) con uno de estos elementos:v Otra propiedad del grupo
Por ejemplo:HAVING AVG(SALARY) > 2 * MIN(SALARY)
v Una constantePor ejemplo:HAVING AVG(SALARY) > 20000
Por ejemplo, la consulta siguiente busca el salario máximo y mínimo de losdepartamentos con más de 4 empleados:
SELECT WORKDEPT, MAX(SALARY) AS MAXIMUM, MIN(SALARY) AS MINIMUMFROM EMPLOYEEGROUP BY WORKDEPTHAVING COUNT(*) > 4ORDER BY WORKDEPT
Esta sentencia produce el resultado siguiente:
32 Iniciación al SQL
WORKDEPT MAXIMUM MINIMUM-------- ----------- -----------D11 32250.00 18270.00D21 36170.00 17250.00E11 29750.00 15340.00
Es posible (pero no habitual) que una consulta tenga una cláusula HAVING,pero ninguna cláusula GROUP BY. En este caso, DB2 trata la tabla completacomo un solo grupo. Debido a que la tabla es tratada como un grupoindividual, el resultado contendrá una fila como máximo. Si la condiciónHAVING se cumple para la tabla completa, se devuelve el resultadoseleccionado (que debe constar sólo de funciones de columna); de lo contrario,no se devuelve ninguna fila.
Capítulo 4. Utilización de sentencias SQL para acceder a datos 33
34 Iniciación al SQL
Capítulo 5. Expresiones y subconsultas
DB2 proporciona flexibilidad para expresar subconsultas. Este capítulodescribe algunos métodos que pueden utilizarse para expresar subconsultascomplejas.
Este capítulo proporciona una descripción completa de lo siguiente:v Selecciones completas escalaresv Conversión de tipos de datosv Expresiones CASEv Expresiones de tablav Nombres de correlación
Selecciones completas escalares
Una selección completa es una modalidad de consulta que se puede utilizaren sentencias SQL. Una selección completa escalar es una selección completaque devuelve una fila individual que contiene un solo valor. Las seleccionescompletas escalares son útiles para recuperar valores de datos en una base dedatos y utilizarlos en una expresión.v El ejemplo siguiente lista nombres de empleados que tienen un salario
mayor que el salario promedio de todos los empleados. La seleccióncompleta escalar incluida en la consulta es la sentencia SELECT encerradaentre paréntesis.
SELECT LASTNAME, FIRSTNMEFROM EMPLOYEEWHERE SALARY > (SELECT AVG(SALARY)
FROM EMPLOYEE)
v Este ejemplo busca el salario promedio de los empleados en la tabla STAFFy en la tabla EMPLOYEE.
SELECT AVG(SALARY) AS "Average_Employee",(SELECT AVG(SALARY) AS "Average_Staff" FROM STAFF)
FROM EMPLOYEE
Conversión de tipos de datos
A veces puede necesitar convertir valores de un tipo de datos a otro; porejemplo, convertir un valor numérico en una serie de caracteres. Paraconvertir un valor a un tipo diferente, utilice la especificación CAST.
© Copyright IBM Corp. 1993, 2000 35
Otra finalidad posible de una especificación CAST es truncar una serie decaracteres muy larga. En la tabla EMP_RESUME, la columna RESUME esCLOB(5K). Puede desear visualizar sólo los primeros 370 caracteres quecontienen la información personal del candidato. Para visualizar los primeros370 caracteres del formato ASCII de los currículums de la tablaEMP_RESUME, emita la consulta siguiente:
SELECT EMPNO, CAST(RESUME AS VARCHAR(370))FROM EMP_RESUMEWHERE RESUME_FORMAT = 'ascii'
Se emite un aviso para informarle de que los valores mayores que 370caracteres están truncados.
Puede convertir valores nulos en otros tipos de datos que sean másapropiados para su manejo en una consulta. La sección “Expresiones de tablacomunes” en la página 39 es un ejemplo del uso de la conversión de datos conesta finalidad.
Expresiones CASE
Puede utilizar expresiones CASE en sentencias SQL para manejar fácilmente larepresentación de datos de una tabla. Esto proporciona una potenteherramienta para representar expresiones condicionales, que conceptualmentees similar a las sentencias CASE utilizadas en algunos lenguajes deprogramación.v La consulta siguiente cambia los números de departamento de la columna
NOMBREDEPT de la tabla ORG por palabras significativas:SELECT DEPTNAME,
CASE DEPTNUMBWHEN 10 THEN 'Marketing'WHEN 15 THEN 'Research'WHEN 20 THEN 'Development'WHEN 38 THEN 'Accounting'ELSE 'Sales'
END AS FUNCTIONFROM ORG
El resultado es:DEPTNAME FUNCTION-------------- -----------Head Office MarketingNew England ResearchMid Atlantic DevelopmentSouth Atlantic AccountingGreat Lakes SalesPlains SalesPacific SalesMountain Sales
36 Iniciación al SQL
v Puede utilizar expresiones CASE para evitar excepciones tales como ladivisión por cero. En el ejemplo siguiente, si el empleado no recibe ningunaprima ni comisión, la condición de la sentencia evita un error al impedir laoperación de división:
SELECT LASTNAME, WORKDEPT FROM EMPLOYEEWHERE(CASE
WHEN BONUS+COMM=0 THEN NULLELSE SALARY/(BONUS+COMM)
END ) > 10
v Puede utilizar una expresión CASE para obtener el cociente entre la sumade un subconjunto de valores de un columna y la suma de todos los valoresde esa columna. Este cociente puede estar contenido en una sentenciaindividual que hace uso de una expresión CASE; esta expresión requiereuna sola pasada de proceso por los datos. Si no se utiliza una expresiónCASE, como mínimo son necesarios dos pasadas para realizar el mismocálculo.El ejemplo siguiente calcula el cociente entre la suma de los salarios deldepartamento 20 y la suma de todos los salarios, utilizando para ello unaexpresión CASE:
SELECT CAST(CAST (SUM(CASEWHEN DEPT = 20 THEN SALARYELSE 0
END) AS DECIMAL(7,2))/SUM(SALARY) AS DECIMAL (3,2))
FROM STAFF
El resultado es 0.11. Observe que las funciones CAST preservan la precisióndel resultado.
v Puede utilizar una expresión CASE para evaluar una función simple enlugar de invocar a la propia función, lo cual requeriría más actividadgeneral de proceso. Por ejemplo:
CASEWHEN X<0 THEN -1WHEN X=0 THEN 0WHEN X>0 THEN 1
END
Esta expresión tiene el mismo resultado que la función definida por elusuario SIGN, perteneciente al esquema SYSFUN.
Expresiones de tabla
Si solo necesita la definición de una vista para una consulta individual, puedeutilizar una expresión de tabla.
Capítulo 5. Expresiones y subconsultas 37
Las expresiones de tabla son temporales y sólo tienen validez durante laejecución de la sentencia SQL; no se pueden compartir como las vistas, peropermiten una mayor flexibilidad que las vistas.
Esta sección describe cómo utilizar expresiones de tabla comunes yexpresiones de tabla anidadas en consultas.
Expresiones de tabla anidadasUna expresión de tabla anidada es una vista temporal donde la definición estáanidada (definida directamente) en la cláusula FROM de la consulta principal.
La sentencia siguiente utiliza una expresión de tabla anidada para buscar lapaga total promedio, el nivel de educación y el año de contratación,correspondientes a los empleados con un nivel de educación mayor que 16:
SELECT EDLEVEL, HIREYEAR, DECIMAL(AVG(TOTAL_PAY),7,2)FROM (SELECT EDLEVEL, YEAR(HIREDATE) AS HIREYEAR,
SALARY+BONUS+COMM AS TOTAL_PAYFROM EMPLOYEEWHERE EDLEVEL > 16) AS PAY_LEVEL
GROUP BY EDLEVEL, HIREYEARORDER BY EDLEVEL, HIREYEAR
El resultado es el siguiente:EDLEVEL HIREYEAR 3------- ----------- ---------
17 1967 28850.0017 1973 23547.0017 1977 24430.0017 1979 25896.5018 1965 57970.0018 1968 32827.0018 1973 45350.0018 1976 31294.0019 1958 51120.0020 1975 42110.00
Esta consulta utiliza una expresión de tabla anidada para primero obtener elaño de contratación en la columna HIREDATE, para que luego se puedautilizar en la cláusula GROUP BY. Puede que no desee crear esto en forma devista, si piensa realizar consultas similares utilizando valores diferentes deEDLEVEL.
En este ejemplo se utiliza la función incorporada escalar DECIMAL.DECIMAL devuelve la representación decimal de un número o serie decaracteres. Para obtener más detalles sobre funciones, consulte el manualConsulta de SQL.
38 Iniciación al SQL
Expresiones de tabla comunesUna expresión de tabla común es una expresión de tabla que se crea parautilizarla a lo largo de toda una consulta compleja. La expresión de tablacomún se define y recibe un nombre al principio de la consulta, utilizandouna cláusula WITH. Las referencias repetidas a una expresión de tabla comúnutilizan el mismo conjunto resultante. En cambio, si utilizara expresiones detabla anidadas o vistas, el conjunto resultante se regeneraría cada vez, conresultados posiblemente diferentes.
El ejemplo siguiente lista todos los empleados de la empresa que tienen unnivel de educación mayor que 16, y que reciben una paga promedio menorque las personas contratadas en el mismo año y con el mismo nivel deeducación. Las partes de la consulta se describen con más detalle acontinuación de la consulta.
«1¬
WITHPAYLEVEL AS
(SELECT EMPNO, EDLEVEL, YEAR(HIREDATE) AS HIREYEAR,SALARY+BONUS+COMM AS TOTAL_PAY
FROM EMPLOYEEWHERE EDLEVEL > 16),
«2¬
PAYBYED (EDUC_LEVEL, YEAR_OF_HIRE, AVG_TOTAL_PAY) AS(SELECT EDLEVEL, HIREYEAR, AVG(TOTAL_PAY)
FROM PAYLEVELGROUP BY EDLEVEL, HIREYEAR)
«3¬
SELECT EMPNO, EDLEVEL, YEAR_OF_HIRE, TOTAL_PAY, DECIMAL(AVG_TOTAL_PAY,7,2)FROM PAYLEVEL, PAYBYEDWHERE EDLEVEL = EDUC_LEVELAND HIREYEAR = YEAR_OF_HIREAND TOTAL_PAY < AVG_TOTAL_PAY
«1¬ Esta es una expresión de tabla común llamada PAYLEVEL. La tablaresultante incluye un número de empleado, el año en que se contratóa la persona, su paga total y su nivel de educación. Sólo seseleccionan las filas correspondientes a los empleados con un nivel deeducación mayor que 16.
«2¬ Esta es una expresión de tabla común llamada PAYBYED (es decir,paga según nivel de educación). Esta expresión utiliza la tablaPAYLEVEL, creada en la expresión de tabla común anterior, paradeterminar el nivel de educación, el año de contratación y la pagapromedio de los empleados dentro de cada nivel de educación,contratados en el mismo año. Las columnas devueltas por esta tabla
Capítulo 5. Expresiones y subconsultas 39
tienen nombres diferentes (por ejemplo, EDUC_LEVEL) que losnombres de columna utilizados en la lista de selección. Esto produceun conjunto resultante llamado PAYBYED que es igual que elresultado generado en el ejemplo de Expresión de Tabla Anidada.
«3¬ Finalmente, llegamos a la consulta propiamente dicha que produce elresultado deseado. Las dos tablas (PAYLEVEL, PAYBYED) estánunidas para determinar los empleados cuya paga total es menor quela paga promedio de las personas contratadas en el mismo año.Observe que PAYBYED está basado en PAYLEVEL. Por tanto, enrealidad se accede a PAYLEVEL dos veces en la sentencia completa.En ambas ocasiones se utiliza el mismo conjunto de filas para evaluarla consulta.
El resultado es el siguiente:EMPNO EDLEVEL YEAR_OF_HIRE TOTAL_PAY 5------ ------- ------------ ------------- ---------000210 17 1979 20132.00 25896.50
Nombres de correlación
Un nombre de correlación es un identificador que se utiliza para distinguir losdiversos usos de un objeto. Un nombre de correlación se puede definir en lacláusula FROM de una consulta y en la primera cláusula de una sentenciaUPDATE o DELETE. Se puede asociar a una tabla, vista o a una expresión detabla anidada, pero sólo dentro del contexto en el que está definido.
Por ejemplo, la cláusula FROM STAFF S, ORG O establece S y O comonombres de correlación para STAFF y ORG, respectivamente.
SELECT NAME, DEPTNAMEFROM STAFF S, ORG OWHERE O.MANAGER = S.ID
Una vez definido un nombre de correlación, sólo puede utilizarlo para calificarel objeto. Por ejemplo, en el ejemplo anterior, si se especificaraORG.MANAGER=STAFF.ID, se obtendría un error.
También puede utilizar un nombre de correlación como nombre abreviadopara hacer referencia a un objeto de base de datos. Escribir sólo una S es mássencillo que escribir STAFF.
Mediante nombres de correlación, puede crear duplicados de un objeto. Estoes útil si necesita comparar entradas de una tabla con ella misma. En elejemplo siguiente, la tabla EMPLOYEE se compara con otra instancia de ella
40 Iniciación al SQL
misma para determinar los jefes de todos los empleados. El ejemplo visualizael nombre de los empleados que no son diseñadores, el nombre de su jefe y elnúmero de departamento.
SELECT E2.FIRSTNME, E2.LASTNAME, E2.JOB, E1.FIRSTNME AS MGR_FIRSTNAME,E1.LASTNAME AS MGR_LASTNAME, E1.WORKDEPT
FROM EMPLOYEE E1, EMPLOYEE E2WHERE E1.WORKDEPT = E2.WORKDEPTAND E1.JOB = 'MANAGER'AND E2.JOB <> 'MANAGER'AND E2.JOB <> 'DESIGNER'
Esta sentencia produce el resultado siguiente:FIRSTNME LASTNAME JOB MGR_FIRSTNAME MGR_LASTNAME WORKDEPT------------ ---------- -------- ------------- --------------- --------DOLORES QUINTANA ANALYST SALLY KWAN C01HEATHER NICHOLLS ANALYST SALLY KWAN C01JAMES JEFFERSON CLERK EVA PULASKI D21SALVATORE MARINO CLERK EVA PULASKI D21DANIEL SMITH CLERK EVA PULASKI D21SYBIL JOHNSON CLERK EVA PULASKI D21MARIA PEREZ CLERK EVA PULASKI D21ETHEL SCHNEIDER OPERATOR EILEEN HENDERSON E11JOHN PARKER OPERATOR EILEEN HENDERSON E11PHILIP SMITH OPERATOR EILEEN HENDERSON E11MAUDE SETRIGHT OPERATOR EILEEN HENDERSON E11RAMLAL MEHTA FIELDREP THEODORE SPENSER E21WING LEE FIELDREP THEODORE SPENSER E21JASON GOUNOT FIELDREP THEODORE SPENSER E21
Subconsultas correlacionadas
Una subconsulta correlacionada es una subconsulta que puede hacer referencia acualquiera de las tablas mencionadas anteriormente. También se dice que lasubconsulta tiene una referencia correlacionada a una tabla de la consultaprincipal.
El ejemplo siguiente utiliza una subconsulta no correlacionada para listar elnúmero de empleado y el nombre de los empleados del departamento ’A00’cuyo salario es mayor que el salario promedio del departamento:
SELECT EMPNO, LASTNAMEFROM EMPLOYEEWHERE WORKDEPT = 'A00'
AND SALARY > (SELECT AVG(SALARY)FROM EMPLOYEEWHERE WORKDEPT = 'A00')
Esta sentencia produce el resultado siguiente:
Capítulo 5. Expresiones y subconsultas 41
EMPNO LASTNAME------ ------------000010 HAAS000110 LUCCHESSI
Si desea conocer el salario promedio de cada departamento, es necesarioevaluar la subconsulta una sola vez para cada departamento. Puede hacer estoutilizando la capacidad de correlación del SQL, que le permite escribir unasubconsulta y ejecutarla varias veces, una vez para cada tabla identificada enla consulta de nivel exterior.
El ejemplo siguiente utiliza una subconsulta correlacionada para listar todoslos empleados cuyo salario es mayor que el salario promedio de susrespectivos departamentos:
SELECT E1.EMPNO, E1.LASTNAME, E1.WORKDEPTFROM EMPLOYEE E1WHERE SALARY > (SELECT AVG(SALARY)
FROM EMPLOYEE E2WHERE E2.WORKDEPT = E1.WORKDEPT)
ORDER BY E1.WORKDEPT
En esta consulta, la subconsulta se evalúa una sola vez para cadadepartamento. El resultado es:
EMPNO LASTNAME WORKDEPT------ --------------- --------000010 HAAS A00000110 LUCCHESSI A00000030 KWAN C01000060 STERN D11000150 ADAMSON D11000170 YOSHIMURA D11000200 BROWN D11000220 LUTZ D11000070 PULASKI D21000240 MARINO D21000270 PEREZ D21000090 HENDERSON E11000280 SCHNEIDER E11000100 SPENSER E21000330 LEE E21000340 GOUNOT E21
Para escribir una consulta con una subconsulta correlacionada, utilice elmismo formato básico de una consulta externa ordinaria con una subconsulta.Sin embargo, en la cláusula FROM de la consulta externa, justo a continuacióndel nombre de tabla, coloque un nombre de correlación. Entonces lasubconsulta puede contener referencias a columna calificadas por el nombrede correlación. Por ejemplo, si E1 es un nombre de correlación, entoncesE1.WORKDEPT representa el valor WORKDEPT de la fila actual de la tabla
42 Iniciación al SQL
en la consulta externa. La subconsulta se reevalúa (conceptualmente) paracada fila de la tabla en la consulta externa.
Cuando se utiliza una subconsulta correlacionada, el sistema libera de trabajoal usuario y disminuye la cantidad de código que es necesario escribir en laaplicación.
DB2 permite utilizar referencias correlacionadas no calificadas. Por ejemplo, latabla EMPLOYEE tiene una columna llamada LASTNAME, en cambio la tablaSALES tiene una columna llamada SALES_PERSON, y ninguna columnallamada LASTNAME.
SELECT LASTNAME, FIRSTNME, COMMFROM EMPLOYEEWHERE 3 > (SELECT AVG(SALES)
FROM SALESWHERE LASTNAME = SALES_PERSON)
En este ejemplo, el sistema busca una columna LASTNAME en la cláusulaFROM más interna. Al no encontrar ninguna, examina la siguiente cláusulaFROM más interna (que en este caso es la cláusula FROM externa). Aunqueno siempre es necesario, es recomendable calificar las referenciascorrelacionadas para mejorar la legibilidad de la consulta y asegurar que seobtiene el resultado deseado.
Implementación de una subconsulta correlacionada¿Cuándo es necesario utilizar una subconsulta correlacionada? El uso de unafunción de columna es a veces una pista.
Supongamos que desea listar los empleados cuyo nivel de educación es mayorque el nivel promedio de sus respectivos departamentos.
Primero, debe determinar los elementos de la lista de selección. El problemaconsiste en “Listar los empleados”. Esto significa que LASTNAME de la tablaEMPLOYEE debería ser suficiente para identificar de forma inequívoca a losempleados. El problema también indica como condiciones el nivel deeducación (EDLEVEL) y los departamentos de los empleados (WORKDEPT).Aunque el problema no solicita explícitamente que se visualicen columnas, elincluirlas en la lista de selección ayudará a mostrar la solución. Ahora sepuede escribir parte de la consulta:
SELECT LASTNAME, WORKDEPT, EDLEVELFROM EMPLOYEE
A continuación, es necesaria una condición de búsqueda (cláusula WHERE).El enunciado del problema dice “ ...cuyo nivel de educación es mayor que elnivel promedio de sus respectivos departamentos”. Esto significa que paracada empleado de la tabla, se debe calcular el nivel promedio de educacióndel departamento de ese empleado. Este enunciado se ajusta a la descripción
Capítulo 5. Expresiones y subconsultas 43
de una subconsulta correlacionada. Cierta propiedad desconocida (el nivelpromedio de educación del departamento actual del empleado) se calcula paracada fila. Es necesario un nombre de correlación para la tabla EMPLOYEE:
SELECT LASTNAME, WORKDEPT, EDLEVELFROM EMPLOYEE E1
La subconsulta necesaria es sencilla. Esta subconsulta calcula el nivelpromedio de educación para cada departamento. La sentencia SQL completaes:
SELECT LASTNAME, WORKDEPT, EDLEVELFROM EMPLOYEE E1WHERE EDLEVEL > (SELECT AVG(EDLEVEL)
FROM EMPLOYEE E2WHERE E2.WORKDEPT = E1.WORKDEPT)
El resultado es:LASTNAME WORKDEPT EDLEVEL--------------- -------- -------HAAS A00 18KWAN C01 20PULASKI D21 16HENDERSON E11 16LUCCHESSI A00 19PIANKA D11 17SCOUTTEN D11 17JONES D11 17LUTZ D11 18MARINO D21 17JOHNSON D21 16SCHNEIDER E11 17MEHTA E21 16GOUNOT E21 16
Suponga que en lugar de listar el número de departamento del empleado,desea listar el nombre del departamento. La información necesaria(DEPTNAME) está en una tabla separada (DEPARTMENT). La consulta denivel externo que define una variable de correlación también puede ser unaconsulta de unión (vea “Selección de datos de más de una tabla” en lapágina 26 para obtener detalles).
Cuando utilice uniones en una consulta de nivel externo, liste en la cláusulaFROM las tablas a unir y coloque el nombre de correlación junto al nombre detabla apropiado.
Para modificar la consulta a fin de que liste el nombre del departamento enlugar de su número, sustituya WORKDEPT por DEPTNAME en la lista deselección. Ahora la cláusula FROM también debe incluir la tablaDEPARTMENT y la cláusula WHERE debe expresar la condición de uniónapropiada.
44 Iniciación al SQL
Esta es la consulta modificada:SELECT LASTNAME, DEPTNAME, EDLEVEL
FROM EMPLOYEE E1, DEPARTMENTWHERE E1.WORKDEPT = DEPARTMENT.DEPTNOAND EDLEVEL > (SELECT AVG(EDLEVEL)
FROM EMPLOYEE E2WHERE E2.WORKDEPT = E1.WORKDEPT)
Esta sentencia produce el resultado siguiente:LASTNAME DEPTNAME EDLEVEL-------------- ---------------------------- -------HAAS SPIFFY COMPUTER SERVICE DIV. 18LUCCHESSI SPIFFY COMPUTER SERVICE DIV. 19KWAN INFORMATION CENTER 20PIANKA MANUFACTURING SYSTEMS 17SCOUTTEN MANUFACTURING SYSTEMS 17JONES MANUFACTURING SYSTEMS 17LUTZ MANUFACTURING SYSTEMS 18PULASKI ADMINISTRATION SYSTEMS 16MARINO ADMINISTRATION SYSTEMS 17JOHNSON ADMINISTRATION SYSTEMS 16HENDERSON OPERATIONS 16SCHNEIDER OPERATIONS 17MEHTA SOFTWARE SUPPORT 16GOUNOT SOFTWARE SUPPORT 16
Los ejemplos anteriores muestran que el nombre de correlación utilizado enuna subconsulta debe estar definido en la cláusula FROM de una consultadonde reside la subconsulta correlacionada. Si embargo, esta inclusión de unelemento dentro de otro puede suponer varios niveles de anidamiento.
Suponga que algunos departamentos tienen solo unos pocos empleados y portanto su nivel promedio de educación puede ser engañoso. Puede decidir quees necesario que haya un mínimo de cinco empleados en un departamentopara que el nivel promedio de educación sea un valor significativo con el quepoder comparar un empleado. Por tanto, ahora tenemos que listar losempleados cuyo nivel de educación es mayor que el nivel promedio de susrespectivos departamentos y considerar sólo los departamentos con unmínimo de cinco empleados.
El problema implica otra subconsulta, pues para cada empleado indicado enla consulta de nivel externo, se debe contar el número total de empleados deldepartamento de esa persona:
SELECT COUNT(*)FROM EMPLOYEE E3WHERE E3.WORKDEPT = E1.WORKDEPT
Sólo se debe calcular un valor promedio si la cuenta de empleados es mayor oigual que 5:
Capítulo 5. Expresiones y subconsultas 45
SELECT AVG(EDLEVEL)FROM EMPLOYEE E2WHERE E2.WORKDEPT = E1.WORKDEPTAND 5 <= (SELECT COUNT(*)
FROM EMPLOYEE E3WHERE E3.WORKDEPT = E1.WORKDEPT)
Finalmente, sólo se incluyen los empleados cuyo nivel de educación es mayorque el nivel promedio para ese departamento:
SELECT LASTNAME, DEPTNAME, EDLEVELFROM EMPLOYEE E1, DEPARTMENTWHERE E1.WORKDEPT = DEPARTMENT.DEPTNOAND EDLEVEL >(SELECT AVG(EDLEVEL)
FROM EMPLOYEE E2WHERE E2.WORKDEPT = E1.WORKDEPTAND 5 <=(SELECT COUNT(*)
FROM EMPLOYEE E3WHERE E3.WORKDEPT = E1.WORKDEPT))
Esta sentencia produce el resultado siguiente:LASTNAME DEPTNAME EDLEVEL--------------- ----------------------------- -------PIANKA MANUFACTURING SYSTEMS 17SCOUTTEN MANUFACTURING SYSTEMS 17JONES MANUFACTURING SYSTEMS 17LUTZ MANUFACTURING SYSTEMS 18PULASKI ADMINISTRATION SYSTEMS 16MARINO ADMINISTRATION SYSTEMS 17JOHNSON ADMINISTRATION SYSTEMS 16HENDERSON OPERATIONS 16SCHNEIDER OPERATIONS 17
46 Iniciación al SQL
Capítulo 6. Utilización de operadores y predicados enconsultas
En DB2 Universal Database puede combinar consultas con diferentesoperadores de conjunto y construir sentencias condicionales complejas conpredicados cuantificados.
Este capítulo describe cómo:v Combinar tablas diferentes mediante los operadores de conjunto UNION,
EXCEPT e INTERSECTv Construir condiciones complejas para consultas con predicados
cuantificados. Los predicados básicos se trataron brevemente en “Selecciónde filas” en la página 20.
Combinación de consultas mediante operadores de conjunto
Los operadores de conjunto UNION, EXCEPT e INTERSECT le permitencombinar dos o más consultas de nivel externo para formar una consultaindividual. Cada consulta conectada por estos operadores de conjunto seejecuta y los resultados individuales se combinan. Cada operador produce unresultado diferente.
Operador UNIONEl operador UNION obtiene una tabla resultante combinando otras dos tablasresultantes (por ejemplo, TABLA1 y TABLA2) y eliminando las filasduplicadas de las tablas. Cuando se utiliza ALL con UNION (es decir, UNIONALL), no se eliminan las filas duplicadas. En ambos casos, cada fila de la tablaobtenida es una fila procedente de TABLA1 o TABLA2.
En el ejemplo siguiente del operador UNION, la consulta devuelve losnombres de los empleados cuyo salario es mayor que $21.000, o que tienencargos directivos y llevan trabajando menos de 8 años en la empresa:
«1¬
SELECT ID, NAME FROM STAFF WHERE SALARY > 21000UNION
«2¬
SELECT ID, NAME FROM STAFF WHERE JOB='Mgr' AND YEARS < 8ORDER BY ID
© Copyright IBM Corp. 1993, 2000 47
Los resultados de las consultas individuales son:
«1¬
ID NAME------ ---------140 Fraye160 Molinare260 Jones
«2¬
ID NAME------ ---------
10 Sanders30 Marenghi
100 Plotz140 Fraye160 Molinare240 Daniels
El gestor de bases de datos combina los resultados de ambas consultas,elimina los elementos duplicados y devuelve el resultado final en ordenascendente.
ID NAME------ ---------
10 Sanders30 Marenghi
100 Plotz140 Fraye160 Molinare240 Daniels260 Jones
Si utiliza la cláusula ORDER BY en una consulta junto con cualquier operadorde conjunto, debe escribir la cláusula después de la última consulta. Elsistema aplica la ordenación al resultado combinado.
Si el nombre de columna es diferente en las dos tablas, la tabla combinadaresultante carece de nombres para las columnas correspondientes. En cambio,las columnas están numeradas por el orden en que aparecen. Por tanto, sidesea que la tabla resultante esté ordenada, debe especificar el número decolumna en la cláusula ORDER BY.
Operador EXCEPTEl operador EXCEPT obtiene una tabla resultante que incluye todas las filasde TABLA1, pero no las de TABLA2, y elimina todas las filas duplicadas. Siutiliza ALL con EXCEPT (EXCEPT ALL), no se eliminan las filas duplicadas.
48 Iniciación al SQL
En el ejemplo siguiente del operador EXCEPT, la consulta devuelve losnombres de los empleados cuyo salario es mayor que $21.000, no ocupanpuestos directivos y llevan trabajando 8 años como mínimo en la empresa:
SELECT ID, NAME FROM STAFF WHERE SALARY > 21000EXCEPTSELECT ID, NAME FROM STAFF WHERE JOB='Mgr' AND YEARS < 8
Los resultados de las consultas individuales se muestran en la seccióncorrespondiente a UNION. La sentencia anterior produce el resultadosiguiente:
ID NAME------ ---------260 Jones
Operador INTERSECTEl operador INTERSECT obtiene una tabla resultante que incluye todas lasfilas existentes a la vez en TABLA1 y TABLA2, y elimina todas las filasduplicadas. Si utiliza ALL con INTERSECT (INTERSECT ALL), no se eliminanlas filas duplicadas.
En el ejemplo siguiente del operador INTERSECT, la consulta devuelve elnombre y el ID de los empleados cuyo salario es mayor que $21.000, ocupanpuestos directivos y llevan trabajando menos de 8 años en la empresa.
SELECT ID, NAME FROM STAFF WHERE SALARY > 21000INTERSECTSELECT ID, NAME FROM STAFF WHERE JOB='Mgr' AND YEARS < 8
Los resultados de las consultas individuales se muestran en la seccióncorrespondiente a UNION. El resultado de las dos consultas con INTERSECTes:
ID NAME------ ---------140 Fraye160 Molinare
Cuando utilice los operadores UNION, EXCEPT e INTERSECT, tenga encuenta lo siguiente:v Todos los elementos correspondientes de las listas de selección de las
consultas utilizadas por los operadores deben ser compatibles. Vea la tablasobre compatibilidad de los tipos de datos, en el manual Consulta de SQL,para obtener más información.
v Si se utiliza una cláusula ORDER BY, debe estar a continuación de la últimaconsulta que tenga un operador de conjunto. El nombre de columna sólo sepuede utilizar en la cláusula ORDER BY si el nombre de columna es igual alos elementos correspondientes en la lista de selección de las consultasutilizadas por cada operador.
Capítulo 6. Utilización de operadores y predicados en consultas 49
v Las operaciones entre columnas que tienen el mismo tipo de datos y lamisma longitud producen una columna de ese tipo y longitud. Vea en elmanual Consulta de SQL las reglas sobre los tipos de datos del resultadoaplicables a los operadores de conjunto UNION, EXCEPT e INTERSECT.
Predicados
Los predicados le permiten definir condiciones para que sólo se procesen lasfilas que cumplen esas condiciones. Los predicados básicos se tratan en“Selección de filas” en la página 20. IN, BETWEEN, LIKE, EXISTS y lospredicados cuantificados se examinan en la presente sección.
Utilización del predicado INUtilice el predicado IN para comparar un valor con varios otros valores. Porejemplo:
SELECT NAMEFROM STAFFWHERE DEPT IN (20, 15)
Este ejemplo es equivalente a:SELECT NAME
FROM STAFFWHERE DEPT = 20 OR DEPT = 15
Puede utilizar los operadores IN y NOT IN cuando una subconsulta devuelveun conjunto de valores. Por ejemplo, la consulta siguiente lista el apellido delos empleados encargados de los proyectos MA2100 y OP2012:
SELECT LASTNAMEFROM EMPLOYEEWHERE EMPNO IN
(SELECT RESPEMPFROM PROJECTWHERE PROJNO = 'MA2100'OR PROJNO = 'OP2012')
La subconsulta se evalúa una sola vez y la lista resultante se colocadirectamente en la consulta de nivel externo. Por ejemplo, si la subconsultaanterior selecciona los números de empleado 10 y 330, la consulta de nivelexterno se evalúa como si su cláusula WHERE fuera:
WHERE EMPNO IN (10, 330)
La lista de valores devuelta por la subconsulta puede contener ninguno, uno omás valores.
Utilización del predicado BETWEENEl predicado BETWEEN compara un valor individual con un rango inclusivode valores (mencionado en el predicado BETWEEN).
50 Iniciación al SQL
El ejemplo siguiente determina los nombres de los empleados cuyo salarioestá comprendido entre $10.000 y $20.000:
SELECT LASTNAMEFROM EMPLOYEEWHERE SALARY BETWEEN 10000 AND 20000
Esto es equivalente a:SELECT LASTNAME
FROM EMPLOYEEWHERE SALARY >= 10000 AND SALARY <= 20000
El ejemplo siguiente determina los nombres de los empleados cuyo salario esmenor que $10.000 o mayor que $20.000:
SELECT LASTNAMEFROM EMPLOYEEWHERE SALARY NOT BETWEEN 10000 AND 20000
Utilización del predicado LIKEUtilice el predicado LIKE para buscar series de caracteres que tienen unacomposición determinada. La composición se especifica mediante signos deporcentaje y de subrayado.v El carácter de subrayado (_) representa un carácter individual cualquiera.v El signo de porcentaje (%) representa una serie de varios caracteres o la
ausencia de caracteres.v Cualquier otro carácter se representa por sí mismo.
El ejemplo siguiente selecciona los nombres de empleado que tienen sieteletras de longitud y comienzan con la letra ’S’:
SELECT NAMEFROM STAFFWHERE NAME LIKE 'S _ _ _ _ _ _'
El ejemplo siguiente selecciona los nombres de empleado que no comienzancon la letra ’S’:
SELECT NAMEFROM STAFFWHERE NAME NOT LIKE 'S%'
Utilización del predicado EXISTSPuede utilizar una subconsulta para verificar la existencia de una fila quecumple una determinada condición. En este caso, la subconsulta se enlaza conla consulta de nivel externo mediante el predicado EXISTS o NOT EXISTS.
Cuando enlaza una subconsulta con una consulta externa mediante unpredicado EXISTS, la subconsulta no devuelve un valor. En lugar de esto, elpredicado EXISTS es verdadero si el conjunto resultante de la subconsultacontiene una o más filas, y es falso si no contiene ninguna fila.
Capítulo 6. Utilización de operadores y predicados en consultas 51
El predicado EXISTS a menudo se utiliza con subconsultas correlacionadas. Elejemplo siguiente lista los departamentos que actualmente no tienen entradasen la tabla PROJECT:
SELECT DEPTNO, DEPTNAMEFROM DEPARTMENT XWHERE NOT EXISTS
(SELECT *FROM PROJECTWHERE DEPTNO = X.DEPTNO)
ORDER BY DEPTNO
Puede conectar los predicados EXISTS y NOT EXISTS a otros predicadosutilizando AND y OR en la cláusula WHERE de la consulta de nivel externo.
Predicados cuantificadosUn predicado cuantificado compara un valor con un conjunto de valores. Siuna selección completa devuelve más de un valor, debe modificar losoperadores de comparación del predicado añadiendo el sufijo ALL, ANY oSOME. Estos sufijos determinan cómo el predicado de nivel externo trata losvalores devueltos. En el ejemplo se utiliza el operador de comparación > (loscomentarios que siguen son aplicables también a los demás operadores):
expresión > ALL (selección completa)El predicado es verdadero si la expresión es mayor que cada valorindividual devuelto por la selección completa. Si la selección completa nodevuelve ningún valor, el predicado es verdadero. El resultado es falso sila relación especificada es falsa para un valor como mínimo. Observe queel predicado cuantificado <>ALL es equivalente al predicado NOT IN.
El ejemplo siguiente utiliza una subconsulta y una comparación > ALLpara determinar el nombre y la profesión de los empleados que gananmás que todos los jefes de departamento:
SELECT LASTNAME, JOBFROM EMPLOYEEWHERE SALARY > ALL(SELECT SALARY
FROM EMPLOYEEWHERE JOB='MANAGER')
expresión > ANY (selección completa)El predicado es verdadero si la expresión es mayor que al menos uno delos valores devueltos por la selección completa. Si la selección completano devuelve ningún valor, el predicado es falso. Observe que el operadorcuantificado =ANY es equivalente al predicado IN.
expresión > SOME (selección completa)SOME es sinónimo de ANY.
Para obtener más información sobre los predicados y operadores, consulte elmanual Consulta de SQL.
52 Iniciación al SQL
Capítulo 7. SQL avanzado
Este capítulo describe algunas características de DB2 Universal Database quele permiten diseñar consultas de forma más efectiva, y al mismo tiempoadaptarlas a sus necesidades. Los temas de este capítulo suponen que el lectorha asimilado completamente las nociones dadas hasta este momento.
Este capítulo trata los temas siguientes:v Aplicación de reglas de negocio con restricciones y desencadenantesv Unionesv Consultas ROLLUP y CUBE y Consultas recursivasv Funciones OLAP
Aplicación de reglas de negocio con restricciones y desencadenantes
En el ámbito empresarial, es necesario asegurarse de que determinadas reglasse apliquen siempre. Por ejemplo, un empleado que trabaja en un proyectodebe estar en la lista de nóminas. O bien, quizás es deseable quedeterminados sucesos se produzcan automáticamente. Por ejemplo, si unvendedor realiza una venta, su comisión se debe aumentar.
Con este fin, DB2 Universal Database proporciona un conjunto útil demétodos:v Las restricciones de unicidad impiden la existencia de valores duplicados en
una o más columnas de una tabla.v Las restricciones de integridad referencial aseguran la coherencia de los datos
en las tablas especificadas.v Las restricciones de comprobación de tabla son reglas que establecen
restricciones respecto a los valores que puede tomar una columna. Lasinserciones y actualizaciones fallan si un valor asignado a una columna nocumple las restricciones de comprobación para esa columna.
v Los desencadenantes definen un conjunto de acciones que se ejecutan, odisparan, mediante una operación de supresión, inserción o actualización enuna tabla especificada. Los desencadenantes se pueden utilizar para escribiren otras tablas, para modificar valores de entrada y para emitir mensajes dealerta.
La primera sección proporciona una resumen conceptual de claves.Posteriormente, se examinan, mediante ejemplos y diagramas, la integridadreferencial, las restricciones y los desencadenantes.
© Copyright IBM Corp. 1993, 2000 53
ClavesUna clave es un conjunto de columnas que se puede utilizar para identificar oacceder a una fila o filas determinadas.
Cuando una clave consta de más de una columna se denomina clavecompuesta. En una tabla con una clave compuesta, la ordenación de lascolumnas en la clave compuesta no se corresponde necesariamente a suordenación en la tabla.
Claves exclusivasUna clave exclusiva se define como una columna (o conjunto de columnas) enla que no hay dos valores iguales. Las columnas de una clave exclusiva nopueden contener valores nulos. El gestor de bases de datos aplica larestricción durante la ejecución de las sentencias INSERT y UPDATE. Unatabla puede contener varias claves exclusivas. Las claves exclusivas sonopcionales y pueden estar definidas en sentencias CREATE TABLE o ALTERTABLE.
Claves primariasUna clave primaria es una clave exclusiva que forma parte de la definición dela tabla. Una tabla no puede tener más de una clave primaria, y las columnasde una clave primaria no pueden contener valores nulos. Las claves primariasson opcionales y pueden estar definidas en sentencias CREATE TABLE oALTER TABLE.
Claves externasUna clave externa se especifica en la definición de una restricción referencial.Una tabla puede tener una o más claves externas o carecer de ellas. El valorde la clave externa compuesta es nulo si cualquier componente del valor esnulo. Las claves externas son opcionales y pueden estar definidas ensentencias CREATE TABLE o ALTER TABLE.
Restricciones de unicidadLas restricciones de unicidad aseguran que los valores de una clave seanexclusivos dentro de una tabla. Las restricciones de unicidad son opcionales, ypuede definirlas en una sentencia CREATE TABLE o ALTER TABLEespecificando la cláusula PRIMARY KEY o UNIQUE. Por ejemplo, puededefinir una restricción de unicidad sobre la columna del número de empleadode una tabla para asegurar que cada empleado tenga un número exclusivo.
Restricciones de integridad referencialMediante la definición de restricciones de unicidad y claves externas puededefinir relaciones entre tablas y consecuentemente aplicar determinadas reglasde negocio. La combinación de restricciones de clave de exclusiva y de claveexterna se denomina habitualmente restricciones de integridad referencial.Una restricción de unicidad referenciada por una clave externa se denominaclave principal. Una clave externa hace referencia o está asociada a una clave
54 Iniciación al SQL
principal determinada. Por ejemplo, una norma puede establecer que cadaempleado (tabla EMPLOYEE) debe pertenecer a un departamento existente(tabla DEPARTMENT). Por tanto, se define el número de departamento comoclave externa en la tabla EMPLOYEE y como clave primaria en la tablaDEPARTMENT. El diagrama siguiente describe visualmente las restriccionesde integridad referencial.
Restricciones de comprobación de tablaLas restricciones de comprobación de tabla especifican condiciones que se evalúanpara cada fila de una tabla. Puede especificar restricciones de comprobaciónpara columnas individuales. Puede añadir las restricciones utilizando lassentencias CREATE TABLE o ALTER TABLE.
La sentencia siguiente crea una tabla con las restricciones siguientes:
Figura 4. Las restricciones de clave externa y de clave primaria definen relaciones y protegen losdatos
Capítulo 7. SQL avanzado 55
v Los valores del número de departamento deben estar dentro del rango de10 a 100
v El puesto de trabajo de un empleado sólo puede ser uno de los siguientes:“Sales”, “Mgr” o “Clerk”
v Los empleados contratados antes de 1986 deben tener un salario mayor que$40.500.
CREATE TABLE EMP(ID SMALLINT NOT NULL,NAME VARCHAR(9),DEPT SMALLINT CHECK (DEPT BETWEEN 10 AND 100),JOB CHAR(5) CHECK (JOB IN ('Sales', 'Mgr', 'Clerk')),HIREDATE DATE,SALARY DECIMAL(7,2),COMM DECIMAL(7,2),PRIMARY KEY (ID),CONSTRAINT YEARSAL CHECK
(YEAR(HIREDATE) >= 1986 OR SALARY > 40500) )
Una restricción se viola sólo si la evaluación de la condición da un resultadofalso. Por ejemplo, si DEPT is NULL para una fila insertada, la inserciónprosigue sin error, aunque los valores para DEPT deban estar comprendidosentre 10 y 100, tal como está definido en la restricción.
La sentencia siguiente añade una restricción llamada COMP a la tablaEMPLOYEE según la cual la retribución total de un empleado debe ser mayorque $15.000:
ALTER TABLE EMPADD CONSTRAINT COMP CHECK (SALARY + COMM > 15000)
Las filas existentes de la tabla se comprobarán para asegurarse de que noviolan la nueva restricción. Puede diferir esta comprobación utilizando lasentencia SET CONSTRAINTS del modo siguiente:
SET CONSTRAINTS FOR EMP OFFALTER TABLE EMP ADD CONSTRAINT COMP CHECK (SALARY + COMM > 15000)SET CONSTRAINTS FOR EMP IMMEDIATE CHECKED
Primero, se utiliza la sentencia SET CONSTRAINTS para diferir lacomprobación de la restricción para la tabla. Después, se pueden añadir una omás restricciones a la tabla sin comprobar las restricciones. A continuación sevuelve a emitir la sentencia SET CONSTRAINTS para activar de nuevo lacomprobación de restricción y realizar la comprobación diferida de restricciónque sea necesaria.
DesencadenantesUn desencadenante define un conjunto de acciones. Los desencadenantes seactivan por operaciones que modifican los datos de una tabla baseespecificada.
56 Iniciación al SQL
Estas son algunas aplicaciones de los desencadenantes:v validar datos de entradav generar automáticamente un valor para una fila recién insertadav leer en otras tablas para establecer referencias cruzadasv escribir en otras tablas para realizar seguimientos de auditoríav dar soporte a alertas mediante mensajes de correo electrónico
El uso de desencadenantes permite una desarrollo más rápido de lasaplicaciones, una aplicación global de las reglas de negocio y unmantenimiento más fácil de las aplicaciones y los datos.
DB2 Universal Database da soporte a varios tipos de desencadenantes. Losdesencadenantes se pueden definir para que actúen antes o después de unaoperación DELETE, INSERT o UPDATE. Cada desencadenante incluye unconjunto de sentencias SQL llamado acción desencadenada que puede conteneruna condición opcional de búsqueda.
Los desencadenantes posteriores se pueden definir con más detalle para que laacción desencadenada se ejecute para cada fila o una sola vez para lasentencia. Los desencadenantes anteriores siempre ejecutan la accióndesencadenada para cada fila.
Utilice un desencadenante precediendo a una sentencia INSERT, UPDATE oDELETE para comprobar la existencia de determinadas condiciones antes derealizar una operación desencadenante o para cambiar los valores de entradaantes de que se almacenen en la tabla.
Utilice un desencadenante posterior para propagar valores según sea necesarioo para realizar otras tareas, tales como enviar un mensaje, que pueden sernecesarias como parte de la operación de activación.
El ejemplo siguiente muestra una utilización de los desencadenantesanteriores y posteriores. Considere una aplicación que registra y hace unseguimiento de los cambios en la cotización de las acciones. La base de datoscontiene dos tablas, CURRENTQUOTE (cotización actual) y QUOTEHISTORY(historia de cotizaciones), que están definidas del modo siguiente:
CREATE TABLE CURRENTQUOTE(SYMBOL VARCHAR(10),QUOTE DECIMAL(5,2),STATUS VARCHAR(9))
CREATE TABLE QUOTEHISTORY(SYMBOL VARCHAR(10),QUOTE DECIMAL(5,2),TIMESTAMP TIMESTAMP)
Capítulo 7. SQL avanzado 57
Cuando la columna QUOTE de CURRENTQUOTE se actualiza utilizando unasentencia tal como:
UPDATE CURRENTQUOTESET QUOTE = 68.5WHERE SYMBOL = 'IBM'
La columna STATUS de CURRENTQUOTE se debe actualizar para reflejar silas acciones:v Están subiendo de valorv Han alcanzado una nueva cotización máxima del añov Están disminuyendo de valorv Han alcanzado una nueva cotización mínima del añov Están en un valor estable.
Esto se realiza mediante este desencadenante anterior:
«1¬
CREATE TRIGGER STOCK_STATUSNO CASCADE BEFORE UPDATE OF QUOTE ON CURRENTQUOTEREFERENCING NEW AS NEWQUOTE OLD AS OLDQUOTEFOR EACH ROW MODE DB2SQL
«2¬
SET NEWQUOTE.STATUS =
«3¬
CASE
«4¬
WHEN NEWQUOTE.QUOTE >=(SELECT MAX(QUOTE)
FROM QUOTEHISTORYWHERE SYMBOL = NEWQUOTE.SYMBOLAND YEAR(TIMESTAMP) = YEAR(CURRENT DATE) )
THEN 'High'
«5¬
WHEN NEWQUOTE.QUOTE <=(SELECT MIN(QUOTE)
FROM QUOTEHISTORYWHERE SYMBOL = NEWQUOTE.SYMBOLAND YEAR(TIMESTAMP) = YEAR(CURRENT DATE) )
THEN 'Low'
«6¬
WHEN NEWQUOTE.QUOTE > OLDQUOTE.QUOTETHEN 'Rising'
WHEN NEWQUOTE.QUOTE < OLDQUOTE.QUOTE
58 Iniciación al SQL
THEN 'Dropping'WHEN NEWQUOTE.QUOTE = OLDQUOTE.QUOTE
THEN 'Steady'END
«1¬ Este bloque de código define un desencadenante llamadoSTOCK_STATUS que se debe activar antes de actualizar la columnaQUOTE de la tabla CURRENTQUOTE. La segunda línea especificaque la acción desencadenada se debe aplicar antes de cualquiercambio producido en la base de datos por la actualizaciónpropiamente dicha de la tabla CURRENTQUOTE. La cláusula NOCASCADE significa que la acción desencadenada no provocará laactivación de ningún otro desencadenante. La tercera línea especificalos nombres que se deben utilizar como calificadores del nombre decolumna para los valores nuevos (NEWQUOTE) y para los valoresantiguos (OLDQUOTE). Los nombre de columna calificados con estosnombres de correlación (NEWQUOTE y OLDQUOTE) se denominanvariables de transición. La cuarta línea indica que la accióndesencadenada se debe ejecutar para cada fila.
«2¬ Esto señala el inicio de la primera y única sentencia SQL contenida enla acción desencadenada de este desencadenante. La sentencia con lavariable de transición SET se utiliza en un desencadenante paraasignar un valor a una columna en la fila de la tabla que se estáactualizando mediante la sentencia activada por el desencadenante.Esta sentencia asigna un valor a la columna STATUS de la tablaCURRENTQUOTE.
«3¬ La expresión utilizada en el lado derecho de la asignación es unaexpresión CASE. La expresión CASE abarca hasta la palabra claveEND.
«4¬ El primer bloque de la expresión CASE comprueba si la nuevacotización (NEWQUOTE.QUOTE) sobrepasa el valor máximocorrespondiente al símbolo de las acciones en el año natural actual. Lasubconsulta utiliza la tabla QUOTEHISTORY que es actualizada por eldesencadenante posterior que sigue a continuación.
«5¬ El segundo bloque de la expresión CASE comprueba si la nuevacotización (NEWQUOTE.QUOTE) es menor que el valor mínimocorrespondiente al símbolo de las acciones en el año natural actual. Lasubconsulta utiliza la tabla QUOTEHISTORY que es actualizada por eldesencadenante posterior que sigue a continuación.
«6¬ Los últimos tres bloques de CASE comparan la nueva cotización(NEWQUOTE.QUOTE) con la cotización que había en la tabla(OLDQUOTE.QUOTE) para determinar si es mayor, menor o igual. Lasentencia con la variable de transición SET finaliza aquí.
Capítulo 7. SQL avanzado 59
Además de actualizar la entrada en la tabla CURRENTQUOTE, es necesariocrear un registro de auditoría en la tabla QUOTEHISTORY, mediante la copiade la nueva cotización acompañada de una indicación de fecha. Esto se realizamediante este desencadenante posterior:
«1¬
CREATE TRIGGER RECORD_HISTORYAFTER UPDATE OF QUOTE ON CURRENTQUOTEREFERENCING NEW AS NEWQUOTEFOR EACH ROW MODE DB2SQLBEGIN ATOMIC
«2¬
INSERT INTO QUOTEHISTORYVALUES (NEWQUOTE.SYMBOL, NEWQUOTE.QUOTE, CURRENT TIMESTAMP);
END
«1¬ Este bloque de código define un desencadenante llamadoRECORD_HISTORY que se debe activar antes de actualizar lacolumna QUOTE de la tabla CURRENTQUOTE. La tercera líneaespecifica el nombre que se debe utilizar como calificador del nombrede columna para el nuevo valor (NEWQUOTE). La cuarta línea indicaque la acción desencadenada se debe ejecutar para cada fila.
«2¬ La acción desencadenada de este desencadenante contiene unasentencia SQL individual que inserta una fila en la tablaQUOTEHISTORY utilizando los datos de la fila que se ha actualizado(NEWQUOTE.SYMBOL y NEWQUOTE.QUOTE) y la indicación defecha actual.
CURRENT TIMESTAMP es un registro especial que contiene laindicación de la fecha. La sección “Registros especiales” en lapágina 70 proporciona una lista y una explicación.
Uniones
El proceso de combinar datos de dos o más tablas se denomina unión detablas. El gestor de bases de datos forma todas las combinaciones de filasprocedentes de las tablas especificadas. Para cada combinación, comprueba lacondición de unión. Una condición de unión es una condición de búsqueda, conalgunas restricciones. Para obtener una lista de restricciones, vea el manualConsulta de SQL.
Observe que no es necesario que las columnas que intervienen en la unióntengan el mismo tipo de datos, pero deben ser compatibles. La condición deunión se evalúa de la misma manera que cualquier otra condición debúsqueda, y son aplicables las mismas reglas para las comparaciones.
60 Iniciación al SQL
Si no se especifica una condición de unión, se forman todas las combinacionesde filas de las tablas listadas en la cláusula FROM, aunque las filas puedan notener ninguna relación entre sí. El resultado se denomina producto cruzado delas dos tablas.
Los ejemplos de esta sección están basados en las dos tablas siguientes. Estastablas son simplificaciones de las tablas contenidas en la base de datos deejemplo, pero no existen en ella. Se utilizan para tratar cuestiones interesantessobre las uniones en general. SAMP_STAFF lista el nombre de los empleadosque no están empleados como contratistas y su puesto de trabajo;SAMP_PROJECT lista el nombre de los empleados (con contrato y dedicacióncompleta) y los proyectos en los que trabajan.
Las tablas son las siguientes:
El ejemplo siguiente genera el producto cruzado de las dos tablas. No seespecifica una condición de unión, por lo que se muestran todas lascombinaciones de filas:
SELECT SAMP_PROJECT.NAME,SAMP_PROJECT.PROJ, SAMP_STAFF.NAME, SAMP_STAFF.JOB
FROM SAMP_PROJECT, SAMP_STAFF
Esta sentencia produce el resultado siguiente:
Figura 5. Tabla SAMP_PROJECT
Figura 6. Tabla SAMP_STAFF
Capítulo 7. SQL avanzado 61
NAME PROJ NAME JOB---------- ------ ---------- --------Haas AD3100 Haas PRESThompson PL2100 Haas PRESWalker MA2112 Haas PRESLutz MA2111 Haas PRESHaas AD3100 Thompson MANAGERThompson PL2100 Thompson MANAGERWalker MA2112 Thompson MANAGERLutz MA2111 Thompson MANAGERHaas AD3100 Lucchessi SALESREPThompson PL2100 Lucchessi SALESREPWalker MA2112 Lucchessi SALESREPLutz MA2111 Lucchessi SALESREPHaas AD3100 Nicholls ANALYSTThompson PL2100 Nicholls ANALYSTWalker MA2112 Nicholls ANALYSTLutz MA2111 Nicholls ANALYST
Los dos tipos principales de uniones son las uniones internas y las unionesexternas. Hasta el momento, en todos los ejemplos hemos utilizado la unióninterna. Las uniones internas sólo conservan las filas del producto cruzadoque cumplen la condición de unión. Si una fila existe en una tabla, pero no enla otra, la información no se incluye en la tabla resultante.
El ejemplo siguiente produce la unión interna de las dos tablas. La unióninterna lista los empleados con dedicación completa que están asignados a unproyecto:
SELECT SAMP_PROJECT.NAME,SAMP_PROJECT.PROJ, SAMP_STAFF.NAME, SAMP_STAFF.JOB
FROM SAMP_PROJECT, SAMP_STAFFWHERE SAMP_STAFF.NAME = SAMP_PROJECT.NAME
Como método alternativo, puede especificar la unión interna del modosiguiente:
SELECT SAMP_PROJECT.NAME,SAMP_PROJECT.PROJ, SAMP_STAFF.NAME, SAMP_STAFF.JOB
FROM SAMP_PROJECT INNER JOIN SAMP_STAFFON SAMP_STAFF.NAME = SAMP_PROJECT.NAME
El resultado es:NAME PROJ NAME JOB---------- ------ ---------- --------Haas AD3100 Haas PRESThompson PL2100 Thompson MANAGER
Observe que el resultado de la unión interna consta de filas que tienen valorescoincidentes para la columna NAME en la tablas derecha e izquierda - ’Haas’y ’Thompson’ están en tabla SAMP_STAFF, que lista los empleados con
62 Iniciación al SQL
dedicación completa, y en la tabla SAMP_PROJECT, que lista los empleadoscon contrato y dedicación completa asignados a un proyecto.
Las uniones externas son una concatenación de la unión interna y de las filasausentes en la unión interna que proceden de la tabla izquierda, la tabladerecha o ambas tablas. Cuando se realiza una unión externa de dos tablas,una tabla se designa arbitrariamente como tabla izquierda y la otra como tabladerecha. Existen tres tipos de uniones externas:1. La unión externa izquierda incluye la unión interna y las filas de la tabla
izquierda no contenidas en la unión interna.2. La unión externa derecha incluye la unión interna y las filas de la tabla
derecha no contenidas en la unión interna.3. La unión externa total incluye la unión interna y las filas de la tabla
derecha no contenidas en la unión interna.
Utilice la sentencia SELECT para especificar las columnas que se debenmostrar. En la cláusula FROM, especifique el nombre de la primera tablaseguido de las palabras clave LEFT OUTER JOIN, RIGHT OUTER JOIN oFULL OUTER JOIN. A continuación, especifique la segunda tabla seguida dela palabra clave ON. Después de la palabra clave ON, especifique la condiciónde unión para expresar una relación entre las tablas a unir.
En el ejemplo siguiente, SAMP_STAFF está designada como tabla derecha ySAMP_PROJECT como tabla izquierda. Mediante LEFT OUTER JOIN, se listael nombre y número de proyecto de los empleados con contrato y dedicacióncompleta (listados en SAMP_PROJECT) y su puesto de trabajo, si sonempleados con dedicación completa (listados en SAMP_STAFF):
SELECT SAMP_PROJECT.NAME, SAMP_PROJECT.PROJ,SAMP_STAFF.NAME, SAMP_STAFF.JOB
FROM SAMP_PROJECT LEFT OUTER JOIN SAMP_STAFFON SAMP_STAFF.NAME = SAMP_PROJECT.NAME
Esta sentencia produce el resultado siguiente:NAME PROJ NAME JOB---------- ---------- ---------- -----------Haas AD3100 Haas PRESLutz MA2111 - -Thompson PL2100 Thompson MANAGERWalker MA2112 - -
El resultado de la unión interna son las filas que tienen valores en todas lascolumnas. Estas son las filas que cumplen la condición de búsqueda: ’Haas’ y’Thompson’ aparecen en SAMP_PROJECT (tabla izquierda) y enSAMP_STAFF (tabla derecha). Para las filas que no cumplen la condición debúsqueda, aparece el valor nulo en las columnas de la tabla derecha: ’Lutz’ y’Walker’ son empleados con contrato que aparecen en la tabla
Capítulo 7. SQL avanzado 63
SAMP_PROJECT, pero no en la tabla SAMP_STAFF. Observe que el conjuntoresultante incluye todas las filas de la tabla izquierda.
En el ejemplo siguiente, SAMP_STAFF está designada como tabla derecha ySAMP_PROJECT como tabla izquierda. Mediante RIGHT OUTER JOIN, selista el nombre y puesto de trabajo de los empleados con dedicación completa(listados en SAMP_STAFF) y su número de proyecto, si están asignados a unproyecto (listado en SAMP_PROJECT):
SELECT SAMP_PROJECT.NAME,SAMP_PROJECT.PROJ, SAMP_STAFF.NAME, SAMP_STAFF.JOB
FROM SAMP_PROJECT RIGHT OUTER JOIN SAMP_STAFFON SAMP_STAFF.NAME = SAMP_PROJECT.NAME
El resultado es:NAME PROJ NAME JOB---------- -------------------- ---------- --------------------Haas AD3100 Haas PRES- - Lucchessi SALESREP- - Nicholls ANALYSTThompson PL2100 Thompson MANAGER
Como en el caso de la unión externa izquierda, el resultado de la unióninterna son las filas que tienen valores en todas las columnas. Estas son lasfilas que cumplen la condición de búsqueda: ’Haas’ y ’Thompson’ aparecen enSAMP_PROJECT (tabla izquierda) y en SAMP_STAFF (tabla derecha). Para lasfilas que no cumplen la condición de búsqueda, aparece el valor nulo en lascolumnas de la tabla derecha: ’Lucchessi’ y ’Nicholls’ son empleados condedicación completa que no están asignados a un proyecto. Aunque estosempleados aparecen en SAMP_STAFF, no están en SAMP_PROJECT. Observeque el conjunto resultante incluye todas las filas de la tabla derecha.
El ejemplo siguiente utiliza FULL OUTER JOIN con las tablasSAMP_PROJECT y SAMP_STAFF. La sentencia lista el nombre de todos losempleados con dedicación completa, incluidos los no asignados a un proyecto,y los empleados con contrato:
SELECT SAMP_PROJECT.NAME, SAMP_PROJECT.PROJ,SAMP_STAFF.NAME, SAMP_STAFF.JOB
FROM SAMP_PROJECT FULL OUTER JOIN SAMP_STAFFON SAMP_STAFF.NAME = SAMP_PROJECT.NAME
El resultado es:NAME PROJ NAME JOB---------- ----------- ---------- ----------Haas AD3100 Haas PRES- - Lucchessi SALESREP- - Nicholls ANALYST
64 Iniciación al SQL
Thompson PL2100 Thompson MANAGERLutz MA2111 - -Walker MA2112 - -
Este resultado comprende la unión externa izquierda, la unión externaderecha y la unión interna. Se listan todos los empleados con dedicacióncompleta y contrato. Al igual que en la unión externa izquierda y la uniónexterna derecha, aparece un valor nulo para los valores de columna que nocumplen la condición de unión. El conjunto resultante comprende todas lasfilas de SAMP_STAFF y SAMP_PROJECT.
Consultas complejas
DB2 Universal Database le permite agrupar, fusionar y visualizar variascolumnas en un conjunto resultante individual mediante la utilización deROLLUP y CUBE. Esta nueva y potente característica mejora y simplifica elanálisis de datos basado en el SQL.
Existen diversos métodos para extraer información útil de la base de datos.Puede aplicar consultas recursivas para producir tablas resultantes a partir delos conjuntos de datos existentes.
Consultas ROLLUP y CUBEPuede especificar las operaciones ROLLUP y CUBE en la cláusula GROUP BYde una consulta.
ROLLUP produce un conjunto resultante que contiene las filas agrupadasnormales y filas de subtotal. CUBE produce un conjunto resultante que contienelas filas obtenidas por ROLLUP y filas de tabulación cruzada.
Por tanto, con ROLLUP, podría obtener las ventas por persona y mes, juntocon los totales mensuales de ventas y un total general. Con CUBE, seobtendrían filas adicionales para el total de ventas por persona.
Vea el manual Consulta de SQL para obtener más detalles.
Consultas recursivasUna consulta recursiva es una consulta que utiliza iterativamente datosresultantes para determinar más resultados. Puede equipararloconceptualmente a recorrer un árbol o un grafo.
Son ejemplos prácticos de esto los sistemas de reservas y la planificación deredes.
Las consultas recursivas se escriben utilizando una expresión de tabla comúnque incluye una referencia a su propio nombre.
Capítulo 7. SQL avanzado 65
En el manual Consulta de SQL encontrará ejemplos de consultas recursivas.
Funciones OLAP
Las funciones de Proceso Analítico en Línea (OnLine Analytical Processing(OnLine Analytical Processing (OLAP)) realizan una operación de función decolumna sobre una ventana de datos. Esta ventana puede especificar unparticionamiento de filas, una ordenación de filas dentro de particiones o ungrupo de agregación. El grupo de agregación permite al usuario especificar quéfilas, con respecto a la fila actual, intervienen en el cálculo. La utilización deuna ventana de esta clase permite realizar operaciones tales como sumasacumulativas y promedios móviles.
Además de permitir al usuario especificar una ventana para funciones decolumna existentes (tales como SUM y AVG), las funciones OLAP puedenrealizar operaciones de ordenación (RANK y DENSE_RANK) y numeraciónde filas (ROW_NUMBER), para un particionamiento y una ordenación de filasdeterminados.
La consulta de ejemplo siguiente proporciona la categoría de un empleadodentro del departamento, basándose en el salario, y muestra la sumaacumulativa de los salarios dentro del departamento (para los departamentos15 y 38):
SELECT NAME, DEPT,RANK () OVER (PARTITION BY DEPT ORDER BY SALARY DESC) AS RANK,SUM (SALARY) OVER (PARTITION BY DEPT
ORDER BY SALARY DESCROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
AS CUMULATIVE_SUMFROM STAFFWHERE DEPT IN (15,38)ORDER BY DEPT, RANK
Esta sentencia produce el resultado siguiente:NAME DEPT RANK CUMULATIVE_SUM---------- ------- ------ ----------------Hanes 15 1 20659.80Rothman 15 2 37162.63Ngan 15 3 49670.83Kermisch 15 4 61929.33O'Brien 38 1 18006.00Marenghi 38 2 35512.75Quigley 38 3 52321.05Naughton 38 4 65275.80Abrahams 38 5 77285.55
66 Iniciación al SQL
Capítulo 8. Personalización y mejora del manejo de datos
Este capítulo proporciona una breve introducción a las extensiones orientadas aobjetos de DB2 Universal Database. Utilizar extensiones orientadas a objetostiene muchas ventajas. Los tipos definidos por el usuario (user-defined types, UDT)permiten utilizar más tipos de datos en las aplicaciones del usuario, mientrasque las funciones definidas por el usuario (user-defined functions, UDF) permitencrear funciones específicas de la aplicación. Las UDF actúan como métodospara los UDT al proporcionar un comportamiento y una encapsulaciónuniformes de los tipos.
A continuación se tratan los registros especiales y los catálogos del sistema. Losregistros especiales son áreas de almacenamiento definidas por el gestor debases de datos; se utilizan para almacenar información utilizada por lassentencias SQL. Los registros especiales se definen durante la conexión y sonespecíficos del proceso de la aplicación. Los catálogos del sistema contieneninformación sobre la estructura lógica y física de los objetos de la base dedatos.
Este capítulo trata los temas siguientes:v Tipos definidos por el usuariov Funciones definidas por el usuariov Objetos grandesv Registros especialesv Introducción a las vistas de catálogo
Queda fuera del ámbito de este libro la exposición detallada de los temasindicados anteriormente; estos temas se tratan con detalle en los manualesConsulta de SQL y Administration Guide.
Tipos definidos por el usuario
Un tipo diferenciado es un tipo de datos definido por el usuario que tiene lamisma representación interna que un tipo existente (su tipo “fuente”), pero seconsidera que es un tipo diferente e incompatible para la mayoría de lasoperaciones. Por ejemplo, se puede definir un tipo edad, un tipo peso y untipo estatura, todos los cuales tienen semánticas completamente diferentes,pero que utilizan el tipo de datos incorporado INTEGER para susrepresentaciones internas.
El ejemplo siguiente muestra la creación de un tipo diferenciado llamado PAY:
© Copyright IBM Corp. 1993, 2000 67
CREATE DISTINCT TYPE PAY AS DECIMAL(9,2) WITH COMPARISONS
Aunque PAY tiene la misma representación que el tipo de datos incorporadoDECIMAL(9,2), se considera que es un tipo diferente que no es compatiblecon DECIMAL(9,2) ni con ningún otro tipo. Sólo se puede comparar con elmismo tipo diferenciado. Además, los operadores y funciones que puedenactuar sobre DECIMAL no serían aplicables aquí. Por ejemplo, un valor cuyotipo de datos es PAY no se puede multiplicar por un valor cuyo tipo de datoses INTEGER. Por tanto, es necesario escribir funciones que sólo son aplicablesal tipo de datos PAY.
La utilización de tipos de datos diferenciados limita los errores accidentales.Por ejemplo, si la columna SALARY de la tabla EMPLOYEE está definidacomo perteneciente al tipo de datos PAY, no se podrá sumar a COMM aunquetengan el mismo tipo fuente.
Los tipos de datos diferenciados permiten la conversión del tipo de datos. Untipo fuente se puede convertir a un tipo de datos diferenciado y viceversa. Porejemplo, si la columna SALARY de la tabla EMPLOYEE está definida comoperteneciente al tipo de datos PAY, el ejemplo siguiente permite el uso deloperador de comparación:
SELECT * FROM EMPLOYEEWHERE DECIMAL(SALARY) = 41250
DECIMAL(SALARY) devuelve un tipo de datos decimal. Inversamente, untipo de datos numérico se puede convertir a un tipo PAY. Por ejemplo, puedeconvertir el número 41250 utilizando PAY(41250).
Funciones definidas por el usuario
Tal como se mencionó en “Utilización de funciones” en la página 28, DB2Universal Database proporciona funciones incorporadas y funciones definidaspor el usuario (UDF). Sin embargo, este conjunto de funciones no satisfacenunca todas las necesidades del usuario. A menudo, es necesario crearfunciones personalizadas para tareas determinadas. Las funciones definidaspor el usuario le permiten crear funciones personalizadas.
Hay cuatro tipos de funciones definidas por el usuario: funciones fuente (omodelo), funciones escalares externas, funciones de tabla externa y funciones de tablaexterna DB OLE.
Esta sección trata las funciones fuente y las funciones escalares externas. Paraobtener más información sobre las funciones de tabla externa y las funcionesde tabla DB OLE, vea el manual Consulta de SQL.
68 Iniciación al SQL
Las funciones fuente definidas por el usuario permiten que tipos definidospor el usuario hagan referencia de forma selectiva a otra función incorporadao definida por el usuario que ya es conocida para la base de datos. Puedeutilizar funciones escalares y de columna a la vez.
En el ejemplo siguiente, se crea una función definida por el usuario (llamadaMAX) que está basada en la función de columna incorporada MAX, la cualacepta el tipo de datos DECIMAL como entrada. La UDF MAX acepta un tipoPAY como entrada y devuelve un tipo PAY como salida.
CREATE FUNCTION MAX(PAY) RETURNS PAYSOURCE MAX(DECIMAL)
Las funciones externas definidas por el usuario se escriben en un lenguaje deprogramación. Existen funciones escalares externas y funciones de tabla externas;ambas se examinan en el manual Consulta de SQL.
Supongamos, por ejemplo, que ha escrito una función que cuenta el númerode palabras de una serie de caracteres; puede registrar esta función en la basede datos utilizando la sentencia CREATE FUNCTION junto con el nombreWORDCOUNT. Después, esta función se puede utilizar en sentencias SQL.
La sentencia siguiente devuelve los números de empleado y el número depalabras de sus currículums en formato ASCII. WORDCOUNT es una funciónescalar externa que el usuario ha registrado en la base de datos y ahora seutiliza en la sentencia.
SELECT EMPNO, WORDCOUNT(RESUME)FROM EMP_RESUMEWHERE RESUME_FORMAT = 'ascii'
Para obtener información más detallada sobre la escritura de funcionesdefinidas por el usuario, consulte el manual Application Development Guide.
Objetos grandes
El término objeto grande y su acrónimo inglés LOB (large object) se utilizanpara hacer referencia a tres tipos de datos: BLOB, CLOB y DBCLOB. Estostipos pueden contener grandes cantidades de datos, correspondientes aobjetos tales como audio, fotos y documentos.
Un gran objeto binario (binary large object, BLOB) es una serie de caracteres delongitud variable, medida en bytes, que puede tener hasta 2 gigabytes delongitud. Un BLOB se utiliza principalmente para contener información noconvencional, tal como imágenes, voz y soportes mixtos de datos.
Capítulo 8. Personalización y mejora del manejo de datos 69
Un gran objeto de caracteres (character large object, CLOB) es una serie decaracteres de longitud variable, medida en bytes, que puede tener hasta 2gigabytes de longitud. Un CLOB se utiliza para almacenar datos del juego decaracteres de un solo byte, tales como documentos. Se considera que un CLOBes una serie de caracteres.
Un gran objeto de caracteres de doble byte (double-byte character large object,DBCLOB) es una serie de caracteres de doble byte de longitud variable quepuede tener hasta 2 gigabytes de longitud (1.073.741.823 caracteres de doblebyte). Un DBCLOB se utiliza para almacenar volúmenes grandes de datos deljuego de caracteres de doble byte, tales como documentos. Se considera queun DBCLOB es una serie gráfica.
Manejo de objetos grandes (LOB)Debido a que los valores LOB pueden ser muy grandes, su transferenciadesde el servidor de bases de datos al programa de aplicación cliente puedeexigir mucho tiempo. Sin embargo, generalmente los valores LOB se procesanen porciones individuales, en lugar de como un todo. Cuando una aplicaciónno necesita (o desea) almacenar el valor LOB completo en la memoria de laaplicación, puede hacer referencia a este valor mediante una variablelocalizadora de gran objeto.
Las sentencias subsiguientes pueden luego utilizar los localizadores pararealizar operaciones en los datos sin necesidad de recuperar el gran objetocompleto. Las variables localizadoras se utilizan para disminuir lasnecesidades de memoria de las aplicaciones, y para mejorar el rendimientodisminuyendo el flujo de datos entre el cliente y el servidor.
Otro mecanismo son las variables de referencia a archivos. Se utilizan pararecuperar un gran objeto directamente en un archivo o para actualizar ungran objeto de una tabla directamente desde un archivo. Las variables dereferencia a archivos se utilizan para disminuir las necesidades de memoria delas aplicaciones, pues éstas no necesitan almacenar los datos del gran objeto.Para obtener más información, consulte los manuales Application DevelopmentGuide y Consulta de SQL.
Registros especiales
Un registro especial es un espacio de memoria que el gestor de bases de datosdefine para una conexión y sirve para almacenar información que puede serutilizada en sentencias SQL. A continuación siguen algunos ejemplos de losregistros especiales de uso más habitual. Para obtener una lista de todos losregistros especiales e información más detallada, consulte el manual Consultade SQL.v CURRENT DATE: Contiene la fecha de acuerdo con el reloj del sistema en
el momento de ejecución de la sentencia SQL.
70 Iniciación al SQL
v CURRENT FUNCTION PATH: Contiene un valor que especifica la vía deacceso de función que se utiliza para resolver las referencias a funciones ytipos de datos.
v CURRENT SERVER: Especifica el servidor de aplicaciones actual.v CURRENT TIME: Contiene la hora de acuerdo con el reloj del sistema en el
momento de ejecución de la sentencia SQL.v CURRENT TIMESTAMP: Especifica una indicación de fecha y hora de
acuerdo con el reloj del sistema en el momento de ejecución de la sentenciaSQL.
v CURRENT TIMEZONE: Especifica la diferencia entre la Hora UniversalCoordinada y la hora local en el servidor de aplicaciones.
v USER: Especifica el ID de autorización de ejecución.
Puede visualizar el contenido de un registro especial mediante la sentenciaVALUES. Por ejemplo:
VALUES (CURRENT TIMESTAMP)
También podría utilizar:SELECT CURRENT TIMESTAMP FROM ORG
y esto devolverá la indicación de fecha y hora para cada fila de la tabla.
Introducción a las vistas de catálogo
DB2 crea y mantiene un conjunto amplio de tablas de catálogo del sistemapara cada base de datos. Estas tablas contienen información sobre laestructura lógica y física de objetos de base de datos, tales como tablas, vistas,paquetes, relaciones de integridad referencial, funciones, tipos diferenciados ydesencadenantes. Estas tablas se crean cuando se crea la base de datos y seactualizan durante las operaciones normales. El usuario no puede crearlas nieliminarlas explícitamente, pero puede consultarlas y visualizar su contenido.
Para obtener más información, consulte el manual Consulta de SQL.
Selección de filas en catálogos del sistemaLas vistas de catálogo son como cualquier otra vista de base de datos. Puedeutilizar sentencias SQL para examinar los datos, exactamente de la mismamanera que lo haría para cualquier otra vista del sistema.
En el catálogo SYSCAT.TABLES encontrará información muy útil sobre tablas.Para determinar los nombres de tablas existentes que ha creado, emita unasentencia como la siguiente:
Capítulo 8. Personalización y mejora del manejo de datos 71
SELECT TABNAME, TYPE, CREATE_TIMEFROM SYSCAT.TABLESWHERE DEFINER = USER
Esta sentencia produce el resultado siguiente:TABNAME TYPE CREATE_TIME------------------ ---- --------------------------ORG T 1999-07-21-13.42.55.128005STAFF T 1999-07-21-13.42.55.609001DEPARTMENT T 1999-07-21-13.42.56.069001EMPLOYEE T 1999-07-21-13.42.56.310001EMP_ACT T 1999-07-21-13.42.56.710001PROJECT T 1999-07-21-13.42.57.051001EMP_PHOTO T 1999-07-21-13.42.57.361001EMP_RESUME T 1999-07-21-13.42.59.154001SALES T 1999-07-21-13.42.59.855001CL_SCHED T 1999-07-21-13.43.00.025002IN_TRAY T 1999-07-21-13.43.00.055001
La lista siguiente indica las vistas de catálogo relativas a temas tratados en elpresente manual. Existen otras muchas vistas de catálogo; están descritas condetalle en los manuales Consulta de SQL y Administration Guide.
Descripción Vista de catálogo
restricciones de comprobación SYSCAT.CHECKS
columnas SYSCAT.COLUMNS
columnas referenciadas por restricciones decomprobación
SYSCAT.COLCHECKS
columnas utilizadas en claves SYSCAT.KEYCOLUSE
tipos de datos SYSCAT.DATATYPES
parámetros de función o resultado de unafunción
SYSCAT.FUNCPARMS
restricciones referenciales SYSCAT.REFERENCES
esquemas SYSCAT.SCHEMATA
restricciones de tabla SYSCAT.TABCONST
tablas SYSCAT.TABLES
desencadenantes SYSCAT.TRIGGERS
funciones definidas por el usuario SYSCAT.FUNCTIONS
vistas SYSCAT.VIEWS
72 Iniciación al SQL
Apéndice A. Tablas de base de datos de ejemplo
Este apéndice muestra la información contenida en las tablas de ejemplo de labase de datos de ejemplo SAMPLE y describe cómo instalarlas y eliminarlas.
Se proporcionan más bases de datos de ejemplo con DB2 Universal Databasepara demostrar las funciones de la inteligencia de la empresa y se utilizan enla guía de aprendizaje de la inteligencia de la empresa. Sin embargo, sólo sedescribe en este apéndice el contenido de la base de datos de ejemploSAMPLE. Consulte Centro de depósito de datos Administration Guide paraobtener más información acerca de las bases de datos de ejemplo deinteligencia de la empresa.
Las tablas de ejemplo se utilizan en los ejemplos del presente manual y enotros manuales de esta biblioteca. Además, se muestran los datos contenidosen los archivos de ejemplo cuyos tipos de datos son BLOB y CLOB.
Este apéndice contiene las secciones siguientes:.“La base de datos de ejemplo” en la página 74“Para crear la base de datos de ejemplo” en la página 74“Borrado de la base de datos de ejemplo” en la página 74“Tabla CL_SCHED” en la página 75“Tabla DEPARTMENT” en la página 75“Tabla EMPLOYEE” en la página 75“Tabla EMP_ACT” en la página 79“Tabla EMP_PHOTO” en la página 81“Tabla EMP_RESUME” en la página 81“Tabla IN_TRAY” en la página 82“Tabla ORG” en la página 82“Tabla PROJECT” en la página 83“Tabla SALES” en la página 84“Tabla STAFF” en la página 85“Tabla STAFFG” en la página 86“Archivos de ejemplo con el tipo de datos BLOB y CLOB” en la página 87“Foto de Quintana” en la página 87“Currículum de Quintana” en la página 87“Foto de Nicholls” en la página 88“Currículum de Nicholls” en la página 89“Foto de Adamson” en la página 90“Currículum de Adamson” en la página 90“Foto de Walker” en la página 91“Currículum de Walker” en la página 92.
© Copyright IBM Corp. 1993, 2000 73
En las tablas de ejemplo, un guión (-) denota un valor nulo.
La base de datos de ejemplo
Los ejemplos del presente manual utilizan una base de datos de ejemplo. Parautilizar estos ejemplos, debe crear la base de datos SAMPLE. Para manejar labase de datos, debe instalar el gestor de bases de datos.
Para crear la base de datos de ejemploLa base de datos de ejemplo se crea mediante un archivo ejecutable.2 Paracrear una base de datos debe tener autorización SYSADM.v Cuando se utilizan plataformas basadas en UNIX
Si está utilizando el indicador de mandatos del sistema operativo, escriba:sqllib/bin/db2sampl <path>
desde el directorio inicial del propietario de la instancia del gestor de basesde datos, donde vía_de_acceso es un parámetro opcional que especifica la víade acceso donde debe crearse la base de datos de ejemplo. Pulse Intro.3 Elesquema de DB2SAMPL es el valor del registro especial CURRENTSCHEMA.
v Cuando se utilizan plataformas OS/2 o Windows
Si está utilizando el indicador de mandatos del sistema operativo, escriba:
db2sampl e
donde e es un parámetro opcional que especifica la unidad donde debecrearse la base de datos. Pulse Intro.4
Si no está conectado a la estación de trabajo mediante Gestión de perfilesde usuarios, se le solicitará que se conecte.
Borrado de la base de datos de ejemploSi no necesita acceder a la base de datos de ejemplo, puede borrarlautilizando el mandato DROP DATABASE:
db2 drop database sample
2. Para obtener información referente a este mandato, vea el mandato DB2SAMPL en el manual Consulta de mandatos.
3. Si no se especifica el parámetro de vía de acceso, la base de datos de ejemplo se crea en la vía de acceso poromisión especificada por el parámetro DFTDBPATH en el archivo de configuración del gestor de base de datos.
4. Si no se especifica en el parámetro de unidad, la base de datos de ejemplo se crea en la misma unidad que DB2.
Tablas de base de datos de ejemplo
74 Iniciación al SQL
Tabla CL_SCHED
Name: CLASS_CODE DAY STARTING ENDING
Type: char(7) smallint time time
Desc: Class Code(room:teacher)
Day # of 4 dayschedule
Class Start Time Class End Time
Tabla DEPARTMENT
Name: DEPTNO DEPTNAME MGRNO ADMRDEPT LOCATION
Type: char(3) not null varchar(29) not null char(6) char(3) not null char(16)
Desc: Departmentnumber
Name describing generalactivities of department
Employeenumber(EMPNO) ofdepartmentmanager
Department(DEPTNO) towhich thisdepartmentreports
Name of theremote location
Values: A00 SPIFFY COMPUTER SERVICEDIV.
000010 A00 -
B01 PLANNING 000020 A00 -
C01 INFORMATION CENTER 000030 A00 -
D01 DEVELOPMENT CENTER - A00 -
D11 MANUFACTURING SYSTEMS 000060 D01 -
D21 ADMINISTRATION SYSTEMS 000070 D01 -
E01 SUPPORT SERVICES 000050 A00 -
E11 OPERATIONS 000090 E01 -
E21 SOFTWARE SUPPORT 000100 E01 -
Tabla EMPLOYEE
Names: EMPNO FIRSTNME MIDINIT LASTNAME WORKDEPT PHONENO HIREDATE
Type: char(6) notnull
varchar(12)not null
char(1) notnull
varchar(15)not null
char(3) char(4) date
Desc: Employeenumber
First name Middleinitial
Last name Department(DEPTNO)in which theemployeeworks
Phonenumber
Date of hire
JOB EDLEVEL SEX BIRTHDATE SALARY BONUS COMM
char(8) smallint not null char(1) date dec(9,2) dec(9,2) dec(9,2)
Job Number of years offormal education
Sex (Mmale, Ffemale)
Date of birth Yearly salary Yearly bonus Yearlycommission
Tablas de base de datos de ejemplo
Apéndice A. Tablas de base de datos de ejemplo 75
Vea la página siguiente para conocer los valores de la tabla EMPLOYEE.
Tablas de base de datos de ejemplo
76 Iniciación al SQL
EM
PN
OFI
RS
TN
ME
MID
INIT
LA
ST
NA
ME
WO
RK
DE
PT
PH
ON
EN
OH
IRE
DA
TE
JOB
ED
LE
VE
LS
EX
BIR
TH
DA
TE
SA
LA
RY
BO
NU
SC
OM
M
char
(6)
not
null
varc
har(
12)
not
null
char
(1)
not
null
varc
har(
15)
not
null
char
(3)
char
(4)
dat
ech
ar(8
)sm
allin
tno
tnu
llch
ar(1
)d
ate
dec
(9,2
)d
ec(9
,2)
dec
(9,2
)
0000
10C
HR
IST
INE
IH
AA
SA
0039
7819
65-0
1-01
PRE
S18
F19
33-0
8-24
5275
010
0042
20
0000
20M
ICH
AE
LL
TH
OM
PSO
NB
0134
7619
73-1
0-10
MA
NA
GE
R18
M19
48-0
2-02
4125
080
033
00
0000
30SA
LLY
AK
WA
NC
0147
3819
75-0
4-05
MA
NA
GE
R20
F19
41-0
5-11
3825
080
030
60
0000
50JO
HN
BG
EY
ER
E01
6789
1949
-08-
17M
AN
AG
ER
16M
1925
-09-
1540
175
800
3214
0000
60IR
VIN
GF
STE
RN
D11
6423
1973
-09-
14M
AN
AG
ER
16M
1945
-07-
0732
250
500
2580
0000
70E
VA
DPU
LA
SKI
D21
7831
1980
-09-
30M
AN
AG
ER
16F
1953
-05-
2636
170
700
2893
0000
90E
ILE
EN
WH
EN
DE
RSO
NE
1154
9819
70-0
8-15
MA
NA
GE
R16
F19
41-0
5-15
2975
060
023
80
0001
00T
HE
OD
OR
EQ
SPE
NSE
RE
2109
7219
80-0
6-19
MA
NA
GE
R14
M19
56-1
2-18
2615
050
020
92
0001
10V
INC
EN
ZO
GL
UC
CH
ESS
IA
0034
9019
58-0
5-16
SAL
ESR
EP
19M
1929
-11-
0546
500
900
3720
0001
20SE
AN
O’C
ON
NE
LL
A00
2167
1963
-12-
05C
LE
RK
14M
1942
-10-
1829
250
600
2340
0001
30D
OL
OR
ES
MQ
UIN
TAN
AC
0145
7819
71-0
7-28
AN
ALY
ST16
F19
25-0
9-15
2380
050
019
04
0001
40H
EA
TH
ER
AN
ICH
OL
LS
C01
1793
1976
-12-
15A
NA
LYST
18F
1946
-01-
1928
420
600
2274
0001
50B
RU
CE
AD
AM
SON
D11
4510
1972
-02-
12D
ESI
GN
ER
16M
1947
-05-
1725
280
500
2022
0001
60E
LIZ
AB
ET
HR
PIA
NK
AD
1137
8219
77-1
0-11
DE
SIG
NE
R17
F19
55-0
4-12
2225
040
017
80
0001
70M
ASA
TOSH
IJ
YO
SHIM
UR
AD
1128
9019
78-0
9-15
DE
SIG
NE
R16
M19
51-0
1-05
2468
050
019
74
0001
80M
AR
ILY
NS
SCO
UT
TE
ND
1116
8219
73-0
7-07
DE
SIG
NE
R17
F19
49-0
2-21
2134
050
017
07
0001
90JA
ME
SH
WA
LK
ER
D11
2986
1974
-07-
26D
ESI
GN
ER
16M
1952
-06-
2520
450
400
1636
0002
00D
AV
IDB
RO
WN
D11
4501
1966
-03-
03D
ESI
GN
ER
16M
1941
-05-
2927
740
600
2217
0002
10W
ILL
IAM
TJO
NE
SD
1109
4219
79-0
4-11
DE
SIG
NE
R17
M19
53-0
2-23
1827
040
014
62
0002
20JE
NN
IFE
RK
LU
TZ
D11
0672
1968
-08-
29D
ESI
GN
ER
18F
1948
-03-
1929
840
600
2387
0002
30JA
ME
SJ
JEFF
ER
SON
D21
2094
1966
-11-
21C
LE
RK
14M
1935
-05-
3022
180
400
1774
0002
40SA
LVA
TOR
EM
MA
RIN
OD
2137
8019
79-1
2-05
CL
ER
K17
M19
54-0
3-31
2876
060
023
01
0002
50D
AN
IEL
SSM
ITH
D21
0961
1969
-10-
30C
LE
RK
15M
1939
-11-
1219
180
400
1534
0002
60SY
BIL
PJO
HN
SON
D21
8953
1975
-09-
11C
LE
RK
16F
1936
-10-
0517
250
300
1380
0002
70M
AR
IAL
PER
EZ
D21
9001
1980
-09-
30C
LE
RK
15F
1953
-05-
2627
380
500
2190
0002
80E
TH
EL
RSC
HN
EID
ER
E11
8997
1967
-03-
24O
PER
ATO
R17
F19
36-0
3-28
2625
050
021
00
0002
90JO
HN
RPA
RK
ER
E11
4502
1980
-05-
30O
PER
ATO
R12
M19
46-0
7-09
1534
030
012
27
0003
00PH
ILIP
XSM
ITH
E11
2095
1972
-06-
19O
PER
ATO
R14
M19
36-1
0-27
1775
040
014
20
0003
10M
AU
DE
FSE
TR
IGH
TE
1133
3219
64-0
9-12
OPE
RA
TOR
12F
1931
-04-
2115
900
300
1272
0003
20R
AM
LA
LV
ME
HTA
E21
9990
1965
-07-
07FI
EL
DR
EP
16M
1932
-08-
1119
950
400
1596
Tablas de base de datos de ejemplo
Apéndice A. Tablas de base de datos de ejemplo 77
EM
PN
OFI
RS
TN
ME
MID
INIT
LA
ST
NA
ME
WO
RK
DE
PT
PH
ON
EN
OH
IRE
DA
TE
JOB
ED
LE
VE
LS
EX
BIR
TH
DA
TE
SA
LA
RY
BO
NU
SC
OM
M
0003
30W
ING
LE
EE
2121
0319
76-0
2-23
FIE
LD
RE
P14
M19
41-0
7-18
2537
050
020
30
0003
40JA
SON
RG
OU
NO
TE
2156
9819
47-0
5-05
FIE
LD
RE
P16
M19
26-0
5-17
2384
050
019
07
Tablas de base de datos de ejemplo
78 Iniciación al SQL
Tabla EMP_ACT
Name: EMPNO PROJNO ACTNO EMPTIME EMSTDATE EMENDATE
Type: char(6) not null char(6) not null smallint notnull
dec(5,2) date date
Desc: Employeenumber
Project number Activitynumber
Proportion ofemployee’s
time spent onproject
Date activitystarts
Date activityends
Values: 000010 AD3100 10 .50 1982-01-01 1982-07-01
000070 AD3110 10 1.00 1982-01-01 1983-02-01
000230 AD3111 60 1.00 1982-01-01 1982-03-15
000230 AD3111 60 .50 1982-03-15 1982-04-15
000230 AD3111 70 .50 1982-03-15 1982-10-15
000230 AD3111 80 .50 1982-04-15 1982-10-15
000230 AD3111 180 1.00 1982-10-15 1983-01-01
000240 AD3111 70 1.00 1982-02-15 1982-09-15
000240 AD3111 80 1.00 1982-09-15 1983-01-01
000250 AD3112 60 1.00 1982-01-01 1982-02-01
000250 AD3112 60 .50 1982-02-01 1982-03-15
000250 AD3112 60 .50 1982-12-01 1983-01-01
000250 AD3112 60 1.00 1983-01-01 1983-02-01
000250 AD3112 70 .50 1982-02-01 1982-03-15
000250 AD3112 70 1.00 1982-03-15 1982-08-15
000250 AD3112 70 .25 1982-08-15 1982-10-15
000250 AD3112 80 .25 1982-08-15 1982-10-15
000250 AD3112 80 .50 1982-10-15 1982-12-01
000250 AD3112 180 .50 1982-08-15 1983-01-01
000260 AD3113 70 .50 1982-06-15 1982-07-01
000260 AD3113 70 1.00 1982-07-01 1983-02-01
000260 AD3113 80 1.00 1982-01-01 1982-03-01
000260 AD3113 80 .50 1982-03-01 1982-04-15
000260 AD3113 180 .50 1982-03-01 1982-04-15
000260 AD3113 180 1.00 1982-04-15 1982-06-01
000260 AD3113 180 .50 1982-06-01 1982-07-01
000270 AD3113 60 .50 1982-03-01 1982-04-01
000270 AD3113 60 1.00 1982-04-01 1982-09-01
000270 AD3113 60 .25 1982-09-01 1982-10-15
000270 AD3113 70 .75 1982-09-01 1982-10-15
000270 AD3113 70 1.00 1982-10-15 1983-02-01
Tablas de base de datos de ejemplo
Apéndice A. Tablas de base de datos de ejemplo 79
Name: EMPNO PROJNO ACTNO EMPTIME EMSTDATE EMENDATE
000270 AD3113 80 1.00 1982-01-01 1982-03-01
000270 AD3113 80 .50 1982-03-01 1982-04-01
000030 IF1000 10 .50 1982-06-01 1983-01-01
000130 IF1000 90 1.00 1982-01-01 1982-10-01
000130 IF1000 100 .50 1982-10-01 1983-01-01
000140 IF1000 90 .50 1982-10-01 1983-01-01
000030 IF2000 10 .50 1982-01-01 1983-01-01
000140 IF2000 100 1.00 1982-01-01 1982-03-01
000140 IF2000 100 .50 1982-03-01 1982-07-01
000140 IF2000 110 .50 1982-03-01 1982-07-01
000140 IF2000 110 .50 1982-10-01 1983-01-01
000010 MA2100 10 .50 1982-01-01 1982-11-01
000110 MA2100 20 1.00 1982-01-01 1982-03-01
000010 MA2110 10 1.00 1982-01-01 1983-02-01
000200 MA2111 50 1.00 1982-01-01 1982-06-15
000200 MA2111 60 1.00 1982-06-15 1983-02-01
000220 MA2111 40 1.00 1982-01-01 1983-02-01
000150 MA2112 60 1.00 1982-01-01 1982-07-15
000150 MA2112 180 1.00 1982-07-15 1983-02-01
000170 MA2112 60 1.00 1982-01-01 1983-06-01
000170 MA2112 70 1.00 1982-06-01 1983-02-01
000190 MA2112 70 1.00 1982-02-01 1982-10-01
000190 MA2112 80 1.00 1982-10-01 1983-10-01
000160 MA2113 60 1.00 1982-07-15 1983-02-01
000170 MA2113 80 1.00 1982-01-01 1983-02-01
000180 MA2113 70 1.00 1982-04-01 1982-06-15
000210 MA2113 80 .50 1982-10-01 1983-02-01
000210 MA2113 180 .50 1982-10-01 1983-02-01
000050 OP1000 10 .25 1982-01-01 1983-02-01
000090 OP1010 10 1.00 1982-01-01 1983-02-01
000280 OP1010 130 1.00 1982-01-01 1983-02-01
000290 OP1010 130 1.00 1982-01-01 1983-02-01
000300 OP1010 130 1.00 1982-01-01 1983-02-01
000310 OP1010 130 1.00 1982-01-01 1983-02-01
000050 OP2010 10 .75 1982-01-01 1983-02-01
000100 OP2010 10 1.00 1982-01-01 1983-02-01
000320 OP2011 140 .75 1982-01-01 1983-02-01
Tablas de base de datos de ejemplo
80 Iniciación al SQL
Name: EMPNO PROJNO ACTNO EMPTIME EMSTDATE EMENDATE
000320 OP2011 150 .25 1982-01-01 1983-02-01
000330 OP2012 140 .25 1982-01-01 1983-02-01
000330 OP2012 160 .75 1982-01-01 1983-02-01
000340 OP2013 140 .50 1982-01-01 1983-02-01
000340 OP2013 170 .50 1982-01-01 1983-02-01
000020 PL2100 30 1.00 1982-01-01 1982-09-15
Tabla EMP_PHOTO
Name: EMPNO PHOTO_FORMAT PICTURE
Type: char(6) not null varchar(10) not null blob(100k)
Desc: Employee number Photo format Photo of employee
Values: 000130 bitmap db200130.bmp
000130 gif db200130.gif
000130 xwd db200130.xwd
000140 bitmap db200140.bmp
000140 gif db200140.gif
000140 xwd db200140.xwd
000150 bitmap db200150.bmp
000150 gif db200150.gif
000150 xwd db200150.xwd
000190 bitmap db200190.bmp
000190 gif db200190.gif
000190 xwd db200190.xwd
v “Foto de Quintana” en la página 87 muestra la foto del empleado DeloresQuintana.
v “Foto de Nicholls” en la página 88 muestra la foto del empleado HeatherNicholls.
v “Foto de Adamson” en la página 90 muestra la foto del empleado BruceAdamson.
v “Foto de Walker” en la página 91 muestra la foto del empleado JamesWalker.
Tabla EMP_RESUME
Name: EMPNO RESUME_FORMAT RESUME
Type: char(6) not null varchar(10) not null clob(5k)
Desc: Employee number Resume Format Resume of employee
Values: 000130 ascii db200130.asc
Tablas de base de datos de ejemplo
Apéndice A. Tablas de base de datos de ejemplo 81
Name: EMPNO RESUME_FORMAT RESUME
000130 script db200130.scr
000140 ascii db200140.asc
000140 script db200140.scr
000150 ascii db200150.asc
000150 script db200150.scr
000190 ascii db200190.asc
000190 script db200190.scr
v “Currículum de Quintana” en la página 87 muestra el currículum delempleado Delores Quintana.
v “Currículum de Nicholls” en la página 89 muestra el currículum delempleado Heather Nicholls.
v “Currículum de Adamson” en la página 90 muestra el currículum delempleado Bruce Adamson.
v “Currículum de Walker” en la página 92 muestra el currículum delempleado James Walker.
Tabla IN_TRAY
Name: RECEIVED SOURCE SUBJECT NOTE_TEXT
Type: timestamp char(8) char(64) varchar(3000)
Desc: Date and Timereceived
User id of personsending note
Brief description The note
Tabla ORG
Name: DEPTNUMB DEPTNAME MANAGER DIVISION LOCATION
Type: smallint not null varchar(14) smallint varchar(10) varchar(13)
Desc: Departmentnumber
Department name Manager number Division ofcorporation
City
Values: 10 Head Office 160 Corporate New York
15 New England 50 Eastern Boston
20 Mid Atlantic 10 Eastern Washington
38 South Atlantic 30 Eastern Atlanta
42 Great Lakes 100 Midwest Chicago
51 Plains 140 Midwest Dallas
66 Pacific 270 Western San Francisco
84 Mountain 290 Western Denver
Tablas de base de datos de ejemplo
82 Iniciación al SQL
Tabla PROJECT
Name: PROJNO PROJNAME DEPTNO RESPEMP PRSTAFF PRSTDATE PRENDATE MAJPROJ
Type: char(6) notnull
varchar(24)not null
char(3) notnull
char(6) notnull
dec(5,2) date date char(6)
Desc: Projectnumber
Project name Departmentresponsible
Employeeresponsible
Estimatedmeanstaffing
Estimatedstart date
Estimatedend date
Majorproject, for asubproject
Values: AD3100 ADMINSERVICES
D01 000010 6.5 1982-01-01 1983-02-01 -
AD3110 GENERALADMINSYSTEMS
D21 000070 6 1982-01-01 1983-02-01 AD3100
AD3111 PAYROLLPROGRAMMING
D21 000230 2 1982-01-01 1983-02-01 AD3110
AD3112 PERSONNELPROGRAMMING
D21 000250 1 1982-01-01 1983-02-01 AD3110
AD3113 ACCOUNTPROGRAMMING
D21 000270 2 1982-01-01 1983-02-01 AD3110
IF1000 QUERYSERVICES
C01 000030 2 1982-01-01 1983-02-01 -
IF2000 USEREDUCATION
C01 000030 1 1982-01-01 1983-02-01 -
MA2100 WELD LINEAUTOMATION
D01 000010 12 1982-01-01 1983-02-01 -
MA2110 W LPROGRAMMING
D11 000060 9 1982-01-01 1983-02-01 MA2100
MA2111 W LPROGRAMDESIGN
D11 000220 2 1982-01-01 1982-12-01 MA2110
MA2112 W L ROBOTDESIGN
D11 000150 3 1982-01-01 1982-12-01 MA2110
MA2113 W L PRODCONTPROGS
D11 000160 3 1982-02-15 1982-12-01 MA2110
OP1000 OPERATIONSUPPORT
E01 000050 6 1982-01-01 1983-02-01 -
OP1010 OPERATION E11 000090 5 1982-01-01 1983-02-01 OP1000
OP2000 GENSYSTEMSSERVICES
E01 000050 5 1982-01-01 1983-02-01 -
OP2010 SYSTEMSSUPPORT
E21 000100 4 1982-01-01 1983-02-01 OP2000
OP2011 SCPSYSTEMSSUPPORT
E21 000320 1 1982-01-01 1983-02-01 OP2010
OP2012 APPLICATIONSSUPPORT
E21 000330 1 1982-01-01 1983-02-01 OP2010
OP2013 DB/DCSUPPORT
E21 000340 1 1982-01-01 1983-02-01 OP2010
PL2100 WELD LINEPLANNING
B01 000020 1 1982-01-01 1982-09-15 MA2100
Tablas de base de datos de ejemplo
Apéndice A. Tablas de base de datos de ejemplo 83
Tabla SALES
Name: SALES_DATE SALES_PERSON REGION SALES
Type: date varchar(15) varchar(15) int
Desc: Date of sales Employee’s last name Region of sales Number of sales
Values: 12/31/1995 LUCCHESSI Ontario-South 1
12/31/1995 LEE Ontario-South 3
12/31/1995 LEE Quebec 1
12/31/1995 LEE Manitoba 2
12/31/1995 GOUNOT Quebec 1
03/29/1996 LUCCHESSI Ontario-South 3
03/29/1996 LUCCHESSI Quebec 1
03/29/1996 LEE Ontario-South 2
03/29/1996 LEE Ontario-North 2
03/29/1996 LEE Quebec 3
03/29/1996 LEE Manitoba 5
03/29/1996 GOUNOT Ontario-South 3
03/29/1996 GOUNOT Quebec 1
03/29/1996 GOUNOT Manitoba 7
03/30/1996 LUCCHESSI Ontario-South 1
03/30/1996 LUCCHESSI Quebec 2
03/30/1996 LUCCHESSI Manitoba 1
03/30/1996 LEE Ontario-South 7
03/30/1996 LEE Ontario-North 3
03/30/1996 LEE Quebec 7
03/30/1996 LEE Manitoba 4
03/30/1996 GOUNOT Ontario-South 2
03/30/1996 GOUNOT Quebec 18
03/30/1996 GOUNOT Manitoba 1
03/31/1996 LUCCHESSI Manitoba 1
03/31/1996 LEE Ontario-South 14
03/31/1996 LEE Ontario-North 3
03/31/1996 LEE Quebec 7
03/31/1996 LEE Manitoba 3
03/31/1996 GOUNOT Ontario-South 2
03/31/1996 GOUNOT Quebec 1
04/01/1996 LUCCHESSI Ontario-South 3
04/01/1996 LUCCHESSI Manitoba 1
04/01/1996 LEE Ontario-South 8
04/01/1996 LEE Ontario-North -
04/01/1996 LEE Quebec 8
04/01/1996 LEE Manitoba 9
04/01/1996 GOUNOT Ontario-South 3
Tablas de base de datos de ejemplo
84 Iniciación al SQL
Name: SALES_DATE SALES_PERSON REGION SALES
04/01/1996 GOUNOT Ontario-North 1
04/01/1996 GOUNOT Quebec 3
04/01/1996 GOUNOT Manitoba 7
Tabla STAFF
Name: ID NAME DEPT JOB YEARS SALARY COMM
Type: smallint notnull
varchar(9) smallint char(5) smallint dec(7,2) dec(7,2)
Desc: Employeenumber
Employeename
Departmentnumber
Job type Years ofservice
Currentsalary
Commission
Values: 10 Sanders 20 Mgr 7 18357.50 -
20 Pernal 20 Sales 8 18171.25 612.45
30 Marenghi 38 Mgr 5 17506.75 -
40 O’Brien 38 Sales 6 18006.00 846.55
50 Hanes 15 Mgr 10 20659.80 -
60 Quigley 38 Sales - 16808.30 650.25
70 Rothman 15 Sales 7 16502.83 1152.00
80 James 20 Clerk - 13504.60 128.20
90 Koonitz 42 Sales 6 18001.75 1386.70
100 Plotz 42 Mgr 7 18352.80 -
110 Ngan 15 Clerk 5 12508.20 206.60
120 Naughton 38 Clerk - 12954.75 180.00
130 Yamaguchi 42 Clerk 6 10505.90 75.60
140 Fraye 51 Mgr 6 21150.00 -
150 Williams 51 Sales 6 19456.50 637.65
160 Molinare 10 Mgr 7 22959.20 -
170 Kermisch 15 Clerk 4 12258.50 110.10
180 Abrahams 38 Clerk 3 12009.75 236.50
190 Sneider 20 Clerk 8 14252.75 126.50
200 Scoutten 42 Clerk - 11508.60 84.20
210 Lu 10 Mgr 10 20010.00 -
220 Smith 51 Sales 7 17654.50 992.80
230 Lundquist 51 Clerk 3 13369.80 189.65
240 Daniels 10 Mgr 5 19260.25 -
250 Wheeler 51 Clerk 6 14460.00 513.30
260 Jones 10 Mgr 12 21234.00 -
270 Lea 66 Mgr 9 18555.50 -
280 Wilson 66 Sales 9 18674.50 811.50
Tablas de base de datos de ejemplo
Apéndice A. Tablas de base de datos de ejemplo 85
Name: ID NAME DEPT JOB YEARS SALARY COMM
290 Quill 84 Mgr 10 19818.00 -
300 Davis 84 Sales 5 15454.50 806.10
310 Graham 66 Sales 13 21000.00 200.30
320 Gonzales 66 Sales 4 16858.20 844.00
330 Burke 66 Clerk 1 10988.00 55.50
340 Edwards 84 Sales 7 17844.00 1285.00
350 Gafney 84 Clerk 5 13030.50 188.00
Tabla STAFFG
Nota: STAFFG sólo se crea para páginas de códigos de doble byte.
Name: ID NAME DEPT JOB YEARS SALARY COMM
Type: smallint notnull
vargraphic(9) smallint graphic(5) smallint dec(9,0) dec(9,0)
Desc: Employeenumber
Employeename
Departmentnumber
Job type Years ofservice
Currentsalary
Commission
Values: 10 Sanders 20 Mgr 7 18357.50 -
20 Pernal 20 Sales 8 18171.25 612.45
30 Marenghi 38 Mgr 5 17506.75 -
40 O’Brien 38 Sales 6 18006.00 846.55
50 Hanes 15 Mgr 10 20659.80 -
60 Quigley 38 Sales - 16808.30 650.25
70 Rothman 15 Sales 7 16502.83 1152.00
80 James 20 Clerk - 13504.60 128.20
90 Koonitz 42 Sales 6 18001.75 1386.70
100 Plotz 42 Mgr 7 18352.80 -
110 Ngan 15 Clerk 5 12508.20 206.60
120 Naughton 38 Clerk - 12954.75 180.00
130 Yamaguchi 42 Clerk 6 10505.90 75.60
140 Fraye 51 Mgr 6 21150.00 -
150 Williams 51 Sales 6 19456.50 637.65
160 Molinare 10 Mgr 7 22959.20 -
170 Kermisch 15 Clerk 4 12258.50 110.10
180 Abrahams 38 Clerk 3 12009.75 236.50
190 Sneider 20 Clerk 8 14252.75 126.50
200 Scoutten 42 Clerk - 11508.60 84.20
210 Lu 10 Mgr 10 20010.00 -
220 Smith 51 Sales 7 17654.50 992.80
Tablas de base de datos de ejemplo
86 Iniciación al SQL
Name: ID NAME DEPT JOB YEARS SALARY COMM
230 Lundquist 51 Clerk 3 13369.80 189.65
240 Daniels 10 Mgr 5 19260.25 -
250 Wheeler 51 Clerk 6 14460.00 513.30
260 Jones 10 Mgr 12 21234.00 -
270 Lea 66 Mgr 9 18555.50 -
280 Wilson 66 Sales 9 18674.50 811.50
290 Quill 84 Mgr 10 19818.00 -
300 Davis 84 Sales 5 15454.50 806.10
310 Graham 66 Sales 13 21000.00 200.30
320 Gonzales 66 Sales 4 16858.20 844.00
330 Burke 66 Clerk 1 10988.00 55.50
340 Edwards 84 Sales 7 17844.00 1285.00
350 Gafney 84 Clerk 5 13030.50 188.00
Archivos de ejemplo con el tipo de datos BLOB y CLOB
Esta sección muestra los datos contenidos en los archivos EMP_PHOTO (fotosde empleados) y en los archivos EMP_RESUME (currículums de empleados).
Foto de Quintana
Currículum de QuintanaEl texto siguiente se encuentra en los archivos db200130.asc y db200130.scr.
Resume: Delores M. Quintana
Personal Information
Figura 7. Delores M. Quintana
Tablas de base de datos de ejemplo
Apéndice A. Tablas de base de datos de ejemplo 87
Address: 1150 Eglinton Ave Mellonville, Idaho 83725Phone: (208) 555-9933Birthdate: September 15, 1925Sex: FemaleMarital Status: MarriedHeight: 5’2″Weight: 120 lbs.
Department InformationEmployee Number: 000130Dept Number: C01Manager: Sally KwanPosition: AnalystPhone: (208) 555-4578Hire Date: 1971-07-28
Education
1965 Math and English, B.A. Adelphi University
1960 Dental Technician Florida Institute ofTechnology
Work History
10/91 - present Advisory Systems Analyst Producingdocumentation tools for engineeringdepartment.
12/85 - 9/91 Technical Writer Writer, text programmer, andplanner.
1/79 - 11/85 COBOL Payroll Programmer Writing payrollprograms for a diesel fuel company.
Interestsv Cookingv Readingv Sewingv Remodeling
Foto de Nicholls
Tablas de base de datos de ejemplo
88 Iniciación al SQL
Currículum de NichollsEl texto siguiente se encuentra en los archivos db200140.asc y db200140.scr.
Resume: Heather A. Nicholls
Personal InformationAddress: 844 Don Mills Ave Mellonville, Idaho 83734Phone: (208) 555-2310Birthdate: January 19, 1946Sex: FemaleMarital Status: SingleHeight: 5’8″Weight: 130 lbs.
Department InformationEmployee Number: 000140Dept Number: C01Manager: Sally KwanPosition: AnalystPhone: (208) 555-1793Hire Date: 1976-12-15
Education
1972 Computer Engineering, Ph.D. University ofWashington
1969 Music and Physics, M.A. Vassar College
Work History
Figura 8. Heather A. Nicholls
Tablas de base de datos de ejemplo
Apéndice A. Tablas de base de datos de ejemplo 89
2/83 - present Architect, OCR Development Designing thearchitecture of OCR products.
12/76 - 1/83 Text Programmer Optical character recognition(OCR) programming in PL/I.
9/72 - 11/76 Punch Card Quality Analyst Checking punchcards met quality specifications.
Interestsv Model railroadingv Interior decoratingv Embroideryv Knitting
Foto de Adamson
Currículum de AdamsonEl texto siguiente se encuentra en los archivos db200150.asc y db200150.scr.
Resume: Bruce Adamson
Personal InformationAddress: 3600 Steeles Ave Mellonville, Idaho 83757Phone: (208) 555-4489Birthdate: May 17, 1947Sex: MaleMarital Status: MarriedHeight: 6’0″Weight: 175 lbs.
Department Information
Figura 9. Bruce Adamson
Tablas de base de datos de ejemplo
90 Iniciación al SQL
Employee Number: 000150Dept Number: D11Manager: Irving SternPosition: DesignerPhone: (208) 555-4510Hire Date: 1972-02-12
Education
1971 Environmental Engineering, M.Sc. JohnsHopkins University
1968 American History, B.A. NorthwesternUniversity
Work History
8/79 - present Neural Network Design Developing neuralnetworks for machine intelligence products.
2/72 - 7/79 Robot Vision Development Developingrule-based systems to emulate sight.
9/71 - 1/72 Numerical Integration Specialist Helping banksystems communicate with each other.
Interestsv Racing motorcyclesv Building loudspeakersv Assembling personal computersv Sketching
Foto de Walker
Figura 10. James H. Walker
Tablas de base de datos de ejemplo
Apéndice A. Tablas de base de datos de ejemplo 91
Currículum de WalkerEl texto siguiente se encuentra en los archivos db200190.asc y db200190.scr.
Resume: James H. Walker
Personal InformationAddress: 3500 Steeles Ave Mellonville, Idaho 83757Phone: (208) 555-7325Birthdate: June 25, 1952Sex: MaleMarital Status: SingleHeight: 5’11″Weight: 166 lbs.
Department InformationEmployee Number: 000190Dept Number: D11Manager: Irving SternPosition: DesignerPhone: (208) 555-2986Hire Date: 1974-07-26
Education
1974 Computer Studies, B.Sc. University ofMassachusetts
1972 Linguistic Anthropology, B.A. University ofToronto
Work History
6/87 - present Microcode Design Optimizing algorithms formathematical functions.
4/77 - 5/87 Printer Technical Support Installing andsupporting laser printers.
9/74 - 3/77 Maintenance Programming Patching assemblylanguage compiler for mainframes.
Interestsv Wine tastingv Skiingv Swimmingv Dancing
Tablas de base de datos de ejemplo
92 Iniciación al SQL
Apéndice B. Utilización de la biblioteca de DB2
La biblioteca de DB2 Universal Database consta de ayuda en línea, manuales(PDF y HTML) y programas de ejemplo en formato HTML. Esta seccióndescribe la información proporcionada y cómo puede acceder a ella.
Para acceder ″en línea″ a información de productos, puede utilizar el Centrode Información. Para obtener más información, consulte el apartado “Acceso ainformación mediante el Centro de Información” en la página 109. En la Webpuede visualizar información sobre tareas, manuales de DB2, resolución deproblemas, programas de ejemplo e información sobre DB2.
Archivos PDF y manuales impresos sobre DB2
Información sobre DB2La tabla siguiente clasifica los manuales de DB2 en cuatro categorías:
Información de guía y consulta sobre DB2Estos manuales contienen información básica sobre DB2 para todas lasplataformas.
Información de instalación y configuración sobre DB2Estos manuales están pensados para un sistema DB2 que se utiliza enuna plataforma determinada. Por ejemplo, existen manuales de Guíarápida de iniciación diferentes para DB2 sobre OS/2, Windows yplataformas basadas en UNIX.
Programas de ejemplo en HTML para varias plataformasEstos ejemplos son la versión HTML de los programas de ejemplo quese instalan con el Cliente de desarrollo de aplicaciones. Estánpensados para fines informativos y no sustituyen a los programaspropiamente dichos.
Notas de releaseEstos archivos contienen información de última hora que no se pudoincluir en los manuales de DB2.
Los manuales de instalación, las notas de release y las guías de aprendizajeson visualizables directamente en formato HTML desde el CD-ROM delproducto. La mayoría de los manuales pueden visualizarse en formato HTMLdesde el CD-ROM del producto y pueden visualizarse e imprimirse enformato PDF (Adobe Acrobat) desde el CD-ROM de publicaciones de DB2.
© Copyright IBM Corp. 1993, 2000 93
Puede también solicitar un ejemplar impreso a IBM; vea “Solicitud de losmanuales impresos” en la página 105. La tabla siguiente lista los manuales quese pueden solicitar.
En las plataformas OS/2 y Windows, puede instalar los archivos HTML en eldirectorio sqllib\doc\html. La información sobre DB2 está traducida a variosidiomas, pero no toda la información está disponible en todos los idiomas.Cuando la información no está disponible en un idioma determinado, seproporciona en el idioma inglés.
En las plataformas UNIX, puede instalar los archivos HTML en variosidiomas, en los directorios doc/%L/html, donde %L representa el entornonacional. Para obtener más información, consulte el manual Guía rápida deiniciación.
Puede obtener manuales de DB2 y acceder a la información de variasmaneras:v “Visualización de información en línea” en la página 108v “Búsqueda de información en línea” en la página 113v “Solicitud de los manuales impresos” en la página 105v “Impresión de los manuales PDF” en la página 104
94 Iniciación al SQL
Tabla 1. Información sobre DB2
Nombre Descripción Número dedocumento
Nombre dearchivo PDF
Directorio deHTML
Información de guía y consulta sobre DB2
Administration Guide Administration Guide: Planningproporciona una visión general deconceptos sobre bases de datos,información sobre cuestiones de diseño(tal como el diseño lógico y físico de unabase de datos) y una exposición sobre eltema de la alta disponibilidad.
Administration Guide: Implementationproporciona información sobrecuestiones de implantación, tales como laimplantación del diseño de base dedatos, el acceso a bases de datos, laauditoría, la copia y recuperación.
Administration Guide: Performanceproporciona información sobre elentorno de base de datos y la evaluacióny ajuste del rendimiento de aplicaciones.
En Norteamérica, puede solicitar los tresvolúmenes del manual AdministrationGuide, en lengua inglesa, utilizando elnúmero de documento SBOF-8934.
SC09-2946db2d1x70
SC09-2944db2d2x70
SC09-2945db2d3x70
db2d0
Administrative APIReference
Describe las interfaces de programaciónde aplicaciones (las API) de DB2 y lasestructuras de datos que puede utilizarpara gestionar las bases de datos. Estemanual también explica cómo invocarlas API desde las aplicaciones.
SC09-2947
db2b0x70
db2b0
Application BuildingGuide
Proporciona información para configurarel entorno e instrucciones paso a pasopara compilar, enlazar y ejecutaraplicaciones DB2 en Windows, OS/2 yplataformas basadas en UNIX.
SC09-2948
db2axx70
db2ax
Códigos de detección deAPPC, CPI-C y SNA
Proporciona información general sobreAPPC, CPI-C y los códigos de detecciónSNA que pueden aparecer al utilizarproductos DB2 Universal Database.
Solo está disponible en formato HTML.
Sin número dedocumento
db2apx70
db2ap
Apéndice B. Utilización de la biblioteca de DB2 95
Tabla 1. Información sobre DB2 (continuación)
Nombre Descripción Número dedocumento
Nombre dearchivo PDF
Directorio deHTML
Application DevelopmentGuide
Explica cómo desarrollar aplicacionesque acceden a bases de datos DB2mediante SQL incorporado o Java (JDBCy SQLJ). Los temas tratados incluyen laescritura de procedimientosalmacenados, la escritura de funcionesdefinidas por el usuario, la creación detipos definidos por el usuario, lautilización de desencadenantes y eldesarrollo de aplicaciones en entornosparticionados o mediante sistemasfederados.
SC09-2949
db2a0x70
db2a0
CLI Guide and Reference Explica la forma de desarrollaraplicaciones que acceden a bases dedatos DB2 a través de la Interfaz deNivel de Llamada de DB2, que es unainterfaz SQL invocable que es compatiblecon la especificación ODBC de Microsoft.
SC09-2950
db2l0x70
db2l0
Consulta de mandatos Explica cómo utilizar el procesador delínea de mandatos y describe losmandatos de DB2 que puede utilizarpara gestionar la base de datos.
GC10-3495
db2n0x70
db2n0
Connectivity Supplement Proporciona información deconfiguración y consulta sobre cómoutilizar DB2 para AS/400, DB2 paraOS/390, DB2 para MVS o DB2 para VMcomo peticionarios de aplicacionesDRDA con servidores DB2 UniversalDatabase. Este manual también describecómo utilizar servidores de aplicacionesDRDA con peticionarios de aplicacionesDB2 Connect.
Solo está disponible en los formatosHTML y PDF.
Sin número dedocumento
db2h1x70
db2h1
Data Movement UtilitiesGuide and Reference
Explica cómo utilizar los programas deutilidad de DB2, tales como import,export, load, AutoLoader y DPROP, loscuales facilitan el movimiento de losdatos.
SC09-2955
db2dmx70
db2dm
96 Iniciación al SQL
Tabla 1. Información sobre DB2 (continuación)
Nombre Descripción Número dedocumento
Nombre dearchivo PDF
Directorio deHTML
Centro de depósito de datosAdministration Guide
Proporciona información sobre cómocrear y mantener un depósito de datosutilizando el Centro de depósito dedatos.
SC26-9993
db2ddx70
db2dd
Centro de depósito de datosApplication IntegrationGuide
Proporciona información para ayudar alos programadores a integraraplicaciones mediante el Centro dedepósito de datos y el Gestor delCatálogo de Información.
SC26-9994
db2adx70
db2ad
DB2 Connect User’s Guide Proporciona conceptos, informaciónsobre programación e informacióngeneral de utilización sobre losproductos DB2 Connect.
SC09-2954
db2c0x70
db2c0
DB2 Query PatrollerAdministration Guide
Proporciona una visión general sobre elfuncionamiento del sistema QueryPatroller de DB2, información específicade utilización y administración einformación sobre tareas para losprogramas de utilidad administrativosde la interfaz gráfica de usuario.
SC09-2958
db2dwx70
db2dw
DB2 Query PatrollerUser’s Guide
Describe cómo utilizar las herramientasy funciones de DB2 Query Patroller.
SC09-2960
db2wwx70
db2ww
Glosario Proporciona definiciones de términosutilizados en DB2 y en sus componentes.
Está disponible en formato HTML y enla publicación Consulta de SQL.
Sin número dedocumento
db2t0x70
db2t0
Image, Audio, and VideoExtenders Administrationand Programming
Proporciona información general sobrelos expansores de DB2, e informaciónsobre la administración y configuraciónde los expansores de imagen, audio yvídeo, y su utilización en laprogramación. Incluye información deconsulta, información de diagnóstico(con mensajes) y ejemplos.
SC26-9929
dmbu7x70
dmbu7
Information CatalogManager AdministrationGuide
Proporciona información de guía para lagestión de catálogos de información.
SC26-9995
db2dix70
db2di
Apéndice B. Utilización de la biblioteca de DB2 97
Tabla 1. Información sobre DB2 (continuación)
Nombre Descripción Número dedocumento
Nombre dearchivo PDF
Directorio deHTML
Information CatalogManager ProgrammingGuide and Reference
Proporciona definiciones para lasinterfaces con arquitectura del Gestor delCatálogo de Información.
SC26-9997
db2bix70
db2bi
Information CatalogManager User’s Guide
Proporciona información sobre lautilización de la interfaz de usuario delGestor del Catálogo de Información.
SC26-9996
db2aix70
db2ai
Suplemento de instalacióny configuración
Sirve de guía para planificar, instalar yconfigurar clientes DB2 específicos deuna plataforma. Este suplementocontiene información sobre la creaciónde enlaces, la configuración decomunicaciones de cliente y servidor,herramientas de GUI para DB2, DRDAAS, la instalación distribuida, laconfiguración de peticiones distribuidasy el acceso a fuentes de datosheterogéneas.
GC10-3487
db2iyx70
db2iy
Consulta de mensajes Contiene los mensajes y códigos queemite DB2, el Gestor del Catálogo deInformación y el Centro de depósito dedatos, y describe las acciones que elusuario debe emprender.
En Norteamérica, puede solicitar ambosvolúmenes del manual Consulta demensajes, en lengua inglesa, utilizando elnúmero de documento SBOF-8932.
Volumen 1GC10-3493
db2m1x70Volumen 2GC10-3494
db2m2x70
db2m0
OLAP Integration ServerAdministration Guide
Explica cómo utilizar el componenteGestor de Administración del Servidorde Integración de OLAP.
SC27-0787
db2dpx70
n/d
OLAP Integration ServerMetaoutline User’s Guide
Explica cómo crear y llenar con datos″metaoutlines″ OLAP utilizando lainterfaz estándar de Metaoutline OLAP(no mediante el Asistente deMetaoutline).
SC27-0784
db2upx70
n/d
OLAP Integration ServerModel User’s Guide
Explica cómo crear modelos OLAPutilizando la Interfaz de Modelos deOLAP (no mediante el Asistente deModelos).
SC27-0783
db2lpx70
n/d
98 Iniciación al SQL
Tabla 1. Información sobre DB2 (continuación)
Nombre Descripción Número dedocumento
Nombre dearchivo PDF
Directorio deHTML
OLAP Setup and User’sGuide
Proporciona información deconfiguración e instalación sobre el Kitde arranque de OLAP.
SC27-0702
db2ipx70
db2ip
OLAP Spreadsheet Add-inUser’s Guide for Excel
Describe cómo utilizar el programa dehoja de cálculo Excel para analizar datosde OLAP.
SC27-0786
db2epx70
db2ep
OLAP Spreadsheet Add-inUser’s Guide for Lotus1-2-3
Describe cómo utilizar el programa dehoja de cálculo Lotus 1-2-3 para analizardatos de OLAP.
SC27-0785
db2tpx70
db2tp
Replication Guide andReference
Proporciona información sobre laplanificación, configuración,administración y utilización de lasherramientas de replicación de IBM quese ofrecen con DB2.
SC26-9920
db2e0x70
db2e0
Spatial Extender Guía delusuario y de consulta
Proporciona información sobre lainstalación, configuración,administración, programación yresolución de problemas para elExpansor Espacial. También proporcionadescripciones importantes sobreconceptos de datos espaciales y ofreceinformación de consulta (mensajes ySQL) que es específica del ExtensorEspacial.
SC27-0701
db2sbx70
db2sb
Guía de iniciación de SQL Proporciona conceptos básicos sobre SQLy ofrece ejemplos de muchas estructurassintácticas y tareas.
GC10-3496
db2y0x70
db2y0
Consulta de SQL, Volumen1 y Volumen 2
Describe la sintaxis, la semántica y lasnormas del lenguaje SQL. Este manualtambién incluye información sobre lasincompatibilidades entre releases, loslímites del producto y las vistas decatálogo.
En Norteamérica, puede solicitar ambosvolúmenes del manual SQL Rererence, enlengua inglesa, utilizando el número dedocumento SBOF-8933.
Volumen 1GC10-3497
db2s1x70
Volumen 2GC10-3497
db2s2x70
db2s0
Apéndice B. Utilización de la biblioteca de DB2 99
Tabla 1. Información sobre DB2 (continuación)
Nombre Descripción Número dedocumento
Nombre dearchivo PDF
Directorio deHTML
System Monitor Guide andReference
Describe cómo recoger distintos tipos deinformación sobre bases de datos y elgestor de bases de datos. Este manualexplica cómo utilizar la información paracomprender la actividad de una base dedatos, mejorar su rendimiento ydeterminar la causa de los problemas.
SC09-2956
db2f0x70
db2f0
Text ExtenderAdministración yprogramación
Proporciona información general sobrelos expansores de DB2, e informaciónsobre la administración y configuracióndel expansor de texto y su utilización enla programación. Incluye información deconsulta, información de diagnóstico(con mensajes) y ejemplos.
SC26-9930
desu9x70
desu9
Troubleshooting Guide Le ayuda a determinar la causa de loserrores, realizar la recuperación para unproblema y utilizar herramientas dediagnóstico en colaboración con elServicio de Asistencia al Cliente de DB2.
GC09-2850
db2p0x70
db2p0
Novedades Describe las nuevas características,funciones y mejoras de DB2 UniversalDatabase, Versión 7.
GC10-3498
db2q0x70
db2q0
Información de instalación y configuración sobre DB2
DB2 Connect EnterpriseEdition para OS/2 yWindows Guía rápida deiniciación, Versión 7
Proporciona información sobre laplanificación, migración, instalación yconfiguración de DB2 Connect EnterpriseEdition en los sistemas operativos OS/2y Sistemas operativos Windows de 32bits. Este manual también contieneinformación sobre la instalación yconfiguración de muchos clientes a losque se da soporte.
GC10-3486
db2c6x70
db2c6
DB2 Connect EnterpriseEdition para UNIX Guíarápida de iniciación
Ofrece información sobre laplanificación, migración, instalación,configuración y realización de tareaspara DB2 Connect Enterprise Edition enplataformas basadas en UNIX. Estemanual también contiene informaciónsobre la instalación y configuración demuchos clientes a los que se da soporte.
GC10-3485
db2cyx70
db2cy
100 Iniciación al SQL
Tabla 1. Información sobre DB2 (continuación)
Nombre Descripción Número dedocumento
Nombre dearchivo PDF
Directorio deHTML
DB2 Connect PersonalEdition Quick Beginnings
Proporciona información sobre laplanificación, migración, instalación,configuración y realización de tareaspara DB2 Connect Personal Edition en elOS/2 y Sistemas operativos Windows de32 bits. Este manual también contieneinformación sobre la instalación yconfiguración de todos los clientes a losque se da soporte.
GC09-2967
db2c1x70
db2c1
DB2 Connect PersonalEdition QuickBeginnings for Linux
Proporciona información sobre laplanificación, instalación, migración yconfiguración de DB2 Connect PersonalEdition en todas las distribuciones Linuxsoportadas.
GC09-2962
db2c4x70
db2c4
DB2 Data Links ManagerGuía rápida de iniciación
Proporciona información sobre laplanificación, instalación, configuración yrealización de tareas en DB2 Data LinksManager para los sistemas operativosAIX y Windows de 32 bits.
GC10-3488
db2z6x70
db2z6
DB2 Enterprise - ExtendedEdition for UNIX QuickBeginnings
Ofrece información sobre laplanificación, instalación y configuraciónde DB2 Enterprise - Extended Edition enplataformas basadas en UNIX. Estemanual también contiene informaciónsobre la instalación y configuración demuchos clientes a los que se da soporte.
GC09-2964
db2v3x70
db2v3
DB2 Enterprise - ExtendedEdition for Windows QuickBeginnings
Proporciona información sobre laplanificación, instalación, configuraciónde DB2 Enterprise - Extended Editionpara los sistemas operativos Windows de32 bits. Este manual también contieneinformación sobre la instalación yconfiguración de muchos clientes a losque se da soporte.
GC09-2963
db2v6x70
db2v6
Apéndice B. Utilización de la biblioteca de DB2 101
Tabla 1. Información sobre DB2 (continuación)
Nombre Descripción Número dedocumento
Nombre dearchivo PDF
Directorio deHTML
DB2 para OS/2 Guíarápida de iniciación
Ofrece información sobre laplanificación, instalación, migración yconfiguración de DB2 UniversalDatabase en el sistema operativo OS/2.Este manual también contieneinformación sobre la instalación yconfiguración de muchos clientes a losque se da soporte.
GC10-3489
db2i2x70
db2i2
DB2 para UNIX Guíarápida de iniciación
Ofrece información sobre laplanificación, instalación, migración yconfiguración de DB2 UniversalDatabase en plataformas basadas enUNIX. Este manual también contieneinformación sobre la instalación yconfiguración de muchos clientes a losque se da soporte.
GC10-3491
db2ixx70
db2ix
DB2 para Windows Guíarápida de iniciación
Proporciona información sobre laplanificación, instalación, migración yconfiguración de DB2 UniversalDatabase en Sistemas operativosWindows de 32 bits. Este manualtambién contiene información sobre lainstalación y configuración de muchosclientes a los que se da soporte.
GC10-3492
db2i6x70
db2i6
DB2 Personal Edition Guíarápida de iniciación
Proporciona información sobre laplanificación, instalación, migración yconfiguración de DB2 UniversalDatabase Personal Edition en el OS/2 ySistemas operativos Windows de 32 bits.
GC10-3490
db2i1x70
db2i1
DB2 Personal EditionQuick Beginnings forLinux
Proporciona información sobre laplanificación, instalación, migración yconfiguración de DB2 UniversalDatabase Personal Edition en todas lasdistribuciones Linux soportadas.
GC09-2972
db2i4x70
db2i4
DB2 Query PatrollerInstallation Guide
Proporciona información sobre lainstalación de DB2 Query Patroller.
GC09-2959
db2iwx70
db2iw
102 Iniciación al SQL
Tabla 1. Información sobre DB2 (continuación)
Nombre Descripción Número dedocumento
Nombre dearchivo PDF
Directorio deHTML
DB2 WarehouseManager InstallationGuide
Proporciona información sobre lainstalación de agentes de depósito,transformadores de depósito y el Gestordel Catálogo de Información.
GC26-9998
db2idx70
db2id
Programas de ejemplo en HTML para varias plataformas
Programas de ejemploen HTML
Proporciona los programas de ejemploen formato HTML para los lenguajes deprogramación de todas las plataformassoportadas por DB2. Los programas deejemplo se ofrecen sólo con finesinformativos. No todos los programas deejemplo están disponibles en todos loslenguajes de programación. Los ejemplosen formato HTML sólo pueden utilizarsesi está instalado DB2 ApplicationDevelopment Client.
Para obtener más información sobre losprogramas, consulte el manualApplication Building Guide.
Sin número dedocumento
db2hs
Notas de release
DB2 Connect ReleaseNotes
Proporciona información de última horaque no se pudo incluir en los manualesde DB2 Connect.
Véase nota #2. db2cr
DB2 Installation Notes Proporciona información de última hora,específica de la instalación, que no sepudo incluir en los manuales de DB2.
Sólo disponibleen el CD-ROMdel producto.
DB2 Release Notes Proporciona información de última hora,referente a todos los productos ycaracterísticas de DB2, que no se pudoincluir en los manuales de DB2.
Véase nota #2. db2ir
Notas:
1. El carácter x que ocupa la sexta posición en el nombre de archivo indica elidioma en que está escrito el manual. Por ejemplo, el nombre de archivodb2d0e70 identifica la versión inglesa del manual Administration Guide y elnombre de archivo db2d0f70 identifica la versión francesa del mismomanual. En la posición sexta de los nombres de archivo se utilizan lasletras siguientes para indicar el idioma del manual:
Apéndice B. Utilización de la biblioteca de DB2 103
Idioma IdentificadorPortugués brasileño bBúlgaro uCheco xDanés dHolandés qInglés eFinés yFrancés fAlemán gGriego aHúngaro hItaliano iJaponés jCoreano kNoruego nPolaco pPortugués vRuso rChino simplificado cEsloveno lEspañol zSueco sChino tradicional tTurco m
2. La información de última hora que no se pudo incluir en los manuales deDB2 se encuentra en las Notas de Release, en formato HTML y en formade archivo ASCII. La versión en formato HTML puede consultarse desdeel Centro de Información y en los CD-ROM del producto. Para visualizarel archivo ASCII:v En las plataformas basadas en UNIX, vea el archivo Release.Notes. Este
archivo está situado en el directorio DB2DIR/Readme/%L, donde %Lrepresenta el entorno nacional y DB2DIR representa:– /usr/lpp/db2_07_01 en AIX– /opt/IBMdb2/V7.1 en HP-UX, PTX, Solaris, y Silicon Graphics IRIX– /usr/IBMdb2/V7.1 en Linux.
v En otras plataformas, vea el archivo RELEASE.TXT. Este archivo resideen el directorio donde está instalado el producto. En las plataformasOS/2, puede también hacer una doble pulsación sobre la carpeta IBMDB2 y luego sobre el icono Release Notes.
Impresión de los manuales PDFSi prefiere tener copias impresas de los manuales, puede imprimir los archivosPDF contenidos en el CD-ROM de publicaciones de DB2. Mediante Adobe
104 Iniciación al SQL
Acrobat Reader, puede imprimir el manual completo o un rango específico depáginas. Para conocer el nombre de archivo de cada manual de la biblioteca,vea la Tabla 1 en la página 95.
Puede obtener la última versión de Adobe Acrobat Reader en el sitio Web deAdobe, que se encuentra en http://www.adobe.com.
Los archivos PDF contenidos en el CD-ROM de publicaciones de DB2 tienenPDF como extensión de archivo. Para acceder a los archivos PDF:1. Inserte el CD-ROM de publicaciones de DB2. En las plataformas basadas
en UNIX, monte el CD-ROM de publicaciones de DB2. Consulte el manualGuía rápida de iniciación para conocer los procedimientos de montaje delCD-ROM.
2. Arranque Acrobat Reader.3. Abra el archivo PDF deseado que se encuentra en una de las ubicaciones
siguientes:v En las plataformas OS/2 y Windows:
el directorio x:\doc\idioma, donde x representa la unidad de CD-ROM eidioma representa el código de país de dos caracteres correspondiente alidioma del usuario (por ejemplo, EN para el inglés).
v En plataformas basadas en UNIX:el directorio /cdrom/doc/%L del CD-ROM, donde /cdrom representa elpunto de montaje del CD-ROM y %L representa el entorno nacionaldeseado.
Puede también copiar los archivos PDF del CD-ROM a una unidad local o dered y leerlos desde allí.
Solicitud de los manuales impresos
Puede solicitar los manuales impresos de DB2 en forma individual o comocolección de manuales (en Norteamérica sólo), utilizando en este segundocaso un número de documento SBOF (sold bill of forms). Para solicitarmanuales, consulte al concesionario o representante de ventas autorizado deIBM, o llame a los números 1-800-879-2755 (Estados Unidos) o1-800-IBM-4YOU (Canadá). Puede también solicitar manuales desde la páginaWeb de publicaciones, situada enhttp://www.elink.ibmlink.ibm.com/pbl/pbl.
Puede adquirir dos colecciones de manuales. SBOF-8935 proporcionainformación de consulta y de utilización sobre DB2 Warehouse Manager.SBOF-8935 proporciona información de consulta y de utilización sobre todoslos demás productos y características de DB2 Universal Database. La tablasiguiente lista el contenido de cada colección de manuales:
Apéndice B. Utilización de la biblioteca de DB2 105
Tabla 2. Pedido de los manuales impresos
Número SBOF Manuales incluidos
SBOF-8931 v Administration Guide: Planning
v Administration Guide: Implementation
v Administration Guide: Performance
v Administrative API Reference
v Application Building Guide
v Application Development Guide
v CLI Guide and Reference
v Command Reference
v Data Movement Utilities Guide andReference
v Data Warehouse Center AdministrationGuide
v Data Warehouse Center ApplicationIntegration Guide
v DB2 Connect User’s Guide
v Installation and ConfigurationSupplement
v Image, Audio, and Video ExtendersAdministration and Programming
v Message Reference, Volúmenes 1 y 2
v OLAP Integration ServerAdministration Guide
v OLAP Integration Server MetaoutlineUser’s Guide
v OLAP Integration Server Model User’sGuide
v OLAP Integration Server User’s Guide
v OLAP Setup and User’s Guide
v OLAP Spreadsheet Add-in User’sGuide for Excel
v OLAP Spreadsheet Add-in User’sGuide for Lotus 1-2-3
v Replication Guide and Reference
v Spatial Extender Administration andProgramming Guide
v SQL Getting Started
v SQL Reference, Volúmenes 1 y 2
v System Monitor Guide and Reference
v Text Extender Administration andProgramming
v Troubleshooting Guide
v What’s New
SBOF-8935 v Information Catalog ManagerAdministration Guide
v Information Catalog Manager User’sGuide
v Information Catalog ManagerProgramming Guide and Reference
v Query Patroller Administration Guide
v Query Patroller User’s Guide
Documentación en línea de DB2
Acceso a la ayuda en líneaExiste ayuda en línea para todos los componentes de DB2. La tabla siguientedescribe los diversos tipos de ayuda.
106 Iniciación al SQL
Tipo de ayuda Contenido Cómo acceder...
Ayuda para mandatos Explica la sintaxis de losmandatos del procesador delínea de mandatos.
Desde el procesador de línea de mandatos enmodalidad interactiva, especifique:
? mandato
donde mandato representa una palabra clave o elmandato completo.
Por ejemplo, ? catalog visualiza ayuda para todoslos mandatos CATALOG, mientras que ? catalogdatabase visualiza ayuda para el mandatoCATALOG DATABASE.
Ayuda para elAsistente deconfiguración delcliente
Ayuda para el Centrode mandatos
Ayuda para Centrode control
Ayuda para Centrode depósito de datos
Ayuda para elAnalizador desucesos
Ayuda para el Gestordel catálogo deinformación
Ayuda para el Centrode administración desatélites
Ayuda para el Centrode scripts
Explica las tareas que elusuario puede realizar enuna ventana o cuaderno. Laayuda incluye informacióngeneral e información sobrelos requisitos previos quedebe conocer, y describecómo utilizar los controlesde una ventana o cuaderno.
Desde una ventana o cuaderno, pulse el botónAyuda o pulse la tecla F1.
Apéndice B. Utilización de la biblioteca de DB2 107
Tipo de ayuda Contenido Cómo acceder...
Ayuda para mensajes Describe la causa de unmensaje y la acción quedebe realizar el usuario.
Desde el procesador de línea de mandatos enmodalidad interactiva, especifique:
? XXXnnnnn
donde XXXnnnnn representa un identificadorválido de mensaje.
Por ejemplo, ? SQL30081 muestra ayuda sobre elmensaje SQL30081.
Para ver la ayuda sobre mensajes pantalla apantalla, especifique:
? XXXnnnnn | more
Para guardar la ayuda sobre el mensaje en unarchivo, especifique:
? XXXnnnnn > nombrearchivo.ext
donde nombrearchivo.ext representa el archivo en elque desea guardar la ayuda referente al mensaje.
Ayuda para SQL Explica la sintaxis de lassentencias de SQL.
Desde el procesador de línea de mandatos enmodalidad interactiva, especifique:
help sentencia
donde sentencia representa una sentencia de SQL.
Por ejemplo, help SELECT visualiza ayuda sobrela sentencia SELECT.Nota: En las plataformas basadas en UNIX noexiste ayuda para SQL.
Ayuda paraSQLSTATE
Explica los estados ycódigos de clase del SQL.
Desde el procesador de línea de mandatos enmodalidad interactiva, especifique:
? estado_sql o ? código_clase
donde estado_sql representa un estado SQL válidode cinco dígitos y código_clase representa los dosprimeros dígitos del estado SQL.
Por ejemplo, ? 08003 visualiza ayuda para elestado SQL 08003, mientras que ? 08 visualizaayuda para el código de clase 08.
Visualización de información en líneaLos manuales que se incluyen con el presente producto están en copiasoftware, en el formato HTML (Hypertext Markup Language). El formato encopia software le permite buscar o examinar información y proporciona
108 Iniciación al SQL
enlaces de hipertexto con información afín. También facilita la utilizacióncompartida de la biblioteca en el sitio Web.
Puede visualizar los manuales en línea o programas de ejemplo mediantecualquier navegador que cumpla las especificaciones de HTML Versión 3.2.
Para visualizar manuales en línea o programas de ejemplo:v Si está ejecutando herramientas de administración de DB2, utilice el Centro
de Información.v Desde un navegador, pulse Archivo —> Abrir página. La página que se
abre contiene descripciones y enlaces que conducen a información sobreDB2.– En las plataformas basadas en UNIX, abra la página siguiente:
INSTHOME/sqllib/doc/%L/html/index.htm
donde %L representa el entorno nacional.– En otras plataformas, abra la página siguiente:
sqllib\doc\html\index.htm
La vía de acceso se encuentra en la unidad donde está instalado DB2.
Si no ha instalado el Centro de Información, puede abrir la páginaefectuando una doble pulsación sobre el icono Información de DB2.Según cuál sea el sistema que esté utilizando, el icono se encuentra en lacarpeta principal del producto o en el menú Inicio de Windows.
Instalación del navegador NetscapeSi no tiene todavía un navegador Web instalado, puede instalar Netscapedesde el CD-ROM proporcionado con el producto. Para obtener instruccionesdetalladas sobre cómo instalarlo, siga los pasos siguientes:1. Inserte el CD-ROM de Netscape.2. Si utiliza una plataforma basada en UNIX, monte el CD-ROM. Consulte el
manual Guía rápida de iniciación para conocer los procedimientos demontaje del CD-ROM.
3. Para obtener instrucciones sobre la instalación, consulte el archivoCDNAVnn.txt, donde nn representa el identificador de dos caracterescorrespondiente a su idioma. El archivo está situado en el directorio raízdel CD-ROM.
Acceso a información mediante el Centro de InformaciónEl Centro de Información proporciona acceso rápido a información sobre losproductos DB2. El Centro de Información está disponible en todas lasplataformas en las que pueden utilizarse las herramientas de administraciónde DB2.
Apéndice B. Utilización de la biblioteca de DB2 109
Para abrir el Centro de Información, haga una doble pulsación sobre su icono.Según cuál sea el sistema que esté utilizando, el icono se encuentra en lacarpeta principal del producto o en el menú Inicio de Windows.
También puede acceder al Centro de Información utilizando la barra deherramientas y el menú Ayuda en la plataforma Windows para DB2.
El Centro de Información proporciona seis tipos de información. Pulse lapestaña adecuada para consultar el tipo de información correspondiente.
Tareas Tareas esenciales que puede realizar mediante DB2.
Consulta Información de consulta sobre DB2, tal como palabras clave,mandatos y las API.
Manuales Manuales de DB2.
Resolución de problemasCategorías de mensajes de error y sus acciones derecuperación.
Programas de ejemploProgramas de ejemplo que se proporcionan con el Cliente deDesarrollo de Aplicaciones de DB2. Si no instaló el Cliente deDesarrollo de Aplicaciones de DB2, esta pestaña no sevisualiza.
Web Información sobre DB2 disponible en la World Wide Web.Para acceder a esta información, debe tener una conexión conla Web desde su sistema.
Cuando selecciona un elemento de una de estas listas, el Centro deInformación abre un visor para mostrar la información. El visor puede ser elvisor de ayuda del sistema, un editor o un navegador Web, dependiendo deltipo de información que seleccione.
El Centro de Información proporciona una función de búsqueda, que lepermite buscar un tema determinado sin examinar las listas.
Para realizar una búsqueda de texto completa, siga el enlace de hipertexto delCentro de Información que conduce al formulario de búsqueda Buscarinformación en línea sobre DB2.
Normalmente, el servidor de búsqueda HTML arranca automáticamente. Siuna búsqueda en la información HTML no funciona, puede que deba arrancarel servidor de búsqueda siguiendo uno de los métodos siguientes:
110 Iniciación al SQL
En WindowsPulse Inicio y seleccione Programas —> IBM DB2 —> Información—> Iniciar servidor de búsqueda HTML.
En OS/2Haga una doble pulsación sobre la carpeta DB2 para OS/2 y luegosobre el icono Iniciar servidor de búsqueda HTML.
Consulte las notas de release si tiene cualquier otro problema al buscar lainformación HTML.
Nota: La función de búsqueda no puede utilizarse en los entornos Linux, PTXni Silicon Graphics IRIX.
Utilización de los asistentes de DB2Los asistentes (″wizards″) le ayudan a realizar tareas de administracióndeterminadas mediante instrucciones a paso a paso. Puede acceder a losasistentes mediante el Centro de control y el Asistente de configuración decliente. La tabla siguiente lista los asistentes y describe su función.
Nota: Los asistentes para Crear base de datos, Crear índice, Configuraractualización múltiple y Configuración del rendimiento puedenutilizarse en el entorno de base de datos particionada.
Asistente Le ayuda a... Cómo acceder...
Añadir base dedatos
Catalogar una base de datos en una estaciónde trabajo cliente.
En el Asistente de configuracióndel cliente, pulse Añadir.
Hacer copia deseguridad de basede datos
Determinar, crear y planificar un plan decopia de seguridad.
En el Centro de Control, pulse conel botón derecho del ratón sobre labase de datos que desea copiar yseleccione Copia de seguridad —>Base de datos utilizando asistente.
Configuraractualizaciónmúltiple
Realizar una actualización múltiple, unatransacción distribuida o una operación deconfirmación de dos fases.
En el Centro de Control, pulse conel botón derecho del ratón sobre lacarpeta Bases de datos y seleccioneActualización múltiple.
Crear base de datos Crear una base de datos y realizar algunastareas básicas de configuración.
En el Centro de Control, pulse conel botón derecho del ratón sobre lacarpeta Bases de datos y seleccioneCrear —> Base de datos utilizandoasistente.
Crear tabla Seleccionar tipos de datos básicos y crear unaclave primaria para la tabla.
En el Centro de Control, pulse conel botón derecho del ratón sobre elicono Tablas y seleccione Crear —>Tabla utilizando asistente.
Apéndice B. Utilización de la biblioteca de DB2 111
Asistente Le ayuda a... Cómo acceder...
Crear espacio detablas
Crear un nuevo espacio de tablas. En el Centro de Control, pulse conel botón derecho del ratón sobre elicono Espacios de tablas yseleccione Crear —> Espacio detablas utilizando asistente.
Crear índice Determinar qué índices crear y eliminar paracada consulta.
En el Centro de Control, pulse conel botón derecho del ratón sobre elicono Índice y seleccione Crear —>Índice utilizando asistente.
Configuración delrendimiento
Ajustar el rendimiento de una base de datosactualizando los parámetros de configuraciónde acuerdo con sus necesidades.
En el Centro de Control, pulse conel botón derecho del ratón sobre labase de datos que desea ajustar yseleccione Configurar rendimientoutilizando asistente.
Si utiliza un entorno de base dedatos particionada, desde la vistaParticiones de base de datos, pulsecon el botón derecho del ratónsobre la primera partición de basede datos que desea ajustar yseleccione Configurar rendimientoutilizando asistente.
Restaurar base dedatos
Recuperar una base de datos después de unaanomalía. Le ayuda a determinar qué copiade seguridad se debe utilizar y qué archivosde anotaciones se deben aplicar.
En el Centro de Control, pulse conel botón derecho del ratón sobre labase de datos que desea restaurar yseleccione Restaurar —> Base dedatos utilizando asistente.
Configuración de un servidor de documentosPor omisión, la información sobre DB2 se instala en el sistema local. Estosignifica que cada una de las personas que deba acceder a la informaciónsobre DB2 debe instalar los mismos archivos. Para que la información sobreDB2 se almacene en una única ubicación, siga los pasos siguientes:1. Copie todos los archivos y subdirectorios del directorio \sqllib\doc\html,
del sistema local, en un servidor Web. Cada manual tiene su propiosubdirectorio que contiene todos los archivos HTML y archivos GIFnecesarios que forman el manual. Asegúrese de que la estructura dedirectorios permanece igual.
2. Configure el servidor Web para que busque los archivos en la nuevaubicación. Si desea obtener más información, consulte el Apéndice sobreNetQuestion que se encuentra en la publicación Suplemento de instalación yconfiguración.
112 Iniciación al SQL
3. Si está utilizando la versión Java del Centro de Información, puedeespecificar un URL base para todos los archivos HTML. Debe utilizar elURL para acceder a la lista de manuales.
4. Una vez que pueda visualizar los archivos del manual, puede marcar lostemas que consulte con frecuencia. Probablemente deseará marcar laspáginas siguientes:v Lista de manualesv Tablas de contenido de manuales utilizados con frecuenciav Temas consultados con frecuencia, tales como ALTERAR TABLAv El formulario de búsqueda
Para obtener información sobre cómo puede proporcionar los archivos dedocumentación en línea de DB2 Universal Database desde una máquinacentral, consulte el Apéndice sobre NetQuestion del manual Suplemento deinstalación y configuración.
Búsqueda de información en líneaPara buscar información en los archivos HTML, siga uno de los métodossiguientes:v Pulse Buscar en el panel superior. Utilice el formulario de búsqueda para
buscar un tema determinado. La función de búsqueda no puede utilizarseen los entornos Linux, PTX ni Silicon Graphics IRIX.
v Pulse Índice en el panel superior. Utilice el índice para buscar un temadeterminado en el manual.
v Visualice la tabla de contenido o índice de la ayuda o del manual HTML yluego utilice la función de búsqueda del navegador Web para buscar untema determinado en el manual.
v Utilice la función de marcaje de documentos del navegador Web paravolver rápidamente a un tema determinado.
v Utilice la función de búsqueda del Centro de Información para buscartemas determinados. Vea “Acceso a información mediante el Centro deInformación” en la página 109 para obtener detalles.
Apéndice B. Utilización de la biblioteca de DB2 113
114 Iniciación al SQL
Apéndice C. Avisos
Puede que IBM no comercialice algunos productos, servicios o característicasdescritos en este manual. Consulte a su representante local de IBM paraobtener información sobre los productos y servicios que están disponiblesactualmente en su región geográfica. Cualquier referencia a un producto,programa o servicio de IBM no pretende afirmar ni implicar que sólo sepuede utilizar dicho producto, programa o servicio de IBM. En su lugar sepuede utilizar cualquier producto, programa o servicio funcionalmenteequivalente que no infrinja ninguno de los derechos de propiedad intelectualde IBM. Pero es responsabilidad del usuario evaluar y verificar elfuncionamiento de cualquier producto, programa o servicio que no sea deIBM.
IBM puede tener patentes o solicitudes de patentes en tramitación que afectenal tema tratado en este documento. La posesión de este documento noconfiere ninguna licencia sobre dichas patentes. Puede realizar consultasescribiendo a:
IBM Director of LicensingIBM CorporationNorth Castle DriveArmonk, NY 10504-1785U.S.A.
En el caso de consultas sobre licencias referentes a información de doble byte(DBCS), consulte al Departamento de Propiedad Intelectual de IBM en su paíso realice consultas escribiendo a:
IBM World Trade Asia CorporationLicensing2-31 Roppongi 3-chome, Minato-kuTokyo 106, Japan
El párrafo siguiente no es aplicable al Reino Unido ni a ningún país en elque tales disposiciones sean incompatibles con la legislación local:INTERNATIONAL BUSINESS MACHINES CORPORATION PROPORCIONAESTA PUBLICACIÓN “TAL CUAL”, SIN GARANTÍA DE NINGUNA CLASE,NI EXPLÍCITA NI IMPLÍCITA, INCLUIDAS, PERO SIN LIMITARSE AELLAS, LAS GARANTÍAS IMPLÍCITAS DE NO VULNERACIÓN DEDERECHOS, COMERCIABILIDAD O IDONEIDAD PARA UN FINDETERMINADO. Algunos estados no permiten la exclusión de garantíasexpresas o implícitas en determinadas transacciones, por lo que es posible queesta declaración no sea aplicable en su caso.
© Copyright IBM Corp. 1993, 2000 115
Esta publicación puede contener inexactitudes técnicas o errores tipográficos.Periódicamente se efectúan cambios en la información aquí contenida; dichoscambios se incorporarán a las nuevas ediciones de la publicación. IBM puedeefectuar, en cualquier momento y sin previo aviso, mejoras y/o cambios enlos productos y/o programas descritos en esta publicación.
Las referencias hechas en esta publicación a sitios Web que no son de IBM seproporcionan sólo para la comodidad del usuario y no constituyen un aval deesos sitios Web. La información contenida en esos sitios Web no forma partede la información del presente producto IBM y el usuario es responsable de lautilización de esos sitios Web.
Cuando envía información a IBM, IBM puede utilizar o distribuir dichainformación en la forma en que IBM considere adecuada, sin contraer por elloninguna obligación con el remitente.
Los licenciatarios de este programa que deseen obtener información sobre élcon el fin de habilitar: (i) el intercambio de información entre programascreados de forma independiente y otros programas (incluido este) y (ii) el usomutuo de la información intercambiada, deben ponerse en contacto con:
IBM Canada LimitedOffice of the Lab Director1150 Eglinton Ave. EastNorth York, OntarioM3C 1H7CANADA
Dicha información puede estar disponible, sujeta a los términos y condicionesapropiados, incluido en algunos casos, el pago de una tarifa.
El programa bajo licencia descrito en este manual y todo el material bajolicencia asociado a él los proporciona IBM según los términos del Conveniodel Cliente IBM, el Convenio Internacional de Licencia de Programas de IBMo cualquier convenio equivalente entre el usuario e IBM.
Los datos de rendimiento contenidos en este documento se obtuvieron en unentorno controlado. Por tanto, los resultados obtenidos en otros entornosoperativos pueden variar significativamente. Algunas mediciones puedenhaberse hecho en sistemas experimentales y no es seguro que estasmediciones sean las mismas en los sistemas disponibles comercialmente.Además, algunas mediciones pueden haberse calculado medianteextrapolación. Los resultados reales pueden variar. Los usuarios del presentemanual deben verificar los datos aplicables para su entorno específico.
La información referente a productos que no son de IBM se ha obtenido delos proveedores de esos productos, de sus anuncios publicados o de otras
116 Iniciación al SQL
fuentes disponibles públicamente. IBM no ha probado esos productos y nopuede confirmar la exactitud del rendimiento, la compatibilidad ni cualquierotra afirmación referente a productos no IBM. Las preguntas sobre lasprestaciones de productos no IBM deben dirigirse a los proveedores de esosproductos.
Todas las declaraciones de intenciones de IBM están sujetas a cambio ocancelación sin previo aviso, y sólo representan objetivos.
Esta publicación puede contener ejemplos de datos e informes que se utilizanen operaciones comerciales diarias. Para ilustrarlos de la forma más completaposible, los ejemplos incluyen nombre de personas, empresas, marcas yproductos. Todos estos nombres son ficticios y cualquier similitud connombres y direcciones utilizados por una empresa real es totalmente nointencionada.
LICENCIA DE COPYRIGHT:
Este manual puede contener programas de aplicación de ejemplo escritos enlenguaje fuente, que muestra técnicas de programación en diversasplataformas operativas. Puede copiar, modificar y distribuir estos programasde ejemplo de la forma que desee, sin pago alguno a IBM, con los fines dedesarrollar, utilizar, comercializar o distribuir programas de aplicación deacuerdo con la interfaz de programación de aplicaciones correspondiente a laplataforma operativa para la que están escritos los programas de ejemplo.Estos ejemplos no se han probado exhaustivamente bajo todas las condiciones.Por tanto, IBM no puede asegurar ni implicar la fiabilidad, utilidad o funciónde estos programas.
Cada copia o porción de estos programas de ejemplo o cualquier obraderivada debe incluir una nota de copyright como la siguiente:
© (nombre de la empresa) (año). Partes de este código derivan de programasde ejemplo de IBM Corp. © Copyright IBM Corp. - especifique el año u años.Reservados todos los derechos.
Apéndice C. Avisos 117
Marcas registradas
Los términos siguientes, que pueden estar indicados por un asterisco (*), sonmarcas registradas de International Business Machines Corporation en losEstados Unidos y/o en otros países.
ACF/VTAMAISPOAIXAIX/6000AIXwindowsAnyNetAPPNAS/400BookManagerCICSC Set++C/370DATABASE 2DataHubDataJoinerDataPropagatorDataRefresherDB2DB2 ConnectDB2 ExtendersDB2 OLAP ServerDB2 Universal DatabaseDistributed RelationalDatabase Architecture
DRDAeNetworkExtended ServicesFFSTFirst Failure Support Technology
IBMIMSIMS/ESALAN DistanceMVSMVS/ESAMVS/XANet.DataOS/2OS/390OS/400PowerPCQBICQMFRACFRISC System/6000RS/6000S/370SPSQL/DSSQL/400System/370System/390SystemViewVisualAgeVM/ESAVSE/ESAVTAMWebExplorerWIN-OS/2
Los términos siguientes son marcas registradas de otras empresas:
Microsoft, Windows y Windows NT son marcas registradas de MicrosoftCorporation.
Java, y las marcas registradas y logotipos basados en Java, y Solaris sonmarcas registradas de Sun Microsystems, Inc. en los Estados Unidos y/o enotros países.
Tivoli y NetView son marcas registradas de Tivoli Systems Inc. en los EstadosUnidos y/o en otros países.
118 Iniciación al SQL
UNIX es una marca registrada en los Estados Unidos y/o en otros países bajolicencia exclusiva de X/Open Company Limited.
Otros nombres de empresas, productos o servicios, que pueden estarindicados por un doble asterisco (**), pueden ser marcas registradas o marcasde servicio de otras empresas.
Apéndice C. Avisos 119
120 Iniciación al SQL
Índice
AADD CONSTRAINT, sentencia 55ALTER TABLE, sentencia 55ALL, uso en una consulta 52anidamiento de subconsultas
correlacionadas 45ANY, palabra clave 52añadir base de datos, asistente
para 111, 112AS, cláusula 26asistente
restaurar base de datos 112asistentes
añadir base de datos 111, 112configuración del
rendimiento 112configurar actualización
múltiple 111copiar base de datos 111crear base de datos 111crear espacio de tablas 111crear tabla 111índice 112realización de tareas 111
ayuda en línea 106
Bbase de datos de ejemplo 73
borrado 74creación 74
base de datos relacional,definición 1
base de datos relacional multinodal,definición 1
base de datos relacionalparticionada, definición 1
BETWEEN, predicado 50biblioteca de DB2
asistentes 111ayuda en línea 106buscar información en línea 113Centro de Información 109configuración de un servidor de
documentos 112estructura de 93identificador de idioma para
manuales 103imprimir manuales PDF 104información de última hora 104
biblioteca de DB2 (continuación)manuales 93pedido de manuales
impresos 105visualización de información en
línea 108BIGINT, tipo de datos 5BLOB, serie 69BLOB, tipo de datos 69borrado de la base de datos de
ejemplo 74buscar
información en línea 110, 113
Ccalificación de objetos 4, 17case, expresión
descripción 36función SIGN 36
catálogos del sistema 71Centro de Información 109CL_SCHED, tabla de ejemplo 75clasificación de filas 22clave
compuesta 54definición 54exclusiva 54externa 54primaria 54
clave exclusiva 54restricción de unicidad 54
clave externa 54clave primaria 54clave principal, definición 54CLOB, serie 69CLOB, tipo de datos 69columna
ASC, clasificación por ordenascendente 23
definición de 3DESC, clasificación por orden
descendente 23columna de agrupación,
definición 31combinación de consultas 47comprobar la existencia 51compuesta, clave 54condición de búsqueda 20condición de unión 60conexión de consultas 49
configuración de un servidor dedocumentos 112
configuración del rendimiento,asistente de 112
configurar actualización múltiple,asistente para 111
CONNECT, sentencia 18explícita 18implícita 18
consulta de nivel externo,correlación 43
Consulta de SQL vconsultas, conexión 49consultas recursivas, descripción 65conversión de datos
condiciones de unión 62operadores de conjunto 49
conversión de tipos de datosdescripción 35
copiar base de datos, asistentepara 111
correlacióndescripción 40nombre 43subconsulta 41subconsultas utilizando
uniones 44creación de la base de datos de
ejemplo 74crear base de datos, asistente
para 111crear espacio de tablas, asistente
para 111crear tabla, asistente para 111CREATE DISTINCT TYPE 67CREATE FUNCTION 68CREATE TABLE, sentencia 9
NOT NULL/NOT NULL WITHDEFAULT, valor de columna 9
CREATE TRIGGER 56CREATE VIEW, sentencia 13
WITH CHECK OPTION 13CUBE 65
filas de subtotal 65filas de tabulación cruzada 65
CURRENT DATE, registroespecial 70
CURRENT FUNCTION PATH,registro especial 71
© Copyright IBM Corp. 1993, 2000 121
CURRENT SERVER, registroespecial 71
CURRENT TIME, registroespecial 71
CURRENT TIMESTAMP, registroespecial 71
CURRENT TIMEZONE, registroespecial 71
CHCHAR, tipo de datos 5
DDATE, tipo de datos 5DATETIME, tipo de datos 5DBLOB, serie 69DBLOB, tipo de datos 69decimal, descripción 5DECIMAL, tipo de datos 5DELETE, sentencia 13DEPARTMENT, tabla de
ejemplo 75desencadenantes
CREATE TRIGGER 56definición 53descripción 56desencadenante anterior 56desencadenante posterior 56variables de transición 59
DISTINCT, palabra clave 24, 30Documentación relacionada vDOUBLE, tipo de datos 5
EEMP_ACT, tabla de ejemplo 79EMP_PHOTO, tabla de ejemplo 81EMP_RESUME, tabla de ejemplo 81EMPLOYEE, tabla de ejemplo 75entero binario, descripción 5esquema
definición de 4esquemas reservados 4estructura de datos
columna 3fila 3valor 3
EXCEPT, operador 48ordenación de resultados 49restricciones de uso referidas
a 49tipos de datos 49
EXCEPT ALL 48existencia, comprobación de la 51EXISTS, predicado 51expresión de tabla común
descripción 39
expresiones 25expresiones, asignación de
nombres 26expresiones de tabla
descripción 37expresiones de tabla anidadas,
descripción 38
Ffecha y hora, descripción de
valores 5fila
definición de 3selección 20
filas de subtotal 65filas de tabulación cruzada 65FLOAT, tipo de datos 5FROM, cláusula 19FULL OUTER, unión 60función
de columna 28de tabla 30definida por el usuario 28descripción 28escalar 28incorporada 28Online Analytical Processing
(OLAP) 66función de columna 28
AVG 29COUNT 29MAX 29MIN 29
función de tablaSQLCACHE_SNAPSHOT 30
función de tabla externa 68función de tabla externa DB
OLE 68función escalar 28
ABS 30DECIMAL 38HEX 30LENGTH 30SIGN 30YEAR 30
función escalar externa 68función fuente 68funciones de columna 29funciones definidas por el
usuario 68definición 68función de tabla externa 68función de tabla externa DB
OLE 68función escalar externa 68función fuente 68
funciones OLAP 66grupo de agregación 66ordenación de filas en 66particionamiento de filas en 66
fusión del resultado deconsultas 47
Ggestor de bases de datos 1GROUP BY 24GROUP BY, cláusula
columna de agrupación 31con cláusula HAVING 32
Guía de administración vGuía de desarrollo de
aplicaciones vGuía rápida de iniciación v
HHAVING 24HAVING, cláusula
descripción 32HTML
programas de ejemplo 103
IID de autorización 4identificador de idioma
manuales 103imprimir manuales PDF 104IN, predicado 50IN_TRAY, tabla de ejemplo 82indicador de posición 70índice, asistente de 112información de última hora 104información en línea
buscar 113visualizar 108
INSERT, sentencia 10NOT NULL/NOT NULL WITH
DEFAULT, valor decolumna 10
instalaciónnavegador Netscape 109
INTEGER, tipo de datos 5INTERSECT, operador 49
ordenación de resultados 49restricciones de uso referidas
a 49tipos de datos 49
INTERSECT ALL 49
LLEFT OUTER, unión 60Lenguaje de Consulta Estructurada
(SQL), definición 1LIKE, predicado 51
122 Iniciación al SQL
lista de selección 19LOB
indicador de posición,definición 70
serie de caracteres, definición 70localización de objetos grandes,
definición 70
Mmanuales 93, 105mensajes de error
identificador de mensaje 18SQLSCODE 18SQLSTATE 18
modificar tablas mediante unavista 15
WITH CHECK OPTION 15
Nnavegador Netscape
instalación 109nombre de correlación
normas de 40referencia calificada de nombre
de columna 40NOT BETWEEN, predicado 50NOT EXISTS, predicado 51NOT IN, predicado 50NOT LIKE, predicado 51notas de release 104números, descripción 5
Ooperador de comparación en una
subconsulta 52operadores aritméticos 25orden de operaciones 24, 29ORDER BY, cláusula 22
operadores de conjunto 49ORG, tabla de ejemplo 82
PPDF 104precisión, como atributo
numérico 5predicado
IS NOT NULL 20IS NULL 20
predicado de nivel externo 52procesador de línea de mandatos 1proceso analítico en línea 66producto cruzado 60programas de ejemplo
HTML 103para varias plataformas 103
PROJECT, tabla de ejemplo 83
RREAL, tipo de datos 5recuperación de datos 19referencia correlacionada,
descripción 41registro especial 70
CURRENT DATE 70CURRENT DEGREE 70CURRENT FUNCTION
PATH 70CURRENT PATH 70CURRENT SERVER 70CURRENT TIME 71CURRENT TIMESTAMP 71CURRENT TIMEZONE 71USER 71
relación entre tablas y vistas 13restauración, asistente de 112restricción de unicidad 54restricciones
para operadores de conjunto 49restricciones de unicidad 9restricciones referenciales 9
restricciones de comprobación detabla
comprobación diferida derestricción 55
definición 53descripción 55
restricciones de integridadreferencial
clave externa 54clave principal 54definición 53descripción 54
restricciones de unicidaddefinición 53
RIGHT OUTER, unión 60ROLL-UP
filas de subtotal 65ROLLUP 65
SSALES, tabla de ejemplo 84selección completa 35
ALL, palabra clave 52ANY, palabra clave 52con sentencia INSERT 10subconsulta 10, 52
selección completa, definición 10selecciones completas escalares
descripción 35SELECT, sentencia 19serie de caracteres
como tipo de datos 5
serie de caracteres (continuación)LOB 69longitud fija 5longitud variable 5
serie gráficalongitud fija 5longitud variable 5
SET, cláusulacon sentencia UPDATE 12
SET CONSTRAINTS, sentencia 55signo, como atributo numérico 5SMALLINT, tipo de datos 5SmartGuides
asistentes 111SOME, palabra clave 52SQL, lenguaje de procedimientos
de vSQL interactivo, definición 1STAFF, tabla de ejemplo 85STAFFG, tabla de ejemplo 86subconsulta
definición 27subconsulta correlacionada
cuándo utilizarla 43descripción 41
supresión de filas duplicadas 24
Ttabla
base de datos de ejemplo 73clave exclusiva 54clave externa 54clave primaria 54combinar datos (unión) 26como calificador de nombre de
columna 40definición de 3funciones 30restricción de unicidad 54tabla base 3tabla resultante 3
tabla base 3tabla resultante 3tablas de ejemplo 73, 93TIME, tipo de datos 5TIMESTAMP, tipo de datos 5tipo de datos
diferenciado 67tipo de datos diferenciado 67tipos de datos
BIGINT 5CHAR 5DATE 5DATETIME 5DECIMAL 5DOUBLE 5
Índice 123
tipos de datos (continuación)FLOAT 5INTEGER 5REAL 5SMALLINT 5TIME 5TIMESTAMP 5VARCHAR 5
Uunión
condiciones de unión 60conversión de datos 62definición 26producto cruzado 60sin condiciones de unión 60subconsultas correlacionadas 44
UNION, operador 47, 48descripción 47ordenación de resultados 48restricciones de uso referidas
a 49tipos de datos 49
UNION ALL 47unión externa
descripción 60FULL OUTER, unión 60LEFT OUTER, unión 60RIGHT OUTER, unión 60
unión interna 60UPDATE, sentencia 12USER, registro especial 71
Vvalor
definición de 3valor en SQL 5valor nulo 47
suprimir valor de columna 12valor nulo, descripción 5VALUES, cláusula
con sentencia INSERT 10VARCHAR, tipo de datos 5vista
como calificador de nombre decolumna 40
Vistadescripción 4ventajas 4
visualizarinformación en línea 108
WWHERE, cláusula 20
combinar datos de tablas (unión)en sentencia SELECT 26
WHERE, cláusula 20 (continuación)consideraciones sobre la
agrupación 31
WITH, cláusula 39
WITH CHECK OPTION 15
124 Iniciación al SQL
Cómo ponerse en contacto con IBM
Si tiene un problema técnico, repase y lleve a cabo las acciones que sesugieren en la Guía de resolución de problemas antes de ponerse en contacto conel Centro de Asistencia al Cliente de DB2. Dicha guía sugiere información quepuede reunir para ayudar al Centro de Asistencia a proporcionarle un mejorservicio.
Para obtener información o para solicitar cualquiera de los productos de DB2Universal Database, consulte a un representante de IBM de una sucursal localo a un concesionario autorizado de IBM.
Si reside en los Estados Unidos, puede llamar a uno de los númerossiguientes:v 1-800-237-5511 para obtener soporte técnicov 1-888-426-4343 para obtener información sobre las opciones de servicio
técnico disponibles
Información del producto
Si reside en los Estados Unidos, puede llamar a uno de los númerossiguientes:v 1-800-IBM-CALL (1-800-426-2255) o 1-800-3IBM-OS2 (1-800-342-6672) para
solicitar productos u obtener información general.v 1-800-879-2755 para solicitar publicaciones.
http://www.ibm.com/software/data/Las páginas Web de DB2 ofrecen información actual sobre DB2referente a novedades, descripciones de productos, planes deformación, etc.
http://www.ibm.com/software/data/db2/library/La biblioteca técnica de servicio y de productos DB2 ofrece acceso apreguntas frecuentemente formuladas (FAQ), arreglos de programa,manuales e información técnica actualizada sobre DB2.
Nota: Puede que esta información sólo esté disponible en inglés.
http://www.elink.ibmlink.ibm.com/pbl/pbl/El sitio Web para el pedido de publicaciones internacionalesproporciona información sobre cómo hacer pedidos de manuales.
http://www.ibm.com/education/certify/El Programa de homologación profesional contenido en el sitio Web
© Copyright IBM Corp. 1993, 2000 125
de IBM proporciona información de prueba de homologación paradiversos productos de IBM, incluido DB2.
ftp.software.ibm.comConéctese como anónimo (anonymous). En el directorio/ps/products/db2 encontrará programas de demostración, arreglos deprograma, información y herramientas referentes a DB2 y a muchosotros productos.
comp.databases.ibm-db2, bit.listserv.db2-lEn estos foros de discusión de Internet los usuarios pueden explicarsus experiencias con los productos DB2.
En Compuserve: GO IBMDB2Entre este mandato para acceder a los foros referentes a la familia deproductos DB2. Todos los productos DB2 tienen soporte a través deestos foros.
Para conocer cómo ponerse en contacto con IBM desde fuera de los EstadosUnidos, consulte el Apéndice A del manual IBM Software SupportHandbook. Para acceder a este documento, vaya a la página Web siguiente:http://www.ibm.com/support/ y luego seleccione el enlace ″IBM SoftwareSupport Handbook″, cerca del final de la página.
Nota: En algunos países, los distribuidores autorizados de IBM deben ponerseen contacto con su organización de soporte en lugar de acudir alCentro de Asistencia de IBM.
126 Iniciación al SQL
IBM
Número Pieza: CT7YHES
Impreso en España
GC10-3496-00
CT7YHES