consultas sql en espaÑol

1535
IBM ® DB2 ® Universal Database Consulta de SQL Versión 7 GC10-3497-00, GC10-3549-00 IBM

Upload: pablo-giralte

Post on 19-Jun-2015

7.185 views

Category:

Documents


43 download

TRANSCRIPT

IBM DB2 Universal Database

Consulta de SQLV ersin 7

GC10-3497-00, GC10-3549-00

ContenidoCaptulo 1. Introduccin . . . . . . . Quin debe utilizar este manual. . . . . Forma de utilizar este manual . . . . . Estructura de este manual. . . . . . Lectura de los diagramas de sintaxis . . . Convenios utilizados en este manual . . . Condiciones de error . . . . . . . Convenios de resaltado . . . . . . Documentacin relacionada para este manual Captulo 2. Conceptos . . . . . . . Base de datos relacional . . . . . . . Lenguaje de consulta estructurada (SQL) . . SQL incorporado . . . . . . . . . SQL esttico . . . . . . . . . . SQL dinmico . . . . . . . . . Interfaz de nivel de llamada (CLI) de DB2 y Open Database Connectivity (ODBC). . . Programas de JDBC (Java Database Connectivity) y de SQLJ (SQL incorporado para Java) . . . . . . . . . . . . SQL interactivo . . . . . . . . . . Esquemas . . . . . . . . . . . . Control de la utilizacin de esquemas . Tablas . . . . . . . . . . . . . Vistas . . . . . . . . . . . . . Seudnimos . . . . . . . . . . . ndices . . . . . . . . . . . . . Claves . . . . . . . . . . . . . Claves exclusivas . . . . . . . . Claves primarias . . . . . . . . Claves forneas . . . . . . . . . Claves de particionamiento . . . . . Restricciones . . . . . . . . . . . Restricciones de unicidad . . . . . Restricciones de referencia . . . . . Restricciones de comprobacin de tabla . . Desencadenantes . . . . . . . . . Supervisores de sucesos . . . . . . . Consultas . . . . . . . . . . . . Expresiones de tabla . . . . . . . . Expresiones de tabla comunes . . . . Paquetes . . . . . . . . . . . . Vistas de catlogo . . . . . . . . . . . . . . . . . 1 1 1 1 3 6 6 6 6 Procesos de aplicacin, simultaneidad y recuperacin . . . . . . . . . . . . Nivel de aislamiento . . . . . . . . . Lectura repetible (RR) . . . . . . . . Estabilidad de lectura (RS) . . . . . . Estabilidad del cursor (CS) . . . . . . Lectura no comprometida (UR) . . . . Comparacin de niveles de aislamiento . . Base de datos relacional distribuida . . . . Servidores de aplicaciones . . . . . . CONNECT (Tipo 1) y CONNECT (Tipo 2) Unidad de trabajo remota . . . . . . Unidad de trabajo distribuida dirigida por aplicacin . . . . . . . . . . . . Consideraciones acerca de la representacin de datos . . . . . . . Sistemas federados DB2 . . . . . . . . El servidor federado, la base de datos federada y las fuentes de datos . . . . Tareas que se realizan en un sistema federado DB2 . . . . . . . . . . Wrappers y mdulos de wrapper . . . . Definiciones de servidor y opciones de servidor . . . . . . . . . . . . Correlaciones de usuarios y opciones de usuario. . . . . . . . . . . . . Correlaciones de tipos de datos . . . . Correlaciones de funciones, modelos de funciones y opciones de correlacin de funciones . . . . . . . . . . . . Apodos y opciones de columna . . . . Especificaciones de ndices . . . . . . Peticiones distribuidas . . . . . . . Compensacin . . . . . . . . . . Paso a travs. . . . . . . . . . . Conversin de caracteres . . . . . . . . Juegos de caracteres y pginas de cdigos Atributos de pginas de cdigos . . . . Autorizacin y privilegios . . . . . . . Espacios de tablas y otras estructuras de almacenamiento. . . . . . . . . . . Particin de datos entre mltiples particiones Mapas de particionamiento . . . . . . Colocacin de tablas . . . . . . . . 26 29 30 30 31 32 32 32 33 34 34 38 44 44 45 45 47 48 50 51

. 9 . 9 . 9 . 10 . 10 . 10 . 11

. . . . . . . . . . . . . . . . . . . . . . . .

11 12 12 13 13 14 15 16 16 16 17 17 17 17 18 19 22 23 25 25 25 25 25 26

52 53 54 55 56 56 57 58 59 61 63 65 66 67

Copyright IBM Corp. 1993, 2000

iii

Captulo 3. Elementos del lenguaje . . . 69 Caracteres. . . . . . . . . . . . . 69 Consideraciones acerca de MBCS . . . . 70 Smbolos . . . . . . . . . . . . . 70 Consideraciones acerca de MBCS . . . . 71 Identificadores . . . . . . . . . . . 71 Identificadores SQL . . . . . . . . 72 Identificadores del lenguaje principal . . 72 Convenios de denominacin y calificaciones implcitas de nombres de objetos . . . . . 72 Seudnimos . . . . . . . . . . . . 78 ID de autorizacin y nombres-autorizacin. . 79 Caractersticas del SQL dinmico en la ejecucin . . . . . . . . . . . . 80 Los ID de autorizacin y la preparacin de sentencias . . . . . . . . . . . . 82 Tipos de datos . . . . . . . . . . . 82 Nulos . . . . . . . . . . . . . 83 Gran objeto (LOB) . . . . . . . . . 84 Series de caracteres . . . . . . . . 86 Series grficas . . . . . . . . . . 87 Serie binaria . . . . . . . . . . . 89 Nmeros . . . . . . . . . . . . 89 Valores de fecha y hora . . . . . . . 90 Valores DATALINK . . . . . . . . 94 Tipos definidos por el usuario . . . . . 95 Promocin de los tipos de datos . . . . . 99 Conversin entre tipos de datos . . . . . 100 Asignaciones y comparaciones . . . . . 104 Asignaciones numricas. . . . . . . 105 Asignaciones de series . . . . . . . 106 Asignaciones de fecha y hora . . . . . 109 Asignaciones de DATALINK . . . . . 110 Asignaciones de los tipos definidos por el usuario . . . . . . . . . . . . 112 Asignaciones de tipos de referencia . . . 113 Comparaciones numricas . . . . . . 113 Comparaciones de series . . . . . . 114 Comparaciones de fecha y hora . . . . 118 Comparaciones de tipos definidos por el usuario . . . . . . . . . . . . 118 Comparaciones de tipos de referencia . . 119 Reglas para los tipos de datos del resultado 119 Series de caracteres . . . . . . . . 120 Series grficas . . . . . . . . . . 121 Gran objeto binario (BLOB) . . . . . 121 Numrico . . . . . . . . . . . 121 DATE . . . . . . . . . . . . . 122 TIME . . . . . . . . . . . . . 122 TIMESTAMP . . . . . . . . . . 122

DATALINK . . . . . . . . . . . Tipos definidos por el usuario . . . . Atributo de posibilidad de nulo del resultado. . . . . . . . . . . . Reglas para las conversiones de series . . . Compatibilidad entre particiones. . . . . Constantes . . . . . . . . . . . . Constantes enteras . . . . . . . . Constantes de coma flotante . . . . . Constantes decimales . . . . . . . Constantes de tipo serie. . . . . . . Constantes hexadecimales . . . . . . Constantes grficas de tipo serie . . . . Utilizacin de constantes con tipos definidos por el usuario. . . . . . . Registros especiales . . . . . . . . . CURRENT DATE . . . . . . . . . CURRENT DEFAULT TRANSFORM GROUP . . . . . . . . . . . . CURRENT DEGREE . . . . . . . . CURRENT EXPLAIN MODE . . . . . CURRENT EXPLAIN SNAPSHOT . . . CURRENT NODE . . . . . . . . CURRENT PATH . . . . . . . . . CURRENT QUERY OPTIMIZATION . . CURRENT REFRESH AGE. . . . . . CURRENT SCHEMA . . . . . . . CURRENT SERVER . . . . . . . . CURRENT TIME . . . . . . . . . CURRENT TIMESTAMP . . . . . . CURRENT TIMEZONE . . . . . . . USER . . . . . . . . . . . . . Nombres de columna . . . . . . . . Nombres de columna calificados . . . . Nombres de correlacin . . . . . . . Calificadores de nombres de columna para evitar ambigedad. . . . . . . Calificadores de nombres de columna en referencias correlacionadas . . . . . . Referencias a variables del lenguaje principal Variables del lenguaje principal en el SQL dinmico. . . . . . . . . . . . Referencias a las variables del lenguaje principal BLOB, CLOB y DBCLOB . . . Referencias a variables localizadoras . . Referencias a las variables de referencia a archivos BLOB, CLOB y DBCLOB . . . Referencias a variables de lenguaje principal de tipo estructurado. . . . . Funciones . . . . . . . . . . . .

122 122 123 123 126 128 128 128 129 129 129 130 130 131 131 131 132 133 134 135 135 137 137 138 138 138 139 139 140 140 141 141 144 146 149 149 152 152 153 156 157

iv

Consulta de SQL

Funciones definidas por el usuario externas, de SQL y derivadas . . . . . Funciones definidas por el usuario: escalares, de columna, de fila y de tabla . Signaturas de funcin . . . . . . . Va de acceso de SQL . . . . . . . Resolucin de funcin . . . . . . . Invocacin de funcin . . . . . . . Mtodos . . . . . . . . . . . . . Mtodos definidos por el usuario: externos y SQL . . . . . . . . . Signaturas de mtodo . . . . . . . Invocacin de mtodos . . . . . . . Resolucin de mtodos . . . . . . . Mtodo de eleccin de la mejor opcin Ejemplo de resolucin de mtodo . . . Invocacin de mtodos . . . . . . . Semntica de enlace conservador . . . . Expresiones . . . . . . . . . . . . Sin operadores . . . . . . . . . . Con el operador de concatenacin . . . Con operadores aritmticos . . . . . Dos operandos enteros . . . . . . . Operandos enteros y decimales . . . . Dos operandos decimales . . . . . . Aritmtica decimal en SQL. . . . . . Operandos de coma flotante . . . . . Tipos definidos por el usuario como operandos . . . . . . . . . . . Seleccin completa escalar . . . . . . Operaciones de fecha y hora y duraciones Aritmtica de fecha y hora en SQL . . . Prioridad de operaciones . . . . . . Expresiones CASE . . . . . . . . Especificaciones CAST . . . . . . . Operaciones de desreferencia . . . . . Funciones OLAP . . . . . . . . . Invocacin de mtodos . . . . . . . Tratamiento de los subtipos . . . . . Predicados . . . . . . . . . . . . Predicado bsico . . . . . . . . . Predicado cuantificado . . . . . . . Predicado BETWEEN . . . . . . . Predicado EXISTS . . . . . . . . . Predicado IN . . . . . . . . . . Predicado LIKE . . . . . . . . . Predicado NULL . . . . . . . . . Predicado TYPE . . . . . . . . . Condiciones de bsqueda . . . . . . . Ejemplos . . . . . . . . . . . .

158 158 159 159 159 164 165 166 166 166 167 169 170 170 171 173 174 174 177 179 179 179 179 180 180 180 181 182 187 188 190 194 195 201 203 205 206 207 210 212 213 216 221 222 224 226

Captulo 4. Funciones . . . . . . . . 227 Funciones de columna . . . . . . . . 248 AVG . . . . . . . . . . . . . 249 CORRELATION . . . . . . . . . 251 COUNT . . . . . . . . . . . . 252 COUNT_BIG . . . . . . . . . . 254 COVARIANCE. . . . . . . . . . 256 GROUPING . . . . . . . . . . 257 MAX . . . . . . . . . . . . . 259 MIN . . . . . . . . . . . . . 261 REGRESSION Funciones . . . . . . 263 STDDEV . . . . . . . . . . . . 267 SUM . . . . . . . . . . . . . 268 VARIANCE . . . . . . . . . . . 269 Funciones escalares . . . . . . . . . 270 ABS o ABSVAL . . . . . . . . . 271 ACOS. . . . . . . . . . . . . 272 ASCII . . . . . . . . . . . . . 273 ASIN . . . . . . . . . . . . . 274 ATAN. . . . . . . . . . . . . 275 ATAN2 . . . . . . . . . . . . 276 BIGINT . . . . . . . . . . . . 277 BLOB . . . . . . . . . . . . . 278 CEILING o CEIL . . . . . . . . . 279 CHAR . . . . . . . . . . . . 280 CHR . . . . . . . . . . . . . 285 CLOB . . . . . . . . . . . . . 286 COALESCE . . . . . . . . . . . 287 CONCAT . . . . . . . . . . . 288 COS . . . . . . . . . . . . . 289 COT . . . . . . . . . . . . . 290 DATE . . . . . . . . . . . . . 291 DAY . . . . . . . . . . . . . 293 DAYNAME . . . . . . . . . . . 295 DAYOFWEEK . . . . . . . . . . 296 DAYOFWEEK_ISO . . . . . . . . 297 DAYOFYEAR . . . . . . . . . . 298 DAYS . . . . . . . . . . . . . 299 DBCLOB. . . . . . . . . . . . 300 DECIMAL . . . . . . . . . . . 301 DEGREES . . . . . . . . . . . 304 DEREF . . . . . . . . . . . . 305 DIFFERENCE . . . . . . . . . . 306 DIGITS . . . . . . . . . . . . 307 DLCOMMENT. . . . . . . . . . 308 DLLINKTYPE . . . . . . . . . . 309 DLURLCOMPLETE . . . . . . . . 310 DLURLPATH . . . . . . . . . . 311 DLURLPATHONLY . . . . . . . . 312 DLURLSCHEME . . . . . . . . . 313

Contenido

v

DLURLSERVER . . . . DLVALUE . . . . . . DOUBLE. . . . . . . EVENT_MON_STATE . . EXP . . . . . . . . FLOAT . . . . . . . FLOOR . . . . . . . GENERATE_UNIQUE . . GRAPHIC . . . . . . HEX . . . . . . . . HOUR . . . . . . . INSERT . . . . . . . INTEGER . . . . . . JULIAN_DAY . . . . . LCASE o LOWER. . . . LCASE (esquema SYSFUN) LEFT . . . . . . . . LENGTH . . . . . . LN. . . . . . . . . LOCATE . . . . . . . LOG . . . . . . . . LOG10 . . . . . . . LONG_VARCHAR . . . LONG_VARGRAPHIC . . LTRIM . . . . . . . LTRIM (esquema SYSFUN) MICROSECOND . . . . MIDNIGHT_SECONDS . . MINUTE. . . . . . . MOD . . . . . . . . MONTH . . . . . . . MONTHNAME . . . . NODENUMBER . . . . NULLIF . . . . . . . PARTITION. . . . . . POSSTR . . . . . . . POWER . . . . . . . QUARTER . . . . . . RADIANS . . . . . . RAISE_ERROR. . . . . RAND . . . . . . . REAL . . . . . . . . REPEAT . . . . . . . REPLACE . . . . . . RIGHT . . . . . . . ROUND . . . . . . . RTRIM . . . . . . . RTRIM (esquema SYSFUN) SECOND . . . . . . SIGN . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

314 315 317 319 320 321 322 323 325 326 328 329 331 333 334 335 336 337 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 355 356 358 360 361 362 363 365 366 367 368 369 370 371 372 373 374

SIN . . . . . . . . . SMALLINT . . . . . . . SOUNDEX . . . . . . . SPACE . . . . . . . . SQRT . . . . . . . . . SUBSTR . . . . . . . . TABLE_NAME. . . . . . TABLE_SCHEMA . . . . . TAN . . . . . . . . . TIME . . . . . . . . . TIMESTAMP . . . . . . TIMESTAMP_ISO . . . . . TIMESTAMPDIFF. . . . . TRANSLATE . . . . . . TRUNCATE o TRUNC . . . TYPE_ID. . . . . . . . TYPE_NAME . . . . . . TYPE_SCHEMA . . . . . UCASE o UPPER . . . . . VALUE . . . . . . . . VARCHAR . . . . . . . VARGRAPHIC . . . . . . WEEK . . . . . . . . WEEK_ISO . . . . . . . YEAR . . . . . . . . . Funciones de tabla . . . . . SQLCACHE_SNAPSHOT . . Funciones definidas por el usuario

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

375 376 377 378 379 380 384 386 389 390 391 393 394 396 399 400 401 402 403 404 405 408 410 411 412 413 414 415 417 418 419 424 425 429 432 433 440 443 446 450 459 462 465 466 469 473 474 475

Captulo 5. Consultas . . . . . . . . subseleccin . . . . . . . . . . . clusula-select . . . . . . . . . . clusula-from . . . . . . . . . . referencia-tabla. . . . . . . . . . tabla-unida . . . . . . . . . . . clusula-where . . . . . . . . . . Clusula group-by . . . . . . . . clusula-having . . . . . . . . . Ejemplos de subselecciones . . . . . . Ejemplos de uniones . . . . . . . . . Ejemplos de conjuntos de agrupacin, Cube y Rollup . . . . . . . . . . . . . seleccin completa . . . . . . . . . Ejemplos de una seleccin completa . . sentencia-select . . . . . . . . . . expresin-comn-tabla . . . . . . . clusula-order-by . . . . . . . . . clusula-update . . . . . . . . . clusula-read-only . . . . . . . . clusula-fetch-first . . . . . . . .

vi

Consulta de SQL

clusula-optimize-for. . . . . Ejemplos de una sentencia-select .

. .

. .

. 476 . 477 479 483 484 485 486 486 487 488 488 489 490 491 494 498 502 506 534 540 547 550 552 554 563 565 577 579 584 593 601 604 608 615 625 626 653 671 680 691 699 704 712 720 725

Captulo 6. Sentencias de SQL. . . . . Invocacin de las sentencias SQL . . . . Inclusin de una sentencia en un programa de aplicacin . . . . . . . Preparacin y ejecucin dinmica . . . Invocacin esttica de una sentencia-select Invocacin dinmica de una sentencia-select . . . . . . . . . Invocacin interactiva . . . . . . . Cdigos de retorno SQL . . . . . . . SQLCODE . . . . . . . . . . . SQLSTATE . . . . . . . . . . . Comentarios SQL . . . . . . . . . . ALTER BUFFERPOOL . . . . . . . . ALTER NICKNAME . . . . . . . . . ALTER NODEGROUP . . . . . . . . ALTER SERVER . . . . . . . . . . ALTER TABLE . . . . . . . . . . . ALTER TABLESPACE . . . . . . . . ALTER TYPE (Estructurado) . . . . . . ALTER USER MAPPING . . . . . . . ALTER VIEW . . . . . . . . . . . BEGIN DECLARE SECTION . . . . . . CALL . . . . . . . . . . . . . . CLOSE . . . . . . . . . . . . . COMMENT ON . . . . . . . . . . COMMIT . . . . . . . . . . . . SQL compuesto (intercalado) . . . . . . CONNECT (Tipo 1) . . . . . . . . . CONNECT (Tipo 2) . . . . . . . . . CREATE ALIAS . . . . . . . . . . CREATE BUFFERPOOL. . . . . . . . CREATE DISTINCT TYPE . . . . . . . CREATE EVENT MONITOR . . . . . . CREATE FUNCTION . . . . . . . . CREATE FUNCTION (Escalar externa). . . CREATE FUNCTION (Tabla externa) . . . CREATE FUNCTION (Tabla externa OLE DB) . . . . . . . . . . . . . . CREATE FUNCTION (Fuente o modelo) . . CREATE FUNCTION (SQL, escalar, de tabla o de fila) . . . . . . . . . . . . . CREATE FUNCTION MAPPING . . . . CREATE INDEX . . . . . . . . . . CREATE INDEX EXTENSION . . . . . CREATE METHOD . . . . . . . . . CREATE NICKNAME . . . . . . . .

CREATE NODEGROUP. . . . . . . . 728 CREATE PROCEDURE . . . . . . . . 731 CREATE SCHEMA . . . . . . . . . 749 CREATE SERVER . . . . . . . . . . 753 CREATE TABLE . . . . . . . . . . 757 CREATE TABLESPACE . . . . . . . . 815 CREATE TRANSFORM . . . . . . . . 825 CREATE TRIGGER . . . . . . . . . 832 CREATE TYPE (Estructurado). . . . . . 845 CREATE TYPE MAPPING . . . . . . . 872 CREATE USER MAPPING . . . . . . . 877 CREATE VIEW . . . . . . . . . . 879 CREATE WRAPPER . . . . . . . . . 896 DECLARE CURSOR . . . . . . . . . 898 DECLARE GLOBAL TEMPORARY TABLE 904 DELETE . . . . . . . . . . . . . 913 DESCRIBE . . . . . . . . . . . . 919 DISCONNECT . . . . . . . . . . . 924 DROP. . . . . . . . . . . . . . 927 END DECLARE SECTION . . . . . . . 955 EXECUTE . . . . . . . . . . . . 957 EXECUTE IMMEDIATE. . . . . . . . 963 EXPLAIN . . . . . . . . . . . . 966 FETCH . . . . . . . . . . . . . 971 FLUSH EVENT MONITOR . . . . . . 975 FREE LOCATOR . . . . . . . . . . 976 GRANT (autorizaciones de base de datos) 977 GRANT (privilegios de ndice) . . . . . 980 GRANT (privilegios de paquete) . . . . . 982 GRANT (privilegios de esquema) . . . . 985 GRANT (Privilegios de servidor). . . . . 988 GRANT (privilegios de apodo, vista o tabla) 990 GRANT (privilegios para espacios de tablas) 998 INCLUDE . . . . . . . . . . . . 1000 INSERT . . . . . . . . . . . . . 1002 LOCK TABLE. . . . . . . . . . . 1012 OPEN . . . . . . . . . . . . . 1014 PREPARE . . . . . . . . . . . . 1019 REFRESH TABLE . . . . . . . . . 1030 RELEASE (Conexin) . . . . . . . . 1031 RELEASE SAVEPOINT . . . . . . . 1033 RENAME TABLE . . . . . . . . . 1034 RENAME TABLESPACE . . . . . . . 1036 REVOKE (autorizaciones de bases de datos) 1038 REVOKE (privilegios de ndice). . . . . 1042 REVOKE (privilegios de paquete) . . . . 1044 REVOKE (privilegios de esquema) . . . . 1047 REVOKE (Privilegios de servidor) . . . . 1049 REVOKE (privilegios de apodo, vista o tabla) . . . . . . . . . . . . . 1051

Contenido

vii

REVOKE (privilegios para espacios de tablas) . . . . . . . . . . . . ROLLBACK . . . . . . . . . . SAVEPOINT . . . . . . . . . . SELECT. . . . . . . . . . . . SELECT INTO . . . . . . . . . SET CONNECTION . . . . . . . SET CURRENT DEFAULT TRANSFORM GROUP. . . . . . . . . . . . SET CURRENT DEGREE . . . . . . SET CURRENT EXPLAIN MODE . . . SET CURRENT EXPLAIN SNAPSHOT SET CURRENT PACKAGESET . . . . SET CURRENT QUERY OPTIMIZATION SET CURRENT REFRESH AGE . . . . SET EVENT MONITOR STATE . . . . SET INTEGRITY . . . . . . . . . SET PASSTHRU . . . . . . . . . SET PATH . . . . . . . . . . . SET SCHEMA . . . . . . . . . SET SERVER OPTION . . . . . . . SET variable-transicin. . . . . . . SIGNAL SQLSTATE . . . . . . . . UPDATE . . . . . . . . . . . VALUES . . . . . . . . . . . VALUES INTO . . . . . . . . . WHENEVER . . . . . . . . . .

. . . . . .

1057 1059 1062 1064 1065 1067

Apndice B. Comunicaciones SQL (SQLCA) . . . . . . . . . . . . 1179 Visualizacin de SQLCA interactivamente 1179 Descripciones de los campos de la SQLCA 1179 Orden del informe de errores . . . . . 1183 Utilizacin de la SQLCA por DB2 Enterprise - Extended Edition . . . . . 1184 Apndice C. rea de descriptores SQL (SQLDA) . . . . . . . . . . . . 1185 Descripciones de los campos . . . . . . 1186 Campos en la cabecera SQLDA . . . . 1187 Campos de una ocurrencia de una SQLVAR base . . . . . . . . . . 1188 Campos de una ocurrencia de una SQLVAR secundaria. . . . . . . . 1190 Efecto de DESCRIBE en la SQLDA. . . . 1192 SQLTYPE y SQLLEN . . . . . . . . 1194 SQLTYPES no soportados y no reconocibles . . . . . . . . . . 1196 Nmeros decimales empaquetados. . . 1197 Campo SQLLEN para decimal . . . . 1198 Apndice D. Vistas de catlogo . . . . 1199 Vistas de catlogo actualizables . . . . . 1200 Gua de las vistas de catlogo . . . . . 1200 Gua de las vistas de catlogo actualizables . . . . . . . . . . . 1203 SYSIBM.SYSDUMMY1 . . . . . . . . 1204 SYSCAT.ATTRIBUTES . . . . . . . . 1205 SYSCAT.BUFFERPOOLNODES . . . . . 1207 SYSCAT.BUFFERPOOLS . . . . . . . 1208 SYSCAT.CASTFUNCTIONS . . . . . . 1209 SYSCAT.CHECKS . . . . . . . . . 1210 SYSCAT.COLAUTH. . . . . . . . . 1211 SYSCAT.COLCHECKS . . . . . . . . 1212 SYSCAT.COLDIST . . . . . . . . . 1213 SYSCAT.COLOPTIONS . . . . . . . 1214 SYSCAT.COLUMNS . . . . . . . . 1215 SYSCAT.CONSTDEP . . . . . . . . 1221 SYSCAT.DATATYPES . . . . . . . . 1222 SYSCAT.DBAUTH . . . . . . . . . 1224 SYSCAT.EVENTMONITORS . . . . . . 1226 SYSCAT.EVENTS . . . . . . . . . 1228 SYSCAT.FULLHIERARCHIES . . . . . 1229 SYSCAT.FUNCDEP . . . . . . . . . 1230 SYSCAT.FUNCMAPOPTIONS . . . . . 1231 SYSCAT.FUNCMAPPARMOPTIONS . . . 1232 SYSCAT.FUNCMAPPINGS . . . . . . 1233 SYSCAT.FUNCPARMS . . . . . . . . 1234

. 1069 . 1071 . 1073 1075 . 1077 1079 . 1082 . 1084 . 1086 . 1097 . 1099 . 1102 . 1104 . 1106 . 1111 . 1113 . 1124 . 1125 . 1127

Captulo 7. Procedimientos SQL . . . . 1129 Sentencia de procedimiento SQL . . . . 1130 Sentencia ALLOCATE CURSOR. . . . . 1132 Sentencia de asignacin . . . . . . . 1134 Sentencia ASSOCIATE LOCATORS . . . 1136 Sentencia CASE . . . . . . . . . . 1138 Sentencia compuesta . . . . . . . . 1141 Sentencia FOR . . . . . . . . . . 1147 Sentencia GET DIAGNOSTICS . . . . . 1149 Sentencia GOTO . . . . . . . . . . 1151 Sentencia IF . . . . . . . . . . . 1153 Sentencia ITERATE . . . . . . . . . 1155 Sentencia LEAVE . . . . . . . . . 1156 Sentencia LOOP . . . . . . . . . . 1157 Sentencia REPEAT . . . . . . . . . 1159 Sentencia RESIGNAL . . . . . . . . 1161 Sentencia RETURN . . . . . . . . . 1164 Sentencia SIGNAL . . . . . . . . . 1166 Sentencia WHILE . . . . . . . . . 1169 Apndice A. Lmites de SQL . . . . . 1171

viii

Consulta de SQL

SYSCAT.FUNCTIONS . . . . SYSCAT.HIERARCHIES . . . SYSCAT.INDEXAUTH . . . . SYSCAT.INDEXCOLUSE . . . SYSCAT.INDEXDEP . . . . SYSCAT.INDEXES . . . . . SYSCAT.INDEXOPTIONS. . . SYSCAT.KEYCOLUSE . . . . SYSCAT.NAMEMAPPINGS . . SYSCAT.NODEGROUPDEF . . SYSCAT.NODEGROUPS . . . SYSCAT.PACKAGEAUTH . . SYSCAT.PACKAGEDEP . . . SYSCAT.PACKAGES . . . . SYSCAT.PARTITIONMAPS . . SYSCAT.PASSTHRUAUTH . . SYSCAT.PROCEDURES . . . SYSCAT.PROCOPTIONS . . . SYSCAT.PROCPARMOPTIONS . SYSCAT.PROCPARMS . . . . SYSCAT.REFERENCES. . . . SYSCAT.REVTYPEMAPPINGS . SYSCAT.SCHEMAAUTH . . . SYSCAT.SCHEMATA . . . . SYSCAT.SERVEROPTIONS . . SYSCAT.SERVERS . . . . . SYSCAT.STATEMENTS . . . SYSCAT.TABAUTH . . . . . SYSCAT.TABCONST . . . . SYSCAT.TABLES . . . . . . SYSCAT.TABLESPACES . . . SYSCAT.TABOPTIONS. . . . SYSCAT.TBSPACEAUTH . . . SYSCAT.TRIGDEP . . . . . SYSCAT.TRIGGERS . . . . . SYSCAT.TYPEMAPPINGS . . SYSCAT.USEROPTIONS . . . SYSCAT.VIEWDEP . . . . . SYSCAT.VIEWS . . . . . . SYSCAT.WRAPOPTIONS . . . SYSCAT.WRAPPERS . . . . SYSSTAT.COLDIST . . . . . SYSSTAT.COLUMNS . . . . SYSSTAT.FUNCTIONS . . . . SYSSTAT.INDEXES . . . . . SYSSTAT.TABLES . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1236 1242 1243 1244 1245 1246 1250 1251 1252 1253 1254 1255 1256 1257 1261 1262 1263 1266 1267 1268 1270 1271 1273 1274 1275 1276 1277 1278 1280 1281 1286 1288 1289 1290 1291 1293 1295 1296 1297 1298 1299 1300 1301 1303 1305 1309

OBJCAT.INDEXES . . . . . . . OBJCAT.INDEXEXPLOITRULES . . OBJCAT.INDEXEXTENSIONDEP . . OBJCAT.INDEXEXTENSIONMETHODS OBJCAT.INDEXEXTENSIONPARMS . OBJCAT.INDEXEXTENSIONS . . . OBJCAT.PREDICATESPECS . . . . OBJCAT.TRANSFORMS . . . . .

. . . . . . .

. 1315 . 1319 . 1320 1321 . 1322 . 1323 . 1324 . 1325

Apndice F. Sistemas federados . . . 1327 Tipos de servidor . . . . . . . . . 1327 Opciones SQL para sistemas federados 1328 Opciones de columna . . . . . . . 1329 Opciones de correlacin de funciones 1330 Opciones de servidor . . . . . . . 1331 Opciones de usuario . . . . . . . 1337 Correlaciones de tipos de datos por omisin 1337 Correlaciones de tipos por omisin entre fuentes de datos DB2 y DB2 Universal Database para OS/390 (y DB2 para MVS/ESA) . . . . . . . . . . 1338 Correlaciones de tipos por omisin entre fuentes de datos DB2 y 2 Universal Database para AS/400 (y DB2 para OS/400) . . . . . . . . . . . 1338 Correlaciones de tipos por omisin entre fuentes de datos DB2 y Oracle . . . . 1338 Correlaciones de tipos por omisin entre fuentes de datos DB2 y DB2 para VM y VSE (y SQL/DS) . . . . . . . . . 1339 Proceso del recurso de paso a travs . . . 1339 Proceso SQL en sesiones de paso a travs . . . . . . . . . . . . 1339 Consideraciones y restricciones . . . . 1340 Apndice G. Tablas de la base de datos de ejemplo . . . . . . . . . . . 1343 La base de datos de muestra . . . . . . 1344 Para crear la base de datos SAMPLE 1344 Para borrar la base de datos de muestra 1344 Tabla CL_SCHED . . . . . . . . 1345 Tabla DEPARTMENT . . . . . . . 1345 Tabla EMPLOYEE . . . . . . . . 1345 Tabla EMP_ACT . . . . . . . . . 1349 Tabla EMP_PHOTO. . . . . . . . 1351 Tabla EMP_RESUME . . . . . . . 1351 Tabla IN_TRAY . . . . . . . . . 1352 Tabla ORG . . . . . . . . . . . 1352 Tabla PROJECT . . . . . . . . . 1353 Tabla SALES . . . . . . . . . . 1354Contenido

Apndice E. Vistas de catlogo para utilizar con tipos estructurados . . . . 1311 Gua de las vistas de catlogo . . . . . 1314

ix

Tabla STAFF . . . . . . Tabla STAFFG . . . . . Archivos de muestra con tipos de BLOB y CLOB . . . . . . Foto de Quintana . . . . Currculum vitae de Quintana Foto de Nicholls . . . . . Currculum vitae de Nicholls Foto de Adamson . . . . Currculum vitae de Adamson Foto de Walker . . . . . Currculum vitae de Walker .

. . . . datos . . . . . . . . . . . . . . . . . .

. . . . . . . . . . .

. 1355 . 1356 . . . . . . . . . 1357 1357 1357 1359 1359 1360 1360 1361 1362

Definicin de tabla ADVISE_INDEX Definicin de tabla ADVISE_WORKLOAD . . . . . Apndice L. Valores de registro de explicaciones . . . . . . . . Apndice M. Ejemplo de recurrencia: Lista de material . . . . . . . Ejemplo 1: Explosin de primer nivel . Ejemplo 2: Explosin resumida . . . Ejemplo 3: Control de profundidad .

1407 . 1409

.

. 1411

. . . .

. 1415 . 1415 . 1417 . 1418

Apndice H. Nombres de esquema reservados y palabras reservadas . . . 1363 Esquemas reservados . . . . . . . . 1363 Palabras reservadas . . . . . . . . . 1363 Palabras reservadas del SQL de IBM . . . 1365 Palabras reservadas de ISO/ANS SQL92 1367 Apndice I. Comparacin de niveles de aislamiento . . . . . . . . . . . 1369 Apndice J. Interaccin de desencadenantes y restricciones .

Apndice N. Tablas de excepciones 1421 Reglas para crear una tabla de excepciones 1421 Manejo de filas en las tablas de excepciones 1423 Consulta de las tablas de excepciones . . . 1424 Apndice O. Consideraciones acerca de EUC de japons y de chino tradicional . 1427 Elementos del lenguaje . . . . . . . 1427 Caracteres . . . . . . . . . . . 1427 Smbolos . . . . . . . . . . . 1427 Identificadores . . . . . . . . . 1428 Tipos de datos . . . . . . . . . 1428 Asignaciones y comparaciones . . . . 1428 Reglas para los tipos de datos del resultado . . . . . . . . . . . 1429 Reglas para las conversiones de series 1430 Constantes . . . . . . . . . . . 1431 Funciones . . . . . . . . . . . 1431 Expresiones . . . . . . . . . . 1431 Predicados . . . . . . . . . . . 1432 Funciones . . . . . . . . . . . . 1433 LENGTH . . . . . . . . . . . 1433 SUBSTR . . . . . . . . . . . 1433 TRANSLATE . . . . . . . . . . 1433 VARGRAPHIC . . . . . . . . . 1433 Sentencias . . . . . . . . . . . . 1434 CONNECT . . . . . . . . . . 1434 PREPARE . . . . . . . . . . . 1434 Apndice P. Especificaciones BNF para los enlaces de datos . . . . . . . . 1437 Apndice Q. Glosario . . . . . . . 1441

.

. 1371

Apndice K. Tablas de Explain y definiciones . . . . . . . . . . . 1375 Tabla EXPLAIN_ARGUMENT . . . . . 1376 Tabla EXPLAIN_INSTANCE . . . . . . 1380 Tabla EXPLAIN_OBJECT . . . . . . . 1383 Tabla EXPLAIN_OPERATOR . . . . . 1386 Tabla EXPLAIN_PREDICATE . . . . . 1388 Tabla EXPLAIN_STATEMENT . . . . . 1390 Tabla EXPLAIN_STREAM . . . . . . 1393 Tabla ADVISE_INDEX . . . . . . . . 1395 Tabla ADVISE_WORKLOAD . . . . . 1398 Definiciones de tabla para tablas de Explain 1399 Definicin de tabla EXPLAIN_ARGUMENT . . . . . . 1400 Definicin de tabla EXPLAIN_INSTANCE . . . . . . . 1401 Definicin de tabla EXPLAIN_OBJECT 1402 Definicin de tabla EXPLAIN_OPERATOR. . . . . . . 1403 Definicin de tabla EXPLAIN_PREDICATE . . . . . . 1404 Definicin de tabla EXPLAIN_STATEMENT . . . . . . 1405 Definicin de tabla EXPLAIN_STREAM 1406

Apndice R. Utilizacin de la biblioteca de DB2 . . . . . . . . . . . . 1525

x

Consulta de SQL

Archivos PDF y manuales impresos sobre DB2 . . . . . . . . . . . . . Informacin sobre DB2 . . . . . Impresin de los manuales PDF . . Solicitud de los manuales impresos . Documentacin en lnea de DB2 . . . Acceso a la ayuda en lnea . . . . Visualizacin de informacin en lnea Utilizacin de los asistentes de DB2 . Configuracin de un servidor de documentos . . . . . . . . .

Bsqueda de informacin en lnea . . . . . . . 1525 1525 1536 1537 1538 1538 1540 . 1543

.

. 1545

Apndice S. Avisos . . . . . . . . 1547 Marcas registradas . . . . . . . . . 1550 ndice . . . . . . . . . . . . . 1553 1585 . 1585

Cmo ponerse en contacto con IBM Informacin sobre productos. . . .

.

. 1544

Contenido

xi

Captulo 1. IntroduccinEste captulo preliminar: v Identifica la finalidad de este manual y las personas a las que va dirigido v Explica el modo de utilizar el manual y su estructura v Explica la notacin de los diagramas de sintaxis, los convenios de denominacin y de resaltado que se utilizan en el manual v Lista la documentacin relacionada v Presenta una visin general de la familia de productos

Quin debe utilizar este manualEste manual va dirigido a aquellas personas que deseen utilizar el Lenguaje de consulta estructurada (SQL) para acceder a una base de datos. Principalmente, es para los programadores y los administradores de bases de datos, pero tambin puede utilizarlo el usuario general que utiliza el procesador de lnea de mandatos. Este manual sirve ms de consulta que de gua de aprendizaje. Supone que va a escribir programas de aplicacin y, por lo tanto, presenta todas las funciones del gestor de bases de datos.

Forma de utilizar este manualEste manual define el lenguaje SQL que utiliza DB2 Universal Database Versin 7. Utilcelo como un manual de consulta para informarse sobre los conceptos de bases de datos relacionales, elementos del lenguaje, las funciones, los formatos de las consultas y la sintaxis y semntica de las sentencias SQL. Los apndices se pueden utilizar para averiguar los lmites e informacin sobre componentes importantes.

Estructura de este manualEste manual de consulta est dividido en dos volmenes. El Volumen 1 contiene las secciones siguientes: v El Captulo 1. Introduccin, indica la finalidad, los destinatarios y la utilizacin del manual. v El Captulo 2. Conceptos en la pgina 9, explica los conceptos bsicos de las bases de datos relacionales y del SQL. v El Captulo 3. Elementos del lenguaje en la pgina 69, describe la sintaxis bsica del SQL y los elementos del lenguaje que son comunes a muchas sentencias SQL. Copyright IBM Corp. 1993, 2000

1

v El Captulo 4. Funciones en la pgina 227, contiene diagramas de sintaxis, descripciones semnticas, normas y ejemplos de utilizacin de las funciones de columna y funciones escalares del SQL. v El Captulo 5. Consultas en la pgina 417, describe los distintos formatos de una consulta. v Los apndices incluidos en el Volumen 1 contienen la informacin siguiente: El Apndice A. Lmites de SQL en la pgina 1171, contiene las lmitaciones del SQL. El Apndice B. Comunicaciones SQL (SQLCA) en la pgina 1179, contiene la estructura SQLCA. El Apndice C. rea de descriptores SQL (SQLDA) en la pgina 1185, contiene la estructura SQLDA. El Apndice D. Vistas de catlogo en la pgina 1199, contiene las vistas de catlogo de la base de datos. El Apndice E. Vistas de catlogo para utilizar con tipos estructurados en la pgina 1311, contiene las vistas de catlogo de tipo estructurado de la base de datos. El Apndice F. Sistemas federados en la pgina 1327, contiene opciones y correlaciones de tipos para sistemas federados. El Apndice G. Tablas de la base de datos de ejemplo en la pgina 1343, contiene las tablas de muestra utilizadas para los ejemplos. El Apndice H. Nombres de esquema reservados y palabras reservadas en la pgina 1363, contiene los nombres de esquemas reservados y las palabras reservadas correspondientes a los estndares SQL de IBM y SQL92 ISO/ANS. El Apndice I. Comparacin de niveles de aislamiento en la pgina 1369, contiene un resumen de los niveles de aislamiento. El Apndice J. Interaccin de desencadenantes y restricciones en la pgina 1371, explica la interaccin de los desencadenantes y las restricciones referenciales. El Apndice K. Tablas de Explain y definiciones en la pgina 1375, contiene las tablas de Explain y cmo estn definidas. El Apndice L. Valores de registro de explicaciones en la pgina 1411, describe la interaccin entre s de los valores de registro especiales CURRENT EXPLAIN MODE y CURRENT EXPLAIN SNAPSHOT y los mandatos PREP y BIND. El Apndice M. Ejemplo de recurrencia: Lista de material en la pgina 1415, contiene un ejemplo de una consulta recursiva. El Apndice N. Tablas de excepciones en la pgina 1421, contiene informacin sobre tablas creadas por el usuario que se utilizan con la sentencia SET INTEGRITY.

2

Consulta de SQL

El Apndice O. Consideraciones acerca de EUC de japons y de chino tradicional en la pgina 1427, lista las consideraciones cuando se utilizan los juegos de caracteres EUC. El Apndice P. Especificaciones BNF para los enlaces de datos en la pgina 1437, contiene las especificaciones en formato BNF para valores DATALINK. El Volumen 2 contiene las secciones siguientes: v El Captulo 6. Sentencias de SQL en la pgina 479, contiene diagramas de sintaxis, descripciones semnticas, normas y ejemplos de todas las sentencias SQL. v El Captulo 7. Procedimientos SQL en la pgina 1129, contiene diagramas de sintaxis, descripciones semnticas, normas y ejemplos de sentencias de procedimiento de SQL.

Lectura de los diagramas de sintaxisEn este manual, la sintaxis se describe utilizando la estructura definida de la siguiente manera: Lea los diagramas de sintaxis de izquierda a derecha y de arriba a abajo, siguiendo la lnea. El smbolo indica el inicio de una sentencia.

El smbolo indica que la sintaxis de la sentencia contina en la lnea siguiente. El smbolo indica que contina la sentencia de la lnea anterior. El smbolo indica el final de una sentencia.

Los elementos necesarios aparecen en la lnea horizontal (la lnea principal).SENTENCIA elemento necesario

Los elementos opcionales aparecen debajo de la lnea principal.SENTENCIA elemento opcional

Captulo 1. Introduccin

3

Si aparece un elemento opcional por encima de la lnea principal, dicho elemento no tiene ningn efecto en la ejecucin de la sentencia y slo se utiliza para una lectura ms sencilla.elemento opcional SENTENCIA

Si puede elegir entre dos o ms elementos, aparecen en una pila. Si debe elegir uno de los elementos, un elemento de la pila aparece en la ruta principal.SENTENCIA opcin1 necesaria opcin2 necesaria

Si se puede elegir no seleccionar ninguno de los elementos, toda la pila aparece por debajo de la lnea principal.SENTENCIA opcin1 opcional opcin2 opcional

Si uno de los elementos es el valor por omisin, aparecer por encima de la lnea principal y el resto de las opciones se mostrarn por debajo.opcin por omisin SENTENCIA opcin opcional opcin opcional

Una flecha que vuelve a la izquierda, por encima de la lnea principal, indica un elemento que se puede repetir. En este caso, los elementos repetidos deben ir separados por uno o varios espacios en blanco.

SENTENCIA

elemento repetible

Si la flecha de repeticin contiene una coma, debe separar los elementos repetidos con una coma.

4

Consulta de SQL

, SENTENCIA elemento repetible

Una flecha de repeticin por encima de una pila indica que puede elegir ms de una opcin de entre los elementos apilados o repetir una sola opcin. Las palabras clave aparecen en maysculas (por ejemplo, FROM). Deben escribirse exactamente igual a como aparecen en la sintaxis. Las variables aparecen en minsculas (por ejemplo, nombre-columna). Representan nombres suministrados por el usuario o valores de la sintaxis. Si aparecen signos de puntuacin, parntesis, operadores aritmticos u otros smbolos, debe entrarlos como parte de la sintaxis. A veces, una sola variable representa un conjunto de varios parmetros. Por ejemplo, en el diagrama siguiente, la variable bloque-parmetros se puede sustituir por cualquiera de las interpretaciones del diagrama cuya cabecera es bloque-parmetros:SENTENCIA bloque-parmetros

bloque-parmetros:parmetro1 parmetro2 parmetro3 parmetro4

Los segmentos adyacentes que aparecen entre puntos grandes (*) se pueden especificar en cualquier secuencia.SENTENCIA elemento1 * elemento2 * elemento3 * elemento4

El diagrama anterior muestra que el elemento2 y el elemento3 se pueden especificar en cualquier orden. Son vlidos los dos diagramas siguientes:SENTENCIA elemento1 elemento2 elemento3 elemento4 SENTENCIA elemento1 elemento3 elemento2 elemento4

Captulo 1. Introduccin

5

Convenios utilizados en este manualEsta seccin especifica algunos convenios que se utilizan coherentemente en este manual.

Condiciones de errorUna condicin de error se indica en el texto del manual listando entre parntesis el SQLSTATE asociado al error. Por ejemplo: Una signatura duplicada genera un error SQL (SQLSTATE 42723).

Convenios de resaltadoSe utilizan los siguientes convenios en este manual.Negrita Cursiva Indica mandatos, palabras clave y otros elementos cuyos nombres estn predefinidos por el sistema. Indica una de las siguientes circunstancias: v Nombres o valores (variables) que debe suministrar el usuario v nfasis general v La presentacin de un trmino nuevo v Una referencia a otra fuente de informacin. Indica una de las siguientes circunstancias: v Archivos o directorios v Informacin que se indica al usuario que escriba en un indicador de mandatos o en una ventana. v Ejemplos de valores de datos especficos v Ejemplos de texto similar a lo que puede mostrar el sistema v Ejemplos de mensajes del sistema.

Monoespaciado

Documentacin relacionada para este manualLas siguientes publicaciones pueden ser tiles en la preparacin de aplicaciones: v Administration Guide Contiene la informacin necesaria para disear, implantar y mantener una base de datos a la que se va a acceder de forma local o en un entorno de cliente/servidor. v Application Development Guide Explica el proceso de desarrollo de aplicaciones y la forma de codificar, compilar y ejecutar programas de aplicacin que utilizan SQL intercalado y API para acceder a la base de datos. v Spatial Extender Users Guide and Reference Describe cmo escribir aplicaciones para crear y utilizar un sistema de informacin geogrfica (geographic information system, GIS). Para crear y utilizar un GIS es necesario proporcionar una base de datos con

6

Consulta de SQL

recursos y luego consultar los datos para obtener informacin, tal como ubicaciones, distancias y distribuciones dentro de zonas geogrficas. v IBM SQL Reference Este manual contiene todos los elementos comunes del SQL que estn distribuidos por toda la biblioteca IBM de productos de base de datos. Proporciona lmites y normas que pueden servir de ayuda en la preparacin de programas portables que utilicen bases de datos IBM. Proporciona una lista de extensiones SQL e incompatibilidades entre los siguientes estndares y productos: SQL92E, XPG4-SQL, IBM-SQL y los productos de base de datos relacionales IBM. v American National Standard X3.135-1992, Database Language SQL Contiene la definicin estndar ANSI del SQL. v ISO/IEC 9075:1992, Database Language SQL Contiene la definicin del SQL proporcionada por la norma 1992 de ISO. v ISO/IEC 9075-2:1999, Database Language SQL -- Part 2: Foundation (SQL/Foundation) Contiene una gran parte de la definicin del SQL proporcionada por la norma 1999 de ISO. v ISO/IEC 9075-4:1999, Database Language SQL -- Part 4: Persistent Stored Modules (SQL/PSM) Contiene la definicin de las sentencias de control de los procedimientos SQL, tal como aparece en la norma 1999 de ISO. v ISO/IEC 9075-5:1999, Database Language SQL -- Part 4: Host Language Bindings (SQL/Bindings) Contiene la definicin de los enlaces de lenguaje principal y del SQL dinmico, tal como aparece en la norma 1999 de ISO.

Captulo 1. Introduccin

7

Captulo 2. ConceptosEste captulo proporciona una visin general de los conceptos utilizados con ms frecuencia en el Lenguaje de consulta estructurada (SQL). El captulo intenta proporcionar una perspectiva general de los conceptos. La informacin de consulta que le sigue proporciona una visin ms detallada.

Base de datos relacionalUna base de datos relacional es una base de datos que puede describirse como un conjunto de tablas y que puede ser manipulada de acuerdo con el modelo de datos relacional. Contiene un conjunto de objetos que se utilizan para almacenar y gestionar los datos, as como para acceder a los mismos. Las tablas, vistas, ndices, funciones, desencadenantes y paquetes son ejemplos de estos objetos. Una base de datos relacional particionada es una base de datos relacional en la que los datos se gestionan repartidos en mltiples particiones (tambin denominadas nodos). Esta particin de los datos entre particiones es transparente para los usuarios de la mayora de sentencias SQL. Sin embargo, algunas sentencias DDL tienen en cuenta la informacin sobre particiones (por ejemplo, CREATE NODEGROUP). Una base de datos federada es una base de datos relacional en la que los datos estn almacenados en varias fuentes de datos (tales como bases de datos relacionales separadas). Los datos son tratados como si pertenecieran a una sola gran base de datos y se pueden acceder mediante las consultas SQL normales. Los cambios en los datos se pueden dirigir explcitamente hacia la fuente datos apropiada. Vea Sistemas federados DB2 en la pgina 44 para obtener ms informacin.

Lenguaje de consulta estructurada (SQL)SQL es un lenguaje estandarizado que sirve para definir y manipular los datos de una base de datos relacional. De acuerdo con el modelo relacional de datos, la base de datos se concibe como un conjunto de tablas, las relaciones se representan mediante valores en las tablas y los datos se recuperan especificando una tabla resultante que puede derivarse de una o varias tablas base. Las sentencias SQL las ejecuta un gestor de bases de datos. Una de las funciones del gestor de bases de datos es transformar la especificacin de una

Copyright IBM Corp. 1993, 2000

9

tabla resultante en una secuencia de operaciones internas que optimicen la recuperacin de datos. Esta transformacin se produce en dos fases: preparacin y enlace lgico. Todas las sentencias SQL ejecutables deben prepararse antes de su ejecucin. El resultado de esta preparacin es el formato operativo o ejecutable de la sentencia. El mtodo de preparacin de una sentencia SQL y la persistencia de su formato operativo distinguen el SQL esttico del SQL dinmico.

SQL incorporadoLas sentencias del SQL incorporado son sentencias SQL escritas en lenguajes de programacin de aplicaciones como, por ejemplo, C y que un preprocesador de SQL procesa antes de compilar el programa de aplicacin. Existen dos tipos de SQL incorporado: esttico y dinmico.

SQL estticoEl formato fuente de una sentencia SQL esttica est incluido dentro un programa de aplicacin escrito en un lenguaje principal como, por ejemplo, el COBOL. La sentencia se prepara antes de la ejecucin del programa y el formato operativo de la sentencia persiste despus de la ejecucin del programa. Un precompilador SQL debe procesar los programas fuente que contienen sentencias SQL estticas antes de que sean compilados. El precompilador convierte las sentencias SQL en comentarios del lenguaje principal y genera sentencias del lenguaje principal para invocar el gestor de bases de datos. La sintaxis de las sentencias SQL se comprueba durante el proceso de precompilacin. La preparacin de un programa de aplicacin SQL incluye la precompilacin, el enlace de las sentencias SQL estticas con la base de datos de destino y la compilacin del programa fuente modificado. Los pasos se especifican en el manual Application Development Guide.

SQL dinmicoLos programas que contienen sentencias SQL dinmicas incorporadas deben precompilarse igual que los que contienen sentencias SQL estticas pero, a diferencia del SQL esttico, las sentencias SQL dinmicas se construyen y preparan durante en tiempo de ejecucin. El texto de la sentencia SQL se prepara y ejecuta utilizando las sentencias PREPARE y EXECUTE o bien la sentencia EXECUTE IMMEDIATE. Si se trata de una sentencia SELECT, tambin se puede ejecutar con las operaciones del cursor.

10

Consulta de SQL

Interfaz de nivel de llamada (CLI) de DB2 y Open Database Connectivity (ODBC)La interfaz de nivel de llamada de DB2 es una interfaz de programacin de aplicaciones en la que se proporcionan funciones a los programas de aplicacin para que procesen las sentencias de SQL dinmico. Los programas CLI tambin se pueden compilar mediante un SDK (Software Developers Kit) de ODBC (Open Database Connectivity), suministrado por Microsoft u otro proveedor, que permite acceder a fuentes de datos ODBC. A diferencia de lo que sucede con el SQL incorporado, no se necesita realizar ninguna precompilacin. Las aplicaciones desarrolladas mediante esta interfaz pueden ejecutarse en las diferentes bases de datos sin tener que compilarse en cada una de ellas. A travs de esta interfaz, las aplicaciones utilizan llamadas a procedimientos en tiempo de ejecucin para conectarse a bases de datos, para emitir sentencias SQL y para obtener datos e informacin de estado. La interfaz CLI de DB2 proporciona muchas caractersticas que no estn disponibles en el SQL incorporado. Algunas de estas caractersticas son: v La CLI proporciona llamadas a funciones que dan soporte a una manera coherente de consultar y recuperar informacin del catlogo del sistema de bases de datos a travs de la familia de sistemas DB2 de gestin de bases de datos. Ello reduce la necesidad de escribir consultas especficas del catlogo de servidores de bases de datos. v CLI proporciona la capacidad de desplazarse con un cursor de estas maneras: Hacia Hacia Hacia Hacia adelante, una o ms filas atrs, una o ms filas adelante desde la primera fila, una o ms filas atrs desde la ltima fila, una o ms filas

Desde una posicin en el cursor almacenada previamente v Los procedimientos almacenados llamados desde programas de aplicacin que se han escrito con la CLI pueden devolver conjuntos resultantes a esos programas. El manual CLI Guide and Reference describe las API a las que se da soporte con esta interfaz.

Programas de JDBC (Java Database Connectivity) y de SQLJ (SQL incorporado para Java)DB2 Universal Database implanta dos API de programacin Java basadas en estndares: Conectividad de bases de datos Java (JDBC) y SQL incorporado para Java (SQLJ). Se pueden utilizar las dos para crear aplicaciones Java y applets que acceden a DB2.

Captulo 2. Conceptos

11

Las llamadas JDBC se convierten en llamadas CLI de DB2 a travs de mtodos nativos Java. Las peticiones JDBC fluyen del DB2 cliente a travs de la CLI de DB2 hasta el servidor de DB2. JDBC no puede utilizar el SQL esttico. Las aplicaciones SQLJ utilizan JDBC como base para tareas como conectarse a bases de datos y manejar errores de SQL, pero tambin pueden contener sentencias SQL estticas intercaladas en los archivos fuente SQLJ. Un archivo fuente SQLJ se ha de convertir con el conversor SQLJ para que se pueda compilar el cdigo Java resultante. Para ms informacin sobre aplicaciones JDBC y SQLJ, consulte la publicacin Application Development Guide.

SQL interactivoLas sentencias SQL interactivas las entra el usuario a travs de una interfaz como el procesador de lnea de mandatos o el centro de mandatos. Estas sentencias se procesan como sentencias SQL dinmicas. Por ejemplo, una sentencia SELECT interactiva puede procesarse dinmicamente utilizando las sentencias DECLARE CURSOR, PREPARE, DESCRIBE, OPEN, FETCH y CLOSE. El manual Consulta de mandatos lista los mandatos que se pueden emitir utilizando el procesador de lnea de mandatos o recursos y productos similares.

EsquemasUn esquema es un conjunto de objetos con nombre. Los esquemas proporcionan una clasificacin lgica de los objetos de la base de datos. Algunos de los objetos que un esquema puede contener son tablas, vistas, apodos, desencadenantes, funciones y paquetes. Un esquema tambin es un objeto en la base de datos. Se crea explcitamente utilizando la sentencia CREATE SCHEMA con un usuario registrado como propietario. Tambin se puede crear implcitamente al crear otro objeto, siempre que el usuario tenga la autorizacin IMPLICIT_SCHEMA. El nombre de esquema se utiliza como la parte ms a la izquierda de un nombre de objeto de dos partes. Un objeto que est contenido en un esquema se asigna a ste cuando se crea el objeto. El esquema al que se asigna viene determinado por el nombre del objeto, si est calificado especficamente con un nombre de esquema, o por el nombre de esquema por omisin si no est calificado.

12

Consulta de SQL

Por ejemplo, un usuario con la autorizacin DBADM crea un esquema denominado C para el usuario A.CREATE SCHEMA C AUTHORIZATION A

El usuario A puede emitir la siguiente sentencia para crear una tabla llamada X en el esquema C:CREATE TABLE C.X (COL1 INT)

Control de la utilizacin de esquemasCuando se crea una base de datos, todos los usuarios tienen la autorizacin IMPLICIT_SCHEMA. Esto permite que cualquier usuario pueda crear objetos en cualquier esquema que no exista todava. Un esquema creado implcitamente permite que cualquier usuario cree otros objetos en dicho esquema.1 Si se revoca la autorizacin IMPLICIT_SCHEMA de PUBLIC, los esquemas se crean explcitamente utilizando la sentencia CREATE SCHEMA o, implcitamente, por los usuarios (por ejemplo, los que tienen la autorizacin DBADM) a los que se otorga la autorizacin IMPLICIT_SCHEMA. Aunque la revocacin de la autorizacin IMPLICIT_SCHEMA de PUBLIC aumenta el control sobre la utilizacin de nombres de esquema, puede dar como resultado errores de autorizacin en las aplicaciones existentes cuando intenten crear objetos. Tambin hay privilegios asociados con un esquema que controlan los usuarios que tienen autorizacin para crear, modificar y eliminar objetos en el esquema. El propietario de un esquema tiene, en principio, todos estos privilegios sobre el esquema con la posibilidad de otorgarlos a los dems. El propietario de un esquema creado implcitamente es el sistema y, en principio, todos los usuarios tienen el privilegio para crear objetos en dicho esquema. Un usuario con las autorizaciones DBADM o SYSADM puede cambiar los privilegios que poseen los usuarios en cualquier esquema. Por lo tanto, se puede controlar el acceso para crear, modificar y eliminar objetos en cualquier esquema (incluso en uno que se haya creado implcitamente).

TablasLas tablas son estructuras lgicas mantenidas por el gestor de bases de datos. Las tablas estn formadas por columnas y filas. Las filas de una tabla no estn necesariamente ordenadas (el orden lo determina el programa de aplicacin). En la interseccin de cada columna con una fila hay un elemento de datos especfico denominado valor. Una columna es un conjunto de valores del1. Los privilegios por omisin sobre un esquema creado implcitamente proporcionan compatibilidad con versiones anteriores. La creacin de seudnimos, tipos diferenciados, funciones y desencadenantes se extiende a los esquemas creados implcitamente. Captulo 2. Conceptos

13

mismo tipo o uno de sus subtipos. Una fila es una secuencia de valores cuyo valor n es un valor de la columna n de la tabla. Una tabla base se crea con la sentencia CREATE TABLE y se utiliza para conservar los datos habituales de los usuarios. Una tabla resultante es un conjunto de filas que el gestor de bases de datos selecciona o genera a partir de una o varias tablas base para satisfacer una consulta. Una tabla de resumen es una tabla definida por una consulta que tambin se utiliza para determinar los datos de la tabla. Las tablas de resumen se pueden utilizar para mejorar el rendimiento de las consultas. Si el gestor de bases de datos determina que una parte de una consulta puede resolverse utilizando una tabla de resumen, el gestor de bases de datos puede volver a escribir la consulta para utilizar la tabla de resumen. Esta decisin est basada en determinados valores, tales como los registros especiales CURRENT REFRESH AGE y CURRENT QUERY OPTIMIZATION. Una tabla puede tener el tipo de datos de cada columna definido por separado o tener los tipos de las columnas basados en los atributos de un tipo estructurado definido por el usuario. Esto se denomina tabla con tipo. Un tipo estructurado definido por el usuario puede formar parte de una jerarqua de tipos. Se considera que un subtipo hereda los atributos de su supertipo. De manera similar, una tabla con tipo puede formar parte de una jerarqua de tablas. Se considera que una subtabla hereda las columnas de su supertabla. Tenga en cuenta que el trmino subtipo se aplica a un tipo estructurado definido por el usuario y a todos los tipos estructurados definidos por el usuario que estn por debajo del mismo en la jerarqua de tipos. Un subtipo correspondiente de un tipo estructurado T es un tipo estructurado por debajo de T en la jerarqua de tipos. De manera similar, el trmino subtabla se aplica a una tabla con tipo y a todas las tablas con tipo que estn por debajo de la misma en la jerarqua de tablas. Una subtabla correspondiente de una tabla T es una tabla por debajo de T en la jerarqua de tablas. Una tabla temporal declarada se crea mediante una sentencia DECLARE GLOBAL TEMPORARY TABLE y se utiliza para contener datos temporales para una aplicacin individual. Esta tabla se elimina implcitamente cuando la aplicacin se desconecta de la base de datos.

VistasUna vista proporciona una manera alternativa de consultar los datos de una o varias tablas. Una vista es una especificacin de una tabla resultante a la que se le da un nombre. La especificacin es una sentencia SELECT que se ejecuta siempre que se hace referencia a la vista en una sentencia SQL. Por lo tanto, se puede

14

Consulta de SQL

considerar que una vista tiene columnas y filas como una tabla base. Para efectuar una recuperacin, se pueden utilizar todas las vistas como si fueran tablas base. El hecho de que pueda utilizarse una vista en una operacin para insertar, actualizar o suprimir datos depende de su definicin, tal como se explica en la descripcin de CREATE VIEW. (Consulte el apartado CREATE VIEW en la pgina 879 para obtener ms informacin.) Cuando la columna de una vista se obtiene directamente de una columna de una tabla base, esa columna hereda todas las restricciones aplicables a la columna de la tabla base. Por ejemplo, si una vista contiene una clave fornea de su tabla base, las operaciones INSERT y UPDATE que usen esta vista estarn sujetas a las mismas restricciones de referencia que la tabla base. Asimismo, si la tabla base de una vista es una tabla padre, las operaciones DELETE y UPDATE que utilicen dicha vista estarn sujetas a las mismas reglas que las operaciones DELETE y UPDATE de la tabla base. En una vista, el tipo de datos de cada columna puede derivar de la tabla resultante o bien los tipos para las columnas pueden estar basados en los atributos de un tipo estructurado definido por el usuario. Esta vista se denomina vista con tipo. De manera similar a una tabla con tipo, una vista con tipo puede formar parte de una jerarqua de vistas. Se considera que una subvista hereda las columnas de su supervista. El trmino subvista se aplica a una vista con tipo y a todas las vistas con tipo que estn por debajo de la misma en la jerarqua de vistas. Una subvista correspondiente de una vista V es una vista por debajo de V en la jerarqua de vistas con tipo. Una vista puede volverse no operativa, en cuyo caso ya no estar disponible para sentencias SQL.

SeudnimosUn seudnimo es un nombre alternativo para una tabla o una vista. Puede utilizarse para hacer referencia a una tabla o una vista en aquellos casos en que puede hacerse referencia a una tabla o una vista existente.2 Al igual que las tablas y vistas, los seudnimos se pueden crear, eliminar y tener comentarios asociados a ellos. Los seudnimos tambin se pueden crear para apodos. A diferencia de las tablas, los seudnimos pueden hacerse referencia entre s, en un proceso denominado encadenamiento. Los seudnimos son nombres referidos pblicamente, por lo que no es necesaria ninguna autorizacin ni privilegio especial para utilizarlos. Sin embargo, el acceso a las tablas y vistas a las que hace referencia el seudnimo siguen precisando de la autorizacin adecuada para el contexto actual.2. Un seudnimo no se puede utilizar en todos los contextos. Por ejemplo, no puede utilizarse en la condicin de comprobacin de una restriccin de comprobacin. Adems, un seudnimo no puede hacer referencia a una tabla temporal declarada. Captulo 2. Conceptos

15

Adems de los seudnimos de la tabla, existen otros tipos de seudnimos como, por ejemplo, los seudnimos de base de datos y los de red. Consulte los apartados Seudnimos en la pgina 78 y CREATE ALIAS en la pgina 601 para obtener ms informacin sobre los seudnimos.

ndicesUn ndice es un conjunto ordenado de punteros para filas de una tabla base. Cada ndice se basa en los valores de los datos de una o varias columnas de la tabla. Un ndice es un objeto que est separado de los datos de la tabla. Cuando se crea un ndice, el gestor de bases de datos crea esta estructura y la mantiene automticamente. El gestor de bases de datos utiliza los ndices para: v Mejorar el rendimiento. En la mayora de los casos, el acceso a los datos es ms rpido que sin ndices. No puede crearse un ndice para una vista. Sin embargo, un ndice creado para una tabla en la que se basa una vista puede mejorar el rendimiento de las operaciones en la vista. v Asegurar la exclusividad. Una tabla con un ndice de unicidad no puede tener filas con claves idnticas.

ClavesUna clave es un conjunto de columnas que se pueden utilizar para identificar o para acceder a una fila o filas determinadas. La clave viene identificada en la descripcin de una tabla, ndice o restriccin de referencia. Una misma columna puede formar parte de ms de una clave. Una clave compuesta de ms de una columna se denomina una clave compuesta. En una tabla con una clave compuesta, el orden de las columnas dentro de la clave compuesta no est restringido por el orden que presentan en la tabla. El trmino valor cuando se utiliza con respecto a una clave compuesta indica un valor compuesto. As, por ejemplo la regla el valor de la clave fornea debe ser igual al valor de la clave primaria significa que cada componente del valor de la clave fornea debe ser igual al componente del valor correspondiente de la clave primaria.

Claves exclusivasUna clave exclusiva es una clave restringida de manera que no puede tener dos valores iguales. Las columnas de una clave exclusiva no pueden contener valores nulos. El gestor de bases de datos impone la restriccin durante la ejecucin de cualquier operacin que cambie los valores de los datos como, por ejemplo, INSERT o UPDATE. El mecanismo utilizado para imponer la

16

Consulta de SQL

restriccin se denomina ndice de unicidad. De este modo, cada clave exclusiva es una clave de un ndice de unicidad. Tambin se dice que dichos ndices tienen el atributo UNIQUE. Vea Restricciones de unicidad en la pgina 18 para obtener una descripcin ms detallada.

Claves primariasUna clave primaria es un caso especial de clave exclusiva. Una tabla no puede tener ms de una clave primaria. Consulte el apartado Claves exclusivas en la pgina 16 para obtener una descripcin ms detallada.

Claves forneasUna clave fornea es una clave que se especifica en la definicin de una restriccin de referencia. Consulte el apartado Restricciones de referencia en la pgina 19 para obtener una descripcin ms detallada.

Claves de particionamientoUna clave de particionamiento es una clave que forma parte de la definicin de una tabla de una base de datos particionada. La clave de particionamiento se utiliza para determinar la particin en la que se almacena la fila de datos. Si se define una clave de particionamiento, la clave exclusiva y la clave primaria deben incluir las mismas columnas que la clave de particionamiento (pueden tener ms columnas). Una tabla no puede tener ms de una clave de particionamiento.

RestriccionesUna restriccin es una regla que impone el gestor de bases de datos. Hay tres tipos de restricciones: v Una restriccin de unicidad es una regla que prohbe los valores duplicados en una o varias columnas de una tabla. Las restricciones de unicidad a las que se da soporte son la clave exclusiva y la clave primaria. Por ejemplo, podra definirse una restriccin de unicidad para el identificador de proveedor de la tabla de proveedores para asegurar que no se da el mismo identificador de proveedor a dos de ellos. v Una restriccin de referencia es una regla lgica acerca de los valores de una o varias columnas de una o varias tablas. Por ejemplo, un conjunto de tablas que comparte informacin sobre los proveedores de una empresa. Ocasionalmente, el nombre de un proveedor cambia. Se puede definir una restriccin de referencia afirmando que el ID del proveedor de una tabla debe coincidir con el id de proveedor de la informacin del proveedor. Esta restriccin evita las inserciones, actualizaciones o supresiones que, de lo contrario, podran dar como resultado la falta de informacin del proveedor. v Una restriccin de comprobacin de tabla establece restricciones en los datos que se aaden a una tabla especfica. or ejemplo, podra definirse el nivelCaptulo 2. Conceptos

17

salarial de un empleado de tal forma que nunca fuera menor que 70.000 pts al aadir o actualizar datos salariales en una tabla que contiene informacin del personal. Las restricciones de referencia y de comprobacin de tabla se pueden activar y desactivar. Normalmente, la aplicacin de una restriccin se desactiva cuando se cargan grandes cantidades de datos en la base de datos. Si desea obtener informacin detallada sobre la activacin o desactivacin de las restricciones, consulte el apartado SET INTEGRITY en la pgina 1086.

Restricciones de unicidadUna restriccin de unicidad es la regla que establece que los valores de una clave slo son vlidos si son exclusivos en la tabla. Las restricciones de unicidad son opcionales y pueden definirse en las sentencias CREATE TABLE o ALTER TABLE utilizando la clusula PRIMARY KEY o la clusula UNIQUE. Las columnas especificadas en una restriccin de unicidad deben definirse como NOT NULL. El gestor de bases de datos utiliza el ndice de unicidad para imponer la unicidad de la clave durante los cambios en las columnas de la restriccin de unicidad. Una tabla puede tener un nmero arbitrario de restricciones de unicidad y como mximo una restriccin de unicidad definida como la clave primaria. Una tabla no puede tener ms de una restriccin de unicidad en el mismo conjunto de columnas. Una restriccin de unicidad a la que hace referencia la clave fornea de una restriccin de referencia se denomina clave padre. Cuando se define una restriccin de unicidad en una sentencia CREATE TABLE, el gestor de bases de datos crea automticamente un ndice de unicidad y lo designa como un ndice principal o de unicidad necesario para el sistema. Cuando se define una restriccin de unicidad en una sentencia ALTER TABLE y existe un ndice en las mismas columnas, dicho ndice se designa como de unicidad y necesario para el sistema. Si no existe tal ndice, el gestor de bases de datos crea automticamente el ndice de unicidad y lo designa como un ndice principal o de unicidad necesario para el sistema. Observe que existe una distincin entre la definicin de una restriccin de unicidad y la creacin de un ndice de unicidad. Aunque ambos impongan la exclusividad, un ndice de unicidad permite la existencia de columnas que pueden contener valores nulos y generalmente no puede utilizarse como una clave padre.

18

Consulta de SQL

Restricciones de referenciaLa integridad de referencia es el estado de una base de datos en la que todos los valores de todas las claves forneas son vlidos. Una clave fornea es una columna o un conjunto de columnas de una tabla cuyos valores deben coincidir obligatoriamente con, como mnimo, un valor de una clave primaria o de una clave exclusiva de una fila de su tabla padre. Una restriccin de referencia es la regla que establece que los valores de la clave fornea son vlidos solamente si: v aparecen como valores de una clave padre o v algn componente de la clave fornea es nulo. La tabla que contiene la clave padre se denomina la tabla padre de la restriccin de referencia y se dice que la tabla que contiene la clave fornea es dependiente de dicha tabla. Las restricciones de referencia son opcionales y pueden definirse en sentencias CREATE TABLE y ALTER TABLE. Las restricciones de referencia las impone el gestor de bases de datos durante la ejecucin de las sentencias INSERT, UPDATE, DELETE, ALTER TABLE ADD CONSTRAINT y SET INTEGRITY. Esta imposicin se hace efectiva al finalizar la sentencia. Las restricciones de referencia con una regla de supresin o actualizacin de RESTRICT se imponen antes que el resto de restricciones de referencia. Las restricciones de referencia con una regla de supresin o actualizacin de NO ACTION tienen un funcionamiento igual que RESTRICT, en la mayora de casos. Sin embargo, en determinadas sentencias SQL pueden existir diferencias. Recuerde que la integridad de referencia, las restricciones de comprobacin y los desencadenantes pueden combinarse en la ejecucin. Para obtener ms informacin sobre la combinacin de estos tres elementos, consulte el Apndice J. Interaccin de desencadenantes y restricciones en la pgina 1371. En las reglas de integridad de referencia se utilizan los conceptos y terminologa siguientes: Clave padre Fila padre Tabla padre Clave primaria o clave exclusiva de una restriccin de referencia. Fila que tiene, como mnimo, una fila dependiente. Tabla que contiene la clave padre de una restriccin de referencia. Una tabla puede definirse como padre en un nmero arbitrario de restricciones de referencia. Una tabla que esCaptulo 2. Conceptos

19

padre en una restriccin de referencia tambin puede ser dependiente de una restriccin de referencia. Tabla dependiente Tabla que contiene como mnimo una restriccin de referencia en su definicin. Una tabla puede definirse como dependiente en un nmero arbitrario de restricciones de referencia. Una tabla que es dependiente en una restriccin de referencia tambin puede ser padre de una restriccin de referencia. Una tabla es descendiente de la tabla T si es dependiente de T o descendiente de una tabla dependiente de T. Fila que tiene, como mnimo, una fila padre. Una fila es descendiente de la fila p si es dependiente de p o descendiente de una fila dependiente de p. Conjunto de restricciones de referencia en el que cada tabla del conjunto es descendiente de s misma. Fila que es padre de s misma. Tabla que es padre y dependiente en la misma restriccin de referencia. La restriccin se denomina restriccin de autorreferencia.

Tabla descendiente

Fila dependiente Fila descendiente

Ciclo de referencia

Fila autorreferente Tabla autorreferente

Regla de insercin La regla de insercin de una restriccin de referencia es la que establece que un valor de insercin que no sea nulo de la clave fornea debe coincidir con algn valor de la clave padre de la tabla padre. El valor de la clave fornea compuesta ser nulo si algn componente del valor es nulo. Es una regla implcita cuando se especifica una clave fornea. Regla de actualizacin La regla de actualizacin de una restriccin de referencia se especifica al definir la restriccin de referencia. Las opciones son NO ACTION y RESTRICT. La regla de actualizacin se aplica al actualizar una fila de la tabla padre o una fila de la tabla dependiente. En el caso de una fila padre, cuando se actualiza el valor de una columna de la clave padre: v si cualquier fila de la tabla dependiente coincide con el valor original de la clave, se rechaza la actualizacin cuando la regla de actualizacin es RESTRICT

20

Consulta de SQL

v si alguna fila de la tabla dependiente no tiene una clave padre correspondiente cuando se completa la sentencia de actualizacin (excepto los desencadenantes AFTER), se rechaza la actualizacin cuando la regla de actualizacin es NO ACTION. En el caso de una fila dependiente, la regla de actualizacin que est implcita cuando se especifica una clave fornea es NO ACTION. NO ACTION significa que un valor de actualizacin que no sea nulo de una clave fornea debe coincidir con algn valor de la clave padre de la tabla padre cuando se complete la sentencia de actualizacin. El valor de la clave fornea compuesta ser nulo si algn componente del valor es nulo. Regla de supresin La regla de supresin de una restriccin de referencia se especifica al definir la restriccin de referencia. Las opciones son NO ACTION, RESTRICT, CASCADE o SET NULL. SET NULL slo puede especificarse si hay alguna columna de la clave fornea que permita valores nulos. La regla de supresin de una restriccin de referencia se aplica al suprimir una fila de la tabla padre. Para ser ms exactos, esta regla se aplica cuando una fila de la tabla padre es el objeto de una operacin de supresin o de supresin propagada (definida a continuacin) y dicha fila tiene dependientes en la tabla dependiente de la restriccin de referencia. Supongamos que P sea la tabla padre, D la tabla dependiente y p una fila padre que sea el objeto de una operacin de supresin o de supresin propagada. Si la regla de supresin es: v RESTRICT o NO ACTION, se produce un error y no se suprime ninguna fila v CASCADE, la operacin de supresin se propaga a los dependientes de p en D v SET NULL, cada columna que pueda contener nulos de la clave fornea de cada dependiente de p en D se establece en nulo Cada restriccin de referencia en la que una tabla sea padre tiene su propia regla de supresin, y todas las reglas de supresin aplicables se utilizan para determinar el resultado de la operacin de supresin. As, una fila no puede suprimirse si tiene dependientes en una restriccin de referencia con una regla de supresin RESTRICT o NO ACTION o la supresin se propaga en cascada a cualquiera de sus descendientes que sean dependientes en una restriccin de referencia con la regla de supresin RESTRICT o NO ACTION. La supresin de una fila de la tabla padre P implica a otras tablas y puede afectar a las filas de stas:

Captulo 2. Conceptos

21

v Si la tabla D es dependiente de P y la regla de supresin es RESTRICT o NO ACTION, D estar implicada en la operacin pero no se ver afectada por sta. v Si D es dependiente de P y la regla de supresin es SET NULL, D estar implicada en la operacin y las filas de D podrn actualizarse durante la operacin. v Si D es dependiente de P y la regla de supresin es CASCADE, D estar implicada en la operacin y las filas de D podrn suprimirse durante la operacin. Si se suprimen filas de D, se dice que la operacin de supresin de P se ha propagado a D. Si D tambin es una tabla padre, las acciones que se describen en esta lista se aplican a su vez a los elementos dependientes de D. Cualquier tabla que pueda estar implicada en una operacin de supresin sobre P, se dice que est conectada por supresin a P. As, una tabla est conectada por supresin a la tabla P si es dependiente de P o es dependiente de una tabla hacia la que se propagan en cascada operaciones de supresin desde P.

Restricciones de comprobacin de tablaUna restriccin de comprobacin de tabla es una regla que especifica los valores permitidos en una o varias columnas de cada fila de una tabla. Dichos valores son opcionales y pueden definirse utilizando las sentencias CREATE TABLE y ALTER TABLE de SQL. La especificacin de las restricciones de comprobacin de tabla es una forma restringida de una condicin de bsqueda. Una de las restricciones es que un nombre de columna de una restriccin de comprobacin de tabla en la tabla T debe identificar una columna de T. Una tabla puede tener un nmero arbitrario de restricciones de comprobacin de tabla. Dichas restricciones se imponen al: v insertar una fila en la tabla v actualizar una fila de la tabla. Una restriccin de comprobacin de tabla se impone aplicando su condicin de bsqueda en cada fila que se inserte o actualice. Si el resultado de la condicin de bsqueda es falso en cualquiera de las filas, se produce un error. Cuando hay una o varias restricciones de comprobacin de tabla definidas en la sentencia ALTER TABLE para una tabla en la que existen datos, stos se comprueban con la nueva condicin antes de que se complete satisfactoriamente la sentencia ALTER TABLE. La tabla puede ponerse en estado pendiente de comprobacin lo que permitir que la sentencia ALTER TABLE se realice satisfactoriamente sin tener que comprobar los datos. La

22

Consulta de SQL

sentencia SET INTEGRITY se utiliza para poner la tabla en estado pendiente de comprobacin. Tambin se utiliza para reanudar la comparacin de cada fila con la restriccin.

DesencadenantesUn desencadenante define un conjunto de acciones que se ejecutan en, o se activan por, una operacin de supresin, insercin o actualizacin en una tabla especificada. Cuando se ejecuta una de estas operaciones SQL, se dice que el desencadenante est activado. Los desencadenantes pueden utilizarse junto con las restricciones de referencia y de comprobacin para imponer las reglas de integridad de los datos. Los desencadenantes tambin pueden utilizarse para provocar actualizaciones en otras tablas, para transformar o generar valores automticamente en las filas insertadas o actualizadas, o para invocar funciones que realicen tareas como la de emitir alertas. Los desencadenantes son un mecanismo til para definir e imponer las reglas empresariales transicionales que son reglas que afectan a diferentes estados de los datos (por ejemplo, el salario no se puede aumentar ms del 10 por ciento). En las reglas que no afectan a ms de un estado de los datos, hay que tener en cuenta las restricciones de integridad de referencia y de comprobacin. La utilizacin de desencadenantes coloca la lgica para imponer las reglas empresariales en la base de datos y libera a las aplicaciones que utilizan las tablas de la obligacin de aplicarlas. La lgica impuesta de forma centralizada a todas las tablas significa un mantenimiento ms sencillo, ya que no es necesario cambiar el programa de aplicacin cuando cambia la lgica. Los desencadenantes son opcionales y se definen mediante la sentencia CREATE TRIGGER. Existen una serie de criterios, definidos al crear un desencadenante, que se utilizan para determinar el momento en que dicho desencadenante debe activarse. v La tabla sujeto define la tabla para la que se define el desencadenante. v El suceso desencadenante define una operacin SQL especfica que modifica la tabla sujeto. La operacin puede ser la supresin, insercin o actualizacin. v El momento de activacin del desencadenante define si el desencadenante debe activarse antes o despus de haberse producido el suceso desencadenante en la tabla sujeto.

Captulo 2. Conceptos

23

La sentencia que provoque la activacin de un desencadenante incluir un conjunto de filas afectadas. stas son las filas de la tabla sujeto que se suprimen, insertan o actualizan. La granularidad del desencadenante define si las acciones del desencadenante se realizarn una vez para la sentencia o una vez para cada una de las filas del conjunto de filas afectadas. La accin activada consta de una condicin de bsqueda opcional y un conjunto de sentencias SQL que se ejecutan siempre que se activa el desencadenante. Las sentencias SQL slo se ejecutan si la condicin de bsqueda se evala como verdadera. Cuando la activacin del desencadenante es anterior al suceso desencadenante, la accin activada puede incluir sentencias que seleccionan, definen variables de transicin y sealan los estados SQL. Cuando la activacin del desencadenante es posterior al suceso desencadenante, la accin activada puede incluir sentencias que seleccionan, actualizan, insertan, suprimen y sealen estados SQL. La accin activada puede hacer referencia a los valores del conjunto de filas afectadas. Se da soporte a esta funcin mediante el uso de variables de transicin. Las variables de transicin utilizan los nombres de las columnas de la tabla sujeto calificados por un nombre especificado que identifica si la referencia es al valor anterior (previo a la actualizacin) o al valor nuevo (posterior a la actualizacin). El valor nuevo tambin puede cambiarse utilizando la sentencia de la variable de transicin SET antes de actualizar o insertar desencadenantes. Otro mtodo de hacer referencia a los valores del conjunto de filas afectadas es utilizar las tablas de transicin. Las tablas de transicin tambin utilizan los nombres de las columnas de la tabla sujeto, pero tienen especificado un nombre que permite tratar a todo el conjunto de filas afectadas como una tabla. Las tablas de transicin slo se pueden utilizar en desencadenantes posteriores; y las tablas de transicin se pueden definir para valores antiguos y nuevos. Se pueden especificar varios desencadenantes para una combinacin de tabla, suceso o momento de activacin. El orden en el que se activan los desencadenantes es el mismo que el orden en que se han creado. Por lo tanto, el desencadenante de ms reciente creacin ser el ltimo en activarse. La activacin de un desencadenante puede provocar una cascada de desencadenantes. Es el resultado de la activacin de un desencadenante que ejecuta sentencias SQL que provocan la activacin de otros desencadenantes o incluso del mismo otra vez. Las acciones activadas tambin pueden provocar actualizaciones como resultado de la modificacin original o de las reglas de supresin de integridad de referencia, que pueden causar la activacin de ms desencadenantes. Con una cascada de desencadenantes, se puede activar un nmero significativo cadenas de desencadenantes y de reglas de supresin de integridad de referencia, lo que puede provocar un cambio sustancial en la base de datos con una sola sentencia de supresin, insercin o actualizacin.

24

Consulta de SQL

Supervisores de sucesosUn supervisor de sucesos realiza el seguimiento de datos especficos como resultado de un suceso. Por ejemplo, iniciar la base de datos podra ser un suceso que obligase al supervisor de sucesos a realizar un seguimiento del nmero de usuarios del sistema, tomando cada hora una instantnea de los ID de autorizacin que utilizan la base de datos. Los supervisores de sucesos se activan o desactivan con una sentencia (SET EVENT MONITOR STATE). Hay una funcin (EVENT_MON_STATE) que sirve para averiguar el estado actual de un supervisor de sucesos; es decir, para ver si est activo o no.

ConsultasUna consulta es un componente de determinadas sentencias SQL que especifica una tabla resultante (temporal).

Expresiones de tablaUna expresin de tabla crea una tabla resultante temporal a partir de una consulta simple. Las clusulas precisan ms la tabla resultante. Por ejemplo, una expresin de tabla podra ser una consulta que seleccionase todos los directores de varios departamentos y que adems especificase que tuviesen ms de 15 aos de experiencia laboral y que estuviesen en la sucursal de Barcelona.

Expresiones de tabla comunesUna expresin de tabla comn es como una vista temporal de una consulta compleja y se puede referenciar a ella en otros lugares de la consulta; por ejemplo, en el lugar de una vista, para evitar crear la misma. Todos los usos de una expresin de tabla comn especfica en una consulta compleja comparten la misma vista temporal. Puede utilizarse de forma repetida una expresin de tabla comn en una consulta para dar soporte a aplicaciones como, por ejemplo, la lista de materiales (BOM), sistemas de reservas de lneas areas y planificacin de redes. Hay una serie de ejemplos de una aplicacin BOM en el Apndice M. Ejemplo de recurrencia: Lista de material en la pgina 1415.

PaquetesUn paquete es un objeto que contiene todas las secciones de un archivo fuente individual. Una seccin es el formato compilado de una sentencia SQL. Mientras que cada una de las secciones corresponde a una sentencia, cada sentencia no tiene necesariamente una seccin. Las secciones creadas para el SQL esttico vienen a ser el formato enlazado u operativo de las sentenciasCaptulo 2. Conceptos

25

SQL. Las secciones creadas para el SQL dinmico se pueden describir como estructuras de control de espacios reservados utilizadas en tiempo de ejecucin. Los paquetes se generan durante la preparacin del programa. Consulte el manual Application Development Guide para obtener ms informacin sobre paquetes.

Vistas de catlogoEl gestor de bases de datos mantiene un conjunto de vistas y tablas base que contienen informacin sobre los datos que se encuentran bajo su control. Estas vistas y las tablas base se conocen en su conjunto como el catlogo. El catlogo contiene informacin sobre los objetos de la base de datos como, por ejemplo, las tablas, vistas, ndices, paquetes y funciones. Las vistas de catlogo son como las dems vistas de base de datos. Se pueden utilizar las sentencias SQL para consultar los datos de las vistas de catlogo de la misma manera en que se recuperan los datos de cualquier otra vista del sistema. El gestor de bases de datos garantiza que el catlogo contenga, en todo momento, una descripcin exacta de los objetos de la base de datos. Para modificar ciertos valores del catlogo puede utilizarse un conjunto de vistas actualizables del catlogo (consulte el apartado Vistas de catlogo actualizables en la pgina 1200). En el catlogo tambin se incluye informacin estadstica. La informacin estadstica la actualiza un administrador mediante la ejecucin de programas de utilidad o a travs de sentencias de actualizacin por parte de usuarios debidamente autorizados. Las vistas de catlogo aparecen listadas en el Apndice D. Vistas de catlogo en la pgina 1199.

Procesos de aplicacin, simultaneidad y recuperacinTodos los programas SQL se ejecutan como parte de un proceso de aplicacin o agente. Un proceso de aplicacin implica la ejecucin de uno o varios programas y es la unidad a la que el gestor de bases de datos asigna los distintos recursos y bloqueos. Los distintos procesos de la aplicacin pueden implicar la ejecucin de programas diferentes, o distintas ejecuciones del mismo programa. Puede que ms de un proceso de aplicacin solicite acceso simultneo a los mismos datos. El bloqueo es el mecanismo que se utiliza para mantener la integridad de los datos en tales condiciones, con lo que se evita, por ejemplo, que dos procesos de la aplicacin actualicen simultneamente la misma fila de datos.

26

Consulta de SQL

El gestor de bases de datos adquiere bloqueos para evitar que los cambios no confirmados realizados por un proceso de aplicacin sean percibidos accidentalmente por otro proceso. El gestor de bases de datos libera todos los bloqueos que ha adquirido y retenido en nombre de un proceso de aplicacin cuando este proceso finaliza. Sin embargo, un proceso de aplicacin puede solicitar explcitamente que se liberen antes los bloqueos. Se consigue utilizando una operacin de confirmacin que libera bloqueos adquiridos durante la unidad de trabajo y tambin confirma cambios en la base de datos durante la unidad de trabajo. El gestor de bases de datos proporciona un medio de restitucin de los cambios no confirmados realizados por un proceso de aplicacin. Esto podra ser necesario en caso de error en un proceso de aplicacin o si se produce un punto muerto o un tiempo excedido por bloqueo. Sin embargo, el propio proceso de aplicacin puede solicitar de modo explcito que se restituyan los cambios en la base de datos. Esta operacin se denomina retrotraccin. Una unidad de trabajo es una secuencia recuperable de operaciones dentro de un proceso de aplicacin. Se inicia una unidad de trabajo cuando arranca un proceso de aplicacin3. Tambin se inicia una unidad de trabajo cuando la anterior acaba por otro proceso que no sea la finalizacin del proceso de aplicacin. Una unidad de trabajo finaliza mediante una operacin de confirmacin, de retrotraccin o por el final de un proceso de aplicacin. La operacin de retrotraccin o confirmacin slo afecta a los cambios realizados en la base de datos durante la unidad de trabajo que finaliza. Mientras estos cambios permanezcan sin confirmar, los dems procesos de aplicacin no pueden percibirlos y pueden restituirse.4 Una vez confirmados, los dems procesos de aplicacin pueden acceder a estos cambios de la base de datos y ya no se pueden restituir mediante una retrotraccin. Los bloqueos adquiridos por el gestor de bases de datos para un proceso de aplicacin se conservan hasta el final de una unidad de trabajo. Son excepciones a esta regla el nivel de aislamiento de estabilidad del cursor, donde el bloqueo se libera cuando el cursor se desplaza de una fila a otra, y el nivel de aislamiento de lectura no comprometida, en el que no se obtienen bloqueos (vea Nivel de aislamiento en la pgina 29).

3. La interfaz CLI de DB2 y el SQL incorporado dan soporte a una modalidad de conexin llamada transacciones concurrentes que da soporte a varias conexiones, cada una de las cuales es una transaccin independiente. Una aplicacin puede tener mltiples conexiones concurrentes con la misma base de datos. Consulte el manual Application Development Guide para obtener detalles sobre el acceso a bases de datos de mltiples procesos. 4. Salvo para el nivel de aislamiento de lectura no comprometida, descrito en Lectura no comprometida (UR) en la pgina 32. Captulo 2. Conceptos

27

El inicio y la finalizacin de una unidad de trabajo define los puntos de coherencia en un proceso de aplicacin. Por ejemplo, el caso de una transaccin bancaria que implica la transferencia de fondos de una cuenta a otra. Una transaccin de este tipo necesitara que dichos fondos se restaran de la

Figura 1. Unidad de trabajo con una sentencia de confirmacin

primera cuenta y se sumaran a la segunda. Despus de esta sustraccin, los datos son incoherentes. La coherencia slo

Figura 2. Unidad de trabajo con una sentencia de retrotraccin

queda restablecida cuando los fondos se han sumado a la segunda cuenta. Cuando se hayan completado los dos pasos, podr utilizarse la operacin de confirmacin para finalizar la unidad de trabajo, con lo que los cambios estarn disponibles para otros procesos de aplicacin.

28

Consulta de SQL

Si se produce una anomala antes de que finalice la unidad de trabajo, el gestor de bases de datos retrotraer los cambios no confirmados para restablecer la coherencia de los datos que se presupone que exista al iniciar la unidad de trabajo. Nota: No se impide nunca que un proceso de aplicacin realice operaciones debido a sus propios bloqueos.5

Nivel de aislamientoEl nivel de aislamiento asociado a un proceso de aplicacin define el grado de aislamiento de dicho proceso de aplicacin respecto a otros procesos de aplicacin que se ejecuten simultneamente. Por lo tanto, el nivel de aislamiento del proceso de aplicacin P especifica: v El grado en el que las filas ledas y actualizadas por P estn disponibles para otros procesos de aplicacin que se ejecutan simultneamente v El grado en el que la actividad de actualizacin de otros procesos de aplicacin que se ejecutan simultneamente puede afe