Está en la página 1de 489

Culpa

de







Base de datos de Oracle de
OCA 11g:
Fundamentos de SQL
I
Gua de examen (Examen
1Z0-051)
SOBRE LOS AUTORES




John Watson (Oxford, el Reino Unido) trabaja para Consultores de direccin BPLC,
dando clases y consultando en todas partes de Europa y frica. l era con la universidad
de Oracle durante varios aos en Sudfrica, y antes de que esto trabajara para varias
compaas, ministerios, y organizaciones no gubernamentales en Inglaterra y Europa. l
es OCP calificado tanto en base de datos como en administracin de Servidor de
Aplicacin. John es el autor de varios libros y numerosos artculos sobre la tecnologa y
tiene 25 aos de la experiencia en ELLO.
Roopesh Ramklass (Sudfrica), OCP, es un especialista de Oracle independiente con
ms de 10 aos de experiencia en una amplia variedad de ELLO entornos. stos incluyen
el diseo de software y el desarrollo, el anlisis de sistemas, courseware desarrollo, y
conferencia. l ha trabajado para el Apoyo de Oracle y ha dado clases en la universidad de
Oracle en Sudfrica durante varios aos. Roopesh es experimentado en direccin y
ejecucin de ELLO proyectos de desarrollo, incluso aprovisionamiento de sistemas de
infraestructura, desarrollo de software, e integracin de sistemas.



Sobre el Redactor Tcnico
Bruce Swart (Sudfrica) trabaja para 2Cana Soluciones y tiene ms de 14 aos de
experiencia en ELLO. Manteniendo un gran inters para otros docentes, l ha realizado
varios papeles incluso developer, analista, jefe de equipo, administrador, director de
proyecto, consultor, y conferenciante. l es OCP calificado tanto en base de datos como
en papeles de developer. l ha dado clases en la universidad de Oracle en Sudfrica
durante varios aos y tambin ha hablado en numerosas conferencias de Oracle User
Group locales. Su pasin ayuda a otros a conseguir la grandeza.













Copyright 2008 por El Clic de McGraw-Hill Companies, Inc aqu para trminos de uso.








Base de datos de Oracle de
OCA 11g:
Fundamentos de
SQL I
Gua de examen (Examen
1Z0-051)





John Watson
Roopesh Ramklass









Esta publicacin y CD pueden ser usados en estudiantes asistentes para prepararse
para la Base de datos de Oracle OCP 11g: Fundamentos de SQL I examen. Ni Oracle
Corporation ni McGraw-Hill Companies garantizan que el uso de esta publicacin y CD
asegurar el paso del examen relevante.

Nueva York Chicago San Francisco Lisboa Londres Madrid
Ciudad de Mxico Milano Nueva Delhi San Juan Sel Singapur Sydney Toronto
Copyright 2008 por McGraw-Hill Companies, Inc. Reservados todos los derechos. Fabricado en los Estados Unidos de Amrica. Excepto
como permitido bajo la Ley de derechos de autor de los Estados Unidos de 1976, ninguna parte de esta publicacin puede ser reproducida o
distribuida en cualquier forma o por cualquier medio, o almacenada en una base de datos o sistema de recuperacin, sin el permiso escrito
previo del editor.

0-07-164380-X

El material en este eBook tambin aparece en la versin de letra de este ttulo: 0-07-159786-7.

Todas las marcas registradas son marcas registradas de sus dueos respectivos. Ms bien que poner un smbolo de marca registrada despus
de cada acontecimiento de un nombre que tiene marca registrada, usamos nombres de una moda editorial slo, y a la ventaja del dueo de
marca registrada, sin la intencin de la infraccin de la marca registrada. Donde tales designaciones aparecen en este libro, ellos han sido
imprimidos con letras maysculas iniciales.

McGraw-Hill eBooks est disponible con descuentos de cantidad especiales para usar como premios y promociones de ventas, o para el uso
en programas de capacitacin corporativos. Para ms informacin, por favor pngase en contacto con George Hoare, Ventas Especiales, en
george_hoare@mcgraw-hill.com o (212) 904-4069.

TRMINOS DE USO

Esto es una obra con derechos de autor y McGraw-Hill Companies, Inc. ("McGraw-Hill") y sus licenciadores reservan todos los derechos
en y al trabajo. El uso de este trabajo es sujeto a estos trminos. Excepto como permitido bajo la Ley de derechos de autor de 1976 y el
derecho de almacenar y recuperar una copia del trabajo, usted no puede descompilar, desmontar, invertir al ingeniero, reproducir, modificar,
crear trabajos derivados basados en, transmitir, distribuir, diseminar, vender, publicar o sublicenciar el trabajo o cualquier parte de l sin el
consentimiento previo de McGraw-Hill. Usted puede usar el trabajo para su propio uso privado y no comercial; cualquier otro uso del trabajo es
estrictamente prohibido. Su derecho de usar el trabajo puede ser terminado si usted deja de cumplir con estos trminos.

EL TRABAJO ES PROPORCIONADO "COMO ES." McGRAW-HILL Y SUS LICENCIADORES NO HACEN NINGUNAS GARANTAS
O GARANTAS EN CUANTO A LA EXACTITUD, SUFICIENCIA O COMPLETO DE O RESULTADOS PARA SER OBTENIDOS DE
USAR EL TRABAJO, INCLUSO CUALQUIER INFORMACIN A QUE PUEDAN TENER ACCESO A TRAVS DEL TRABAJO VA
EL ENLACE O POR OTRA PARTE, Y EXPRESAMENTE RECHAZAR CUALQUIER GARANTA, EXPRESO O IMPLICADO,
INCLUSO, PERO NO LIMITADOS CON GARANTAS IMPLCITAS DE COMERCIABILIDAD O APTITUD PARA UN
PROPSITO PARTICULAR. McGraw-Hill y sus licenciadores no garantizan o garantizan que las funciones contenidas en el trabajo
cumplirn con sus requisitos o que su operacin ser ininterrumpida o error libre. Ni McGraw-Hill ni sus licenciadores deben ser obligados a
usted o alguien ms para cualquier inexactitud, error u omisin, sin tener en cuenta la causa, con el trabajo o para cualquier dao que resulta
de all. McGraw-Hill no tiene ninguna responsabilidad del contenido de cualquier informacin tenida acceso a travs del trabajo. De
ninguna manera van McGraw-Hill y/o sus licenciadores ser obligados de cualquier dao indirecto, secundario, especial, punitivo,
consiguiente o similar que resulte del uso de o inhabilidad de usar el trabajo, aun si alguno de ellos ha sido informado de la posibilidad de tales
daos. Esta limitacin de la responsabilidad debe aplicarse a cualquier reclamacin o causar que si tal reclamacin o causa se levantan en
contrato, agravio o por otra parte.

DOI: 10.1036/0071597867
Con gracias a Silvia para hacer vida de valor de vida.
John -

Ameetha, usted ha sido maravillosamente soportante y quiero a
gracias para cada momento que usted comparte conmigo.
-Roopesh
Esta pgina intencionadamente se dej en blanco
CONTENIDO DE UN VISTAZO





1 Oracle Server y el Paradigma Relacional .......... 1

2 Extraccin de datos Usando la sentencia SQL Select ............... 51

3 Restriccin y Ordenacin de Datos ................................. 103

4 Funciones de fila sola ...................................... 169

5 Utilizacin de Funciones de Conversin y Expresiones Condicionales 227

6 Obtencin de Datos Agregados Usando las Funciones de Grupo........... 273

7 Pruebas Datos de Mltiples Tablas .......................... 309

8 Utilizacin de Subconsultas para Solucionar problemas ........................... 357

9 Utilizacin de los Operadores SET ..................................... 381

10 Manipulacin de Datos ......................................... 403

11 Utilizacin Select de DDL para Crear y Manejar Tablas ............. 449

12 Creacin de Otros Objetos de Esquema .............................. 487

Apndice ................................................ 533

Glosario ................................................. 537

ndice .................................................... 555










vii
Esta pgina intencionadamente se dej en blanco
Para ms informacin sobre este ttulo, haga clic aqu





CONTENIDO




Introduccin........................................ xix

1 Oracle Server y el Paradigma Relacional........................ 1
Posicin Server Technologies............................. 3
La Arquitectura de Servidor de Oracle....................... 3
El Servidor de Aplicacin de Oracle........................ 5
Oracle gerente de Empresa............................ 7
Grid Informtica.................................... 8
Exercise 1-1: Investigue Su Base de datos y
Entorno de aplicacin.......................... 9
Herramientas de desarrollo y Lenguajejes..................... 9
Entienda Estructuras Relacionales............................. 10
Filas y Tablas.................................... 11 Normalizacin de
Datos................................. 14
Ejercicio 1-2: Realice un Extenso
Anlisis relacional............................... 20
Concepto del lenguajeje SQL................................ 23
Estndares de SQL..................................... 23
Comandos de SQL.................................... 23
Un Lenguajeje orientada al conjunto............................. 25
Use las Herramientas de Cliente....................................... 26
SQL*Plus......................................... 26
SQL Developer..................................... 33
Cree los Esquemas de Pruebas........................... 37
Usuarios y Esquemas................................. 38
Esquemas OE y HR ............................ 38
Creacin de Esquema de pruebas...................... 42
Taladradora De dos minutos................................... 45
Q&A TEST.......................................... 46



ix
x
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Gua de Examen (Examen 1Z0-051)



Pregunta de laboratorio...................................... 48
m Respuestas de Prueba................................... 49
Respuesta de laboratorio........................................ 50





2 Extraccin de datos Usando la sentencia SQL Select ... 51
Capacidad de la sentencia SQL Select ................
Introduccin de la sentencia de SQL Select................
El Comando DESCRIBE table......................
se entrenan 2-1: Descripcin del Esquema HR................................
Capacidades de la Select
Ejecucin de una sentencia Select bsica...........................
Sintaxis de la Select SENTENCIA Primitiva............
Las reglas estn hechas para ser seguidas.......................
Ejercicio 2-2: Contestacin a Nuestro Primer
Preguntas con SQL...............................
Expresiones de SQL y Operadores......................
el.. NULO no Es Nada...................................
Ejercicio 2-3: Experimentacin con
Expresiones y la Comando DUAL....................
Taladradora De dos minutos................................... Q&A M
Prueba..........................................
Pregunta de laboratorio...................................... m Respuestas de
Prueba................................... Respuesta de
laboratorio........................................
52 52 53

55 57 59 59 64

67 70 81

86 90 92 94 96 98

3 Restriccin y Comandoacin de Datos ..................... 103
Limite las Filas Recuperadas por una Pregunta..........................
EL DONDE clusula................................. Operadores de
comparacin............................... Ejercicio 3-1: Utilizacin del Operador
PARECIDO............... Operadores booleanos................................ Reglas
de precedencia de.....................................
Clasifique las Filas Recuperadas por una Pregunta...........................
El PEDIDO POR Clusula.............................. se entrenan 3-2:
Comandoacin de Utilizacin de Datos
el PEDIDO POR Clusula............................
104

141
Contenido



Substitucin de signo ""....................................
Variables de substitucin............................... Defina y Verifique...................................
Ejercicio 3-3: Utilizacin de Substitucin de Signo ""...........
Taladradora De dos minutos................................... Q&A M
Prueba..........................................
Pregunta de laboratorio...................................... m Respuestas de
Prueba................................... Respuesta de laboratorio........................................
xi



142 353111494

4 Funciones de fila sola ........................... 169
Describa Diversos tipos de Funciones Disponibles en SQL............
Definicin de una Funcin................................. Tipos de Funciones..................................
Use Carcter, Nmero, y Funciones de Fecha
en Select SENTENCIAS...................................
La utilizacin de Funciones de Conversin de Instancia de Carcter............. Ejercicio 4-1:
Utilizacin de las Funciones de Conversin de Instancia..... Utilizacin de Funciones de
Manipulaciones de Carcter............... Ejercicio 4-2: Utilizacin de las Funciones de
Manipulacin de Instancia... Utilizacin de Funciones Numricas............................ que
trabaja con Fechas................................. Utilizacin de Funciones de
Fecha.............................. los.. se entrenan 4-3: Utilizacin de las Funciones de
Fecha...............
Taladradora De dos minutos................................... Q&A M
Prueba..........................................
Pregunta de laboratorio...................................... m Respuestas de
Prueba................................... Respuesta de laboratorio........................................
170170174

177

5 Utilizacin de Funciones de Conversin y
Expresiones condicionales....................... 227
Describa Diversos tipos de Conversin
Funciones Disponibles en SQL................................
Funciones de conversin............................... Use el TO_CHAR, TO_NUMBER,
y Funciones de Conversin de TO_DATE.......................
Utilizacin de las Funciones de Conversin.......................
228228

231232
xii
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Gua de Examen (Examen 1Z0-051)



Ejercicio 5-1: Convertir Fechas en Carcteres
La utilizacin de la Funcin de TO_CHAR.....................
Aplique Expresiones Condicionales en una Select SENTENCIA...........
Funciones que anidan................................... Ejercicio 5-2: Utilizacin NULLIF
y NVL2
para Lgica Condicional Simple....................... Funciones
condicionales............................... Ejercicio 5-3: Utilizacin la Funcin
DECODIFICAR...........
Taladradora De dos minutos...................................
Q&A M Prueba..........................................
Pregunta de laboratorio...................................... m Respuestas de
Prueba................................... Respuesta de laboratorio........................................

6 Obteniendo de Utilizacin de Datos Agregada





239245245

251
las Funciones de Grupo.......................... 273
Describa las Funciones de Grupo................................
Definicin de Funciones de Grupo......................... Tipos y Sintaxis de
Funciones de Grupo...................
Identifique las Funciones de Available Group........................
Utilizacin de las Funciones de Grupo........................... Ejercicio 6-1:
Utilizacin de las Funciones de Grupo............. Funciones de Nested
Group.............................
Datos de grupo Usando el GRUPO POR Clusula......................
Creating Groups de Datos............................. El GRUPO POR
Clusula.............................. que se agrupa por Columnas
Mltiples...................... los.. se entrenan 6-2: Agrupacin de Datos
Basados
en Columnas Mltiples............................ los.. incluyen o Excluyen
Filas Agrupadas Usando la Clusula que TIENE......
Resultados de Restricting Group............................ la Clusula que
TIENE.............................. los.. se entrenan 6-3: Utilizacin la Clusula
que TIENE.............
Taladradora De dos minutos................................... Q&A M
Prueba..........................................
274 274

292 294 844212087
Contenido



Pregunta de laboratorio...................................... m Respuestas de
Prueba................................... Respuesta de laboratorio........................................
xiii



305306308

7 Pruebas de Datos de Tablas Mltiples .............. 309
Escriba Select SENTENCIAS a Datos de Acceso de
Ms de Un Table Using Equijoins y Nonequijoins........
Tipos de Junturas...................................... que se afilia a Tablas Usando Sintaxis de
SQL:1999.................. que califica a Nombres de Columna Ambiguos.................. la
Clusula de JUNTURA NATURAL......................... Ejercicio 7-1: Utilizacin de la
JUNTURA NATURAL............ la JUNTURA Natural USANDO Clusula..................... La
JUNTURA Natural EN Clusula......................... Ejercicio 7-2: Utilizacin del
NATURAL
Clusula de JOIN.ON................................ de N-camino Junturas y Condiciones de Juntura
Adicionales............. Nonequijoins......................................
Afliese a una Comando a S Usando una Autojuntura..........................
La conexin a una Comando a S Usando la Clusula JOIN.ON.... los.. se entrenan 7-3:
Realizacin de una Autojuntura..................
Datos de vista que no Encuentran una Condicin de Juntura
Usando Junturas Externas.....................................
Interior contra Junturas Externas............................ el.. dej Junturas
Externas.................................. derecho de.. Junturas Externas...................................
Junturas Externas llenas.................................. los.. se entrenan 7-4: Realizacin de una
Juntura externa...............
Genere un producto Cartesiano de Dos o ms Tablas..............
La creacin de productos Cartesianos Usando Junturas Enfadadas.......... los.. se entrenan
7-5: Realizacin de una Juntura enfadada................
Taladradora De dos minutos................................... Q&A M
Prueba..........................................
Pregunta de laboratorio...................................... m Respuestas de
Prueba................................... Respuesta de laboratorio........................................
310

324

334 335 336 337 991325235
xiv
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Gua de Examen (Examen 1Z0-051)



8 Utilizacin de Subconsultas para Solucionar problemas ..............
357
Defina Subconsultas......................................... 358
Ejercicio 8-1: Tipos de Subpregunta..................... 359 Describen los Tipos de
problemas Que las Subconsultas Pueden Solucionar..... 360
Uso de un SET de Resultado de Subpregunta con Objetivos de Comparacin.....
360 Transformacin de Estrella................................. 361 Generan una
Comando de la Cual SELECCIONAR............... 362 Generan Valores para la
Proyeccin........................ 362 Generan Filas para ser Pasadas a una Select
DML......... 363 Ejercicio 8-2: Subconsultas Ms complejas..............
363
Liste los Tipos en una lista de Subconsultas.................................. 364
Solo - y Subconsultas de Fila mltiple................... 365 Subconsultas
Correlacionadas............................... 366 Ejercicio 8-3: Investigue el Diferente
Tipos de Subpregunta................................ 367 Escriben Subconsultas de Fila
mltiple y Fila sola................. 369
Ejercicio 8-4: Escriba una Pregunta Que es Confiable
y Usuario Simptico................................. 370
Taladradora De dos minutos................................... 374 Q&A M
Prueba.......................................... 375
Pregunta de laboratorio...................................... 378 M Respuestas de
Prueba................................... 379 Respuesta de
Laboratorio........................................ 380

9 Utilizacin de los Operadores de SET ........................ 381
Describa a los Operadores de SET.................................. 382
SETs y Diagramas de Venn.............................. 383 Principios generales de
Operador de SET....................... 384 Ejercicio 9-1: Describa a los
Operadores de SET.............. 385
Use a un Operador de SET para Combinar Preguntas Mltiples
en una Pregunta Sola...................................... 386
La UNIN TODO el Operador........................... 387 El Operador de
UNIN............................... 387 El Operador CRUZAR...........................
388 el MENOS Operador............................... 389 Ejemplos Ms
complejos............................. 390 Ejercicio 9-2: Utilizacin de los
Operadores de SET................ 392
Contenido



Controle el Pedido de Filas Devueltas..........................
xv



393
Ejercicio 9-3: Controle el Pedido de Filas Devueltas ..... 394
Taladradora De dos minutos................................... Q&A M
Prueba..........................................
Pregunta de laboratorio...................................... m Respuestas de
Prueba................................... Respuesta de laboratorio........................................
396 397

10 Datos de Manipulacin ............................. 403
Describa Cada Lenguaje de Manipulacin de Datos (DML) Select.....
INSERCIN........................................ ACTUALIZACIN de...........................................
BORRAR........................................ FUSIN de............................................
TRUNCADO...................................... DML Frainstancias de Select.............................
Filas de insercin en una Comando.....................................
Ejercicio 10-1: Use el Comando de INSERCIN.......... Filas de actualizacin de.. en una
Comando.....................................
Ejercicio 10-2: Use el Comando de ACTUALIZACIN........... Borre Filas de una
Comando...................................
Borrar Filas con BORRAR...................... los.. se entrenan 10-3: Use el BORRAR
Comando........... Borrar Filas con TRUNCADO.....................
FUSIN..........................................
Transacciones de control.......................................
Transacciones de base de datos............................... Las Select de Control de
Transaccin................... Ejercicio 10-4: Use DESTINAR y
ROLLBACK Manda...........................
Taladradora De dos minutos................................... Q&A M
Prueba..........................................
Pregunta de laboratorio...................................... m Respuestas de
Prueba................................... Respuesta de laboratorio........................................
404 405 406 407 408 409 409 413 417 628473423

586195184
xvi
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Gua de Examen (Examen 1Z0-051)



11 Utilizacin Select de DDL a
Cree y Maneje Tablas ..................... 449
Clasifique los Objetos de Base de datos Principales......................... 450
Tipos de objeto....................................... 450 Usuarios y
Esquemas.................................. 452 Objetos de Esquema de
Nombramiento............................. 453 Objeto Namespaces.................................
455 Ejercicio 11-1: Determine Que Objetos
Son Accesibles a Su Sesin...................... 455 Examinan la Estructura de
Comando.................................. 456
Ejercicio 11-2: Investigue Estructuras de Comando............ 457 Lista los Tipos
de datos Que estn Disponibles para Columnas.............. 457
Ejercicio 11-3: Investigue los Tipos de datos
en el esquema de HORA................................ 461 Crean una Comando
Simple...................................... 462
La creacin de Tablas con Especificaciones de Columna............. 462 Tablas
de Creacin de Subconsultas....................... 464 Definiciones de Comando
Cambiadoras despus de Creacin................ 465 Cada y Truncamiento de
Tablas....................... 466 Ejercicio 11-4: Cree Tablas.......................
467
Explique Como Coacciones Son Creadas
en el momento de Creacin de Comando.............................. 469
Los Tipos de Coacciones............................. 470 Coacciones de
Definicin................................ 473 Ejercicio 11-5: Trabajo con
Coacciones................ 476
Taladradora De dos minutos................................... 478 Q&A M
Prueba.......................................... 479
Pregunta de laboratorio...................................... 482 M Respuestas de
Prueba................................... 483 Respuesta de
Laboratorio........................................ 484

12 Creacin de Otros Objetos de Esquema .................. 487
Cree Vistas Simples y Complejas............................ 488
Por qu Vistas de Uso en Absoluto?............................... 489 Vistas Simples
y Complejas........................... 492 CREAN LA VISTA, CAMBIAN
VISTA, y VISTA DE GOTA....... 493 Ejercicio 12-1: Cree
Vistas........................ 496
Contenido



Recupere Datos de Vistas...................................
Ejercicio 12-2: Use Vistas........................ los.. crean Sinnimos Privados y
Pblicos...........................
Ejercicio 12-3: Cree y Sinnimos de Uso............. Cree, Mantenga, y Secuencias de
Uso..........................
Creacin de Secuencias................................. Utilizacin de Secuencias.................................. los..
se entrenan 12-4: Cree y Secuencias de Uso.............
Cree y Mantenga ndices................................
Para qu los ndices Son...............................
xvii



497
Tipos de ndice ..................................... 511
La creacin y la Utilizacin de ndices........................... La modificacin y la Cada de
ndices....................... Ejercicio 12-5: Creacin de ndices.....................
Taladradora De dos minutos................................... Q&A M Prueba..........................................
Pregunta de laboratorio...................................... m Respuestas de Prueba...................................
Respuesta de laboratorio........................................
515

Apndice ..................................... 533

Glosario ...................................... 537

ndice ........................................ 555
Esta pgina intencionadamente se dej en blanco



















INTRODUCCIN





Captulo 1:
Oracle Server Technologies y el Paradigma Relacional

El conjuntos de productos de tecnologas de servidor de Oracle es ms que una base de
datos. Tambin est el Servidor de Aplicacin de Oracle y el Oracle Enterprise Manager.
Tomados en conjunto, stos son las tecnologas de servidor que conforman el GRID,
grid es un entorno emergente para manejar al completo entornos IT y proporcionar
recursos a peticin de los usuarios.
El paradigma relacional para la gestin de base de datos de informacin
fue la primera
formalizados en los aos 60 y ha sido constantemente perfeccionado desde
entonces. Un paradigma es
un conjunto de normas acordadas por todas las partes interesadas que
especifica cmo los problemas
debe entenderse y abordarse. Existen otros paradigmas dentro de los datos
procesar mundo. La base de datos Oracle es una implementacin de un
Relacional
Database Management System (RDBMS) que se ajusta al paradigma
relacional,
pero luego va ms all para incluir algunos aspectos de otros paradigmas
como
modelos jerrquicos y orientada a objetos

El lenguajeje de consulta estructurado (SQL, que se pronuncia "sequel")
es una organizacin internacional
estndar para la gestin de los datos almacenados en bases de datos
relacionales. Oracle Database 11g ofrece
una aplicacin de SQL que es en general compatible con el estndar actual,
que es SQL-2003. Los detalles completos de la Conformidad en el Apndice
B del SQL
Referencia del lenguajeje, que es parte de la biblioteca de documentacin
de Oracle Database.
Como regla general, se puede suponer Compatibilidad.
A lo largo de este libro, dos herramientas se utilizan ampliamente para
ejercicios: SQL * Plus y
SQL Developer. Estas son las herramientas que los desarrolladores utilizan
a diario en su trabajo. la
ejercicios y muchos de los ejemplos se basan en dos conjuntos de
demostracin de datos,
conocidos como los esquemas de recursos humanos y la OE. Hay
instrucciones sobre cmo iniciar la
herramientas y crear los esquemas de demostracin, aunque es posible que
necesite la ayuda de
el administrador de base de datos local para empezar.


Este captulo consiste en descripciones resumidas de Oracle Server Technologies; los
conceptos detrs del paradigma relacional y normalizacin de datos en estructuras
relacionales; el lenguaje SQL; las herramientas de cliente; y los esquemas de pruebas.





OBJETIVO DE CERTIFICACIN 1.01


Posicin Server Technologies
Posicin Server Technologies
3
Hay una familia de productos que componen las tecnologas de servidor de Oracle:

La Base de datos de Oracle
El Servidor de Aplicacin de Oracle
El Enterpise Manager de Oracle
Varios herramientas de desarrollo de aplicaciones y lenguajes

Estos productos tienen cada uno una posicin en el conjunto de productos de Oracle.
La base de datos es el repositorio para datos y el motor que maneja el acceso a ello. El
Servidor de Aplicacin de Oracle ejecuta el software de la parte de usuarios finales:
esto genera el interface de usuario en la forma de ventanas mostradas en los navegadores
de los usuarios y presenta llamadas a extraccin y modificacin de datos a la base de
datos para su ejecucin. El Enterprise Manager de Oracle es una herramienta de
administracin integral para controlar, gestionar y realizar el ajuste de los procesos de
Oracle y tambin (a travs de plug-ins) de productos de terceros. Por ltimo,hay
herramientas y lenguajes para el desarrollo de aplicaciones, ya sea en aplicaciones
que ejecutar en mquinas de los usuarios finales en el modelo cliente-servidor, o
aplicaciones que se ejecutan centralizada en servidores de aplicaciones. La
combinacin de las tecnologas de servidor y las herramientas de desarrollo
configuran una plataforma para desarrollo y entrega de aplicaciones

La Arquitectura de Servidor de Oracle
Una base de datos de Oracle es un conjunto de archivos en el disco. Estos existen hasta
que estos archivos sean deliberadamente borrados. No hay ningunos lmites prcticos en
el tamao y el nmero de estos archivos, y por lo tanto no hay lmites prcticos en el
tamao de una base de datos. El acceso a la base de datos es a travs de la instancia de
Oracle. La instancia es un conjunto de estructuras de memoria y procesos: estos existen
en la unidad (es) centrales de proceso y en la memoria del nodo de servidor, y esta
existencia es temporal. Una instancia puede ser arrancada y parada. Los usuarios de la
base de datos establecen sesiones contra la instancia, y la instancia entonces maneja
todos los
4
Captulo 1:
Oracle Server Technologies y el Paradigma Relacional



accesos a la base de datos. Es absolutamente imposible en el entorno de Oracle para cualquier usuario tener
el contacto directo con la base de datos. Uns instancia de Oracle con una base de datos de Oracle configura
un servidor de Oracle.
El modelo de procesamiento puesto en prctica por el servidor de Oracle es el del procesamiento
cliente-servidor, a menudo denominado como de dos capas. En el modelo cliente-servidor, la generacin
del interface de usuario y la mayor parte de la lgica de aplicacin estn separadas de la gestin de los














datos. Para una aplicacin desarrollada usando SQL (como sern todas las aplicaciones de base de datos
relacionales ), esto significa que la parte de cliente genera los comandos de SQL, y la parte de servidor los
ejecuta. Esta es la arquitectura cliente-servidor bsica, con (por regla general) una red de rea local entre las
dos partes. El protocolo de comunicaciones de red usado entre el proceso de usuario y el proceso de servidor
es el protocolo patentado del Oracle, Oracle NET.
La parte de cliente consiste de dos componentes: los usuarios y los procesos de usuario. La parte de
servidor tiene tres componentes: el proceso servidor que ejecuta el SQL, el instancia, y la base de datos en s
misma. Cada usuario se relaciona con un proceso de usuario. Cada proceso de usuario se relaciona con un
proceso de servidor, por lo general a travs de una red de rea local. Los procesos de servidor se relacionan
con la instancia, y la instancia con la base de datos. La figura 1-1 muestra esta relacin esquemticamente.

Una sesin es un proceso de usuario que se comunica con un proceso de servidor. Habr por lo general un
proceso de usuario por usuario y un proceso de servidor por proceso de usuario. Los procesos de servidor y
usuario que configuran las sesiones son lanzados a peticin por usuarios y terminados cuando ya no es
requerido; esto es el ciclo de log-on y log-off en el sistema. Los procesos de instancia y las estructuras de
memoria son lanzados por el administrador de base de datos y persisten hasta que el administrador
deliberadamente los termine; esto es el ciclo de cierre e inicializador de la base de datos.
El proceso de usuario puede ser cualquier software de lado del cliente que sea capaz de la conexin a un
proceso de servidor de Oracle. En todas partes de este libro, dos procesos de usuario sern usados
extensivamente: SQL*Plus y Developer SQL. stos son procesos simples proporcionados por Oracle para
establecer sesiones contra un servidor de Oracle y publicar ad hoc SQL.

Componentes de la parte cliente componentes de la parte servidor






Usuario Proceso usuario Proceso servidor Instancia


Componentes de la sesin

Base de Datos

Figura 1.1 La conexin indirecta entre un usuario y una base de datos



Una alternativa extensamente usada es el TOAD de QUEST Software, aunque este es un
software licenciado y antes de usarlo siempre hay que asegurar que la licencia es legal. Las
aplicaciones de usuario final tendrn que ser escritas con algo ms sofisticado que estas
herramientas, algo capaz de gestionar ventanas, mens, dilogos en pantalla etctera. Tal
aplicacin podra ser escrita con los productos de Oracle developper Suite ; con
Microsoft Access conectado con el drivers ODBC de Oracle; con cualquier lenguaje de
tercera generacin (como C o Java) al que Oracle ha provisto con una biblioteca de
llamadas a funciones que le dejarn interactuar con el servidor o con cualquier tipo de
herramientas de terceros compatibles con Oracle. El proceso de usuario que se conecta no
es realmente con el servidor de Oracle . Cuando un usuario final rellena un impreso y hace
clic en un botn Submit, el proceso de usuario generar una sentencia de INSERCIN y
lo enviar a un proceso de servidor para la ejecucin contra la instancia y la base de datos.
Por lo que corresponde al servidor est sentencia de INSERCIN podra haber sido
directamente tecleada en SQL*Plus como lo que es conocido como SQL ad hoc.
Nunca olvide que toda la comunicacin con un servidor de Oracle sigue este modelo
cliente-servidor . La separacin del cdigo de usuario del cdigo de servidor se remonta a
las primeras versiones de la base de datos y es inevitable. Aun si el proceso de usuario se
ejecuta en la misma mquina que el servidor, la arquitectura cliente-servidor todava se
cumple, y los protocolos de red todava son usados para las comunicaciones entre los dos
procesos. Las aplicaciones que se ejecutan en un entorno de servidor de aplicacin
(descrito en la siguiente seccin) tambin siguen el modelo cliente-servidor para su
acceso a la base de datos.
La forma ms simple del servidor de base de datos es una instancia conectada a una
base de datos, pero en un entorno ms complejo una base de datos puede ser abierta por
muchas instancias. Esto es conocido como un RAC. RAC puede traer muchas ventajas
potenciales, que pueden incluir la escalabilidad, el rendimiento, y tiempo de
indisponibilidad cero. La capacidad de aadir dinmicamente ms instancias que se
ejecutan en ms nodos a una base de datos es una parte principal de la contribucin de la
base de datos.

El Servidor de Aplicacin de Oracle
Con la aparicin de la Web como la plataforma de comunicaciones estndar para la entrega de
aplicaciones a usuarios finales ha surgido la necesidad de servidores de aplicacin. Un servidor de
aplicacin reemplaza el software del lado del cliente tradicionalmente instalado en el terminal del usuario
final; esto ejecuta aplicaciones centralizadas, presentndolas a los usuarios en ventanas mostradas en los
navegadores web locales. Las aplicaciones hacen el uso de datos almacenado en uno o varios servidores de
base de datos.



El Servidor de Aplicacin de Oracle es una plataforma para desarrollo, despliegue, y gestion de
aplicaciones web. Una aplicacin web puede ser definida como cualquier aplicacin con la cual los usuarios
se comuniquen va HTTP. Las aplicaciones web por lo general se ejecutan en al menos tres capas: una capa
de base de datos que maneja el acceso a los datos, la capa de cliente (a menudo un navegador web) que
gestiona la ventana local para comunicaciones con los usuarios, y una capa de aplicacin en el medio que
ejecuta la lgica de programa que genera el interface de usuario y las llamadas SQL a la base de datos.
Las aplicaciones web pueden ser desarrolladas con varias tecnologas, la predominante entre ellas es
Java. Las aplicaciones escritas en Java deberan cumplir con la especificacin J2EE (Java 2 Edicin de
Empresa) estndar, que define como las aplicaciones deberan ser empaquetadas y desplegadas. J2EE y los
estndares relacionados son controlados por Sun Microsystems y aceptados por prcticamente todos los
desarrolladores de software. El Servidor de Aplicacin de oracle es un servidor de aplicacin compatible con
J2EE. La implementacin de oracle de los estndares permite el balanceo automtico de carga y la tolerancia
a fallos por medio del uso de clusters J2EE en diferentes mquinas. El clusterizar permite virtualizar la
provisin del servicio de aplicacin; los usuarios solicitan una aplicacin que podra estar disponible en
varias sitios, y el cluster trabaja sirviendo la peticin del sitio ms ptimo. Si un sitio falla, los otros tomarn
su carga, y ms recursos pueden ser puestos a disposicin de una aplicacin si es necesario. La capacidad de
separar la peticin de un servicio de su sitio desde la cual es servida y aadir o eliminar servidores J2EE de
un cluster dinmicamente es una parte principal de la contribucin del Servidor de Aplicacin de Oracle al
GRID.

Es importante notar que el compromiso del Oracle a las normas internacionales es muy fuerte. Las
aplicaciones que se ejecutan en el entorno de Servidor de Aplicacin de Oracle pueden conectar a
cualquier base de datos para la cual haya drivers compatibles con Java; no es necesario usar una base de
datos de Oracle. Las aplicaciones desarrolladas con los conjuntos de herramientas del Servidor de
Aplicacin de Oracle pueden ser desplegadas en un servidor de aplicacin de terceros compatible con J2EE.

El modelo de procesamiento ms simple de aplicaciones web es tres capa: una capa de cliente que maneja
el interface de usuario; una capa media que genera el interface y enva los comandos SQL a la capa de datos;
y una capa de datos que maneja los datos s mismo. En el entorno de Oracle, la capa de cliente ser un
navegador (como Mozilla o Microsoft Internet Explorer) que se maneja la gestin de la ventana local,
controla el teclado, y rastrea movimientos de ratn. La capa media ser un Servidor de Aplicacin de Oracle
que ejecuta el software (probablemente escrito en Java) que genera las ventanas enviadas a la capa de
cliente para la visualizacin y los comandos SQL enviados a la capa de datos para su ejecucin. La capa de
datos ser un servidor de Oracle: una instancia y una base de datos. En este entorno de tres capas, hay dos
tipos de sesiones: sesiones de usuario final de la capa de cliente a la capa media, y sesiones de base de datos de la
capa media a la capa de datos. Las sesiones de usuario final sern establecidas mediante HTTP. Las sesiones
de base de datos son sesiones cliente-servidor que consisten en un proceso de usuario y un proceso de
servidor,descrito en la seccin anterior.
Es posible para una aplicacin usar un mapeo uno-a-uno de la sesin de usuario final a la sesin de base de
datos: cada usuario, desde su navegador, establecer una sesin contra el servidor de aplicacin, y el servidor
de aplicacin establecer entonces una sesin contra el servidor de base de datos con el nombre del usuario.
Sin embargo, se ha probado que este modelo es muy ineficaz cuando comparado con el modelo de
reutilizacin de conexin. Con la reutilizacin de conexin, el servidor de aplicacin establece un nmero de
sesiones relativamente pequeo de base de datos persistentes y pone a disposicin de las peticines
(haciendo cola de solicitudes si es necesario) a un relativamente gran nmero de sesiones de usuario final
contra el servidor de aplicacin.

Desde el punto de vista de la base de datos, esto no significa ninguna diferencia si un comando SQL
viene de un proceso de lado del cliente, como el SQL*Plus o Microsoft Access o de una sesin reutilizada de
un servidor de aplicacin. En el primer caso, todo el proceso de usuario se encuentra en una mquina; en
ste, el proceso de usuario ha sido dividido en dos capas: una capa de aplicaciones que genera el interface
de usuario y una capa de cliente que lo muestra.

Oracle Enterprise Manager

















El creciente tamao y complejidad de las instalaciones IT hace que la gestin de ellas sea una tarea difcil.
Esto no es sorprendente: nadie ha dicho que la gestin de un entorno eficaz necesariamente debe ser
simple. Sin embargo, las herramientas de gestin pueden hacer la tarea ms fcil y el personal de gestin
ms productiva


FIGURE 1-2


Browser



Browser

Stateful persistent
sessions over Oracle
Net


Browser



Browser
Applicatio
n server
Databas
e
server

Stateless
nonpersistent
sessions over HTTP



El Oracle Enterprise manager se presenta en tres formas:

Control de Base de datos
Control de Servidor de Aplicacin
Grid Control

La parte de enterprise manager de Oracle que viene como Database Control es un instrumento grfico
para la gestin de una base de datos, que puede ser una base de datos en RAC. Este consiste en un proceso de
Java que se ejecuta en la mquina del servidor de base de datos. Los administradores se conectan al Control
de Base de datos mediante un navegador, y el Control de Base de datos entonces conecta al servidor de base
de datos. El Control de base de datos tiene funciones para la gestin en tiempo real y supervisar, ejecutar
trabajos planificados, y avisar de alertas de forma interactiva y por el e-mail.
El Enterprise manager de oracle Application Server Control es un instrumento grfico para manejar una
instancia del servidor de aplicacin o un grupo de instancias. La tecnologa que se agrupa es dependiente de
la versin. Hasta el Servidor de Aplicacin de Oracle 10g Release 2, los servidores de aplicacin
clusterizados fueron manejados como una "granja", con un repositorio de metadatos (tpicamente residente en
una base de datos de Oracle) como el punto de gestin central. Des la release 3en adelante, la tecnologa est
basada en cluster de J2EE , que no es patentado al Oracle.
El enterprise manager de oracle Grid Control globaliza el entorno de gestin. Un repositorio de gestin
(residente en una base de datos de Oracle) y uno o varios servidores de administracin para manejar el entorno
completo: todas las bases de datos y servidores de aplicacin, dondequiera que ellos puedan estar. El Grid
Control tambin puede manejar los nodos, o mquinas, en las cuales los servidores se ejecutan, as como (a
travs de plug-ins) una amplia gama de productos de terceros Cada nodo administrado se ejecuta un proceso de
agente, que se encarga de controlar el destino gestionada en el nodo: estado de los trabajos en ejecucin en su
contra y presentacin de informes, los niveles de actividad y las condiciones de alerta al servidor(es) de
gestin.
El Grid Control da una vista holstica del entorno y, si est bien configurado, hace la administracin
mucho ms productiva que sin el. Se hace posible para un administrador manejar con eficacia cientos de
servidores.


Computacin grid
Fundamental para el concepto de computacin Grid es la virtualizacin. Esto significa que en todos los
niveles hay una capa de abstraccin entre lo que se pide y lo que se proporciona. Los usuarios finales piden
un servicio de aplicacin y dejan que el GRID calcule qu servidor del cluster de aplicacin J2EE puede
proporcionarla mejor. Los servidores de aplicacin piden un servicio de base de datos y dejan al GRID que
decida de que nodo del RAC los datos mejor pueden ser servidos. Dentro del GRID hay un mapeo de los
posibles servicios a los proveedores de servicios disponibles, y existen algoritmos para la asignacin de la
carga de trabajo y recursos de forma apropiada.



El resultado es que los usuarios finales no tienen ni la capacidad ni la necesidad de
conocer de donde sus recursos de computacin en realidad le estn siendo ofrecidos. La
analoga a menudo es presentada como con el suministro de la electricidad domstica: es suministrado a
peticin, y el dueo de la casa no tiene ninguna forma de saber qu central elctrica le provee actualmente.
El Grid no es exclusivo al Oracle. Al nivel fsico, algn sistema operativo y los vendedores de hardware
proporcionan capacidades parecidas al Grid. stos incluyen la capacidad de dividir a servidores en
mquinas virtuales y dinmicamente aadir o eliminar CPU(s) y RAM de las mquinas virtuales segn la
demanda. Esto es conceptualmente similar al enfoque del Oracle de dinmicamente la asignacin de
servidores de aplicacin y recursos de servidor de base de datos a servicios lgicos. No hay razn por la cual
los dos enfoques no puedan ser combinados. Ambos estn trabajando hacia la misma meta y pueden trabajar
juntos. El resultado debera ser un entorno donde los recursos adecuados estn siempre disponibles a la
carta, sin tener que hacer frente a los problemas de exceso de capacidad en algunos momentos y bajo
rendimiento en otros. Tambin debera ser posible disear un entorno de red sin ningn punto de fallo
nico, logrando as el objetivo de tiempo de actividad del 100 por ciento que est siendo demandada por
muchos usuarios. El desarrollador de aplicaciones SQL no tiene que saber como el Grid ha sido
configurado. El SQL ser invocado de un servidor de aplicacin y ejecutado por un instancia contra una
base de datos: El Grid se encargar de asegurarse de que en cualquier momento hay disponibles pools de
servidores de aplicaciones e instancias de tamao adecuado para la carga de trabajo actual.


Herramientas de desarrollo y Lenguajejes
Las tecnologas de servidor de Oracle incluyen varias utilidades para desarrollar aplicaciones, algunas
existen dentro de la base de datos, otros son externas a ella.

Dentro de la base de datos, es posible usar tres lenguajes. El que es inevitable, y que es el objeto de este
libro, es SQL. SQL es usado para el acceso a los datos, pero no puede ser usado para desarrollar
aplicaciones completas. Este no tiene ninguna funcin para desarrollar interfaces de usuario, y este
tambin carece de las estructuras procesales necesarias de manipular filas individualmente. Los otros dos
lenguajes disponibles dentro de la base de datos llenan estos huecos. Ellos son PL/SQL y Java. PL/SQL es
un lenguaje de la tercera generacin (3GL) patentado por Oracle. Este tiene las construcciones habituales
de procedimiento (if-then-else y looping) y las utilidades para disear el interface de usuario. En el
cdigo de PL/SQL, uno puede insertar llamadas a SQL. As, una aplicacin PL/SQL podra usar SQL
para recuperar una o varias filas de la base de datos, luego realizar varias acciones basadas en su
contenido, y luego crear ms SQL para escribir filas de nuevo a la base de datos. El Java ofrece una
capacidad similar de insertar llamadas de SQL dentro del cdigo Java. Esta es la tecnologa estndar en
industria: cualquier programador de Java debe ser capaz de escribir cdigo que funcione con una base de
datos Oracle (o con cualquier otra base de datos compatible con Java.)

Otros lenguajes estn disponibles para desarrollar aplicaciones cliente-servidor que se ejecutan desde
fuera de la base de datos. Los ms comnmente usados son C y Java, pero es posible usar la mayor parte de
los principales leguajes 3GLs. Para todos estos lenguajes, Oracle Corporation proporciona OCI (Interface de
Llamada de Oracle) bibliotecas que dejan al cdigo escrito en estas lenguajes establecer sesiones contra una
base de datos de Oracle e invocar comandos de SQL.
Muchas organizaciones no querrn usar un lenguaje 3GL para desarrollar aplicaciones de base de datos.
Oracle Corporation proporciona herramientas de desarrollo de aplicaciones rpidas como la Oracle
Developer Suite , y hay tambin muchos productos de tercero. stos pueden hacer que los programadores
sean mucho ms productivos que si ellos trabajaran con un lenguaje 3GL. Como los lenguajes, todos estos
herramientas de desarrollo de aplicaciones terminan por hacer la misma cosa: los comandos de SQL son
enviadas al servidor de base de datos para la ejecucin.



OBJETIVO DE CERTIFICACIN 1.02


Comprendiendo las Estructuras Relacionales
Un punto crtico para entender SQL es la compresin del paradigma relacional y la capacidad de
normalizar datos en estructuras relacionales. La normalizacin es el trabajo de analistas de sistemas, ya que
ellos modelan la informacin comercial en una forma conveniente para almacenar en tablas relacionales. Es
una ciencia que puede ser estudiada durante aos, y hay muchas escuelas del pensamiento que han
desarrollado sus propios mtodos y notas.



Filas y Tablas
El paradigma relacional modela los datos como tablas de dos dimensiones. Una tabla consta de una serie
de filas, cada una consistente en un conjunto de columnas. Dentro de una tabla, todas las filas tienen la
misma estructura de columnas, aunque es posible que en algunas filas algunas columnas puedan tener un
valor nulo. Un ejemplo de una tabla sera una lista de EMPLOYEES, cada empleado representado por una
fila. Las columnas podran ser el nmero de empleado, el nombre, y un cdigo para el departamento para el
cual el empleado trabaja. Cualquier empleado no actualmente asignado a un departamento tendra esta
columna en blanco. Otra tabla podra representar los DEPARTMENTS: una fila por departamento, con
columnas para el cdigo del departamento y el nombre del departamento.
Una nota de terminologa: que Oracle se refiere como a una tabla tambin puede ser llamada una
relacin o una entidad. Las filas son a veces llamadas registros o tuplas, y las columnas pueden ser llamadas
atributos o campos. El nmero de "filas en la tabla" es el "cardinalidad de las tuplas."
Las tablas relacionales se crean con ciertas reglas que restringen y definen los datos. Al nivel de
columna, cada columna debe ser de un cierto tipo de datos, tal como numrico, fecha, o carcter. El tipo de
datos carcter es el ms general, ya que puede aceptar cualquier tipo de datos. Al nivel de fila, por lo general
cada fila debe tener alguna caracterstica que la identifica nicamente: esto podra ser el valor de una
columna, como el nmero de empleado y el nmero de departamento en los ejemplos precedentes, que no
pueden ser repetidos en filas diferentes. Tambin puede haber reglas que definen relaciones entre las tablas,
tal como la regla general de que cada empleado debe tener asignado un cdigo de departamento que puede
ser relacionado con una fila en la tabla de DEPARTMENTS. Lo siguiente son ejemplos de las definiciones
de datos tabuladas:


Tabla DEPARTMENTS:

Column Name Description Data Type Length
DEPTNO Department number Numeric 2
DNAME Department name Character 14

Tabla EMPLOYEES:

Column Name Description Data Type Length
EMPNO Employee number Numeric 4
ENAME Employee name Character 10
DEPTNO Department number Numeric 2

Las tablas podran contener estas filas:
DEPARTMENTS
DEPTNO DNAME
10 ACCOUNTING
20 RESEARCH
30 SALES
40 OPERATIONS

EMPLOYEES:
EMPNO ENAME DEPTNO
7369 SMITH 20
7499 ALLEN 30
7521 WARD 30
7566 JONES 20
7654 MARTIN 30
7698 BLAKE 30
7782 CLARK 10
7788 SCOTT 20


Viendo las tablas, la estructura de dos dimensiones es clara. Cada fila es de longitud fija,
cada columna es de longitud fija (rellenada con espacios cuando sea necesario), y las filas
son delimitadas con una nueva lnea. Las filas se han almacenado con el fin de cdigo, pero
se trata de una cuestin al azar, no de diseo: las tablas relacionales no imponen ningn
orden particular en sus filas. Departamento nmero 10 tiene un empleado y departamento
nmero 40 no tiene ninguno. Los cambios en los datos suelen ser muy eficiente con el
modelo relacional. Los nuevos EMPLOYEES se pueden aadir a la tabla de EMPLOYEES,
o pueden ser trasladados de un departamento a otro simplemente cambiando el valor
DEPTNO en su fila.
Considere una estructura alternativa, donde los datos son almacenados segn el paradigma jerrquico. El
modelo jerrquico fue desarrollado antes del modelo relacional, por motivos de tecnologa. En los primeros
das de informtica, los dispositivos de almacenamiento carecan de la capacidad de mantener muchos
archivos separados que eran necesarios para mantener muchas tablas relacionales. Note que este problema
es evitado en la base de datos de Oracle abstrayendo el almacenamiento fsico (archivos) del
almacenamiento lgico (tablas): no hay ninguna conexin directa entre tablas y archivos y seguramente no
necesita el trazar un mapa de uno a uno. En efecto, muchas tablas pueden ser almacenadas en muy pocos
archivos.
Una estructura jerrquica almacena todos los datos relacionados en una unidad. Por ejemplo, el registro
para un departamento incluira este todo los EMPLOYEES del departamento. El paradigma jerrquico puede
ser muy rpido y muy eficiente en cuanto a espacio. Un acceso a fichero puede ser todo lo que se necesita
para recuperar todos los datos para satisfacer una consulta. Los EMPLOYEES y los DEPARTMENTS
mencionados anteriormente pueden ser almacenados jerrquicamente de la siguiente manera:


10,ACCOUNTING,7782,CLARK
20,RESEARCH,7369,SMITH,7566,JONES,7788,SCOTT
30,SALES,7499,ALLEN,7521,WARD,7654,MARTIN,7698,BLAKE
40,OPERATIONS


En este ejemplo, las filas y las columnas son de la longitud variable. Las columnas son delimitadas con
una coma, filas con una nueva lnea. La extraccin de datos es tpicamente muy eficiente si la consulta puede
desplazarse por la jerarqua: si uno conoce el departamento de un empleado, el empleado puede ser
encontrado rpidamente. Si uno no lo conoce, la recuperacin puede ser lenta. Los cambios en datos pueden
ser un problema si el cambio requiere el movimiento. Por ejemplo, para mover al empleado 7566, JONES de
la RESEARCH a SALES implicara un esfuerzo considerable por parte de la base de datos porque el
movimiento tiene que ser realizarse como un borrado en una lnea y una insercin en otra. Note que en este
ejemplo, mientras es posible tener un departamento sin EMPLOYEES (el departamento de
OPERACIONES) es absolutamente imposible tener un empleado sin un departamento: no hay ningn
lugar donde poner a l o ella. Esto es excelente si hay una regla comercial declarando que todos los
EMPLOYEES deben estar en un departamento, pero no es tan bueno si no es el caso.

El paradigma relacional es muy eficiente en muchos aspectos para muchos tipos de datos, pero no es
apropiado para todas las aplicaciones. Por regla general, un anlisis relacional debera ser el primer enfoque
tomado para el modelado de un sistema. Slo si resulta apropiado debe uno recurrir a estructuras
relacionales. Las aplicaciones donde el modelo relacional ha demostrado ser altamente eficaz incluyen
prcticamente todo el procesamiento de transacciones en lnea (OLTP) y Sistemas de Soporte de
Decisiones (DSS). El paradigma relacional puede ser exigente en sus requisitos de hardware y en la
habilidad necesaria para desarrollar aplicaciones a su alrededor, pero si los datos caben, ha resultado ser el
modelo ms verstil. Puede haber, por ejemplo, problemas causados por la necesidad de mantener los
ndices que mantienen las relaciones entre las tablas y los requisitos de espacio de mantener de mltiples
copias de los datos indexados en los propios ndices y en las tablas en las que residen las columnas. Sin
embargo, el diseo relacional es en la mayora de circunstancias, el modelo ptimo.
Varios editores de software han producido sistemas de administracin de bases de datos que se basan
(con niveles variados de la exactitud) en el paradigma relacional; Oracle es slo uno. La IBM era quizs la
primera compaa para destinar recursos a ello, pero su producto (que ms tarde se desarroll en DB2) no
fue trasladado a plataformas no IBM durante muchos aos. El Servidor SQL de Microsoft es otra base de
datos relacional que ha sido limitada por las plataformas en las cuales se ejecuta. Las bases de datos de
oracle, por el contrario, siempre se han portado a todas las plataformas principales desde la primera versin.
Tal vez sea esto lo que le dio la ventaja de Oracle en el mercado RDBMS.


Resumen del Lenguaje SQL

SQL est definido, desarrollado y controlado por organismos internacionales. Oracle Corporation no
tiene por que ajustarse con el estndar SQL, pero ha decido hacerlo. El lenguaje en s puede considerarse
como algo muy simple (slo hay 16 comandos), pero en la prctica la codificacin SQL puede ser
extraordinariamente complicada.

Estndares de SQL
El Lenguaje de consulta estructurada (SQL) fue inventada primero por un grupo de investigacin de
IBM en los aos 70, pero de hecho Oracle Corporation (entonces comerciando como Relational Software,
Inc.) afirma haber vencido a IBM al llegar al mercado unas semanas antes con la primera versin
comercial: Oracle 2, lanzado en 1979. Desde entonces el lenguaje ha evolucionado enormemente y ya no
es dirigida por ninguna organizacin. SQL es ahora una norma internacional Es administrado por los
comits de ISO y ANSI. ISO es la Organizacin Internacional de Normalizacin, con sede en Ginebra;
ANSI es el American National Standards Institute, con sede en Washington, DC. Los dos organismos
cooperan, y sus normas de SQL son idnticas.

Las primeras versiones de la base de datos de Oracle usaron una implementacin de SQL que tena
algunas desviaciones significativas del estndar. Esto no era porque el Oracle era deliberadamente quera
ser diferente: era por lo general porque Oracle puso en prctica aspectos que estaban por delante del
estndar, y cuando el estndar se puso al corriente, este us una sintaxis diferente. Un ejemplo es la
relacin externa, que Oracle puso en prctica mucho antes que el estndar SQL; cuando el estndar SQL
introdujo la relacin externa, Oracle aadi la compatibilidad a la nueva sintaxis de relacin manteniendo
el soporte a su propia sintaxis patentada. Oracle Corporation garantiza el cumplimiento futuro mediante la
insercin de personal en los diversos comits de la ISO y ANSI y ahora est ayudando a conducir el
estndar SQL adelante.



Mandatos SQL
stos son los 16 comandos de SQL, separados en los grupos comnmente usados:



El Lenguaje de Manipulacin de Datos (DML) comandos:

SELECT
INSERT
UPDATE
DELETE
MERGE

El Lenguaje de Definicin de Datos (DDL) comandos:

CREATE
ALTER
DROP
RENAME
TRUNCATE
COMMENT

El Lenguaje de Control de Datos (DCL) comandos:

GRANT
REVOKE

El Lenguaje de Control de Transaccin (TCL) comandos:

COMMIT
ROLLBACK
SAVEPOINT

El primer comando, SELECT, es el tema principal de los Captulos 2 a 9.
Los comandos de DML restantes son cubiertos en el Captulo 10, junto con los comandos de TCL.
DDL es detallado en los Captulos 11 y 12. DCL, que tiene que ver con la seguridad, slo es brevemente
mencionado: esto ms cae ms en el dominio del administrador de base de datos que de los desarrolladores.




Un Lenguaje orientada al conjunto
La mayor parte de lenguajes 3GLs son procidementales. Los programadores que trabajan en lenguajes
procedimentales especifican que hacer con datos, una fila a la vez. Programadores que trabajan en un
lenguaje orientado a conjuntos dicen lo que ellos quieren hacer a un grupo de filas y dejan el trabajo de como
hacerlo a la base de datos, sin embargo muchas filas estn en el conjunto.
Los lenguajes de procedimientos son por lo general menos eficientes que lenguajes orientadas al
conjunto en cuanto a la gestin de datos, tanto en cuanto al desarrollo como en cuanto a la ejecucin. Una
rutina de procedimiento para recorrer a travs de un grupo de filas y actualizar uno a uno implica muchas
lneas de cdigo, donde SQL puede hacer toda la operacin con un solo comando: aumenta la productividad
de los programadores. Durante la ejecucin del programa, el cdigo procesa la orden en la base de datos sin
ninguna opcin, sino que debe ejecutar el cdigo que se ha escrito. Con SQL, el programador declara lo
que l o ella quieren hacer, pero no como hacerlo: la base de datos tiene la libertad de calcular como mejor
realizar la operacin. Esto dar por lo general mejores resultados.
Donde SQL deja de proveer una solucin completa consiste en que es puramente una lenguaje de
acceso a los datos. La mayor parte de aplicaciones necesitarn construcciones procedimentales, como el
control de flujo: ramificaciones condicionales e iteracin. Ellos tambin tendrn por lo general que control
de pantalla, instalaciones de interface de usuario, y variables. SQL no tiene nada de esto. SQL es un
lenguaje orientado al conjunto capaz nicamente de dar el acceso a los datos. Para el desarrollo de
aplicaciones, uno necesitar por lo tanto un lenguaje procedimental que pueda invocar llamadas de SQL.
Es por lo tanto necesario para SQL trabajar con una lenguaje de procedimientos.
Considere una aplicacin que solicita al usuario un nombre, recupera todas las personas con ese
nombre de una tabla, se le solicita al usuario que elija una de ellas, a continuacin, elimina a la persona
elegida. El lenguaje procesal dibujar una pantalla y generar apremio para un nombre. El usuario
ingresar el nombre. El lenguaje procedimental construir una sentencia SQL select usando el nombre y
enviar la sentencia por medio de una sesin de base de datos al servidor de base de datos para la
ejecucin. El servidor devolver un conjunto de filas (toda la gente con aquel nombre) al lenguaje
procedimental, que formatear el conjunto para la visualizacin al usuario y le solicitar para que elija uno
(o ms) de ellos. El identificador para la persona elegida (o la gente) ser usado entonces para construir
una sentncia SQL de borrado para que el servidor la ejecute. Si el identificador es un identificador nico
(la clave primaria) entonces el conjunto de filas para ser borradas ser un conjunto de slo una fila; si el
identificador es no nico, entonces el conjunto seleccionado para la eliminacin sera ms grande. El
cdigo procedimental no sabr nada sobre el probable tamao de los conjuntos recuperados o borrados.

Uso de las Herramientas de Cliente
Hay numerosos herramientas que pueden ser usados para conectarse a una base de datos de Oracle. Dos
de las ms bsicas son SQL*Plus y SQL Developer. stos son proporcionados por Oracle Corporation y
son absolutamente adecuados para la mayor parte del trabajo que un desarrollador o un administrador de
base de datos tienen que hacer. La opcin entre ellos es en parte un asunto de preferencias personales, en
parte para hacerse con el entorno, y en parte con la funcionalidad. El de SQLDeveloper indudablemente
ofrece mucho ms funcionalidad que SQL*Plus, pero es ms exigente, necesita un terminal grfico,
mientras que SQL*Plus puede ser usado en dispositivos en modo de carcter.
Oracle Corporation tiene una historia de producir herramientas simples para relacionarse con una base
de datos que a los usuarios les disgust y que por lo tanto cay al desuso. Ms recientemente, stos incluyen
la herramienta iSQL*Plus que fue introducida con la versin 9i y abandonada con la versin 11g. La
herramienta que mas ha durado es SQL*Plus, y aunque Oracle Corporation promueva al SQL Developer
muy fuertemente como un remplazo, a toda la gente que trabaja en el entorno de Oracle le aconsejan el
familiarizarse con el.


SQL*Plus
SQL*Plus es una herramienta cliente-servidor para conectar a una base de datos y enviar ad hoc SQL
comandos. Tambin puede ser usada para crear el cdigo de PL/SQL y tiene funciones para formatear
resultados. Est disponible en todas las plataformas a las cuales la base de datos ha sido portada - las
secciones que siguen dan algn detalle de la utilizacin de SQL*Plus en Linux y Windows. No hay ningunas
diferencias significativas con la utilizacin de SQL*Plus en ninguna otra plataforma.
En trminos de arquitectura, SQL*Plus es un proceso de usuario escrito en C. Este establece una sesin
contra una instancia y una base de datos sobre el protocolo de Red de Oracle. Las plataformas para el
cliente y el servidor pueden ser diferentes. Por ejemplo, no hay ninguna razn de no usar SQL*Plus en una
sesin de comandos de Windows para conectar a una base de datos que se ejecuta en un mainframe (o al
revs) a condicin de que las Red de Oracle hayan sido configuradas para hacer la conexin.





SQL*Plus en Linux
El archivo ejecutable SQL*Plus en una instalacin de Linux es sqlplus. LA direccin donde se
encuentre este archivo ser dependiente de la instalacin , pero ser tpicamente algo como:

/u01/app/oracle/product/db_1/bin/sqlplus
Su cuenta de Linux debera ser configurada apropiadamente para ejecutar SQL*Plus. Hay
algunas variables de entorno que tendrn que ser puestas. stos son
ORACLE_HOME
PASO LD_LIBRARY_PATH
La variable ORACLE_HOME seala al directorio de instalacin. Un Oracle HOME es el directorio de
instalacin de software de oracle: elconjunto de archivos y directorios que contienen el cdigo ejecutable y
algunos archivos de configuracin. El PATH debe incluir el directorio de bin en el Oracle Home. El
LD_LIBRARY_PATH debera de incluir el directorio lib en el Oracle Home, pero en la prctica usted puede
trabajar sin poner esto. La figura 1-5 muestra una ventana de terminal de Linux y algunas pruebas para ver si el
entorno es correcto.





















En la Figura 1-5, el primer comando echo comprueba si las tres variables
han sido configuradas correctamente: hay un ORACLE_HOME, y los directorios bin y lib
los cuales se establecen como el primer elemento de las variables PATH y LD_LIBRARY_PATH. A
continuacin, se confirma que el ejecutable SQL * Plus realmente est disponible en el PATH. Finalmente,
SQL*Plus es ejecutado con un nombre de usuario, una contrasea, y un identificador de conexin
pasndoselo en la lnea de comandos. Si las pruebas no devuelven resultados aceptables y SQL*Plus no se
ejecuta deberan de hablar con su administrador de sistema y su administrador de base de datos. Algunos
errores comunes con la entrada en el sistema en s mismo son descritos en la seccin "Creacin y Pruebas de
una Conexin a la base de datos" ms tarde en este captulo.
El formato de la cadena es el nombre de usuario de inicio de sesin de base de datos seguido de una barra
diagonal como carcter delimitador, tras el cual va la contrasea del usuario seguida de un smbolo @ como
delimitador, y por ltimo, una conexin de Oracle NET. En este ejemplo, el nombre de usuario es system y
cuya contrasea es orcle, y la base de datos se identifica mediante ORCL.
Despus de entrar en el sistema, las siguientes lneas del texto muestran la versin de SQL*Plus usado,
que es 11.1.0.6.0, la versin de la base de datos a la cual la conexin ha sido hecha (que resulta ser el
mismo como la versin de la herramienta SQL*Plus), y qu opciones han sido instaladas dentro de la base
de datos. La ltima lnea es prompt al usuario, SQL>, en este punto el usuario puede escribir cualquier
comando SQL*Plus o SQL. Si la entrada al sistema no tiene xito con cualquier nombre de usuario
(probablemente no system) que usted ha sido asignado, deberan hablar de ello con su administrador de
base de datos.

SQL*Plus en Windows Histricamente, siempre haba dos versiones de SQL*Plus para el
Microsoft Windows: la versin en modo carcter y la versin grfica. La versin de carcter es el
ejecutable sqlplus.exe, y la versin grfica era sqlplusw.exe. Con el lanzamiento de la actual
release la versin grfica ya no existe, pero muchos desarrolladores preferirn usarlo y las versiones portadas
con versiones ms antiguas son herramientas absolutamente buenas para trabajar con una base de datos
11g. No hay ningn problema con la mezcla de versiones : un 11g como cliente de SQL*Plus puede conectar
a una base de datos 10g, y cliente en 10g de SQL*Plus puede conectar a una base de datos 11g. Despus de
instalacin por defecto de la base de datos de Oracle o slo del cliente de Oracle en Windows, SQL*Plus
estar disponible como un acceso en el men de INICIO de Windows. La forma de acceso ser como sigue:

1. Comience
2. Programas
3. Oracle-OraDB11g_home1
4. Desarrollo de aplicaciones
5. SQL*Plus


Sin embargo, el paso exacto ser especfico de la instalacin. La figura 1-6 muestra una entrada en el
sistema a una base de datos con SQL*Plus, ejecutando el acceso. La primera lnea del texto muestra la
versin de SQL*Plus, que es la 11.1.0.4.0, y la hora en que el programa fue ejecutado.La tercera lnea de
texto es un smbolo de inicio:

Escriba el nombre de usuario:
seguido de la de cadena de conexin en el sistema que se introducido manualmente, que era

system/oracle@orcl

Un cambio que a algunos les gusta hacer en el acceso directo que lanza SQL * Plus, es el evitar que se
presente inmediatamente un mensaje de inicio de sesin. Para ello, se aadie la opcin NOLOG al final
del comando
sqlplus/nolog

En vez del acceso del men de INICIO:se puede simplemente abrir una ventana de comando y
ejectarlo. El programa inmediatamente presenta un smbolo de inicio para entrar en el sistema, a menos
que usted lo invoque con la opcin de NOLOG descrita arriba.


A 1-6














Figura 1.6.conexin a base de datos con SQL*plus.
Las pruebas del entorno y la necesidad de iniciar las variables si ellas no son
correctas, como se ha descrito anteriormente para una instalacin de Linux, no son por lo general
necesarios en una instalacin de Windows. Esto es porque las variables son puestas en el Registro de
Windows por el Oracle Universal Instaler cuando el software es instalado. Si SQL*Plus no se ejecuta con
xito, compruebe las variables de Registro. La figura 1-7 muestra la seccin relevante del Registro,
visualizado enWindows con regedit.exe. Dentro del Registro, navegue a la clave:
KEY_OraDb11g_home1 de ORACLE en SOFTWARE de la entrada HKEY_LOCAL_MACHINE El
elemento final de este paso de navegacin tendr un nombre diferente si all tienen
Varias instalaciones 11g en la mquina.
Estos se refieren a la ubicacin del ejecutable sqlplus.exe y la ruta del men Inicio de navegacin para
alcanzar el acceso directo que va a poner en marcha.


Creando y Probando una Conexin a la base de datos SQL*Plus no tiene ningn modo
de almacenar cadenas de conexin a la base de datos. Cada vez que un usuario desea conectar a una base de
datos, el usuario debe decir a SQL*Plus quin es y a que base de datos desea conectarse. Hay variaciones
segn la seguridad especfica para el sitio.




F
I
G
U
R
A

1
-
7










Las variables de registro

Instalaciones, pero los medios ms comunes del acceso a la base de datos es presentando un nombre de
usuario y una contrasea. Hay dos formas comnmente usadas para identificar la base de datos ya sea dando
un alias que se resuelve en los detalles completos de conexin, o mediante la introduccin de todos los
detalles.

Desde la lnea de comandos del sistema operativo, se ejecutan estos comandos de SQL * Plus para
conectar la base de datos como usuario SCOTT cuya contrasea es TIGRE. uso de cada una de las
opciones:
sqlplus scott/tiger@orcl
sqlplus scott/tiger@linsrv1.bplc.co.za:1521/orcl.bplc.com
El primer ejemplo usa un alias, orcl, para identificar la base de datos. Esto debe ser resuelto
en el detalle completo de conexin. Esta resolucin puede ser hecha de varios modos, pero de una u otra
forma debe ser llevada a cabo. Las tcnicas habituales para esto deben usar un archivo de texto llamado
tnsnames.ora, o conectar con un directorio LDAP, como Directorio Activo de Microsoft o Directorio de
Internet de Oracle del Oracle.
El segundo ejemplo proporciona todos los detalles para conectar en la lnea de comandos. Los detalles
de conexin necesarios son el hostname del servidor en el cual el instancia de base de datos se ejecuta; el
puerto de TCP en el cual esta escuchando el listener de la base de datos de Oracle; y el servicio de base de
datos al cual el usuario desea que el listener de la base de datos le conecte. La primera tcnica, donde el
usuario slo tiene que escribir un alias, requiere que el administrador de base de datos configure un
mecanismo de resolucin de nombre; la segunda tcnica slo puede trabajar si el usuario sabe los detalles l
mismo.
Hay varias circunstancias que causarn que un intento de conexin SQL*Plus de fallar. La figura 1-8
ilustra algunos ms problemas comunes.


FIGURA 1-8


















Figura 1.8. algunos problemas comunes
En primer lugar, el usuario inicia SQL * Plus desde una ventana de comandos del sistema operativo
Windows, usando la opcin NOLOG para evitar el mensaje de login inmediata. No hay problema hasta
ahora.
En segundo lugar, desde el indicador SQL>, el usuario emite una peticin de conexin, lo que falla con un
error conocido:

ORA-1254: TNS: no se pudo resolver el identificador de conexin especificado

Este error se debe a que el identificador de conexin dada, wrongalias, no se puede resolver en los detalles
de conexin de base de datos por el TNS (Transparent Network Substrate-no es un acrnimo
particularmente facil de recordar) de la capa de red de Oracle. El mtodo de resolucin de nombres a
utilizar y su configuracin es un asunto para el administrador de base de datos. En este caso, el error es
evidente: el usuario ha introducido el identificador de conexin equivocado.
El segundo intento de conexin proporciona el identificador correcto, ORCL. Esta falla con

ORA-12541: TNS: no se escucha

Esto indica que el identificador de conexin se ha resuelto correctamente en la direccin
de un listener de base de datos, pero que el listener no se est ejecutando realmente. Tenga en cuenta que
otra posibilidad sera que la resolucin de la direccin est defectuosa y est enviando SQL * Plus a la
direccin equivocada. A raz de este error, el usuario debe comunicarse con el administrador de la base de
datos y pedirle que inicie el listener. A continuacin, intente de nuevo.
La tercera peticin de conexin falla con

ORA-12514: TNS: el listener no sabe actualmente el descriptor de servicio requerido en la conexin.

Este error se genera por el listener de la base de datos. SQL * Plus ha encontrado el listener sin problemas,
pero el listener no puede hacer la conexin hacia el servicio de la base de datos. La razn ms probable para
esto es que la instancia de base de datos no ha sido iniciada, por lo que el usuario debe solicitar al
administrador de la base de datos para que la inicie y, a continuacin, intntelo de nuevo.
La cuarta solicitud de conexin falla con

ORA-01017: invalid nombre de usuario / contrasea, inicio de sesin denegado

Para recibir este mensaje, el usuario debe tener contacto con la base de datos. El usuario tiene acceso a la
instancia de base de datos la cual est en ejecucin. El usuario slo tiene la contrasea o nombre de usuario
incorrecto. Tenga en cuenta que el mensaje no indica si se trata de la contrasea o el nombre de usuario que
est mal si lo hiciera, sera dar informacin
.
Finalmente, el quinto intento de conexin es satisfactoria
El ejemplo precedente demuestra una tcnica de resolucin de los problemas que usted usar
con frecuencia.




SQL Developer
El Developer de SQL es un instrumento para conectar a una base de datos de Oracle (o, de hecho,
algunas bases de datos de no oracle tambin) y ejecutar ad hoc comandos de SQL. Este tambin puede
manejar objetos de PL/SQL. A diferencia de SQL*Plus, es un instrumento grfico con asistentess para
acciones comnmente necesarias. El SQL Developer est escrito en Java y requiere que un Entorno de
runtime de Java (JRE) .
Siendo escrito en Java, el SQL Developer est disponible en todas las plataformas que soportan la versin
apropiada del JRE. No hay ninguna diferencia significativa entre plataformas.

Instalacin y ejecucin de SQL developer
El SQL Developer no se instala con el Oracle Universal Instaler, que es usado para instalar todos los
otros productos de Oracle. Este no existe en un Oracle Home, pero es un producto completo en si mismo.
La ltima versin puede ser descargada del sitio web de Oracle Corporation.

Una instalacin de la base de datos 11g incluir una copia del SQL Developer, pero no ser la
versin actual.

Para instalar el SQL Developer, descomprima el archivo de ZIP. Eso es todo. Este realmente requiere tener
la versin JDK1.5, que la versin 1.5 del runtime de Java, est disponible: esta pertenece a Sun
Microsystems. Pero si JDK1.5 (o una versin posterior) no est disponible ya en la mquina utilizada, hay
versiones autoinstalable del SQL Developer para Windows que la incluye. Para otras plataformas aparte de
Windows, el JDK1.5 debe ser preinstalado. Descrguelo de la web de Sun Microsystems e instlela segn las
directrices especficas para la plataforma. Para comprobar que el JDK est disponible con la versin
correcta, de un sistema operativo ejecute el siguiente comando:

Java - versin
Esto debera devolver algo como lo siguiente:

la Java de versin "1.5.0_13" de Java (TM) 2 Entorno de tiempo de Ejecucin, Edicin
Estndar (construyen 1.5.0_13-b05) HotSpot de Java (TM) Cliente VM (construyen
1.5.0_13-b05, modo mezclado, compartiendo)
Si no sale algo como esto, usando wich Java puede ayudar a identificar el problema: el PATH podra
estar apuntando a una versin incorrecta.
Una vez que el SQL Developer ha sido descomprimido, cambie su directorio actual al
directorio en el cual el SQL Developer fue descomprimido y lo ejecuta. En Windows, el
el archivo ejecutable es sqldeveloper.exe. En Linux, es el shell script sqldeveloper.sh.
Acurdese de comprobar que la variable de entorno de VISUALIZACIN(DISPLAY) ha sido puesta a un
valor conveniente (tal como 127.0.0.1:0.0, si el SQL Developer est siendo ejecutado en la consola de
sistema) antes de ejecutar el shell script.
Cualquier problema con instalar el JRE y lanzar SQL Developer debera ser notificado a su
administrador de sistema.



















Figura 1.9, interfaz de usuario de sql developer


La Figura 1-9 de Interface de Usuario de SQL Developer muestra el Interface de Usuario de
SQL Developer despus de conectar a una base de datos.
La disposicin general de la ventana SQL Developer es un panel de la izquierda para la
navegacinbalrededor de los objetos, y un panel de la derecha para mostrar e introducir informacin.
En la figura, el panel de la izquierda muestra que una conexin se ha hecho a una
base de datos. La conexin se denomina orcl_sys. Este nombre es slo una etiqueta elegida cuando la
conexin se ha definido, pero la mayora de los desarrolladores utilizan algn tipo de convencin en los
nombres en este caso, el nombre elegido es el identificador de base de datos, que es ORCL,y el nombre del
usuario con el que se ha realizado la conexin, que era sys. Las ramas de debajo listan todos los tipos de
objetos posibles que pueden ser manejados. Al desplegar las ramas se enumeran los objetos. El panel de la
derecha tiene una parte superior que solicita al usuario que escriba una instruccin SQL y una parte
inferior que muestra el resultado de la ejecucin. La disposicin de paneles y las fichas visibles en ellos es
muy customizable.
Los botones de men a travs de la barra de men superior dan el acceso a las funciones estndares:

Archivo:en esta opcin se puede realizar lo siguiente: desde donde se puede guardar el trabajo y la
salida de la herramienta.
Editar:da la opcin de elegir desde donde se puede deshacer, rehacer, copiar, pegar, buscar, etc.
SQL Developer interfaz de usuario.
Navegar: permite moverse entre los marcos de la ventana y para desplazarse por el cdigo que se
est editando.
Ejecutar: permite la ejecucin de las sentencias SQL, scripts SQL o bloque PL / SQL en el que se
est trabajando.
Depurar: en lugar de ejecutar un bloque completo de cdigo, permite ejecutarlo paso a paso hiendo
lnea a lnea con puntos de interrupcin.
Opciones: permite seleccionar las fuentes que se utilizarn al escribir cdigo SQL y PL / SQL,as
como los caracteres tales como la terminacin de palabras clave y sangrado automtico.
Herramientas: permite el enlace a programas externos, como SQL * Plus.
Herramientas de Migracin: permite migrar aplicaciones diseadas para otras bases de datos
(Microsoft Access, SQL Server y MySQL) al entorno Oracle.
Ayuda: Es bastante bueno.

SQL Developer puede ser una herramienta muy til, y es muy personalizable. Experimente con l, lea
la Ayuda, y configurar la interfaz de usuario de la manera que mejor funcione para usted.
El SQL Developer puede ser un instrumento muy til, y es muy personalizable. Experimente
con el, lea la ayuda, y configure la interfaz de usuario de la manera que mejor funcione para usted.


Creacin de Conexiones a la Base de Datos
La Conexin a la base de datos puede ser creada y guardada para su reutilizacin. La figura 1-10 muestra la
ventana donde las conexiones pueden ser definidas. Para alcanzar esta ventana, haga clic "el +" smbolo
visible en la paleta de Conexiones mostrada antes en la Figura 1-9.
El nombre de la conexin es arbitraria. En este ejemplo, el nombre elegido es el nombre del identificador
de base de datos de conexin (ORCL) con el sufijo del nombre de usuario (hr) que se integrarn en la
conexin.
El nombre de usuario y la contrasea deben ser ambos suministrados, pero slo el nombre de usuario ser
guardado a menos que la casilla guardar password sea seleccionada. Guardar una contrasea significa que
las futuras conexiones pueden ser hechas sin la peticin de ninguna contrasea. Esto es conveniente, pero
muy peligroso si hay cualquier posibilidad que el ordenador desde el que usted est trabajando no sea
seguro. En efecto, usted delega la autenticacin a su sistema operativo local: si usted puede entrar en el
sistema, usted puede entrar en el sistema a la base de datos.



FIGURA 1-10





















Figura 1.10:como definir una nueva conexin de base de datos.
Asumiendo que usted est utilizando SQL Developer para conectarse a una base de datos Oracle en
lugar de bases de datos de otro fabricante, seleccione la ficha Oracle.
La casilla desplegable te da la opcin de conectarse como sysdba. Una conexin sysdba es necesaria antes
de ciertas operaciones particularmente importates (como el arranque y parada de la base de datos) puedan
llevarse a cabo.
Los botones de radio :Tipo de conexin le permiten elegir entre tres opciones:

Bsico Este pedir el nombre del equipo del servidor de base de datos, el puerto en el que escucha la base
de datos aceptar solicitudes de conexin, y la instancia (SID) o el servicio al que la conexin se realizar
TNS Si un mtodo de resolucin de nombres se ha configurado, un alias de la base de datos se pueden
introducir, en lugar de todos los detalles necesarios para la opcin Bsica.
Avanzada permite la entrada de una completa cadena de conexin JDBC (Java Database Connectivity).
Esta es completamente independiente de Oracle y podra ser utilizada para conectar con cualquier base de
datos que se ajusta al estndar JDBC.

La seleccin bsica requiere que el usuario conozca cmo conectarse a la base de datos, la seleccin TNS
requiere alguna configuracin que sea hecha en la mquina cliente por el administrador de la base de datos,
a fin de que el alias se pueda resolver en los detalles de conexin.



GUIN & SOLUCIN




Cree los Esquemas de Pruebas
A lo largo de este libro, hay cientos de ejemplos de ejecucin de cdigo SQL en las tablas de datos. En su
mayor parte, los ejemplos usan tablas que pertenecen dos esquemas de demostracin proporcionados por
Oracle: el esquema HR, que simula una sencilla aplicacin de recursos humanos, y el esquema OE, que
simula una aplicacin de entrada de pedidos ms complicados.
Estos esquemas se pueden crear cuando se crea la base de datos, es una opcin presentada por el Asistente de
configuracin de base de datos. Si no existen, se pueden crear despus mediante la ejecucin de algunos
scripts que existen en el Oracle Home de la base de datos.
Un esquema de demostracin anterior era SCOTT (password TIGER). Este esquema es ms simple que
el de recursos humanos o el de OE. Muchas personas con una larga experiencia de Oracle prefieren utilizar
este esquema, el script de creacin del mismo es utlsampl.sql.

Usuarios y Esquemas
En primer lugar, dos definiciones. En el lenguaje de Oracle, un usuario de base de datos, es una persona
que puede iniciar sesin en la base de datos. Un esquema de base de datos es todos los objetos en la base de
datos de propiedad de un usuario. Los dos trminos a menudo se pueden utilizar indistintamente, ya que hay
una relacin de uno a uno entre los usuarios y esquemas. Tenga en cuenta que un esquema se crea
inicialmente vaco, cuando un usuario se crea con el comando CREATE USER.
Los esquemas se utilizan para almacenar objetos. Estos pueden ser objetos de datos, tales como tablas u
objetos de programacin, tales como PL / SQL, los procedimientos almacenados. Los inicios de sesin de
usuario se usan para conectarse a la base de datos y tener acceso a estos objetos. De forma predeterminada,
los usuarios tienen acceso a los objetos en su propio esquema y no a otros, pero la mayora de las
aplicaciones pueden cambiar esta situacin. Por lo general, un esquema puede ser utilizado para el
almacenamiento de datos a los que se tiene acceso por otros usuarios los cuales tienen permiso para usar los
objetos, a pesar de que ellos no son propietarios. En la prctica, muy pocos usuarios tendrn los objetos en su
propio esquema, o permiso para crearlos: tendrn derechos de acceso (que ser estrictamente controlado)
slo a los objetos en otro esquema. Estos objetos sern utilizados por todos los usuarios que ejecutan la
aplicacin cuyos datos almacena el esquema. Por el contrario, los usuarios que poseen los esquemas de
almacenamiento de datos no suelen poder iniciar una sesin de base de datos: el nico propsito de su
esquema es contener los datos utilizados por otros.
Es imposible que un objeto de datos de exista de forma independiente de un esquema. O en otras palabras,
todas las tablas deben tener un propietario. El propietario es el usuario en cuyo esquema reside la tabla. El
identificador nico de una tabla (o cualquier otro objeto de esquema) es el nombre de usuario, seguido por el
nombre del objeto. De ello se deduce que no es posible que dos tablas con el mismo nombre que existan en el
mismo esquema, pero que dos tablas con el mismo nombre (aunque posiblemente diferentes estructuras o
contenidos) puedan existir en diferentes esquemas. Si un objeto no existe en el propio esquema, para poder
acceder a ella hay que calificar su nombre con el nombre del esquema en el que reside. Por ejemplo,
hr.employees es la tabla llamada Employees del esquema del usuario de recursos humanos. Slo un
usuario conectado como HR podra llegar a la tabla haciendo referencia a los EMPLOYEES sin un
calificador de nombre de esquema.

Esquemas OE y HR
El esquema de pruebas de HR consiste de siete tablas, conectadas por la clave primaria con
relaciones de clave fornea. La figura 1-11 ilustra las relaciones entre las tablas, como un diagrama
entidad-relacin.





FIGURA 1-11




























Figura 1.11. Diagrama entidad-relacin HR.

Dos de las relaciones mostradas en la figura 1-11 pueden no ser inmediatamente comprensibles. En
primer lugar, existe una relacin de muchos a uno de los EMPLOYEES a los EMPLOYEES. Esto
es lo que se conoce como una clave externa que se referencia a s misma. Esto significa que muchos
EMPLOYEES se pueden conectar a un empleado, y se basa en el hecho de que muchos
EMPLOYEES pueden tener un director, pero el director tambin es un empleado. La relacin es
implementada por la columna manager_id la cual es una clave externa a employee_id, que es la
clave principal de la tabla.
La segunda relacin que puede requerir explicacin es la que se encuentra entre los
DEPARTMENTS y EMPLOYEES, la cual es bidireccional. La relacin de departamento a varios
EMPLOYEES es una relacin que indica que puede haber muchos miembros del personal en cada
departamento, con base en la columna dept_id de EMPLOYEES la cual es una clave externa a la
columna principal dept_id de DEPARTMENTS. El empleado a varios DEPARTMENTS es una
relacin la cual
muestra que un empleado puede ser el director de varios DEPARTMENTS y es implementado por
la columna manager_id que es una clave externa en la tabla DEPARTMENTS con la columna
employee_id que es clave principal en la tabla EMPLOYEES.

La Tabla 1-1 muestra las columnas de cada tabla en el esquema HR, usando la siguiente notacin
:para indicar las claves principales (#), claves forneas (\), y si las columnas son opcionales (o) o
obligatorio (*).
Comando Columnas

Las tablas son:Tabla 1-1 con las tablas y columnas del schema HR

Tablas Columnas
REGIONS #* region_id
o region_name
COUNTRIES #* country_id
o country_name
\o region_id
LOCATIONS #* location_id
o street_address
o postal_code
* city
o state_province
\o country_id
DEPARTMENTS #* department_id
* department_name
\o manager_id
\o location_id
EMPLOYEES #* employee_id
o first_name
* last_name
* e-mail
o phone_number
* hire_date
\* job_id
o salary
o commission_pct
\o manager_id
\o department_id
JOBS #* job_id
* job_title
o min_salary
o max_salary
JOB_HISTORY #* employee_id
#* start_date
* end_date
\* job_id
\o department_id


Las tablas son:

REGIONS tiene filas de las principales reas geogrficas.
COUNTRIES tiene una fila por cada pas, los cuales estn opcionalmente
asignados a una regin.
LOCATIONS incluye las direcciones individuales, que estn opcionalmente
asignados a un pas.
DEPARTMENTS tiene una fila para cada departamento, opcionalmente
asignado a una ubicacin y, opcionalmente, con un director (que debe existir
como un empleado).
EMPLOYEES tiene una fila para cada empleado, cada uno de los cuales debe
ser asignado a un puesto de trabajo y, opcionalmente, a un departamento y con un
director. Los directores deben ser ellos mismos EMPLOYEES.
JOBS lista todos los posibles puestos de trabajo en la organizacin. Es posible
que muchos EMPLOYEES tengan el mismo trabajo.
JOB_HISTORY enumera los trabajos anteriores realizados por los
EMPLOYEES, identifican de forma nica por employee_id y start_date, no es
posible que un empleado mantenga dos trabajos al mismo tiempo. Cada registro
de historial de trabajos se referir a un empleado, quien ha tenido un trabajo en ese
momento y pudo haber sido miembro de un departamento.




Creacin de Esquema de pruebas
Los esquemas de pruebas opcin en el Asistente de Configuracin de Base de datos
cuando este crea una base de datos. Despus de la creacin de base de datos, los
esquemas deberan ser desbloqueados y su activada sus contraseas; en ausencia las
cuentas son bloqueadas, lo que significa que usted no puede entrar en el sistema con ellas.
Estos comandos, que podran ser ejecutados desdee SQL*Plus o SQL Developer, lo
permitirn entrar en el sistema como los usuarios HR y OE utilizando las contraseas HR
y OE:

alter user hr account unlock identified by hr;
alter user oe account unlock identified by oe;

Estos comandos para modificar un usuario slo se pueden ejecutar cuando est conectado
a una base de datos con un usuario con privilegios de DBA, tales como system.
Si los esquemas no fueron creados durante la creacin de la base de datos, pueden crearse
ms tarde por ejecutando scripts existentes en el Oracle Home de la base de datos. Estos
scripts deben ser ejecutados desde SQL * Plus o SQL Developer con un usuario con
privilegios SYSDBA. La secuencia de comandos le pedir ciertos valores mientras se
ejecuta. Por ejemplo, en Linux, primer lanzamos el SQL * Plus desde una consola de
sistema operativo:

sqlplus / as sysdba

Hay varias opciones para esta conexin, pero la sintaxis anterior por lo general funciona si
la base de datos se ejecuta en la misma mquina donde se ejecuta SQL * Plus. A
continuacin, invocar el script desde el prompt SQL>:

SQL> @? / Demo / schema / human_resources / hr_main.sql

El carcter "?" Es una variable que SQL * Plus se expandir con la ruta de acceso al
directorio Oracle Home. La secuencia de comandos le pedir la contrasea de RRHH,
tablespace por defecto, y tablespace temporal, la contrasea SYS, y un destino para un
archivo de log de la ejecucin del script. Los valores tpicos para tablespace por defecto, y
tablespace temporal son el de USERS y TEMP, pero stos tendrn que haber sido creados
ya. Despus de que finalice, conectarse a la base de datos como el usuario HR. Para
verificarlo para ello:
ejecute estas sentencias:

SQL> show user;

Usted ver que est conectado actualmente como el usuario HR; entonces ejecutando:

SQL> select table_name form user_tables;
Ver una lista de las siete tablas del esquema de HR.
Para crear el esquema OE, siga el mismo proceso,ejecutando el script:

?/demo/schema/order_entry/oe_main.sql
El proceso para crear los esquemas en Windows es idntico, excepto por el sentido de
los delimitadores que son en sentido contrario, en Windows se ejecutara de la siguiente
forma:

? \demo\schema\human_resources\hr_main.sql

RESUMEN DE CERTIFICACIN
SQL es una lenguaje para el acceso gerente a datos normalizados almacenados en el
relacional
bases de datos. No es una lenguaje de desarrollo de aplicaciones, pero es invocado por
tales lenguajejes cuando ellos tienen que tener acceso a datos. Las tecnologas de servidor
de Oracle proporcionan una plataforma a desarrollar y desplegar tales aplicaciones. La
combinacin de las tecnologas de servidor de Oracle y SQL causa un entorno que se
conforma con el paradigma de base de datos relacional que es una tecnologa de
habilitacin para la Computacin grid.
44
Captulo 1:
Oracle Server Technologies y el Paradigma Relacional



Los numerosos herramientas de cliente pueden ser usados para conectar a una base de datos de Oracle.
Dos
a condicin de que por Oracle Corporation sean SQL*Plus y Developer SQL: SQL*Plus es instalado como
la parte de cada cliente de Oracle y base de datos de Oracle instala, pero el Developer SQL puede ser
instalado como un producto separado. Tanto los herramientas pueden ser usados para prepararse para los
exmenes OCP, como los estudiantes deberan ser familiares con ambos.
Los esquemas de pruebas almacenan datos de ejemplo que son usados para ilustrar el uso de SQL, y
tambin de instalaciones de desarrollo de Oracle ms avanzadas.
Taladradora de dos
minutos
45




TALADRADORA DE DOS MINUTOS

Posicin Server Technologies
La base de datos de Oracle almacena y maneja el acceso a datos de usuario. El Servidor de
Aplicacin de Oracle ejecuta aplicaciones que conectan a usuarios al
base de datos.
gerente de Empresa de Oracle es un instrumento para bases de datos gerentes, servidores de
aplicacin,
y, de ser deseado, el entorno de calcular entero.
Lenguajejes incorporadas en la base de datos para el desarrollo de aplicaciones son SQL,
PL/SQL, y Java.

Entienda Estructuras Relacionales
Datos debe ser normalizado en tablas de dos dimensiones. Tablas son conectados por
claves forneas y primarias. diagramas de relacin de la Entidad representan las tablas
grficamente.

Resuma la Lenguaje SQL
Los comandos de DML son ESCOGIDOS, INSERCIN, ACTUALIZACIN, BORRAR, y
FUSIN. Los comandos de DDL son CREAN, CAMBIAN, DEJAN CAER, RENOMBRAN,
TRUNCAN,
y COMENTARIO. Los comandos de DCL son la SUBVENCIN y REVOCAN. Los
comandos de TCL son DESTINAN, ROLLBACK, y SAVEPOINT.

Use los Herramientas de Cliente
el SQL*Plus es una herramienta de lnea de comandos instalada en el Oracle a Casa. SQL
Developer es un instrumento grfico instalado en su propio directorio. Ambos herramientas
requieren una conexin a la base de datos, consistiendo en un nombre de usuario, una contrasea,
y un identificador conectar.

Cree los Esquemas de Pruebas
Los esquemas de pruebas son proporcionados por el Oracle para facilitar aprender, pero
debe ser creado antes de que ellos puedan ser usados.
46
Captulo 1:
Oracle Server Technologies y el Paradigma Relacional



M PRUEBA

Posicin Server Technologies
1. Que componentes de ESTO entorno puede el gerente de Empresa de Oracle Grid Control
pueda? (Elija la mejor respuesta.) A. Bases de datos de oracle productos de servidores de aplicacin
de B. Oracle C. Third-party D. Las mquinas de servidor E. Todos los susodichos
2. Qu las lenguajejes pueden ejecutar dentro de la base de datos? (Elija todo que se aplican.)
A. SQL B. C C. PL/SQL D. Java E. Cualquier otra lenguaje conectada con las bibliotecas OCI

Entienda Estructuras Relacionales
3. Los datos que son modelados en una forma conveniente para tratar en una base de datos relacional
pueden ser
descrito como siendo (Eligen la mejor respuesta.) A. Forma primero normal B. Third forma normal
C. Forma anormal D. Forma paranormal
4. Un diagrama de relacin de la entidad muestra datos modelados en (Elija la mejor respuesta.)
A. Tablas de dos dimensiones B. Tablas multidimensionales C. Estructuras jerrquicas D.
Estructuras orientadas al objeto




Resuma la Lenguaje SQL
M Prueba
47
5. SQL es una lenguaje orientada al SET. Cul de estos aspectos es una consecuencia de esto? (Elija
el
la mejor respuesta.) A. Las filas individuales deben tener un identificador nico. B. Sets de usuarios
puede ser manejado en grupos. C. Las select de SQL pueden ser colocadas dentro de bloques del
cdigo en otras lenguajejes, como la Java y
PL/SQL.
D. Una select puede afectar filas mltiples.
6. Cul de estas construcciones no es la parte de la lenguaje SQL? (Elija todo que se aplican.)
A. Iteracin, basada en HACEN.. MIENTRAS B. Iteracin, basada en PARA.. DESPUS C.
Ramifiarse, basado en SI.. ENTONCES.. MS D. Control de transaccin, basado en DESTINAN
E. Control de transaccin, basado en ROLLBACK

Use los Herramientas de Cliente
7. Cules de estas select en cuanto al Developer SQL es correcta? (Elija dos respuestas.)
A. El Developer de SQL no puede conectar a bases de datos antes que la liberacin 10g. B. El
Developer de SQL puede ser instalado fuera de un Oracle a Casa. C. El Developer de SQL puede
almacenar contraseas. D. El Developer de SQL confa en un directorio LDAP para la resolucin
de nombre.
8. Cules de lo siguiente es requisitos para usar al Developer SQL? (Elija dos correcto
respuestas.) A. Un Entorno de Tiempo de ejecucin de Java B. Las bibliotecas OCI C. Un mtodo
de resolucin de nombre, como LDAP o un TNSNAMES.ORA archiva D. Las bibliotecas
SQL*Plus E. Un terminal grfico
48
Captulo 1:
Oracle Server Technologies y el Paradigma Relacional



Cree los Esquemas de Pruebas
9. Dnde pueden los esquemas de pruebas ser creados? (Elija la mejor respuesta.)
A. Los esquemas de pruebas deben ser creados en una base de datos de pruebas. B. Los esquemas de
pruebas no pueden ser creados en una base de datos de produccin. C. Los esquemas de pruebas
pueden ser creados en cualquier base de datos. D. Los esquemas de pruebas pueden ser creados en
cualquier base de datos si el usuario de pruebas es
creado primero. 10. Cmo puede usted mover un esquema de un usuario al otro? (Elija la
mejor respuesta.)
A. Use el comando de ESQUEMA MOVE. CAMBIAR. B. Usted no puede mover un esquema de un
usuario al otro. C. Un esquema slo puede ser movido si es vaco (o si todos los objetos dentro de
ello han sido dejados caer). D. Adjunte al nuevo usuario al esquema, luego separe al viejo usuario
del esquema.
















Captulo 2:
Este captulo explora los conceptos de extraccin o recuperacin de los datos almacenados en tablas
relacionales usando la instruccin SELECT. La sentencia se present en su forma bsica y progresivamente
se ir ampliando la funcionalidad de la misma. A medida que aprende las reglas que rigen esta sentencia, un
punto importante a recordar es que la instruccin SELECT nunca altera la informacin almacenada en la
base de datos. En su lugar, se proporciona un mtodo para la extraccin de la informacin en modo de slo
lectura.
Enumerar la capacidad de la Sentencias SQL: SELECT
Saber cmo recuperar datos en un formato fijo utilizando un lenguaje de consulta es el primer paso hacia la
comprensin de la capacidad de las sentencia SELECT. Al proporcionar la relacin existente entre la
teora de cmo se almacenan los datos en las tablas y la visualizacin prctica de la estructura de estas
tablas. Estos temas forman un precursor importante a la discusin de las capacidades de la instruccin
SELECT. Las tres reas principales exploradas son:

Presentacin de la sentencia SQL SELECT
El comando DESCRIBE TABLE
Capacidades de la sentencia SELECT

La introduccin del SQL Select SENTENCIA
La instruccin SELECT de Lenguaje de Consulta Estructurado (SQL) tiene que ser la
nica construccin no hablada de lenguaje que es ms potente. La sentencia SELECT
es un mecanismo elegante, flexible, extensible, que se ha creado para recuperar
informacin de una tabla de base de datos. Una base de datos servira de poco si no se
pudiera consultar para responder todo tipo de preguntas. Por ejemplo, usted puede
tener una base de datos que contiene los registros financieros personales, como sus
estados de cuenta bancarios, sus facturas de servicios pblicos, y sus nminas. Desde
aqu se puede consultar a la base de datos el obtener una lista actualizada y ordenada de
sus facturas de servicios elctricos durante los ltimos seis meses o consultar su estado
de cuenta para obtener una lista de los pagos realizados a una cuenta determinada en el
mismo perodo. La mayor funcionalidad de la instruccin SELECT es su
encapsulamiento en un simple formato que permite realizar preguntas que se harn a
la base de datos de una manera natural.

Las tablas, tambin conocidas como relaciones, se componen de filas de informacin divididas por
columnas. Consideremos dos de las tablas de ejemplo presentados en el captulo anterior: la tabla
EMPLOYEES y la tabla DEPARTMENTS. Este conjunto de datos de la muestra se basa en la informacin
de recursos humanos (HR) de una organizacin ficticia. En la terminologa Oracle, cada tabla pertenece a
un esquema (propietario): en este caso el esquema HR. La tabla EMPLOYEES almacena filas o registros de
informacin. Estos contienen varios atributos (columnas) que describen cada empleado en la organizacin.
La tabla DEPARTMENTS contiene informacin descriptiva sobre cada departamento dentro de la
organizacin, almacenado como filas de datos divididas en columnas.
Suponiendo una conexin a una base de datos que contiene el esquema HR muestra est disponible,
utilizando SQL * Plus o SQL Developer puede establecer una sesin de usuario. Una vez conectado a la
base de datos, usted est listo para comenzar su gira de SQL.


El mandato DESCRIBE TABLE

Para obtener las respuestas que uno busca, hay que hacer las preguntas correctas. Una comprensin de los
trminos de referencia, que en este caso, son tablas relacionales, es esencial para la formulacin de las
preguntas correctas. Una descripcin de la estructura de una tabla es til para establecer qu preguntas se
pueden hacer de la misma. El servidor de Oracle almacena informacin acerca de todas las tablas en un
conjunto especial de tablas que es el diccionario de datos, Almacena definiciones de objetos de base de
datos en un formato centralizado, ordenado y estructurado.


Una clara distincin debe hacerse entre almacenar la definicin y el contenido de una tabla. La definicin
de una tabla incluye informacin como el nombre de la tabla, propietario de la tabla, los detalles sobre las
columnas que lo componen, y su tamao fsico de almacenamiento en disco. Esta informacin tambin se
denomina metadatos. El contenido de una tabla se almacena en filas y se refiere a los datos.
La estructura de metadatos de una tabla puede obtenerse mediante una consulta a la base de datos para el
listado de columnas que la componen utilizando el comando DESCRIBE. La forma general de la sintaxis
de este comando es intuitiva:
DESC [RIBE] <SCHEMA>. Nombretabla
El comando describe puede reducirse a DESC. Todos las tablas pertenecen a un esquema o propietario. Si
usted est describiendo una tabla que pertenece al esquema al que se ha conectado, el <SCHEMA>
parte del comando puede ser omitido. La figura 2-1 muestra cmo la tabla employees se describe desde
SQL * Plus despus de conectarse a la base de datos como el usuario HR con el comando DESCRIBE
EMPLOYEES y cmo la tabla DEPARTMENTS



























Figura 2.1, descripcin de las tablas employees, departments y dual







es descrita usando el comando corto: DESC HR.DEPARTMENTS. El prefijo HR puede ser
omitido ya que la tabla comando de DEPARTAMENTS pertenece al esquema de HR. El
esquema de HR (y cualquier otro esquema) tienen acceso a una tabla especial llamada
DUAL, que pertenece al esquema SYS. Esta tabla puede ser estructuralmente descrita con
el comando: DESCRIBE SYS.DUAL.


La descripcin de tablas obtiene resultados interesantes y tiles. Usted sabe qu
columnas de una tabla pueden ser seleccionadas ya que sus nombres son mostrados.
Usted tambin sabe la naturaleza de los datos contenidos en estas columnas ya que el tipo
de datos de columna es expuesto. Se hablan de tipos de datos de columna detalladamente
en el Captulo 11. Para la discusin corriente, es suficiente considerar las columnas de
tipo de datos diferentes explicado en esta seccin.
Las columnas numricas a menudo son especificadas como el NMBER (p, s), donde el
primer parmetro es la precisin y el segundo es la escala. En la Figura 2-1, la columna de
SALARY de la tabla de EMPLOYEES tiene un tipo de datos de: el NMBER (8,2). Esto
significa que los valores almacenados en esta columna pueden tener como mximo 8
dgitos. De estos 8 dgitos, 2 debe ser a la derecha de la coma decimal. Un valor de
SALARY de 999999.99 es aceptable, pero un valor de SALARY de 9999999.9 no lo es,
aunque ambos nmeros contengan 8 dgitos.
VARCHAR2 (longitud) las columnas de este tipo de datos almacenan datos de carcter
alfanumrico de longitud variable, donde la longitud determina el nmero mximo de
caracteres que una columna puede contener. La columna FIRST_NAME de la tabla
EMPLOYEES tiene el tipo de datos VARCHAR2 (20), lo que significa que esta puede
almacenar los nombres de los EMPLOYEES de hasta 20 caracteres. Note que si esta
columna no contiene ningn datos o su contenido es menor de 20 caracteres, esta no usar
el mismo espacio que usara para almacenar un nombre con 20 carcteres de longitud. El
tipo de datos CHAR(size)especifica columnas de longitud fija donde el espacio de fila es
preasignado para contener un nmero fijo de carcteres sin tener en cuenta sus contenido.
El CHAR es mucho menos usado que VARCHAR2. A menos que la longitud de los datos
sea previsible y constante, el tipo de datos de CHAR utiliza el almacenamiento
ineficazmente, rellenando el espacio no usado mediante espacios.
Las columnas con tipos de datos DATE y TIMESTAMP almacenan la informacin de
tiempo y la fecha. DATE almacena un momento en el tiempo con precisin incluyendo
da, mes, ao, horas, minutos, y segundos. El TIMESTAMP (f) almacena la misma
informacin que DATE, pero tambin es capaz de almacenar segundos fraccionarios.

Una variedad de tipos de datos est disponible para el uso como tipos de datos
de columna. Muchos tienen un objetivo especializado como Binary Large Objects
(BLOBs), usados para almacenar datos binarios como msica o vdeo. La gran
mayora de tablas, sin embargo, usa los tipos de datos de columna primitivos:
NMBER, VARCHAR2, y DATE.El tipo de datos TIMESTAMP se ha hecho
extensamente usado desde su introduccin en el Oracle 9i. Familiarizarse e
interacctuar con estos tipos de datos le preparan para tratar con una amplia
variedad de consulatas relacionadas con la base de datos.

Las columnas obligatorias, que son obligadas a almacenar datos para cada fila, son
expuestas por la columna de salida "Null?" del comando DESCRIBE que tiene el valor:
NOT NULL. Oracle garantiza que cualquier columna de datos que son restringidos por el
NOT NULL cuando la tabla es creada debe contener algn dato. Es importante notar que
NULL tiene el sentido especial para el servidor de Oracle. NULL se refiere a una
ausencia de datos. Los espacios en blanco no cuentan como NULL ya que ellos estn
presentes en la fila y tienen un poco de longitud aunque ellos no sean visibles.

Ejercicio 2.1
EJERZA 2-1 Descripcin del Esquema de Recursos humanos
El esquema de HR contiene siete tablas que representan un modelo de datos de un
Departamento de recursos humanos ficticio. La tabla de EMPLOYEES, que almacena
detalles del personal, y la tabla DEPARTMENTS, que contiene los detalles de los
departamentos en la organizacin, ha sido descrita. En este ejercicio gradual, una
conexin es hecha usando al Developer de SQL con el usuario de HR y las cinco tablas de
muestra restantes son descritas. Ellos son la tabla de JOBS, que guarda la pista de los
tipos de trabajo diferentes disponibles en la organizacin, y la tabla JOB_HISTORY, que
guarda la pista de los detalles de trabajo de empleados que cambiaron trabajo, pero
permanecieron en la organizacin. Para entender el modelo de datos mas adelante, las
tablas LOCATIONS, COUNTRIES, y REGIONS, que guardan la pista de la
informacin geogrfica que pertenece a DEPARTMENTS en la organizacin, sern
descritas.

1. Inicie el SQL Developer y elija Nuevo del men de Archivo. Elija conexin de Datos- BASE. Si
esta es la primera vez que usted conecta a la base de datos del SQL Developer, se requiere que usted cree
una conexin. Proporcione un nombre de conexin descriptivo e introduzca la HR como el nombre de
usuario. El resto de detalles de conexin deberan ser obtenidos de su administrador de base de datos. Una
vez que la conexin es guardada, elija el botn Conectar.
2. Navegue al editor de SQL, que es la seccin titulada introduzca instruccion SQL.
3. Escriba el siguiente comando:: DESCRIBE JOBS. La terminacin de este comando con un
punto y coma es opcional.

4. Ejecute el comando DESCRIBE, pulsando la tecla F5 o haciendo clic
el chasquido en el icono de flecha triangular verde localizado en la barra de herramientas encima
del editor de SQL.
5. La descripcin de la tabla JOBS aparece en el cuadro d Resultados como se muestra en la figura
siguiente.






















6. Los pasos 3 a 5 pueden ser repetidos para describir el resto de tablas JOB_HISTORY ,
LOCATIONS, COUNTRIES, y REGIONS.
7. El SQL Developer proporciona una alternativa al comando DESCRIBE cuando se quiere la
obtencin de la informacin estructural de tablas.
8. Navegue a la tabla LOCATIONS usando al navegante de rbol localizado en el marco izquierdo
debajo del nombre de conexin.
9. El SQL Developer describe la tabla automticamente en la parte derecha como mostrado en la
ilustracin siguiente.




























Capacidades de la sentencia SELECT

Las tablas de bases de datos relacionales estn construidas sobre una slida base matemtica llamada teora
relacional. En esta teora, las relaciones o tablas, son manipuladas por un lenguaje formal llamado lgebra
relacional. SQL es una interpretacin comercial de las construcciones relacionales algebraicas. Tres
conceptos de la teora relacional abarcan la capacidad de la sentencia SELECT: proyeccin, seleccin y
unin.
Proyeccin se refiere a la restriccin de atributos (columnas) seleccionados de una relacin o tabla. Al
solicitar informacin de una tabla, puede solicitar el ver todas las columnas. Por ejemplo, en la tabla
HR.DEPARTMENTS, puede recuperar todas las filas y columnas, con una instruccin SELECT simple.
Esta consulta devolver los datos de DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID y
LOCATION_ID para cada registro de departamento almacenado en la tabla. Y si quisiera un listado que
contenga slo las columnas DEPARTMENT_NAME y MANAGER_ID? Bueno, consultara slo esas dos
columnas de la tabla. Esta restriccin de columnas se denomina proyeccin.
La seleccin se refiere a la restriccin de las tuplas o filas seleccionadas de una relacin (tabla). A menudo
no es deseable recuperar todas las filas de una tabla. Las tablas pueden contener muchas filas y, en lugar de
preguntar por todos ellos, la seleccin proporciona un medio para restringir las filas devueltas. Tal vez se le
ha pedido a identificar slo a los empleados que pertenecen al departamento 30. Con la seleccin es posible
limitar el conjunto de resultados a dichas filas de datos que tienen un valor de DEPARTMENT_ID 30.
La unin, como un concepto relacional, se refiere a la interaccin de las tablas entre s en una consulta. Estas
relaciones proporcionan el mecanismo para unir tablas entre s. La unin se discutir ampliamente en
Captulo7.
Suponga que hay una necesidad de recuperar las direcciones de correo electrnico de todos los empleados
que trabajan en el departamento de ventas. La columna EMAIL pertenece a la tabla EMPLOYEES, mientras
que la columna DEPARTMENT_NAME pertenece a la tabla DEPARTMENTS. Proyeccin y la seleccin
de la tabla de departamentos pueden utilizarse para obtener el valor DEPARTMENT_ID que corresponde al
departamento de ventas. Las filas coincidentes en la tabla empleados pueden estar unidos a la tabla
DEPARTMENTS basado en este valor DEPARTMENT_ID comn. La columna de correo electrnico,
entonces puede ser proyectado de este conjunto de resultados.
La sentencia SQL SELECT se rige matemticamente por estos tres principios. Una combinacin ilimitada
de proyecciones, selecciones, y uniones proporciona el lenguaje para extraer los datos relacionales
necesarios.


Ejecute una Select SENTENCIA Bsica

Las capacidades prcticas de la instruccin SELECT se realizan en su ejecucin. La clave para la ejecucin
de cualquier sentencia de lenguaje de consulta es un conocimiento profundo de su sintaxis y las reglas que
rigen su uso. Este tema se trata en primer lugar. Ser seguido por una discusin de la ejecucin de una
consulta de bsica antes de usar expresiones y operadores, que aumentan exponencialmente la utilidad de
los datos almacenados en las tablas relacionales. A continuacin, el concepto de un valor nulo se
desmitifica, y sus trampas son expuestas. Estos temas se tratarn en las siguientes cuatro secciones:

La sintaxis de la instruccin SELECT bsica
Las reglas estn para ser seguidas
SQL expresiones y operadores
NULL no es nada


Sintaxis de la declaracin SELECT Bsica

En su forma ms primitiva, la instruccin SELECT apoya la proyeccin de columnas y la creacin de
expresiones aritmticas, de carcter, y de fecha. Tambin facilita la eliminacin de los valores duplicados
del conjunto de resultados. La sintaxis bsica instruccin SELECT es la siguiente:
SELECT * | {columna [DISTINCT] | expresin [alias], ...}
FROM table;
Las palabras clave especiales o palabras reservadas de la sintaxis de la sentencia SELECT aparecen en
maysculas. Al utilizar los comandos, sin embargo, el uso en maysculas o minusculas de las palabras
reservadas en la sentencia de consulta no importa. Las palabras reservadas no se pueden utilizar como
nombres de columna u otros nombres de objetos de bases de datos. SELECT ,DISTINCT, y FROM son tres
elementos clave. Una instruccin SELECT est siempre provista de dos o ms clusulas.
Las dos clusulas obligatorias son la clusula SELECT y la clusula FROM. La barra vertical | se utiliza
para denotar OR. As que usted puede leer la primera forma de la declaracin anterior SELECT como:
SELECT * FROM tabla;
En este formato, el smbolo de asterisco (*) se utiliza para designar a todas las columnas. SELECT *
es una manera sucinta de pedir al servidor de Oracle que devuelva todas las columnas posibles. Se utiliza el
smbolo como un atajo que ahorra tiempo en lugar de escribir SELECT column1, column2, column3,
columna4, ..., ColumnX, para seleccionar todas las columnas. La clusula FROM especifica qu tabla se
consultar para buscar las columnas solicitadas en la clusula SELECT.
Puede ejecutar el siguiente comando SQL para recuperar todas las columnas y todas las filas de la tabla de
regiones en el esquema HR:

SELECT * FROM regions;

Como se muestra en la Figura 2-2, cuando se ejecuta este comando en SQL * Plus, devuelve todas las filas
de datos y todas las columnas que pertenecen a esta tabla. El uso del asterisco en una instruccin SELECT
se refiere a veces como un consulta "ciega" porque las columnas exactas que se deben buscar no se
especifican.
La segunda forma de la instruccin SELECT bsica tiene la misma clusula FROM como la primera forma,
pero la clusula SELECT es diferente:

{SELECT columna [DISTINCT] | expresin [alias], ...}
FROM tabla;

Esta clusula SELECT se puede simplificar en dos formatos:
SELECT column1 (posiblemente otras columnas o expresiones) [alias opcional]
O
SELECT DISTINCT col1 (posiblemente otras columnas o expresiones) [alias opcional]
FIGURA 2-2




















Figura 2.2 proyeccin de todas las columnas de la tabla REGIONS.
Un alias es un nombre alternativo para hacer referencia a una columna o una expresin.
Los alias se utilizan tpicamente para la visualizacin de salida en una forma fcil de
utilizar. Tambin sirven como una forma abreviada de referirse a columnas o expresiones
para escribir menos. Los alias se discutirn en detalle ms adelante en este captulo. Al
enumerar explcitamente slo las columnas correspondientes en la clusula SELECT que,
en efecto, proyectan el subconjunto exacto de los resultados que desea recuperar. La
declaracin siguiente devolver slo la columna REGION_NAME de la tabla de regiones
como se muestra en la Figura 2-2:

SELECT REGION_NAME
FROM REGIONS;

Se le puede consultar que devuelva todas las funciones de los puestos de la
organizacin que los empleados han ocupado. Para ello se puede ejecutar el comando:
SELECT * FROM JOB_HISTORY. Sin embargo, la sentencia SELECT * devuelve
adems las columnas EMPLOYEE_ID, START_DATE, y END_DATE. El conjunto de r
resultados que contiene slo las columnas job_id y DEPARTMENT_ID se puede
obtener con la sentencia ejecutada en SQL * Plus, que se muestra en la Figura 2-3.






















Figura 2.3 proyeccin de la tabla JOB_HISTORY


El uso de la palabra clave DISTINCT permite eliminar las filas duplicadas del conjunto
de resultados. En numerosas situaciones se requiere un nico conjunto de filas nico. Es
importante
Observar que el criterio empleado por el servidor Oracle para determinar si una a fila
es nica o distinta depende completamente de lo que es especificado despus de la
palabra clave DISTINCT en la clusula SELECT. Seleccionar los valores de JOB_ID
distintos de la tabla de HISTORIA JOB_ devolver los ocho distintos tipos de trabajo
como se muestra en la Figura 2-4.






























Figura 2.4. Distintos JOB_ID de la tabla JOB_HISTORY.
Comprese esta salida con la Figura 2-3, donde diez filas son devueltas. Puede usted ver que hay dos
ocurrencias de los valores AC_ACCOUNT y ST_CLERK JOB_ID? stas son las dos filas duplicadas que
han sido eliminadas buscando valores de JOB_ID distintos. Si seleccionamos los distintos valores de la
columna DEPARTMENT_ID en la tabla JOB_ HISTORY devuelve slo seis filas, como la Figura 2-5
muestra. Los valores de DEPARTMENT_ ID 50, 80, 90, y 110 tienen dos ocurrencias en la comando
JOB_HISTORY, y por ello cuatro filas han sido eliminadas buscando los diferentes valores de
DEPARTMENT_ID.
Un aspecto importante de la palabra clave DISTINCT es la eliminacin de valores duplicados en
combinaciones de columnas. Hay diez filas en la tabla JOB_HISTORY. Ocho filas contienen valores de
JOB_ID distintos. Seis filas contienen valores de DEPARTMENT_ID distintos. Puede usted adivinar
cuntas filas contienen combinaciones distintas de valores de DEPARTMENT_ID y JOB_ID? La figura
2-6 nos muestra,


FIGURA 2-4



FIGURA 2-5







ISTORY

























Figura 2.6 Combinaciones de JOB_ID y DEPARTMENT_ID nicos en la tabla JOB_HISTORY

Que hay nueve filas devueltas en el conjunto de resultados que contienen combinaciones
diferentes de JOB_ID y DEPARTMENT_ID, vemos que una fila de la Figura 2-3 es
eliminado. Esta es, por supuesto, la fila que contiene un valor JOB_ID de ST_CLERK y
un valor DEPARTMENT_ID de 50.

Reglas Se suponen para ser Seguidas
SQL es una lenguaje bastante estricta en trminos de reglas de sintaxis, pero permanece
simple y
bastante flexible para apoyar una variedad de programar estilos. Esta seccin habla de
algunas reglas bsicas que gobiernan select de SQL.

La mayscula o la Minscula es un asunto del gusto personal sobre el instancia en
el cual las select SQL son presentadas a la base de datos. Los ejemplos usados hasta ahora
han sido escritos en la mayscula. Muchos developeres, incluso los autores de este libro,
prefieren escribir sus select SQL en la minscula. Tambin hay un error comn que SQL
reserv la necesidad de palabras
Ejecute una Select SENTENCIA Bsica
65



ser especificado en mayscula. Otra vez, esto es hasta usted. La adhesin a un formato
consecuente y estandarizado es aconsejada. Las tres select siguientes son sintcticamente
equivalentes:

SELECCIONE * DE LOCATIONS; Escogido * de LOCATIONS; seleccione * de
LOCATIONS;
Hay una advertencia en cuanto a la sensibilidad de instancia. Relacionndose con literal
valores, el instancia realmente importa. Considere la columna JOB_ID de la comando
JOB_HISTORY. Esta columna contiene filas de datos que resultan ser almacenados en la
base de datos en la mayscula; por ejemplo, SA_REP y ST_CLERK. Solicitando que el
SET de resultados ser restringido por una columna literal, el instancia sea crtico. El
servidor de Oracle
trata la peticin de todas las filas en la comando
JOB_HISTORY que contienen un valor de St_Clerk
en la columna JOB_ID diferentemente

Las select de SQL pueden de ST_CLERK en columna JOB_ID.
sea presentado a la base de datos en tampoco Metadata sobre la base de datos diferente objeta la
minscula o la mayscula. Usted debe pagar es almacenado en ausencia en la mayscula en los
datos atencin cuidadosa al instancia relacionndose diccionario. Si usted pregunta un diccionario
de base de datos con el carcter datos literales y aliases. comando para devolver una lista de tablas
posedas por la Peticin de una columna llamada JOB_ID o Esquema de HORA, es probable
que los nombres de tabla job_id devuelvan la misma columna, pero devuelto son almacenados
en la mayscula. Esto hace la peticin de filas donde los JOB_ID valoran no significan que una
comando no puede ser creada con es el PRESIDENTE es diferente de preguntar un nombre
minsculo; puede ser. Son slo ms filas donde el valor de JOB_ID es el presidente. comn y el
comportamiento por defecto del Carcter de Oracle los datos literales siempre deberan ser el
servidor para crear y almacenar tablas, columnas, y trat en una manera sensible al instancia.
otro objeto de base de datos metadata en mayscula en
el diccionario de base de datos.

Select Terminators
de la peticin de todas las filas que tienen un valor

















Los puntos y coma son generalmente usados como la select de SQL terminators. SQL*Plus
siempre requiere una select terminator, y por lo general un punto y coma es usado. Una select
SQL sola o hasta los grupos de select asociadas a menudo son guardados ya que la escritura
archiva para el futuro uso. Las select individuales en escrituras SQL son comnmente
terminadas por una ruptura de lnea (o retorno) y una cuchillada avanzada en la siguiente
lnea, en vez de un punto y coma. Usted puede crear una select SENTENCIA, terminarlo
con una ruptura de lnea, incluir una cuchillada avanzada para ejecutar la select, y guardarlo
en un archivo de escritura. El archivo de escritura puede ser llamado entonces desde dentro
SQL*Plus. Note que el Developer SQL hace
66
Captulo 2:
Extraccin de datos Usando el SQL Select SENTENCIA



no requieren una select terminator si slo una select sola est presente, pero no se opondr si uno es usado.
Es la prctica buena para terminar siempre sus select SQL con un punto y coma. Varios ejemplos de select
SQL*Plus siguen:

seleccione country_name, country_id, location_id de COUNTRIES; ciudad sentencia,
location_id,
state_province, country_id de LOCATIONS /
El primer ejemplo del cdigo demuestra dos reglas importantes. En primer lugar, la select
es terminado por un punto y coma. En segundo lugar, la select entera es escrita en una lnea. Es
completamente aceptable para una select SQL ser escrito en una lnea o atravesar lneas mltiples mientras
ningunas palabras en la select atraviesan lneas mltiples. La segunda muestra del cdigo demuestra una
select que atraviesa tres lneas que es terminado por una nueva lnea y ejecutado con una cuchillada
avanzada.

La sangra, la Legibilidad, y la Prctica Buena
Consideran la pregunta siguiente:
Una tcnica comn
empleado por algunos diseadores de pregunta de examen prueba la atencin al detalle. Un
signo de puntuacin ausente solo como un punto y coma puede hacer la diferencia entre una
respuesta correcta y uno incorrecto. La ortografa incorrecta del objeto llama la atencin al
detalle de prueba adicional. Pueden pedirle elegir la select correcta que pregunta la comando
de REGIONS. Una de las opciones puede parecer correcta, pero se refiere a la comando de
REGIN. Este error de ortografa puede llevar a una select incorrecta elegida.
ciudad sentencia, location_id,
state_province, country_id de LOCATIONS /
Este ejemplo resalta las ventajas de
sangrar su select SQL para realzar la legibilidad de su cdigo. El servidor de Oracle no se opone si la select
entera es escrita en una lnea sin la sangra. Es la prctica buena para separar clusulas diferentes de la select
SENTENCIA en lneas diferentes. Cuando una expresin en una clusula es particularmente compleja, a
menudo es mejor separar aquel trmino de la select en una nueva lnea. Desarrollando SQL para encontrar
sus necesidades de obteniendo, el proceso
a menudo es iterativo. El intrprete SQL es mucho ms til durante el desarrollo si las
expresiones complejas son aisladas en lneas separadas, ya que los errores son por lo
general lanzados al formato de: "ERROR en lnea X:" Esto hace el proceso de depuracin
mucho ms simple.
Ejecute una Select SENTENCIA Bsica
67




GUIN & SOLUCIN

Usted quiere construir y ejecutar preguntas contra tablas almacenadas en una base de datos de Oracle. Es
encajonado usted a la utilizacin de SQL*Plus o Developer SQL?
No. El oracle proporciona SQL*Plus y Developer SQL como herramientas libres para crear y ejecutar preguntas.
Hay numerosos herramientas disponibles del Oracle (por ejemplo, Descubridor, Formas, y JDeveloper) y otro
tercero - vendedores que proporcionan un interface a las tablas almacenadas en una base de datos de Oracle.
Para explorar su entorno de base de datos adelante, le gustara una lista de tablas, posedas por su esquema corriente,
disponible para usted preguntar. Cmo interroga usted el diccionario de base de datos para proporcionar este
metadata?
El diccionario de datos es un SET de tablas y las vistas de las otras tablas que pueden ser preguntadas va SQL. La
select TABLE_NAME escogido de TABLAS USER_; pregunta el diccionario de base de datos para una lista de
nombres de tabla que pertenecen al usuario corriente.
Preguntando la comando de JOBS para cada fila que contiene slo el JOB_ID y columnas MAX_SALARY, es
una proyeccin, seleccin, o juntura realizada?
Una proyeccin es realizada ya que las columnas en la comando de JOBS han sido restringidas al JOB_ID y
columnas MAX_SALARY.




EJERCICIO 2-2 Contestando a Nuestras Primeras Preguntas con SQL
En este ejercicio gradual, una conexin es hecha usando SQL*Plus como el usuario de
HORA a
conteste a dos preguntas usando la select SENTENCIA.
Pregunta 1: en Cuntos los DEPARTMENTS nicos tienen EMPLOYEES que
actualmente trabajan
ellos?

1. Comience SQL*Plus y conecte al esquema de HORA. 2. Usted puede ser al
principio tentado encontrar la respuesta en los DEPARTMENTS
comando. Un estudio cuidadoso revela que la pregunta pide la informacin sobre
EMPLOYEES. Esta informacin est contenida en la comando de EMPLOYEES.
3. La palabra "nica" debera dirigirle para usar la palabra clave DISTINTA.
68
Captulo 2:
Extraccin de datos Usando el SQL Select SENTENCIA



4. Combinando los pasos 2 y 3, usted puede construir la select SQL siguiente:

seleccione department_id distinto de EMPLOYEES;
5. Como mostrado en la ilustracin siguiente, esta pregunta devuelve 12 filas. Note esto
la tercera fila es vaca. Esto es un valor nulo en la columna DEPARTMENT_ID.
















6. La respuesta a la primera pregunta es por lo tanto: Once DEPARTMENTS nicos
tienen
los EMPLOYEES que trabajan en ellos, pero al menos un empleado no han sido
adjudicados a un departamento.

Pregunta 2: Cuntos COUNTRIES estn all en la regin de Europa?

1. Esta pregunta comprende dos partes. Considere la comando de REGIONS, que
contiene cuatro REGIONS cada uno nicamente identificado por un valor de
REGION_ID, y la comando de COUNTRIES, que tiene una columna
REGION_ID que indica a que la regin un pas pertenece.
2. La primera pregunta tiene que identificar el REGION_ID de la regin de Europa.
Esto
es llevado a cabo por la select SQL:

seleccione * de REGIONS;
3. La ilustracin siguiente muestra que la regin de Europa tiene un REGION_ID
valor de 1:
Ejecute una Select SENTENCIA Bsica
69


















4. Para identificarse que los COUNTRIES tienen 1 como su REGION_ID, usted necesita a ex -
ecute la pregunta de SQL siguiente

seleccione region_id, country_name de COUNTRIES;
5. A mano contando las filas de pas con un REGION_ID de 1 en el siguiente
la ilustracin ayuda a contestar a la segunda pregunta:



















6. La respuesta a la segunda pregunta es por lo tanto: hay ocho COUNTRIES en
la regin de Europa por lo que el modelo de datos de HORA est referido.
70
Captulo 2:
Extraccin de datos Usando el SQL Select SENTENCIA



Expresiones de SQL y Operadores
La forma general de la select SENTENCIA introdujo la nocin esto columnas
y las expresiones son seleccionables. Una expresin es por lo general arreglada de una
operacin realizada en uno o varios valores de columna. Los operadores que pueden
seguir valores de columna para formar una expresin dependen del tipo de datos de la
columna. Ellos son los cuatro operadores aritmticos cardinales (adicin, substraccin,
multiplicacin, y divisin) para columnas numricas; el operador de encadenamiento
para carcter o columnas de cuerda; y la adicin y operadores de substraccin para fecha
y columnas timestamp. Como en la aritmtica regular, hay un pedido predefinido de la
evaluacin (precedencia de operador) cuando ms de un operador ocurre en una
expresin. Los soportes redondos tienen la precedencia ms alta. La divisin y las
operaciones de multiplicacin son siguientes en la jerarqua y son evaluadas antes de
adicin y substraccin, que tienen la precedencia ms baja. Estos niveles de precedencia
son mostrados en la Tabla 2-1.
Las operaciones con el mismo nivel de la precedencia son evaluadas de la izquierda a
la derecha. Los soportes redondos pueden ser por lo tanto usados para hacer cumplir la
precedencia de operador no por defecto. La utilizacin de soportes generosamente cuando
la construccin de expresiones complejas es la prctica buena y es animada. Esto lleva al
cdigo legible que es menos propenso al error. Las expresiones abren un gran nmero de
posibilidades de manipulacin de datos tiles.

Los Operadores aritmticos Consideran el ejemplo de la comando
JOB_HISTORY, que almacena la fecha de inicio y la fecha de finalizacin del trmino de
un empleado en un papel de trabajo anterior. Puede ser til con objetivos de pensin o
impuesto, por ejemplo, de contar cuanto un empleado trabaj en aquel papel. Esta
informacin puede ser obtenida usando una expresin aritmtica. Hay unos elementos
interesantes tanto de la select SQL como de los resultados devueltos de la Figura 2-7
aquella autorizacin discusin adicional.
Cinco elementos han sido especificados en la clusula SENTENCIA. Los primeros cuatro
son columnas regulares de la comando JOB_HISTORY a saber: EMPLOYEE_ID, JOB_ID,
FECHA de START_, y END_DATE. Los dos trminos ltimos proporcionan la
informacin de la fuente requerida calcular el nmero de das que un empleado llen una
posicin particular. Considere que el empleado nmero 176 en la novena fila de salida. Este
empleado comenz como unas Ventas

TABLA 2-1
Nivel de precedencia
Smbolo de operador
Operacin

Precedencia
Ms alto
()
Soportes o parntesis
de Aritmtica
Medio
/
Divisin
Operadores
Medio
-
Multiplicacin


Ms bajo

Substraccin

Ms bajo
+
Adicin
Ejecute una Select SENTENCIA Bsica
71



LA FIGURA 2-7 La expresin aritmtica para calcular el nmero de das trabaj






























Gerente el 1 de enero de 1999 y empleo terminado el 31 de diciembre de 1999. Por lo tanto,
este empleado trabaj durante exactamente un ao, que, en 1999, consisti en 365 das.
El nmero de das durante los cuales un empleado fue empleado puede ser calculado
usando el quinto elemento en la clusula SENTENCIA, que es una expresin. Esta
expresin demuestra que la aritmtica realizada en columnas que contienen la
informacin de fecha devuelve valores numricos que representan un cierto nmero de
das.
Para hacer cumplir la precedencia de operador de la operacin de substraccin, la
subexpresin end_date-start_date es encerrada en soportes redondos. Un da fue aadido
para compensar la prdida aritmtica de un da que proviene de la operacin de
substraccin. Suliste que un empleado comenz el trabajo el 1 de enero y sali ms tarde
ese da. Un da debe ser aadido a la frmula, por otra parte la subexpresin
end_date-start_date volvera incorrectamente los das cero trabajaron.
72
Captulo 2:
Extraccin de datos Usando el SQL Select SENTENCIA



Una frmula hipottica para predecir la probabilidad de un meteorito se ducha en a
la regin geogrfica particular ha sido ideada. Las dos expresiones puestas en una lista en la Figura 2-8 son
idnticas excepto la expresin de % de Probabilidad de Ducha de Meteorito. Sin embargo, como los resultados
en la comando siguiente demuestran, un clculo diferente est siendo hecho por cada expresin. Note que las
dos expresiones se diferencian muy ligeramente. La expresin 2 tiene un par de parntesis al mismo final,
encerrando (10 5). Considere como las expresiones son evaluadas para la regin de Asia donde REGION_ID es 3
como mostrado en la comando siguiente:


Paso
1. 2.

3.









4.








5.


6.


Expresin 1
region_id * 100/5 + 20 / 10 5
Substituya region_id con el valor:
3 * 100 / 5 + 20 / 10 5 Los operadores con la precedencia ms alta son la dos divisin y operadores de multiplicacin.
stos deben ser evaluados primero. Si ms de un operador con el mismo nivel de la precedencia est presente en una
expresin, entonces stos sern evaluados de la izquierda a la derecha. Por lo tanto, la primera subexpresin para ser
evaluada es: 3*100: 300 / 5 + 20 / 10 5 La siguiente subexpresin para ser evaluada es: 300/5:






60 + 20/10 5 La siguiente subexpresin para ser evaluada es: 20/10: 60 + 2 5 Los operadores restantes son una adicin
y un operador de substraccin que comparten el mismo nivel de la precedencia. stos sern por lo tanto evaluados de la
izquierda a la derecha. La siguiente subexpresin para ser evaluada es: 60+2: 62 5=57


Expresin 2
region_id * 100/5 + 20 / (10 5)
Substituya region_id con el valor:
3 * 100 / 5 + 20 / (10 5) El operador con la precedencia ms alta es el par de parntesis y stos deben ser evaluados
primero. Por lo tanto, la primera subexpresin para ser evaluada es: (10 5):




Los 3*100/5 + 20/5 Los siguientes operadores en la expresin con la precedencia ms alta son la dos divisin y
operadores de multiplicacin. Si ms de un operador con el mismo nivel de la precedencia est presente en una
expresin, entonces stos sern evaluados de la izquierda a la derecha. Por lo tanto, la siguiente subexpresin para ser
evaluada es: 3*100: 300/5 + 20/5

La siguiente subexpresin para ser evaluada es: 300/5: 60 + 20/5 La siguiente subexpresin para ser evaluada es: 20/5:




60 + 4 = 64
Ejecute una Select SENTENCIA Bsica
73



LA FIGURA 2-8 Uso del encadenamiento y operadores aritmticos































Las expresiones ofrecen posibilidades interminables y son una de las
construcciones fundamentales en select SENTENCIAS. Como usted practica SQL
en su entorno de base de datos de prueba, usted puede encontrar dos errores de
Oracle infames: "ORA-00923: DE palabra clave no encontrada donde esperado" y
"ORA-00942: la comando o la vista no existen".Else son indicativos de ortografa o
errores de puntuacin, como la ausencia de citas de inclusin alrededor de literales
de carcter. No sea perturbado por estos mensajes. Recuerde, usted no puede
causar dao a la base de datos si todo que usted hace selecciona datos. Es una
operacin slo para leer y el peor que usted puede hacer es ejecutan una
pregunta de nonperformant.
74
Captulo 2:
Extraccin de datos Usando el SQL Select SENTENCIA



La expresin y Column Aliasing Figure 2-7 introdujeron un nuevo concepto llamado la columna
aliasing. Note como la columna de expresin tiene un ttulo significativo llamado Das EMPLOYEES. Este
ttulo es un alias. Un alias es un nombre alterno para una columna o una expresin. Si esta expresin no
hiciera el uso de un alias, el ttulo de columna sera: (FECHA-START_DATE de END_) +1, que es poco
atractivo y no muy descriptivo. Los aliases son sobre todo tiles con expresiones o clculos y pueden ser
puestos en prctica de varios modos. Hay unas reglas que gobiernan el uso de aliases de columna en select
SENTENCIAS. En la Figura 2-7, el alias dado para la expresin deliberada llamada "Das EMPLOYEES"
fue especificado dejando un espacio y escribiendo el alias en dobles comillas. Estas comillas son necesarias
por dos motivos. En primer lugar, este alias es arreglado de ms de una palabra. En segundo lugar, la
preservacin de instancia de un alias slo es posible si el alias es doble citado. Ya que la Figura 2-9 muestra,
"ORA-00923: DE

LA FIGURA 2-9 Uso de columna y aliases de expresin
Ejecute una Select SENTENCIA Bsica
75



la palabra clave no encontrada donde esperado" error es devuelta cuando un alias multiredactado no es doble
citado.
El error ORA-00923 no es al azar generado por el servidor. El intrprete de Oracle trata de tratar la
select y encuentra un problema con ella. Como esto trata esta select particular, esto encuentra un problema
con la lnea 2. Un smbolo de asterisco es insertado en el punto de partida del problema: la palabra
Empleada. La lnea 2 fue tratada y la expresin era aliased con la palabra Das. El espacio despus de Das
indica al intrprete de Oracle que, ya que no hay ninguna coma adicional para indicar otro trmino que
pertenece a la clusula SENTENCIA, es completo. Por lo tanto, esto espera encontrar el DE la clusula
despus. En cambio esto encuentra la palabra Empleada y cede este error. Los mensajes de error del
servidor de Oracle son informativos y usted debera leerlos con cuidado para resolver problemas. Este error
es evitado encerrando un alias que contiene un espacio u otros carcteres especiales, tal como # y $, en
dobles comillas como mostrado alrededor del alias "Das EMPLOYEES" en la Figura 2-7.
El segundo ejemplo en la Figura 2-9 ilustra otra caracterstica interesante de la columna aliasing. Han
prescindido otra vez de dobles comillas y un carcter subrayar es substituido por el espacio entre las
palabras para evitar un error devuelto. El intrprete de Oracle trata la select, no encuentra ningn
problema, y la ejecuta. Note que aunque el alias fuera especificado como Date_ Empleado, con slo las
cartas de ttulo del alias capitalizado, el ttulo de expresin fue devuelto como DATE_EMPLOYED: todas
las cartas fueron automticamente convertidas a la mayscula. As, para conservar el instancia del alias,
debe ser encerrado en dobles comillas.
Los aliases encontrados hasta ahora han sido especificados dejando un espacio despus de una columna o
expresin e insertando el alias. SQL ofrece un modo ms formalizado de insertar aliases. El YA QUE la
palabra clave es insertada entre la columna o expresin y el alias. La figura 2-10 ilustra el uso variado de los
tipos diferentes de columna aliasing. Tanto el EMPLOYEE_ID como las columnas JOB_ID son aliased
utilizacin el COMO la palabra clave, mientras los "Das" expresin Empleada son aliased utilizacin de un
espacio. El YA QUE la palabra clave es opcional ya que tambin es posible usar un espacio antes de
especificar un alias, como hablado antes. El uso del COMO la palabra clave realmente mejora, sin embargo,
la legibilidad de select SQL, y los autores creen que es SQL bueno codificacin del hbito de formarse.

El carcter y el Operador de Encadenamiento de Cuerda Los dobles smbolos de tubo ||
representan al operador de encadenamiento de carcter. Este operador es usado para afiliarse a expresiones
de carcter o columnas juntos para crear una expresin de carcter ms grande. Las columnas de una
comando pueden ser conectadas el uno con el otro o con series de carcteres literales para crear una
expresin de carcter consiguiente.
76
Captulo 2:
Extraccin de datos Usando el SQL Select SENTENCIA



FIGURA 2-10

Uso del COMO palabra clave
para especificar aliases de
columna















La figura 2-8 muestra que el operador de encadenamiento es bastante flexible para ser
usado tiempos mltiples y casi en todas partes en una expresin de carcter. Aqu, el
carcter literal ser concadenado a los contenido de datos de la columna
REGION_NAME. Esta nueva serie de carcteres es concadenada adelante al carcter la
"regin literal est en el Planeta tierra," y la expresin entera es aliased con la columna
amistosa que encabeza "la Posicin Planetaria." Note como cada fila en el SET de
resultados es construida por la aplicacin sistemtica de la expresin a cada valor de fila
de la comando.
Considere la primera fila de datos de la "Posicin Planetaria" columna de expresin.
Esto devuelve "La regin de Europa est en el Planeta tierra." Una oracin legible por las
filas de datos ha sido creada concadenando series literales de carcteres y espacios al uno
o el otro lado del valor de columna REGION_NAME de cada fila. La columna
REGION_ID ha sido aliased para mostrar que las columnas regulares as como las
expresiones pueden ser aliased. Adelante, los ttulos de columna son en ausencia
mostrados en la mayscula, pero pueden ser anulados usando un alias como "regin Id."
Los tipos de datos de las columnas preguntadas determinan como SQL*Plus y el
Developer SQL presente sus datos por defecto salida. Si el tipo de datos es numrico
entonces los datos de columna son formateados para ser correctos alineado. Si el tipo de
datos es el carcter o la fecha, entonces los datos de columna son formateados para ser
dejados alineados.




Literales y la Comando DUAL
Ejecute una Select SENTENCIA Bsica
77
Los valores literales en expresiones son un acontecimiento comn. Estos valores se refieren a numrico,
carcter, o fecha y valores de tiempo encontrados en clusulas SENTENCIAS que no provienen de ningn
objeto de base de datos. La concatenacin de literales de carcter a datos de columna existentes puede ser
til, como introducido en la Figura 2-8. Y el procesamiento de literales que no tienen nada que ver con
datos de columna existentes? Para asegurar el consecuencia relacional, el Oracle ofrece una solucin
inteligente del problema de usar la base de datos para evaluar expresiones que no tienen nada que ver con
ninguna comando o columnas. Para conseguir que la base de datos evale una expresin, una select
SENTENCIA sintcticamente legal debe ser presentada. Y si usted quisiera saber la suma de dos nmeros
o dos literales numricos? Estas preguntas slo pueden ser contestadas relacionndose con la base de datos
en una manera relacional. El oracle soluciona el problema de la interaccin relacional con la base de datos
que acta sobre expresiones literales ofreciendo una comando especial llamada DUAL. Recuerde la
comando DUAL descrita en la Figura 2-1. Esto contiene una columna llamada el SIMULADOR del tipo de
datos de carcter. Usted puede ejecutar la pregunta: SELECCIONE * DEL DUAL, y el valor de datos "X"
es devuelto como los contenido de la columna FALSA. La comando DUAL permite que expresiones
literales sean seleccionadas de ello para el procesamiento y vuelve la expresin causa su fila sola. Es
excepcionalmente til ya que esto habilita una variedad de solicitudes de procesamiento diferentes para ser
hechas de la base de datos. Usted puede querer saber cuantos segundos all son en un ao. La figura 2-11
demuestra una expresin aritmtica ejecutada contra la comando DUAL. Las pruebas de expresiones
complejas durante el desarrollo, preguntando la comando dual, son un mtodo eficaz de evaluar si estas
expresiones trabajan correctamente. Las expresiones literales pueden ser preguntadas de cualquier
comando, pero recordar que la expresin ser tratada para cada fila en la comando.

seleccione 'literal' || 'tratando la utilizacin de la comando de REGIONS' de REGIONS;
La select precedente devolver cuatro lneas en el SET de resultados, ya que hay
cuatro filas de datos en la comando de REGIONS.

Dos Citas Solas o el Operador de Cotizacin Alternativo Las cadenas de caracteres
literales concadenadas hasta ahora han sido palabras singulares prepended y han aadido a expresiones de
columna. Estos literales de carcter son especificados usando comillas solas. Por ejemplo:

seleccione 'Soy un carcter cuerda literal'
78
Captulo 2:
Extraccin de datos Usando el SQL Select SENTENCIA



LA FIGURA 2-11 Utilizacin de la comando DUAL

























Y los literales de carcter que contienen comillas solas? Plurals plantean un problema
particular para el carcter procesamiento literal. Considere la select siguiente:

escogido 'Plural tiene una cotizacin demasiado' del dual;
Como el ejemplo en la Figura 2-12 muestra, ejecutando esta select causa un ORA-
00923 error de Oracle para ser generado. Esto podra parecer a un error raro, pero despus
del examen ms cercano, el intrprete de Oracle con xito trata la select SENTENCIA
hasta la posicin 16, en cual punto esto espera "un DE" la clusula. La posicin 1 para
colocar 16 es:

seleccione 'a Plural
Ejecute una Select SENTENCIA Bsica
79



FIGURA 2-12

Error tratando con literales
con citas implcitas








El servidor de Oracle trata este segmento para significar que el carcter literal 'Plural'
es aliased como la columna "s". A este punto, el intrprete espera "un DE" la clusula, pero en
cambio encuentra que la palabra "tiene". Esto entonces genera un error.
De este modo, cmo son palabras que contienen comillas solas tratadas con? Hay
esencialmente dos mecanismos disponibles. El ms popular de stos debe aadir una
comilla sola adicional al lado de cada comilla sola que ocurre naturalmente en la cadena
de caracteres. La figura 2-13 demuestra como el error anterior es evitado reemplazando el
carcter 'Plural literal con el literal 'Plural'' s.
El segundo ejemplo en la Figura 2-13 muestra que la utilizacin de dos citas solas
para manejarse cada cotizacin sola que ocurre naturalmente en un carcter literal puede
hacerse sucia y susceptible de errores como el nmero de aumentos de literales
afectados. El oracle ofrece una manera comandoada de tratar con este tipo del carcter
literal en la forma de la cotizacin alternativa (q) el operador. Note que el problema
consiste en que el Oracle eligi los carcteres de cotizacin solos como el par especial de
smbolos que encierran o envuelven cualquier otro carcter literal. Estos smbolos que
encierran el carcter podran haber sido algo adems de comillas solas.
Teniendo en cuenta esto, considere la cotizacin alternativa (q) operador. El operador
q le habilita para elegir de un SET de pares posibles de smbolos envolventes para literales
de carcter como alternativas a los smbolos de cotizacin solos. Las opciones son
cualquier byte solo
80
Captulo 2:
Extraccin de datos Usando el SQL Select SENTENCIA



LA FIGURA 2-13 Uso de dos citas solas con literales con citas implcitas





























o carcter de multibyte o los cuatro soportes: (soportes redondos), {tirantes rizados},
[corchetes], o <corchetes angulares>. Usando al operador q, el carcter delimiter puede
ser con eficacia cambiado de una comilla sola a cualquier otro carcter, como mostrado en
la Figura 2-14.
La sintaxis del operador de cotizacin alternativo es como sigue: el q'delimiter'character
literal que puede incluir las citas solas delimiter'
donde delimiter puede ser cualquier carcter o soporte. Los primeros y segundos ejemplos
en la Figura 2-14 muestran el uso de corchetes angulares y corchetes como el carcter
delimiters, mientras el tercer ejemplo demuestra como una mayscula "X" ha sido usada
como el carcter especial delimiter smbolo por el operador de cotizacin alternativo.
Ejecute una Select SENTENCIA Bsica
81



LA FIGURA 2-14 La cotizacin alterna (q) operador





























NULO no Es Nada
El concepto de un valor nulo fue introducido en la discusin ms temprana del comando
DESCRIBIR. Tanto el cero de nmero como un espacio en blanco son diferentes del nulo
ya que ellos ocupan el espacio. Nulo se refiere a una ausencia de datos. Una fila que
contiene un valor nulo carece de datos de aquella columna. Nulo es formalmente
definido como un valor que es no disponible, no adjudicado, desconocido, o inaplicable.
En otras palabras, las reglas de contratacin con valores nulos necesitan el estudio
cuidadoso. El frainstancia de prestar atencin al tratamiento especial que los valores
nulos requieren llevar casi seguramente a un error, o peor, una respuesta inexacta.
Los valores nulos pueden ser un concepto complicado para venir a apretones con. El
problema proviene de la ausencia de nulo en una lnea numrica. No es un valor
verdadero, tangible que puede estar relacionado con el mundo fsico. Nulo es un
placeholder en una columna no obligatoria hasta
82
Captulo 2:
Extraccin de datos Usando el SQL Select SENTENCIA




DENTRO DEL EXAMEN


Hay dos objetivos de certificacin en este captulo. Las capacidades de la select SENTENCIA
introducen los tres conceptos tericos fundamentales de proyeccin, seleccin, y conexin. Los
ejemplos prcticos que ilustran la seleccin incluyen la construccin de la clusula SENTENCIA y la
utilizacin de la palabra clave DISTINTA para limitar las filas volvi. La proyeccin es demostrada en
ejemplos donde las columnas y las expresiones son restringidas para la recuperacin. Segundo objec-tive
de ejecutar una select SQL mide su entendimiento de la forma bsica de la select SENTENCIA. El
examen mide dos aspectos. En primer lugar, la sintaxis es medida: se requiere que usted manche errores de
sintaxis. Los errores de sintaxis de SQL son levantados cuando el intrprete de Oracle no entiende una
select. Estos errores


podra tomar la forma de select que fallan terminators, como un punto y coma ausente, no encerrando
literales de carcter en operadores de cotizacin apropiados, o las select que hacen el uso del invlido
reservaron palabras.
En segundo lugar, el sentido de una select es mea-sured. Usted ser presentado un syntacti-cally select
legtima y pedido elegir entre descrip-exacto e inexacto tions de aquella select. El examen mide el
conocimiento alrededor de los objetivos de certificacin usar preguntas de formato selectas mltiples. Su
entendimiento de columna aliasing, aritmtica y operadores de encadenamiento, carcter cotizacin
literal, el operador de cotizacin alternativo, sintaxis de select de SQL, y tipos de datos de columna
bsicos ser probado.



algunos verdaderos datos son almacenados en su lugar. Hasta entonces, precvase de
conducir la aritmtica con columnas nulas.
Esta seccin se concentra en relacionarse con datos de columna nulos con la
afirmacin SENTENCIA y su impacto a expresiones.

No las Tablas de Columnas Nulas y Nullable almacenan filas de datos que
estn divididos en una o varias columnas. Estas columnas tienen nombres y tipos de datos
asociados con ellos. Algunos de ellos son obligados por reglas de base de datos de ser
columnas obligatorias. Es obligatorio para algunos datos ser almacenado en el NO
columnas NULAS en cada fila. Cuando las columnas de una comando, sin embargo, no
son obligadas por las coacciones de base de datos a sostener datos para una fila, estas
columnas ejecutan el riesgo de ser vacas.
En la Figura 2-15, la comando de EMPLOYEES es descrita, y unas columnas son
seleccionadas de ella. Hay cinco NO columnas NULAS y seis columnas NULLABLE.
Nullable es un trmino a veces sola describir una columna que es permitida almacenar
valores nulos. Una de las columnas nullable es la columna COMMISSION_PCT.
Ejecute una Select SENTENCIA Bsica
83



LA FIGURA 2-15 Valores nulos en la columna Commission_Pct






























La figura 2-15 muestra las dos primeras filas de datos de la comando de EMPLOYEES. Esto
es suficiente para ilustrar que ambos estos archivos de empleado tienen valores nulos en
sus columnas COMMISSION_PCT.
El Developer de SQL hace simple observar valores nulos en columnas, como mostrado
en la Figura 2-16. Aqu, la palabra (nula) es salida cuando se encuentra un valor nulo,
como con la columna COMMISSION_PCT. El Developer de SQL apoya la
personalizacin de esta descripcin por defecto de datos de columna nulos.
La columna aliased como "Aritmtica Nula" es una expresin arreglada de
COMMISSION_PCT + EMPLOYEE_ID + 10. En vez de devolver un valor numrico,
esta columna vueltas nulas. Hay una razn importante de esto:
Cualquier clculo aritmtico con un valor NULO siempre vuelve NULO.
84
Captulo 2:
Extraccin de datos Usando el SQL Select SENTENCIA



LA FIGURA 2-16 La aritmtica nula siempre devuelve un valor nulo.






























El oracle ofrece un mecanismo para relacionarse aritmticamente con valores NULOS
usando las funciones generales habladas en el Captulo 5. Como la expresin de columna
aliased como "Divisin por el Nulo" ilustra, hasta la divisin por un valor nulo resulta en el
nulo, a diferencia de la divisin por el cero, que causa un error. Finalmente, note el
impacto de la palabra clave nula cuando usado con el operador de encadenamiento de
carcter. Nulo es concadenado entre el FIRST_NAME y columnas LAST_NAME, an
no tiene ningn impacto. Los operadores de encadenamiento de carcter no hacen
instancia nulo, mientras las operaciones aritmticas que implican valores nulos siempre
resultan en el nulo.
Ejecute una Select SENTENCIA Bsica
85



Las Claves forneas y el diseo de modelo de Datos de Columnas Nullable
a veces llevan a situaciones problemticas cuando las tablas estn relacionadas el uno con
el otro va una relacin de clave fornea y primaria, pero la columna en la cual la clave
fornea est basada es nullable.
La comando de DEPARTMENTS tiene, como su clave primaria, la columna
DEPARTMENT_ID. La comando de EMPLOYEES tiene una columna
DEPARTMENT_ID que es reprimida por su relacin de clave fornea a la columna
DEPARTMENT_ID en la comando de DEPARTMENTS. Esto significa que ningn
registro en la comando de EMPLOYEES es permitido tener en su columna
DEPARTMENT_ID un valor que no est en la comando de DEPARTMENTS. Esta
integridad de referencia forma la base para la tercera forma normal y es crtica a la
integridad de base de datos total.
Pero y valores NULOS? Puede la columna DEPARTMENT_ID en la comando de
DEPARTMENTS contener nulls? La respuesta es no. El oracle insiste que cualquier
columna que sea una clave primaria es implcitamente reprimida a ser obligatoria. Pero y
coacciones implcitas en columnas de clave fornea? Esto es un dilema para el Oracle,
desde a fin de permanecer flexible y satisfacer el auditorio ms amplio, no puede insistir
que las columnas relacionadas a travs de coacciones de integridad de referencia
debieran ser obligatorias. Adelante, no todas las situaciones exigen esta funcionalidad.


GUIN & SOLUCIN

Usted construye una expresin aritmtica que calcula la renta imponible basada en SUELDO de un empleado y
columnas COMMISSION_PCT, ambos de las cuales son nullable. Es posible convertir los valores nulos en la una
o la otra columna al cero para devolver siempre una renta imponible numrica?
S, pero no con la informacin usted ha cubierto hasta ahora. Los valores nulos requieren manejarse especial. En el
Captulo 5, hablamos de la funcin de NVL, que proporciona un mecanismo para convertir valores nulos en valores
de datos ms aritmticos y amistosos.
Un alias proporciona un mecanismo para renombrar una columna o una expresin. Bajo qu condiciones debera
usted encerrar un alias en dobles citas?
Si un alias contiene ms de una palabra o si el instancia de un alias debe ser conservado, entonces debera ser
encerrado en dobles comillas. El frainstancia de doblar la cotizacin un alias multiredactado levantar un error de
Oracle. El frainstancia de doblar la cotizacin un alias de palabra nica causar el alias devuelto en la mayscula.
Trabajando con el carcter valores literales que incluyen comillas solas, cmo debera usted especificar estos
literales en la clusula SENTENCIA sin levantar un error?
Hay dos mecanismos disponibles. Ms acercamiento comn debe reemplazar cada cotizacin sola que ocurre
naturalmente con dos citas solas. El otro enfoque debe hacer el uso del operador de cotizacin alterno para
especificar a un par alterno de carcteres con los cuales encerrar literales de carcter.
86
Captulo 2:
Extraccin de datos Usando el SQL Select SENTENCIA



La columna DEPARTMENT_ID en la comando de EMPLOYEES es realmente nullable.
Por lo tanto, el riesgo existe que hay archivos con valores de DEPARTMENT_ID nulos presentes en esta
comando. De hecho, hay tales archivos en la comando de EMPLOYEES. El modelo de datos de HORA
permite a EMPLOYEES, correctamente o no, no para pertenecer a ningn departamento. Realizando
junturas relacionales entre tablas, es completamente posible perder o excluir ciertos archivos que
contienen nulls en la columna de juntura. El captulo 7 explora modos de tratar con este desafo.


EJERZA 2-3 Experimentacin con Expresiones y la Comando DUAL
En este ejercicio gradual una conexin es hecha usando al Developer de SQL como la
HORA
usuario. Use expresiones y operadores para contestar a tres preguntas relacionadas con la
select SENTENCIA: Pregunta 1: se demostr antes como el nmero de das durante los
cuales los EMPLOYEES fueron EMPLOYEES en un trabajo podra ser calculado. Para
cuntos aos fueron EMPLOYEES los EMPLOYEES realizando estos papeles de trabajo y
cual eran sus EMPLOYEE_ID, JOB_ID, START_DATE, y valores de END_DATE?
Alias la columna de expresin en su pregunta con los Aos de alias EMPLOYEES. Suliste
que un ao consista en 365.25 das.

1. Comience al Developer SQL y conecte al esquema de HORA. 2. La proyeccin de
columnas requeridas incluye EMPLOYEE_ID, JOB_ID,
START_DATE, END_DATE, y una expresin llamada Aos EMPLOYEES de la
comando JOB_HISTORY.
3. La expresin puede ser calculada dividindose un ms la diferencia entre
END_DATE y START_DATE antes de 365.25 das, como mostrado despus:

seleccione employee_id, job_id, start_date, end_date,
((end_date-start_date) + 1)/365.25 "Aos EMPLOYEES" de job_history;

4. La ejecucin de la select SENTENCIA precedente cede los resultados mostrados
en
la ilustracin siguiente:
Ejecute una Select SENTENCIA Bsica
87


























Pregunta 2: Pregunte la comando de JOBS y devuelva una expresin sola de la forma El Trabajo que Id
para el trabajo <job_title's> es: <job_id>. Tome la nota que el job_title debera tener un apstrofe y un "s"
aadido a ello para leer ms naturalmente. Una muestra de esto salida para el presidente de organizacin es:
"El Trabajo Id para el trabajo presidencial es: AD_PRES." Alias esta expresin de columna como "Descripcin
del trabajo" usando el COMO palabra clave.

1. Hay soluciones mltiples de este problema. El enfoque elegido aqu es
manejarse las comillas solas que ocurren naturalmente con una cotizacin sola adicional.
2. Una expresin sola aliased como la Descripcin del trabajo se requiere y puede ser la estafa -
structed disecando el requisito en el literal "El Trabajo Id para" ser concadenado a la columna
JOB_TITLE. Esta cuerda es entonces concat-enated al literal "'s el trabajo es:" que es concadenado
adelante a la columna JOB_ID. Una comilla sola adicional es aadida para ceder la select
SENTENCIA que sigue:

seleccione 'El Trabajo que Id para el ' || job_title || '''s trabajo es:' || job_id
COMO "Descripcin del trabajo" de JOBS;
88
Captulo 2:
Extraccin de datos Usando el SQL Select SENTENCIA



3. Los resultados de esta pregunta de SQL son mostrados en la ilustracin siguiente:





















Pregunta 3: Utilizacin de la comando DUAL, calcule el rea de un crculo con el radio
6000 unidades, con la pi que es aproximadamente 22/7. Use la frmula: rea = pi radio
radio. Alias el resultado como "rea".

1. El funcionamiento con la comando DUAL puede parecer al principio curioso.
Usted se acostumbra a
como su funcionalidad se hace ms aparente. Esta pregunta implica escogido - ing
una expresin aritmtica literal de la comando DUAL para ceder una fila sola
respuesta calculada que no est basada en los valores de columna en ninguna
comando.
2. La expresin puede ser calculada usando la select SQL siguiente; notar
el uso de soportes para precedencia.

escogido (22/7) * (6000 * 6000) rea de dual

3. Los resultados devolvieron el espectculo el rea aproximada del crculo como
113142857.14
unidades cuadradas.




RESUMEN DE CERTIFICACIN
Resumen de certificacin
89
La construccin de select SENTENCIA forma la base para la mayora de interacciones
esto ocurre con una base de datos de Oracle. Estas interacciones pueden tomar la forma
de preguntas publicadas del Developer SQL o SQL*Plus o cualquier nmero del Oracle y
otro tercero - herramientas de cliente. En su corazn, estos herramientas traducen
peticiones de la informacin en select SENTENCIAS, que son ejecutadas entonces por
la base de datos.
La estructura de una comando ha sido descrita. Las filas de datos han sido
recuperadas y el formato orientado al SET de los resultados fue revelado. Los resultados
fueron refinados por la proyeccin. En otras palabras, sus preguntas slo pueden incluir
las columnas usted est interesado en recuperar y excluye las columnas restantes en una
comando.
Las reglas de sintaxis SENTENCIAS son bsicas y flexibles, y los errores de lenguaje
deberan ser raros debido a su gramtica Parecida a un inglesa. La terminacin de select
usando puntos y coma, respeto al carcter sensibilidad del instancia literal, y conciencia
de valores nulos debera asistir con la evitacin de errores.
Las expresiones exponen una vista de posibilidades de manipulacin de datos por la
interaccin de aritmtica y operadores de carcter con columna o datos literales, o una
combinacin de los dos.
La forma general de la select SENTENCIA fue explorada y la fundacin para la
extensin de esta select fue construida.
El M los ejercicios de Prueba son arreglados de dos componentes. El primer
componente consiste de preguntas que le dan una idea sobre lo que pueden preguntarle
durante el examen. El segundo componente le habilita para practicar el conocimiento de
la lenguaje hablado en este captulo en un formato de laboratorio. Hablan de las
soluciones de ambas categoras de preguntas detalladamente en la seccin de soluciones.
90
Captulo 2:
Extraccin de datos Usando el SQL Select SENTENCIA




TALADRADORA DE DOS MINUTOS

Liste las Capacidades en una lista de SQL Select SENTENCIAS
Las tres operaciones fundamentales que SELECCIONAN select son capaces de
son la proyeccin, la seleccin, y la conexin.
Proyeccin se refiere a la restriccin de columnas seleccionadas de una comando. Utilizacin
proyeccin, usted slo recupera las columnas del inters y no cada columna posible.
Seleccin se refiere a la extraccin de filas de una comando. La seleccin incluye el
restriccin adicional de las filas extradas basadas en varios criterios o condi-tions. Esto
permite que usted slo recupere las filas que son del inters y no cada fila en la comando.
Conexin implica conectar dos o ms tablas basadas en atributos comunes.
La conexin permite que datos sean almacenados en la tercera forma normal en tablas
distintas, en - lugar de en una comando grande.
Una combinacin ilimitada de proyecciones, las selecciones, y las junturas proveen el
lenguaje para extraer los datos relacionales requeridos.
Una definicin estructural de una comando puede ser obtenido usando DESCRIBIR
comando.
Columnas en tablas almacenan tipos diferentes de datos usando varios tipos de datos, lo ms
comn de que son NMERO, VARCHAR2, FECHA, y TIMESTAMP.
El NMERO de tipo de datos (x, y) implica que la informacin numrica almacen en esto
la columna puede tener en la mayor parte de dgitos x, pero al menos y de estos dgitos debe
aparecer a la derecha de la coma decimal.
El comando DESCRIBIR pone en una lista los nombres, tipos de datos, y estado nullable de
todas las columnas en una comando.
columnas Obligatorias tambin son mandados a como NO columnas NULAS

Ejecute una Select SENTENCIA Bsica
La sintaxis de la clusula SENTENCIA primitiva es como sigue:
SELECCIONE * | {column|expression [distinto] [alias], .}
La select SENTENCIA tambin es referido como una pregunta SENTENCIA y comprende
al menos dos clusulas, a saber la clusula SENTENCIA y el DE clusula.
Taladradora de dos minutos
91



La clusula SENTENCIA determina la proyeccin de columnas. En otras palabras, el
La clusula SENTENCIA especifica qu columnas son incluidas en los resultados devueltos. El
asterisco (*) el operador es usado como un smbolo de comodn para indicar todas las columnas.
De este modo, la select SENTENCIA * DE CUENTAS devuelve todas las columnas disponibles en la
comando de CUENTAS.
el DE la clusula especifica la comando de la fuente o tablas de las cuales los artculos son
seleccionado. Los artculos de preceder de palabra clave DISTINTOS en las causas de clusula
SENTENCIAS
combinaciones duplicadas de estos artculos para ser excluidos del SET de resultados devuelto.
SQL select debera ser terminado con un punto y coma. Como una alternativa,
una nueva lnea puede ser aadida despus de que una select y una cuchillada avanzada pueden ser
usadas para ejecutar la select.
SQL select puede ser escrito y ejecutado en minscula o mayscula. Estar
cuidadoso relacionndose con literales de carcter ya que stos son sensibles al instancia.
operadores Aritmticos y el operador de encadenamiento de cuerda que afecta a Cnel -
el umn y los datos literales forman la base de expresiones SQL. el Expresiones y columnas regulares
puede ser aliased utilizacin el COMO la palabra clave o por
la salida de un espacio entre la columna o expresin y el alias. Si un alias contiene palabras
mltiples o el instancia del alias es importante, esto
debe ser encerrado en dobles comillas. Naturalmente ocurrir las citas solas en un carcter literal
pueden ser seleccionadas por
la fabricacin de uso de una cotizacin sola adicional por cotizacin que ocurre naturalmente o del
operador de cotizacin alternativo.
La comando DUAL es una columna sola y comando de fila sola que a menudo est acostumbrada
evale expresiones que no se refieren a columnas especficas o tablas. Columnas que no son
gobernadas por un NO la coaccin NULA tiene el
el potencial para almacenar valores nulos y es a veces mandado a como nullable columnas. valores
NULOS no son el mismo como un espacio en blanco o cero. Los valores NULOS se refieren a
una ausencia de datos. Nulo es definido como un valor que es no disponible, no adjudicado,
desconocido, o inaplicable.
Precaucin debe ser ejercido trabajando con valores nulos desde la aritmtica
con un valor nulo siempre cede un resultado nulo.
92
Captulo 2:
Extraccin de datos Usando el SQL Select SENTENCIA



M PRUEBA
Las preguntas siguientes le ayudarn a medir su entendimiento del material presentado en esto
captulo. Lea todas las opciones con cuidado porque podra haber ms de una respuesta correcta. Elija todo
el correcto responde de cada pregunta.
La prueba siguiente es tpica de las preguntas y el formato del OCP 11g examen del tema "Recuperar
Datos usando el SQL Select SENTENCIA." Estas preguntas a menudo hacen el uso del esquema de Recursos
humanos.

Liste las Capacidades en una lista de SQL Select SENTENCIAS
1. Qu pregunta crea una proyeccin del DEPARTMENT_NAME y LOCATION_ID
columnas de la comando de DEPARTMENTS? (Elija la mejor respuesta.) A. SELECCIONE
DEPARTMENT_NAME distinto, LOCATION_ID
DE DEPARTMENTS;
B. SELECCIONE DEPARTMENT_NAME, LOCATION_ID
DE DEPARTMENTS;
C. SELECCIONE DEPT_NAME, LOC_ID
DE DEPARTAMENTO;
D. SELECCIONE DEPARTMENT_NAME COMO "LOCATION_ID"
DE DEPARTMENTS;
2. Despus de describir la comando de EMPLOYEES, usted descubre que la columna de SUELDO tiene
unos datos
tipo del NMERO (8,2). Qu valor (es) de SUELDO no ser permitido en esta columna? (Elija todo
que se aplican.) A. SALARY=12345678 B. SALARY=123456.78 C. SALARY=12345.678 D.
SALARY=123456 E. SALARY=12.34
3. Despus de describir la comando JOB_HISTORY, usted descubre que el START_DATE y END_
Las columnas de FECHA tienen un tipo de datos de FECHA. Considere la expresin FECHA de
END_DATE-START_. (Elija dos select correctas.) A. Un valor del tipo de datos de FECHA es
devuelto. B. Un valor del NMERO de tipo es devuelto. C. Un valor del tipo VARCHAR2 es
devuelto.
M Prueba
93



D. La expresin es invlida ya que la aritmtica no puede ser realizada en columnas con la FECHA
tipos de datos.
E. La expresin representa los das entre el END_DATE y START_DATE menos un
da.
4. La comando de DEPARTMENTS contiene una columna DEPARTMENT_NAME con el tipo de
datos
VARCHAR2 (30). (Elija dos select verdaderas sobre esta columna.) A. Esta columna puede
almacenar datos de carcter hasta un mximo de 30 carcteres. B. Esta columna debe almacenar
datos de carcter que son al menos 30 carcteres mucho tiempo. C. El tipo de datos VARCHAR2 es
reemplazado por el tipo de datos de TRABAJO POR HORAS. D. Esta columna puede almacenar
datos en una columna con el tipo de datos VARCHAR2 (50) a condicin de que el
los contenido son como mximo 30 carcteres mucho tiempo.

Ejecute una Select SENTENCIA Bsica
5. Qu select informa sobre valores de JOB_ID nicos de la comando de EMPLOYEES? (Elija todos
esto se aplica.) A. SELECCIONE JOB_ID DE EMPLOYEES; B. SELECCIONE JOB_ID nico DE
EMPLOYEES; C. SELECCIONE JOB_ID distinto, EMPLOYEE_ID DE EMPLOYEES; D.
SELECCIONE JOB_ID distinto DE EMPLOYEES;
6. Elija las dos select ilegales. Las dos select correctas producen resultados idnticos. El
dos select ilegales harn que un error sea levantado: A. SELECCIONE DEPARTMENT_ID ||
'representa el ' ||
DEPARTMENT_NAME ||' Departamento' como "Informacin de Departamento" DE
DEPARTMENTS;
B. SELECCIONE DEPARTMENT_ID || 'representa el ||
DEPARTMENT_NAME ||' Departamento' como "Informacin de Departamento" DE
DEPARTMENTS;
C. seleccione department_id || 'representa el ' || department_name ||
'Departamento' "Informacin de Departamento" de DEPARTMENTS;
D. DEPARTMENT_ID escogido representa el Departamento DEPARTMENT_NAME como
"Informacin de departamento" DE DEPARTMENTS;
94
Captulo 2:
Extraccin de datos Usando el SQL Select SENTENCIA



7. Qu expresiones no devuelven valores NULOS? (Elija todo que se aplican.)
A. escogido ((10 + 20) * 50) + nulo de dual; B. escogido 'esto es un ' || nulo || 'prueba con nulls' del
dual; C. escogido nulo/0 de dual; D. seleccionan nulo || 'prueba' || nulo como "la Prueba" del dual;
8. Elija la sintaxis correcta para devolver todas las columnas y las filas de los datos de la comando de
EMPLOYEES.
A. seleccione todos de EMPLOYEES; B. seleccionan employee_id, first_name, last_name,
first_name, department_id
de EMPLOYEES; C. seleccionan el % de EMPLOYEES; D. seleccionan * de EMPLOYEES;
E. seleccionan *.* de EMPLOYEES;
9. El carcter siguiente expresin literal es seleccionado de la comando DUAL:
SELECCIONE 'la Coda '' s el juguete de esfuerzo favorito es su anillo naranja' del DUAL; (Elija el
resultado que es devuelto.) A. Un error sera devuelto debido a la presencia del dos juguete de
esfuerzo de favorito de B. Coda de citas adyacente es su anillo naranja C. Coda '' s juguete de
esfuerzo favorito es su anillo naranja D. 'Coda '' s juguete de esfuerzo favorito es su anillo naranja'
10. Hay cuatro filas de datos en la comando de REGIONS. Considere la select SQL siguiente:
SELECCIONE '6 * 6' "rea" DE REGIONS; Cuntas filas de resultados son devueltas y que valor es
devuelto por la columna de rea? (Elija la mejor respuesta.) A. 1 fila volvi, la columna de rea
contiene el valor 36 B. 4 filas volvieron, la columna de rea contiene el valor 36 para 4 fila de filas
C. 1 devuelta, la columna de rea contiene el valor 6 * 6 D. 4 filas volvieron, la columna de rea
contiene el valor 6 * 6 para 4 filas E. Un error de sintaxis es devuelto.

PREGUNTA DE LABORATORIO
En este captulo usted trabaj por ejemplos en el esquema de Recursos humanos. El oracle proporciona a
nmero de esquemas de ejemplo para usted para experimentar con y aprender conceptos diferentes de. Para
los ejercicios prcticos, usted usar la Entrada de Pedido, u OE, esquema. Las soluciones para estos
ejercicios
Pregunta de laboratorio
95



ser provisto utilizacin posterior al Developer de SQL. Usando al Developer de SQL o SQL*Plus,
conecte al esquema OE y complete las tareas siguientes.

1. Obtenga la informacin estructural para el PRODUCT_INFORMATION y PIDE tablas. 2.
Seleccione los valores de SALES_REP_ID nicos de la comando de PEDIDOS. Cuntos diferente
los representantes de ventas han sido adjudicados a pedidos en la comando de PEDIDOS?
3. Cree un SET de resultados basado en la comando de PEDIDOS que incluye el ORDER_ID,
ORDER_
FECHA, y columnas ORDER_TOTAL. Note como los ORDER_DATE salida es formateado
diferentemente del START_DATE y columnas END_DATE en la comando de HORA JOB_ID.
4. La comando PRODUCT_INFORMATION almacena datos en cuanto a los productos disponibles
para la venta
en un ficticio ESTO ferretera. Produzca un SET de resultados que sern tiles para un vendedor.
Informacin de producto de extracto en el formato <PRODUCT_NAME> con cdigo:
<PRODUCT_ ID> tiene el estado de: <PRODUCT_STATUS>. Alias la expresin como
"producto". Los resultados deberan proporcionar el LIST_PRICE, el MIN_PRICE, la diferencia
entre LIST_PRICE, y MIN_PRICE aliased como "Ahorros de Max Actual," junto con una
expresin adicional que toma la diferencia entre LIST_PRICE y MIN_PRICE y se divide esto por
el PRECIO LIST_ y luego multiplica el total por 100. Esta ltima expresin debera ser aliased
como "% de Max Discount."
5. Calcule la rea de superficie de la Tierra usando la comando DUAL. Alias esta expresin como
"El rea de la tierra." La frmula para calcular el rea de una esfera es: 4tr
2
. Suliste, para este ejemplo,
que la tierra sea una esfera simple con un radio de 3,958.759 millas y que t es 22/7.
96
Captulo 2:
Extraccin de datos Usando el SQL Select SENTENCIA



M PRUEBAN RESPUESTAS

Liste las Capacidades en una lista de SQL Select
SENTENCIAS
1. B. Una proyeccin es una restriccin intencional de las columnas devueltas de una
comando.
A es eliminado ya que la pregunta no tiene nada que ver con duplicados, peculiaridad,
o unicidad de datos. C incorrectamente selecciona columnas inexistentes llamadas DEPT_NAME
y LOC_ID de una comando inexistente llamada el departamento. El D devuelve slo una de las
columnas solicitadas: DEPARTMENT_NAME. En vez de proyectar adems la columna
LOCATION_ID de la comando de DEPARTMENTS, esto intenta al alias la columna
DEPARTMENT_NAME como LOCATION_ID.
2. el A y C. Columns con el tipo de datos NMERO (8,2) puede almacenar, como mximo, ocho
dgitos; de que,
como mximo, dos de aquellos dgitos son a la derecha de la coma decimal. Aunque A y C sean las
respuestas correctas, noten que ya que la pregunta es expresada negativamente, estos valores no son
permitidos ser almacenados en tal columna. A no es permitido porque contiene ocho dgitos de
nmero entero, pero el tipo de datos es reprimido a almacenar seis dgitos de nmero entero y dos
dgitos fraccionarios. El C no es permitido ya que tiene tres dgitos fraccionarios y el tipo de datos
permite un mximo de dos dgitos fraccionarios.
Los B, D, y E pueden ser legtimamente almacenados en este tipo de datos y, por lo tanto, son
incorrecto
respuestas a esta pregunta. El D muestra que los nmeros sin la parte fraccionaria son valores
legtimos para esta columna, mientras el nmero de dgitos en la parte de nmero entero no excede
seis dgitos.
3. B y E. El resultado de aritmtica entre dos valores de fecha representa un cierto nmero de das.
Los A, C, y D son incorrectos. Es un error comn para esperar el resultado de aritmtica
entre dos valores de fecha para ser una fecha tambin, entonces A puede parecer plausible, pero
es falso.
4. A y D. La escala del tipo de datos VARCHAR2, especificado entre parntesis, determina su
capacidad mxima para almacenar datos de carcter como mencionado por A. Si un valor de datos
que es como mximo 30 carcteres mucho tiempo es almacenado en cualquier tipo de datos, tambin
puede ser almacenado en esta columna como declarado por D.
el B es incorrecto porque es posible almacenar datos de carcter de cualquier longitud hasta 30
carcteres
en esta columna. El C es falso, ya que el tipo de datos de TRABAJO POR HORAS existe en la
paralela con el tipo de datos VARCHAR2.

Ejecute una Select SENTENCIA Bsica
5. D. Los valores de JOB_ID nicos son proyectados de la comando de EMPLOYEES
aplicando el
Palabra clave DISTINTA a slo la columna JOB_ID.
Los A, B, y C son eliminados desde Unas vueltas una lista sin restriccin de valores de JOB_ID
incluso
duplicados; el B hace el uso de la palabra clave NICA en el contexto incorrecto; y C selecciona el
M Respuestas de Prueba
97



combinacin distinta de JOB_ID y valores de EMPLOYEE_ID. Esto tiene el efecto de devolver
todas las filas de la comando de EMPLOYEES ya que la columna EMPLOYEE_ID contiene
valores nicos para cada registro de empleado. Adems, el C devuelve dos columnas, que no es lo
que fue al principio solicitado.
6. los B y D representan las dos select ilegales que devolvern errores de sintaxis si ellos son
ejecutado. Esto es una pregunta complicada porque esto pide las select ilegales y no las select
legales. El B es ilegal porque falla una cotizacin sola que encierra el carcter literal "representa
el." D es ilegal porque esto no hace el uso de citas solas para encerrar sus literales de carcter.
Los A y C son las select legales y, por lo tanto, en el contexto de la pregunta, son el
respuestas incorrectas. A y C parecen ser diferentes ya que el instancia de las select SQL es diferente
y Unos usos la palabra clave de alias COMO, mientras que C slo deja un espacio entre la expresin y
el alias. An tanto A como C producen resultados idnticos.
7. los B y D no devuelven valores nulos ya que las expresiones de carcter no son afectadas en mismo

camino por valores nulos como expresiones aritmticas. Los B y D no hacen instancia de la
presencia de valores nulos en sus expresiones y devuelven los literales de carcter restantes.
Los A y C devuelven valores nulos porque cualquier expresin aritmtica que implique una
voluntad nula
devuelva un nulo.
8. D. Un asterisco es el operador SQL que implica que todas las columnas deben ser seleccionadas
de un
comando.
Los A, B, C, y E son incorrectos. Unos usos TODA la palabra reservada pero pierden cualquier
columna
la especificacin y generar, por lo tanto, un error. El B selecciona algunas columnas, pero no todas
las columnas y, por lo tanto, no contesta a la pregunta. Los C y E hacen el uso de operadores de
seleccin ilegales.
9. B. La llave a la identificacin del resultado correcto est en el entendimiento del papel de solo
comillas. El literal entero es encerrado por un par de citas para evitar la generacin de un error. Las
dos citas adyacentes son necesarias para delimitar la cotizacin sola que aparece en el literal B.
Los A, C, y D son incorrectos. A es eliminado ya que ningn error es devuelto. C inexactamente
devuelve
dos citas adyacentes en la expresin literal y D vuelven un literal con todas las citas todava
presentan. El servidor de Oracle borra las citas usadas como el carcter delimiters despus de tratar el
literal.
10. D. La expresin literal '6 * 6' es seleccionada una vez para cada fila de datos en las REGIONS

comando.
Los A, B, C, y E son incorrectos. Unas vueltas una fila en vez de cuatro y calculan el producto

6 * 6. Los operadores de cotizacin de inclusin ejecutan 6 * 6 un carcter literal y no un literal
numrico que puede ser calculado. B correctamente devuelve cuatro filas, pero incorrectamente
evala el carcter literal como un literal numrico. C incorrectamente devuelve una fila en vez de
cuatro y E es incorrecto, porque la select SQL dada puede ser ejecutada.
98
Captulo 2:
Extraccin de datos Usando el SQL Select SENTENCIA



RESPUESTA DE LABORATORIO
La asuncin es hecha esto una base de datos de Oracle est disponible para usted para practicar con. La
base de datos
el administrador (DBA) en su organizacin puede asistirle con instalarse y establecerse esto. Para cualquier
instrumento de cliente, como SQL*Plus o Developer SQL para conectar a la base de datos, un proceso de
oyente debera ejecutarse y la base de datos debe ser abierta. Adems, usted debera solicitar que la HORA
y las cuentas de esquema OE sean abiertas y que las contraseas ser reinicializadas. Si estos esquemas de
muestra no estn presentes, es un asunto simple para conseguir que el DBA ejecute las escrituras, que son
instaladas cuando la base de datos es instalada, para crearlos. Conecte al esquema OE usando SQL*Plus o
Developer SQL.
1. El comando DESCRIBIR nos da la descripcin estructural de una comando. El siguiente
la ilustracin muestra estas dos tablas descritas:
Respuesta de laboratorio
99



2. La peticin de valores nicos por lo general implica usar la palabra clave DISTINTA como la parte de
su
Select SENTENCIA. Los dos componentes de la select implican la clusula SENTENCIA y el DE la
clusula. Le pidieron valores de SALES_REP_ID nicos DE la comando de PEDIDOS. Es simple
traducir esta solicitud a la select SENTENCIA siguiente:
seleccione sales_rep_id distinto
de pedidos;
De los resultados en la ilustracin, usted puede contestar a la pregunta original: hay nueve
los representantes de ventas diferentes responsables de pedidos puestos en una lista en la comando de
PEDIDOS, pero hay un pedido que contiene valores nulos en sus espacios de SALES_REP_ID.































3. Cuando pedido crear un SET de resultados, esto traduce para SELECCIONAR una o varias columnas
de una comando.
En este instancia, su clusula SENTENCIA es construida de las tres columnas solicitadas. Hay no
100
Captulo 2:
Extraccin de datos Usando el SQL Select SENTENCIA



la peticin de valores nicos, as no hay ninguna necesidad de considerar la palabra clave
DISTINTA. EL DE La clusula slo tienen que incluir la comando de PEDIDOS para construir la
select SENTENCIA siguiente:
seleccione order_id, order_date, order_total
de pedidos;
Considere salida en la ilustracin siguiente, expresamente la columna ORDER_DATE. Esto
la columna contiene el da, mes, ao, horas, minutos, segundos, y segundos fraccionarios hasta seis sitios
decimales o exacto hasta un millonsimo de un segundo. La descripcin de la comando de PEDIDOS
expone ORDER_DATE como un TIMESTAMP (6) con la columna TIMEZONE LOCAL. Esto significa
que los datos en esta columna pueden ser provistos de la precisin fraccionaria hasta seis sitios decimales
y que los datos son conscientes del huso horario. Bsicamente, los datos pueden ser trabajados en por la
gente en husos horarios diferentes. Entonces el Oracle proporciona un tipo de datos que normaliza la hora
local al huso horario de base de datos para evitar la confusin. Comparado con el START_DATE y
columnas END_DATE en la comando de HORA JOB_ID, el tipo de datos de columna de FECHA
ORDER_ es mucho ms sofisticado. Esencialmente, sin embargo, tanto estos tipos de datos almacenan la
fecha como la informacin de tiempo, pero a niveles que se diferencian de la precisin.
Respuesta de laboratorio
101



4. La clusula SENTENCIA para contestar a esta pregunta debera contener una expresin aliased como
"el producto"
arreglado de encadenamientos de literales de carcter con el PRODUCT_NAME, PRODUCT_ID, y
columnas PRODUCT_STATUS. Adems, la clusula SENTENCIA debe contener el LIST_PRICE
y columnas MIN_PRICE y dos expresiones aritmticas adicionales aliased como "Ahorros de Max
Actual" y "% de Max Discount." El DE la clusula slo tienen que incluir la comando de
INFORMACIN PRODUCT_. Siga construyendo cada una de las tres expresiones por su parte y
liste a todos ellos juntos. La expresin "de producto" podra ser sacada con la select SENTENCIA
siguiente:
seleccione product_name ||' con el cdigo: '|| product_id' ||' tiene el estado de:
'|| order_
estado COMO producto
La "expresin" de Ahorros de Max Actual podra ser sacada con la select SENTENCIA siguiente:
list_price escogido - min_price COMO "Ahorros de Max Actual"
La "expresin" de % de Max Discount toma el clculo para "Ahorros de Max Actual", divide esto
la cantidad por el LIST_PRICE, y lo multiplica por 100. Podra ser sacado con la select SENTENCIA
siguiente:
Escogido ((list_price-min_price)/list_price) * 100 COMO "% de Max Discount"
Estas tres expresiones, junto con las dos columnas regulares, forman la clusula SENTENCIA ejecutada
contra la comando PRODUCT_INFORMATION como mostrado despus:
102
Captulo 2:
Extraccin de datos Usando el SQL Select SENTENCIA



5. La comando DUAL verstil claramente se forma el DE la clusula. La clusula SENTENCIA es ms
interesante, ya que ningunas columnas actuales estn siendo seleccionadas, slo una expresin
aritmtica. Una select SENTENCIA posible para sacar este clculo podra ser:
escogido (4 * (22/7) * (3958.759 * 3958.759)) COMO "el rea de la Tierra"
de dual;
Este clculo se acerca que la rea de superficie del planeta tierra es 197016572.595304 millas cuadradas.
3
La restriccin y la
Comandoacin de
Datos









OBJETIVOS DE CERTIFICACIN


3.01 Limite las Filas Recuperadas por una Pregunta
3.02 Clasifique las Filas Recuperadas por una Consulta 3.03 Substitucin de signo ""













Q&A












Taladradora de dos minutos
M Prueba















Copyright 2008 por El Clic de McGraw-Hill Companies, Inc aqu para trminos de uso.
104
Captulo 3:
La restriccin y la Comandoacin de Datos
La limitacin de las columnas recuperadas por una select SENTENCIA es conocida como
la proyeccin y fue introducida en el Captulo 2. La restriccin de las filas volvi es conocido como
la seleccin. Este captulo habla el DONDE la clusula, que es un realce a la seleccin
funcionalidad de la select SENTENCIA. EL DONDE La clusula especifica una o varias condiciones
esto
el servidor de Oracle evala para restringir las filas devueltas por la select. Un realce de lenguaje
adicional es introducido por el PEDIDO POR la clusula, que proporciona capacidades de
comandoacin de datos. La substitucin de signo "" introduce una manera de reutilizar la misma select
para ejecutar preguntas diferentes substituyendo elementos de pregunta en el tiempo de ejecucin.
Este rea del tiempo de ejecucin ligando en select SQL es a fondo explorada.


OBJETIVO DE CERTIFICACIN 3.01


Limite las Filas Recuperadas por una Pregunta
Uno de los principios de piedra angular en la teora relacional es la seleccin. La
seleccin es
utilizacin actualizada el DONDE clusula de la select SENTENCIA. Las condiciones
que restringen el dataset volvieron toman muchas formas y actan sobre columnas as
como expresiones. Slo aquellas filas en una comando que se conforman con estas
condiciones son devueltas. Las condiciones restringen filas usando a operadores de
comparacin junto con columnas y valores literales. Los operadores booleanos
proporcionan un mecanismo para especificar que condiciones mltiples de restringir las
filas volvieron. Booleano, condicional, hablan de encadenamiento, y operadores
aritmticos para establecer su pedido de la precedencia cuando los encuentran en una
select SENTENCIA. Las cuatro reas siguientes son investigadas:

el DONDE clusula operadores de Comparacin operadores Booleanos
reglas de Precedencia

EL DONDE clusula
EL DONDE la clusula ampla la select SENTENCIA proporcionando la lenguaje a
restrinja filas devueltas basado en una o varias condiciones. El interrogatorio de una
comando con slo el ESCOGIDO y DE clusulas causa cada fila de datos almacenados en
la comando
Limite las Filas Recuperadas por una Pregunta
105



ser devuelto. Usando la palabra clave DISTINTA, los valores duplicados son excluidos, y las filas
consiguientes son restringidas hasta cierto punto. Y si la informacin muy especfica sea requerida de una
comando, por ejemplo, slo los datos donde una columna contiene un valor especfico? Cmo recuperara
usted los COUNTRIES que pertenecen a la regin de Europa de la comando de COUNTRIES? Y
recuperar slo a aquellos EMPLOYEES que trabajan como representantes de ventas? Estas preguntas son
contestadas usando el DONDE la clusula para especificar exactamente qu filas deben ser devueltas. El
formato del SQL select SENTENCIA que incluye el DONDE la clusula es:
SELECCIONE * | {column|expression [distinto] [alias], .}
DE comando [DONDE condicin (ones)];
Los ESCOGIDOS y DE clusulas fueron examinados en el Captulo 2. El DONDE
la clusula siempre sigue el DE la clusula. Los corchetes indican que el DONDE la clusula es opcional.
Una o varias condiciones pueden ser aplicadas simultneamente para restringir el SET de resultado. Una
condicin es especificada comparando dos trminos usando a un operador condicional. Estos trminos
pueden ser valores de columna, literales, o expresiones. El operador de igualdad ms comnmente es usado
para restringir SETs de resultado. Dos ejemplos de DONDE las clusulas son mostradas despus:

seleccione country_name de COUNTRIES donde region_id=3;

seleccione last_name, first_name de EMPLOYEES donde job_id ='SA_REP';
El primer ejemplo proyecta la columna COUNTRY_NAME de los COUNTRIES
comando. En vez de seleccionar cada fila, el DONDE la clusula restringe las filas volvi a slo aquellos que
contienen unos 3 en la columna REGION_ID. El segundo ejemplo proyecta dos columnas, LAST_NAME y
FIRST_NAME de la comando de EMPLOYEES. Las filas volvieron son restringidos a aquellos que
contienen el valor SA_REP en sus columnas JOB_ID.

Las Condiciones de Condiciones basadas del modo numrico deben ser formuladas
apropiadamente para tipos de datos de columna diferentes. Las condiciones que restringen filas basadas en
columnas numricas pueden ser especificadas de varios modos diferentes. Considere la columna de
SUELDO en la comando de EMPLOYEES. Esta columna tiene un tipo de datos del NMERO (8,2). La
figura 3-1 muestra dos caminos diferentes en los cuales la columna de SUELDO ha sido restringida. Los
primeros y segundos ejemplos
106
Captulo 3:
La restriccin y la Comandoacin de Datos



FIGURA 3-1

Dos modos de seleccionar
valores numricos en un
DONDE clusula











recupere el LAST_NAME y valores de SUELDO de los EMPLOYEES que ganan
10.000$. Note la diferencia en el DONDE las clusulas de las preguntas siguientes. La
primera pregunta especifica el nmero 10000, mientras el segundo encierra el nmero
dentro de citas solas como un carcter literal. Ambos formatos son aceptables para el
Oracle ya que una conversin de tipo de datos implcita es realizada cuando necesario.

seleccione last_name, sueldo de EMPLOYEES donde sueldo = 10000;

seleccione last_name, sueldo de EMPLOYEES donde sueldo = '10000';
Una columna numrica puede ser comparado con otra columna numrica en la misma
fila
construir un DONDE la condicin de clusula, como la pregunta siguiente demuestra:

seleccione last_name, sueldo de EMPLOYEES donde sueldo = department_id;
El primer ejemplo en la Figura 3-2 muestra como el DONDE la clusula es demasiado
restrictiva
y no causa ningunas filas seleccionadas. Esto es porque la variedad de valores de
SUELDO es 2100 a 999999.99, y la variedad de valores de DEPARTMENT_ID es 10 a
110. Ya que no hay ningn traslapo en la variedad de DEPARTMENT_ID y valores de
SUELDO, no hay ningunas filas que satisfagan esta condicin y por lo tanto nada es
devuelto. El ejemplo tambin ilustra como un DONDE la condicin de clusula compara
una columna numrica con el otro.
Limite las Filas Recuperadas por una Pregunta
107



FIGURA 3-2

La utilizacin el DONDE
clusula con expresiones
numricas









El segundo ejemplo en la Figura 3-2 demuestra la ampliacin el DONDE condicin
de clusula de comparar una columna numrica, SUELDO, a la expresin numrica:
DEPARTMENT_ID*100. Para cada fila, el valor en la columna de SUELDO es
comparado con el producto del valor de DEPARTMENT_ID y 100. El DONDE la
clusula tambin permite expresiones a ambos lados del operador de comparacin. Usted
podra publicar la select siguiente para ceder resultados idnticos:

seleccione last_name, sueldo de EMPLOYEES donde sueldo/10 =
department_id*10;
Como en lgebra regular, la expresin (SUELDO = DEPARTMENT_ID * 100)
es equivalente a (SUELDO/10 = DEPARTMENT_ID * 10). El aspecto notable sobre
este ejemplo es que los trminos a ambos lados del operador de comparacin son
expresiones.

Las Condiciones de Condiciones basadas en el carcter que determinan
qu filas son seleccionadas basadas en datos de carcter, son especificadas encerrando
literales de carcter en la clusula condicional, dentro de citas solas. La columna JOB_ID
en la comando de EMPLOYEES tiene un tipo de datos de VARCHAR2 (10). Suliste que
usted quiso un informe que consiste en los valores LAST_NAME de aquellos
EMPLOYEES actualmente EMPLOYEES como representantes de ventas. El valor de
JOB_ID para un representante de ventas es SA_REP. La select siguiente produce tal
informe.

seleccione last_name de EMPLOYEES donde job_id ='SA_REP';
108
Captulo 3:
La restriccin y la Comandoacin de Datos



Si usted tratara de especificar el carcter literal sin las citas, un error de Oracle
sera levantado. Recuerde que el carcter los datos literales son el instancia sensible,
entonces el siguiente DONDE las clusulas no son equivalentes.

La clusula 1: donde la Clusula 2 job_id=SA_REP: donde job_id ='Sa_Rep'
la Clusula 3: donde job_id ='sa_rep'
La clusula 1 genera "ORA-00904: "SA_REP": identificador invlido" error desde
entonces
SA_REP literal no es envuelto en citas solas. La clusula 2 y la Clusula 3 son
sintcticamente correctas, pero no equivalentes. Adelante, ninguna de estas clusulas
cede cualesquiera datos ya que no hay ningunas filas en la comando de EMPLOYEES que
tengan valores de columna JOB_ID que son Sa_Rep o sa_rep, como mostrado en la Figura
3-3.
Las condiciones basadas en el carcter no son limitadas con la comparacin de valores
de columna con literales. Ellos tambin pueden ser especificados usando otras columnas
de carcter y expresiones. El LAST_NAME y las columnas FIRST_NAME son ambos
especificados como VARCHAR2 (25) los datos teclearon columnas. Considere la
pregunta:

seleccione employee_id, job_id de EMPLOYEES donde last_name=first_name;
Tanto el LAST_NAME como las columnas FIRST_NAME aparecen a ambos lados
del
operador de igualdad en el DONDE clusula. Ningunos valores literales estn presentes;
por lo tanto no



FIGURA 3-3

La utilizacin el DONDE clusula
con datos de carcter
Limite las Filas Recuperadas por una Pregunta
109



los carcteres de cotizacin solos son necesarios para delimitarlos. Esta condicin
estipula que slo las filas que contienen el mismo valor de datos (un partido sensible al
instancia exacto) en el LAST_NAME y columnas FIRST_NAME sern devueltas. Esta
condicin es demasiado restrictiva y, ya que la Figura 3-4 muestra, ningunas filas son
devueltas.
Las expresiones basadas en el carcter forman una o ambas partes de una condicin
separada por un operador condicional. Estas expresiones pueden ser formadas
concadenando valores literales con una o varias columnas de carcter. Las cuatro
clusulas siguientes demuestran algunas opciones para condiciones basadas en el carcter:
Clusula
1:
donde
Un || last_name || first_name = 'Un Rey'
Clusula
2:
donde
first_name ||' '|| last_name = last_name ||' '|| first_name
Clusula
3:
donde
'SA_REP' || 'Rey' = job_id || last_name
Clusula
4:
donde
job_id || last_name = 'SA_REP' || 'Rey'




FIGURA 3-4

Carcter basado en la
columna DONDE clusula
110
Captulo 3:
La restriccin y la Comandoacin de Datos



La clusula 1 concadena el literal "A" de cuerda al LAST_NAME y FIRST_
Columnas de NOMBRE. Esta expresin es comparado con el literal "Un Rey," y cualquier
fila que cumpla esta condicin es devuelta. La clusula 2 demuestra que las expresiones
de carcter pueden ser colocadas a ambos lados del operador condicional. La clusula 3
ilustra que las expresiones literales tambin pueden ser colocadas a la izquierda del
operador condicional. Es lgicamente equivalente a la clusula 4, que ha cambiado el
operands en la clusula 3 alrededor. Las ambas clusulas 3 y 4 causan la misma fila de
datos devueltos, como mostrado en la Figura 3-5.

Las columnas de FECHA de Condiciones basadas en la fecha son tiles
almacenando informacin de tiempo y fecha. Los literales de fecha deben ser encerrados
en comillas solas justo como datos de carcter; por otra parte un error es levantado.
Cuando usado en el condicional DONDE clusulas, las columnas de FECHA son


FIGURA 3-5

Equivalencia de expresiones
condicionales
Limite las Filas Recuperadas por una Pregunta
111



comparado con otras columnas de FECHA o a literales de fecha. Los literales son automticamente
convertidos en valores de FECHA basados en el formato de fecha por defecto, que es DD-MON-RR. Si un
literal ocurre en una expresin que implica una columna de FECHA, es automticamente convertido en un
valor de fecha usando la mscara de formato por defecto. DD representa das, MON representa las tres
primeras cartas de un mes, y RR representa un Ao 2000-ao dcil (es decir si RR est entre 50 y 99,
entonces el servidor de Oracle vuelve el siglo anterior, ms esto devuelve el siglo corriente). El ao de
cuatro dgitos apretado, YYYY, tambin puede ser especificado. Considere las cuatro select SQL siguientes:

La select 1: seleccione employee_id de job_history donde start_date = end_date;

La select 2: seleccione employee_id de job_history donde start_date = '01-JAN-2001';

La select 3: seleccione employee_id de job_history donde start_date = '01-JAN-01';

La select 4: seleccione employee_id de job_history donde start_date = '01-JAN-99';
La primera select prueba la igualdad entre dos columnas de FECHA. Las filas que contienen
los mismos valores en su START_DATE y columnas END_DATE sern devueltos. Note, sin embargo, que
los valores de FECHA slo son iguales el uno al otro si hay un partido exacto entre todos sus componentes
incluso da, mes, ao, horas, minutos, y segundos. El captulo 4 habla de los detalles de almacenar valores de
FECHA. Hasta entonces, no se preocupe de las horas, minutos, y componentes de segundos.
En el DONDE la clusula de la segunda select, la columna START_DATE es comparado con el carcter
literal: '01-JAN-2001'. El componente de ao de cuatro dgitos entero (YYYY) ha sido especificado. Esto es
aceptable para el servidor de Oracle, y todas las filas en la comando JOB_HISTORY con la columna
START_DATE valoran igual al primero de enero de 2001 ser devuelto.
La tercera select es equivalente al segundo ya que el literal '01-JAN-01' es convertido a 01-JAN-2001
de valor de fecha. Esto es debido al componente RR que es menos de 50, entonces el siglo (veintiuno)
corriente, 20, es prefijado al ao componente de RR para proporcionar un valor de siglo. Todas las filas en
la comando JOB_HISTORY con valores de columna START_DATE = 01-JAN-2001 sern devueltas.
112
Captulo 3:
La restriccin y la Comandoacin de Datos



El componente de siglo para el literal '01-JAN-99' se hace el anterior
el siglo (veinte), 19, cede un valor de fecha de 01-JAN-1999 para la cuarta select, ya que
el componente RR, 99, es mayor que 50. Las filas en la comando JOB_HISTORY con
valores de columna START_DATE = 01-JAN-1999 sern devueltas.
La aritmtica usando la adicin y operadores de substraccin es apoyada en
expresiones que implican valores de FECHA. Una expresin como: END_DATE - la
FECHA de START_ devuelve un valor numrico que representa el nmero de das entre la
FECHA START_ y END_DATE. Una expresin como: START_DATE + 30 vueltas un
valor de FECHA que es 30 das ms tarde que START_DATE. Entonces la expresin
siguiente es legtima, como mostrado en la Figura 3-6:

seleccione employee_id de job_history donde start_date + 30 =
'31-JAN-99';
Esta pregunta devuelve filas de la comando JOB_HISTORY que contiene un START_
Valor de FECHA igual hasta 30 das antes 31-JAN-1999. Por lo tanto, slo las filas con un
valor de 01-JAN-1999 en la columna START_DATE sern recuperadas.


FIGURA 3-6

La utilizacin el DONDE
clusula con expresiones
numricas
Limite las Filas Recuperadas por una Pregunta
113






Las clusulas condicionales comparan dos trminos usando a operadores de
comparacin. Es importante entender los tipos de datos de los trminos implicados entonces
ellos pueden ser encerrados en citas solas, si es necesario. Un error comn debe suponer que un
DONDE la clusula es sintcticamente correcta, cuando de hecho, esto pierde la cita


Operadores de comparacin






las seales que delimitan literales de fecha o carcter. Otro descuido comn no es
consciente que los trminos a la izquierda y el derecho del operador de comparacin en
una clusula condicional pueden ser expresiones, columnas, o valores literales. Ambos estos
conceptos pueden ser probados en el examen.
El operador de igualdad es usado extensivamente para ilustrar el concepto de restringir
filas usando un DONDE clusula. Hay varios operadores alternativos que tambin pueden
ser usados. Los operadores de desigualdad como "menos que" o "mayor que o igual a" pueden
ser usados para devolver filas que se conforman con condiciones de desigualdad. El
ENTRE el operador facilita la comparacin basada en la variedad con la prueba si un
valor de columna est entre dos valores. El EN el ingreso de SET de prueba de operador,
entonces una fila es devuelta si el valor de columna probado en la condicin es un
miembro de un SET de literales. Al modelo que empareja al operador de comparacin LE
GUSTA es muy potente, permitiendo componentes de datos de columna de carcter ser
emparejado a literales que se conforman con un modelo especfico. El ltimo operador
de comparacin hablado en esta seccin es SER el operador NULO, que devuelve filas
donde el valor de columna contiene un valor nulo. Estos operadores pueden ser usados en
cualquier combinacin en el DONDE hablarn de la clusula y despus.

La igualdad y la Desigualdad que Limita las filas devueltas por una pregunta
implican especificar un conveniente DONDE clusula. Si la clusula es demasiado
restrictiva, entonces pocos o ningunas filas son devueltos. Si la clusula condicional es
demasiado ampliamente especificada, entonces ms filas que se requieren son devueltos.
La exploracin de los operadores disponibles diferentes debera proveerle de la lenguaje
para solicitar exactamente aquellas filas en las cuales usted est interesado. Las pruebas
para la igualdad en una condicin son tanto naturales como intuitivas. Tal condicin es
formada usando el "es igual a" (=) operador. Una fila es devuelta si la condicin de
igualdad es verdad para aquella fila. Considere la pregunta siguiente:

seleccione last_name, sueldo de EMPLOYEES donde job_id ='SA_REP';
114
Captulo 3:
La restriccin y la Comandoacin de Datos



La columna JOB_ID de cada fila en la comando de EMPLOYEES es probada de la igualdad
con el carcter SA_REP literal. Para la informacin de carcter para ser igual, debe
haber un partido sensible al instancia exacto. Cuando tal partido es encontrado, los
valores para las columnas proyectadas, LAST_NAME y SUELDO, son devueltos para
aquella fila, como mostrado en la Figura 3-7. Note que aunque la clusula condicional
est basada en la columna JOB_ID, no es necesario para esta columna ser proyectado por
la pregunta.
Las condiciones basadas en la desigualdad realzan el DONDE especificacin de
clusula. Extindase y modelo que empareja comparaciones son operadores de igualdad y
desigualdad de utilizacin posibles, pero a menudo es preferible usar el ENTRE y COMO
operadores para estas comparaciones. Los operadores de desigualdad son descritos en la
Tabla 3-1.
Los operadores de desigualdad permiten que preguntas basadas en la variedad sean
realizadas. Puede requerirse que usted proporcione un SET de resultados donde un valor de
columna es mayor que otro valor.




FIGURA 3-7

Condiciones basadas en el
operador de igualdad
Limite las Filas Recuperadas por una Pregunta
115



TABLA 3-1

Operadores de desigualdad



Operador
<> <=> = <>! =



Descripcin
Menos que Mayor que Menos que o igual a Mayor que o igual a No igual a No igual a


Por ejemplo, la pregunta siguiente puede ser publicada para obtener una lista de
LAST_NAME y valores de SUELDO para EMPLOYEES que ganan ms que 5000$:

seleccione last_name, sueldo de EMPLOYEES donde sueldo> 5000;
Del mismo modo, para obtener una lista de EMPLOYEES que ganan menos de 3000$,
el siguiente
la pregunta puede ser presentada:

seleccione last_name, sueldo de EMPLOYEES donde sueldo <3000;
Los operadores de desigualdad compuestos (arreglado de ms de un smbolo) son
utilizados
en las cuatro clusulas siguientes:
Clusula
1:
donde
sueldo
<=
3000;
Clusula
2:
donde
sueldo
> =
5000;
Clusula
3:
donde
sueldo
<>
department_id;
Clusula
4:
donde
sueldo
! =
4000+department_id;
La clusula 1 devuelve aquellas filas que contienen un valor de SUELDO que es
menos que o
igual a 3000. La clusula 2 obtiene datos donde el valor de SUELDO es mayor que o igual
a 5000, mientras las clusulas 3 y 4 demuestran las dos formas del "no igual a" operadores.
La clusula 3 devuelve las filas que tienen valores de columna de SUELDO que no son
iguales a los valores de DEPARTMENT_ID. El suplente "no igual" al operador en la
clusula 4 ilustra que las columnas, los literales, y las expresiones pueden ser todos
comparados usando a operadores de desigualdad. La clusula 4 devuelve aquellas filas que
contienen un valor de SUELDO que no es igual a la suma del DEPARTMENT_ID para
aquella fila y 4000.
La desigualdad numrica es naturalmente intuitiva. La comparacin de carcter y
trminos de fecha, sin embargo, es ms compleja. Las pruebas de la desigualdad de
carcter son interesantes ya que las cuerdas comparadas a ambos lados del operador de
desigualdad son convertidas
116
Captulo 3:
La restriccin y la Comandoacin de Datos



a una representacin numrica de sus carcteres. Basado en el SET de caracteres de base
de datos y NLS (Apoyo de Lenguaje Nacional) configuraciones, cada cadena de
caracteres es adjudicada un valor numrico. Estos valores numricos forman la base para
la evaluacin de la comparacin de desigualdad. Considere la select siguiente:

seleccione last_name de EMPLOYEES donde last_name <'Rey';
El carcter 'Rey' literal es convertido a una representacin numrica. Asuncin
un SET de caracteres de base de datos US7ASCII con configuraciones NLS
AMERICANAS, el 'Rey' literal es convertido en una suma de sus valores de carcter
ordinales: K + yo + n + g = (75+105+110+103=393). Para cada fila en la comando de
EMPLOYEES, la columna de NOMBRE de LAST_ es de manera similar convertida a un
valor numrico. Si este valor es menos de 393, entonces la fila es seleccionada. El mismo
proceso para comparar datos numricos usando a los operadores de desigualdad se aplica
a datos de carcter. La nica diferencia es que los datos de carcter son convertidos
implcitamente por el servidor de Oracle a un valor numrico basado en ciertas
configuraciones de base de datos.
Las comparaciones de desigualdad que actan sobre valores de fecha siguen un proceso
similar a datos de carcter. El servidor de Oracle almacena fechas en un formato
numrico interno, y estos valores son comparados dentro de las condiciones. El segundo
de junio de un cierto ao ocurre antes que el tercero de junio del mismo ao. Por lo tanto,
el valor numrico de la fecha 02-JUN-2008 es menos que el valor numrico de la fecha
03-JUN-2008. Considere la pregunta siguiente:

seleccione last_name de EMPLOYEES donde hire_date <'01-JAN-2000';
Esta pregunta recupera cada registro de empleado que contiene un valor de
HIRE_DATE esto
es antes que '01-JAN-2000'. Las filas con el empleado HIRE_DATE=31-DEC-1999 sern
devueltas, mientras las filas con el empleado que HIRE_DATE valora ms tarde que el
primero de enero de 2000 no sern devueltas, como mostrado en la Figura 3-8.

EL DONDE la clusula es una extensin fundamental a la select SENTENCIA y
forma la parte de la mayor parte de preguntas. Aunque muchos operadores de
comparacin existan, la mayora de condiciones estn basados en la
comparacin de dos trminos usando tanto la igualdad como los operadores de
desigualdad.

La Comparacin de variedad con el ENTRE el Operador el ENTRE el
operador prueba si una columna o la expresin valoran cadas dentro de una variedad de
dos valores lmites. El artculo debe ser al menos el mismo como el valor lmite inferior, o
como mximo el mismo como el valor lmite ms alto, o cada dentro de la variedad, para
la condicin de ser verdad.
Limite las Filas Recuperadas por una Pregunta
117



FIGURA 3-8

Condiciones basadas en los
operadores de desigualdad























Suliste que usted quiere los apellidos de EMPLOYEES que ganan un sueldo en la
variedad de 3400$ y 4000$. Una solucin posible usando el ENTRE el operador es como
sigue:

seleccione last_name de EMPLOYEES donde sueldo entre 3400 y 4000;
Este operador permite el DONDE condicin de leer en una manera inglesa natural.
Los apellidos de todos los EMPLOYEES que ganan de 3400$ a 4000$ sern devueltos.
Hablan de operadores booleanos como Y, O, y NO ms tarde en este captulo, pero ellos
son introducidos aqu para realzar la descripcin del ENTRE el operador. El Y operador
es usado para especificar mltiple DONDE las condiciones, todo de las cuales debe estar
satisfecho para una fila para ser devuelta. Usando el Y operador, el ENTRE el operador
es equivalente a dos condiciones usando el "mayor que o igual a" y
118
Captulo 3:
La restriccin y la Comandoacin de Datos



"menos que o igual a" operadores, respectivamente. La select SQL precedente es
equivalente a la select siguiente, como mostrado en la Figura 3-9.

seleccione last_name de EMPLOYEES donde sueldo> = 3400 y sueldo <= 4000;
El valor de SUELDO para una fila es probado primero si es mayor que o igual a 3400
y segundo si es menos que o igual a 4000. Si ambas condiciones estn satisfechas, el valor
de LAST_NAME de la parte de formas de fila del SET de resultados. Si slo un o
ninguna de las condiciones estn satisfechos, la fila no es seleccionada.
Las condiciones especificadas con el ENTRE el operador pueden ser por lo tanto
equivalentemente denotadas usando dos condiciones basadas en la desigualdad, pero es
ms corto y ms simple a


FIGURA 3-9

EL ENTRE operador
Limite las Filas Recuperadas por una Pregunta
119



especifique la condicin de variedad usando el ENTRE el operador. La implicacin de esta equivalencia es
que el mecanismo utilizado para evaluar numrico, carcter, y fecha operands por los operadores de
desigualdad es el mismo para el ENTRE el operador. La pregunta siguiente prueba si el valor de columna
HIRE_DATE es ms tarde que 1994 24-JUL-, pero antes que 07-JUN-1996:

seleccione first_name, hire_date de EMPLOYEES donde hire_date entre '24-JUL-1994' y
'07-JUN-1996';
Usted no es restringido a la especificacin de valores literales como el operands al
ENTRE el operador, ya que stos pueden ser valores de columna y expresiones, como lo siguiente:

seleccione first_name, hire_date de EMPLOYEES donde '24-JUL-1994' entre hire_date+30
y '07-JUN-1996';
Para una fila para ser devuelta por esta pregunta, el literal 24-JUL-1994 de fecha debe caerse
entre la columna HIRE_DATE de la fila valoran ms 30 das y el literal 07-JUN-1996 de fecha.

La Comparacin de SET con el EN el Operador el EN el operador prueba si un artculo es
un miembro de un SET de valores literales. El SET es especificado por una coma que separa los literales y
los encierra en soportes redondos. Si los literales son carcter o valores de fecha, entonces stos deben ser
delimitados usando citas solas. Usted puede incluir tantos literales en el SET como usted desea. Considere
el ejemplo siguiente:

seleccione last_name de EMPLOYEES donde sueldo en (1000,4000,6000);
El valor de SUELDO en cada fila es comparado para la igualdad con los literales especificados
en el SET. Si el valor de SUELDO iguala 1000, 4000, o 6000, el valor de LAST_NAME para aquella fila
es devuelto. El Booleano O el operador, hablado ms tarde en este captulo, son usados para especificar
mltiple DONDE las condiciones, al menos un de las cuales debe estar satisfecho para una fila para ser
devuelta. El EN el operador es por lo tanto equivalente a una serie de O condiciones. La select SQL
precedente puede ser escrita usando mltiple O clusulas de condicin, por ejemplo:

seleccione last_name de EMPLOYEES donde sueldo = 1000 O sueldo = 4000 O sueldo = 6000;
120
Captulo 3:
La restriccin y la Comandoacin de Datos



Esta select devolver LAST_NAME de un empleado si al menos un del
DONDE las condiciones de clusula son verdad; esto tiene el mismo sentido que la select
anterior que usa el EN el operador, como mostrado en la Figura 3-10.
Las pruebas del ingreso de SET usando el EN el operador son ms sucintas que la
utilizacin mltiple O condiciones, especialmente como el nmero de miembros en el
SET aumenta. Las dos select siguientes demuestran el uso del EN el operador con datos
de CARCTER y FECHA.

seleccione last_name de EMPLOYEES donde last_name en ('Rey',
'Garbharran', 'Ramklass');

seleccione last_name de EMPLOYEES donde hire_date en ('01-JAN-1998',
'01-DEC-1999');

La Comparacin de modelo con el Operador PARECIDO Para
examinar, el ENTRE el operador proporciona una manera concisa de especificar que las
condiciones basadas en la variedad, y el EN el operador proporcionan un mtodo ptimo
al ingreso de equipo de prueba. Ahora presentamos al operador PARECIDO, que es
diseado exclusivamente para datos de carcter y proporciona un mecanismo potente a
buscar cartas o palabras.
COMO es acompaado por dos carcteres de comodn: el smbolo de porcentaje (%) y
el carcter subrayar (_). El smbolo de porcentaje es usado para especificar el cero o ms
carcteres de comodn, mientras el carcter subrayar especifica un carcter de comodn.
Un comodn puede representar cualquier carcter.



FIGURA 3-10

EL EN operador
Limite las Filas Recuperadas por una Pregunta
121



Puede solicitarse que usted proporcione una lista de EMPLOYEES cuyos nombres comienzan con la carta
"A". La pregunta siguiente puede ser usada para proporcionar este SET de resultados:

seleccione first_name de EMPLOYEES donde first_name como 'Un %';
El carcter literal comparado con que la columna FIRST_NAME es es encerrado en
citas solas como un carcter regular literal. Adems, esto tiene un smbolo de porcentaje, que tiene un
sentido especial en el contexto del operador PARECIDO. El smbolo de porcentaje substituye el cero o ms
carcteres aadidos a la carta A. Los archivos de empleado con valores de FIRST_NAME que comienzan
con la carta A son devueltos.
Los carcteres de comodn pueden aparecer al principio, medio o al final de carcter literal. Ellos
pueden parecer hasta solos como en:

donde first_name como '%';
En este instancia, cada fila que contiene un valor de FIRST_NAME que no es nulo ser
devuelto. Los smbolos de comodn no son obligatorios usando al operador PARECIDO. En tales instancias,
COMO se comporta como un operador de igualdad que prueba de partidos de carcter exactos; tan los dos
siguientes DONDE las clusulas son equivalentes:

donde last_name como 'Rey'; donde last_name = 'Rey';
El smbolo de comodn subrayar substituye exactamente un otro carcter en a
literal. Considere la busca de EMPLOYEES cuyos apellidos son cuatro cartas mucho tiempo, comienzan
con un "K", tienen una segunda carta desconocida, y final con un ng. Usted puede publicar la select
siguiente:

donde last_name como 'K_ng';
Segn el dataset, usted puede recuperar a EMPLOYEES llamados al Rey, Kong, y
Kung. Una manera alterna de realizar el modelo correspondiente es usar una serie interminable de O
condiciones, pero conseguir los resultados precedentes sin usar al operador PARECIDO es
prohibitivamente complejo. Por ejemplo, puede ser conseguido con la serie siguiente de O condiciones:

donde last_name = 'Kang' O last_name = 'Kbng' O last_name = 'Kcng' .OR last_name = 'Kzng'
Este ejemplo es incompleto, ya que no es factible poner cada carcter posible en una lista
esto podra ser substituido. Este ejemplo demuestra el esfuerzo escarpado requerido substituir un carcter
solo sin usar al operador PARECIDO y subrayar
122
Captulo 3:
La restriccin y la Comandoacin de Datos



smbolo de comodn. Para un nmero desconocido (cero o ms) de substituciones de
carcter, las posibilidades son exponencialmente ms grandes que para la substitucin de
carcter solo. No es prcticamente posible realizar el modelo de carcter que empareja
sin el uso del operador PARECIDO y los smbolos de comodn.
Como la Figura 3-11 muestra, los dos smbolos de comodn pueden ser usados
independientemente, juntos, o hasta tiempos mltiples en un single DONDE condicin.
La primera pregunta recupera aquellos archivos donde COUNTRY_NAME comienza
con la carta "I" seguida del cero o ms carcteres, uno de los cuales debe ser una minscula
"a".
La segunda pregunta recupera aquellos COUNTRIES cuyos nombres contienen la
carta "i" como su quinto carcter. La longitud de los valores de COUNTRY_NAME y la
carta con la cual ellos comienzan es sin importancia. Los cuatro subrayan smbolos de
comodn que preceden a la minscula "i" en el DONDE la clusula representa
exactamente cuatro carcteres (que podra ser cualquier carcter). La quinta carta debe ser
un "i", y el smbolo de porcentaje


FIGURA 3-11

Los smbolos de comodn del
operador PARECIDO
Limite las Filas Recuperadas por una Pregunta
123



especifica que el COUNTRY_NAME puede tener el cero o ms carcteres del sexto
carcter adelante.
Y el guin cuando usted busca un literal que contiene un porcentaje o subraya el
carcter? El oracle proporciona una manera de inhibir temporalmente su sentido especial y
considerarlos como carcteres regulares usando el identificador de FUGA. La comando
de JOBS contiene valores de JOB_ID que son literalmente especificados con un carcter
subrayar, como el SA_MAN, AD_VP, MK_REP, y SA_REP. Suliste que haya, adems,
una fila en la comando de JOBS con un JOB_ID de SA%MAN. El aviso all no es
subrayan el carcter en este JOB_ID. Cmo puede valores ser recuperado de la comando
de JOBS si usted busca valores de JOB_ID que comienzan con los carcteres SA _?
Considere la select SQL siguiente:

seleccione * de JOBS donde job_id como 'SA _ %';
Esta pregunta devolver las filas SA_REP, SA_MAN, y SA%MAN. El
no cumplen con el requisito en este ejemplo desde una fila adicional, SA%MAN, no
conformndose con el criterio que esto comienza con los carcteres SA _, tambin es
devuelto, como el primer ejemplo en espectculos de Figura 3-12.
Naturalmente ocurrir subraya el carcter puede ser evitado (o tratado como un smbolo
no especial regular) la utilizacin del identificador de FUGA junto con un carcter de
FUGA. El segundo ejemplo en la Figura 3-12 muestra la select SQL que recupera los
archivos de comando de JOBS con los valores de JOB_ID iguales a SA_MAN y SA_REP
y que se conforma con el requisito original:

seleccione job_id de JOBS donde job_id como 'SA \_ %' se escapan '\';


FIGURA 3-12

El identificador de FUGA y
otros por el estilo operador
124
Captulo 3:
La restriccin y la Comandoacin de Datos



El identificador de FUGA instruye al servidor de Oracle de tratar cualquier carcter encontrado
despus del carcter de barra invertida como un smbolo no especial regular sin sentido de
comodn. En el precedente DONDE clusula, cualquier valor de JOB_ID que comience
con los tres carcteres "SA _" ser devuelto. Tradicionalmente, el carcter de FUGA es el
smbolo de barra invertida, pero no tiene que ser. La select siguiente es equivalente a la
anterior, pero usa un smbolo de dlar como el carcter de FUGA en cambio.

seleccione job_id de JOBS donde job_id como 'el SA$ _ %' evitan 'el $';
El smbolo de porcentaje puede ser de manera similar evitado cuando ocurre
naturalmente
como datos de carcter. Suliste, hay un requisito para recuperar la fila con JOB_ID
hipottico: SA%MAN introducido antes. El interrogatorio de la comando de JOBS para
valores de JOB_ID, como el SA%MAN usando el cdigo siguiente causa los archivos
SA_MAN y SA%MAN devuelto.

seleccione job_id de JOBS donde job_id como 'SA%MAN';
El servidor de Oracle interpreta el smbolo de porcentaje en el DONDE clusula como
a
smbolo de comodn cuando usado con el operador PARECIDO. Obtener la fila con
JOB_ID: SA%MAN usando al operador PARECIDO, el smbolo de porcentaje puede ser
evitado usando la select siguiente:

seleccione job_id de JOBS donde job_id como 'SA \FUGA' DE HOMBRE de % '\';
La barra invertida es definida como el carcter de FUGA que instruye el Oracle
servidor no para hacer instancia de las propiedades de comodn del smbolo que ocurre
inmediatamente despus de la barra invertida. De esta manera, ambos smbolos de
comodn pueden ser usados como carcteres especializados o como regulares en
segmentos diferentes de la misma cadena de caracteres.


EJERZA 3-1 Utilizacin del Operador PARECIDO
Recupere una lista de valores de DEPARTMENT_NAME que se terminan con las
tres cartas
"ing" de la comando de DEPARTMENTS.

1. Comience SQL*Plus y conecte al esquema de HORA. 2. La clusula
SENTENCIA es
DEPARTMENT_NAME ESCOGIDO




3. El DE la clusula es
DE DEPARTMENTS
Limite las Filas Recuperadas por una Pregunta
125
4. El DONDE la clusula debe realizar una comparacin entre el DEPARTMENT_
Valores de columna de NOMBRE y un modelo de carcteres que comienzan con cero o ms carcteres
pero se terminan con tres carcteres especficos, "ing".
5. El operador que habilita el modelo de carcter correspondiente es el operador PARECIDO. El
modelo con el cual la columna DEPARTMENT_NAME debe conformarse es '%ing'. El smbolo de
comodn de porcentaje indica que el cero o ms carcteres pueden preceder a la serie "ing" de carcteres.
6. As, el DONDE la clusula es
DONDE DEPARTMENT_NAME COMO '%ing' 7. La ejecucin de esta select devuelve el SET de
resultados que emparejan este modelo como
mostrado en la ilustracin siguiente:
126
Captulo 3:
La restriccin y la Comandoacin de Datos



La Comparacin nula con SER el Operador NULO valores NULOS
inevitablemente encuentra su camino en tablas de base de datos. A menudo hace falta que
slo aquellos archivos que contienen un valor NULO en una columna especfica sean
buscados. SER el operador NULO slo selecciona las filas donde un valor de columna
especfico es NULO. Las pruebas de valores de columna para la igualdad con el NULO
son realizadas usando SER el operador NULO en vez del "es igual" al operador (=).
Considere la pregunta siguiente que trae la columna LAST_NAME de la comando de
EMPLOYEES para aquellas filas que hacen almacenar valores NULOS en la columna
COMMISSION_PCT:

seleccione last_name de EMPLOYEES donde commission_pct es nulo;
Esto DONDE la clusula lee naturalmente y slo recupera los archivos que contienen
Valores de COMMISSION_PCT nulos. Como la Figura 3-13 muestra, la pregunta usando el
"es igual" al operador no devuelve ninguna fila, mientras la pregunta usando SER el operador
NULO hace.


Operadores booleanos
Los datos son restringidos usando un DONDE clusula con una condicin sola. Los
operadores booleanos o lgicos habilitan condiciones mltiples para ser especificadas en
el DONDE la clusula de la select SENTENCIA. Esto facilita una capacidad de
extraccin de datos ms refinada. Considere el aislamiento de aquellos archivos de
empleado con valores de FIRST_NAME que comienzan con la carta "J" y quines ganan
un mayor COMMISSION_PCT que el 10 por ciento. En primer lugar, los datos en la
comando de EMPLOYEES deben ser restringidos a valores de FIRST_NAME como "J
%", y en segundo lugar, los valores de COMMISSION_PCT para los archivos deben ser
probados para averiguar si ellos son ms grandes que el 10 por ciento. Estas dos
condiciones separadas pueden tener que ver usando el Booleano Y operador y son
aplicadas consecutivamente en un DONDE clusula. Un SET de resultado que se
conforma con algunas o todas condiciones o con la negacin de una o varias condiciones
puede ser especificado usando a operadores Booleanos.

EL Y Operador el Y operador fusiona condiciones en una condicin ms grande a la
cual una fila debe conformarse para ser incluida en el SET de resultados. Los operadores
booleanos son definidos usando tablas de verdad. La tabla 3-2, el Y comando de verdad
de operador, resume su funcionalidad.
Si dos condiciones especificaran en un DONDE la clusula es afiliada con un Y
operador, entonces una fila es probada consecutivamente de la conformidad a ambas
condiciones antes de ser recuperada. Si esto no se conforma con ninguno o slo una de las
condiciones, la fila es excluida ya que el resultado es FALSO. Si la fila contiene un valor
NULO que causa una de las condiciones de evaluar al NULO, entonces aquella fila es
excluida. Una fila slo ser
Limite las Filas Recuperadas por una Pregunta
127



FIGURA 3-13

La utilizacin de SER
operador NULO


























TABLA 3-2

Y Comando de Verdad de Operador


























Condicin X
FALSO VERDADERO FALSO VERDADERO VERDADERO NULO FALSO NULO NULO


























Condicin Y
FALSO FALSO VERDADERO VERDADERO NULO VERDADERO NULO FALSO NULO


























Resultado
FALSO FALSO FALSO VERDADERO NULO NULO FALSO FALSO NULO
128
Captulo 3:
La restriccin y la Comandoacin de Datos



devuelto si cada condicin afiliada con un Y operador evala al VERDADERO. En un
guin con ms de dos condiciones afiliadas con el Y operador, slo los datos que se
conforman con cada condicin sern devueltos.
Los archivos de empleado con valores de FIRST_NAME que comienzan con la carta
"J" y COMMISSION_PCT mayor que el 10 por ciento pueden ser recuperados usando la
pregunta siguiente:

seleccione first_name, last_name, commission_pct, hire_date de EMPLOYEES
donde first_name como 'J %' y commission_pct> 0.1;
Note que el DONDE la clusula ahora tiene dos condiciones, pero slo un DONDE
palabra clave. El Y operador separa las dos condiciones. Para especificar condiciones
adelante obligatorias, simplemente adalos y asegure que ellos son separados por adicional
Y operadores. Usted puede especificar tantas condiciones como usted desea. Recuerde, sin
embargo, ms Y condiciones especificadas, ms restrictivo la pregunta se hace. La figura
3-14 muestra la pregunta precedente seguida de dos restricciones adicionales. El valor de
HIRE_DATE debe ser ms grande que 01-JUN-1996, y el LAST_NAME debe contener la
carta "o". La primera pregunta devuelve cuatro filas. Note que el adicional Y las
condiciones en la segunda pregunta estn satisfechos por slo dos filas.

EL U OPERADOR EL U OPERADOR separa condiciones mltiples, al menos un
de las cuales debe estar satisfecho por la fila seleccionada para garantizar la inclusin en
el SET de resultados. La tabla 3-3, el O comando de verdad de operador, resume su
funcionalidad.



TABLA 3-3

O Comando de Verdad de Operador



Condicin X
FALSO VERDADERO FALSO VERDADERO VERDADERO NULO FALSO NULO NULO



Condicin Y
FALSO FALSO VERDADERO VERDADERO NULO VERDADERO NULO FALSO NULO



Resultado
FALSO VERDADERO VERDADERO VERDADERO VERDADERO VERDADERO NULO NULO
NULO
Limite las Filas Recuperadas por una Pregunta
129



FIGURA 3-14

La utilizacin el Y operador


























Si dos condiciones especificaran en un DONDE la clusula es afiliada con UN U
OPERADOR entonces una fila es probada consecutivamente de la conformidad a o a
ambas condiciones antes de ser recuperada. La conformacin con slo uno del O
condiciones es suficiente para el registro para ser devuelto. Si esto no se conforma con
ninguna de las condiciones, la fila es excluida ya que el resultado es FALSO. Una fila
slo ser devuelta si al menos una de las condiciones asociadas con UN U OPERADOR
evala al VERDADERO.
Recuperar archivos de empleado que tienen valores de FIRST_NAME que comienzan
con la carta B o aquellos con un mayor COMMISSION_PCT que el 35 por ciento
pueden ser escritos como:

seleccione first_name, last_name, commission_pct, hire_date de
EMPLOYEES donde first_name como 'B %' o commission_pct> 0.35;
130
Captulo 3:
La restriccin y la Comandoacin de Datos



Note que las dos condiciones son separadas por el O palabra clave. Todo el empleado
los archivos con valores de FIRST_NAME que comienzan con una mayscula "B" sern
devueltos sin tener en cuenta sus valores de COMMISSION_PCT, aun si ellos son
NULOS. Todos aquellos archivos que tienen COMMISSION_PCT valoran mayor que el
35 por ciento, sin tener en cuenta con qu la carta sus valores de FIRST_NAME
comienza, tambin es devuelto.
Adelante O las condiciones pueden ser especificadas separndolos con UN U
OPERADOR. Ms O condiciones usted especifica, menos restrictivo su pregunta se hace. La
figura 3-15 muestra la pregunta precedente con dos adicional O condiciones. El valor de
HIRE_DATE debe ser ms grande que 01-JAN-2000 o el LAST_NAME deben comenzar
con la carta "B". La primera pregunta devuelve menos filas que la segunda pregunta ya que
ms filas encuentran las condiciones menos restrictivas en la segunda pregunta que en el
primer.



FIGURA 3-15

La utilizacin EL U
OPERADOR
Limite las Filas Recuperadas por una Pregunta




GUIN & SOLUCIN
131

Usted tiene una pregunta compleja con condiciones mltiples. Hay una restriccin del nmero de condiciones que
usted puede especificar en el DNDE clusula? Hay un lmite del nmero de operadores de comparacin que usted
puede usar en una pregunta sola?
No. Usted puede especificar cualquier nmero de condiciones en el DONDE clusula separada por los operadores
Booleanos. No hay ningn lmite usando a los operadores de comparacin, y ellos pueden ser especificados tiempos
mltiples si es necesario en una pregunta sola.
Usted ha sido encargado para localizar filas en la comando de EMPLOYEES donde los valores de SUELDO
contienen los nmeros 8 y 0 adyacentes el uno al otro. La columna de SUELDO tiene un tipo de datos de
NMERO. Es posible usar al operador de comparacin PARECIDO con datos numricos?
S. El oracle automticamente echa los datos en el tipo de datos requerido, de ser posible. En este instancia, los valores
de SUELDO numricos son momentneamente "cambiados" en datos de carcter que permiten el uso del operador
PARECIDO localizar modelos correspondientes. La pregunta siguiente localiza las filas requeridas:
SELECCIONE * DE EMPLOYEES
DONDE SUELDO COMO 'EL %80 %';"
Restringiendo las filas volvi de la comando de JOBS a aquellos que contienen el valor SA_REP en la columna
JOB_ID, son una proyeccin, seleccin o juntura realizada?
Una seleccin es realizada ya que las filas son restringidas.


EL NO Operador el NO el operador niega a operadores condicionales. Una fila
seleccionada debe conformarse con la parte de enfrente lgica de la condicin a fin de ser
incluida en el SET de resultados. La tabla 3-4, el NO comando de verdad de operador,
resume su funcionalidad.
Los operadores condicionales pueden ser negados por el NO operador como mostrado
por el DONDE las clusulas pusieron en una lista en la Tabla 3-5.
Como los ejemplos en la Tabla 3-5 sugieren, el NO el operador puede ser muy til. Es
importante entender que el NO el operador niega al operador de comparacin en una
condicin, si es una igualdad, desigualdad, variedad basada, modelo correspondiente,
ingreso de SET, u operador de pruebas nulo.



TABLA 3-4

EL NO Comando de Verdad de Operador



Condicin X
FALSO VERDADERO NULO



NO Condicin X
VERDADERO FALSO NULO
132
Captulo 3:
La restriccin y la Comandoacin de Datos



TABLA 3-5

Condiciones Negadas por el NO Operador



Positivo
donde last_name ='King' donde first_name COMO 'R %' donde department_id EN (10,20,30) donde sueldo ENTRE 1 y
3000 donde commission_pct es NULO



Negativo
donde NO (last_name ='King') donde first_name NO COMO 'R %' donde department_id NO EN (10,20,30) donde
sueldo NO ENTRE 1 y 3000 donde commission_pct no es NULO


Recuperar al empleado registra con valores de FIRST_NAME que no comienzan con
la carta "B" o aquellos que no cumplen con un mayor COMMISSION_PCT que el 35
por ciento puede ser escrito como:

seleccione first_name, last_name, commission_pct, hire_date de
EMPLOYEES donde first_name no como 'B %' o no (commission_pct> 0.35);
Note que las dos condiciones todava son separadas por EL U OPERADOR y el
NO el operador acaba de ser aadido slo a ellos.

Y y O son operadores Booleanos que habilitan mltiple DONDE condiciones de
clusula para ser especificadas en una pregunta sola. Todas las condiciones
separadas por un Y operador deben evaluar al verdadero despus de probar los
valores de una fila para impedirle ser excluido del SET de resultados finales. Sin
embargo, slo una de las condiciones separadas por UN U OPERADOR debe
evaluar al verdadero para evitar su exclusin del SET de resultados finales. Si
cinco condiciones, A, B, C, D, y E, ocurren en un DONDE la clusula como
DONDE A y B o C o D y E, entonces una fila ser devuelta si ambas condiciones
A y B son realizadas, o slo condicin C son encontrados, o slo condicin D es
encontrada, o ambas condiciones D y E son realizados.


Reglas de precedencia
La aritmtica, el carcter, la comparacin, y las expresiones Booleanas fueron
examinados en el contexto del DONDE clusula. Pero cmo se relacionan estos
operadores el uno con el otro? Los operadores aritmticos se suscriben a una jerarqua de
precedencia. Las expresiones acorchetadas son evaluadas antes de multiplicacin y
operadores de divisin, que son evaluados antes de operadores de adicin y substraccin.
Del mismo modo, hay una jerarqua de precedencia para los operadores antes
mencionados como mostrado en la Tabla 3-6.
Los operadores al mismo nivel de la precedencia son evaluados de la izquierda a la
derecha si los encuentran juntos en una expresin. Cuando el NO el operador modifica el
Limite las Filas Recuperadas por una Pregunta
133



TABLA 3-6

Jerarqua de Precedencia de operador



Nivel de precedencia
12345

6

78910 11



Smbolo de operador
()/, * +,
|| =, <>, <=>, =

[NO] COMO, NO ES NULO, [NO] EN [NO] ENTRE! =, <> NO Y O



Operacin
Parntesis o Divisin de soportes y Adicin de multiplicacin e Igualdad de Encadenamiento de substraccin y
desigualdad
comparacin
Modelo, nulo, y SET
comparacin
Comparacin de variedad No igual a NO condicin lgica Y condicin lgica O condicin lgica

COMO, es NULO, y EN operadores de comparacin, su nivel de precedencia
permanece el mismo como la forma positiva de estos operadores.
Considere la select SENTENCIA siguiente que demuestra la interaccin de varios
operadores diferentes:

seleccione last_name,salary,department_id,job_id,commission_pct de
EMPLOYEES donde last_name como '%a %' y sueldo> department_id * 200 o
job_id en ('MK_REP', 'MK_MAN') y commission_pct no es nulo
El LAST_NAME, SUELDO, DEPARTMENT_ID, JOB_ID, y
Las columnas de COMMISSION_PCT son proyectadas de la comando de
EMPLOYEES basada en dos condiciones distintas. La primera condicin recupera los
archivos que contienen el carcter "a" en el espacio de LAST_NAME Y con un valor de
SUELDO mayor que 200 veces el valor de DEPARTMENT_ID. El producto de
DEPARTMENT_ ID y 200 es tratado antes del operador de desigualdad ya que la
precedencia de la multiplicacin es ms alta que la comparacin de desigualdad.
La segunda condicin trae aquellas filas con valores JOB_ID DEL HOMBRE MK_ o
de MK_REP en el cual los valores de COMMISSION_PCT no son nulos. Para una fila
para ser devuelta por esta pregunta, las primeras O segundas condiciones tienen que ser
realizadas. La figura 3-16 ilustra tres preguntas. La consulta 1 devuelve cuatro filas. La
consulta 2 est basada en la primera condicin slo hablada y devuelve cuatro filas. La
consulta 3 est basada en la segunda condicin y devuelve filas cero.
134
Captulo 3:
La restriccin y la Comandoacin de Datos



FIGURA 3-16

Precedencia de operador en el
DONDE clusula





















El cambio del pedido de las condiciones en el DONDE la clusula cambia su sentido
debido a la precedencia diferente de los operadores. Considere la muestra de cdigo
siguiente:

seleccione last_name,salary,department_id,job_id,commission_pct de
EMPLOYEES donde last_name como '%a %' y sueldo> department_id * 100 y
commission_pct no es nulo o job_id = 'MK_MAN'
Hay dos condiciones compuestas en esta pregunta. La primera condicin recupera
los archivos con el carcter "a" en el LAST_NAME paran y devuelven la pelota Y un
valor de SUELDO mayor que 100 veces el valor de DEPARTMENT_ID Y donde el
valor de COMMISSION_PCT no es nulo. La segunda condicin trae aquellas filas con
valores JOB_ID de MK_MAN. Una fila es devuelta por esta pregunta, si esto se conforma
para condicionar un O condicin dos, pero no necesariamente a ambos.
Limite las Filas Recuperadas por una Pregunta
135



FIGURA 3-17

Efecto de clusula de
condicin que pide debido a
reglas de precedencia





















Como la Figura 3-17 ilustra, esta pregunta devuelve seis filas. Esto espectculos
adicionales la divisin de la pregunta en dos preguntas basadas en sus dos condiciones
compuestas. La primera condicin causa cinco filas devueltas mientras los segundos
resultados en la recuperacin de slo una fila con un valor JOB_ID de MK_MAN.




Los operadores booleanos O y Y permiten mltiple DONDE condiciones de
clusula ser especificado. El Booleano NO el operador niega a un operador condicional y puede
ser usado varias veces dentro de la misma condicin. La igualdad, desigualdad, ENTRE, EN, y
COMO




los operadores de comparacin prueban dos trminos dentro de una condicin sola. Slo un
operador de comparacin es usado por clusula condicional. La distincin entre Booleano y
operadores de comparacin es importante y forma la base para muchas preguntas relacionadas
con este captulo en el examen.
136
Captulo 3:
La restriccin y la Comandoacin de Datos




OBJETIVO DE CERTIFICACIN 3.02


Clasifique las Filas Recuperadas por una Pregunta
Los diccionarios de lenguaje regulares clasifican palabras en comando alfabtico. Las
pginas imprimidas en a
el libro es clasificado numricamente en comando ascendente desde el principio hasta el
final. Las realizaciones prcticas de seleccin y proyeccin han sido cubiertas hasta
ahora. La utilidad de datasets recuperado puede ser considerablemente realzada con un
mecanismo para pedir o clasificar la informacin. La informacin puede ser clasificada
por comando alfabtico, numricamente, del ms temprano al ltimo, o en ascensin o
bajada del pedido. Adelante, los datos pueden ser clasificados por una o varias columnas,
incluso columnas que no son puestas en una lista en la clusula SENTENCIA. La
comandoacin es realizada una vez que los resultados de una select SENTENCIA han
sido trados. Los parmetros de comandoacin no influyen en los archivos devueltos por
una pregunta, slo la presentacin de los resultados. Exactamente las mismas filas son
devueltas por una select incluso una clusula de clase como son devueltos por una select
excluyendo una clusula de clase. Slo el pedido de salida puede diferenciarse. La
comandoacin de los resultados de una pregunta es llevada a cabo usando el PEDIDO POR
la clusula.

El PEDIDO POR Clusula
Cuando las tablas son creadas, ellos son al principio vacos y no contienen ningunas filas.
Como filas
son insertados, actualizados, y borrados por uno o varios usuarios o sistemas de
aplicacin, el pedido original de las filas almacenadas es perdido. El servidor de Oracle
no puede y no garantizar que las filas son almacenadas secuencialmente. Esto no es un
problema ya que un mecanismo para clasificar dataset recuperado est disponible en la
forma del PEDIDO POR la clusula.
Esta clusula es responsable de transformar salida de una pregunta en datos clasificados
ms prcticos, fciles de usar. El PEDIDO POR la clusula siempre es la ltima clusula en
una select SENTENCIA. Como la sintaxis llena de la select SENTENCIA es cada vez ms
expuesta, usted observar nuevas clusulas aadidas pero ninguno de ellos ser colocado
despus del PEDIDO POR la clusula. El formato del PEDIDO POR la clusula en el
contexto del SQL select SENTENCIA es como sigue:
SELECCIONE * | {column|expression [distinto] [alias], .}
DE la comando [DONDE condicin (ones)] [PIDEN POR {Cnel (es) |expr|numeric_pos}
[ASC|DESC] [NULLS FIRST|LAST]];
Clasifique las Filas Recuperadas por una Pregunta
137



La ascensin y la Bajada de la Comandoacin del pedido de Comandoacin ascendente son
naturales para la mayor parte de tipos de datos y son por lo tanto el pedido de clase por defecto usado
siempre que el PEDIDO POR la clusula sea especificado. Un pedido de comandoacin ascendente por
nmeros es el ms bajo al ms alto, mientras es el ms temprano al ltimo para fechas y por comando
alfabtico para carcteres. La primera forma del PEDIDO POR la clusula muestra que los resultados de una
pregunta pueden ser clasificados por una o varias columnas o expresiones:
PEDIDO POR Cnel (es) |expr; Suliste que un informe es solicitado que debe contener LAST_ de un
empleado
NOMBRE, HIRE_DATE, e informacin de SUELDO, clasificada por comando alfabtico por la columna
LAST_NAME para todos los representantes de ventas y gerentes de marketing. Este informe podra ser
extrado con la select SENTENCIA siguiente:

seleccione last_name, hire_date, sueldo de EMPLOYEES donde job_id en ('SA_REP', 'MK_MAN') piden
por last_name;
Los datos seleccionados pueden ser pedidos por cualquiera de las columnas de las tablas en el
DE la clusula, incluso aquellos que no aparecen en la lista SENTENCIA. Los resultados de la pregunta
precedente pueden ser clasificados por la columna COMMISSION_PCT, como mostrado en la Figura 3-18.
El segundo ejemplo en la Figura 3-18 muestra que aadiendo la palabra clave DESC al PEDIDO POR la
clusula, las filas son devueltas clasificadas en el pedido inclinado basado en la columna
COMMISSION_PCT. El tercer ejemplo demuestra NULLS opcional LTIMAS palabras claves, que
especifican que si la columna de clase contiene valores nulos, entonces estas filas deben ser puestas en una
lista ltimas despus de clasificar las filas restantes basadas en su NO valores NULOS. Para especificar
que las filas con valores nulos en la columna de clase deberan ser mostradas primero, aada el NULLS
PRIMERAS palabras claves al PEDIDO POR la clusula.
El ejemplo siguiente clasifica un basado dataset en una expresin. Esta expresin calcula el valor de un
empleado a una compaa basada en su HIRE_DATE y valores de SUELDO. Esta frmula toma el valor de
HIRE_DATE y resta un nmero especificado de das para devolver una fecha ms temprana. El nmero de
das restados es calculado dividiendo el valor de SUELDO por 10. La expresin es aliased como
EMP_VALUE como sigue:

seleccione last_name, sueldo, hire_date, hire_date-(sueldo/10) emp_value de EMPLOYEES
donde job_id en ('SA_REP', 'MK_MAN') piden por emp_value;
138
Captulo 3:
La restriccin y la Comandoacin de Datos



FIGURA 3-18

La comandoacin de datos
usando el PEDIDO POR
clusula






















La expresin EMP_VALUE es iniciada con el valor de HIRE_DATE y es compensada
adelante en el pasado basado en el espacio de SUELDO. La fecha EMP_VALUE ms
temprana parece primera en el SET de resultado salida ya que el PEDIDO POR la clusula
especifica que los resultados sern clasificados por el alias de expresin. Note que los
resultados podran ser clasificados por la expresin explcita y el alias podra ser omitido
ya que EN el pedido POR LA FECHA HIRE_ - (SUELDO/10), pero aliases de utilizacin
ejecuta la pregunta ms fcil a leer.
Varias opciones por defecto implcitas son seleccionadas cuando usted usa el PEDIDO
POR la clusula. El ms importante de stos es que a menos que DESC sea especificado,
se supone que el pedido de clase suba. Si los valores nulos ocurren en la columna de clase,
se supone que el pedido de clase por defecto sea NULLS LTIMO para comandoaciones
ascendentes y NULLS PRIMERO para bajar clases. Si ningn PEDIDO POR la clusula es
especificado, la misma pregunta ejecutada en tiempos diferentes puede volver el mismo
SET de causa el pedido de fila diferente, entonces ningunas asunciones deberan ser hechas
en cuanto al pedido de fila por defecto.




Comandoacin posicional
Clasifique las Filas Recuperadas por una Pregunta
139
El oracle ofrece una manera alterna y ms corta de especificar la columna de clase o expresin. En vez de
especificar el nombre de columna, la posicin de la columna como ocurre en la lista SENTENCIA es
aadida al PEDIDO POR la clusula. Considere el ejemplo siguiente:

seleccione last_name, hire_date, sueldo de EMPLOYEES donde job_id en ('SA_REP',
'MK_MAN') piden por 2;
El PEDIDO POR la clusula especifica los dos literales numricos. Esto es equivalente a
especificando el PEDIDO POR HIRE_DATE, ya que la columna HIRE_DATE es la segunda columna
seleccionada en la clusula SENTENCIA.
La comandoacin posicional slo se aplica a columnas en la lista SENTENCIA que hacen asociar una
posicin numrica con ellos. La modificacin de la pregunta precedente para clasificar los resultados por la
columna JOB_ID no es la comandoacin posicional posible que usa ya que esta columna no ocurre en la
lista SENTENCIA.

Los Resultados de Comandoacin compuestos de una pregunta pueden ser clasificados por ms
de una columna usando la comandoacin compuesta. Dos o ms columnas pueden ser especificadas
(literalmente o posicionalmente) como el criterio de comandoacin compuesto por comas que los separan en
el PEDIDO POR la clusula. Piense que el requisito trae el JOB_ID, LAST_NAME, SUELDO, y valores
de HIRE_DATE de la comando de EMPLOYEES. Los requisitos adicionales son que los resultados deben
ser clasificados en el comando alfabtico inverso por JOB_ID primero, luego en la ascensin del comando
alfabtico por LAST_NAME, y finalmente en el pedido numricamente inclinado basado en la columna de
SUELDO. La select SENTENCIA siguiente cumple estos requisitos:

seleccione job_id, last_name, sueldo, hire_date de EMPLOYEES donde job_id en ('SA_REP',
'MK_MAN') piden por job_id desc, last_name, 3 desc;
Cada columna implicada en la clase es puesta en una lista dejada a directamente en el comando de
importancia
separado por comas en el PEDIDO POR la clusula, incluso el modificador DESC, que ocurre dos veces en
esta clusula. Este ejemplo tambin demuestra especificaciones de columna literales y posicionales que se
mezclan. Como la Figura 3-19 muestra, hay varias filas con el mismo valor de JOB_ID, por ejemplo,
SA_REP. Para estas filas, los datos son clasificados por comando alfabtico por el criterio de
comandoacin secundario, que es la columna LAST_NAME.
140
Captulo 3:
La restriccin y la Comandoacin de Datos



FIGURA 3-19

Comandoacin compuesta
usando el PEDIDO POR
clusula





















Para las filas con mismo JOB_ID y mismos valores de columna LAST_NAME, como el
SA_REP y Smith, estas filas son clasificadas en el pedido de bajada numrico por la
tercera columna de clase, SUELDO.





El concepto de clasificar datos es por lo general a fondo probado. La sintaxis
del PEDIDO POR la clusula es trminos de clase francos, pero mltiples como expresiones,
columnas, y specifiers posicional, conectado con pedidos de clase inclinados por unos





trminos y pedidos de comandoacin ascendente por otros, proporcione un mecanismo de
comandoacin de datos potente que viene con un aumento correspondiente de la complejidad.
Esta complejidad a menudo es probada, tan asegure que usted tiene un entendimiento slido del
PEDIDO POR la clusula.





EJERZA 3-2 Datos de Comandoacin Usando el PEDIDO POR Clusula
Clasifique las Filas Recuperadas por una Pregunta
141
La comando de JOBS contiene descripciones de tipos diferentes de JOBS que un
empleado en la organizacin puede ocupar. Esto contiene el JOB_ID, JOB_TITLE,
MIN_SALARY, y columnas MAX_SALARY. Se requiere que usted escriba una pregunta
que extrae el JOB_TITLE, MIN_SALARY, y columnas MAX_SALARY, as como una
expresin llamada el DESACUERDO, que es la diferencia entre el MAX_SALARY y
valores de MIN_SALARY, para cada fila. Los resultados slo deben incluir valores de
JOB_TITLE que contienen la palabra "President" o "gerente". Clasifique la lista en el
pedido inclinado basado en la expresin de DESACUERDO. Si ms de una fila tiene el
mismo valor de DESACUERDO, entonces, adems, clasifican estas filas por
JOB_TITLE en el pedido alfabtico inverso.

1. Comience al Developer SQL y conecte al esquema de HORA. 2. La clusula
SENTENCIA es
SELECCIONE JOB_TITLE, MIN_SALARY, MAX_SALARY, (MAX_SALARY
- MIN_SALARY) DESACUERDO
3. El DE la clusula es
DE JOBS
4. El DONDE las condiciones deben permitir slo aquellas filas cuyo JOB_TITLE
la columna contiene la cuerda "presidente" O la cuerda "gerente".
5. El DONDE la clusula es
DONDE JOB_TITLE COMO '%President %' O JOB_TITLE COMO '%Manager
%'
6. La comandoacin es llevada a cabo con el PEDIDO POR la clusula. La
comandoacin compuesta es
utilizacin requerida tanto la expresin de DESACUERDO como la columna
JOB_TITLE en pedido inclinado.
7. El PEDIDO POR clusula es
PEDIDO POR DESACUERDO DESC, JOB_TITLE DESC. Usted puede
especificar alternativamente la expresin explcita en el PEDIDO POR la clusula
en vez del alias de expresin.
142
Captulo 3:
La restriccin y la Comandoacin de Datos



8. La ejecucin de la select devuelve un SET de resultados que emparejan este modelo como
mostrado en la ilustracin siguiente.
































OBJETIVO DE CERTIFICACIN 3.03


Substitucin de signo ""
Como las preguntas son desarrolladas y perfeccionadas, ellos pueden ser guardados para el
futuro uso. A veces,
las preguntas se diferencian muy ligeramente, y es deseable tener una forma ms genrica
de la pregunta que tiene una variable o placeholder defini lo que puede ser substituido
en el tiempo de ejecucin.
Substitucin de signo ""
143



El oracle ofrece esta funcionalidad en la forma de la substitucin de signo "". Cada
elemento de la select SENTENCIA puede ser substituido, y la reduccin de preguntas a
sus elementos principales para facilitar la reutilizacin puede guardarle las horas del
trabajo aburrido y reiterativo. Las reas siguientes son examinadas en esta seccin:

variables de Substitucin DEFINIR y VERIFICAN comandos

Variables de substitucin
La llave al entendimiento de variables de substitucin debe considerarlos como
placeholders.
Una pregunta de SQL es formada de dos o ms clusulas. Cada clusula puede estar
dividida en subclusulas, que son por su parte arregladas del texto de carcter. Cualquier
texto, subclusula o elemento de clusula, o hasta la pregunta de SQL entera son un
candidato por la substitucin. Considere la select SENTENCIA en su forma general:
SELECCIONE * | {column|expression [distinto] [alias], .}
DE la comando [DONDE condicin (ones)] [PIDEN POR {Cnel (es)
|expr|numeric_pos} [ASC|DESC] [NULLS FIRST|LAST]];
Usando la substitucin, usted inserta valores en los elementos puestos en bastardilla,
eligiendo que
palabras claves opcionales para usar en sus preguntas. Cuando la columna
LAST_NAME en la comando de EMPLOYEES se requiere, la pregunta es construida
usando la forma general de la select SENTENCIA y substituyendo el nombre de
columna LAST_NAME en el lugar de la columna de palabra en la clusula
SENTENCIA y el nombre de tabla; EMPLOYEES en lugar de la comando de palabra en
el DE clusula.

La Substitucin de Signo "" sola La forma ms bsica y popular de la
substitucin de elementos en una select SQL es la substitucin de signo "" sola. El
carcter de signo "" (&) es el smbolo elegido para designar una variable de substitucin
en una select y precede al nombre de variable sin espacios entre ellos. Cuando la select
es ejecutada, el servidor de Oracle trata la select, nota una variable de substitucin, e
intenta resolver el valor de esta variable de uno de dos modos. En primer lugar, esto
comprueba si la variable es definida en la sesin de usuario. (Hablan del comando
DEFINIR ms tarde en este captulo.) Si la variable no es definida, el proceso de usuario
apremio para un valor que ser substituido en el lugar de la variable. Una vez que un
valor es presentado, la select es completa y es ejecutada por el servidor de Oracle. La
variable de substitucin de signo "" es resuelta en el tiempo de ejecucin y es a veces
conocida como tiempo de ejecucin ligando o substitucin de tiempo de ejecucin.
144
Captulo 3:
La restriccin y la Comandoacin de Datos



Un requisito comn en el departamento de HORA de muestra puede deber recuperar el
misma informacin para EMPLOYEES diferentes en tiempos diferentes. Quizs se
requiere que usted busque la informacin de contacto como datos PHONE_NUMBER
dados NOMBRE de LAST_ o valores de EMPLOYEE_ID. Esta solicitud genrica puede
ser escrita como sigue:

seleccione employee_id, last_name, phone_number de EMPLOYEES donde
last_name = &LASTNAME o employee_id = &EMPNO;
Como la Figura 3-20 muestra, ejecutando esta pregunta, el servidor de Oracle le apremio
a
introduzca un valor para la variable llamada LASTNAME. Usted escribe el apellido de un
empleado, si usted lo sabe, por ejemplo, 'Rey'. Si usted no sabe el apellido, pero sabe el
Nmero de identificacin de empleado, usted puede teclear en cualquier valor y pulsar la
TECLA DE ENTRADA para presentar el valor. El oracle entonces le apremio para escribir un
valor para la variable EMPNO. Despus de teclear en un valor, por ejemplo, 0, y golpear
ENTER, no hay ningunas variables de substitucin restantes para el Oracle para resolverse y
la select siguiente es ejecutada:

seleccione employee_id, last_name, phone_number de EMPLOYEES donde
last_name = 'Rey' o employee_id = 0;
Las variables pueden ser adjudicadas cualquier nombre alfanumrico que sea un
nombre de identificador vlido.
El literal que usted substituye cuando apremio por una variable debe ser un tipo de datos
apropiado para aquel contexto; por otra parte, un ORA-00904: el error de identificador
invlido es devuelto. Si la variable se supone para substituir un carcter o valor de fecha,
las necesidades literales para ser encerradas en citas solas. Una tcnica til debe encerrar la
variable de substitucin de signo "" en citas solas tratando con valores de fecha y carcter.
De esta manera,



FIGURA 3-20

Substitucin de signo "" sola
Substitucin de signo ""
145



se requiere que el usuario presente un valor literal sin preocuparse de la inclusin de ello en citas. La select
siguiente vuelve a escribir el anterior, pero encierra la variable LASTNAME en citas:

seleccione employee_id, last_name, phone_number, e-mail de EMPLOYEES donde last_name
= '&LASTNAME' o employee_id = &EMPNO;
Cuando apremio para un valor para substituir a la variable LASTNAME, usted puede
por ejemplo, presente al Rey de valor sin cualquier cita sola, ya que stos estn presentes ya y cuando la
substitucin de tiempo de ejecucin es realizada, el primer DONDE la condicin de clusula se resolver a:
DONDE LAST_NAME = 'Rey'.

La doble Substitucin de Signo "" All es ocasiones cuando se refiere una variable de
substitucin tiempos mltiples en la misma pregunta. En tales situaciones, el servidor de Oracle le apremio
para escribir un valor para cada acontecimiento de la variable de substitucin de signo "" sola. Para
escrituras complejas esto puede ser muy ineficaz y aburrido. La select siguiente recupera el FIRST_NAME
y columnas LAST_NAME de la comando de EMPLOYEES para aquellas filas que contienen el mismo
SET de carcteres en ambos estos espacios:

seleccione first_name, last_name de EMPLOYEES donde last_name como '%&SEARCH%' y
first_name como '%&SEARCH%';
Las dos condiciones son idnticas, pero se aplican a columnas diferentes. Cuando esto
la select es ejecutada, usted es apremio primero para escribir un valor de substitucin para la variable de
BSQUEDA usada en la comparacin con la columna LAST_NAME. A partir de entonces, usted es
apremio para escribir un valor de substitucin para la variable de BSQUEDA usada en la comparacin con
la columna FIRST_NAME. Esto plantea dos problemas. En primer lugar, es ineficaz para escribir el mismo
valor dos veces, pero segundo y lo que es ms importante los errores tipogrficos pueden confundir la
pregunta ya que el Oracle no verifica que el mismo valor literal es entrado cada vez que las variables de
substitucin con el mismo nombre son usadas. En este ejemplo, la asuncin lgica es que los contenido de las
variables substituidas deberan ser el mismo, pero el hecho que las variables tienen el mismo nombre no
tiene ningn sentido al servidor de Oracle y esto no hace ninguna tal asuncin. El primer ejemplo en la Figura
3-21 muestra los resultados de ejecutar la pregunta precedente y presentar dos valores distintos para la
variable de substitucin de BSQUEDA. En este ejemplo particular, los resultados son incorrectos ya que el
requisito deba recuperar FIRST_NAME y pares de NOMBRE de LAST_ que contuvieron la serie idntica
de carcteres.
146
Captulo 3:
La restriccin y la Comandoacin de Datos



FIGURA 3-21

Doble substitucin de signo
""




















En situaciones cuando se refiere una variable de substitucin tiempos mltiples en la
misma pregunta y su intencin son que la variable debe tener el mismo valor en cada
acontecimiento en la select, es preferible hacer el uso de la doble substitucin de signo "".
Esto implica prefijar el primer acontecimiento de la variable de substitucin que ocurre
tiempos mltiples en una pregunta, con dos smbolos de signo "" en vez de uno. Cuando el
servidor de Oracle encuentra una doble variable de substitucin de signo "", un valor de
sesin es definido para aquella variable y usted no es apremio para escribir un valor para
ser substituido por esta variable en referencias subsecuentes.
El segundo ejemplo en la Figura 3-21 demuestra como la variable de BSQUEDA es
precedida por dos signos "" en la condicin con la columna FIRST_NAME y a partir de
entonces es prefijada por un signo "" en la condicin con la columna LAST_NAME.
Cuando ejecutado, usted es apremio para escribir un valor para ser substituido por la
variable de BSQUEDA slo una vez para la condicin con la columna FIRST_NAME.
Este valor es automticamente resuelto entonces del valor de sesin de la variable en
referencias subsecuentes a ello, como en la condicin con la columna LAST_NAME.
Para no definir la variable de BSQUEDA, usted tiene que usar el comando de
UNDEFINE descrito ms tarde en este captulo.
Substitucin de signo ""
147



Si usted trabaja como un developer, administrador de base de datos, o usuario final comercial,
todo SQL le pregunta el encuentro puede ser ampliamente clasificado como ad hoc o repiti
preguntas. Las preguntas ad hoc son select por lo general nicas escritas durante un poco de
ejercicio de investigacin de datos que con poca probabilidad sern reutilizados. Las preguntas
repetidas son aquellos que son ejecutados con frecuencia o peridicamente, que son por lo
general guardados ya que la escritura archiva y ejecutado con poco a ninguna modificacin
siempre que requerido. La reutilizacin previene el tiempo de reurbanizacin costoso y permite que
estas preguntas consecuentes se beneficien potencialmente de los aspectos de afinacin
automticos natales del Oracle engranados hacia el rendimiento de pregunta que mejora.

La substitucin de Nombres de Columna elementos Literales del DONDE clusula han sido el
foco de la discusin sobre la substitucin hasta ahora, pero prcticamente cualquier elemento de una select
SQL es un candidato por la substitucin. En la select siguiente, el FIRST_NAME y las columnas JOB_ID
son estticos y siempre sern recuperados, pero la tercera columna seleccionada es variable y especificada
como una variable de substitucin llamada: Coronel. El SET de resultado es clasificado adelante por esta
columna variable en el PEDIDO POR la clusula:

seleccione first_name, job_id, &&col de EMPLOYEES donde job_id en ('MK_MAN', 'SA_MAN')
piden por &col;
Como la Figura 3-22 demuestra, en el tiempo de ejecucin, usted es apremio para proporcionar un valor
para el doble signo "" la variable llam al Coronel. Usted podra escribir, por ejemplo, la columna llamada el
SUELDO y presentar su ingreso. La select que ejecuta realiza la substitucin y recupera el FIRST_NAME,
JOB_ID, y columnas de SUELDO de la comando de EMPLOYEES clasificada por el SUELDO.
A diferencia de carcter y literales de fecha, las referencias de nombre de columna no requieren citas
solas tanto cuando explcitamente especificado como cuando substituido va la substitucin de signo "".

Substituyendo Expresiones y texto Casi cualquier elemento de una select SQL puede ser
substituido en el tiempo de ejecucin. La coaccin consiste en que el Oracle requiere al menos que la primera
palabra sea esttica. En instancia de la select SENTENCIA, en el muy mnimo, la palabra clave
SENTENCIA se requiere y el resto de la select puede ser substituido como sigue:

escogido &rest_of_statement;
148
Captulo 3:
La restriccin y la Comandoacin de Datos



FIGURA 3-22

Substitucin de nombres de
columna















Cuando ejecutado, usted es apremio para presentar un valor para la variable llamada:
REST_OF_STATEMENT, que podra ser cualquier pregunta legtima, como el
DEPARTMENT_NAME de DEPARMENTS. Si usted presenta este texto como
introducido para la variable, la pregunta que es ejecutada ser resuelta a la select
siguiente:

seleccione department_name de DEPARTMENTS;
Considere la forma general de la select SQL vuelta a escribir usando el signo ""
substitucin, como mostrado despus:

seleccione &SELECT_CLAUSE de &FROM_CLAUSE donde &WHERE_CLAUSE piden por
&ORDER_BY_CLAUSE;
La utilidad de esta select es discutible, pero esto realmente ilustra el concepto
de substitucin con eficacia. Como la Figura 3-23 muestra, la select precedente permite
que cualquier pregunta hablada hasta ahora sea presentada en el tiempo de ejecucin. La
primera ejecucin pregunta la comando de REGIONS, mientras la segunda ejecucin
pregunta la comando de COUNTRIES. Los candidatos tiles por la substitucin de signo
"" son select que son ejecutadas tiempos mltiples y se diferencian ligeramente el uno del
otro.
Substitucin de signo ""
149



FIGURA 3-23

La substitucin de expresiones
y texto


























Defina y Verifique
La doble substitucin de signo "" es usada para evitar el ingreso reiterativo cuando la
misma variable ocurre tiempos mltiples en una select. Cuando una doble substitucin de
signo "" ocurre, la variable es almacenada como una variable de sesin. Como la select
ejecuta, todos los acontecimientos adicionales de la variable son automticamente
resueltos usando la variable de sesin almacenada. Cualquier ejecucin subsecuente de la
select dentro de la misma sesin automticamente resuelve las variables de substitucin
de valores de sesin almacenados. Esto no siempre es deseable y en efecto limita la
utilidad de variables de substitucin. El oracle realmente proporciona, sin embargo, un
mecanismo a UNDEFINE estas variables de sesin.
150
Captulo 3:
La restriccin y la Comandoacin de Datos




DENTRO DEL EXAMEN


Hay tres objetivos de certificacin en este captulo. La limitacin de las filas recuperadas por una
pregunta introdujo el DONDE la clusula, que prcticamente demuestra el concepto de la seleccin. Las
condiciones que limitan las filas volvieron estn basados en comparaciones usando el ENTRE, EN,
COMO, Igualdad, e Inequal-ity operadores. Su entendimiento cuidadoso de estos operadores de
comparacin y su comportamiento con el carcter, numrico, y tipos de datos de fecha ser examinado,
junto con como ellos son diferentes del Booleano NO, Y, y U OPERADORES.
La utilizacin del PEDIDO POR la clusula para clasificar resultados recuperados es opcional y muy
til. Las preguntas de examen que prueban los conceptos de la comandoacin tradicional, posicional, y
compuesta, junto con como los valores NULOS pueden ser manejados, son comunes. Cuando trminos
de clase mltiples son


presente en el PEDIDO POR la clusula, es aceptan - capaz de especificar pedidos de comandoacin
ascendente por unos y bajando pedidos de clase por otros. Es un error comn para olvidar que el Oracle
pro - vides esto mezcl el aspecto de comandoacin tambin para la especificacin del NULLS
FIRST|LAST modificador.
Su entendimiento de la substitucin usando signos "" solos y dobles as como DEFINIR y comandos de
UNDEFINE ser probado. Pueden darle una select que incluye una doble substitucin de signo ""
vari-capaz que es referido posteriormente tiempos mltiples en la select, junto con una variable de
substitucin de signo "" sola; se esperar que usted entienda las diferencias en su comportamiento. Su
entendimiento de nombre de columna, expresin, y substitucin de texto tambin ser medido.




El comando VERIFICAR es especfico para SQL*Plus y controla si los elementos
substituidos son repetidos en la pantalla del usuario antes de la ejecucin de una select SQL
que variables de substitucin de usos. Hablan de estos comandos en las siguientes
secciones.

DEFINIR y las variables de nivel de Sesin de Comandos de UNDEFINE son
implcitamente creados cuando los se los refieren al principio en select SQL usando la
doble substitucin de signo "". Ellos persisten o permanecen disponibles para la duracin
de la sesin o hasta que ellos sean explcitamente indeterminados. Una sesin se termina
cuando el usuario sale su instrumento de cliente como SQL*Plus o cuando el proceso de
usuario es terminado anormalmente.
Substitucin de signo ""
151



El problema con variables de sesin persistentes es ellos tienden a quitar mrito a la naturaleza genrica
de select que variables de substitucin de signo "" de uso. Por suerte, estas variables de sesin pueden ser
borradas con el comando de UNDEFINE. Dentro de una escritura o en la lnea de comandos de SQL*Plus
o Developer SQL, la sintaxis para no definir variables de sesin es como sigue:
Variable de UNDEFINE; Considere un ejemplo genrico simple que selecciona una columna esttica y
variable de
la comando de EMPLOYEES y clases salida de basado en la columna variable. La columna esttica podra
ser la columna LAST_NAME.

seleccione last_name, &&COLNAME de EMPLOYEES donde department_id=30 piden por &COLNAME;
La primera vez que esta select ejecuta, usted es apremio para introducir un valor para
la variable llamada COLNAME. Vaya a suponer que usted escriba el SUELDO. Este valor es substituido y la
select ejecuta. Una ejecucin subsecuente de esta select dentro de la misma sesin no apremio para ningn
valor de COLNAME ya que es definido ya como el SUELDO en el contexto de esta sesin y slo puede ser
indeterminado con NO DEFINIR el comando de COLNAME, como mostrado en la Figura 3-24. Una vez
que la variable ha sido indeterminada, la siguiente ejecucin de la select apremio al usuario para un valor
para la variable COLNAME.
El comando DEFINIR sirve dos objetivos. Esto puede ser usado para recuperar una lista de todas las
variables actualmente definidas en su sesin SQL; esto tambin puede ser usado explcitamente para definir
un valor para una variable referida como una variable de substitucin por una o varias select durante la vida
de aquella sesin. La sintaxis para las dos variantes del comando DEFINIR es como sigue:
DEFINA;
DEFINA variable=value;
Como la Figura 3-25 demuestra, una variable llamada EMPNAME es definida explcitamente
tener el valor 'Rey'. Los independientes DEFINEN el comando en SQL*Plus entonces devuelve varias
variables de sesin prefijadas con un carcter subrayar as como otras variables familiares, incluso
EMPNAME y dobles variables de substitucin de signo "" implcitamente definidas antes. Dos ejemplos de
pregunta diferentes pero simplistas son ejecutados, y la variable de substitucin explcitamente definida
EMPNAME es referido por ambas preguntas. Finalmente, la variable es INDETERMINADA.
152
Captulo 3:
La restriccin y la Comandoacin de Datos



FIGURA 3-24

El comando de UNDEFINE






























La capacidad del instrumento de cliente SQL de apoyar variables persistentes por la
sesin puede ser apagada y en como requerido usando el comando de SET. El comando
de SET no es un comando de lenguaje SQL, pero mejor dicho un comando de control de
entorno SQL. Especificando el SET DEFINEN LEJOS, el instrumento de cliente (por
ejemplo, SQL*Plus) no guarda variables de sesin o adjunta el sentido especial al smbolo
de signo "". Esto permite que el smbolo de signo "" sea usado como un carcter literal
ordinario si es necesario. El SET DEFINE el comando de ON|OFF por lo tanto determina
si la substitucin de signo "" est disponible en su sesin.
Substitucin de signo ""
153



FIGURA 3-25

El comando DEFINIR

























El ejemplo siguiente usa el smbolo de signo "" como un valor literal. Cuando
ejecutado, usted es apremio para sugerir que un valor para liga la variable SID.

seleccione 'Coda & Sid' del dual;
Apagando la funcionalidad de substitucin de signo "" como sigue, esta pregunta puede
sea ejecutado sin apremio:

SET DEFINE DE 'Coda & Sid' escogido de dual; SET DEFINE EN
Una vez que la select ejecuta, el SET DEFINEN EN el comando puede ser usado
encender la funcionalidad de substitucin atrs. Si DEFINEN es HECHO RESALTAR y
el contexto que un signo "" es usado en una select no puede ser resuelto literalmente, el
Oracle devuelve un error.
154
Captulo 3:
La restriccin y la Comandoacin de Datos




GUIN & SOLUCIN

La lista SENTENCIA de una pregunta contiene una columna sola. Es posible clasificar los resultados recuperados
por esta pregunta por otra columna?
S. A menos que la comandoacin posicional sea usada, el PEDIDO POR la clusula es independiente de la clusula
SENTENCIA en una select.
Las variables de substitucin de signo "" apoyan la reutilizabilidad de select SQL reiterativamente ejecutadas. Si un
valor substituido debe ser usado tiempos mltiples en partes diferentes de la misma select, es posible ser apremio
para presentar un valor de substitucin slo una vez y para aquel valor para ser automticamente substituido durante
referencias subsecuentes a la misma variable?
S. Los dos mtodos que pueden ser usados son la doble substitucin de signo "" o el comando DEFINIR. Ambos
mtodos causan el ingreso de suministro de usuario para una variable de substitucin especfica una vez. Este valor
permanece atado a la variable para la duracin de la sesin a menos que sea explcitamente INDETERMINADO.
Usted ha sido encargado para recuperar el LAST_NAME y valores de DEPARTMENT_ID para todas las filas en la
comando de EMPLOYEES. Salida debe ser clasificada por el nullable DEPARTMENT_ID columna, y todas las
filas con valores de DEPARTMENT_ID nulos deben ser puestas en una lista ltimas. Es posible proporcionar los
resultados como solicitado?
S. El PEDIDO POR la clusula asegura la comandoacin por columnas que potencialmente contienen valores
NULOS permitiendo los modificadores NULLS PRIMERO o NULLS LTIMO ser especificadas. La pregunta
siguiente localiza las filas requeridas: SELECCIONE LAST_NAME, DEPARTMENT_ID del PEDIDO DE
EMPLOYEES POR DEPARTMENT_ID NULLS LTIMO;


El Comando VERIFICAR Como hablado antes, dos categoras de comandos estn
disponibles tratando con el servidor de Oracle: la lenguaje de SQL manda y los comandos
de control de cliente SQL. La select SENTENCIA es un ejemplo de un comando de
lenguaje, mientras el comando de SET controla el entorno de cliente SQL. Hay muchos
lenguaje diferente y controla comandos disponibles, pero los comandos de control
pertinentes a la substitucin son DEFINEN y VERIFICAN.
El comando VERIFICAR controla si la variable de substitucin presentada es mostrada
onscreen entonces usted puede verificar que la substitucin correcta ha ocurrido. Un
mensaje es mostrado pruebas la vieja clusula seguida de la nueva clusula que contiene el
valor substituido. El comando VERIFICAR es encendido y Fuera el conjunto de comandos
VERIFICAN A ON|OFF. Como la Figura 3-26 muestra, VERIFIQUE es apagado primero,
una pregunta que usa la substitucin de signo "" es ejecutada, y usted es apremio para
introducir un valor. El valor es substituido entonces, las carreras de select, y sus resultados
son mostrados.
VERIFIQUE es encendido entonces, la misma pregunta es ejecutada, y usted es
apremio para introducir un valor. Una vez que el valor es introducido y antes de que la
select comience la ejecucin, el Oracle muestra la clusula que contiene la referencia a la
variable de substitucin como la vieja clusula con su nmero de lnea y, inmediatamente
debajo de esto, la nueva clusula muestra la select que contiene el valor substituido.
Substitucin de signo ""
155



FIGURA 3-26

El comando VERIFICAR



















EJERZA 3-3 Substitucin de Signo "" de Utilizacin
Un clculo comn realizado por el Departamento de recursos humanos est relacionado
con
el clculo de impuestos impuesto sobre un empleado. Aunque, esto sea hecho para todos
los EMPLOYEES, siempre hay unos EMPLOYEES que disputan el impuesto descontado
de sus ingresos. El impuesto descontado por empleado es calculado obteniendo el sueldo
anual para el empleado y multiplicando esto por la tasa impositiva corriente, que puede
variar del ao al ao. Se requiere que usted escriba una pregunta reutilizable usando la tasa
impositiva corriente y el nmero EMPLOYEE_ID como ingresos y devuelva el
EMPLOYEE_ID, FIRST_NAME, SUELDO, SUELDO ANUAL (SUELDO * 12),
TAX_RATE, e IMPUESTO (TAX_RATE * SUELDO ANUAL) informacin.

1. Comience SQL*Plus y conecte al esquema de HORA. 2. La lista sentencia debe
incluir las cuatro columnas especificadas as como dos ex -
pressions. La primera expresin aliased como el SUELDO ANUAL es un clculo
simple, mientras la segunda expresin aliased como el IMPUESTO depende del
TAX_RATE. Ya que la TASA IMPOSITIVA puede variar, este valor debe ser
substituido en el tiempo de ejecucin.
156
Captulo 3:
La restriccin y la Comandoacin de Datos



3. La clusula SENTENCIA es
SELECCIONE &&EMPLOYEE_ID, FIRST_NAME, SUELDO, SUELDO * 12 COMO "SUELDO
ANUAL", &&TAX_RATE, (&TAX_RATE * (SUELDO * 12)) COMO "EL IMPUESTO"
4. El doble signo "" que precede a EMPLOYEE_ID y TAX_RATE en el
La clusula SENTENCIA estipula al Oracle que cuando la select es ejecutada el usuario debe ser
apremio para presentar un valor para cada variable de substitucin que ser usada dondequiera que los se
los refieran posteriormente como &EMPLOYEE_ID y &TAX_RATE, respectivamente.
5. El DE la clusula es
DE EMPLOYEES 6. El DONDE la clusula slo debe permitir la fila cuyo valor de EMPLOYEE_ID es
especificado en tiempo de ejecucin. 7. El DONDE la clusula es
DONDE EMPLOYEE_ID = &EMPLOYEE_ID 8. La ejecucin de esta select devuelve el SET de
resultados mostrados en el siguiente
ilustracin.




RESUMEN DE CERTIFICACIN
Resumen de certificacin
157
EL DONDE la clusula proporciona la lenguaje que habilita la seleccin en el
ESCOGIDO
select. Los criterios para la inclusin o excluyendo filas toman la forma de condiciones.
Operadores de comparacin que usan, dos trminos son el uno comparado con el otro y
la condicin es evaluada como verdadero o falso para cada fila. Estos trminos pueden ser
valores de columna, literales, o expresiones. Si la suma Booleana de los resultados de
cada condicin evala al verdadero para una fila particular, entonces aquella fila es
recuperada. Los operadores condicionales permiten que trminos sean el uno comparado
con el otro en una variedad de caminos incluso igualdad, desigualdad, variedad basada,
ingreso de SET, y modelo de carcter que empareja la comparacin.
Una vez que un SET de datos es aislado por su pregunta, el PEDIDO POR la clusula
facilita clasificar las filas recuperadas basadas en numrico, fecha o columnas de carcter
o expresiones. Los resultados pueden ser clasificados usando combinaciones de columnas
o expresiones o ambos. Los datos son clasificados en comando ascendente en ausencia.
Las select genricas, reutilizables pueden ser construidas usando variables de
substitucin de signo "" que apremio para valores de tiempo de ejecucin durante la
ejecucin. Las variables de substitucin persistentes por la sesin pueden ser definidas y
son muy convenientes en situaciones donde muchas substituciones de la misma variable
ocurren en una select o escritura.
La select SENTENCIA simple ha sido ampliada para incluir un DONDE, y PEDIDO
POR la clusula. Estos componentes bsicos bsicos ofrecen una lenguaje prctica y til
que puede ser aplicada mientras usted construye su conocimiento de SQL.
158
Captulo 3:
La restriccin y la Comandoacin de Datos




TALADRADORA DE DOS MINUTOS

Limite las Filas Recuperadas por una Pregunta
el DONDE la clusula ampla la select SENTENCIA proporcionando la lenguaje
esto habilita la seleccin.
Una o varias condiciones constituyen un DONDE clusula. Estas condiciones especifican
las reglas a las cuales los datos en fila deben conformarse para ser elegibles para la seleccin.
Para cada fila probada en una condicin, hay trminos a la izquierda y el derecho de a
operador de comparacin. Los trminos en una condicin pueden ser valores de columna,
literales, o expresiones.
operadores de Comparacin puede probar dos trminos desde muchos puntos de vista. Igualdad o
desigualdad
las pruebas son mucho comn, pero variedad, SET, y las comparaciones de modelo tambin estn
disponibles.
comparacin de Variedad es realizado usando el ENTRE el operador, que prueba
si un trmino se cae entre principio dado y valores lmites de final.
ingreso de SET es probado usando el EN el operador. Una condicin basada en un SET
la comparacin evala al verdadero si el trmino de izquierda es puesto en una lista en el SET
citado del modo solo, delimitado por la coma en la derecha.
El operador PARECIDO habilita modelos de carcter literales para ser emparejados con
otros literales, valores de columna, o expresiones evaluadas. El smbolo de porcentaje (%) se
comporta como un comodn que empareja el cero o ms carcteres. El smbolo subrayar (_) se
comporta como un comodn de carcter solo que empareja exactamente un otro carcter.
operadores Booleanos incluyen el Y, O, y NO operadores. El Y
y O los operadores habilitan clusulas condicionales mltiples para ser especificadas. stos
son a veces mandados a como mltiples DONDE clusulas.
el NO el operador niega al operador de comparacin implicado en una condicin.

Clasifique las Filas Recuperadas por una Pregunta
Resultados son clasificados usando el PEDIDO POR la clusula. Las filas recuperadas pueden
ser
pedido segn una o varias columnas especificando los nombres de columna o su posicin
numrica en la clusula SENTENCIA.
El clasificado salida puede ser arreglado en utilizacin de comando ascendente o bajada
el DESC o los modificadores ASC despus de la clase llaman en el PEDIDO POR la clusula.




Substitucin de signo ""
Taladradora de dos minutos
159
substitucin de Signo "" facilita la reutilizacin de select SQL proporcionando un medio
substituir elementos de una select en tiempo de ejecucin. La misma select SQL puede ser por lo
tanto ejecutada tiempos mltiples con parmetros de ingreso diferentes.
substitucin de signo "" Sola requiere la introduccin de datos por el usuario para cada
acontecimiento de
la variable de substitucin en la select. La doble substitucin de signo "" requiere la introduccin
de datos por el usuario slo una vez por acontecimiento de una variable de substitucin, ya que esto
define una variable persistente por la sesin con el valor de ingreso dado.
variables persistentes por la Sesin puede ser puesto explcitamente usando el comando DEFINIR.
El comando de UNDEFINE puede ser usado para no poner a ambos implcitamente (doble
substitucin de signo "") y variables de sesin explcitamente definidas.
VERIFICAR el ajuste ambiental controla si SQL*Plus muestra el
las viejas y nuevas versiones de lneas de select que contienen variables de substitucin.
160
Captulo 3:
La restriccin y la Comandoacin de Datos



M PRUEBA
Las preguntas siguientes le ayudarn a medir su entendimiento del material presentado en esto
captulo. Lea todas las opciones con cuidado porque puede haber ms de una respuesta correcta. Elija todo
el correcto responde de cada pregunta.

Limite las Filas Recuperadas por una Pregunta
1. Qu dos clusulas de la select SENTENCIA facilitan la seleccin y la proyeccin?
A. ESCOGIDO, DE B. PEDIDO POR, DONDE C. ESCOGIDO, DONDE D. ESCOGIDO, PIDA
POR
2. Elija la pregunta que extrae el LAST_NAME, JOB_ID, y valores de SUELDO del
La comando de EMPLOYEES para archivos que tienen valores de JOB_ID de SA_REP o de
MK_MAN y tienen el SUELDO valora en la variedad de 1000$ a 4000$. Los ESCOGIDOS y DE
clusulas son LAST_NAME escogido, JOB_ID, SUELDO DE EMPLOYEES: A. DONDE JOB_ID
EN ('SA_REP', 'MK_MAN')
Y SUELDO> 1000 Y SUELDO <4000;
B. DONDE JOB_ID EN ('SA_REP', 'MK_MAN')
Y SUELDO ENTRE 1000 Y 4000;
C. DONDE JOB_ID COMO '% DE SA_REP' Y '% DE MK_MAN'
Y SUELDO> 1000 Y SUELDO <4000;
D. DONDE JOB_ID = 'SA_REP'
Y SUELDO ENTRE 1000 Y 4000 O JOB_ID ='MK_MAN';
3. Cul del siguiente DNDE clusulas contiene un error? Los ESCOGIDOS y DE clusulas son
SELECCIONE * DE EMPLOYEES: A. DONDE HIRE_DATE EN ('02-JUN-2004'); B. DONDE
SUELDO EN ('1000', '4000', '2000'); C. DONDE JOB_ID EN (SA_REP, MK_MAN); D. DONDE
COMMISSION_PCT ENTRE 0.1 Y 0.5;
M Prueba
161



4. Elija el DONDE la clusula que extrae los valores de DEPARTMENT_NAME que contienen el
carcter "er" literal de la comando de DEPARTMENTS. Los ESCOGIDOS y DE clusulas son
DEPARTMENT_NAME escogido DE DEPARTMENTS: A. DONDE DEPARTMENT_NAME EN
(' %e%r'); B. DONDE DEPARTMENT_NAME COMO '%er %'; C. DONDE
DEPARTMENT_NAME ENTRE 'e' Y 'r'; D. DONDE DEPARTMENT_NAME CONTIENE
'e%r';
5. Qu dos de las condiciones siguientes son equivalentes el uno al otro?
A. DONDE COMMISSION_PCT ES B NULO. DONDE COMMISSION_PCT = C NULO.
DONDE COMMISSION_PCT EN D (NULO). DONDE NO (COMMISSION_PCT NO ES
NULO)
6. Qu tres de las condiciones siguientes son equivalentes el uno al otro?
A. DONDE SUELDO <=5000 Y SUELDO> =2000 B. DONDE SUELDO EN
(2000,3000,4000,5000) C. DONDE SUELDO ENTRE 2000 Y 5000 D. DONDE SUELDO> 1999
Y SUELDO <5001 E. DONDE SUELDO> =2000 Y <=5000

Clasifique las Filas Recuperadas por una Pregunta
7. Elija una select falsa sobre el PEDIDO POR la clusula.
A. Usando el PEDIDO POR la clusula, siempre aparece como la ltima clusula en una select
SENTENCIA. B. El PEDIDO POR la clusula puede aparecer en una select SENTENCIA que no
contiene a
DONDE clusula.
C. El PEDIDO POR la clusula especifica uno o varios trminos por los cuales las filas recuperadas
son clasificadas.
Estos trminos slo pueden ser nombres de columna.
D. La comandoacin posicional es llevada a cabo especificando la posicin numrica de una
columna como ello ap-
peras en la lista SENTENCIA, en el PEDIDO POR clusula.
8. La pregunta siguiente recupera el LAST_NAME, SUELDO, y valores de COMMISSION_PCT
para EMPLOYEES cuyo LAST_NAME comienza con la carta R. Basado en la pregunta siguiente,
elija el PEDIDO POR la clusula que primeras clases los resultados por la columna
COMMISSION_PCT,
162
Captulo 3:
La restriccin y la Comandoacin de Datos



el listado de los asalariados de comisin ms altos primero, y luego clasifica los resultados en
comando ascendente por la columna de SUELDO. Cualquier archivo con COMMISSION_PCT nulo
debe parecer ltimo: SELECCIONE LAST_NAME, SUELDO, COMMISSION_PCT DE
EMPLOYEES DONDE LAST_NAME COMO 'R %' A. PEDIDO POR COMMISSION_PCT DESC,
2; B. PEDIDO POR 3 DESC, 2 ASC NULLS LTIMO; C. PEDIDO POR 3 DESC NULLS
LTIMO, 2 ASC; D. PEDIDO POR COMMISSION_PCT DESC, SUELDO ASC;

Substitucin de signo ""
9. El comando DEFINIR explcitamente declara una variable de substitucin persistente por la sesin
con a
valor especfico. Cmo es esto variable referido en una select SQL? Considere una expresin que
calcula el impuesto sobre el SUELDO de un empleado basado en la tasa impositiva corriente. Para la
variable de substitucin persistente por la sesin siguiente, qu select correctamente se refiere a la
variable TAX_RATE? DEFINA TAX_RATE=0.14 A. SUELDO ESCOGIDO *:TAX_RATE
IMPUESTO DE EMPLOYEES; B. SUELDO ESCOGIDO * &TAX_RATE IMPUESTO DE
EMPLOYEES; C. SUELDO ESCOGIDO * :&&TAX IMPUESTO DE EMPLOYEES; D. SUELDO
ESCOGIDO * IMPUESTO de TAX_RATE DE EMPLOYEES;
10. Usando variables de substitucin de signo "" en la pregunta siguiente, cuantas veces le va
sea apremio para introducir un valor para la variable llamada HACEN TRABAJOS TEMPORALES
la primera vez que esta pregunta es ejecutada? SELECCIONE FIRST_NAME, '&JOB' DE
EMPLOYEES DONDE JOB_ID COMO 'el % '||&JOB||' %' Y '&&JOB' ENTRE UN Y 'Z'; A. 0 B. 1
C. 2 D. 3

PREGUNTA DE LABORATORIO
Usando al Developer de SQL o SQL*Plus, conecte al esquema OE y complete las tareas siguientes.
Pregunta de laboratorio
163



Un cliente requiere una unidad de disco duro y una tarjeta de grficos para su comandoador personal. Ella
quiere gastar entre 500$ y 800$ en la unidad de discos, pero es insegura del coste de una tarjeta de grficos.
Su nico requisito es que la resolucin apoyada por la tarjeta de grficos debera ser 1024768 o
12801024. Como el representante de ventas, usted ha sido encargado para escribir una pregunta que
busca la comando PRODUCT_INFORMATION donde el valor de PRODUCT_NAME comienza con el
HD (disco duro) o GP (procesador de grficos) y sus precios de catlogo. Recuerde que los precios de
catlogo de disco duro deben estar entre 500$ y 800$ y los procesadores de grficos tienen que apoyar
1024768 o 12801024. Clasifique los resultados en la bajada del pedido de LIST_PRICE.
164
Captulo 3:
La restriccin y la Comandoacin de Datos



M PRUEBAN
RESPUESTAS

Limite las Filas Recuperadas por una
Pregunta
1. C. La clusula SENTENCIA facilita la proyeccin especificando la lista de columnas para ser

proyectado de una comando, mientras el DONDE la clusula facilita la seleccin limitando las
filas recuper basado en sus condiciones.
Los A, B, y D son incorrectos porque el DE la clusula especifica la fuente de las filas que son

proyectado y el PEDIDO POR la clusula es usado para clasificar las filas seleccionadas.
2. B. El EN el operador eficazmente prueba si el JOB_ID para una fila particular es cualquiera SA_

EL REPRESENTANTE o MK_MAN, mientras el ENTRE el operador eficazmente mide si el valor de
SUELDO de un empleado se cae dentro de la variedad requerida.
Los A y C excluyen a EMPLOYEES que ganan un sueldo de 1000$ o 4000$, desde stos
SUELDO
los valores son excluidos por los operadores de desigualdad. C tambin selecciona valores de
JOB_ID como % SA_REP y % MK_MAN, potencialmente seleccionando valores de JOB_ID
incorrectos. El D es el derecho de mitad. La primera mitad devuelve las filas con el JOB_ID igual a
SA_REP que tiene valores de SUELDO entre 1000$ y 4000$. Sin embargo, la segunda parte (el O
clusula), correctamente prueba del JOB_ID igual al HOMBRE MK_, pero no hace instancia de la
condicin de SUELDO.
3. C. Los literales de carcter que son comparado con la columna JOB_ID por el EN el operador
deben
sea encerrado por comillas solas.
Los A, B, y D son sintcticamente correctos. Note que B no requiere citas alrededor del
literales numricos. Tenerlos, sin embargo, no causa un error.
4. B. El operador PARECIDO prueba la columna DEPARTMENT_NAME de cada fila para
valores
esto contiene los carcteres "er". Los smbolos de porcentaje antes y despus del carcter literal
indican que cualquier carcter que encierra el literal "er" es permisible.
Los A y C son sintcticamente correctos. Unos usos el EN el operador, que est acostumbrado
al equipo de prueba
ingreso. El C prueba si el valor alfabtico de la columna DEPARTMENT_NAME est entre la
carta "e" y la carta "r". Finalmente, el D usa la palabra "contiene", que no puede ser usado en este
contexto.
5. A y D. SER el operador NULO correctamente evala la columna COMMISSION_PCT para
Valores NULOS. El D usa el NO operador para negar la versin ya negativa de SER el operador
NULO, no es NULO. Dos negativas devuelven un positivo, y por lo tanto A y D son equivalentes.
Los B y C son incorrectos ya que los valores NULOS no pueden ser probados por el operador
de igualdad o el
EN operador.
M Respuestas de Prueba
165



6. A, C, y D. Cada una de estas condiciones prueba de valores de SUELDO en la variedad de
2000$ a
5000$.
Los B y E son incorrectos. El B excluye valores como 2500$ de su SET, y E es ilegal ya que es

las ausencias de la columna de SUELDO llaman la referencia por el Y operador.

Clasifique las Filas Recuperadas por una Pregunta
7. C. Los trminos especificados en un PEDIDO POR la clusula pueden incluir nombres de
columna, posicional
la comandoacin, valores numricos, y expresiones.
Los A, B, y D son verdad.
8. C. La comandoacin posicional es realizada, y el tercer trmino en la lista SENTENCIA,
COMMISSION_
P.C., es clasificado primero en el pedido inclinado, y cualquier valor de COMMISSION_PCT nulo es
puesto en una lista ltimo. El segundo trmino en la lista SENTENCIA, SUELDO, es clasificado
despus en comando ascendente.
Los A, B, y D son incorrectos. No especifica que hacer con COMMISSION_ nulo
Los valores de P.C., y el comportamiento por defecto durante una clase inclinada deben poner
NULLS en una lista PRIMERO. El B aplica el NULLS LTIMO modificador a la columna de
SUELDO en vez de la columna de P.C. COMMISSION_, y D no hace instancia de NULLS
completamente.

Substitucin de signo ""
9. B. Puede referirse una variable de substitucin persistente por la sesin usando un smbolo de
signo ""
desde dentro cualquier select SQL ejecutada en aquella sesin.
Los A, C, y D son incorrectos. A y D intentan referirse a la variable de substitucin que usa
un prefijo de colon a su nombre y el nombre de variable solo. stos son referencias invlidas a
variables de substitucin en SQL. El C se refiere a una variable llamada el IMPUESTO y no
TAX_RATE variable.
10. D. La primera vez que esta select es ejecutada, dos variables de substitucin de signo "" solas son
encontrado antes de la tercera doble variable de substitucin de signo "". Si la primera referencia en
lnea una de la pregunta contuviera una doble substitucin de signo "", usted slo sera apremio para
introducir un valor una vez.
Los A, B, y C son incorrectos ya que usted es apremio tres veces para introducir un valor para
el TRABAJO
variable de substitucin. En ejecuciones subsecuentes de esta select en la misma sesin usted no
ser apremio para introducir un valor para esta variable.
166
Captulo 3:
La restriccin y la Comandoacin de Datos



RESPUESTA DE LABORATORIO
Usando al Developer de SQL o SQL*Plus, conecte al esquema OE y complete las tareas siguientes.
Se requiere que usted pregunte la comando PRODUCT_INFORMATION en el esquema OE para el
PRODUCT_NAME y columnas LIST_PRICE. Las filas seleccionadas deben conformarse con cualquiera
de dos condiciones. La primera condicin consiste en que el PRODUCT_NAME debe comenzar con los
carcteres 'HD' y su LIST_PRICE debe caerse a la variedad entre 500$ y 800$. Alternativamente, la fila
puede engaar - forma a la segunda condicin que el PRODUCT_NAME debe comenzar con los
carcteres 'GP' y contener los carcteres '1024'. Finalmente, los resultados deben ser clasificados en la
bajada del pedido de LIST_PRICE.
1. Comience al Developer SQL y conecte al esquema OE. 2. La clusula SENTENCIA es
SELECCIONE PRODUCT_NAME, LIST_PRICE
3. El DE la clusula es
DE PRODUCT_INFORMATION
4. La primera condicin es
PRODUCT_NAME COMO '% DE HD' Y LIST_PRICE ENTRE 500 Y 800
5. La segunda condicin es
PRODUCT_NAME COMO '% DE GP%1024'
6. Desde la primera o segunda condicin debe ser realizada por una fila a fin de ser recuperada,
estas dos condiciones deben ser separadas con el Booleano U OPERADOR.
7. El DONDE la clusula es
DONDE (PRODUCT_NAME COMO '% DE HD' Y LIST_PRICE ENTRE 500 Y 800) O
(PRODUCT_NAME COMO '% DE GP%1024')
8. El PEDIDO POR clusula es
PEDIDO POR LIST_PRICE DESC
9. La ejecucin de esta select devuelve el SET de resultados que emparejan este modelo como mostrado
en
la ilustracin:
Respuesta de laboratorio
167
Esta pgina intencionadamente se dej en blanco
4
Funciones de fila
sola









OBJETIVOS DE CERTIFICACIN


4.01

4.02


Describa Diversos tipos de Funciones Disponibles en SQL
Use Carcter, Nmero, y Fecha
Funciones en Select SENTENCIAS



Q&A


Taladradora de dos minutos
M Prueba















Copyright 2008 por El Clic de McGraw-Hill Companies, Inc aqu para trminos de uso.
170
Captulo 4:
Funciones de fila sola
Las funciones son una maravillosa extensin a
SQL y proporcionan una primera vislumbre de los apoyos de Oracle de capacidades procesales. Las
lenguajejes procesales permiten un nivel rico de la programacin
esto cede una variedad casi ilimitada de posibilidades de manipulacin de datos. Servidor
de oracle
pone en prctica una lenguaje procesal patentada llamada PL/SQL, o SQL procesal. Una variedad de
los objetos de programmatic llamados pueden ser construidos usando PL/SQL. stos incluyen
procedimientos, funciones, y paquetes. Aunque la escritura de PL/SQL sea relativamente franca, un
entendimiento cuidadoso de SQL es un requisito previo y el foco de este gua. Las funciones habladas
en este captulo son encajonadas a programas de PL/SQL envasados y suministrados por el Oracle
como aspectos incorporados.



OBJETIVO DE CERTIFICACIN 4.01


Describa Diversos tipos de Funciones Disponibles en
SQL
Las funciones de SQL estn ampliamente divididas en aquellos que calculan y devuelven
un valor para
cada fila en un conjunto de datos y aquellos que devuelven un valor agregado solo para
todas las filas. Las dos reas siguientes son exploradas:

Definicin de una funcin Tipos de funciones

Definicin de una Funcin
Una funcin es un programa escrito para aceptar opcionalmente parmetros de ingreso,
funcionar un
operacin, o vuelta un valor solo. Una funcin devuelve slo un valor por ejecucin.
Tres componentes importantes forman la base de definir una funcin. El primer es la
lista de parmetro de ingreso. Esto especifica el cero o ms argumentos que pueden ser
pasados a una funcin como introducido para el procesamiento. Estos argumentos o
parmetros pueden ser de tipos de datos que se diferencian, y unos son obligatorios
mientras los otros pueden ser opcionales. El segundo componente es el tipo de datos de
su valor consiguiente. Despus de la ejecucin, slo un valor es devuelto por la funcin.
El tercer encapsula los detalles del procesamiento realizado por la funcin y contiene el
cdigo de programacin que opcionalmente manipula los parmetros de ingreso, realiza
clculos y operaciones, y genera un valor de retorno.
Una funcin a menudo es descrita como una caja negra que toma un ingreso, realiza a
clculo, y vueltas un valor como ilustrado por la ecuacin siguiente. En vez de
Describa Diversos tipos de Funciones Disponibles en SQL
171



concentrndose en sus detalles de realizacin, usted es animado a concentrarse en los aspectos que las
funciones incorporadas proporcionan.
F (x, y, z, .) = resultado; las Funciones pueden ser anidadas dentro de otras funciones, como el F1 (x, y, F2
(a, b), z),
donde F2, que toma dos parmetros de ingreso, a y b, y forma el tercer de cuatro parmetros presentados a
F1. Las funciones pueden actuar sobre cualquier tipo de datos disponible, el ms popular que es carcter,
fecha, y datos numricos. Estos operands pueden ser columnas o expresiones.
Como un ejemplo, considere una funcin que calcula la edad de una persona. La funcin de EDAD toma
un parmetro de ingreso de fecha, que es el cumpleaos de la persona. El resultado devuelto por la funcin
de EDAD es un nmero que representa la edad de una persona. El clculo de caja negra implica obtener la
diferencia durante aos entre la fecha corriente y el parmetro de ingreso de cumpleaos.

El funcionamiento en datos de Carcter de Datos de Carcter o cuerdas es verstil ya que
ellos facilitan el almacenamiento de casi cualquier tipo de datos. Las funciones que actan sobre datos de
carcter son ampliamente clasificadas como conversin de instancia y funciones de manipulacin de carcter.
La cuerda siguiente las funciones incorporadas son examinadas detalladamente ms tarde en este captulo,
pero una breve descripcin es proporcionada aqu.
INFERIOR, SUPERIOR, e INITCAP son las funciones de conversin de instancia que converten una
columna de carcter dada, literal, o expresin en minscula, mayscula, o instancia inicial, respectivamente:

ms abajo ('SQL') = sql superior ('sql') = SQL initcap ('sql') = Sql
Las funciones de manipulacin de carcter son excepcionalmente potentes e incluyen el
LA LONGITUD, CONCAT, SUBSTR, INSTR, LPAD, RPAD, NETO, y REEMPLAZAN funciones.
La LONGITUD (cuerda) funcin usa una cadena de caracteres como un parmetro de ingreso y
devuelve un valor numrico que representa el nmero de carcteres presentes en aquella cuerda:

longitud ('Una cuerda corta') = 14
El CONCAT (ensartan 1, ensartan 2) la funcin toma dos cuerdas y concadena o
se afilia a ellos del mismo modo que el operador de encadenamiento || hace:

concat ('los is' de SQL,' fcil a aprender. ') = SQL es fcil a aprender.
172
Captulo 4:
Funciones de fila sola



El SUBSTR (cuerda, comience la posicin, el nmero de carcteres) la funcin acepta tres
parmetros y devuelve una cuerda que consiste en el nmero de carcteres extrados de la
cuerda de la fuente, que comienza en la posicin de principio especificada:

substr ('http://www.domain.com', 12,6) = dominio
El INSTR (cuerda de la fuente, busque el artculo, [posicin de principio], [el
acontecimiento ensimo de la bsqueda
artculo]) la funcin devuelve un nmero que representa la posicin en la cuerda de la
fuente, que comienza de la posicin de principio dada, donde el acontecimiento ensimo
del artculo de bsqueda comienza:

instr ('http://www.domain.com','. ', 1,2) = 18
El LPAD (cuerda, longitud despus de acolchado, rellenando cuerda) y RPAD (cuerda,
longitud despus
rellenando, rellenando la cuerda) las funciones aaden una serie de acolchado de carcteres
a la izquierda o derecho de una cuerda hasta que esto alcance la longitud especificada
despus del acolchado.
La funcin NETA literalmente recorta de conduccin o rastreo (o ambos) cadenas de
caracteres de una cuerda de la fuente dada:

rpad ('#PASSWORD#', 11, '#') = #PASSWORD## lpad ('#PASSWORD#', 11, '#')
= ##PASSWORD# neto ('#' de '#PASSWORD#') = CONTRASEA
REEMPLAZAR (cuerda, busque el artculo, el artculo de reemplazo) la funcin
localiza la bsqueda
el artculo en una cuerda dada y lo reemplaza con el artculo de reemplazo, devolviendo
una cuerda con valores reemplazados:

reemplace ('#PASSWORD#', 'PALABRA', 'PUERTO') = #PASSPORT#

Actuando sobre Datos Numricos Muchas funciones incorporadas
numricas estn disponibles. Unos calculan races cuadradas, realizan exponentiation, y
converten nmeros en el formato hexadecimal. Hay demasiado para mencionar, y
muchos los clculos matemticos, cientficos, y financieros populares han sido expuestos
como funciones incorporadas por el Oracle.
Tres funciones numricas comunes, examinadas ms tarde en este captulo, son
REDONDAS, TRUNC, y MOD. POR AH (nmero, precisin decimal) facilita acabar un
nmero al valor ms bajo o ms alto dado un formato de precisin decimal:

la vuelta (42.39,1) = 42.4
El TRUNC (nmero, precisin decimal) la funcin deja o trunca el
nmero dado un valor de precisin decimal:

trunc (42.39,1) = 42.3
Describa Diversos tipos de Funciones Disponibles en SQL



El MOD (dividendo, divisor) devuelve el resto de una operacin de divisin:

mod (42,10) = 2

El funcionamiento en informacin de Fecha
173
El funcionamiento con valores de fecha puede ser provocativo. La realizacin de la aritmtica de fecha que
acomoda aos bisiestos y longitudes de mes variables puede ser frustrante y susceptible de errores. El
oracle se dirige a este desafo proporcionando el apoyo natal a la aritmtica de fecha y varias funciones de
fecha incorporadas, como el MONTHS_BETWEEN, ADD_MONTHS, LAST_DAY, NEXT_DAY,
SYSDATE, POR AH, y TRUNC.
El MONTHS_BETWEEN (fecha 1, fecha 2) la funcin devuelve el nmero de meses entre dos fechas,
mientras el ADD_MONTHS (fecha 1, nmero de meses) devuelve la fecha que resulta de aadir un
nmero especificado de meses a una fecha:

months_between ('01-FEB-2008', '01-JAN-2008') = 1 add_months ('01-JAN-2008', 1) =
01-FEB-2008
Los LAST_DAY (fecha 1) funcionan vueltas el da anterior del mes que el
la fecha especificada se cae en, mientras el NEXT_DAY (fecha 1, da de la semana) devuelve la fecha en
cual el da especificado siguiente de las cadas de semana despus de la fecha dada:

last_day ('01-FEB-2008') = 29-FEB-2008 next_day ('01-FEB-2008', 'el viernes') =
08-FEB-2008
La funcin de SYSDATE no toma ningunos parmetros y devuelve un valor de fecha esto
representa la fecha de servidor corriente y tiempo. POR AH (fecha, formato de precisin de fecha) y
TRUNC (fecha, formato de precisin de fecha) por ah y truncado un valor de fecha dado a la precisin de
fecha ms cercana formatean como da, mes, o ao:

sysdate = 17-DEC-2007 por ah (sysdate, 'mes') = 01-JAN-2008 trunc (sysdate, 'mes')
= 01-DEC-2007

Las funciones de fila sola son usadas en casi cada pregunta publicada por analistas, developeres,
y administradores. Buscando datos de carcter, la funcin NETA con frecuencia es usada para
eliminar espacios suplementarios que ocurren en espacios de carcter. Las funciones de
conversin de instancia son usadas para estandarizar los datos de columna. Esto facilita la busca
ms exacta y eficiente desde el instancia en el cual los datos de carcter son capturados a
menudo es inconsecuente.
174
Captulo 4:
Funciones de fila sola



Tipos de Funciones
Hablan de dos amplios tipos de funciones que actan sobre filas solas y mltiples,
respectivamente, despus. Esta distincin es esencial para el entendimiento del contexto
ms grande en el cual las funciones son usadas. El oracle continuamente se esfuerza por
asegurar que su interpretacin comercial de SQL se conforma con normas internacionales.
Esto facilita la facilidad de la migracin de habilidades y sistemas a travs de vendedores y
proveedores del software RDBMS. La realizacin del oracle de SQL es dcil con el
ANSI:1999 (Instituto de Estndares Nacional americano) el estndar para SQL. Ms
recientemente, esto reclam la conformidad parcial al estndar SQL:2003 endosado por
amba organizacin internacional para la normalizacin (Organizacin internacional para
la Estandarizacin) y ANSI. Las funciones de SQL han sido estandarizadas, y el Oracle ha
documentado a aquellos que son totalmente o parcialmente dciles al estndar SQL:2003.

Las Funciones de fila sola All son varias categoras de funciones de fila sola
incluso el carcter, numrico, fecha, conversin, y general. El foco de este captulo est en
el carcter, numrico, y funciones de fila sola de fecha. stos son funciones que actan
sobre una fila de un dataset a la vez. Si una pregunta selecciona 10 filas, la funcin es
ejecutada 10 veces, una vez por fila con los valores de aquella fila como introducido a la
funcin.
Como la Figura 4-1 muestra, dos columnas de la comando de REGIONS han sido
seleccionadas junto con una expresin usando la funcin de LONGITUD con la columna
REGION_NAME.
La longitud de la columna REGION_NAME es calculada para cada fila, depruebas
que la funcin ha ejecutado cuatro veces separadas, devolviendo un resultado por fila.
Las funciones de fila sola manipulan los artculos de datos en fila para extraerlos y
formatearlos con objetivos de visualizacin. Los valores de ingreso a una funcin de fila
sola pueden ser el usuario - constantes especificadas o literales, datos de columna,
variables, o las expresiones opcionalmente suministradas por otro anidaron funciones de
fila sola. Anidar de funciones de fila sola es una tcnica comnmente usada. Las funciones
pueden devolver un valor con un tipo de datos diferente de sus parmetros de ingreso.
Como la Figura 4-1 demuestra, la funcin de LONGITUD acepta un parmetro de
ingreso de carcter y vuelve un numrico salida.
Hablan de funciones de conversin como TO_CHAR, TO_NUMBER, y TO_DATE
en el Captulo 5. Ellos cambian el tipo de datos de datos de columna o expresiones que
permiten otras funciones actuar sobre ellos. Tambin hablan de las funciones generales en
el Captulo 5. Ellos simplifican el funcionamiento con valores NULOS y facilitan la
lgica condicional dentro de una select SENTENCIA. stos incluyen el NVL, NVL2,
NULLIF, SE FUNDEN, INSTANCIA, y DECODIFICAN funciones.
Aparte de su inclusin en la lista SENTENCIA de una pregunta de SQL, las funciones
de fila sola pueden ser usadas en el DONDE y PEDIDO POR clusulas. Suliste que haya
un requisito para poner filas en una lista de la comando de REGIONS donde la longitud
de los datos de columna REGION_NAME es al menos cinco carcteres mucho tiempo.
Hay un adicional
Describa Diversos tipos de Funciones Disponibles en SQL
175



LA FIGURA 4-1 Una funcin de fila sola






















necesidad de esta lista para ser clasificada en pedido alfabtico basado en el valor del
ltimo carcter en la columna REGION_NAME. EL DONDE La clusula es mostrada
aqu:

donde longitud (region_name)> 4
Para obtener el ltimo carcter en una cuerda, la funcin de SUBSTR es usada con el
Columna de REGION_NAME como la cuerda de la fuente. La longitud del
REGION_NAME es usada como la posicin de principio, produciendo el PEDIDO
siguiente POR la clusula:

pedido por substr (region_name, longitud (region_name), 1)
Como la Figura 4-2 muestra, slo tres de las cuatro REGIONS son devueltas, y la lista
es clasificado en el pedido alfabtico basado en el ltimo carcter en la columna
REGION_NAME para cada fila.

Las Funciones de fila mltiple Como el nombre sugieren, esta categora de
funciones acta sobre ms de una fila a la vez. Los usos tpicos de funciones de fila mltiple
incluyen el clculo de la suma o el promedio de los valores de columna numricos o contar
el nmero total de archivos en SETs. stos son a veces conocidos como agregacin o
funciones de grupo y son explorados en el Captulo 7.
176
Captulo 4:
Funciones de fila sola



LA FIGURA 4-2 Funciones en ESCOGIDO, DONDE, y PEDIDO POR clusulas



























Las funciones de fila sola son ejecutadas para cada fila en el conjunto de datos
seleccionado. Este concepto es implcitamente probado va ejemplos prcticos en el examen.
Las funciones siempre devuelven slo un valor de un tipo de datos predeterminado. Ellos
pueden aceptar el cero o ms parmetros de tipos de datos que se diferencian. Las funciones
de carcter de fila sola



























como la LONGITUD, SUBSTR, e INSTR son con frecuencia usados juntos, y se requiere un
entendimiento cuidadoso de stos. Recuerde que los parmetros de ingreso que pueden ser
implcitamente convertidos a los tipos de datos requeridos por funciones son aceptables para el
Oracle.
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS




OBJETIVO DE CERTIFICACIN 4.02


Use Carcter, Nmero, y Funciones de Fecha en
Select SENTENCIAS
177
Esta seccin conduce una investigacin detallada de las funciones de fila sola
introducidas
antes. Un enfoque estructurado ser tomado que incluye descripciones de funcin, reglas
de sintaxis, descripciones de parmetro, y ejemplos de uso. Las funciones de conversin
de instancia de carcter son examinadas, seguidas de las funciones de manipulacin de
carcter. Despus, las funciones numricas son examinadas, y la seccin concluye con
una discusin de las funciones de fecha.

La utilizacin de Funciones de Conversin de Instancia de Carcter
Los datos de carcter pueden ser guardados en tablas de numerosas fuentes, incluso la
aplicacin
interfaces y programas de lote. No est seguro suponer que los datos de carcter hayan
sido destinados en una manera consecuente. Las funciones de conversin de instancia de
carcter sirven dos objetivos importantes. Ellos pueden ser usados primero, para modificar
el aspecto de un artculo de datos de carcter con objetivos de visualizacin y en segundo
lugar, ejecutarlos consecuente para operaciones de comparacin. Es ms simple buscar
una cuerda usando un formato de instancia consecuente en vez de probar cada
permutacin de carcteres maysculos y minsculos que podran emparejar la cuerda. Es
importante recordar que estas funciones no cambian los datos almacenados en tablas.
Ellos todava forman la parte de la pregunta de SQL slo para leer.
Las funciones de carcter hablaron despus esperan parmetros de cuerda. stos
pueden ser cualquier cuerda literal, valor de columna de carcter, o expresin que causa
un valor de carcter. Si es un numrico o un valor de fecha, es implcitamente convertido
en una cuerda.

La Funcin INFERIOR La funcin INFERIOR converte una serie de carcteres en
sus equivalentes minsculos. Esto no aade carcteres suplementarios o acorta la
longitud de la cuerda inicial. Los carcteres maysculos son convertidos en sus
equivalentes minsculos. Numrico, la puntuacin, o carcteres especiales no es
ignorada.
La funcin INFERIOR puede tomar slo un parmetro. Su sintaxis es ms BAJA (s).
El
las preguntas siguientes ilustran el uso de esta funcin:

La consulta 1: seleccione ms abajo (100) de la Consulta 2 dual: seleccione
ms abajo (100+100) de la Consulta 3 dual: seleccione ms abajo ('La SUMA
'|| '100+100' ||' = 200') de dual
178
Captulo 4:
Funciones de fila sola



Las consultas 1 y 2 devuelven las cuerdas 100 y 200, respectivamente. El parmetro al
BAJE la funcin en la consulta 3 es una expresin de carcter y la cuerda devuelta por la
funcin es "La suma 100 + 100 = 200."

La consulta 4: seleccione ms abajo (SYSDATE) de la Consulta 5 dual:
seleccione ms abajo (SYSDATE+2) del dual
Suliste que la fecha de sistema actual sea: 17-DEC-2007. Vuelta de consultas 4 y 5
las cuerdas 17-dec-2007 y 19-dec-2007, respectivamente. Las expresiones de fecha son
evaluadas e implcitamente convertidas en datos de carcter antes de que la funcin
INFERIOR sea ejecutada.
Como la Figura 4-3 muestra, la funcin INFERIOR es usada en el DONDE la clusula
para localizar los archivos con las minsculas "u" y "r" adyacente el uno al otro en el
LAST_NAME para y devuelve la pelota.
Piense que la escritura de una pregunta alternativa devuelve los mismos resultados
sin usar la funcin INFERIOR. Podra ser hecho como sigue:

seleccione first_name, last_name de EMPLOYEES donde last_name como '%ur
%'


LA FIGURA 4-3 La funcin INFERIOR
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS



o last_name como '%UR %' o last_name como '%uR %' o last_name como '%Ur %'
179
Esta pregunta trabajos pero es incmoda, y el nmero de O clusulas requeridas
aumentos exponencialmente como la duracin de los aumentos de cadena de bsqueda.

La Funcin SUPERIOR La funcin SUPERIOR es la parte de enfrente lgica de la funcin
INFERIOR y converte una serie de carcteres en sus equivalentes maysculos. Esto no aade carcteres
suplementarios o acorta la longitud de la cuerda inicial. Todos los carcteres minsculos son convertidos
en sus equivalentes maysculos. Numrico, la puntuacin, o carcteres especiales no es ignorada.
La funcin SUPERIOR toma slo un parmetro. Su sintaxis es SUPERIOR (s). Las preguntas siguientes
ilustran el uso de esta funcin:

La consulta 1: seleccione superior (1+2.14) de la Consulta 2 dual: seleccione superior
(SYSDATE) del dual
La consulta 1 devuelve la cuerda 3.14. El parmetro a la funcin SUPERIOR en la consulta 2
es SYSDATE, que devuelve la fecha de sistema actual. Ya que este valor es devuelto en la mayscula en
ausencia, ninguna conversin de instancia es realizada.
La funcin SUPERIOR es usada en la Figura 4-4 para extraer las filas de la comando de COUNTRIES
donde los valores de COUNTRY_NAME contienen las cartas "U", "S", y "A" en aquel pedido. Las cartas "U",
"S", y "A" no tienen que ser adyacentes el uno al otro.
La escritura de una pregunta alternativa para devolver los mismos resultados sin usar las funciones
SUPERIORES o INFERIORES podra ser hecha usando una pregunta con ocho condiciones:

SELECCIONE * DE COUNTRIES
DONDE country_name como '%u%s%a %'
o
country_name
como
'% de %u%s%A'
o country_name como '%u%S%a %'
o
country_name
como
'% de %u%S%A'
o country_name como '%U%s%a %'
o
country_name
como
'% de %U%s%A'
o country_name como '%U%S%a %'
o
country_name
como
'% DE %U%S%A'
Esta pregunta trabajos pero es incmoda. El nmero de O las clusulas se requieren
aumentos exponencialmente como la duracin de los aumentos de cadena de bsqueda.

La Funcin de INITCAP La funcin de INITCAP converte una serie de carcteres en el instancia
capitalizado. A menudo es usado con objetivos de presentacin de datos. Las primeras cartas de cada
palabra en la cuerda son convertidas a sus equivalentes maysculos, mientras las cartas restantes de cada
palabra son convertidas a sus equivalentes minsculos. Una palabra es por lo general una serie de
carcteres adyacentes separados por un espacio o subraye, pero otros carcteres tal como
180
Captulo 4:
Funciones de fila sola



LA FIGURA 4-4 La funcin SUPERIOR























el smbolo de porcentaje, el signo de admiracin, o el signo de dlar son separadores de
palabra vlidos. La puntuacin o los carcteres especiales son considerados como
separadores de palabra vlidos.
La funcin de INITCAP puede tomar slo un parmetro. Su sintaxis es INITCAP (s).
Las preguntas siguientes ilustran el uso de esta funcin:

La consulta 1: seleccione initcap (21/7) de la Consulta 2 dual: seleccione initcap
(SYSDATE) de la Consulta 3 dual: seleccione initcap ('init letras maysculas o
init_cap o init%cap') del dual
La consulta 1 devuelve el cociente 3 como una cuerda. La consulta 2 devuelve la
cadena de caracteres
valor de la fecha de sistema actual, con la parte de mes cambiada de mayscula a instancia
inicial. Suponiendo que la fecha de sistema actual sea 17-DEC-2007, la consulta 2 por lo
tanto devuelve 17-Dec-2007. La consulta 3 devuelve Letras maysculas Init O Init_Cap
O Init%Cap.
Las preguntas en la Figura 4-5 seleccionan el LAST_NAME y valores de JOB_ID de
la comando de EMPLOYEES para aquellos EMPLOYEES con valores de LAST_NAME
que comienzan con la carta "H". La primera pregunta aplica la funcin de INITCAP a la
clusula SENTENCIA entera. La segunda pregunta muestra como la funcin de
INITCAP es aplicada por separado a cada componente de carcter. Ambas preguntas
ceden resultados idnticos.
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS
181



LA FIGURA 4-5 La funcin de INITCAP





























EJERZA 4-1 Utilizacin de las Funciones de Conversin de Instancia
Recupere una lista de todo FIRST_NAME y valores de LAST_NAME del
La comando de EMPLOYEES donde FIRST_NAME contiene la cadena de
caracteres "li".

1. Comience al Developer SQL y conecte al esquema de HORA. 2. La
clusula SENTENCIA es
SELECCIONE FIRST_NAME, LAST_NAME
3. El DE la clusula es
DE EMPLOYEES
182
Captulo 4:
Funciones de fila sola



4. El DONDE la clusula debe comparar los valores de columna FIRST_NAME con a
modelo de carcteres que contienen todas las combinaciones de instancia posibles de la cuerda "li". Por
lo tanto, si el FIRST_NAME contiene las cadenas de caracteres "LI", "Li", "lI", o "li", aquella fila debe
ser recuperada.
5. El operador PARECIDO es usado para el carcter correspondiente, y cuatro combinaciones
puede ser extrado con cuatro DONDE clusulas separadas por el O palabra clave. Sin embargo, las
funciones de conversin de instancia pueden simplificar la condicin. Si la funcin INFERIOR es usada
en la columna FIRST_NAME, la comparacin puede ser hecha con uno DONDE condicin de
clusula. El SUPERIOR o INITCAP func-tions tambin podran ser usados.
6. El DONDE la clusula es
DONDE MS ABAJO (FIRST_NAME) COMO '%li %' 7. La ejecucin de esta select devuelve los
nombres de los EMPLOYEES que contienen los carcteres
"li" como mostrado en esta ilustracin:
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS



Utilizacin de Funciones de Manipulaciones de Carcter
Algunos aspectos ms potentes para surgir del Oracle son el carcter
183
funciones de manipulacin. Su utilidad en la manipulacin de datos es casi sin el par, y
muchos profesionales tcnicos sazonados azotan juntos una escritura rpida para masajear
artculos de datos con funciones de manipulacin de carcter SQL. Anidar estas funciones
es comn. El operador de encadenamiento (||) es generalmente usado en vez de la
funcin de CONCAT. La LONGITUD, INSTR, SUBSTR, y REEMPLAZAN funciones
a menudo se encuentran en la compaa de cada uno como hacen RPAD, LPAD, y NETO.

La Funcin de CONCAT La funcin de CONCAT se afilia a dos literales de
carcter, columnas, o expresiones para ceder una expresin de carcter ms grande.
Numrico y literales de fecha son implcitamente dados el papel de carcteres cuando ellos
ocurren como parmetros a la funcin de CONCAT. Numrico o expresiones de fecha son
evaluados antes de ser convertido a cuerdas listas para ser concadenadas.
La funcin de CONCAT toma dos parmetros. Su sintaxis es CONCAT (s1, s2), donde
s1 y s2 representan literales de cuerda, valores de columna de carcter, o expresiones que
causan valores de carcter. Las preguntas siguientes ilustran el uso de esta funcin:

La consulta 1: seleccione concat (1+2.14,' se acerca la pi') de la
Consulta 2 dual: seleccione concat ('Hoy es:', SYSDATE) de dual
La consulta 1 vuelve la cuerda "3.14 se acerca la pi." La expresin numrica es
evaluado para devolver el nmero 3.14. Este nmero es automticamente cambiado en la
cadena de caracteres "3.14", que es concadenado al carcter literal en el segundo
parmetro. El segundo parmetro a la funcin de CONCAT en la consulta 2 es
SYSDATE, que devuelve la fecha de sistema actual. Este valor es implcitamente
convertido a una cuerda a la cual el literal en el primer parmetro es concadenado. Si la
fecha de sistema es 17-DEC-2007, la consulta 2 vuelve la cuerda "Hoy es 17-DEC-2007."
Piense que la utilizacin de la funcin de CONCAT se afilia a tres trminos para
devolver una cadena de caracteres. Ya que CONCAT toma slo dos parmetros, slo es
posible afiliarse a dos trminos con un instancia de esta funcin. La solucin es anidar la
funcin de CONCAT dentro de otra funcin de CONCAT, como mostrado aqu:

seleccione concat ('Outer1', concat ('Inner1',' Inner2')) del dual;
La primera funcin de CONCAT tiene dos parmetros: el primer es el literal "Outer1",
mientras el segundo es una funcin de CONCAT anidada. La segunda funcin de
CONCAT toma dos parmetros: el primer es el literal "Inner1", mientras el segundo es el
literal "Inner2". Esta pregunta causa la cuerda siguiente: Outer1 Inner1 Inner2. Las
funciones anidadas son descritas detalladamente en el Captulo 5.
184
Captulo 4:
Funciones de fila sola



La funcin de CONCAT fue usada en la Figura 4-6 para extraer las filas del
Comando de EMPLOYEES donde el DEPARTMENT_ID=100. El objetivo era producir
una cuerda sola literal salida de la funcin CONCAT del formato FIRST_NAME
LAST_NAME gana el SUELDO.
Esta tarea simple fue transformada en un cuatro nivel complejo profundamente anid el
SET de llamadas a la funcin. Como el segundo ejemplo en la Figura 4-6 demuestra, el
operador de encadenamiento realiza la tarea equivalente en una manera ms simple.

La Funcin de LONGITUD La funcin de LONGITUD devuelve el nmero de
carcteres que constituyen una cadena de caracteres. Esto incluye literales de carcter,
columnas, o expresiones. Numrico y literales de fecha son automticamente dados el
papel de carcteres cuando ellos ocurren como parmetros a


LA FIGURA 4-6 La funcin de CONCAT
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS
185



la funcin de LONGITUD. Numrico o expresiones de fecha son evaluados antes de ser
convertido a cuerdas listas para ser medidas. Los espacios en blanco, las paletas, y los
carcteres especiales son todos contados por la funcin de LONGITUD.
La funcin de LONGITUD toma slo un parmetro. Su sintaxis es la LONGITUD
(ES), donde s representa cualquier cuerda literal, valor de columna de carcter, o expresin
que causa un valor de carcter. Las preguntas siguientes ilustran el uso de esta funcin:

La consulta 1: la longitud sentencia (1+2.14 ||' se acerca la pi') de la
Consulta 2 dual: longitud sentencia (SYSDATE) de dual
La consulta 1 devuelve el nmero 20. La expresin numrica es evaluada para volver
el nmero 3.14. Este nmero es dado el papel de la cadena de caracteres "3.14", que es
concadenado entonces al carcter literal "se acerca la pi." La cadena de caracteres
consiguiente contiene 20 carcteres. La consulta 2 primero evala la funcin de
SYSDATE, que devuelve la fecha de sistema actual. Este valor es automticamente
convertido a una cadena de caracteres cuya longitud es determinada entonces. Suponer
que la fecha de sistema volvi es 17-DEC-07, las vueltas de consulta 2 valoran 9.
La funcin de LONGITUD es usada en la Figura 4-7 para extraer el valor de
COUNTRY_NAME con la longitud mayor que diez carcteres de la comando de
COUNTRIES.


LA FIGURA 4-7 La funcin de LONGITUD
186
Captulo 4:
Funciones de fila sola



El LPAD y las Funciones de RPAD El LPAD y funciones de RPAD, tambin
conocidas como dejado almohadilla y funciones de almohadilla correctas, devuelven una
cuerda rellenada de un nmero especificado de carcteres a la izquierda o el derecho de la
cuerda de la fuente respectivamente. Las cadenas de caracteres usadas para el acolchado
incluyen literales de carcter, valores de columna, o expresiones. Numrico y literales de
fecha son implcitamente dados el papel de carcteres cuando ellos ocurren como
parmetros a funciones de RPAD o el LPAD. Numrico o expresiones de fecha son
evaluados antes de ser convertido a cuerdas destinadas al acolchado. Los espacios en
blanco, las paletas, y los carcteres especiales pueden ser usados como el acolchado de
carcteres.
El LPAD y las funciones de RPAD toman tres parmetros. Su sintaxis es LPAD (s, n,
p) y RPAD (s, n, p), donde s representa la cuerda de la fuente, el n representa la longitud
final de la cuerda devuelta, y p especifica la cadena de caracteres para ser usada como el
acolchado. Si LPAD es usado, los carcteres de acolchado p son aadidos a la izquierda de
s de cuerda de la fuente hasta que esto alcance la longitud n. Si RPAD es usado, los
carcteres de acolchado p son aadidos a la derecha de s de cuerda de la fuente hasta que
esto alcance la longitud n. Note que si el parmetro n es ms pequeo que o igual a la
longitud de la fuente ensartan s, entonces ningn acolchado ocurre y slo los primeros
carcteres n de s son devueltos.
Las preguntas siguientes ilustran el uso de esta funcin:
Pregunta
1:
escogido
lpad (1000+200.55,14,' * ') de dual
Pregunta
2:
escogido
rpad (1000+200.55,14,' * ') de dual
Pregunta
3:
escogido
lpad (SYSDATE, 14, '$#') de dual
Pregunta
4:
escogido
rpad (SYSDATE, 4, '$#') de dual
La consulta 1 devuelve una 14 cadena de caracteres: ******* 1200.55. La expresin
numrica
es evaluado para devolver el nmero 1200.55. Este nmero es dado el papel de la cuerda
"1200.55" de la longitud siete (incluso la coma decimal). Para conseguir la longitud final
de 14 carcteres, 7 asteriscos son dejados rellenados a la cuerda. La consulta 2 devuelve
la cuerda "1200.55 *******."
La funcin de LPAD en la consulta 3 tiene una longitud de cuerda objetivo de 14
carcteres. Suliste que SYSDATE devuelva un valor de fecha de 9 carcteres:
17-DEC-07. Esta fecha es convertida en una cuerda, y la cuerda de acolchado es
sistemticamente aplicada para alcanzar la longitud objetivo. Esto vuelve:
$#$#$17-DEC-07. Note que aunque la cuerda de acolchado consista en dos carcteres
($#), la cuerda no fue aplicada regularmente ya que hay smbolos de tres dlares y dos
smbolos de picadillo. Esto es porque LPAD y RPAD rellenarn la cuerda de la fuente
tanto como posible con la cuerda de acolchado hasta que la longitud objetivo sea
alcanzada. La funcin de RPAD en la consulta 4 tiene una longitud objetivo de 4
carcteres, pero la funcin SYSDATE sola devuelve un valor de 9 carcteres. Por lo tanto
ningn acolchado ocurre y, suponiendo que la fecha de sistema actual sea 17-DEC-07, los
cuatro primeros carcteres de la fecha convertida son devueltos: 17-D.
El LPAD y las funciones de RPAD son usados en la Figura 4-8 para formatear los
resultados en una manera ms comandoada y ms presentable. Los resultados devueltos
por esta pregunta son idnticos
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS
187



LA FIGURA 4-8 El LPAD y funciones de RPAD























a aquellos en la Figura 4-6 pero han sido ejecutados ms usuario utilizacin amistosa del
LPAD y funciones de RPAD.

La Funcin NETA La funcin NETA borra carcteres desde el principio o el final de
literales de carcter, columnas o expresiones para ceder el que artculo de carcter
potencialmente ms corto. Numrico y literales de fecha son automticamente dados el
papel de carcteres cuando ellos ocurren como parmetros a la funcin NETA. Numrico
o expresiones de fecha son evaluados primero antes de ser convertido a cuerdas listas para
ser recortadas.
La funcin NETA toma un parmetro arreglado de un opcional y un componente
obligatorio. Su sintaxis es NETA ([trailing|leading|both] trimstring de s). La cuerda para ser
recortada (s) es obligatoria. Los puntos siguientes ponen en una lista las reglas que
gobiernan el uso de esta funcin:

NETO (s) borra espacios de ambos lados de la cuerda de ingreso. NETO (rastreo
trimstring de s) borra todos los acontecimientos de trimstring del
el final de la cuerda s si esto est presente.
188
Captulo 4:
Funciones de fila sola



NETO (conduciendo trimstring de s) borra todos los acontecimientos de trimstring del
el principio de la cuerda s si esto est presente. NETO (ambos trimstring de s) borra todos los
acontecimientos de trimstring del
el principio y el final de la cuerda s si esto est presente.

Las preguntas siguientes ilustran el uso de esta funcin:

La consulta 1: seleccione neto (el rastreo 'e' de 1+2.14 ||' es la tarta')
de la Consulta 2 dual: seleccione neto (ambos '*' de '******* *******
escondido') de la Consulta 3 dual: seleccione neto (1 de sysdate) del dual
La consulta 1 evala la expresin numrica para devolver el nmero 3.14. Esto
el nmero es dado el papel entonces de la cadena de caracteres "3.14", que es concadenado
entonces al carcter literal para construir la cuerda "3.14 es la tarta." La funcin NETA
entonces borra cualquier acontecimiento del carcter "e" a partir del final de la cuerda
para volver "3.14 se acerca la pi." La consulta 2 pela lejos todos los acontecimientos del
asterisco carcter neto desde el principio y el final del carcter literal y vueltas la cuerda
"Escondida." Note que aunque un carcter neto sea especificado, acontecimientos
mltiples sern recortados si ellos consecutivamente estn presentes. La consulta 3 tiene
dos aspectos interesantes. El carcter neto no es encerrado en citas y es implcitamente
convertido a un carcter. La funcin de SYSDATE devuelve la fecha de sistema actual,
que es supuesta ser 17-DEC-07. Ya que ninguna palabra clave es especificada para rastreo,
conduccin, o ambas direcciones netas, la falta de ambos se aplica. Por lo tanto todos los
acontecimientos del carcter 1 al principio o final de la cuerda de fecha son recortados
causando 7-DEC-07 ser devueltos.
La funcin NETA usada en la Figura 4-9 no parece hacer algo excepto el examen ms
cercano revela un uso prctico comn para ella. Como hablado antes, los datos son con
frecuencia entrados en tablas de base de datos de aplicacin por una variedad de fuentes.
Puede resultar que los espacios son por casualidad entrados y guardados en los espacios
de carcter involuntariamente. La cuerda neta artificial en el DONDE la clusula simula
el espacio de LAST_NAME rellenado de espacios. Esto podra dificultar la busca de
EMPLOYEES con valores LAST_NAME de Smith. El adorno del espacio rellen el
espacio de LAST_NAME habilita la busca exacta y elimina el riesgo de espacios
involuntarios que pueden estar presentes en datos de carcter. Recuerde que cuando
ningunos parmetros adems de la cuerda s son especificados a la funcin NETA
entonces su comportamiento por defecto es recortar (ambos '' de s).
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS
189



LA FIGURA 4-9 La funcin NETA























La Funcin de INSTR (en la Cuerda) La funcin de INSTR localiza la
posicin de una cadena de bsqueda dentro de una cuerda dada. Esto devuelve la posicin
numrica en la cual el acontecimiento ensimo de la cadena de bsqueda comienza, con
relacin a una posicin de principio especificada. Si la cadena de bsqueda no est
presente el cero de vueltas de funcin de INSTR.
Numrico y literales de fecha son implcitamente dados el papel de carcteres cuando
ellos ocurren como parmetros a la funcin de INSTR. Numrico o expresiones de fecha
son evaluados primero antes de ser convertido a cuerdas listas para ser buscadas.
La funcin de INSTR toma cuatro parmetros arreglados de dos opcional y dos
argumentos obligatorios. La sintaxis es INSTR (cuerda de la fuente, cadena de bsqueda,
[posicin de principio de bsqueda], [acontecimiento ensimo]). El valor por defecto para la
posicin de principio de bsqueda es 1 o el principio de la cuerda de la fuente. El valor por
defecto para el acontecimiento ensimo es 1 o el primer acontecimiento. Las preguntas
siguientes ilustran la funcin de INSTR con expresiones de fecha y numrico:

La consulta 1: seleccione instr (3+0.14,'. ') de la Consulta 2 dual:
seleccione instr (sysdate, 'DICIEMBRE') del dual
190
Captulo 4:
Funciones de fila sola



La consulta 1 evala la expresin numrica para devolver el nmero 3.14. Esto
el nmero es implcitamente dado el papel de la cuerda 3.14. El carcter de perodo es
buscado y el primer acontecimiento de l ocurre en la posicin 2. La consulta 2 evala la
funcin de SYSDATE y converte la fecha devuelta en una cuerda. Suliste que la fecha de
sistema actual sea 17-DEC-07. El primer acontecimiento del DICIEMBRE de carcteres
ocurre en la posicin 4. Considere las preguntas siguientes con datos de carcter que
ilustran los valores por defecto y los terceros y cuartos parmetros de la funcin de
INSTR:

La consulta 3: seleccione instr ('1#3#5#7#9#', '#') de la Consulta 4
dual: seleccione instr ('1#3#5#7#9#', '#', 5) de la Consulta 5 dual:
seleccione instr ('1#3#5#7#9#', '#', 3,4) del dual
La consulta 3 busca el primer acontecimiento del smbolo de picadillo en la cuerda de la
fuente
el principio en posicin 1 y posicin de vueltas 2. La consulta 4 tiene el nmero 5 como
su tercer parmetro que indica que la bsqueda del smbolo de picadillo debe comenzar
en la posicin 5 en la cuerda de la fuente. El acontecimiento subsecuente del smbolo de
picadillo est en la posicin 6, que es devuelto por la pregunta. La consulta 5 tiene los
nmeros 3 y 4 como sus terceros y cuartos parmetros. Esto indica que la bsqueda del
smbolo de picadillo debe comenzar en la posicin 3 en la cuerda de la fuente. La
consulta 5 entonces devuelve el nmero 10, que es la posicin del cuarto acontecimiento
del smbolo de picadillo cuando la bsqueda comienza en la posicin 3.
La funcin de INSTR us en archivos de vueltas de Figura 4-10 de la comando de
DEPARTMENTS donde los valores de DEPARTMENT_NAME tienen el carcter n
como su tercer carcter.

La funcin de INSTR a menudo es usada en la combinacin con la funcin de
SUBSTR en programas de herramienta diseados para extraer datos codificados
de corrientes de datos electrnicas.

La Funcin de SUBSTR (Subcuerda) La funcin de SUBSTR extrae y
devuelve un segmento de una cuerda de la fuente dada. Esto extrae una subserie de una
longitud especificada de la cuerda de la fuente que comienza en una posicin dada. Si la
posicin de principio es ms grande que la longitud de la cuerda de la fuente, nula es
devuelta. Si el nmero de carcteres para extraer de una posicin de principio dada es
mayor que la longitud de la cuerda de la fuente, el segmento volvi es la subcuerda de la
posicin de principio al final de la cuerda.
Numrico y literales de fecha son automticamente dados el papel de carcteres
cuando ellos ocurren como parmetros a la funcin de SUBSTR. Numrico y expresiones
de fecha son evaluados antes de ser convertido a cuerdas listas para ser buscadas.
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS
191



LA FIGURA 4-10 La funcin de INSTR
























La funcin de SUBSTR toma tres parmetros, con los primeros dos siendo obligatorios.
Su sintaxis es SUBSTR (cuerda de la fuente, comience la posicin, [el nmero de carcteres
para extraer]). El nmero por defecto de carcteres para extraer es igual al nmero de
carcteres de la posicin de principio al final de la cuerda de la fuente. Las preguntas
siguientes ilustran la funcin de SUBSTR con expresiones de fecha y numrico:

La consulta 1: seleccione substr (10000-3,3,2) de la Consulta 2 dual:
seleccione substr (sysdate, 4,3) del dual
La consulta 1 evala la expresin numrica para devolver el nmero 9997. Esto
el nmero es automticamente cambiado en la cadena de caracteres 9997. La bsqueda de
la subcuerda comienza en la posicin 3 y los dos carcteres de aquella posicin adelante
son extrados, cediendo la subcuerda 97. La consulta 2 evala la funcin de SYSDATE y
converte la fecha volvi en una cadena de caracteres. Suliste que la fecha de sistema
actual sea 17-DEC-07. La bsqueda de la subcuerda comienza en la posicin 4 y los tres
carcteres de aquella posicin adelante son extrados, cediendo el diciembre de subcuerda.
192
Captulo 4:
Funciones de fila sola



Considere las preguntas siguientes con datos de carcter que ilustran el comportamiento
por defecto del parmetro opcional de la funcin de SUBSTR:

La consulta 3: seleccione substr ('1#3#5#7#9#', 5) de la Consulta 4 dual:
seleccione substr ('1#3#5#7#9#', 5,6) de la Consulta 5 dual: seleccione
substr ('1#3#5#7#9#',-3,2) del dual
La consulta 3 extrae la subcuerda que comienza en la posicin 5. Ya que el tercer
parmetro es
no especificado, la longitud de extraccin por defecto es igual al nmero de carcteres de e
incluso la posicin de principio al final de la cuerda de la fuente, que es 6. Por lo tanto la
consulta 3 es equivalente a la consulta 4 y la subcuerda devuelta por ambas preguntas es
5#7#9#. La pregunta cinco tiene el nmero-3 como su posicin de principio. El parmetro
de posicin de principio negativo instruye el Oracle de comenzar la busca de 3 carcteres a
partir del final de la cuerda. Por lo tanto comience la posicin es tres carcteres a partir del
final de la cuerda, que es la posicin 8. El tercer parmetro es 2, que causa la subcuerda #9
ser devuelto.
La funcin de SUBSTR us en archivos de vueltas de Figura 4-11 de la comando de
EMPLOYEES, donde los dos primeros carcteres en los valores de JOB_ID son d. C.
Esta funcin ha sido usada adelante en la lista SENTENCIA para extraer el carcter
inicial del espacio FIRST_NAME de cada empleado en el SET de resultado.


LA FIGURA 4-11 La funcin de SUBSTR
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS




GUIN & SOLUCIN
193

Le gustara buscar una cadena de caracteres almacenada en la base de datos. El instancia en el cual es almacenado es
desconocido y all conduce potencialmente y arrastra espacios que rodean la cuerda. Puede tal bsqueda ser
realizada?
S. La solucin ms simple es RECORTAR primero la conduccin y rastreo de espacios de la columna y luego
convertir los datos de columna usando una funcin de conversin de instancia como INFERIOR, SUPERIOR, o
INITCAP para simplificar el nmero de comparaciones requeridas en el DONDE condicin de clusula.
Le han pedido extraer los tres ltimos carcteres de la columna LAST_NAME en la comando de EMPLOYEES.
Puede tal pregunta ser realizada sin usar la funcin de LONGITUD?
S. El SUBSTR (cuerda de la fuente, comience la posicin, el nmero de carcteres) la funcin toma tres parmetros. Si
la posicin de principio es puesta a-3, y el nmero del parmetro de carcteres es establecido a tres o es omitido, los
tres ltimos carcteres de los datos de columna LAST_NAME es recuperado. La pregunta siguiente puede ser usada:
SELECCIONE SUBSTR (LAST_NAME,-3) DE EMPLOYEES;
Le gustara extraer una 10 cadena de caracteres consecuente basada en la columna de SUELDO en la comando de
EMPLOYEES. Si el valor de SUELDO es menos de 10 carcteres mucho tiempo, los ceros deben ser aadidos a la
izquierda del valor para ceder una 10 cadena de caracteres. Es posible esto?
S. La funcin de LPAD puede ser usada como sigue: SELECCIONE LPAD (SUELDO, 10,0)
DE EMPLOYEES;


La Funcin REEMPLAZAR La funcin REEMPLAZAR reemplaza todos los
acontecimientos de un artculo de bsqueda en una cuerda de la fuente con un trmino de
reemplazo y devuelve la cuerda de la fuente modificada. Si la longitud del trmino de
reemplazo es diferente de aquel del artculo de bsqueda, entonces las longitudes del
devuelto y cuerdas de la fuente sern diferentes. Si la cadena de bsqueda no es
encontrada, la cuerda de la fuente es devuelta sin alterar. Numrico y literales de fecha y
expresiones son evaluados antes de ser implcitamente dado el papel de carcteres cuando
ellos ocurren como parmetros a la funcin REEMPLAZAR.
La funcin REEMPLAZAR toma tres parmetros, con los primeros dos siendo
obligatorios. Su sintaxis es REEMPLAZAN (cuerda de la fuente, busque el artculo, [trmino
de reemplazo]). Si el parmetro de trmino de reemplazo es omitido, cada acontecimiento del
artculo de bsqueda es borrado de la cuerda de la fuente. En otras palabras, el artculo de
bsqueda es reemplazado por una cuerda vaca. Las preguntas siguientes ilustran la
funcin REEMPLAZAR con expresiones de fecha y numrico:

La consulta 1: escogido reemplazan (10000-3, '9', '85') de la Consulta
2 dual: escogido reemplazan (sysdate, 'DICIEMBRE', 'NOVIEMBRE') del dual
194
Captulo 4:
Funciones de fila sola



La consulta 1 evala la expresin numrica para devolver el nmero 9997, que es
molde como la cadena de caracteres "9997". La cadena de bsqueda es el carcter "9", que
ocurre tres veces en la fuente. Cada carcter de bsqueda es substituido con la cuerda de
reemplazo "85", cediendo la cuerda "8585857". La consulta 2 evala la funcin de
SYSDATE y converte la fecha volvi en una cadena de caracteres. Suliste que la fecha de
sistema actual sea 17-DEC-07. La cadena de bsqueda "DICIEMBRE" ocurre una vez
que en la fuente ensartan y es reemplazado con los carcteres "NOVIEMBRE", cediendo el
resultado 17-NOV-07. Note que esto es una cadena de caracteres y no un valor de fecha.
Considere las preguntas siguientes con datos de carcter, que ilustran el comportamiento
por defecto del parmetro opcional de la funcin REEMPLAZAR:

La consulta 3: escogido reemplazan ('1#3#5#7#9#', '#', '->') de la
Consulta 4 dual: escogido reemplazan ('1#3#5#7#9#', '#') del dual
El smbolo de picadillo en la consulta 3 es especificado como el carcter de bsqueda
y el
la cuerda de reemplazo es especificada como->. El smbolo de picadillo ocurre cinco
veces en la fuente, y la cuerda consiguiente es: 1-> 3-> 5-> 7-> 9->. La consulta 4 no
especifica una cuerda de reemplazo. El comportamiento por defecto es reemplazar por lo
tanto la cadena de bsqueda con una cuerda vaca que, en efecto, borra el carcter de
bsqueda completamente de la fuente, causando la cuerda "13579" devuelto.
La funcin REEMPLAZAR us en archivos de vueltas de Figura 4-12 de la comando de
EMPLOYEES donde los valores de JOB_ID son SA_MAN, pero esto modifica la columna
de SUELDO reemplazando cada 0 con 000 y aliasing la nueva expresin como el Sueldo de
Sueo.


EJERZA 4-2 Utilizacin de las Funciones de Manipulacin de Instancia
El sobre imprimir restringe el espacio de destinatario a 16 carcteres. Idealmente, el
destinatario
el espacio contiene FIRST_NAME de los EMPLOYEES y valores de LAST_NAME
separados por un espacio solo. Cuando la longitud combinada de FIRST_NAME de un
empleado y LAST_NAME excede 15 carcteres, el espacio de destinatario debera
contener su nombre oficial. El nombre oficial de un empleado es arreglado de la primera
carta de su NOMBRE de FIRST_ y los 14 primeros carcteres de su LAST_NAME.
Se requiere que usted recupere una lista de FIRST_NAME y valores de LAST_NAME
y nombres oficiales para EMPLOYEES donde la longitud combinada de FIRST_NAME y
LAST_NAME excede 15 carcteres.

1. Comience SQL*Plus y conecte al esquema de HORA.
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS
195



LA FIGURA 4-12 La funcin REEMPLAZAR
























2. El nombre oficial es construido concadenando el primer carcter en el
FIRST_NAME paran y devuelven la pelota con un espacio y los 14 primeros
carcteres del espacio de NOMBRE de LAST_ para devolver una cuerda que es
16 carcteres mucho tiempo. La funcin de SUBSTR es usada para extraer partes
de apellido y la inicial.
3. La clusula SENTENCIA es
SELECCIONE FIRST_NAME, LAST_NAME, SUBSTR (FIRST_NAME, 1,1)
||' '|| SUBSTR (LAST_NAME, 1,14) FORMAL_NAME
4. El DE la clusula es
DE EMPLOYEES 5. El DONDE la clusula debe limitar los archivos volvi a
slo aquellos donde
las longitudes combinadas de su FIRST_NAME y LAST_NAME exceden 15
carcteres.
6. El DONDE la clusula es
DONDE LONGITUD (FIRST_NAME) + LONGITUD (LAST_NAME)> 15
196
Captulo 4:
Funciones de fila sola



7. La ejecucin de esta select devuelve el SET siguiente de resultados:


























Utilizacin de Funciones Numricas
Hay una variedad de funciones numricas incorporadas proporcionadas por el Oracle con
el cual esto rivaliza el
cajas de herramientas matemticas de paquetes de software de hoja de clculo populares.
Differentiator significativo entre funciones numricas y otras es que ellos aceptan y
devuelven datos slo numricos. El oracle proporciona funciones numricas a solucionar
trigonomtrico, exponentiation, y problemas logartmicos, entre otros. Este gua se
concentra en tres funciones de fila sola numricas: POR AH, TRUNC, y MOD, hablado
despus.

La Funcin REDONDA Numrica La funcin REDONDA realiza una
operacin de doblamiento en un valor numrico basado en la precisin decimal
especificada. El valor volvi es o acorralado o abajo basado en el valor numrico del
dgito significativo en la posicin de precisin decimal especificada. Si la precisin
decimal especificada es n, el dgito significativo al doblamiento
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS
197



es encontrado (n + 1) sitios a la derecha de la coma decimal. Si es negativo, el dgito
significativo al doblamiento es encontrado sitios de n a la izquierda de la coma decimal.
Si el valor numrico del dgito significativo es mayor que o igual a 5, un "rodeo" ocurre,
ms "redondear" ocurre.
La funcin REDONDA toma dos parmetros. Su sintaxis es REDONDA (nmero de la
fuente, precisin decimal). El parmetro de nmero de la fuente representa cualquier literal
numrico, columna, o expresin. El parmetro de precisin decimal especifica el nivel del
doblamiento y es opcional. Si el parmetro de precisin decimal es ausente, el nivel por
defecto del doblamiento es el cero, el que significa que doblan sobre la fuente al nmero
entero ms cercano.
Considere los grados decimales puestos en una lista en la Tabla 4-1 para el nmero
1234.5678. Los valores de precisin decimales negativos estn localizados a la izquierda
de la coma decimal mientras los valores positivos son encontrados a la derecha.
Si el parmetro de precisin decimal es un, entonces doblan sobre el nmero de la
fuente al dcimo ms cercano. Si es dos, entonces doblan sobre la fuente al centsimo
ms cercano, etctera. Las preguntas siguientes ilustran el uso de esta funcin:
Pregunta
1:
escogido
la vuelta (1601.916718,1) de dual
Pregunta
2:
escogido
la vuelta (1601.916718,2) de dual
Pregunta
3:
escogido
por ah (1601.916718,-3) de dual
Pregunta
4:
escogido
la vuelta (1601.916718) de dual
La consulta 1 tiene un parmetro de precisin decimal (n) de 1, que implica que la
fuente
doblan sobre el nmero al dcimo ms cercano. Desde los centsimo (n + 1) el dgito es
1 (menos de 5), ningn doblamiento ocurre y el nmero volvi es 1601.9. El parmetro
de precisin decimal en la consulta 2 es 2, entonces doblan sobre el nmero de la fuente
al centsimo ms cercano. Ya que la unidad de milsimos es 6 (mayor que 5), el rodeo
ocurre y el nmero volvi es 1601.92. El parmetro de precisin decimal de la consulta 3
es-3. Ya que es negativo, el dgito significativo para el doblamiento es encontrado 3 sitios
a la izquierda de


TABLA 4-1

Descripciones de Precisin decimales


Precisin decimal
-4 - 3 - 2 - 1123


Doblamiento significativo sobre Dgito
1234567


Posicin decimal
Miles (n 1000) Cientos (n 100) Decenas (n 10) Unidades (n 1) Dcimo (n 10) Centsimo (n 100) Milsimos
(n 1000)
198
Captulo 4:
Funciones de fila sola



la coma decimal, en el dgito de cientos, que es 6. Ya que la unidad de cientos es 6, el
rodeo ocurre y el nmero volvi es 2000. La consulta 4 ha prescindido del parmetro de
precisin decimal. Esto implica que el doblamiento es hecho al nmero entero ms
cercano. Ya que la dcima unidad es 9, el nmero es acorralado y 1602 es devuelto.
El ejemplo mostrado en la Figura 4-13 selecciona a EMPLOYEES que trabajan como
encargados de ventas y computa un sobresueldo de lealtad basado en el nmero de das
emple doblado al nmero entero ms cercano. La funcin REDONDA est
acostumbrada alrededor de la parte fraccionaria de la diferencia entre la fecha de sistema
actual y el HIRE_DATE para cada encargado de ventas.

La Funcin de TRUNC numrica (Truncada) La funcin de TRUNC
realiza una operacin de truncamiento en un valor numrico basado en la precisin
decimal especificada. Un truncamiento numrico es diferente de redondear porque el
valor que resulta deja caer los nmeros en la precisin decimal especificada y no intenta
acorralar o abajo si la precisin decimal es positiva. Sin embargo, si (n) especificado de la
precisin decimal es negativo, el valor de ingreso est zeroed abajo de la posicin decimal
ensima.


LA FIGURA 4-13 La funcin REDONDA numrica
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS



La funcin de TRUNC toma dos parmetros. Su sintaxis es TRUNC (fuente
199
nmero, precisin decimal). El nmero de la fuente representa cualquier literal numrico, columna, o
expresin. La precisin decimal especifica el nivel del truncamiento y es opcional. Si el parmetro de
precisin decimal es ausente, el nivel por defecto del doblamiento es el cero, el que significa que el nmero
de la fuente es truncado al nmero entero ms cercano.
Si el parmetro de precisin decimal es 1, entonces el nmero de la fuente es truncado en su unidad de
dcimo. Si es 2, es truncado en su unidad de centsimo, etctera. Las preguntas siguientes ilustran el uso
de esta funcin:
Pregunta
1:
escogido
trunc (1601.916718,1) de dual
Pregunta
2:
escogido
trunc (1601.916718,2) de dual
Pregunta
3:
escogido
trunc (1601.916718,-3) de dual
Pregunta
4:
escogido
trunc (1601.916718) de dual
La consulta 1 tiene un parmetro de precisin decimal de 1, que implica que la fuente
el nmero es truncado en su unidad de dcimo y el nmero volvi es 1601.9. El parmetro de precisin
decimal (n) en la consulta 2 es 2, entonces el nmero de la fuente es truncado en su unidad de centsimo y el
nmero volvi es 1601.91. Note que este resultado sera diferente si una operacin de doblamiento fuera
realizada ya que el dgito en la posicin (n + 1) es 6 (mayor que 5). La consulta 3 especifica un nmero
negativo (3) como su precisin decimal. Tres sitios a la izquierda de la coma decimal implican que el
truncamiento pasa en el dgito de cientos como mostrado antes en la Tabla 4-1. Por lo tanto, el nmero de la
fuente est zeroed abajo de su dgito (6) de cientos y el nmero volvi es 1000. Finalmente, la consulta 4 no
tiene un parmetro de precisin decimal que implica que el truncamiento es hecho en el nivel de nmero
entero de la precisin. El nmero volvi es 1601.
El departamento de finanzas ha tenido derecho a un premio departamental superior por el cual la
compaa decidi recompensar a su personal de finanzas ajustando sus sueldos. Ya que el ajuste de sueldo
fraccionario causa nmeros con tres sitios decimales, la funcin de TRUNC es usada para truncar el aumento
de sueldo propuesto a un nmero entero, como mostrado en la Figura 4-14.

La Funcin de MOD (Mdulo) La funcin de MOD devuelve el resto numrico de una operacin
de divisin. Dos nmeros, el dividendo (nmero dividido) y el divisor (nmero para dividirse en) son
proporcionados, y una operacin de divisin es realizada. Si el divisor es un factor del dividendo, MOD
devuelve el cero ya que no hay ningn resto. Si el divisor es el cero, ninguna divisin por el error cero es
devuelta y la funcin de MOD devuelve un cero en cambio. Si el divisor es ms grande que el dividendo,
entonces la funcin de MOD devuelve el dividendo como su resultado. Esto es porque esto divide tiempos
cero en el divisor, dejando el resto igual al dividendo.
200
Captulo 4:
Funciones de fila sola



LA FIGURA 4-14 La funcin de TRUNC numrica

























La funcin de MOD toma dos parmetros. Su sintaxis es MOD (dividendo, divisor). El
dividendo y los parmetros de divisor representan un literal numrico, columna, o expresin,
que puede ser negativa o positiva. Las preguntas siguientes ilustran el uso de esta funcin:
Pregunta
1:
escogido
mod (6,2) de dual
Pregunta
2:
escogido
mod (5,3) de dual
Pregunta
3:
escogido
mod (7,35) de dual
Pregunta
4:
escogido
mod (5.2,3) de dual
La consulta 1 se divide 6 en 2 perfectamente, cediendo 0 como el resto. La consulta 2 se
divide 5 en 3,
ceder 1 con resto 2. La consulta 3 intenta dividirse 7 en 35. Ya que el divisor es ms grande
que el dividendo, el nmero 7 es devuelto como el valor de mdulo. La consulta 4 tiene
una fraccin impropia como el dividendo. La divisin 5.2 por 3 producciones 1 con resto
2.2.

Cualquier nmero par dividido en 2 naturalmente no tiene ningn resto, pero los
nmeros impares divididos en 2 siempre tienen un resto de 1. Por lo tanto, la
funcin de MOD a menudo es usada se distinguen entre hasta nmeros impares
y.
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS



La columna EMPLOYEE_ID en la comando de EMPLOYEES almacena un nmero
secuencial nico para cada principio de registro con el empleado nmero 100. El
201
primero 12 EMPLOYEES deben ser asignados a uno de cuatro equipos en una manera de
retorno al punto de origen para una tarea particular. La figura 4-15 muestra como esto es
llevado a cabo usando la funcin de MOD.
Los archivos de los 12 EMPLOYEES son aislados con un ENTRE el operador en el
DONDE clusula. La funcin de MOD es aplicada a la divisin de los valores de columna
EMPLOYEE_ID por el literal 4 numrico. Como la Figura 4-15 muestra, la funcin de
MOD asigna los nmeros 0 a 3 a cada fila en una manera de retorno al punto de origen.




LA FIGURA 4-15 La funcin de MOD
202
Captulo 4:
Funciones de fila sola






Los valores por defecto asumidos por los parmetros opcionales de funciones
no siempre son intuitivos, pero a menudo son probados. Por ejemplo, la vocacin de la funcin
de SUBSTR con slo los dos primeros parmetros causa la funcin que extrae una subcuerda
de una posicin de principio al final de la cuerda de la fuente dada. El parmetro opcional tanto
para el numrico como para fecha TRUNC



Funcionamiento con Fechas






y las funciones REDONDAS son el nivel de la precisin. Por ejemplo, la vocacin de la funcin
de TRUNC numrica sin especificar el nivel del truncamiento causa el nmero siendo truncado
al nmero entero ms cercano. Es til ser familiar con los valores por defecto asumidos por
parmetros opcionales para estas funciones.
La fecha funciones incorporadas proporciona una manera conveniente de solucionar
problemas relacionados con la fecha sin tener que guardar la pista de aos bisiestos o el
nmero de das en meses particulares. Hablaremos del almacenamiento de fechas por el
Oracle y las mscaras de formato de fecha por defecto antes de que conduzcamos un
examen detallado de la funcin de SYSDATE. Seguiremos hablando de la aritmtica de
fecha y las funciones de manipulacin de fecha: ADD_MONTHS,
MONTHS_BETWEEN, LAST_DAY, NEXT_DAY, POR AH, y TRUNC.

El Almacenamiento de fecha en las Fechas de Base de datos es
almacenado internamente en un formato numrico que apoya el almacenamiento de siglo,
ao, mes, y detalles de da, as como informacin de tiempo, como horas, minutos, y
segundos. Estos atributos de fecha estn disponibles para cada, valor de columna literal, o
expresin que es del tipo de datos de fecha.
Cuando tienen acceso a la informacin de fecha de una comando, el formato por defecto
de los resultados comprende dos dgitos que representan el da, una abreviatura de tres
cartas del mes, y dos dgitos que representan el componente de ao. En ausencia, estos
componentes son separados con guiones en SQL*Plus y pasan cuchilladas en el Developer
SQL. La figura 4-16 muestra los contenido de la columna START_DATE de la comando
JOB_HISTORY. Note que la pregunta es realizada en el Developer SQL, entonces los
elementos de fecha son separados por cuchilladas avanzadas.
Aunque el componente de siglo no sea mostrado en ausencia, es almacenado en la
base de datos cuando el valor de fecha es insertado o actualizado y est disponible para la
recuperacin.
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS
203



LA FIGURA 4-16 Almacenamiento de fecha por defecto en la
base de datos






























El formato en el cual una fecha es mostrada se menciona como su mscara de formato. Hay
varios cdigos de formateo o las mscaras de formato de fecha disponibles, como mostrado
en la Tabla 4-2.
Hablan de la lenguaje para formatear artculos de fecha usando la variedad llena de
mscaras de formato de fecha en el Captulo 5. La mscara de formato de DD-MON-RR es
la falta para visualizacin e ingreso. Insertando o actualizando la informacin de fecha, el
componente de siglo es obtenido de la funcin de SYSDATE si no es suministrado. La
mscara de formato de fecha RR se diferencia de la mscara de formato de YY ya que es
puede ser usado para especificar siglos diferentes basados durante los aos corrientes y
especificados. El componente de siglo adjudicado
204
Captulo 4:
Funciones de fila sola



TABLA 4-2

Mscaras de Formato de fecha



Mscara de formato
DD MON YY YYYY RR CENTMETROS CBICOS HH HH24 MI SS



Descripcin de formato
Da del Mes de mes del ao ao De dos dgitos ao De cuatro dgitos incluso siglo ao De dos dgitos
(Ao 2000-dcil) Horas de siglo De dos dgitos con Segundos de Minutos de tiempo de la maana y de
veinticuatro horas de la tarde


a una fecha con su ao especificado con la fecha RR el formato puede ser mejor
entendido considerando los principios siguientes:

Si los dos dgitos del ao corriente y ao especificado estn entre 0 y 49,
el siglo corriente es devuelto. Suliste que la fecha presente es 02-JUN-2007. El
siglo devuelto para la fecha 24-JUL-04 en el formato de DD-MON-RR es 20.
Si los dos dgitos del ao corriente estn entre 0 y 49 y el especificado
el ao se cae entre 50 y 99, el siglo anterior es devuelto. Suliste que la fecha
corriente es 02-JUN-2007. El siglo devuelto para 24-JUL-94 es 19.
Si los dos dgitos de los aos corrientes y especificados estn entre 50 y 99, el
el siglo corriente es devuelto en ausencia. Suliste que la fecha corriente es 1975
02-JUN-. El siglo devuelto para 24-JUL-94 es 19.
Si los dos dgitos del ao corriente estn entre 50 y 99 y el especificado
el ao se cae entre 0 y 49, el prximo siglo es devuelto. Suliste que la fecha
corriente es 02-JUN-1975. El siglo devuelto para 24-JUL-07 es 20.

La Funcin de SYSDATE La funcin de SYSDATE no toma ningunos parmetros
y devuelve la fecha de sistema actual y tiempo segn el servidor de base de datos. En
ausencia la funcin de SYSDATE devuelve los componentes DD-MON-RR de la fecha
de sistema actual. Es importante recordar que SYSDATE no devuelve la fecha y tiempo
como especificado por su
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS
205



reloj de sistema local. Si el servidor de base de datos est localizado en un huso horario diferente de un
cliente que pregunta la base de datos, la fecha y tiempo volvi se diferenciar del reloj de sistema operativo
local en la mquina de cliente. La pregunta para recuperar la fecha de servidor de base de datos es como
sigue:

seleccione sysdate del dual

Hablaron brevemente de la Aritmtica de Aritmtica de fecha con columnas de fecha y
expresiones en el Captulo 2. Las ecuaciones siguientes ilustran un principio importante en cuanto a la
aritmtica de fecha:

Date1 - Date2 = Num1 Date1 - Num1 = Date2 Date1 = Date2 + Num1
Una fecha puede ser restada de otra fecha. La diferencia entre dos
los artculos de fecha representan el nmero de das entre ellos. Cualquier nmero, incluso fracciones,
puede ser aadido a o restado de un artculo de fecha. En este contexto el nmero representa varios das. La
suma o la diferencia entre un nmero y un artculo de fecha siempre devuelven un artculo de fecha. Este
principio implica que la adicin, multiplicndose, o dividiendo dos artculos de fecha no es permitida.
Para ilustrar el componente de tiempo del SYSDATE funcionan ya que esto pertenece a la aritmtica de
fecha, el entorno de Developer SQL ha sido temporalmente modificado para mostrar la informacin de
tiempo as como la informacin de fecha.

Para modificar el entorno de Developer SQL para mostrar la informacin de tiempo para
columnas de fecha, en ausencia, navegan a Herramientas | Preferencias | Base de datos |
Parmetros de NLS | Formato de Fecha. Cambie la mscara de visualizacin por defecto
(DD/MON/RR) a (DD/MON/RR HH24:MI:SS).

Una funcin de conversin, de que hablarn detalladamente en el Captulo 5, es introducida aqu para
ayudar a este ejemplo. La figura 4-17 demuestra como la funcin de conversin TO_DATE es usada para
convertir el literal 02-JUN-2008 de fecha con 12:10 de componente de tiempo en un tipo de datos de fecha.
La primera pregunta en la cifra es disecada como sigue: dos das antes del segundo de junio, 12:10 son el
treinta y un de mayo, 12:10, que es la fecha y tiempo devuelto por la expresin 1. La adicin de 0.5 das o 12
horas hasta 12:10 02/JUN/08, como la expresin 2 demuestra, causa la fecha 03/JUN/08 y el tiempo 00.10
devuelto. La expresin 3 aade 6/24 o seis horas, causando la fecha 02/JUN/08, 18.10 devuelto.
206
Captulo 4:
Funciones de fila sola



LA FIGURA 4-17 La funcin de SYSDATE y aritmtica de fecha





























La columna HIREDATE para EMPLOYEES con valores DEPARTMENT_ID de 30 es
restada del artculo de fecha 02/JUN/96 12:10 en la segunda pregunta de la cifra. El nmero de
das entre estas dos fechas es devuelto para cada fila. Note que cuando el valor de columna
HIREDATE ocurre ms tarde que 02/JUN/96, un nmero negativo es devuelto.

Utilizacin de Funciones de Fecha
Las funciones de manipulacin de fecha proporcionan un medio confiable y exacto del
funcionamiento con
artculos de fecha. Estas funciones proporcionan tal facilidad y flexibilidad para la
manipulacin de fecha que muchos especialistas de integracin, los administradores de
base de datos, y otros developeres hacen el uso frecuente de ellos.
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS



La Funcin de MONTHS_BETWEEN
207
La funcin de MONTHS_BETWEEN devuelve un valor numrico que representa el nmero de meses
entre dos valores de fecha. Los literales de fecha en el formato DD-MON-RR o DD-MON-YYYY son
automticamente dados el papel de artculos de fecha cuando ellos ocurren como parmetros a la funcin de
MONTHS_BETWEEN.
La funcin de MONTHS_BETWEEN toma dos parmetros obligatorios. Su sintaxis es
MONTHS_BETWEEN (fecha de inicio, fecha de finalizacin). La funcin computa la diferencia en meses
entre la fecha de inicio y fecha de finalizacin. Si la fecha de finalizacin ocurre antes de la fecha de inicio, un
nmero negativo es devuelto. La diferencia entre los dos parmetros de fecha puede consistir en un nmero
entero y un componente fraccionario. El nmero entero representa el nmero de meses entre las dos
fechas. El componente fraccionario representa los das y tiempo restante despus de que la diferencia de
nmero entero entre aos y meses es calculada y est basada durante un mes de 31 das. Un nmero entero
sin la parte fraccionaria es devuelto si los componentes de da de las fechas comparadas son el mismo o el
da anterior de sus meses respectivos.
Las preguntas siguientes ilustran la funcin de MONTHS_BETWEEN:

La consulta 1: seleccione sysdate, sysdate+31, sysdate+62, sysdate+91, months_between (sysdate+91,
sysdate) de la Consulta 2 dual: seleccione months_between ('29-mar-2008', '28-feb-2008') de la
Consulta 3 dual: seleccione months_between ('29-mar-2008', '28-feb-2008') * 31 de la Consulta 4 dual:
seleccione months_between (to_date ('29-feb-2008'), to_date ('28-feb-2008 12:00:00', 'dd-mon-yyyy
hh24:mi:ss'))* 31 del dual;

Suliste que la fecha corriente sea 29-DEC-2007. La primera expresin en la consulta 1 devuelve el
nmero 1, como el mes entre
El 29-DEC-2007 es 29-JAN-2008 (31 das ms tarde). La segunda expresin de manera similar devuelve 2
meses entre 29-DEC-2007 y 29-FEB-2008 (62 das ms tarde). Desde el febrero de 2008 tiene 29 das, 91 das
deben ser aadidos a 29-DEC-2007 para conseguir 29-MAR-2008, y el MONTHS_BETWEEN
(29-MAR-2008, 29-DEC-2007) la funcin devuelve exactamente tres meses en la tercera expresin en la
consulta 1.
La consulta 2 implcitamente converte los literales de fecha en artculos de fecha del formato
DD-MON-YYYY. Ya que ninguna informacin de tiempo es proporcionada, el Oracle supone que el tiempo
sea la medianoche durante ambos das, o 0:00:00. La funcin de MONTHS_BETWEEN devuelve
aproximadamente 1.03225806. El componente de nmero entero indica que hay un mes entre estas dos
fechas. El examen ms cercano del componente fraccionario de manera interesante revela que hay
exactamente un mes entre 28-MAR-2008 y 28-FEB-2008. El componente fraccionario debe representar por
lo tanto el
208
Captulo 4:
Funciones de fila sola



diferencia antigua. Esto incluira diferencias en horas, minutos, y segundos tambin, pero
para este ejemplo, los componentes de tiempo son idnticos. Multiplicndose
0.03225806 por 31 vueltas 1, ya que el componente fraccionario devuelto por
MONTHS_ ENTRE est basado durante un mes de 31 das.
Del mismo modo, la consulta 3 devuelve el nmero entero 32. La consulta 4 demuestra
como el componente de tiempo es factored en el clculo por la funcin de
MONTHS_BETWEEN, que devuelve aproximadamente 0.016129. Hay una diferencia
de 12 horas entre el principio y parmetros de fecha de finalizacin, entonces los meses
cero entre ellos son correctos. La multiplicacin de la parte fraccionaria por 31
producciones 0.5 das, que equivale a la diferencia de 12 horas.
La funcin de MONTHS_BETWEEN usada en la Figura 4-18 devuelve archivos de la
comando JOB_HISTORY. Los meses entre las fechas un empleado comenz en un
trabajo particular y se termin aquel trabajo son computados, y los resultados son
clasificados en el pedido inclinado.



Un error comn es a funcione y los MONTHS_BETWEEN suponen que
el tipo de datos de vuelta del solo- la funcin de fecha ambos vuelve unas funciones de
fila numricas son el mismo como la categora valor. Es importante ser familiar
con la funcin pertenece a. Esto slo es verdad de los principios de la aritmtica de
fecha, ya que son las funciones numricas. Carcter y fecha comn para suponer
errneamente que las funciones puedan valores de retorno de cualesquiera datos la
diferencia entre dos fechas es una fecha, tipo. Por ejemplo el carcter INSTR cuando de
hecho es un nmero.


La Funcin de ADD_MONTHS La funcin de ADD_MONTHS devuelve un
artculo de fecha calculado aadiendo un nmero especificado de meses a un valor de
fecha dado. Los literales de fecha en el formato DD-MON-RR o DD-MON-YYYY son
automticamente dados el papel de artculos de fecha cuando ellos ocurren como
parmetros a la funcin de ADD_MONTHS.
La funcin de ADD_MONTHS toma dos parmetros obligatorios. Su sintaxis es
ADD_MONTHS (fecha de inicio, nmero de meses). La funcin computa el plazo
establecido despus de aadir el nmero especificado de meses a la fecha de inicio. El
nmero de meses puede ser negativo, causando un plazo establecido antes que la fecha
de inicio devuelta. El nmero de meses puede ser fraccionario, pero el componente
fraccionario no es ignorado y el componente de nmero entero es usado.
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS
209



LA FIGURA 4-18 La funcin de MONTHS_BETWEEN




























Las tres preguntas en la Figura 4-19 ilustran el comportamiento de la funcin de
ADD_MONTHS.
La primera pregunta en la cifra devuelve 07-MAY-2009 ya que el componente de da
permanece el mismo si posible y el mes es incrementado por uno. La segunda pregunta
tiene dos dimensiones interesantes. El parmetro que especifica el nmero de meses para
aadir contiene un componente fraccionario, que no es ignorado. Por lo tanto, es
equivalente a ADD_MONTHS ('31-dec-2008', 2). Aadiendo dos meses a la fecha el
31-DEC-2008 debera devolver la fecha 31-FEB-2009, pero no hay ninguna tal fecha, tan
el da anterior del mes, 28-FEB-2009, es devuelto. Ya que el nmero de meses aadidos
en la tercera pregunta es-12, la fecha 07-APR-2008 es devuelta, que es 12 meses antes de
la fecha de inicio.
210
Captulo 4:
Funciones de fila sola



LA FIGURA 4-19 La funcin de ADD_MONTHS





























EJERZA 4-3 Utilizacin de las Funciones de Fecha
Se requiere que usted obtenga una lista de EMPLOYEE_ID, LAST_NAME, e HIRE_
LA FECHA valora por los EMPLOYEES que han trabajado ms de 100 meses entre la
fecha ellos fueron contratados y 01-JAN-2000.

1. Comience al Developer SQL y conecte al esquema de HORA. 2. La clusula
SENTENCIA es
SELECCIONE EMPLOYEE_ID, LAST_NAME, HIRE_DATE
3. El DE la clusula es
DE EMPLOYEES
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS
211



4. El DONDE la clusula debe comparar los meses entre la fecha dada literal
y los HIRE_DATE valoran con el literal 100. 5 numrico. La funcin de MONTHS_BETWEEN
puede ser usada en el DONDE clusula. 6. El DONDE la clusula es
DONDE MONTHS_BETWEEN ('01-JAN-2000', HIRE_DATE)> 100 7. La ejecucin de esta
select devuelve el SET de resultados mostrados en el siguiente
ilustracin:

























La Funcin de NEXT_DAY La funcin de NEXT_DAY devuelve la fecha cuando el siguiente
acontecimiento de un da especificado de la semana ocurre. Los literales que pueden ser implcitamente
dados el papel de artculos de fecha son aceptables cuando ellos ocurren como parmetros a la funcin de
NEXT_DAY.
La funcin de NEXT_DAY toma dos parmetros obligatorios. Su sintaxis es NEXT_DAY (fecha de
inicio, el da de la semana). La funcin computa la fecha en la cual el da del parmetro de semana despus
ocurre despus de la fecha de inicio. El da de la semana
212
Captulo 4:
Funciones de fila sola



el parmetro puede ser un valor de carcter o un valor entero. Los valores aceptables son
determinados por el parmetro de base de datos NLS_DATE_LANGUAGE pero los
valores por defecto son al menos los tres primeros carcteres del nombre de da o valores
enteros, donde 1 representa el domingo, 2 representa el lunes, etctera. Los valores de
carcter que representan los das de la semana pueden ser especificados en cualquier
instancia. El nombre corto puede ser ms largo que tres carcteres, por ejemplo, el
domingo puede ser referido como el sol, sund, sunda o el domingo.
Las tres preguntas en la Figura 4-20 ilustran el comportamiento de la funcin de
NEXT_DAY.
El 01-JAN-2009 es un jueves. Por lo tanto, la prxima vez que un martes ocurre ser
cinco das ms tarde 06-JAN-2009, que es lo que la primera pregunta en la cifra recupera.
La segunda pregunta especifica el carcter WEDNE literal, que es interpretado como el
mircoles.


LA FIGURA 4-20 La funcin de NEXT_DAY
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS




GUIN & SOLUCIN
213

Usted desea recuperar la duracin de empleo en das para cada empleado. Es posible realizar tal clculo?
S. La funcin de SYSDATE puede ser usada para obtener la fecha de sistema actual. La pregunta siguiente computa
la duracin restando la columna HIRE_DATE del valor devuelto por la funcin de SYSDATE: SELECCIONE
SYSDATE-HIRE_DATE DE EMPLOYEES;
Usted es encargado con la identificacin de la fecha que el sobresueldo de personal de final del ao ser pagado. Los
sobresueldos son por lo general pagados el viernes pasado en diciembre. Puede la fecha de sobresueldo ser
computada usando la funcin de NEXT_DAY?
S. Si la funcin de NEXT_DAY es llamada con el SET de parmetro de fecha de inicio hasta el da anterior en
diciembre y el SET de da de bsqueda al viernes, entonces el primer viernes en enero es devuelto. Restar siete das
desde esta fecha cede la fecha del viernes pasado en diciembre. Considere la pregunta siguiente para el ao 2009:
SELECCIONE NEXT_DAY ('31-DEC-2009', 'el viernes')-7 del DUAL;
Los EMPLOYEES que trabajan en ESTO que el departamento ha movido a nuevas oficinas y, aunque los cuatro
ltimos dgitos de sus nmeros de telfonos sean el mismo, el SET de los tres dgitos 423 son cambiados a 623. Un
nmero de telfono tpico de ESTO empleado es 590-423 - 4567. Se requiere que usted provea una lista de los nombres
de los EMPLOYEES con sus viejos y nuevos nmeros de telfonos. Puede esto poner en una lista ser
proporcionado?
S. La funcin REEMPLAZAR es usada. Reemplazar cada 4 con unos 6 cambiar dgitos que no deberan ser cambiados
tambin, entonces la cuerda para ser reemplazada debe ser nicamente especificada. La pregunta siguiente proporciona
la lista: SELECCIONE FIRST_NAME, LAST_NAME, REEMPLACE (PHONE_NUMBER, '.423. ', '.623.') DE
EMPLOYEES DONDE DEPARTMENT_ ID=60


El prximo mircoles despus de que el 01-JAN-2009 es 07-JAN-2009. La tercera
pregunta usa la forma de nmero entero para especificar el quinto da de la semana.
Asumiendo los valores por defecto donde el domingo es representado por el nmero 1, el
quinto da es el jueves. La prxima vez otro jueves ocurre despus de que el 01-JAN-2009 es
08-JAN-2009.

La Funcin de LAST_DAY La funcin de LAST_DAY devuelve la fecha del da
anterior en el mes un da especificado pertenece a. Los literales que pueden ser
implcitamente dados el papel de artculos de fecha son aceptables cuando ellos ocurren
como parmetros a la funcin de LAST_DAY.
La funcin de LAST_DAY toma un parmetro obligatorio. Su sintaxis es el DA
LAST_ (fecha de inicio). La funcin extrae el mes que el parmetro de fecha de inicio
pertenece a y calcula la fecha del da anterior de aquel mes. Las dos preguntas en la
Figura 4-21 ilustran el comportamiento de la funcin de LAST_DAY.
214
Captulo 4:
Funciones de fila sola



LA FIGURA 4-21 La funcin de LAST_DAY





























El da anterior en el mes de enero de 2009 es 31-JAN-2009, que es devuelto por el
LAST_DAY ('01-JAN-2009') llamada a la funcin en la primera pregunta en la cifra. La
segunda pregunta extrae a los EMPLOYEES con valores JOB_ID de IT_PROG. El
nmero de das trabajados por estos EMPLOYEES en su primer mes del empleo es
calculado restando los valores de HIRE_DATE del LAST_DAY de aquel mes.

La Fecha Funcin REDONDA La fecha funcin REDONDA realiza una
operacin de doblamiento en un valor basado en un formato de precisin de fecha
especificado. El valor volvi es o acorralado o abajo al formato de precisin de fecha ms
cercano.
Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS




DENTRO DEL EXAMEN
215


Hay dos objetivos de certificacin en este captulo. Los diversos tipos de funciones de SQL son descritos y el
concepto de una funcin es definido. Una distincin es hecha entre el solo - funciones de fila, que ejecutan
una vez para cada fila en un dataset, y funciones de fila mltiple, que ejecutan una vez para todas las filas en
un conjunto de datos-. Las funciones de fila sola pueden ser usadas en el ESCOGIDO, DONDE, y PEDIDO
POR clusulas de la select SENTENCIA.
El segundo objetivo est relacionado con el uso de carcter, numrico, y funciones de fecha en
preguntas. El examen prueba su entender - ing de estas funciones proporcionando ejemplos prcticos de su
uso. Pueden pedirle predecir que los resultados volvieron o identificar er-rors inherente en la sintaxis de
estos ejemplos.
Las funciones pueden tomar cero o ms parmetros de ingreso, algunos de los cuales pueden ser
obligatorios


mientras los otros son opcionales. Param-obligatorios eters son puestos en una lista primero, y los
parmetros opcionales siempre son ltimos. Los errores comunes estn relacionados con la confusin
sobre el sentido de LOCATIONS de parmetros en funciones. Un carcter func-tion como INSTR toma
cuatro parmetros, con los primeros dos siendo obligatorios. El primer es la cuerda de la fuente; el
segundo es la cadena de bsqueda, mientras el tercer y el cuarto no siempre son intuitivos y pueden ser
fcilmente olvidados o mezclados bien. Est seguro de recordar el sentido de parmetros en
LOCATIONS diferentes. Otro error relacionado con parmetros est relacionado con confu-sion sobre
los valores por defecto usados por el Oracle cuando los parmetros opcionales no son especificados.
Puede esperarse que usted prediga que los resultados volvieron de llamadas a la funcin que no tienen
todos sus parmetros opcionales especificados.



La fecha funcin REDONDA toma un obligatorio y un parmetro opcional. Su sintaxis
es REDONDA (fecha de la fuente, [formato de precisin de fecha]). El parmetro de fecha de la
fuente representa cualquier valor que pueda ser implcitamente convertido en un artculo de
fecha. El parmetro de formato de precisin de fecha especifica el nivel del doblamiento y es
opcional. Si es ausente, el nivel por defecto del doblamiento es el da. Esto significa que
doblan sobre la fecha de la fuente hasta el da ms cercano. Los formatos de precisin de fecha
incluyen el siglo (CENTMETROS CBICOS), ao (YYYY), cuarto (Q), mes (MM), semana
(W), da (DD), hora (HH), y minuto (MI). Hablan de muchos de estos formatos en el
Captulo 5.
El rodeo al siglo es equivalente a la adicin de un al siglo corriente. El rodeo al prximo mes
ocurre si el componente de da es mayor que 16, ms redondeando al principio del mes
corriente ocurre. Si el mes se cae entre un y seis, entonces el doblamiento al ao devuelve la
fecha a principios del ao corriente, ms esto devuelve la fecha a principios del ao siguiente.
La figura 4-22 muestra cuatro artculos en la lista SENTENCIA, cada uno que da la vuelta sobre
una fecha literal a un nivel diferente de la precisin.
216
Captulo 4:
Funciones de fila sola



LA FIGURA 4-22 La fecha funcin REDONDA






















El primer artculo dobla sobre la fecha hasta el da ms cercano. Ya que el tiempo es
13:00, que es despus 12:00, doblan sobre la fecha a la medianoche al da siguiente, o
03-JUN-2009 00:00. El segundo artculo dobla sobre la fecha hasta el mismo da de la
semana que el primer da del mes y devuelve 01-JUN-2009. El tercer artculo dobla
sobre la fecha al principio del mes siguiente, ya que el componente de da es 16 y
devuelve 01-JUL-2009. El cuarto artculo es acorralado a la fecha a principios del ao
siguiente ya que el componente de mes es 7, y 01-JAN-2010 es devuelto.

La Fecha Funcin de TRUNC La fecha funcin de TRUNC realiza una
operacin de truncamiento en un valor de fecha basado en un formato de precisin de
fecha especificado.
La fecha funcin de TRUNC toma un obligatorio y un parmetro opcional. Su sintaxis
es TRUNC (fecha de la fuente, [formato de precisin de fecha]). El parmetro de fecha de la
fuente representa cualquier valor que pueda ser implcitamente convertido en un artculo de
fecha. El parmetro de formato de precisin de fecha especifica el nivel del truncamiento y es
opcional. Si es ausente, el nivel por defecto del truncamiento es el da. Esto significa que
cualquier componente de tiempo
Resumen de certificacin
217



LA FIGURA 4-23 La fecha funcin de TRUNC





















de la fuente la fecha es establecida a la medianoche o 0:00:00 (00 horas, 00 minutos y 00
segundos). El truncamiento al nivel de mes establece la fecha de la fecha de la fuente hasta
el primer da del mes. El truncamiento al nivel de ao devuelve la fecha a principios del
ao corriente. La figura 4-23 muestra cuatro artculos en la lista SENTENCIA, cada uno que
trunca una fecha literal a un nivel diferente de la precisin.
El primer artculo pone el componente de tiempo de 13:00 a 00:00 y devuelve el da
corriente. El segundo artculo trunca la fecha hasta el mismo da de la semana que el
primer da del mes y devuelve 01-JUN-2009. El tercer artculo trunca la fecha al
principio del mes corriente y devuelve 01-JUN-2009. El cuarto artculo es truncado a la
fecha a principios del ao corriente y devuelve 01-JAN-2009.

RESUMEN DE CERTIFICACIN
Las funciones de fila sola exponencialmente realzan las posibilidades de manipulacin
de datos
ofrecido por select SQL. Estas funciones ejecutan una vez para cada fila de datos
seleccionados. Ellos pueden ser usados en el ESCOGIDO, DONDE, y PEDIDO POR
clusulas en una select SENTENCIA.
218
Captulo 4:
Funciones de fila sola



Hablaron de la naturaleza de caja negra de las funciones de PL/SQL incorporadas y
una distincin entre mltiple y funciones de fila sola fue hecha. Un alto nivel - la
descripcin que describe como el carcter, numrico, e informacin de fecha puede ser
manipulado por funciones de fila sola fue proporcionada antes de explorar
sistemticamente varias funciones de llave detalladamente.
Las funciones de conversin de instancia del carcter fueron descritas antes de
introducir las funciones de manipulacin de carcter. Hablaron de las funciones
numricas POR AH, TRUNC, y MOD, pero stos representan la punta del iceberg ya
que el Oracle proporciona una caja de herramientas enorme de funciones matemticas y
numricas. La aritmtica de fecha y el almacenamiento fueron brevemente explorados
antes de tomar una mirada detallada a las funciones de fecha.
Hay numerosas funciones de fila sola disponibles, y no se requiere que usted memorice
su cada detalle. El entendimiento de las amplias categoras de funciones de fila sola y ser
introducido en el carcter comn, numrico, y funciones de fecha proporcionan un punto
de partida a su descubrimiento de su utilidad.
Taladradora de dos minutos
219




TALADRADORA DE DOS MINUTOS

Describa Diversos tipos de Funciones Disponibles en SQL
Funciones aceptan cero o ms parmetros de ingreso, pero siempre devuelven un resultado
de un tipo de datos predeterminado.
funciones de Fila sola ejecutan una vez para cada fila seleccionada, mientras la fila mltiple
las funciones ejecutan una vez para el SET entero de filas preguntadas.
funciones de Carcter son la conversin del instancia o la manipulacin del carcter
funciones.

Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS
La funcin de INITCAP acepta una serie de carcteres y devuelve cada palabra
en instancia de ttulo.
La funcin que computa el nmero de carcteres en una cuerda incluso
los espacios y los carcteres especiales son la funcin de LONGITUD.
La funcin de INSTR devuelve la posicin posicional del acontecimiento ensimo de
una serie especificada de carcteres en una cuerda de la fuente.
La funcin de SUBSTR extrae y devuelve un segmento de una fuente dada
cuerda.
La funcin REEMPLAZAR substituye cada acontecimiento de un artculo de bsqueda en el
cuerda de la fuente con un trmino de reemplazo y vueltas la cuerda de la fuente modificada.
Una operacin de mdulo devuelve el resto de una operacin de divisin y es
disponible va la funcin de MOD.
La funcin REDONDA numrica dobla sobre nmeros o abajo al
nivel especificado de precisin.
La funcin de SYSDATE es tradicionalmente ejecutado contra la comando DUAL
y vueltas fecha corriente y tiempo del servidor de base de datos.
Fecha teclea siglo de tienda, ao, mes, da, hora, minutos, y segundos
informacin.
La diferencia entre dos artculos de fecha siempre es un nmero que representa el
nmero de das entre estos dos artculos.
220
Captulo 4:
Funciones de fila sola



Cualquier nmero, incluso fracciones, puede ser aadido a o restado de una fecha
el artculo y en este contexto el nmero representa un nmero especificado de das. La funcin de
MONTHS_BETWEEN computa el nmero de meses
entre dos parmetros de fecha dados y est basado durante un mes de 31 das. La funcin de
LAST_DAY es usado para obtener el da anterior en un mes dado a cualquiera
artculo de fecha vlido.




M PRUEBA
M Prueba
221

Las preguntas siguientes le ayudarn a medir su entendimiento del material presentado en este captulo.
Lea todas las opciones con cuidado porque podra haber ms de una respuesta correcta. Elija todo el
correcto responde de cada pregunta.

Describa Diversos tipos de Funciones Disponibles en SQL
1. Qu select en cuanto a funciones de fila sola son verdad? (Elija todo que se aplican.)
A. Ellos pueden devolver ms de un resultado. B. Ellos ejecutan una vez para cada registro tratado.
C. Ellos pueden tener cero o ms parmetros de ingreso. D. Ellos deben tener al menos un parmetro
obligatorio.
2. Cules de stos es funciones de conversin de instancia del carcter de fila sola? (Elija todo que se
aplican.)
A. MS ABAJO B. C MS PEQUEO. INITCASE D. INITCAP

Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS
3. Que valor es devuelto despus de ejecutar la select siguiente:
LONGITUD SENTENCIA ('How_long_is_a_piece_of_string?') DE DUAL; (Elija la mejor
respuesta.) A. 29 B. 30 C. 24 D. Ninguno de los susodichos
4. Que valor es devuelto despus de ejecutar la select siguiente:
SELECCIONE SUBSTR ('How_long_is_a_piece_of_string?', 5,4) DE DUAL; (Elija la mejor
respuesta. ) A. mucho tiempo B. _long C. cuerda? D. Ninguno de los susodichos
222
Captulo 4:
Funciones de fila sola



5. Qu valor es devuelto despus de ejecutar la select siguiente?
SELECCIONE INSTR ('How_long_is_a_piece_of_string?',' _ ', 5,3) DE DUAL; (Elija la mejor
respuesta.) A. 4 B. 14 C. 12 D. Ninguno de los susodichos
6. Qu valor es devuelto despus de ejecutar la select siguiente?
ESCOGIDO REEMPLAZAN ('How_long_is_a_piece_of_string?',' _ ','') DE DUAL; (Elija la mejor
respuesta.) A. Cunto de largo es una pieza de cuerda? B. How_long_is_a_piece_of_string? C.
Howlongisapieceofstring? D. Ninguno de los susodichos
7. Qu valor es devuelto despus de ejecutar la select siguiente?
SELECCIONE MOD (14,3) DE DUAL; (Elija la mejor respuesta.) A. 3 B. 42 C. 2 D. Ninguno de
los susodichos
8. La asuncin SYSDATE=07-JUN-1996 12:05, que valor es devuelto despus de ejecutar el
select siguiente? SELECCIONE ADD_MONTHS (SYSDATE,-1) del DUAL; (Elija la mejor
respuesta.) A. 12:05 de 07-MAY-1996 B. 12:05 de 06-JUN-1996 C. 12:05 de 07-JUL-1996 D.
Ninguno de los susodichos
9. Qu valor es devuelto despus de ejecutar la select siguiente? Tome la nota esto 01-JAN-2009
ocurre un jueves. (Elija la mejor respuesta.) SELECCIONAN NEXT_DAY ('01-JAN-2009', 'wed')
DE DUAL; A. 07-JAN-2009 B. 31-JAN-2009 C. Wednesday D. Ninguno de los susodichos
Pregunta de laboratorio
223



10. La asuncin SYSDATE=30-DEC-2007, que valor es devuelto despus de ejecutar el siguiente
select? SELECCIONE TRUNC (SYSDATE, 'AO') DEL DUAL; (Elija la mejor respuesta.) A.
31-DEC-2007 B. 01-JAN-2008 C. 01-JAN-2007 D. Ninguno de los susodichos

PREGUNTA DE LABORATORIO

Usando al Developer de SQL o SQL*Plus, conecte al esquema OE y complete las tareas siguientes.
Varias citas fueron solicitadas por precios en impresoras a color. La informacin de proveedor no es el
provecho - capaz de la fuente habitual, pero usted sabe que el nmero de identificacin de proveedor es
empotrado en la columna CATALOG_URL de la comando PRODUCT_INFORMATION. Se requiere que
usted recupere el PRODUCT_NAME y valores de CATALOG_URL y extraiga el nmero de proveedor
de la columna CATALOG_URL para todos los productos que tienen tanto las palabras el COLOR como
IMPRESORA en la columna PRODUCT_DESCRIPTION almacenada en cualquier instancia.
224
Captulo 4:
Funciones de fila sola



M PRUEBAN RESPUESTAS

Describa Diversos tipos de Funciones Disponibles en SQL
1. los B y funciones de C. Single-row ejecutan una vez para cada registro seleccionado en un dataset
y puede
no tome ningunos parmetros de ingreso, como SYSDATE, o muchos parmetros de ingreso.
Los A y D son incorrectos porque una funcin por definicin devuelve slo un resultado y hay
muchas funciones sin parmetros.
2. A y D. La funcin INFERIOR converte el instancia del parmetro de cuerda de ingreso a su

el equivalente minsculo, mientras INITCAP converte el parmetro de ingreso dado al
instancia de ttulo.
Los B y C no son nombres de funcin vlidos.

Use Carcter, Nmero, y Funciones de Fecha en Select SENTENCIAS
3. B. La funcin de LONGITUD computa el nmero de carcteres en una cuerda de ingreso
dada
incluso espacios, paletas, signo de puntuacin, y otros carcteres especiales no imprimibles.
Los A, C, y D son incorrectos.
4. A. La funcin de SUBSTR extrae una subcuerda de cuatro carcteres de de cuerda de ingreso
dado
el comienzo con e incluso el quinto carcter. Los carcteres en LOCATIONS 1 a 4 son How_.
Comenzando con el carcter en la posicin 5, los cuatro siguientes carcteres forman la palabra
"mucho tiempo".
Los B, C, y D son incorrectos porque B es una subcuerda de cinco carcteres que comienza en
la posicin 4,
mientras anillo?, que tambin es cinco carcteres mucho tiempo, comienza cinco carcteres a
partir del final de la cuerda dada.
5. B. La funcin de INSTR devuelve la posicin que el acontecimiento ensimo de la cadena de
bsqueda
puede ser encontrado despus de comenzar la bsqueda de una posicin de principio dada. La
cadena de bsqueda es el carcter subrayar, y el tercer acontecimiento de este carcter que
comienza de la posicin 5 en la cuerda de la fuente ocurre en la posicin 14.
Los A, C, y D son incorrectos ya que la posicin 4 es el primer acontecimiento de la cadena de
bsqueda y
la posicin 12 es el tercer acontecimiento si la bsqueda comenzara en la posicin 1.
6. C. Todos los acontecimientos del carcter subrayar son reemplazados por una cuerda vaca,
que
los borra de la cuerda.
Los A, B, y D son incorrectos. A es incorrecto porque los carcteres subrayar no son
reemplazado por espacios, y B no cambia la cuerda de la fuente.
7. C. Cuando 14 est dividido en 3, la respuesta es 4 con el resto 2.
Los A, B, y D son incorrectos.
Respuesta de laboratorio
225



8. A. El menos un parmetro indica a la funcin de ADD_MONTHS que la fecha para ser
devuelto debe ser un mes antes de la fecha dada.
Los B, C, y D son incorrectos. El B es un da y no un mes antes de la fecha dada. El C es un
mes despus de la fecha dada.
9. A. Desde el primero de enero de 2009 cadas un jueves, la fecha del mircoles siguiente
es seis das ms tarde.
Los B, C, y D son incorrectos. El B vuelve el da anterior del mes al cual la fecha dada se cae,
y C devuelve una cadena de caracteres en vez de una fecha.
10. C. La fecha funcin de TRUNC no realiza el doblamiento y desde el nivel de
el truncamiento es el AO, los componentes de mes y da de la fecha dada no son ignorados y el
primer da del ao al cual esto pertenece es devuelto.
Los A, B, y D son incorrectos. Unas vueltas el da anterior en el mes en cual la fecha dada
ocurre, y B devuelve un resultado conseguido redondeando en vez del truncamiento.

RESPUESTA DE LABORATORIO

Usando al Developer de SQL o SQL*Plus, conecte al esquema OE, complete las tareas siguientes.
1. Comience al Developer SQL y conecte al esquema OE. 2. Una entrada CATALOG_URL tpica mira
como sigue: www.supp-102094.com/cat/hw/p1797.html.
El nmero de identificacin de proveedor es consecuentemente seis carcteres mucho tiempo y
comienza del diecisiete carcter del valor de CATALOG_URL. La funcin de SUBSTR es usada
para extraer este valor.
3. La clusula SENTENCIA es por lo tanto
SELECCIONE PRODUCT_NAME, CATALOG_URL, SUBSTR (CATALOG_URL, 17, 6)
PROVEEDOR
4. El DE la clusula es
DE PRODUCT_INFORMATION
5. Los archivos recuperados deben ser limitados con los que contienen tanto las palabras el COLOR
como
IMPRESORA. Estas palabras pueden ocurrir en cualquier pedido y pueden estar presentes en
mayscula o minscula o instancia mezclado. Cualquiera de las funciones de conversin de instancia
puede estar acostumbrada al acuerdo con cuestiones de instancia, pero porque las dos palabras pueden
ocurrir en cualquier pedido, dos condiciones son necesarias. La funcin SUPERIOR ser usada para la
conversin de instancia para la comparacin.
6. La primera condicin es
SUPERIOR (PRODUCT_DESCRIPTION) COMO '%COLOR %'
226
Captulo 4:
Funciones de fila sola



7. La segunda condicin es
SUPERIOR (PRODUCT_DESCRIPTION) COMO '%PRINTER %' 8. El DONDE clusula es
DONDE SUPERIOR (PRODUCT_DESCRIPTION) COMO '%COLOR %' Y SUPERIOR
(PRODUCT_DESCRIPTION) COMO '%PRINTER %'
9. La ejecucin de la select devuelve el SET de resultados que emparejan este modelo como mostrado
en el
ilustracin siguiente:
5
Utilizacin de
Funciones de
Conversin y
Expresiones
Condicionales






OBJETIVOS DE CERTIFICACIN


5.01

5.02


Describa Diversos tipos de Funciones de Conversin Disponibles en SQL
Use el TO_CHAR, TO_NUMBER, y
Funciones de Conversin de TO_DATE


5.03

Q&A


Aplique Expresiones Condicionales en una Select SENTENCIA
Taladradora de dos minutos M Prueba












Copyright 2008 por El Clic de McGraw-Hill Companies, Inc aqu para trminos de uso.
228
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales
Hablaron de funciones que actan
sobre numrico, fecha, e informacin de carcter en el Captulo 4, y la familiaridad con aquel
contenido es asumida en este captulo. A veces los datos no estn disponibles en el formato exacto
que una funcin es definida para aceptar, causando un tipo de datos
falta de armona. Para evitar errores de falta de armona, el Oracle implcitamente converte tipos de
datos compatibles. Implcito
hablan de la conversin antes de introducir funciones de conversin explcitas, que son usadas para
conversiones de tipo de datos confiables.

El concepto de funciones que anidan es definido y una categora de funciones
generales apuntadas a la simplificacin de interacciones con valores NULOS es
introducida. stos incluyen el NVL, NVL2, NULLIF, y SE FUNDEN funciones.
La lgica condicional, o la capacidad de mostrar resultados diferentes segn valores de
datos, es expuesta por el INSTANCIA de funciones condicional y DECODIFICAR.
Estas funciones proporcionan la lgica "si entonces ms" en el contexto de un SQL
preguntan.



OBJETIVO DE CERTIFICACIN 5.01


Describa Diversos tipos de Funciones de Conversin
Disponibles en SQL
Las funciones de conversin de SQL son funciones de fila solas diseadas para cambiar la
naturaleza del
tipo de datos de un valor de columna, expresin o literal. TO_CHAR, TO_NUMBER y
TO_DATE son las tres funciones de conversin el ms extensamente usadas y son
hablados detalladamente. La funcin de TO_CHAR converte numrico e informacin de
fecha en carcteres, mientras TO_NUMBER y TO_DATE converten datos de carcter en
nmeros y fechas, respectivamente. Hablan de los conceptos de la conversin de tipo de
datos implcita y explcita en la siguiente seccin.

Funciones de conversin
El oracle permite que columnas sean definidas con ANSI, DB2, y tipos de datos SQL/DS.
stos
son convertidos internamente a tipos de datos de Oracle. Este enfoque permite que
aplicaciones escritas para otros sistemas de base de datos sean emicapas al Oracle con la
facilidad.
Las definiciones de comando son obtenidas usando el comando DESCRIBIR hablado
en
El captulo 2. Cada columna tiene un tipo de datos asociado que reprime la naturaleza de
Describa Diversos tipos de Funciones de Conversin Disponibles en SQL
229



los datos esto puede almacenar. Una columna de NMERO no puede almacenar la informacin de
carcter. Una columna de FECHA no puede almacenar carcteres arbitrarios o nmeros. Sin embargo, los
equivalentes de carcter tanto de nmero como de informacin de fecha pueden ser almacenados en un
espacio de VARCHAR2.
Si una funcin que acepta un parmetro de ingreso de carcter encuentra un nmero en cambio, el
Oracle automticamente la converte en su carcter equivalente. Si una funcin que acepta un nmero o un
parmetro de fecha encuentra un valor de carcter, hay condiciones especficas en las cuales la conversin
de tipo de datos automtica ocurre. La FECHA y los tipos de datos de NMERO son muy estrictos
comparado con VARCHAR2 y TRABAJO POR HORAS.
Aunque las conversiones de tipo de datos implcitas estn disponibles, es ms confiable para convertir
explcitamente valores de un tipo de datos a otra conversin de fila sola de utilizacin funciones. Convertir
la informacin de carcter a NMERO y FECHA confa en mscaras de formato, de que hablan ms tarde
en esta seccin.

Cuando los valores numricos son suministrados como introducido a funciones que esperan
parmetros de carcter, la conversin de tipo de datos implcita asegura que ellos son tratados
como valores de carcter. Del mismo modo, las cadenas de caracteres que consisten en dgitos
numricos son implcitamente convertidas en valores numricos si posible cuando una falta de
armona de tipo de datos ocurre. Pero tener cuidado con conversiones implcitas. Hay algunos
instancias cuando esto no trabaja tan esperado, como en el siguiente DONDE clusula. Considere
datos restrictivos de una tabla T basados en una columna C de carcter, que contiene la cuerda
'100 clusula de condicin '.El DONDE C = '100' trabajos como usted podra esperar, pero la
condicin DONDE C=100 devuelve un error de nmero invlido.


Los Valores de Conversin de Tipo de datos implcitos que no comparten tipos de datos
idnticos con parmetros de funcin son implcitamente convertidos al formato requerido de ser posible.
VARCHAR2 y los tipos de datos de TRABAJO POR HORAS son colectivamente referidos como tipos de
carcter. Los espacios de carcter son flexibles y permiten el almacenamiento de casi cualquier tipo de la
informacin. Por lo tanto, la FECHA y los valores de NMERO pueden ser fcilmente convertidos a sus
equivalentes de carcter. Estas conversiones son conocidas como nmero al carcter y fecha a conversiones
de carcter. Considere las preguntas siguientes:
La consulta 1: longitud sentencia (1234567890) de dual
La consulta 2: longitud sentencia (SYSDATE) de dual
Ambas preguntas usan la funcin de LONGITUD, que toma una cadena de caracteres
parmetro. El nmero 1234567890 en la consulta 1 es implcitamente convertido en una cadena de
caracteres, '1234567890', antes de ser evaluado por la funcin de LONGITUD,
230
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



que devuelve el nmero 10. La consulta 2 primero evala la funcin de SYSDATE, que
es supuesta ser 07-APR-38. Esta fecha es implcitamente convertida en la cadena de
caracteres '07-APR-38', y la funcin de LONGITUD devuelve el nmero 9.
Es poco comn para datos de carcter para ser implcitamente convertidos en tipos de
datos numricos desde la nica condicin en la cual esto ocurre es si los datos de carcter
representan un nmero vlido. La cadena de caracteres '11' ser implcitamente
convertida a un nmero, pero '11.123.456' no ser, como las preguntas siguientes
demuestran:
Pregunta
3:
escogido
mod ('11', 2) de dual
Pregunta
4:
escogido
mod ('11.123', 2) de dual
Pregunta
5:
escogido
mod ('11.123.456', 2) de dual
Pregunta
6:
escogido
mod ('11$', 2) de dual
Las consultas 3 y 4 implcitamente converten las cadenas de caracteres '11' y '11.123'
en el
los nmeros 11 y 11.123, respectivamente, antes de la funcin de MOD los evalan y
devuelven los resultados 1 y 1.123. La consulta 5 devuelve el error "ORA-1722: el nmero
invlido," cuando el Oracle trata de realizar un carcter implcito para numerar la conversin.
Esto falla porque la cuerda '11.123.456' no es un nmero vlido. La consulta 6 tambin falla
con el error de nmero invlido, ya que el smbolo de dlar no puede ser implcitamente
convertido en un nmero.
El carcter implcito para fechar conversiones es posible cuando la cadena de caracteres se
conforma con los modelos de fecha siguientes: [D|DD] separator1 [MON|MONTH]
separator2 [R|RR|YY|YYYY]. Los D y DD representan un da solo y de 2 dgitos del mes.
MON es una abreviatura de 3 carcteres, mientras el MES es el nombre completo
durante un mes. Los R y RR representan un ao solo y de 2 dgitos. YY y YYYY
representan un 2-y ao de 4 dgitos, respectivamente. El separator1 y los elementos
separator2 pueden ser la mayor parte de signos de puntuacin, espacios, y paletas. La tabla
5-1 demuestra el carcter implcito para fechar la conversin, poniendo en una lista varias
llamadas a la funcin y los resultados vueltas de Developer de SQL.


TABLA 5-1

Ejemplos de Carcter Implcito para fechar Conversin


Llamada a la funcin add_months ('24-JAN-09', 1) add_months ('1\january/8', 1) months_between ('13*jan*8',
'13/feb/2008') add_months ('01$jan/08', 1) add_months ('13! jana08', 1)


add_months ('24-JAN-09 18:45', 1)


Formatee DD-MON-RR D\MONTH/R DD*MON*R, DD/MON/YYYY DD$MON/RR JANA es un mes invlido

DD-MON-RR HH24:MI


Resultados 24/FEB/09 01/FEB/08 - 1

01/FEB/08 ORA-1841: el ao (apretado) debe estar entre-4713 y +9999 y no ser 0 Real Academia de Bellas Artes O
1830: el formato de fecha imagina finales antes de convertir la cuerda de ingreso entera
Use el TO_CHAR, TO_NUMBER, y Funciones de Conversin TO_DATE



Conversin de Tipo de datos explcita
231
El oracle ofrece muchas funciones para convertir artculos de un tipo de datos al otro,
conocido como funciones de conversin de tipo de datos explcitas. stos devuelven un
valor garantizado para ser el tipo requerido y ofrecer un mtodo seguro y confiable de
convertir artculos de datos.
EL NMERO y los artculos de FECHA pueden ser convertidos explcitamente en
artculos de carcter usando la funcin de TO_CHAR. Una cadena de caracteres puede
ser explcitamente cambiada en un NMERO usando la funcin de TO_NUMBER. La
funcin de TO_DATE es usada para convertir cadenas de caracteres en artculos de
FECHA. Las mscaras de formato del oracle habilitan una amplia gama del control de
carcter al nmero y carcter para fechar conversiones.




Las funciones de conversin explcitas son crticas a la manipulacin de fecha,
carcter, e informacin numrica. Las preguntas en este tema prueban su entendimiento de
modelos de formato comnmente usados o mscaras. Las preguntas de uso prcticas tpicamente
toman la forma, "Lo que es devuelto cuando el TO_DATE, TO_CHAR, y



OBJETIVO DE CERTIFICACIN 5.02




Las funciones de TO_NUMBER son aplicadas a los valores de datos siguientes y formatean
mscaras?" stos a menudo son anidados dentro de funciones ms amplias, y es comn ser
pedido predecir el resultado de una llamada a la funcin, como el TO_CHAR (TO_DATE
('01-JAN-00', 'DD-MON-RR), 'Da').


Use el TO_CHAR, TO_NUMBER, y Funciones de
Conversin TO_DATE
Este objetivo de certificacin contiene una descripcin sistemtica del TO_NUMBER,
TO_DATE, y funciones de TO_CHAR, con ejemplos. La discusin de TO_CHAR est
dividida en la conversin de dos tipos de artculos a carcteres: FECHA y NMERO.
Esta separacin es garantizada por la disponibilidad de mscaras de formato diferentes
para controlar la conversin a valores de carcter. Estas funciones de conversin existen
junto a muchos otros, pero tienden a estar el ms extensamente usadas. Esta seccin se
concentra en las factibilidades de usar las funciones de conversin.
232
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



Utilizacin de las Funciones de Conversin
Muchas situaciones exigen el uso de funciones de conversin. Ellos pueden extenderse de
el formateo de la FECHA para y devuelve la pelota en un informe al contrato de un
seguro que los dgitos numricos extrados de espacios de carcter son correctamente
convertidos en nmeros antes de aplicarlos en una expresin aritmtica.
La tabla 5-2 ilustra la sintaxis de la fila sola conversin de tipo de datos explcita
funciones.
Los parmetros de apoyo de lenguaje nacionales opcionales (nls_parameters) son tiles
para especificar la lenguaje y formato en el cual los nombres de fecha y elementos
numricos son devueltos. Estos parmetros son por lo general ausentes, y los valores por
defecto para elementos, como da o nombres de mes y las abreviaturas son usadas. Como la
Figura 5-1 muestra, hay una vista en pblico disponible llamada
NLS_SESSION_PARAMETERS que contiene los parmetros NLS para su sesin
corriente. El valor de NLS_CURRENCY por defecto es el smbolo de dlar, pero esto
puede ser cambiado al nivel de sesin de usuario. Por ejemplo, para cambiar el dinero al 3
carcter mucho tiempo ensartan GBP, el comando siguiente puede ser publicado:
CAMBIE LA SESIN puso NLS_CURRENCY ='GBP';

Convertiendo Nmeros a Carcteres Usando la Funcin de
TO_CHAR La funcin de TO_CHAR devuelve un artculo de tipo de datos
VARCHAR2. Cuando aplicado a artculos del NMERO de tipo, varias opciones de
formateo estn disponibles. La sintaxis es como sigue:
TO_CHAR (number1, [formato], [nls_parameter]), El parmetro number1 es
obligatorio y debe ser un valor que es o puede ser
implcitamente convertido en un nmero. El parmetro de formato opcional puede ser
usado para especificar la informacin de formateo numrica como anchura, smbolo
monetario, la posicin de una coma decimal, y grupo (o miles) separadores y debe ser
encerrado en el solo



TABLA 5-2

Sintaxis de Funciones de Conversin de Tipo de datos Explcitas



TO_NUMBER (char1, [formatean la mscara], [nls_parameters]) = num1 TO_DATE (char1, [mscara de formato],
[nls_parameters]) = date1



TO_CHAR (num1, [formatean la mscara], [nls_parameters]) = char1 TO_CHAR (date1, [mscara de
formato], [nls_parameters]) = char1
Use el TO_CHAR, TO_NUMBER, y Funciones de Conversin TO_DATE
233



LA FIGURA 5-1 Apoyo de Lenguaje nacional (NLS) parmetros de sesin



























comillas. Hay otras opciones de formateo para nmeros convertidos en carcteres, algunos
de los cuales son puestos en una lista en la Tabla 5-3. Considere las dos preguntas siguientes:
La consulta 1: seleccione to_char (00001) ||' es un nmero especial' del
dual;
La consulta 2: seleccione to_char (00001, '0999999') ||' es un nmero
especial' del dual;
La consulta 1 evala el nmero 00001, borra los ceros principales, converte el
el nmero 1 en el carcter '1' y vueltas la cadena de caracteres '1 es un nmero especial'. La
consulta 2 aplica la mscara de formato numrica '0999999' al nmero 00001,
convertindolo en la cadena de caracteres '0000001'. Despus del encadenamiento a los
literales de carcter, la cuerda volvi es '0000001 es un nmero especial'. El cero y 6 nines en
la mscara de formato indican a la funcin de TO_CHAR que los ceros principales deben
ser mostrados y que la anchura de visualizacin debe ser puesta a siete carcteres. Por lo
tanto, la cuerda devuelta por la funcin de TO_CHAR contiene siete carcteres.
234
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



LA TABLA 5-3 Descripcin de formato
Elemento de Elemento Formato Resultado de Carcter de
nmero
Numrico

9
Anchura numrica
9999
12
12
Mscaras de formato
0
Visualizaciones ceros principales
09999
0012
00012


.
Posicin de decimal
09999.999
030.40
00030.400


punto




D
Separador decimal
09999D999
030.40
00030.400


la posicin (el perodo es





falta)




,
Posicin de coma
09999 999
03040
00003 040


smbolo



G Posicin de separador de grupo 09999G999 03040 00003 040
(la coma es por defecto)
$
Signo de dlar
099999$
03040
003040$
L
Moneda local
L099999
03040
GBP003040 si




el nls_currency es puesto a GBP
MI
Posicin de signo menos
99999MI
3040
3040

para negativas



PR
Negativas de abrigo en
99999PR
3040
<3040>

parntesis



EEEE
Nota cientfica
99.99999EEEE
121.976
1.21976E+02
U
nls_dual_currency
U099999
03040
CAD003040 si nls_dual_




el dinero es puesto al diseo asistido por comandoador
V
Se multiplica por 10n tiempos
9999V99
3040
304000

(n es el nmero de




nines despus V)



S
+ o - el signo es prefijado
S999999
3040
+3040


La pregunta en la Figura 5-2 recupera el JOB_TITLE y columnas MAX_SALARY de
la comando de JOBS para las filas con la palabra "presidente" en la columna JOB_TITLE.
MAX_SALARY ha sido formateado adelante para tener un smbolo monetario de dlar,
una coma miles de separador, y una coma decimal. Cuando una mscara de formato es
ms pequea que el nmero convertido, como ilustrado en el cuarto artculo en la lista
SENTENCIA, una serie de smbolos de picadillo es devuelta en cambio. Cuando una
mscara de formato contiene menos componentes fraccionarios que el nmero, doblan
primero sobre ello al nmero de sitios decimales en la mscara de formato antes de ser
convertidos.
Use el TO_CHAR, TO_NUMBER, y Funciones de Conversin TO_DATE
235



LA FIGURA 5-2 TO_CHAR funcionan con nmeros





















Convertir nmeros en carcteres es una manera confiable de asegurar que las
funciones y la sintaxis SQL general, que espera el ingreso de carcter, no
devuelven errores cuando los nmeros son encontrados. Convertir nmeros en
cadenas de caracteres es comn cuando los datos numricos deben ser
formateados para relatar objetivos. Las mscaras de formato que apoyan el
dinero, miles de separadores, y separadores de coma decimal son con frecuencia
usadas presentando datos financieros.

Convertiendo Fechas a Carcteres Usando la Funcin de
TO_CHAR Usted puede aprovechar una variedad de modelos de formato para convertir
artculos de FECHA en casi cualquier representacin de carcter de una fecha usando
TO_CHAR. Su sintaxis es como sigue:
TO_CHAR (date1, [formato], [nls_parameter]), Slo el parmetro date1 es obligatorio y
debe tomar la forma de un valor
esto puede ser implcitamente convertido a una fecha. El parmetro de formato opcional es
el instancia sensible y debe ser encerrado en citas solas. La mscara de formato especifica
qu elementos de fecha son extrados y si el elemento debera ser descrito por un largo o
un nombre abreviado. Los nombres de das y meses son automticamente rellenados
236
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



con espacios. stos pueden ser borrados usando un modificador para la mscara de
formato llamada el modo llenar (de) el operador. Prefijando el modelo de formato con las
cartas de, el Oracle es instruido de recortar todos los espacios de los nombres de das y
meses. Hay muchas opciones de formateo para fechas convertidas en carcteres, algunos
de los cuales son puestos en una lista en la Tabla 5-4.
Considere las tres preguntas siguientes:
La consulta 1: seleccione to_char (sysdate) ||' es hoy ''s la fecha' del
dual;
La consulta 2: seleccione to_char (sysdate, 'Mes') || 'es un tiempo
especial' del dual; la Consulta 3: seleccione to_char (sysdate,
'fmMonth') || 'es un tiempo especial' del dual;
Si la fecha de sistema actual es 03/JAN/09 y el formato de visualizacin por defecto
es
DD/MON/RR, entonces la consulta 1 vuelve la cadena de caracteres '03/JAN/09 es la fecha
de hoy'. Hay dos componentes notables en la consulta 2. En primer lugar, slo el
componente de mes de la fecha de sistema actual es extrado para la conversin a un tipo
de carcter. En segundo lugar,



TABLA 5-4

Mscaras de Formato de fecha durante Das, Meses, y Aos



Elemento de formato YYY YYY YYYY RR AO

MM MES DE MON DDD DDD DY DA



El ltimo dgito de la descripcin del ao dos ltimos dgitos del ao tres ltimos dgitos del ao ao De cuatro dgitos
ao De dos dgitos (ver el Captulo 3 para detalles) la ortografa inglesa sensible al Instancia del ao

Mes de dos dgitos abreviatura De tres cartas de mes ortografa inglesa sensible al Instancia de Da de mes de la semana
da De dos dgitos de Da de mes del ao abreviatura De tres cartas de da ortografa inglesa sensible al Instancia de da



Resultado 575975 1975 75 DIECINUEVE SETENTA Y CINCO el 06 de junio JUNIO 202153 LUNES MON
Use el TO_CHAR, TO_NUMBER, y Funciones de Conversin TO_DATE
237



ya que la mscara de formato es el instancia sensible y 'el Mes' aparece en el instancia de
ttulo, la cuerda volvi es 'enero es un tiempo especial'. No hay ninguna necesidad de aadir
que un espacio delante del literal 'es un tiempo especial' ya que la funcin de TO_CHAR
automticamente rellena el nombre del mes con un espacio. Si la mscara de formato en
la consulta 2 fuera 'el MES', la cuerda volvi sera 'ENERO es un tiempo especial'. El del
modificador es aplicado a la consulta 3, y la cuerda consiguiente es 'enero es un tiempo
especial'. La nota all no es ningn espacio entre enero y el literal 'es un tiempo especial'.
En la Tabla 5-4, suliste que los elementos funcionen en la fecha 02-JUN-1975 y el ao
corriente es 2009.
Los elementos de formato de fecha que pertenecen a semanas, cuartos, siglos, y otras
mscaras de formato menos comnmente usadas son puestos en una lista en la Tabla 5-5.
La columna de resultado es obtenida evaluando la funcin de TO_CHAR usando la fecha
24-SEP-1000 A.C., con la mscara de formato de la columna de elemento de formato en
la comando.
El componente de tiempo de un tipo de datos de tiempo de fecha es extrado usando los
modelos de formato en la Tabla 5-6. El resultado es obtenido evaluando la funcin de
TO_CHAR usando la fecha incluso su componente de tiempo 27-JUN-2010 21:35:13,
con la mscara de formato en la columna de elemento de formato en la Tabla 5-6.



TABLA 5-5

Mscaras de Formato de Fecha Menos comnmente Usadas



WWW de Elemento de formato QCC S CENTMETROS CBICOS precedentes, YYYY, o AO IYYY, IYY, IY, yo


A.C., d. C., a. de J.C. y d.J.C. J

IW

RM



La Semana de descripcin de la Semana de mes del ao Cuarto del Siglo de ao Si la fecha es A.C., un menos es
prefijada para resultar fechas de organizacin internacional para la normalizacin de cuatro, tres, dos, y un dgito,
respectivamente A.C. o d. C. y perodo espaciado a. de J.C. o d.J.C das del da de Julian desde el 31 de diciembre 4713
A.C. semana de estndar de organizacin internacional para la normalizacin (1 a 53) mes de nmero romano



Resultado 439310 - 10,-1000 o - MIL

1000, 000, 00, 0


A.C.

1356075

39

IX
238
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



TABLA 5-6

Mscara de Formato de fecha para Componentes de Tiempo



Elemento de formato de la maana, de la tarde, de la maana y de la TARDE. HH, HH12 y HH24 MI SS SSSSS



Hora de indicadores Meridian de descripcin de da, 1-12 horas, y Minuto de 0-23 horas (0-59) Segundo (0-59)
Segundos la medianoche pasada (0-86399)



Resultado de la tarde 09, 09, 21 35 13 77713


Varios otros elementos que pueden ser usados en modelos de formato de tiempo de fecha
son resumidos en la Tabla 5-7. Los signos de puntuacin son usados para separar elementos
de formato. Tres tipos de sufijos existen para formatear componentes de elementos tiempo
de fecha. Adems, los literales de carcter pueden ser incluidos en mo de formato de
fecha del si ellos son encerrados en dobles comillas. Los resultados en la Tabla 5-7 son
obtenidos aplicando la funcin de TO_CHAR usando la fecha 12/SEP/08 14:31 con las
mscaras de formato puestas en una lista en la descripcin y formatean la columna de
mscara.
La comando JOB_HISTORY guarda la pista de JOBS ocupados por EMPLOYEES en
la compaa. La pregunta en la Figura 5-3 recupera una oracin descriptiva sobre la fecha
que sale de cada empleado basado en su END_DATE, EMPLOYEE_ID, y espacios de
JOB_ID. Una expresin de carcter es concadenada a una llamada a la funcin
TO_CHAR con un modelo de formato de: 'fmDay "el "ddth "de" Mes YYYY'. El del
modificador es usado para recortar espacios en blanco que arrastran los nombres de los
das ms cortos y meses ms cortos. Los dos literales de carcter encerrados en dobles
comillas son las palabras: el y "de". El modelo de formato 'de th' es aplicado al elemento
de fecha 'dd' para crear un ordinal


TABLA 5-7

Mscaras de Formato de Fecha diversas



Elemento de formato -/.,?#! "cualquier carcter literal"

TH

SP

THSP o SPTH


Descripcin y Signos de puntuacin de Mscara de Formato: literales de Carcter 'de MM.YY': '"semana" W
"de" Mes' texto Posicional u ordinal: 'DDth "de" Mes' nmero Explicado detalladamente: 'Mes de MmSP Yyyysp'
Explicado detalladamente posicional o nmero ordinal: 'hh24SpTh'



Resultado 09.08 Semana el 2 de septiembre

El 12 de septiembre


El nueve de septiembre Dos mil ocho Catorce
Use el TO_CHAR, TO_NUMBER, y Funciones de Conversin TO_DATE
239



LA FIGURA 5-3 TO_CHAR funcionan con fechas

























da tal como el 17mo o 31er. El modelo de formato 'de Mes' muestra el nombre completo
del elemento de mes de la columna END_DATE en el instancia de ttulo. Finalmente, la
mscara de formato de YYYY recupera el componente de ao de 4 dgitos.


EJERCICIO 5-1 Fechas que Converten en Carcteres Usando la Funcin de
TO_CHAR
Se requiere que usted recupere una lista de FIRST_NAME y valores de LAST_NAME y un
la expresin basada en la columna HIRE_DATE para EMPLOYEES alquilada un sbado. La
expresin debe ser aliased como START_DATE y un valor HIRE_DATE de 17-FEB-1996
debe devolver la cuerda siguiente:
El sbado, 17 de febrero, Mil novecientos noventa y seis.

1. Comience al Developer SQL y conecte al esquema de HORA. 2. El DONDE la
clusula es
DONDE TO_CHAR (HIRE_DATE, 'fmDay') = 'el sbado'
240
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



El del modificador es necesario para borrar el rastreo de impresos ya que una comparacin con un
carcter literal es realizada y se requiere un partido exacto.
3. La expresin START_DATE es
TO_CHAR (HIRE_DATE, 'fmDay, "el "ddth "de" Mes, Yyyysp.') La mscara de formato de ao lo
causa ser explicada detalladamente en el instancia de ttulo.
4. La clusula SENTENCIA es por lo tanto
SELECCIONE FIRST_NAME, LAST_NAME, TO_CHAR (HIRE_DATE, 'fmDay, "el "ddth "de" Mes,
Yyyysp.') START_DATE
5. El DE la clusula es
DE EMPLOYEES 6. La ejecucin de esta select devuelve los nombres de los EMPLOYEES y el
START_DATE
expresin como mostrado en la ilustracin siguiente abajo:
Use el TO_CHAR, TO_NUMBER, y Funciones de Conversin TO_DATE
241



Convertiendo Carcteres a Fechas Usando la Funcin de TO_DATE La funcin de
TO_DATE devuelve un artculo de la FECHA de tipo. Las cadenas de caracteres convertidas a fechas pueden
contener todos o slo un subconjunto de los elementos tiempo de fecha que comprenden una FECHA.
Cuando las cuerdas con slo un subconjunto de los elementos tiempo de fecha son convertidas, el Oracle
proporciona valores por defecto para construir una fecha completa. Los componentes de cadenas de
caracteres tienen que ver con elementos tiempo de fecha diferentes usando un modelo de formato o mscara.
La sintaxis es como sigue:
TO_DATE (string1, [formato], [nls_parameter]), Slo el parmetro string1 es obligatorio y si ninguna
mscara de formato es suministrada, string1
debe tomar la forma de un valor que puede ser implcitamente convertido en una fecha. El parmetro de
formato opcional siempre es casi usado y es especificado en comillas solas. Las mscaras de formato son
idnticas a los puestos en una lista en las Tablas 5-4, 5-5, y 5-6. La funcin de TO_DATE tiene un
modificador fx que es similar a del usado con la funcin de TO_CHAR. el fx especifica un partido exacto
para string1 y la mscara de formato. Cuando el modificador fx es especificado, los artculos de carcter que
no emparejan exactamente la mscara de formato ceden un error. Considere las cinco preguntas siguientes:
La consulta 1: seleccione to_date ('25-DEC-2010') del dual;
La consulta 2: seleccione to_date ('el 25 de diciembre') del dual; la Consulta 3:
seleccione to_date ('el 25 de diciembre', 'DD-MON') del dual; la Consulta 4: seleccione
to_date ('25-DEC-2010 18:03:45', 'DD-MON-YYYY HH24:MI:SS') del dual; la Consulta 5:
seleccione to_date ('25-DEC-10', 'fxDD-MON-YYYY') del dual;
La consulta 1 evala la cuerda 25-DEC-2010 y tiene la informacin suficiente a
implcitamente convrtalo en un artculo de FECHA con una mscara por defecto de DD-MON-YYYY. El
separador de guin podra ser substituido con otro carcter de puntuacin. Ya que ningunos componentes
de tiempo son proporcionados, el tiempo para esta fecha convertida es puesto a la medianoche o 0:00:00.
La consulta 2 no puede convertir implcitamente la cuerda en una fecha porque hay informacin
insuficiente y "ORA-01840: el valor de ingreso no es el bastante mucho tiempo para el error" de formato de
fecha es devuelto. Suministrando una mscara de formato DD-MON a la cuerda el 25 de diciembre en la
consulta 3, el Oracle puede emparejar el nmero 25 a DD y el mes abreviado llaman DICIEMBRE al
componente MON. El ao y los componentes de tiempo son ausentes, entonces el ao corriente devuelto
por la funcin de SYSDATE es usado y el tiempo es puesto a la medianoche. Si el ao corriente es 2009, la
consulta 3 devuelve la fecha 25/DEC/09 0:00:00. La consulta 4 realiza una conversin completa de una
cuerda con todos los elementos tiempo de fecha presentes, y ningunos valores por defecto son
suministrados por el Oracle. La consulta 5 usa el modificador fx en su mscara de formato. Ya que el
componente de ao de la cuerda es 10 y la mscara de formato correspondiente es YYYY, los resultados de
modificador fx en "ORA-01862: el valor numrico no empareja la longitud del error" de artculo de formato
devuelto.
242
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



LA FIGURA 5-4 La funcin de TO_DATE


























La funcin de TO_DATE es usada en el DONDE la clusula en la Figura 5-4 para
limitar las filas volvi para aquellos EMPLOYEES contratados despus del 12 de enero de
2000. La mscara de formato empareja 01 al MM, 12 a DD y 2000 a YYYY.

Convertiendo Carcteres a Nmeros Usando la Funcin de
TO_NUMBER La funcin de TO_NUMBER devuelve un artculo del NMERO de
tipo. Las cadenas de caracteres convertidas en nmeros deben ser apropiadamente
formateadas de modo que cualquier componente no numrico sea traducido o quitado
con una mscara de formato apropiada. La sintaxis es como sigue:
TO_NUMBER (string1, [formato], [nls_parameter]),
Use el TO_CHAR, TO_NUMBER, y Funciones de Conversin TO_DATE




GUIN & SOLUCIN
243

Su tarea es extraer la parte de mes y da de una columna de fecha y compararla con los componentes
correspondientes de la fecha de sistema actual. Puede tal comparacin ser realizada?
S. La funcin de TO_CHAR usada en un artculo de fecha con una mscara de formato como 'DD-MON' hace que
el componente de mes y da sea aislado. Este valor puede ser comparado con la fecha de sistema actual usando la
expresin siguiente: TO_CHAR (SYSDATE, 'DD-MON')
Se requiere un informe de ganancias y prdidas con los resultados mostrados como sigue: si la cantidad es negativa,
debe ser encerrada en corchetes angulares. La cantidad debe ser mostrada con un signo de dlar principal. Pueden
los resultados ser recuperados en el formato especificado?
S. La cantidad numrica debe ser convertida en una cadena de caracteres usando la funcin de TO_CHAR con
una mscara de formato que lo encierra en corchetes angulares si es negativo y precede a ello con un signo de
dlar. La llamada a la funcin siguiente recupera los resultados en el formato requerido: TO_CHAR
(CANTIDAD, 'PR de 999999$')
Le piden introducir datos de empleado pasados en la comando JOB_HISTORY de una fuente basada en el papel,
pero la informacin de fecha de inicio slo est disponible como el ao que el empleado comenz. Puede esto
valorar ser convertido en el primero de enero del ao?
S. Considere la llamada a la funcin de conversin FECHA de TO_ ('2000', 'YYYY') para un empleado que
comenz en el ao 2000. Si esta fecha es extrada como sigue, la cadena de caracteres el 01/01/2000 es devuelta
TO_CHAR (TO_DATE ('2000', 'YYYY'), 'MM/DD/YYYY')



Slo el parmetro string1 es obligatorio y si ninguna mscara de formato es suministrada,
debe ser un valor que puede ser implcitamente convertido en un nmero. El parmetro de
formato opcional es especificado en comillas solas. Las mscaras de formato son idnticas
a los puestos en una lista en la Tabla 5-3. Considere las dos preguntas siguientes:
La consulta 1: seleccione el to_number ('1.000,55$') del dual;
La consulta 2: seleccione to_number ('1.000,55$', '999.999,99$') del
dual;
La consulta 1 no puede realizar una conversin implcita a un nmero debido al dlar
signo, coma, y perodo y vueltas el error, "ORA-1722: nmero invlido." La consulta 2
empareja el smbolo de dlar, coma, y perodo de la cuerda a la mscara de formato y,
aunque la anchura numrica sea ms grande que la anchura de cuerda, el nmero 1000.55
es devuelto.
La figura 5-5 muestra como la funcin de SUBSTR era usada primero para extraer los
ocho ltimos carcteres de la columna de carcter PHONE_NUMBER. El TO_NUMBER
244
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



LA FIGURA 5-5 La funcin de TO_NUMBER























la funcin era usada entonces para convertir estos ocho carcteres, incluso una coma
decimal, en un nmero que fue multiplicado por 10000, para EMPLOYEES que
pertenecen a DEPARTMENT_ID 30.





Lea las preguntas de examen muy con cuidado. La funcin de TO_NUMBER
converte artculos de carcter en nmeros. Si usted converte un nmero usando una mscara
de formato ms corta, un error es devuelto. Si usted converte un nmero basado en un formato
ms largo





mscara, el nmero original es devuelto. Procure no confundir conversiones TO_NUMBER con
TO_CHAR. Por ejemplo, TO_NUMBER (123.56, '999.9') devuelve un error, mientras TO_CHAR
(123.56, '999.9') vuelve 123.6.
Aplique Expresiones Condicionales en una Select SENTENCIA
245




OBJETIVO DE CERTIFICACIN 5.03


Aplique Expresiones Condicionales en una Select
SENTENCIA
Las funciones anidadas fueron introducidas en el Captulo 4, pero una discusin formal de
este concepto
es proporcionado en esta seccin. Dos nuevas categoras de funciones tambin son
introducidas. stos incluyen las funciones generales, que proporcionan la lenguaje a tratar
con eficacia con valores NULOS, y las funciones condicionales, que apoyan la lgica
condicional en expresiones. Este objetivo de certificacin cubre las reas siguientes:

Anid funciones funciones Generales funciones Condicionales

Funciones anidadas
Las funciones anidadas usan salida de una funcin como el ingreso al otro. Funciones
siempre devuelva exactamente un resultado. Por lo tanto, usted puede considerar de
fuentes fidedignas una llamada a la funcin del mismo modo ya que usted iba un valor
literal, cuando parmetros de ingreso de suministro a una funcin. Las funciones de fila
solas pueden ser anidadas a cualquier nivel de la profundidad. La forma general de una
funcin es como sigue:
Function1 (parmetro 1, parameter2, .) = result1 Substitucin de llamadas a la funcin
como parmetros a otras funciones puede llevar un
expresin, como lo siguiente:
F1 (param1.1, F2 (param2.1, param2.2, F3 (param3.1)), param1.3) Anid las
funciones son evaluadas primero antes de que sus valores de retorno sean usados como
paramtricos
ingreso a otras funciones. Ellos son evaluados del ntimo a los niveles ms extremos. La
expresin precedente es evaluada como sigue:

1. El F3 (param3.1) es evaluado y su valor de retorno proporciona el tercer parmetro
funcionar F2 y puede ser llamado: param2.3.
2. F2 (param2.1, param2.2, param2.3) es evaluado y su valor de retorno provee
el segundo parmetro para funcionar F1 y es param1.2.
246
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



3. F1 (param1.1, param1.2, param1.3) es evaluado y el resultado es devuelto a
el programa de vocacin.

Se dice que la funcin F3 es anidada tres niveles profundamente en este ejemplo. Considere el
pregunta siguiente:

longitud sentencia (to_char (to_date ('28/10/09', 'DD/MM/RR'), 'fmMonth')) de dual;
Hay tres funciones en la lista SENTENCIA que, del interior a niveles externos,
son TO_DATE, TO_CHAR y LONGITUD. La pregunta es evaluada como sigue:

1. La funcin ntima es evaluada primero. TO_DATE ('28/10/09', 'DD/MM/RR')
converte la cadena de caracteres el 28/10/09 en la FECHA valoran 28-OCT-2009.
La mscara de formato de RR es usada para la parte de ao. Por lo tanto, el
componente de siglo volvi es el siglo corriente (el veintiuno), ya que el
componente de ao est entre 0 y 49.
2. La segunda funcin ntima es evaluada despus. TO_CHAR ('28-OCT-2009',
'el fmMonth') converte la fecha dada basada en la mscara de formato de Mes y
devuelve el octubre de cadena de caracteres. El del modificador recorta el rastreo
de espacios en blanco del nombre del mes.
3. Finalmente, la LONGITUD ('octubre') funcin es evaluada y las vueltas de
pregunta
el nmero 7.



GUIN & SOLUCIN

Son anidados funciones evaluadas del nivel ms extremo al nivel ntimo?
No. Las funciones anidadas son resueltas del nivel anidado ntimo que se mueve externo.
Deben todas las funciones en una expresin anidada devolver el mismo tipo de datos?
No. Los tipos de datos de los parmetros de funciones anidadas pueden ser diferentes el uno del otro. Es
importante asegurar que los tipos de datos correctos siempre son suministrados a funciones para evitar errores.
Hay una manera ms simple de mostrar la informacin de SUELDO de la comando de EMPLOYEES en la forma
13.000$ sin usar la select siguiente? SELECCIONE 'el $' || SUBSTR (SUELDO, 1, MOD (LONGITUD
(SUELDO), 3)) || ',' || SUBSTR (SUELDO, MOD (LONGITUD (SUELDO), 3) +1)
S. Una solucin simple y elegante es usar la funcin de TO_CHAR con 'G999 de 99$' TO_CHAR escogido de la
mscara de formato (SUELDO, 'G999 de 99$') DE EMPLOYEES;




Funciones generales
Aplique Expresiones Condicionales en una Select SENTENCIA
247
Las funciones generales simplifican el funcionamiento con columnas que potencialmente
contienen valores nulos. Estas funciones aceptan parmetros de ingreso de todos los tipos
de datos. Los servicios que ellos ofrecen son relevantes principalmente para valores nulos.
Las funciones examinadas en las siguientes secciones incluyen la funcin de NVL,
que proporciona un valor alternativo para usar si se encuentra un nulo. La funcin de
NVL2 realiza una evaluacin condicional de su primer parmetro y devuelve un valor si
un nulo es encontrado y una alternativa si el parmetro no es nulo. La funcin de
NULLIF compara dos trminos y devuelve un resultado nulo si ellos son iguales, por otra
parte devuelve el primer trmino. La funcin FUNDIR acepta un nmero ilimitado de
parmetros y devuelve el primer parmetro no nulo ms esto vuelve nulo.

La Funcin de NVL que La funcin de NVL evala si una columna o la expresin
de cualquier tipo de datos son nulas o no. Si el trmino es nulo, una alternativa no el valor
nulo es devuelto; por otra parte, el trmino inicial es devuelto.
La funcin de NVL toma dos parmetros obligatorios. Su sintaxis es NVL (original,
ifnull), donde original representa el trmino probado e ifnull es el resultado devuelto si el
trmino original evala al nulo. Los tipos de datos de los parmetros originales e ifnull
siempre deben ser compatibles. Ellos deben ser o del mismo tipo, o debe ser posible
convertir implcitamente ifnull al tipo del parmetro original. La funcin de NVL
devuelve un valor con el mismo tipo de datos que el parmetro original. Considere las tres
preguntas siguientes:
La consulta 1: seleccione nvl (1234) del dual;
La consulta 2: seleccione nvl (nulo, 1234) del dual; la Consulta 3: no
seleccione nvl (substr ('abec', 4), 'Ningunos exists' de subcuerda) del
dual;
Ya que la funcin de NVL toma dos parmetros obligatorios, la consulta 1 vuelve el
error, "ORA-00909: nmero invlido de argumentos." Las vueltas de consulta 2 1234
despus de la palabra clave nula son probadas y encontradas ser nulas. La consulta 3
implica una funcin de SUBSTR anidada que intenta extraer el cuarto carcter de una 3
cadena de caracteres. Las vueltas de funcin interiores nulas, dejando el NVL (nulo,
'Ningunos exists' de subcuerda) funcionan para ejecutar, que entonces no devuelve la
cuerda 'Ningunos exists' de subcuerda.
La figura 5-6 muestra dos preguntas casi idnticas. Ambas preguntas seleccionan filas
donde el LAST_NAME comienza con la carta E. El LAST_NAME, el SUELDO, y las
columnas COMMISSION_PCT tambin son seleccionados. La diferencia entre las
preguntas est en la expresin deliberada aliased como MONTHLY_COMMISSION.
Debido al NVL
248
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



LA FIGURA 5-6 La funcin de NVL


























funcin en la primera pregunta, los resultados numricos son devueltos. La segunda
pregunta devuelve algunos valores nulos y un artculo numrico aunque 1000 sea aadido a
cada fila.

Es atractivo zambullirse en y construir una expresin compleja que comprende a
muchos anid llamadas a la funcin, pero este enfoque evoluciona con prctica y
experiencia. Concepte una solucin de una pregunta y divdalo abajo en las
llamadas a la funcin componentes. La comando DUAL es til para pruebas lgicas
ad hoc y depuracin de llamadas a la funcin separadas. No tenga miedo de
ejecutar preguntas tan muchas veces como usted desea perfeccionar los
componentes antes de ensamblarlos en componentes cada vez ms ms grandes.
Pruebe y depure de stos hasta que la expresin final sea formada.

La Funcin de NVL2 La funcin de NVL2 proporciona un realce a NVL, pero
sirve un objetivo muy similar. Esto evala si una columna o la expresin de cualquier tipo
de datos son nulas o no.
Aplique Expresiones Condicionales en una Select SENTENCIA
249



Si el primer trmino no es nulo, el segundo parmetro es devuelto, ms el tercer parmetro es devuelto.
Recuerde que la funcin de NVL es diferente ya que devuelve el trmino original si no es nulo.
La funcin de NVL2 toma tres parmetros obligatorios. Su sintaxis es NVL2 (original, ifnotnull, ifnull),
donde original representa el trmino probado. Ifnotnull es devuelto de ser original no es nulo, e ifnull es
devuelto de ser original es nulo. Los tipos de datos del ifnotnull y parmetros ifnull deben ser compatibles, y
ellos no pueden ser del tipo MUCHO TIEMPO. Ellos deben ser o del mismo tipo, o debe ser posible
convertir ifnull al tipo del parmetro ifnotnull. El tipo de datos devuelto por la funcin de NVL2 es el
mismo como aquel del parmetro ifnotnull. Considere las tres preguntas siguientes:
La consulta 1: seleccione nvl2 (1234,1, 'una cuerda') del dual; la Consulta 2: seleccione nvl2
(nulo, 1234,5678) del dual; la Consulta 3: no seleccione nvl2 (substr ('abec', 2), 'No bc',
'Ninguna subcuerda') del dual;
El trmino de ifnotnull en la consulta 1 es un nmero y el parmetro ifnull es 'una cuerda'.
Ya que hay una incompatibilidad de tipo de datos entre ellos, "ORA-01722: el nmero invlido" error es
devuelto. La consulta 2 devuelve el parmetro ifnull, que es 5678. La consulta 3 extrae los carcteres "bc"
utilizacin de la funcin de SUBSTR y el NVL2 ('bc', No bc', 'Ninguna Subcuerda') la funcin es
evaluada. El parmetro ifnotnull, la cuerda 'No bc', es devuelto.
Los espectculos de figura 5-7 como la funcin de NVL2 es usada para proveer el texto descriptivo que
clasifica a EMPLOYEES con valores de LAST_NAME que comienzan con "F" en la comisin y no encargar
a asalariados basados en el nullable COMMISSION_PCT columna.

La Funcin de NULLIF La funcin de NULLIF prueba dos trminos de la igualdad. Si ellos son
iguales la funcin devuelve un nulo, ms devuelve el primer de los dos trminos probados.
La funcin de NULLIF toma dos parmetros obligatorios de cualquier tipo de datos. La sintaxis es
NULLIF (ifunequal, comparison_term), donde los parmetros ifunequal y comparison_term son
comparados. Si ellos son idnticos, entonces NULO es devuelto. Si ellos se diferencian, el parmetro
ifunequal es devuelto. Considere las tres preguntas siguientes:
La consulta 1: seleccione nullif (1234,1234) del dual;
La consulta 2: seleccione nullif (1234,123+1) del dual; la Consulta 3: seleccione nullif
('24-JUL-2009', '24-JUL-09') del dual;
La consulta 1 devuelve un valor nulo ya que los parmetros son idnticos. La aritmtica
la ecuacin en la consulta 2 no es implcitamente evaluada, y la funcin de NULLIF encuentra
250
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



LA FIGURA 5-7 La funcin de NVL2

























1234 diferente de 123+1, entonces esto devuelve el parmetro ifunequal, que es 1234. Los
literales de carcter en la consulta 3 no son implcitamente convertidos PARA fechar
artculos y son comparados como dos cadenas de caracteres por la funcin de NULLIF.
Ya que las cuerdas son de longitudes diferentes, el parmetro ifunequal 24-JUL-2009 es
devuelto.
La figura 5-8 muestra como NULLIF es anidado como un parmetro a la funcin de
NVL2. La funcin de NULLIF s mismo tiene el SUBSTR y funciones de carcter
SUPERIORES empotradas en la expresin usada como su parmetro ifunequal. La
columna de E-MAIL es comparado con una expresin, formada concadenando el primer
carcter del FIRST_NAME al equivalente maysculo de la columna LAST_NAME, para
EMPLOYEES con 4 carcter nombres largos. Cuando estos trminos son iguales,
NULLIF devuelve un nulo, ms devuelve el parmetro ifunequal evaluado. Esto es usado
como un parmetro a NVL2. La funcin de NVL2 proporciona el texto descriptivo que
clasifica filas como emparejando el modelo o no.
Aplique Expresiones Condicionales en una Select SENTENCIA
251



LA FIGURA 5-8 La funcin de NULLIF


























EJERZA 5-2 Utilizacin NULLIF y NVL2 para Lgica Condicional Simple
Se requiere que usted devuelva un SET de filas de la comando de EMPLOYEES con
Valores de DEPARTMENT_ID de 100. El SET tambin debe contener FIRST_NAME
y valores de LAST_NAME y una expresin aliased como NAME_LENGTHS. Esta
expresin debe devolver la cuerda 'Longitud Diferente' si la longitud del FIRST_NAME
se diferencia de aquel de los LAST_NAME, ms la cuerda 'Misma Longitud' debe ser
devuelta.

1. Comience al Developer SQL y conecte al esquema de HORA. 2. La expresin
NAME_LENGTHS puede ser calculada de varios modos. El
la solucin proporcion usos la funcin de NULLIF para probar si los valores de
LONGITUD volvieron para el FIRST_NAME y las columnas LAST_NAME son
252
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



el mismo. Si ellos son, NULO es devuelto, ms la LONGITUD del LAST_NAME es devuelta. Si la
funcin externa (NVL2) consigue un parmetro NULO, la cuerda 'Misma Longitud' es devuelta, ms la
cuerda 'Longitud Diferente' es devuelta.
3. La clusula SENTENCIA es por lo tanto
SELECCIONE FIRST_NAME, LAST_NAME, NVL2 (NULLIF (LONGITUD (NOMBRE de
LAST_), LONGITUD (FIRST_NAME)), 'Longitud Diferente', 'Misma Longitud') NAME_LENGTHS
4. El DE la clusula es
DE EMPLOYEES 5. El DONDE clusula es
DONDE DEPARTMENT_ID=100 6. La ejecucin de esta select devuelve los nombres de los
EMPLOYEES y el NAME_LENGTHS
expresin como mostrado en la ilustracin siguiente:
Aplique Expresiones Condicionales en una Select SENTENCIA
253



La Funcin FUNDIR La funcin FUNDIR devuelve el primer valor no nulo de su lista
de parmetro. Si todos sus parmetros son nulos, entonces nulo es devuelto.
La funcin FUNDIR toma dos parmetros obligatorios y cualquier nmero de
parmetros opcionales. La sintaxis es SE FUNDEN (expr1, expr2, ., exprn), donde expr1 es
devuelto si no es nulo, ms expr2 si no es nulo, etctera. FNDASE es una forma general de
la funcin de NVL, ya que las dos ecuaciones siguientes ilustran:
FNDASE (expr1, expr2) = NVL (expr1, expr2) SE FUNDEN (expr1, expr2, expr3) =
NVL (expr1, NVL (expr2, expr3)) El tipo de datos SE FUNDE vueltas si un no el valor
nulo es encontrado es el mismo como esto
del primer no parmetro nulo. Evitar "ORA-00932: tipos de datos inconsecuentes" error,
todos no los parmetros nulos deben tener tipos de datos compatibles con el primer no
parmetro nulo. Considere las tres preguntas siguientes:
La consulta 1: escogido se funden (nulo, nulo, nulo, 'una cuerda') del dual; la Consulta
2: escogido se funden (nulo, nulo, nulo) del dual; la Consulta 3: escogido no se funden (substr
('abec', 4), 'No bc', 'Ninguna subcuerda') del dual;
La consulta 1 devuelve el cuarto parmetro: una cuerda, ya que esto es el primero no nulo
el parmetro encontrado. La consulta 2 vuelve nulo porque todos sus parmetros son nulos.
La consulta 3 evala su primer parmetro, que es una funcin de SUBSTR anidada, y lo
encuentra siendo nulo. El segundo parmetro no es nulo entonces la cuerda 'No bc' es
devuelta.
El STATE_PROVINCE, POSTAL_CODE, y la informacin de CIUDAD fueron
recuperados de la comando de LOCATIONS para las filas con valores COUNTRY_ID del
Reino Unido, ESTO, o JP. Como la Figura 5-9 muestra, la funcin FUNDIR devuelve el
valor de STATE_PROVINCE para una fila si no es nulo. Si es nulo el valor de
POSTAL_CODE es devuelto. Si es nulo, el espacio de CIUDAD es devuelto, ms el
resultado es nulo.




Los parmetros de la funcin general NVL2 puede ser confuso si usted es familiar
ya con NVL. NVL (original, ifnull) vueltas originales si no es nulo, ms ifnull es devuelto. El NVL2
(original, ifnotnull, ifnull) la funcin vuelve ifnotnull de ser original no es nulo,




ms el ifnull es devuelto. La confusin puede levantarse porque el segundo parmetro en la
funcin de NVL es ifnull, mientras el segundo parmetro en la funcin de NVL2 es ifnotnull.
Est consciente al sentido de las LOCATIONS de parmetro en funciones.
254
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



LA FIGURA 5-9 La funcin FUNDIR
























Funciones condicionales
La lgica condicional, tambin lgica conocida "como si entonces ms", se refiere a la
eleccin de un paso de
ejecucin basada en valores de datos que encuentran ciertas condiciones. Las funciones
condicionales, como DECODIFICAN y la expresin de INSTANCIA, devuelven valores
diferentes basados en la evaluacin de condiciones de comparacin. Estas condiciones son
especificadas como parmetros a la funcin DECODIFICAR y la expresin de
INSTANCIA. La funcin DECODIFICAR es especfica para el Oracle, mientras la
expresin de INSTANCIA es ANSI SQL dcil. Un ejemplo de lgica "si entonces ms" es:
si el valor de pas es Brasil o Australia, entonces devuelva el Hemisferio del sur, ms
devuelva el Hemisferio norte.

La Funcin DECODIFICAR Aunque su nombre parezca misterioso, esta funcin
es franca. La funcin DECODIFICAR pone en prctica "si entonces ms" lgica
condicional probando sus dos primeros trminos de igualdad y vueltas el tercer si ellos
son iguales y opcionalmente devuelven otro trmino si ellos no son.
Aplique Expresiones Condicionales en una Select SENTENCIA
255



La funcin DECODIFICAR toma al menos tres parmetros obligatorios, pero puede tomar muchos
ms. La sintaxis de la funcin es DECODIFICAN (expr1, comp1, iftrue1, [comp2, iftrue2... [compN,
iftrueN]], [iffalse]). Estos parmetros son evaluados como mostrado en el ejemplo de pseudocdigo
siguiente:

Si expr1 = comp1 entonces devuelven iftrue1
ms si expr1 = comp2 entonces devuelven iftrue2
...... ms si expr1 = compN entonces devuelven iftrueN
ms vuelva nulo | iffalse;
Expr1 es comparado con comp1. Si ellos son iguales, entonces iftrue1 es devuelto. Si expr1 no es igual a
comp1, entonces lo que pasa despus depende de si los parmetros opcionales comp2 e iftrue2 estn
presentes. Si ellos son, entonces expr1 es comparado con comp2. Si ellos son iguales, entonces iftrue2 es
devuelto. Si no, lo que pasa despus depende de si adelante compn, iftruen pares existen, y el ciclo sigue
hasta que ningunos trminos de comparacin permanezcan. Si ningunos partidos han sido encontrados y si
el parmetro iffalse es definido, entonces iffalse es devuelto. Si el parmetro iffalse no existe y ningunos
partidos son encontrados, un valor nulo es devuelto.
Todos los parmetros a la funcin DECODIFICAR pueden ser expresiones. El tipo de datos de vuelta es
el mismo como aquel del primer artculo de comparacin correspondiente. La expresin expr1 es
implcitamente convertida al tipo de datos del primer parmetro de comparacin comp1. Como los otros
parmetros de comparacin los comp2.compn son evaluados, ellos tambin son implcitamente convertidos al
mismo tipo de datos que comp1. Decodifique piensa que dos nulls son equivalentes, tan si expr1 es nulo y
comp3 es el primer parmetro de comparacin nulo encontrado, entonces el parmetro de resultado
correspondiente iftrue3 es devuelto. Considere las tres preguntas siguientes:

La consulta 1: escogido decodifican (1234 123, '123 es un partido') del dual; la Consulta 2:
escogido decodifican (1234 123, '123 no es un partido', 'Ningn partido') del dual; la Consulta
3: escogido decodifican ('bsqueda', 'comp1', 'true1', 'comp2', 'true2', 'busque', 'true3',
substr ('2search', 2,6)), 'true4', 'falso') del dual;

La consulta 1 compara el nmero 1234 con el primer trmino de comparacin 123. Ya que ellos
no son iguales, el primer trmino de resultado no puede ser devuelto. Adelante, como no hay ninguna falta
iffalse el parmetro definido, un nulo es devuelto. La consulta 2 es idntica al primer salvo que un parmetro
iffalse es definido. Por lo tanto, desde 1234 no es igual a 123, la cuerda 'Ningn partido' es devuelta. La
consulta 3 averigua los parmetros de comparacin para un partido. El carcter llama 'comp1' y 'comp2' no son
iguales a la bsqueda, entonces el
256
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



los resultados true1 y true2 no son devueltos. Un partido es encontrado en tercer 'comp3'
de trmino de comparacin (parmetro 6), que contiene la bsqueda de cuerda. Por lo tanto,
el tercer trmino de resultado iftrue3 (parmetro 7) conteniendo la cuerda 'true3' es devuelto.
Note que ya que un partido ha sido encontrado, ninguna busca adicional ocurre. De este
modo, aunque el cuarto trmino de comparacin (parmetro 8) tambin sea un partido a
expr1, esta expresin nunca es evaluada, porque un partido fue encontrado en un trmino
de comparacin ms temprano.
Los acontecimientos distintos de los valores de columna COUNTRY_ID en la
comando de LOCATIONS han sido clasificados en COUNTRIES de Hemisferio del
Norte o en del sur usando una funcin DECODIFICAR. La figura 5-10 muestra como la
columna COUNTRY_ID es la expresin que un partido es buscado. Si el valor de
COUNTRY_ID es Ferrocariles Britnicos (Brasil) o AU (Australia), entonces la funcin
devuelve la cuerda Hemisferio del sur, ms el Hemisferio norte es devuelto.



LA FIGURA 5-10 La funcin DECODIFICAR
Aplique Expresiones Condicionales en una Select SENTENCIA




DENTRO DEL EXAMEN
257


Los objetivos de certificacin en este captulo son medidos principalmente con ejemplos prcticos que
requieren que usted prediga los resultados devueltos por una expresin. Las funciones de conversin
explcitas con sus muchas mscaras de formato son probadas. La funcin de TO_CHAR; de modificador; y
el sp, th, y los modelos de formato de spth son comnmente examinados. El uso de la funcin de TO_CHAR
para convertir nmeros en carcteres es probado, y el hincapi a menudo es hecho en las mscaras de formato
que determinan anchura numrica, smbolo de dlar, separador de grupo, y formatos de separador decimales.
Muchas preguntas consisten en expresiones con funciones anidadas, y es esencial para usted saber como
interpretar y remontarlos. El ntimo a la secuencia ms extrema de la evaluacin de funciones anidadas es
importante y debe ser recordado.
Las funciones generales NVL, NVL2, NULLIF, y SE FUNDEN todos pertenecen a




La Expresin de INSTANCIA


funcionamiento con NULO. Ya que los valores nulos son frecuentes en muchas bases de datos, se
requiere un entendimiento cuidadoso de todas estas funciones, en particular NVL y NVL2.
La funcin DECODIFICAR y la expresin de INSTANCIA son a veces percibidas como complejas y
difciles de entender. Ellos son, sin embargo, dos de las funciones ms simples y ms tiles garantizadas
para ser examinados. Preste la atencin al sentido posicional de los parmetros usando la funcin
DECODIFICAR. La expresin de INSTANCIA simple y buscada se diferencia de las funciones
habladas antes. Esto es debido al bloque de CASE.END, que encierra a uno o varios pares WHEN.OELR y
opcionalmente un MS select. Prctica con esta expresin y usted aprender rpidamente su estructura
legible y estandarizada.
Prcticamente todos los terceros y cuartos lenguajejes de programacin de generacin ponen
en prctica una select de instancia. Como la funcin DECODIFICAR, la expresin de
INSTANCIA facilita "si entonces ms" lgica condicional. Hay dos variantes de la
expresin de INSTANCIA. La expresin de INSTANCIA simple pone el artculo de
bsqueda condicional en una lista una vez, y la igualdad con el artculo de bsqueda es
probada por cada expresin de comparacin. La expresin de INSTANCIA buscada pone una
condicin separada en una lista para cada expresin de comparacin.
258
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



La expresin de INSTANCIA toma al menos tres parmetros obligatorios, pero puede tomar
muchos ms. Su sintaxis depende de si un simple o una expresin de INSTANCIA
buscada son usados. La sintaxis para la expresin de INSTANCIA simple es como sigue:
INSTANCIA search_expr
CUANDO comparison_expr1 ENTONCES iftrue1 [CUANDO comparison_expr2
ENTONCES iftrue2 .
CUANDO comparison_exprN ENTONCES iftrueN
MS iffalse] FINAL
La expresin de INSTANCIA simple es encerrada dentro de un bloque de CASE.END
y
consiste en al menos una select WHEN.ELN. En su forma ms simple, con una select
WHEN.ELN, el search_expr es comparado con el comparison_expr1. Si ellos son iguales,
entonces el resultado iftrue1 es devuelto. Si no, un valor nulo es devuelto a menos que MS
EL COMPONENTE sea definido, en cuyo instancia, la falta iffalse valor es devuelta.
Cuando ms de una select WHEN.ELN existe en la expresin de INSTANCIA, buscando una
expresin de comparacin correspondiente sigue hasta que un partido sea encontrado.
La bsqueda, la comparacin, y los parmetros de resultado pueden ser valores de
columna, expresiones, o literales, pero deben ser todos del mismo tipo de datos. Considere
la pregunta siguiente:
escogido
instancia substr (1234,1,3)
cuando '134' entonces '1234 es un partido' cuando '1235' entonces '1235
es un partido' cuando concat ('1', '23') entonces concat ('1', '23')
||' no es un partido' ms 'ningn partido'
final de dual;
La expresin de bsqueda sacada del SUBSTR (1234,1,3) es el carcter
cuerda 123. El primer CUANDO... ENTONCES La select compara la cuerda 134 con
123. Ya que ellos no son iguales, la expresin de resultado no es evaluada. La segunda
select WHEN.ELN compara la cuerda 1235 con 123 y otra vez, ellos no son iguales. La tercera
select WHEN.ELN compara los resultados sacados del CONCAT ('1', '23') expresin, que es
123, a la expresin de bsqueda. Ya que ellos son idnticos, la tercera expresin de
resultados '123 es un partido', es devuelto.
El LAST_NAME y las columnas HIRE_DATE para EMPLOYEES con valores
DEPARTMENT_ID de 10 o 60 son recuperados junto con dos expresiones numricas y
una expresin de INSTANCIA, como mostrado en la Figura 5-11.
Suliste que SYSDATE sea 01-JAN-2008. La expresin numrica aliased como AOS
devuelve un valor truncado obtenido dividiendo los meses de servicio por 12.
Aplique Expresiones Condicionales en una Select SENTENCIA
259



LA FIGURA 5-11 La expresin de INSTANCIA


























Cinco categoras de la comandoacin de lealtad basada durante aos del servicio son
definidas truncando el cociente obtenido dividiendo los meses del servicio por 60. Esto
forma la expresin de bsqueda en la select de INSTANCIA. Ninguna de las filas en el
dataset empareja la expresin de comparacin en la primera select WHEN.ELN, pero ya que
la Figura 5-11 muestra, cinco filas encontraron las select WHEN.ELN restantes y una fila es
agarrada por el MS select.
La sintaxis para la expresin de INSTANCIA buscada es como sigue:
INSTANCIA
CUANDO condition1 ENTONCES iftrue1 [CUANDO condition2 ENTONCES iftrue2 .
CUANDO conditionN ENTONCES iftrueN
MS iffalse] FINAL
260
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



La expresin de INSTANCIA buscada es encerrada dentro de un bloque de CASE.END y
consiste en al menos una select WHEN.ELN. En su forma ms simple con una select
WHEN.ELN, el condition1 es evaluado; si es verdad, entonces el resultado iftrue1 es devuelto. Si
no, un valor nulo es devuelto a menos que MS EL COMPONENTE sea definido, en
cuyo instancia la falta iffalse valor es devuelta. Cuando ms de una select WHEN.ELN
existe en la expresin de INSTANCIA, buscando una expresin de comparacin
correspondiente sigue hasta que uno sea encontrado. La pregunta para recuperar el SET
idntico de resultados a los obtenidos en la Figura 5-11, usando una expresin de
INSTANCIA buscada es puesta en una lista despus:
seleccione last_name, hire_date, trunc (months_between (sysdate, hire_date)/12)
aos,
el trunc (months_between (sysdate, hire_date)/60) "Aos dividi el instancia
cuando trunc (months_between (sysdate, hire_date)/60) <1 entonces cuando trunc
(months_between (sysdate, hire_date)/60) <2 entonces cuando trunc (months_between
(sysdate, hire_date)/60) <3 entonces cuando trunc (months_between (sysdate,
hire_date)/60) <4 entonces ms 'Mobiliario'
termine la Lealtad de EMPLOYEES donde department_id en (60,10);
por 5",

'Interne' a 'Junior' 'Intermedio' 'Senior'


EJERZA 5-3 Utilizacin la Funcin DECODIFICAR
Se solicita que usted pregunte la comando de LOCATIONS para filas con el valor EE.UU
en el
Columna de COUNTRY_ID. Una expresin aliased como LOCATION_INFO se requiere
evaluar los valores de columna STATE_PROVINCE y devuelve la informacin diferente
segn la comando siguiente. Clasifique salida basado en la expresin
LOCATION_INFO.

Si STATE_PROVINCE es Washington Texas California Nueva Jersey

El valor volvi es La cuerda 'Oficina central' La cuerda 'Pozos de petrleo' El valor de columna de CIUDAD El
valor de columna STREET_ADDRESS

1. Comience al Developer SQL y conecte al esquema de HORA. 2. La expresin
LOCATION_ID puede ser calculada de varios modos diferentes.
Esto incluye la utilizacin de una expresin de INSTANCIA o una funcin
DECODIFICAR. La solucin debajo de usos DECODIFICA.
Aplique Expresiones Condicionales en una Select SENTENCIA
261



3. La clusula SENTENCIA es
ESCOGIDO DECODIFICAN (STATE_PROVINCE, 'Washington', 'los Cuarteles generales, 'Texas',
los Pozos de petrleo, 'California', CIUDAD, 'Nueva Jersey', STREET_ADDRESS) el Aviso de
LOCATION_INFO la mezcla de literales de carcter y columnas especificadas como parmetros a la
funcin DECODIFICAR.
4. El DE la clusula es
DE EMPLOYEES 5. El DONDE clusula es
DONDE COUNTRY_ID ='US' 6. El PEDIDO POR clusula es
PEDIDO POR LOCATION_INFO 7. El resultado de ejecutar esta select es mostrado en la ilustracin
siguiente:
262
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



RESUMEN DE CERTIFICACIN
Este captulo aade las funciones de fila solas introducidas antes. Los conceptos
del tipo de datos implcito y explcito conversin son explicados junto con los riesgos de
fiabilidad asociados con conversiones implcitas.
La fecha al carcter y el nmero a conversiones de carcter son descritos usando la
funcin de TO_CHAR. Una variedad de modelos de formato o mscaras est disponible.
La funcin de TO_NUMBER realiza el carcter para numerar conversiones, mientras
la funcin de TO_DATE realiza el carcter para fechar conversiones de tipo de datos.
Las funciones anidadas y su evaluacin son una de las lecciones ms valiosas en este
captulo. El entendimiento de este concepto fundamental es crucial. Las funciones
generales NVL, NVL2, NULLIF, y SE FUNDEN son diseadas para simplificar el
funcionamiento con valores nulos y proporcionar la funcionalidad lgica condicional
bsica.
DECODIFIQUE es una funcin especfica para el Oracle que apoya la lgica "si
entonces ms" en el contexto de una select SQL junto con la expresin de INSTANCIA
ANSI-dcil. Las dos variantes son el INSTANCIA simple y expresiones de INSTANCIA
buscadas. Estas funciones condicionales son francas y muy tiles.
La conversin, las funciones generales, y condicionales aaden considerablemente al
conocimiento foundational de SQL que usted adquiri de captulos anteriores y le
sostendr en el lugar bueno mientras que usted progresa con su aprendizaje.
Taladradora de dos minutos
263




TALADRADORA DE DOS MINUTOS

Describa Diversos tipos de Funciones de Conversin Disponibles en SQL
Cuando los valores no emparejan los parmetros definidos de funciones, Oracle
tentativas de convertirlos en los tipos de datos requeridos. Esto es conocido como la
conversin implcita.
conversin Explcita ocurre cuando una funcin como TO_CHAR es invocada a
cambie el tipo de datos de un valor.
La funcin de TO_CHAR realiza la fecha al carcter y el nmero al carcter
conversiones de tipo de datos.
artculos de Carcter son explcitamente transformados en valores de fecha usando el
TO_DATE
funcin de conversin.
artculos de Carcter son cambiados en valores de nmero usando el TO_NUMBER
funcin de conversin.

Use el TO_CHAR, TO_NUMBER, y Funciones de Conversin TO_DATE
La funcin de TO_CHAR devuelve un artculo de tipo VARCHAR2. los modelos de
Formato o mscaras prescriben modelos que las cadenas de caracteres deben emparejar
facilitar conversin exacta y consecuente en artculos de fecha o nmero.
Cuando la funcin de TO_CHAR realiza el nmero a conversiones de carcter,
la mscara de formato puede especificar el dinero, la anchura numrica, la posicin del
operador decimal, miles de separador, y muchos otros cdigos de formateo.
Las mscaras de formato disponibles cuando TO_CHAR es usado para convertir el carcter
los artculos hasta ahora incluyen el da, la semana, el mes, el cuarto, ao, y siglo. mscaras
de Formato siempre debe ser especificado encerrado en citas solas. realizando la fecha a la
conversin de carcter, la mscara de formato especifica que
los elementos de fecha son extrados y si el elemento debera ser descrito por un nombre largo o
abreviado.
trminos de Carcter, como nombres de da y mes, extrados de fechas con el
La funcin de TO_CHAR es automticamente rellenada de espacios que pueden ser
recortados prefijando la mscara de formato con el del modificador.
264
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



La funcin de TO_DATE tiene un modificador fx que especifica un partido exacto para
la cadena de caracteres para ser convertida y la fecha formatea la mscara.


Aplique Expresiones Condicionales en una Select SENTENCIA
funciones que Anidan usan salida de una funcin como el ingreso al otro. La
funcin de NVL devuelve el artculo original sin alterar o una alternativa
el artculo si el trmino inicial es nulo.
La funcin de NVL2 devuelve un nuevo si - artculo nulo si el artculo original es
nulo o un
alternativa si no el artculo nulo si el trmino original no es nulo.
La funcin de NULLIF prueba dos trminos de la igualdad. Si ellos son iguales, la
funcin
vueltas nulas, ms esto devuelve el primer de los dos trminos probados.
La funcin FUNDIR devuelve el primer valor no nulo de su parmetro
lista. Si todos sus parmetros son nulos, entonces un valor nulo es devuelto.
La funcin DECODIFICAR pone en prctica "si entonces ms" lgica
condicional por
las pruebas de dos trminos para igualdad y vuelta del tercer trmino si ellos son
iguales o, opcionalmente, algn otro trmino si ellos no son.
hay dos variantes de la expresin de INSTANCIA usada para facilitar "si entonces
ms"
lgica condicional: el INSTANCIA simple y expresiones de INSTANCIA
buscadas.




M PRUEBA
M Prueba
265
Las preguntas siguientes medirn su entendimiento del material presentado en este captulo.
Lea todas las opciones con cuidado porque puede haber ms de una respuesta correcta. Elija todo el
correcto responde de cada pregunta.

Describa Diversos tipos de Funciones de Conversin Disponibles en SQL
1. Qu tipo de conversin es realizada por la select siguiente?
LONGITUD SENTENCIA (3.14285) DE DUAL; (Elija la mejor respuesta.) A. Conversin
explcita B. Conversin implcita C. Conversin de funcin de TO_NUMBER D. Ninguno de
los susodichos
2. Elija cualquier select incorrecta en cuanto a funciones de conversin. (Elija todo que se aplican.)
A. TO_CHAR puede convertir artculos de fecha a artculos de carcter. B. TO_DATE puede
convertir artculos de carcter para fechar artculos. C. TO_CHAR puede convertir nmeros a
artculos de carcter. D. TO_DATE puede convertir artculos de fecha a artculos de carcter.

Use el TO_CHAR, TO_NUMBER, y Funciones de Conversin TO_DATE
3. Qu valor es devuelto despus de ejecutar la select siguiente?
SELECCIONE TO_NUMBER (1234.49, '999999.9') DE DUAL; (Elija la mejor respuesta.) A.
1234.49 B. 001234.5 C. 1234.5 D. Ninguno de los susodichos
4. Qu valor es devuelto despus de ejecutar la select siguiente?
SELECCIONE TO_CHAR (1234.49, '999999.9') DE DUAL; (Elija la mejor respuesta.) A.
1234.49 B. 001234.5 C. 1234.5 D. Ninguno de los susodichos
266
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



5. Si SYSDATE devuelve 12-JUL-2009, qu es devuelto por la select siguiente?
SELECCIONE TO_CHAR (SYSDATE, 'fmMONTH, AO') DE DUAL; (Elija la mejor respuesta.)
A. JULIO DE 2009 B. JULIO, DOS MIL NUEVE C. EL 09 DE JULIO D. Ninguno de los
susodichos
6. Si SYSDATE devuelve 12-JUL-2009, qu es devuelto por la select siguiente?
SELECCIONE TO_CHAR (SYSDATE, 'MES fmDDth') DE DUAL; (Elija la mejor respuesta.) A.
El 12 de julio B. El 12 de julio C. EL DOCE DE JULIO D. Ninguno de los susodichos

Aplique Expresiones Condicionales en una Select SENTENCIA
7. Si SYSDATE devuelve 12-JUL-2009, qu es devuelto por la select siguiente?
SELECCIONE TO_CHAR (TO_DATE (TO_CHAR (SYSDATE, 'DD') ', DD'), 'AO') DE DUAL;
(Elija la mejor respuesta.) A. 2009 B. DOS MIL NUEVE C. 12-JUL-2009 D. Ninguno de los
susodichos
8. Qu valor es devuelto despus de ejecutar la select siguiente?
SELECCIONE NVL2 (NULLIF ('CODA', 'SID'), 'PERRO DE AGUAS', 'TERRIER') DE DUAL;
(Elija la mejor respuesta.) A. PERRO DE AGUAS B. TERRIER C. D nulo. Ninguno de los
susodichos




9. Qu valor es devuelto despus de ejecutar la select siguiente?
SELECCIONE NVL (SUBSTR ('de la maana yo NULO', 10), 'S yo de la maana') DE DUAL;
(Elija la mejor respuesta.) A. NINGN B. C nulo. S yo de la maana D. Ninguno de los susodichos
Pregunta de laboratorio
267
10. Si SYSDATE devuelve 12-JUL-2009, qu es devuelto por la select siguiente?
ESCOGIDO DECODIFICAN (TO_CHAR (SYSDATE, 'MM') ', 02', 'IMPUESTO DEBIDO',
'PARTIDO') DE DUAL; (Elija la mejor respuesta.) A. B debido fiscal. PARTIDO C. 02 D.
Ninguno de los susodichos

PREGUNTA DE LABORATORIO
Usando al Developer de SQL o SQL*Plus, conecte al esquema OE y complete las tareas siguientes.
Como la parte de una nueva iniciativa de mercadotecnia, le piden preparar una lista de cumpleaos de
cliente que ocurren entre hace dos das y siete das de ahora. La lista debera recuperar filas de la comando de
CLIENTES que incluyen el CUST_FIRST_NAME, CUST_LAST_NAME, CUST_EMAIL, y DATE_
OF_BIRTH columnas en comando ascendente basado en los componentes de mes y da del valor de
NACIMIENTO DATE_OF_. Se requiere que una expresin adicional aliased como el CUMPLEAOS
devuelva a un sabio mes-descriptivo basado en la comando siguiente. Hay varios enfoques a la solucin de
esta pregunta. Su enfoque puede diferenciarse de la solucin descrita aqu.


CUMPLEAOS Hace dos das Hace un da Hoy Maana Dos das en el futuro Dentro de siete das de hoy


CADENA DE CARACTERES Anteayer Ayer Hoy Maana Pasado maana ms
Tarde esta semana
268
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



M PRUEBAN RESPUESTAS
Describa Diversos tipos de Funciones de Conversin Disponibles en
SQL
1. B. Dan el nmero 3.14285 como un parmetro a la funcin de LONGITUD. Hay unos datos
teclee la falta de armona, pero el Oracle implcitamente converte el parmetro a la cadena de
caracteres '3.14285', permitiendo la funcin funcionar correctamente.
Los A, C, y D son incorrectos. La conversin explcita ocurre cuando una funcin como
TO_CHAR es
ejecutado. El C es la longitud correcta de la cuerda '3.14285', pero no preguntan para esto en la
pregunta.
2. D. Dates slo son convertidos en cadenas de caracteres usando TO_CHAR y no el TO_DATE
funcin.
Los A, B, y C son select correctas.

Use el TO_CHAR, TO_NUMBER, y Funciones de Conversin TO_DATE
3. D. "ORA-1722: el nmero invlido" error es devuelto porque la select es
la tentativa de convertir un nmero usando una mscara de formato incompatible. Si la expresin
fuera TO_NUMBER (1234.49, '999999.99'), el nmero 1234.49 sera devuelto. los A, B, y D son
incorrectos.
4. C. Para el nmero 1234.49 para emparejar el carcter formatean la mscara con un lugar decimal,

doblan primero sobre el nmero a 1234.5 antes de que TO_CHAR lo converta en la cuerda '1234.5'.
los A, B, y D son incorrectos. Poder no ser devuelto porque la mscara de formato slo permite
un
carcter despus de la coma decimal. El B sera devuelto si la mscara de formato fuera '009999.9'.
5. B. Los componentes de AO y MES de la mscara de formato separada por una coma y un
el espacio indica que TO_CHAR debe extraer los valores de ao y mes explicados detalladamente
en la mayscula separada por una coma y un espacio. El del modificador borra impresos
suplementarios de los componentes explicados detalladamente. los A, C, y D son incorrectos. Si la
mscara de formato fuera 'MON, YYYY' o 'MON-YY', A y C,
respectivamente, sera devuelto.
6. A. El componente DD devuelve el da del mes en la mayscula. Ya que es un nmero, esto
no importa, a menos que la mscara 'th' sea aplicada, en cuyo instancia aquel componente es
especificado en la mayscula. El MES devuelve el mes explicado detalladamente en la mayscula.
los B, C, y D son incorrectos. El B sera devuelto si la mscara de formato fuera 'fmddth el Mes',

y C sera devuelto si la mscara de formato fuera 'fmDDspth el MES'.




Aplique Expresiones Condicionales en una Select SENTENCIA
Respuesta de laboratorio
269
7. B. El ntimo anid la funcin es TO_CHAR (SYSDATE, 'DD'), que extrae el
componente de da de SYSDATE y vueltas el carcter 12. La siguiente funcin ejecutada es
TO_DATE ('12', 'DD') donde el carcter 12 es dado el papel del componente de da. Cuando una
fecha tan incompleta es proporcionada, valores de sustitutos de Oracle de la funcin de SYSDATE;
ya que SYSDATE es 12-JUL-2009, esto es la fecha usada. La funcin ms extrema ejecutada en
TO_CHAR ('12-JUL-2009', 'AO') devuelve el ao explicado detalladamente como DOS MIL
NUEVE.
Los A, C, y D son incorrectos.
8. A. La funcin de NULLIF compara sus dos parmetros y, ya que ellos son diferentes, el
el primer parmetro es devuelto. El NVL2 ('CODA', 'PERRO DE AGUAS', 'TERRIER') la
llamada a la funcin devuelve el PERRO DE AGUAS ya que su primer parmetro no es nulo.
Los B, C, y D son incorrectos.
9. C. El carcter literal 'de la maana NULO' soy nueve carcteres mucho tiempo. Por lo tanto,
tratando de obtener
una subcuerda que comienza en el dcimo carcter devuelve un nulo. La funcin externa entonces
se hace NVL (NULO, 'S yo de la maana'), causando la cuerda 'S yo de la maana' ser devuelta.
Los A, B, y D son incorrectos.
10. B. La funcin ntima TO_CHAR (SYSDATE, 'MM') causa la cadena de caracteres
'07' devuelto. La funcin externa es DECODIFICAN ('07', '02', 'IMPUESTO DEBIDO',
'PARTIDO'). Desde '07' no es igual a '02', el 'PARTIDO' ms componente es devuelto.
Los A, C, y D son incorrectos. Slo ser devuelto si el componente de mes extrajera
de SYSDATE era '02'.

RESPUESTA DE LABORATORIO
Usando al Developer de SQL o SQL*Plus, conecte al esquema OE y complete las tareas siguientes.

1. Comience al Developer SQL y conecte al esquema OE. 2. El dataset debe ser restringido a filas de
la comando de CLIENTES donde DATE_OF_BIRTH
los valores primero tienen el mismo mes que el mes corriente, y en segundo lugar, el componente
de da del DATE_OF_BIRTH est entre hace dos das y siete das de ahora. Hay por lo tanto dos
condiciones que arreglan el DONDE clusula.
270
Captulo 5:
Utilizacin de Funciones de Conversin y Expresiones Condicionales



3. La primera condicin del DONDE la clusula es
TO_CHAR (DATE_OF_BIRTH, 'MON') =TO_CHAR (SYSDATE, 'MON')
4. La segunda condicin es

TO_NUMBER (TO_CHAR (DATE_OF_BIRTH, 'DD')) - TO_NUMBER (TO_CHAR (SYSDATE, 'DD')) ENTRE-2 Y 7
5. La expresin de CUMPLEAOS puede ser calculada de varios modos. Basado en el precedente
DONDE clusula, usted es asegurado que el dataset es limitado con el SET correcto de filas. La
clusula SENTENCIA tiene que recuperar y manipular los archivos para la visualizacin
apropiada. La expresin de INSTANCIA proporciona la funcionalidad a la lgica condicional y
conviene bien a esta situacin.
6. El instancia probado est basado en el componente de da del DATE_OF_BIRTH menos el da
el componente volvi por la funcin de SYSDATE. Por ejemplo, si la diferencia es-2, entonces la
cuerda 'Anteayer' es devuelta. Las condiciones de INSTANCIA diferentes son probadas es una
manera similar. MS EL COMPONENTE agarra cualquier fila que no empareja las condiciones
de INSTANCIA y devuelve la cuerda 'Ms tarde en la semana'.
7. La clusula SENTENCIA es por lo tanto
SELECCIONE CUST_FIRST_NAME, CUST_LAST_NAME, CUST_EMAIL, DATE_OF_BIRTH,
INSTANCIA TO_NUMBER (TO_CHAR (DATE_OF_BIRTH, 'DD')) - TO_NUMBER (TO_CHAR (SYSDATE,
'DD'))
CUANDO-2 ENTONCES 'Anteayer' CUANDO-1 ENTONCES 'Ayer' CUANDO 0 ENTONCES 'Hoy' CUANDO
1 ENTONCES 'Maana' CUANDO 2 ENTONCES 'Pasado maana' MS 'Ms tarde esta semana'
CUMPLEAOS DE FINAL
8. El DE la clusula es
DE CLIENTES
9. El PEDIDO POR clusula es
PEDIDO POR TO_CHAR (DATE_OF_BIRTH, 'MMDD')
Respuesta de laboratorio
271



10. La ejecucin de esta select devuelve el SET de resultados que emparejan este modelo como
mostrado en
la ilustracin siguiente para SYSDATE=08-JAN-2008:
Esta pgina intencionadamente se dej en blanco
6
El obteniendo de Datos
Agregados Usando las
Funciones de Grupo







OBJETIVOS DE
CERTIFICACIN


6.01
Describa las Funciones de Grupo
6.04
Incluya o Excluya Utilizacin de Filas Agrupada



la Clusula que TIENE
6.02
Identifique las Funciones de Available Group

Taladradora de dos minutos
6.03
Datos de grupo Usando el GRUPO POR



Clusula
Q&A
M Prueba














Copyright 2008 por El Clic de McGraw-Hill Companies, Inc aqu para trminos de uso.
274
Captulo 6:
El obteniendo de Datos Agregados Usando las Funciones de Grupo
Las funciones de fila sola, exploradas en los
Captulos 4 y 5, devuelven un valor solo para cada fila en un SET de resultados. El grupo o las
funciones agregadas actan sobre filas mltiples. Ellos son usados para contar el nmero de filas o
encontrar el promedio de valores de columna especficos en un dataset.
Muchas operaciones estadsticas, como el clculo de la desviacin estndar, medianas, y promedios,
dependen de la ejecucin de funciones contra datos agrupados y no filas slo solas.

Las funciones de grupo son examinadas en dos etapas. En primer lugar, hablan de su
objetivo y la sintaxis. En segundo lugar, un anlisis detallado del AVG, SUMA,
MINUTO, MAX, y funciones de CONDE es conducido. El concepto de agrupacin o
segregacin de datos basados en uno o varios que la columna valora es explorado antes de
presentar el GRUPO POR la clusula.
EL DONDE la clusula restringe filas en un dataset antes de la agrupacin, mientras la
clusula que TIENE los restringe despus de la agrupacin. Este captulo concluye con
una discusin de la clusula que TIENE.



OBJETIVO DE CERTIFICACIN 6.01


Describa las Funciones de Grupo
Las funciones de grupo de SQL son definidas y hablan de las variantes diferentes. La
sintaxis
del grupo seleccionado las funciones son explicadas, hablan de sus tipos de datos, y el
efecto de la palabra clave DISTINTA en ellos es explorado. Esta discusin est dividida en
dos reas principales:

la Definicin del grupo funciona Tipos y sintaxis de funciones de grupo

Definicin de Funciones de Grupo
Las funciones de grupo actan sobre datos agregados y devuelven un resultado solo por
grupo.
Estos grupos por lo general consisten en el cero o ms filas de datos. Las funciones de fila
sola son definidas con la frmula: F (x, y, z, .) = resultado, donde x, y, z. son parmetros de
ingreso. La funcin F ejecuta en una fila del conjunto de datos a la vez y devuelve un
resultado para cada fila. Las funciones de grupo pueden ser definidas usando la frmula
siguiente:
F (g1, g2, g3, ., gn) = result1, result2, result2, ., resultn; La funcin de grupo ejecuta una
vez para cada racimo de filas y devuelve un single
resultado por grupo. Estos grupos pueden ser tablas enteras o partes de tablas asociadas
usando un valor comn o atributo. Si todas las filas en tablas son presentadas como un
Describa las Funciones de Grupo
275



el grupo a la funcin de grupo entonces un resultado es devuelto. Una o varias funciones
de grupo pueden aparecer en la lista SENTENCIA como sigue:

SELECCIONE group_function (columna o expresin), . DE la comando [DONDE
.] [la COMANDO BY.]
Considere la comando de EMPLOYEES. Hay 107 filas en esta comando. Los grupos
pueden
sea creado basado en los valores comunes aquella parte de filas. Por ejemplo, las filas que
comparten el mismo valor de DEPARTMENT_ID pueden ser agrupadas juntos. A partir
de entonces, las funciones de grupo son ejecutadas por separado contra cada grupo nico.
Como la Figura 6-1 muestra, hay 12 valores de DEPARTMENT_ID distintos en la
comando de EMPLOYEES incluso un valor nulo. Las filas son distribuidas en 12 grupos
basados en valores de DEPARTMENT_ID comunes. La funcin de CONDE ejecuta 12
veces, una vez para cada grupo. Note que los grupos distintos no contienen el mismo
nmero de filas.

Las funciones de grupo agregan varios valores de filas mltiples en un resultado
solo. Ellos son extensamente usados para relatar objetivos y tambin son
conocidos como funciones sumarias o agregadas. Los datos agregados tiles,
como totales de suma, promedios, y cuentas a menudo forman la base de clculos
estadsticos ms sofisticados. Es til tener un entendimiento bueno de los datos
almacenados en sus tablas de aplicacin para maximizar la calidad de su
obteniendo agregado.

Tipos y Sintaxis de Funciones de Grupo
Una breve descripcin de las funciones de grupo el ms comnmente usadas es
proporcionada despus.
Muchos son examinados detalladamente ms tarde en este captulo.
La funcin de CONDE cuenta el nmero de filas en un grupo. Su sintaxis es como sigue:
CONDE ({* | [DISTINCT|ALL] expr});
Esta sintaxis puede ser deconstructed en las formas siguientes:

1. CONDE (*) 2. CONDE (expr distinto) 3. CONDE (TODO expr) 4. CONDE
(expr)

Cuando el CONDE (*) es invocado, todas las filas en el grupo, incluso aquellos con nulls
o valores duplicados son contadas. Cuando el CONDE (expr distinto) es ejecutado, los
acontecimientos slo nicos de expr son contados para cada grupo. TODA la palabra clave es
la parte de la sintaxis por defecto, entonces CONDE (TODO expr) y CONDE (expr) son
equivalentes. stos cuentan el nmero de acontecimientos no nulos de expr en cada grupo. El
tipo de datos de expr puede ser
276
Captulo 6:
El obteniendo de Datos Agregados Usando las Funciones de Grupo



FIGURA 6-1

Funciones de grupo que actan
sobre 12 grupos



























NMERO, FECHA, TRABAJO POR HORAS, o VARCHAR2. Si expr es un nulo, no es
ignorado a menos que l sea manejado usando una funcin general como NVL, NVL2, o
FUNDIRSE.
La funcin de AVG calcula el valor medio de una columna numrica o expresin en un
grupo. Su sintaxis es como sigue:
AVG ([DISTINCT|ALL] expr); Esta sintaxis puede ser deconstructed en las formas
siguientes:

1. AVG (expr distinto) 2. AVG (TODO expr) 3. AVG (expr)
Describa las Funciones de Grupo
277



Cuando AVG (expr distinto) es invocado, los valores distintos de expr son sumados y divididos en el nmero
de acontecimientos nicos de expr. AVG (TODO expr) y AVG (expr) aaden los valores no nulos de expr para
cada fila y dividen la suma en el nmero de filas no nulas en el grupo. El tipo de datos del parmetro expr es el
NMERO.
La funcin de SUMA devuelve el total agregado de los valores de expresin numricos no nulos en un
grupo. Esto tiene la sintaxis siguiente:
SUMA ([DISTINCT|ALL] expr); Esta sintaxis puede ser deconstructed en las formas siguientes:

1. SUMA (expr distinto) 2. SUMA (TODO expr) 3. SUMA (expr)
LA SUMA (expr distinto) proporciona un total aadiendo que todos los valores nicos volvieron
despus de que el expr es evaluado para cada fila en el grupo. SUMA (expr) y SUMA (TODO expr)
proporcionan un total aadiendo expr para cada fila en el grupo. Los valores nulos no son ignorados. El tipo
de datos de expr es el NMERO.
MAX y las funciones de MINUTO devuelven el valor de expr (ms grande) y mnimo mximo (ms
pequeo) en un grupo. Su sintaxis es como sigue:
MAX ([DISTINCT|ALL] expr); el MINUTO ([DISTINCT|ALL] expr) Esta sintaxis puede ser
deconstructed en las formas siguientes:

1. MAX (expr distinto); MINUTO (expr distinto) 2. MAX (TODO expr); MINUTO (TODO expr) 3.
MAX (expr); MINUTO (expr);
MAX (expr), MAX (TODO expr) y MAX (expr distinto) examina los valores
para expr en un grupo de filas y vuelta el valor ms grande. Los valores nulos no son ignorados. MINUTO
(expr), MINUTO (TODO expr) y MINUTO (expr distinto) examinan los valores de expr en un grupo de
filas y devuelven el valor ms pequeo. El tipo de datos del parmetro expr puede ser NMERO, FECHA,
TRABAJO POR HORAS o VARCHAR2.
STDDEV y las funciones de DESACUERDO son dos de mucho Oracle de funciones de grupo
estadstico provee. El DESACUERDO tiene la sintaxis siguiente:
DESACUERDO ([DISTINCT|ALL] expr); Esta sintaxis puede ser deconstructed en las formas
siguientes:

1. DESACUERDO (expr distinto) 2. DESACUERDO (TODO expr) 3. DESACUERDO (expr)
278
Captulo 6:
El obteniendo de Datos Agregados Usando las Funciones de Grupo



STDDEV tiene la sintaxis siguiente: STDDEV ([DISTINCT|ALL] expr); Esta sintaxis puede ser
deconstructed en las formas siguientes:

1. STDDEV (expr distinto) 2. STDDEV (TODO expr) 3. STDDEV (expr)

El desacuerdo estadstico se refiere a la variabilidad de tanteos en una muestra o el SET de datos.
EL DESACUERDO (expr distinto) devuelve la variabilidad de datos no nulos nicos en
un grupo. DESACUERDO (expr) y DESACUERDO (TODO expr) devuelven la
variabilidad de datos no nulos en el grupo.
STDDEV calcula la desviacin estndar estadstica, que es el nivel de la desviacin del
valor medio en un grupo. Es sacado encontrando la raz cuadrada del desacuerdo. STDDEV
(expr distinto) devuelve la desviacin estndar de datos no nulos nicos en un grupo.
STDDEV (expr) y STDDEV (TODO expr) devuelven la desviacin estndar de datos no
nulos en el grupo. El tipo de datos del parmetro expr es el NMERO.






Hay dos reglas fundamentales de recordar estudiando funciones de grupo. En
primer lugar, ellos siempre actan sobre un grupo solo de filas a la vez. El grupo puede ser uno
de muchos grupos en los cuales un dataset ha sido segmentado o puede ser una comando
entera. La funcin de grupo ejecuta una vez por grupo. En segundo lugar, las filas con nulls que
ocurre en columnas de grupo o expresiones no son ignoradas, a menos que una funcin general
como NVL, NVL2, o SE FUNDA es proporcionado para manejrselos.






Considere el ejemplo siguiente. Si el valor medio para COMMISSION_PCT es recuperado de la
comando de EMPLOYEES, slo los valores no nulos se consideran. La expresin AVG
(COMMISSION_PCT) aade que el 35 P.C. COMMISSION_ no nulo valora y divide el total en 35.
El promedio basado en 107 filas puede ser computado usando la expresin AVG (NVL
(COMMISSION_PCT, 0)).





OBJETIVO DE CERTIFICACIN 6.02
Identifique las Funciones de Available Group
279


Identifique las Funciones de Available Group
Hablaron slo de las variantes diferentes de funciones de grupo y su sintaxis. Esto
la seccin proporciona ejemplos que demuestran la aplicacin de estas funciones. Hablan
de las interacciones de funciones de grupo con valores nulos y la palabra clave
DISTINTA, y el concepto de funciones de grupo que anidan tambin se considera. Las
funciones de grupo disponibles son identificadas y exploradas bajo los ttulos siguientes:

Utilizacin del grupo funciona funciones de grupo que Anidan

Utilizacin de las Funciones de Grupo
La aplicacin prctica de funciones de grupo es demostrada usando AVG, SUMA,
MINUTO,
MAX, y CONDE. Estos el grupo funciona toda la vuelta resultados numricos. Adems,
el MINUTO y las funciones de MAX pueden devolver resultados de fecha y carcter.
Estas cinco funciones actan sobre valores no nulos, pero, a diferencia de los dems, el
CONDE (*) la llamada a la funcin tambin cuenta filas con valores nulos. La palabra
clave DISTINTA es usada para reprimir las filas presentadas a las funciones de grupo.
Los analistas con frecuencia desean saber el valor medio o total agregado de una
columna o una expresin. Esto es simple de conseguir la utilizacin de la mayor parte de
paquetes de hoja de clculo. La utilizacin de las funciones de grupo SQL para el
obteniendo proporciona dos ventajas de usar una hoja de clculo para el anlisis. En
primer lugar, ellos ofrecen una plataforma conveniente para realizar clculos usando datos
vivos de tiempo real. En segundo lugar, ellos tienen el anlisis fcil en cuenta de cada valor
en un dataset o de grupos especficos de valores.

El Conde Function La ejecucin de CONDE en una columna o una expresin
devuelve un valor entero que representa el nmero de filas en el grupo. La funcin de
CONDE tiene la sintaxis siguiente:
CONDE ({* | [DISTINCT|ALL] expr}); hay un parmetro que puede ser cualquiera
*, que representa todas las columnas
incluso valores nulos, o una columna especfica o expresin. Puede ser precedido por el
DISTINTO o TODAS las palabras claves. Considere las preguntas siguientes:

La consulta 1: seleccione a la cuenta (*) de la Consulta 2 de EMPLOYEES:
seleccione a la cuenta (commission_pct) de EMPLOYEES
280
Captulo 6:
El obteniendo de Datos Agregados Usando las Funciones de Grupo



La consulta 3: seleccione a la cuenta (commission_pct distinto) de la Consulta 4 de
EMPLOYEES: seleccione a la cuenta (hire_date), cuenta (manager_id) de EMPLOYEES
La consulta 1 cuenta las filas en la comando de EMPLOYEES y devuelve el nmero entero 107.
La consulta 2 cuenta las filas con valores de COMMISSION_PCT no nulos y vuelve 35.
La consulta 3 considera las 35 filas no nulas, determina el nmero de valores nicos, y
vuelve 7. La consulta 4 demuestra dos aspectos. En primer lugar, funciones de grupo
mltiples pueden ser usadas en la misma lista SENTENCIA y en segundo lugar, la
funcin de CONDE es usada tanto en una columna de FECHA como en una columna de
NMERO. Los nmeros enteros 107 y 106 son devueltos ya que hay 107 valores de
HIRE_DATE no nulos y 106 valores de MANAGER_ID no nulos en el grupo.
Tres expresiones adyacentes usando la funcin de CONDE son mostradas en la Figura
6-2. Esta pregunta ilustra que hay 107 archivos de empleado en la comando de
EMPLOYEES. Adelante, estos 107 EMPLOYEES son asignados a 12
DEPARTMENTS, incluso DEPARTMENTS nulos, y trabajo en 19 JOBS nicos.

La Funcin de SUMA El total agregado de una columna o una expresin es
computada con la funcin de SUMA. Su sintaxis es como sigue:
SUMA ([DISTINCT|ALL] expr); Un parmetro numrico, opcionalmente precedido
por el DISTINTO o TODOS
palabras claves, es proporcionado a la funcin de SUMA, que devuelve un valor
numrico. Considere las preguntas siguientes:
Pregunta
1:
escogido
suma (2) de EMPLOYEES
Pregunta
2:
escogido
suma (sueldo) de EMPLOYEES
Pregunta
3:
escogido
suma (sueldo distinto) de EMPLOYEES
Pregunta
4:
escogido
suma (commission_pct) de EMPLOYEES



FIGURA 6-2

La funcin de
CONDE
Identifique las Funciones de Available Group
281



Hay 107 filas en la comando de EMPLOYEES. La consulta 1 aade el nmero 2 a
travs de 107 filas y vuelve 214. La consulta 2 toma el valor de columna de SUELDO para
cada fila en el grupo, que en este instancia es la comando entera, y devuelve la cantidad
de sueldo total de 691400. La consulta 3 devuelve un total de 397900 ya que pagan a
muchos EMPLOYEES el mismo sueldo y la palabra clave DISTINTA slo aade valores
nicos en la columna al total. La consulta 4 vuelve 7.8 despus de aadir los valores no
nulos.
La figura 6-3 muestra dos preguntas. El primer calcula el nmero de das entre la fecha
de sistema actual y el valor en la columna HIRE_DATE. La aritmtica de fecha es
realizada para cada fila. El nmero volvi es aadido usando una llamada a la funcin de
SUMA. El resultado est dividido en 365.25 para dar el nmero total de aos trabajados por
todos los EMPLOYEES corrientes. La segunda pregunta muestra que la funcin de SUMA
devuelve "ORA-00932: datatypes inconsecuente" error si es provedo de un argumento no
numrico.

La Funcin de AVG El valor medio de una columna o expresin divide la suma en el
nmero de filas no nulas en el grupo. La funcin de AVG tiene la sintaxis siguiente:
AVG ([DISTINCT|ALL] expr); Un parmetro numrico, precedido por el DISTINTO
o TODAS las palabras claves, es
a condicin de que a la funcin de AVG, que devuelve un valor numrico. Considere las
preguntas siguientes:
Pregunta
1:
escogido
avg (2) de EMPLOYEES
Pregunta
2:
escogido
avg (sueldo) de EMPLOYEES
Pregunta
3:
escogido
avg (sueldo distinto) de EMPLOYEES
Pregunta
4:
escogido
avg (commission_pct) de EMPLOYEES


FIGURA 6-3

La funcin de SUMA
282
Captulo 6:
El obteniendo de Datos Agregados Usando las Funciones de Grupo



Hay 107 filas en la comando de EMPLOYEES. La consulta 1 aade el nmero 2 a travs
107 filas y dividen el total en el nmero de filas para devolver el nmero 2. Los literales
numricos presentados a la funcin de AVG son devueltos sin alterar. La consulta 2
aade el valor de SUELDO para cada fila para obtener la cantidad de sueldo total de
691400. Esto est dividido en las 107 filas con valores de SUELDO no nulos para
devolver los 6461.68224 medios. Usted puede esperar que la consulta 3 devuelva un
resultado ms pequeo que la consulta 2, pero esto no hace. Hay 57 valores de sueldo
nicos, que cuando aadido, cede un total de 397900. La divisin 397900 por 57 vueltas
6980.70175 como el promedio de los valores de sueldo distintos. La consulta 4 puede
producir resultados inesperados si no correctamente entendido. La adicin de los valores
no nulos, incluso duplicados, produce un total de 7.8. Hay 35 archivos de empleado con
valores de COMMISSION_PCT no nulos. La divisin 7.8 por 35 producciones
COMMISSION_PCT medio de 0.222857143.
La figura 6-4 muestra dos preguntas. Las primeras listas el LAST_NAME y columnas
JOB_ID con una expresin que calcula el nmero total de aos trabajaron por
programadores en la organizacin. Los segundos usos los AVG funcionan para calcular el
nmero medio de aos durante los cuales los programadores corrientes han sido
EMPLOYEES.

MAX y las Funciones de MINUTO MAX y funciones de MINUTO actan
sobre NMERO, FECHA, TRABAJO POR HORAS, y tipos de datos VARCHAR2.
Ellos devuelven un valor del mismo tipo de datos que sus argumentos de ingreso, que son
los artculos ms grandes o ms pequeos en el grupo. Cuando aplicado PARA fechar
artculos, MAX devuelve la ltima fecha y el MINUTO devuelve el ms temprano.



FIGURA 6-4

La funcin de AVG
Identifique las Funciones de Available Group
283



Las cadenas de caracteres son convertidas a representaciones numricas de sus
carcteres constituyentes basados en las configuraciones NLS en la base de datos.
Cuando la funcin de MINUTO es aplicada a un grupo de cadenas de caracteres, la
palabra que parece primera por comando alfabtico es devuelta, mientras MAX devuelve
la palabra que parecera ltima. MAX y las funciones de MINUTO tienen la sintaxis
siguiente:
MAX ([DISTINCT|ALL] expr); MINUTO ([DISTINCT|ALL] expr) Ellos toman un
parmetro precedido por el DISTINTO o TODAS las palabras claves. Considerar
las preguntas siguientes:

La consulta 1: minuto escogido (commission_pct), mximo
(commission_pct) de la Consulta 2 de EMPLOYEES: minuto escogido
(start_date), mximo (end_date) de la Consulta 3 job_history: minuto
escogido (job_id), mximo (job_id) de EMPLOYEES
La consulta 1 devuelve los valores numricos 0.1 y 0.4 para mnimo y mximo
COMMISSION_PCT valora en la comando de EMPLOYEES. Note que los valores
nulos para COMMISSION_PCT no son ignorados. La consulta 2 evala una columna de
FECHA e indica que START_DATE ms temprano en la comando JOB_HISTORY es
17-SEP-1987 y ltimo END_DATE es 31-DEC-1999. La consulta 3 devuelve
AC_ACCOUNT y ST_MAN como los valores de JOB_ID que aparecen en general por
comando alfabtico en la comando de EMPLOYEES.
La primera pregunta mostrada en la Figura 6-5 usa a MAX y funciones de MINUTO
para obtener la informacin sobre EMPLOYEES con valores JOB_ID de SA_REP. Los
resultados indican que los representantes de ventas que trabajan para las duraciones ms
cortas y ms largas eran


FIGURA 6-5

El MINUTO y funciones de
MAX
284
Captulo 6:
El obteniendo de Datos Agregados Usando las Funciones de Grupo



alquilado en 21-APR-2000 y 30-JAN-1996, respectivamente. Adems, los
representantes de ventas que ganan los sueldos ms grandes y ms pequeos ganan
11500 y 6100, respectivamente. La segunda pregunta trae los valores de LAST_NAME
para los representantes de ventas a quien HIRE_DATE mnimo y mximo y los valores
de SUELDO se aplican.


EJERZA 6-1 Utilizacin de las Funciones de Grupo
La comando de COUNTRIES almacena una lista de valores de COUNTRY_NAME. Le
requieren
calcular la longitud media de todos los nombres del pas. Deben doblar sobre cualquier
componente fraccionario al nmero entero ms cercano.

1. Comience SQL*Plus y conecte al esquema de HORA. 2. La longitud del valor de
nombre del pas para cada fila es calculada usando el
Funcin de LONGITUD. La longitud media puede ser determinada usando la
funcin de AVG. Pueden doblar sobre ello al nmero entero ms cercano usando
la funcin REDONDA.
3. La clusula SENTENCIA usando el alias
AVERAGE_COUNTRY_NAME_LENGTH es
SELECCIONE POR AH (AVG (LONGITUD (COUNTRY_NAME)))
AVERAGE_COUNTRY_NAME_LENGTH
4. El DE la clusula es
DE COUNTRIES
5. La ejecucin de esta select devuelve una fila sola que representa el promedio
longitud de todos los nombres del pas en la comando de COUNTRIES, como
mostrado en la ilustracin siguiente:
Identifique las Funciones de Available Group




GUIN & SOLUCIN
285

Le gustara recuperar la fecha ms temprana de una columna que almacena la informacin de FECHA. Puede un
grupo funcionar ser utilizado para recuperar este valor?
S. La funcin de MINUTO acta sobre numrico, fecha, y datos de carcter. Cuando la funcin de MINUTO es
ejecutada contra una columna de FECHA, el valor de fecha ms temprano es devuelto.
Las estadsticas sumarias son requeridas por altos directivos. Esto incluye detalles como el nmero de
EMPLOYEES, coste de sueldo de personal total, sueldo ms bajo, y los valores de sueldo ms altos. Puede tal
informe ser dibujado usando una pregunta?
S. No hay ninguna restriccin al nmero de funciones de grupo puestas en una lista en la clusula SENTENCIA. El
informe solicitado puede ser dibujado usando la pregunta siguiente: SELECCIONE AL CONDE (*)
Num_Employees, SUMA (SUELDO) Tot_Salary_Cost, MINUTO (SUELDO) el Sueldo Ms bajo, MAX (SUELDO)
Sueldo de Mximo DE EMPLOYEES;
Le piden poner el nmero en una lista de JOBS nicos realizados por EMPLOYEES en la organizacin. Contar los
archivos de JOB_ID le dar todos los JOBS. Es posible contar los JOBS nicos?
S. La palabra clave DISTINTA puede ser usada con las funciones agregadas. Para contar valores de JOB_ID nicos
en la comando de EMPLOYEES, usted puede publicar la pregunta: SELECCIONE AL CONDE (JOB_ID distinto)
DE EMPLOYEES;


Funciones de Nested Group
Recuerde que las funciones de fila sola pueden ser anidadas o empotradas a cualquier
nivel de la profundidad.
Las funciones de grupo slo pueden ser anidadas dos niveles profundamente. Tres funciones
de grupo de utilizacin de formatos son mostradas aqu:
El G1 (group_item) = resultado G1 (G2 (group_item) = resultado G1 (G2 (G3
(group_item))) no es permitido. Las funciones de grupo son representadas por la carta
G seguida de un nmero. El primer
la forma simple no contiene ningn anid funciones. Los ejemplos incluyen la SUMA
(group_item) o AVG (group_item) funciones que devuelven un resultado solo por grupo.
La segunda forma apoya dos anid funciones de grupo, como la SUMA (AVG
(group_item)). En este instancia, un GRUPO POR la clusula es obligatorio ya que el
valor medio del group_item por grupo es calculado antes de ser agregado por la funcin de
SUMA.
La tercera forma es rechazada por el Oracle. Considere una expresin que anida tres
funciones de grupo. Si la funcin de MAX es aplicada al ejemplo anterior, la expresin
MAX (SUMA (AVG (group_item))) es formado. Las dos funciones de grupo interiores
devuelven un valor solo que representa la suma de un SET de valores medios. Esta
expresin se hace MAX (valor solo). Una funcin de grupo no puede ser aplicada a un
valor solo.
286
Captulo 6:
El obteniendo de Datos Agregados Usando las Funciones de Grupo



La figura 6-6 demuestra dos preguntas. Ambos restringen las filas devueltas a aquellos con
Valores de DEPARTMENT_ID de nulo, 40, y 80. stos son divididos entonces por sus
valores de DEPARTMENT_ID en tres grupos. La primera pregunta calcula la suma de
los valores de COMMISSION_PCT para cada grupo y devuelve los valores 0.15, nulo,
y 7.65. La consulta 2 contiene las funciones de grupo anidadas, que pueden ser
evaluadas como sigue: AVG (SUMA (COMMISSION_PCT)) = (0.15 + 7.65)/2 = 3.9.


FIGURA 6-6

Funciones de grupo
anidadas
Datos de grupo Usando el GRUPO POR Clusula
287






Las funciones de fila sola pueden ser anidadas a cualquier nivel, pero las
funciones de grupo pueden ser anidadas a, como mximo, dos niveles profundamente. La
llamada a la funcin anidada CONDE (SUMA (AVG (X))) devuelve el error, "ORA-00935: la
funcin de grupo es anidada demasiado profundamente." Es aceptable para






la fila sola de nido funciona dentro de funciones de grupo. Considere la pregunta siguiente:
SELECCIONE LA SUMA (AVG (LONGITUD (NOMBRE de LAST_))) DE EMPLOYEES GROUP
POR DEPARTMENT_ID. Esto calcula la suma de la longitud media de valores de LAST_NAME
por departamento.





OBJETIVO DE CERTIFICACIN 6.03


Datos de grupo Usando el GRUPO POR Clusula
Las funciones de grupo hablaron de grupos de uso ms tempranos de filas que comprenden la
comando entera.
Esta seccin explora la divisin de un SET de datos en grupos que usan el GRUPO POR la
clusula. Las funciones de grupo pueden ser aplicadas a estos subconjuntos o racimos de
filas. Hablan de la sintaxis de funciones de grupo y el GRUPO POR la clusula en las reas
siguientes:

Creacin de grupos de datos El GRUPO POR clusula Agrupacin por
columnas mltiples

Creating Groups de Datos
Una comando tiene al menos una columna y cero o ms filas de datos. En muchas tablas
estos datos requieren que el anlisis lo transforme en la informacin til. Es un requisito
de obteniendo comn para calcular la estadstica de un SET de datos divididos en grupos
que usan atributos diferentes. Las funciones de grupo de utilizacin de ejemplos
anteriores funcionaron contra todas las filas en una comando. La comando entera fue
tratada como un grupo grande.
Los grupos de datos dentro de un SET son creados asociando filas con propiedades
comunes o atributos el uno con el otro. A partir de entonces, las funciones de grupo pueden
ejecutar contra cada uno de estos grupos. Los grupos de datos incluyen filas enteras y no
columnas especficas.
288
Captulo 6:
El obteniendo de Datos Agregados Usando las Funciones de Grupo



Considere la comando de EMPLOYEES. Esto comprende 11 columnas y 107 filas. Usted
podra crear grupos de filas que comparten un valor de DEPARTMENT_ID comn. La
funcin de SUMA puede ser usada entonces para crear totales de sueldo por
departamento. Otro SET posible de grupos puede compartir valores de columna JOB_ID
comunes. La funcin de grupo AVG puede ser usada entonces para identificar el sueldo
medio pagado a EMPLOYEES en JOBS diferentes.
Un grupo es definido como un subconjunto de dataset entero compartimiento de uno o
varios atributos comunes. Estos atributos son tpicamente valores de columna, pero
tambin pueden ser expresiones. El nmero de grupos creados depende de los valores
distintos presentes en el atributo comn.
Como la Figura 6-7 muestra, hay 12 valores de DEPARTMENT_ID nicos en la
comando de EMPLOYEES. Si las filas son agrupadas usando valores de
DEPARTMENT_ID comunes, habr 12 grupos. Si una funcin de grupo es ejecutada
contra estos grupos, habr 12 valores devueltos, ya que ejecutar una vez para cada grupo.

La agrupacin de datos y la utilizacin de funciones sumarias son extensamente
utilizadas para relatar objetivos. Es valioso practicar la segmentacin de un SET
de datos en agrupaciones diferentes. El oracle proporciona la lenguaje analtica a
deconstruct datasets en grupos, divida stos en subgrupos adicionales, etctera.
Las funciones de agrupacin agregadas pueden ser ejecutadas entonces contra
estos grupos y subgrupos.

El GRUPO POR Clusula
La select SENTENCIA es realzada por la adicin del GRUPO POR la clusula.
Esta clusula facilita la creacin de grupos. Aparece despus el DONDE clusula, pero
antes del PEDIDO POR la clusula, como sigue:
SELECCIONE column|expression|group_function (column|expression [alias]), .} DE la
comando [DONDE la condicin (ones)] [GRUPO POR {Cnel (es) |expr}] [PIDE POR
{Cnel (es) |expr|numeric_pos} [ASC|DESC] [NULLS FIRST|LAST]]; La columna o
la expresin especificada en el GRUPO POR la clusula tambin son conocidas como
el atributo que se agrupa y es el componente por el cual las filas son agrupadas. El dataset
es segmentado basado en el atributo que se agrupa. Considere la pregunta siguiente:

mximo escogido (sueldo), el conde (*) del grupo de EMPLOYEES por
department_id pide por department_id
Datos de grupo Usando el GRUPO POR Clusula
289



FIGURA 6-7

DEPARTMENT_ nico ID valora
en la comando de EMPLOYEES





























El atributo que se agrupa en este ejemplo es la columna DEPARTMENT_ID. El dataset,
que las funciones de grupo en la lista SENTENCIA deben actuar, est dividido en 12 grupos,
un para cada departamento. Para cada grupo (departamento), el valor de sueldo mximo y el
nmero de filas son devueltos. Ya que los resultados son clasificados por
DEPARTMENT_ID, la tercera fila en el SET de resultados contiene los valores 11000 y 6.
Esto indica que 6 EMPLOYEES tienen un valor DEPARTMENT_ID de 30. De estos 6, el
asalariado ms alto tiene un valor de SUELDO de 11000. Esta pregunta demuestra que el
atributo que se agrupa no tiene que ser incluido en la lista SENTENCIA.
290
Captulo 6:
El obteniendo de Datos Agregados Usando las Funciones de Grupo



Es comn ver el atributo que se agrupa en la lista SENTENCIA junto a la agrupacin
funciones. Si un artculo, que no es una funcin de grupo, aparece en la lista
SENTENCIA y no hay ningn GRUPO POR la clusula, "ORA-00937: el error" de
funcin de grupo de ni-un-solo-grupo es levantado. Si un GRUPO POR la clusula est
presente pero aquel artculo no es un atributo que se agrupa, entonces "ORA-00979: no un
GRUPO SEGN la expresin" error es devuelto.
Cualquier artculo en la lista SENTENCIA que no es una funcin de grupo debe ser un
atributo que se agrupa del GRUPO POR la clusula.
Si una funcin de grupo es colocada en un DONDE clusula, "ORA-00934: la funcin
de grupo no es permitida aqu" el error es devuelto. Imponer condiciones de nivel del
grupo es conseguido usando la clusula de discusin en la siguiente seccin. Las
funciones de grupo pueden ser, sin embargo, usadas como la parte del PEDIDO POR la
clusula.
La primera pregunta en la Figura 6-8 levanta un error ya que la columna END_DATE
est en la lista SENTENCIA con una funcin de grupo y no hay ningn GRUPO POR la
clusula. Un error "ORA-00979" es devuelto de la segunda pregunta ya que el artculo
START_DATE es puesto en una lista en la clusula SENTENCIA, pero no es un atributo
que se agrupa.
La tercera pregunta divide las filas JOB_HISTORY en grupos basados en el
componente de ao de 4 dgitos de la columna END_DATE. Cuatro grupos son creados
usando este atributo de agrupacin. stos representan aos diferentes cuando los
EMPLOYEES terminaron sus JOBS. El CONDE muestra el nmero de EMPLOYEES
que sali sus JOBS durante cada uno



FIGURA 6-8

El GRUPO POR clusula
Datos de grupo Usando el GRUPO POR Clusula
291



de estos aos. Los resultados son puestos en una lista en el pedido inclinado basado en la
expresin "de Nmero de EMPLOYEES". Note que la funcin de grupo de CONDE
est presente en el PEDIDO POR la clusula.




Un dataset est dividido en grupos que usan el GRUPO POR la clusula. El
atributo que se agrupa es la llave comn compartida por miembros de cada grupo. El atributo que
se agrupa es por lo general una columna sola, pero puede ser columnas mltiples o


La agrupacin por Columnas Mltiples




una expresin que no puede estar basada en funciones de grupo. Note que slo la agrupacin
de atributos y funciones de grupo es permitida en la clusula SENTENCIA usando el GRUPO
POR.
Una extensin potente al GRUPO POR la clusula usa atributos de agrupacin mltiples.
El oracle permite a datasets ser dividido en grupos y permite que estos grupos estn
divididos adelante en subgrupos que usan un atributo de agrupacin diferente. Considere
las dos preguntas siguientes:

La consulta 1: seleccione department_id, sume (commission_pct) de
EMPLOYEES donde commission_pct no es el grupo nulo por la Consulta 2
department_id: seleccione department_id, job_id, sume (commission_pct)
de EMPLOYEES donde commission_pct no es el grupo nulo por department_id,
job_id
La consulta 1 restringe las filas devueltas de la comando de EMPLOYEES a las 35 filas
con valores de COMMISSION_PCT no nulos. Estas filas estn divididas entonces en
dos grupos: 80 y NULO basado en el atributo de agrupacin de DEPARTMENT_ID. El
SET de resultado contiene dos filas, que devuelven la suma de los valores de
COMMISSION_PCT para cada grupo.
La consulta 2 es similar a la primera excepto ello tiene un artculo adicional: JOB_ID
tanto en el ESCOGIDO como en GRUPO POR clusulas. Este segundo atributo de
agrupacin descompone los dos grupos basados en DEPARTMENT_ID en los
componentes JOB_ID constituyentes que pertenecen a las filas en cada grupo. Los valores
de JOB_ID distintos para filas con DEPARTMENT_ID=80 son SA_REP y SA_MAN. El
valor de JOB_ID distinto para filas con DEPARTMENT_ID nulo es SA_REP. Por lo tanto,
la consulta 2 devuelve dos agrupaciones, uno que consiste en dos subgrupos, y otro con slo
un, como mostrado en la Figura 6-9.
292
Captulo 6:
El obteniendo de Datos Agregados Usando las Funciones de Grupo



FIGURA 6-9

El GRUPO POR clusula con
columnas mltiples













EJERZA 6-2 Datos que se Agrupan Basados en Columnas Mltiples
El anlisis del volumen de ventas de personal es un requisito de obteniendo comn.
Requieren a usted
cree un informe que contiene el nmero de EMPLOYEES que dej sus JOBS, agrupados
por el ao en el cual ellos se marcharon. Los JOBS que ellos realizaron tambin se
requieren. Los resultados deben ser clasificados en el pedido inclinado basado en el
nmero de EMPLOYEES en cada grupo. El informe debe poner en una lista el ao, el
JOB_ID, y el nmero de EMPLOYEES que dej un trabajo particular en aquel ao.

1. Comience al Developer SQL y conecte al esquema de HORA. 2. La comando
JOB_HISTORY contiene el END_DATE y columnas JOB_ID,
que constituyen la fuente de datos para este informe.
3. El componente de ao es extrado usando la funcin de TO_CHAR. El nmero
de EMPLOYEES que salieron un trabajo particular en cada ao es obtenido usando al
CONDE (*) funcin.
4. La clusula SENTENCIA es
TO_CHAR (END_DATE, 'YYYY') "Ao que Sale", JOB_ID, CONDE (*)
"Nmero de EMPLOYEES"
5. El DE la clusula es
DE EMPLOYEES




6. No hay DONDE clusula.
Datos de grupo Usando el GRUPO POR Clusula
293
7. Ya que el informe requiere que EMPLOYEES sean puestos en una lista antes del ao y JOB_ID,
estos dos artculos deben aparecer en el GRUPO POR la clusula, que es el GRUPO POR TO_CHAR
(END_DATE, 'YYYY'), JOB_ID
8. La comandoacin es realizada con
PEDIDO POR CONDE (*) DESC 9. La ejecucin de esta select devuelve el informe de volumen de
ventas de personal solicitado como mostrado
en la ilustracin siguiente:
294
Captulo 6:
El obteniendo de Datos Agregados Usando las Funciones de Grupo




GUIN & SOLUCIN

Usted desea imprimir insignias de nombre para los EMPLOYEES que trabajan como representantes de ventas.
Puede la longitud de los valores de LAST_NAME ms cortos y ms largos ser determinada para estos
EMPLOYEES?
S. MAX y las funciones de MINUTO aplicadas al espacio de LAST_NAME determinarn los nombres ms cortos
y ms largos como mostrado en la pregunta siguiente: MINUTO ESCOGIDO (LONGITUD (LAST_NAME)),
MAX (LONGITUD (LAST_NAME)) DE EMPLOYEES DONDE JOB_ID ='SA_REP';
Es posible contar los archivos en cada grupo, primero dividiendo los archivos de empleado antes del ao del
empleo, luego por el trabajo, y finalmente por el sueldo?
S. La agrupacin por columnas mltiples es una opcin potente que permite el anlisis de grano fino como mostrado
en la pregunta siguiente: SELECCIONE AL CONDE (*), TO_CHAR (HIRE_DATE, 'YYYY'), JOB_ID, SUELDO
DE EMPLOYEES GROUP POR TO_CHAR (HIRE_DATE, 'YYYY'), JOB_ID, SUELDO
Hay un lmite del nmero de grupos dentro de grupos que pueden ser formados?
No. No hay ningn lmite del nmero de grupos y subgrupos que pueden ser formados.



OBJETIVO DE CERTIFICACIN 6.04


Incluya o Excluya Filas Agrupadas Usando la Clusula
que TIENE
La creacin de grupos de datos y aplicando funciones agregadas es muy til. Un
refinamiento
a estos aspectos es la capacidad de incluir o excluir resultados basados en condiciones de
nivel del grupo. Esta seccin introduce la clusula que TIENE. Una distincin clara es
hecha entre el DONDE clusula y la clusula que TIENE. La clusula que TIENE es
explicada en las reas siguientes:

Restriccin de grupo resulta La clusula que TIENE

Resultados de Restricting Group
DONDE las condiciones de clusula restringen filas devueltas por una pregunta. Las filas
son incluidas basadas
en si ellos realizan las condiciones puestas en una lista y son a veces conocidos como
resultados de nivel de la fila. Filas que se agrupan usando el GRUPO POR clusula y
aplicando un conjunto
Incluya o Excluya Filas Agrupadas Usando la Clusula que TIENE
295



funcione a estos resultados de vueltas de grupos a menudo referidos como resultados de nivel del grupo. La
clusula que TIENE proporciona la lenguaje para restringir resultados de nivel del grupo.
La pregunta siguiente limita las filas recuperadas de la comando JOB_HISTORY especificando un
DONDE la condicin basada en la columna DEPARTMENT_ID valora.

seleccione department_id de job_history donde department_id en (50,60,80,110);
Esta pregunta devuelve siete filas. Si el DONDE la clusula era ausente, diez filas
sera recuperado. Suliste que usted quiere saber cuantos EMPLOYEES fueron EMPLOYEES antes en cada
uno de estos DEPARTMENTS. Hay siete filas que pueden ser a mano agrupadas y contadas. Sin embargo,
si hay un gran nmero de filas, una funcin agregada como el CONDE puede ser usada, como mostrado en
la pregunta siguiente:

seleccione department_id, cuenta (*) de job_history donde department_id en
(50,60,80,110) grupo por department_id;
Esta pregunta es muy similar a la select anterior. La funcin agregada
EL CONDE fue aadido a la lista SENTENCIA, y un GRUPO POR la clusula DEPARTMENT_ID
tambin fue aadido. Cuatro filas con su cuenta de fila agregada son devueltas y est claro que las siete filas
originales restringidas por el DONDE clusula fueron agrupados en cuatro grupos basados en valores de
DEPARTMENT_ID comunes, como mostrado en la comando siguiente:

DEPARTMENT_ID CONDE (*) 50 260 180 2110 2
Suliste que usted quiso refinar esta lista para incluir slo aquellos DEPARTMENTS con
ms de un empleado. La clusula que TIENE limita o restringe las filas de nivel del grupo como
requerido.
Esta pregunta debe realizar los pasos siguientes:

1. Considere el nivel de la fila entero dataset. 2. Limite el basado dataset en cualquiera DONDE
condiciones de clusula.
296
Captulo 6:
El obteniendo de Datos Agregados Usando las Funciones de Grupo



3. Segmente los datos en uno o varios grupos que usan los atributos que se agrupan
especificado en el GRUPO POR clusula. 4. Aplique cualquier funcin agregada para crear un nuevo
nivel del grupo dataset. Cada fila
puede ser considerado como una agregacin de sus datos de nivel de la fila de la fuente basados en los
grupos creados.
5. Limite o restrinja los datos de nivel del grupo con una condicin de clusula que TIENE. Slo
los resultados de nivel del grupo que emparejan estas condiciones son devueltos.

La eleccin del contexto apropiado para usar un DONDE o una clusula que
TIENE depende de o fsico o filas de nivel del grupo debe ser restringida. Las filas
que contienen datos almacenados en columnas son a veces llamadas filas
actuales o fsicas. Cuando las filas (fsicas) actuales son restringidas, una o varias
condiciones son impuestas usando un DONDE clusula. Cuando estas filas son
agrupadas juntos, una o varias funciones agregadas pueden ser aplicadas,
cediendo una o varias filas de nivel del grupo. stos no son filas fsicas, pero
agregaciones temporales de datos. Grupo - las filas de nivel son restringidas
usando condiciones impuestas por una clusula que TIENE.

La Clusula que TIENE
La forma general de la select SENTENCIA es realzada adelante por la adicin de
la clusula que TIENE y se hace:
SELECCIONE column|expression|group_function (column|expression [alias]), .} DE la
comando [DONDE la condicin (ones)] [GRUPO POR {Cnel (es) |expr}] [TENIENDO
group_condition (s)] [PIDE POR {Cnel (es) |expr|numeric_pos} [ASC|DESC] [NULLS
FIRST|LAST]]; Una diferencia importante entre la clusula que TIENE y otro
ESCOGIDO
las clusulas de select son que slo puede ser especificado si un GRUPO POR la clusula
est presente. Esta dependencia es prudente ya que las filas de nivel del grupo deben
existir antes de que ellos puedan ser restringidos. La clusula que TIENE puede ocurrir
antes del GRUPO POR la clusula en la select SENTENCIA. Sin embargo, es ms
comn colocar la clusula que TIENE despus del GRUPO POR la clusula. Toda la
agrupacin es realizada y las funciones de grupo son ejecutadas antes de la evaluacin de
la clusula que TIENE.
Los espectculos de pregunta siguientes como la clusula que TIENE es usada para
restringir dataset agregado. Los archivos de la comando JOB_HISTORY estn divididos
en cuatro grupos. Las filas que encuentran la condicin de clusula que TIENE
(contribuyendo ms de una fila a la cuenta de fila de grupo) son devueltas:
Incluya o Excluya Filas Agrupadas Usando la Clusula que TIENE



seleccione department_id, cuenta (*) de job_history donde department_id
en (50,60,80,110) grupo por department_id que tiene la cuenta (*)> 1
297
Tres filas con valores DEPARTMENT_ID de 50, 80, y 110, cada uno con a
CONDE (*) valor de 2, son devueltos.
La figura 6-10 muestra tres preguntas. La consulta 1 divide los 107 archivos de la
comando de EMPLOYEES en 19 grupos basados en valores de JOB_ID comunes. El
sueldo medio para cada grupo JOB_ID y el conde de fila agregado es computado. La
consulta 2 refina los resultados por excluyendo con reservas aquellas filas agregadas
donde el


FIGURA 6-10

La clusula que TIENE
298
Captulo 6:
El obteniendo de Datos Agregados Usando las Funciones de Grupo



el sueldo medio es menos que o igual a 10000, usando una clusula que TIENE. La
consulta 3 demuestra que los operadores Booleanos pueden ser usados para especificar
condiciones de clusula mltiples que TIENEN.




La clusula que TIENE slo puede ser especificada cuando un GRUPO POR la
clusula est presente. Un GRUPO POR la clusula puede ser especificado sin una clusula que
TIENE. Condiciones mltiples pueden ser impuestas por a



EJERZA 6-3 Utilizacin la Clusula que TIENE




TENER clusula usando el Booleano Y, O, y NO operadores. Las condiciones de clusula que
TIENEN restringen datos de nivel del grupo y deben contener una funcin de grupo o una
expresin que usa el que.
La compaa planea una unidad de disco de reclutamiento y quiere identificar los das de
la semana durante la cual 20 o ms EMPLOYEES fueron contratados. Su informe debe
poner en una lista los das y el nmero de EMPLOYEES contratado en cada uno de ellos.

1. Comience SQL*Plus y conecte al esquema de HORA. 2. Los archivos de
EMPLOYEES deben estar divididos en grupos basados durante el da
componente de la columna HIRE_DATE. El nmero de EMPLOYEES por grupo
puede ser obtenido usando la funcin de CONDE.
3. La clusula SENTENCIA es
SELECCIONE TO_CHAR (HIRE_DATE, 'DA'), CONDE (*)
4. No DONDE la clusula se requiere desde todas las filas fsicas de los
EMPLOYEES
la comando se considera.
5. El GRUPO POR clusula es
GRUPO POR TO_CHAR (HIRE_DATE, 'DA') Este GRUPO POR la clusula
potencialmente crea siete filas de nivel del grupo, un para cada da de la semana.
6. La funcin de CONDE en la clusula SENTENCIA entonces pone el nmero en
una lista de personal
los miembros EMPLOYEES durante cada da. La clusula que TIENE debe ser
usada para restringir estas siete filas a slo aquellos donde la cuenta es mayor que o
igual a 20.
Incluya o Excluya Filas Agrupadas Usando la Clusula que TIENE



7. La clusula que TIENE es
TENER CONDE (*)> = 20 8. El DE clusula es
DE EMPLOYEES
299
9. La ejecucin de esta select devuelve los das de la semana en cual 20 o ms
los EMPLOYEES fueron contratados como mostrado en la ilustracin siguiente:
















DENTRO DEL EXAMEN


Los objetivos de certificacin en este captulo son examinados usando ejemplos prcticos y guiones que
requieren que usted para predecir re sults volviera de preguntas de SQL. Estas preguntas se concentran en
dividir datasets en grupos que usan uno o varios atributos de agrupacin.
Entienda las limitaciones de funciones de grupo que anidan. Recuerde que las funciones de grupo deben
existir en la clusula SENTENCIA si hay un GRUPO POR la clusula. La clusula que TIENE puede ocurrir
antes del GRUPO POR la clusula, pero es por lo general seguida de ello. Un error es devuelto si la clusula
que TIENE es usada sin un GRUPO POR la clusula. Recuerde que TENER


la clusula puede contener condiciones mltiples, pero cada uno debe contener una funcin de grupo.
Saber como interpretar y remontar anid las funciones de fila sola y grupo son esenciales, tan muchas
preguntas contienen expresiones con funciones anidadas. El ntimo al pedido ms extremo de la
evaluacin de grupo anidado y funciones solas es idntico y debe ser recordado.
Hay muchas funciones de grupo incorporadas disponibles, pero los exmenes probarn su bajo -
posicin del CONDE, SUMA, AVG, MAX, y funciones de MINUTO. Asegure que usted tiene un
entendimiento cuidadoso de estas funciones y como ellos se relacionan con la palabra clave DISTINTA y
valores NULOS.
300
Captulo 6:
El obteniendo de Datos Agregados Usando las Funciones de Grupo



RESUMEN DE CERTIFICACIN
Funciones de fila mltiples y el concepto de datos que se dividen en grupos son descritos
en este captulo. Hay grupo mltiple o las funciones agregadas disponibles. La llave
funciona para crear totales de suma; calculando promedios, mnimos, o mximos; y la
obtencin de una cuenta de registro es explorada detalladamente.
Las diferencias entre funciones de grupo que anidan y funciones de fila sola son
investigadas, y las limitaciones del antiguo son explicadas. La creacin de grupos que
usan atributos de agrupacin comunes es encarnada con la introduccin del GRUPO POR
la clusula a la select SENTENCIA. Los datos de nivel de la fila son limitados por
condiciones especificadas en el DONDE clusula. Tambin hablan de la restriccin de datos
de nivel del grupo usando la clusula que TIENE.
Taladradora de dos minutos
301




TALADRADORA DE DOS MINUTOS

Describa las Funciones de Grupo
funciones de Grupo tambin son conocidos como fila mltiple, conjunto, o resumen
funciones. Ellos ejecutan una vez para cada grupo de datos y agregan los datos de filas
mltiples en un resultado solo para cada grupo.
Grupos puede estar tablas enteras o partes de una comando agrupada juntos por un comn
agrupacin de atributo.

Identifique las Funciones de Available Group
El CONDE de una funcin devuelve un valor entero que representa el nmero
de filas en un grupo.
La funcin de SUMA devuelve un total agregado de todo el numrico no nulo
la expresin valora en un grupo.
La funcin de AVG divide la suma de una columna o expresin por el nmero
de filas no nulas en un grupo.
MAX y funciones de MINUTO actan sobre NMERO, FECHA, TRABAJO POR HORAS,
y
Tipos de datos de VARCHAR2. Ellos devuelven un valor que es el artculo ms grande o ms
pequeo en el grupo.
funciones de Grupo slo puede ser anidado dos niveles profundamente.

Datos de grupo Usando el GRUPO POR Clusula
El GRUPO POR la clusula especifica que las filas de atributo que se agrupan deben tener en
comn para ellos para ser agrupado juntos.
El GRUPO POR la clusula facilita la creacin de grupos dentro de un SET seleccionado
de datos y aparece despus el DONDE clusula, pero antes del PEDIDO POR la clusula.
Cualquier artculo a la lista SENTENCIA que no es una funcin de grupo debe ser una
agrupacin
atributo. funciones de Grupo puede no ser colocado en un DONDE clusula. Datasets
puede ser dividido en grupos y adelante dividido en subgrupos
basado en atributos de agrupacin mltiples.
302
Captulo 6:
El obteniendo de Datos Agregados Usando las Funciones de Grupo



Incluya o Excluya Filas Agrupadas Usando la Clusula que TIENE
filas que se Agrupan usando una agrupacin comn atribuyen con el GRUPO
POR
la clusula y la aplicacin de una funcin agregada a cada uno de estos grupos
devuelven resultados de nivel del grupo.
La clusula que TIENE proporciona la lenguaje para limitar los resultados de
nivel del grupo
devuelto.
La clusula que TIENE slo puede ser especificado si hay un GRUPO POR la
clusula
presente.
Toda la agrupacin es realizado y las funciones de grupo son ejecutadas antes de la
evaluacin
la clusula que TIENE.




M PRUEBA
M Prueba
303
Las preguntas siguientes le ayudarn a medir su entendimiento del material presentado en esto
captulo. Lea todas las opciones con cuidado porque puede haber ms de una respuesta correcta. Elija todo
el correcto responde de cada pregunta.

Describa las Funciones de Grupo
1. Qu resultado es devuelto por la select siguiente?
SELECCIONE A CONDE (*) DE DUAL; (Elija la mejor respuesta.) A. B nulo. 0 C. 1 D. Ninguno
de los susodichos
2. Elija una select correcta en cuanto a funciones de grupo.
A. Las funciones de grupo slo pueden ser usadas cuando un GRUPO POR la clusula est presente.
Las funciones de B. Group pueden actuar sobre filas mltiples a la vez. Las funciones de C. Group
slo actan sobre una fila sola a la vez. Las funciones de D. Group pueden ejecutar tiempos
mltiples dentro de un grupo solo.

Identifique las Funciones de Available Group
3. Qu valor es devuelto despus de ejecutar la select siguiente?
SELECCIONE LA SUMA (SUELDO) DE EMPLOYEES; Suliste que haya 10 archivos de empleado
y cada uno contiene un valor de SUELDO de 100, excepto 1, que tiene un valor nulo en el espacio de
SUELDO. (Elija la mejor respuesta.) A. 900 B. 1000 C. D nulo. Ninguno de los susodichos
4. Qu valores son devueltos despus de ejecutar la select siguiente?
SELECCIONE AL CONDE (*), CONDE (SUELDO) DE EMPLOYEES; Suliste que haya 10
archivos de empleado y cada uno contiene un valor de SUELDO de 100, excepto 1, que tiene un valor
nulo en su espacio de SUELDO. (Elija todo que se aplican.) A. 10 y 10 B. 10 y C nulo. 10 y 9 D.
Ninguno de los susodichos
304
Captulo 6:
El obteniendo de Datos Agregados Usando las Funciones de Grupo



5. Qu valor es devuelto despus de ejecutar la select siguiente?
SELECCIONE AVG (NVL (SUELDO, 100)) DE EMPLOYEES; Suliste que haya diez archivos de
empleado y cada uno contiene un valor de SUELDO de 100, excepto un empleado, que tiene un valor
nulo en el espacio de SUELDO. (Elija la mejor respuesta.) A. B nulo. 90 C. 100 D. Ninguno de los
susodichos

Datos de grupo Usando el GRUPO POR Clusula
6. Qu valor es devuelto despus de ejecutar la select siguiente?
SELECCIONE LA SUMA ((AVG (LONGITUD (NVL (SUELDO, 0))))) DE EMPLOYEES GROUP
POR EL SUELDO; Suliste que haya diez archivos de empleado y cada uno contiene un valor de
SUELDO de 100, excepto uno, que tiene un valor nulo en el espacio de SUELDO. (Elija la mejor
respuesta.) A. Un error es devuelto B. 3 C. 4 D. Ninguno de los susodichos
7. Cuntos archivos son devueltos por la pregunta siguiente?
SELECCIONE LA SUMA (SUELDO), DEPARTMENT_ID DE EMPLOYEES GROUP POR
DEPARTMENT_ID; Suliste que haya 11 no nulo y 1 valores de DEPARTMENT_ID nicos nulos.
Todos los archivos tienen un valor de SUELDO no nulo. (Elija la mejor respuesta.) A. 12 B. 11 C. D
nulo. Ninguno de los susodichos
8. Qu valores son devueltos despus de ejecutar la select siguiente?
SELECCIONE JOB_ID, MAX_SALARY DE JOBS GROUP POR MAX_SALARY; Suliste que la
comando de JOBS tenga diez archivos con el mismo valor JOB_ID de DBA y el mismo valor
MAX_SALARY de 100. (Elija la mejor respuesta.) A. Una fila de salida con los valores DBA, 100
B. Diez filas de salida con los valores DBA, 100 C. Un error es devuelto D. Ninguno de los
susodichos
Pregunta de laboratorio
305



Incluya o Excluya Filas Agrupadas Usando la Clusula que TIENE
9. Cuntas filas de datos son devueltas despus de ejecutar la select siguiente?
SELECCIONE DEPT_ID, SUMA (NVL (SUELDO, 100)) DE EMP GROUP POR DEPT_ID que
TIENE LA SUMA (SUELDO)> 400; Suliste que la comando EMP tenga diez filas y cada uno
contiene un valor de SUELDO de 100, excepto uno, que tiene un valor nulo en el espacio de
SUELDO. Las cinco primeras y segundas filas tienen valores DEPT_ID de 10 y 20, respectivamente.
(Elija la mejor respuesta.) A. Dos filas B. Una fila C. Filas cero D. Ninguno de los susodichos
10. Cuntas filas de datos son devueltas despus de ejecutar la select siguiente?
SELECCIONE DEPT_ID, SUME (SUELDO) DE EMP GROUP POR DEPT_ID que TIENE LA
SUMA (NVL (SUELDO, 100))> 400; Suliste que la comando EMP tenga diez filas y cada uno
contiene un valor de SUELDO de 100, excepto uno, que tiene un valor nulo en el espacio de
SUELDO. Las cinco primeras y segundas filas tienen valores DEPT_ID de 10 y 20, respectivamente.
(Elija la mejor respuesta.) A. Dos filas B. Una fila C. Filas cero D. Ninguno de los susodichos

PREGUNTA DE LABORATORIO
Usando al Developer de SQL o SQL*Plus, conecte al esquema OE y complete las tareas siguientes.
La comando PRODUCT_INFORMATION pone en una lista artculos que son orderable y otros que
son planeados, obsoletos, o en el desarrollo. Se requiere que usted prepare un informe que los grupos no -
orderable productos por su PRODUCT_STATUS y muestran el nmero de productos en cada grupo y la
suma del LIST_PRICE de los productos por grupo. Adelante, slo las filas de nivel del grupo, donde la
suma del LIST_PRICE es mayor que 4000, deben ser mostradas. Un producto es nonorderable si el valor
de PRODUCT_STATUS no es igual a la cuerda 'orderable'. Hay varios enfoques a la solucin de esta
pregunta. Su enfoque puede diferenciarse de la solucin propuesta.
306
Captulo 6:
El obteniendo de Datos Agregados Usando las Funciones de Grupo



M PRUEBAN
RESPUESTAS
Describa las Funciones de Grupo
1. C. La comando DUAL se pelea y una columna. El CONDE (*) funcin devuelve el
nmero de filas en una comando o grupo.
Los A, B, y D son incorrectos.
2. B. Por definicin, las funciones de grupo pueden actuar sobre filas mltiples a la vez, a diferencia
de la fila sola
funciones.
Los A, C, y D son select incorrectas. Una funcin de grupo puede ser usada sin un GRUPO POR

clusula. En este instancia, dataset entero es hecho funcionar en como un grupo. La funcin de
CONDE a menudo es ejecutada contra una comando entera, que se comporta como un grupo. El D es
incorrecto. Una vez que un dataset ha sido dividido en grupos diferentes, cualquier funcin de grupo
ejecuta una vez por grupo.

Identifique las Funciones de Available Group
3. A. La funcin de conjunto de SUMA no hace instancia de valores nulos y aade valores no
nulos. Desde nueve
las filas contienen el valor de SUELDO 100, 900 es devuelto.
Los B, C, y D son incorrectos. El B sera devuelto si la SUMA (NVL (SUELDO, 100)) fuera

ejecutado. El C es una opcin atractiva ya que la aritmtica regular con valores NULOS devuelve
un resultado NULO. Sin embargo, las funciones agregadas, excepto el CONDE (*), no hacen
instancia de valores NULOS.
4. C. El CONDE (*) considera todas las filas incluso aquellos con valores NULOS. CONDE
(SUELDO)
slo considera las filas no nulas.
Los A, B, y D son incorrectos.
5. C. La funcin de NVL converte un valor NULO en 100. A partir de entonces, el promedio
la funcin aade que el SUELDO valora y obtiene 1000. La divisin de esto por el nmero de
archivos vuelve 100.
Los A, B, y D son incorrectos. El B sera devuelto si AVG (NVL (SUELDO, 0)) fuera
seleccionado. Esto
es interesante de notar que si el AVG (SUELDO) fuera seleccionado, 100 tambin habra sido
devuelto, ya que la funcin de AVG sumara los valores no nulos y dividira el total en el nmero de
filas con valores de SUELDO no nulos. Entonces AVG (SUELDO) sera calculado como: 900/9=100.

Datos de grupo Usando el GRUPO POR Clusula
6. C. El dataset es segmentado basado en la columna de SUELDO. Esto crea dos grupos: un
con valores de SUELDO de 100 y otro con un valor de SUELDO nulo. La longitud media del
SUELDO valora 100 es 3 para las filas en el primer grupo. El valor de sueldo NULO es convertido
primero
M Respuestas de Prueba
307



en el nmero 0 por la funcin de NVL, y la longitud media del SUELDO es 1. La funcin de
SUMA funciona a travs de los dos grupos que aaden los valores 3 y 1 vuelta 4.
Los A, B, y D son incorrectos. Parecer plausible desde funciones de grupo no puede ser anidado
ms
que dos niveles profundamente. Aunque haya cuatro funciones, slo dos son funciones de grupo
mientras los dems son funciones de fila sola evaluadas antes de las funciones de grupo. El B sera
devuelto si la SUMA de expresin (AVG (LONGITUD (SUELDO))) fuera seleccionada.
7. A. Hay 12 valores de DEPARTMENT_ID distintos. Ya que esto es el atributo que se agrupa,
12 grupos son creados, incluso 1 con un valor de DEPARTMENT_ID nulo. Por lo tanto 12 filas son
devueltas.
Los B, C, y D son incorrectos.

Incluya o Excluya Filas Agrupadas Usando la Clusula que TIENE
8. C. Para un GRUPO POR la clusula para ser usada, una funcin de grupo debe aparecer en la
lista SENTENCIA.
Los A, B, y D son incorrectos ya que la select es sintcticamente inexacta y es rechazada
por Oracle. No confunda la columna llamada MAX_SALARY para MAX (SUELDO) funcin.
9. B. Dos grupos son creados basados en sus valores de DEPT_ID comunes. El grupo con
Los valores de DEPT_ID de diez consisten en cinco filas con valores de SUELDO de 100 en cada
uno de ellos. Por lo tanto, la SUMA (SUELDO) que la funcin devuelve 500 para este grupo, y esto
satisface la SUMA QUE TIENE (SUELDO)> 400 clusula. El grupo con valores DEPT_ID de 20
tiene cuatro filas con valores de SUELDO de 100 y una fila con un SUELDO NULO. LA SUMA
(SUELDO) Slo vuelve 400 y este grupo no satisface la clusula que TIENE.
Los A, C, y D son incorrectos. Precvase de la SUMA (NVL (SUELDO, 100)) la expresin en el

Clusula SENTENCIA. Esta expresin selecciona el formato de salida. Esto no restringe o limita el
dataset en de todos modos.
10. A. Dos grupos son creados basados en sus valores de DEPT_ID comunes. El grupo con
Los valores de DEPT_ID de 10 consisten en cinco filas con valores de SUELDO de 100 en cada uno de
ellos. Por lo tanto la SUMA (NVL (SUELDO, 100)) la funcin vuelve 500 para este grupo y esto
satisface la SUMA QUE TIENE (SUELDO)> 400 clusula. El grupo con valores DEPT_ID de 20
tiene cuatro filas con valores de SUELDO de 100 y una fila con un SUELDO nulo. La SUMA (NVL
(SUELDO, 100)) vuelve 500 y este grupo satisface la clusula que TIENE. Por lo tanto dos filas son
devueltas.
Los B, C, y D son incorrectos. Aunque la clusula SENTENCIA contenga la SUMA
(SUELDO),
que vuelve 500 y 400 para los dos grupos, la clusula que TIENE contiene la SUMA (NVL
(SUELDO, 100)) expresin, que especifica los criterios de exclusin o inclusin para una fila de nivel
del grupo.
308
Captulo 6:
El obteniendo de Datos Agregados Usando las Funciones de Grupo



RESPUESTA DE LABORATORIO
Usando al Developer de SQL o SQL*Plus, conecte al esquema OE y complete las tareas siguientes.
Hay varios enfoques a la solucin de esta pregunta. Su enfoque puede diferenciarse de la solucin
propuesta aqu.
1. Comience al Developer SQL y conecte al esquema OE. 2. El dataset debe ser restringido a filas de la
comando PRODUCT_INFORMATION donde el
PRODUCT_STATUS no es igual a la cuerda 'orderable'. Ya que este carcter literal puede haber sido
introducido en el instancia variado, una funcin de conversin de instancia como el SUPERIOR
puede ser usada.
3. El DONDE la clusula es
DONDE SUPERIOR (PRODUCT_STATUS) <> 'ORDERABLE'
4. Ya que el dataset debe ser segmentado en grupos basados en la columna PRODUCT_STATUS,
el GRUPO POR select es GRUPO POR PRODUCT_STATUS
5. El dataset es dividido ahora en grupos diferentes basados en su PRODUCT_STATUS
valores. Por lo tanto, el CONDE (*) funcin puede ser usado para obtener el nmero de productos en
cada grupo. La SUMA (LIST_PRICE) funcin agregada puede ser usada para calcular la suma de los
valores de LIST_PRICE para todas las filas en cada grupo.
6. La clusula SENTENCIA es por lo tanto
SELECCIONE A CONDE (*), SUMA (LIST_PRICE), PRODUCT_STATUS
7. La clusula que TIENE que restringe filas de nivel del grupo es por lo tanto
TENER SUMA (LIST_PRICE)> 4000
8. El DE la clusula es
DE PRODUCT_INFORMATION
9. La ejecucin de esta select devuelve el informe requerido como mostrado en la ilustracin siguiente.
7
La pruebas de
Datos de Tablas
Mltiples






OBJETIVOS DE CERTIFICACIN


7.01


7.02
7.03


Escriba Select SENTENCIAS a Datos de Acceso de ms de Un Table Using Equijoins y Nonequijoins
Afliese a una Comando a S Usando unos Datos de Vista de Autojuntura que no Encuentran una Juntura
Condicin Usando Junturas Externas


7.04

Q&A


Genere un producto Cartesiano de Dos o ms Tablas
Taladradora de dos minutos M Prueba












Copyright 2008 por El Clic de McGraw-Hill Companies, Inc aqu para trminos de uso.
310
Captulo 7:
La pruebas de Datos de Tablas Mltiples
Los tres pilares de la teora relacional son la seleccin, la proyeccin, y la
conexin. Este captulo se concentra en la realizacin prctica de la conexin. Las filas de tablas
diferentes son
asociado el uno con el otro usando junturas. El apoyo a la conexin tiene implicaciones para
el camino
los datos son almacenados en tablas de base de datos. Muchos modelos de datos, como tercera forma
normal o esquemas de estrella han surgido para explotar este aspecto.

Las tablas pueden ser afiliadas de varios modos. La tcnica ms comn es llamada un
equijoin. Una fila tiene que ver con una o varias filas en otra comando basada en la
igualdad de valores de columna o expresiones. Las tablas tambin pueden ser afiliadas
usando un nonequijoin. En este instancia, una fila tiene que ver con una o varias filas en
otra comando si sus valores de columna caen a una variedad determinada por operadores
de desigualdad.
Una tcnica menos comn debe asociar filas con otras filas en la misma comando. Esta
asociacin est basada en columnas con relaciones lgicas y por lo general jerrquicas el
uno con el otro. Esto es llamado una autojuntura. Las filas con entradas nulas o que se
diferencian en columnas de juntura comunes son excluidas cuando equijoins y
nonequijoins son realizados. Una juntura externa est disponible para traer estas filas cojas o
quedadas hurfanas si es necesario.
Una juntura enfadada o el producto Cartesiano son formados cuando cada fila de una
comando es afiliada a todas las filas en el otro. Esta juntura a menudo es el resultado de
ausencia o condiciones de juntura inadecuadas, pero es de vez en cuando intencional.



OBJETIVO DE CERTIFICACIN 7.01


Escriba Select SENTENCIAS a Datos de Acceso de
ms de Un Table Using Equijoins y Nonequijoins
Este objetivo de certificacin recibe la cobertura extensa en este captulo. Es crucial
a aprendizaje de los conceptos y lenguaje para realizar junturas. Los tipos diferentes de
junturas son introducidos en sus formas primitivas que perfilan las amplias categoras
que estn disponibles. Una discusin a fondo de varias clusulas de juntura es conducida
entonces. Hablan de la sintaxis de Oracle ANSI-dcil y tradicional moderna, pero el
hincapi es hecho en la sintaxis moderna. Esta seccin concluye con una discusin
Escriba Select SENTENCIAS a Access Data Using Equijoins y Nonequijoins
311



de nonequijoins y condiciones de juntura adicionales. La conexin es descrita
concentrndose en las ocho reas siguientes:

los Tipos de las junturas tablas que se Unen usando la sintaxis de SQL:1999
Calificacin a la columna ambigua llama La clusula de JUNTURA
NATURAL La JUNTURA natural USANDO la clusula La JUNTURA
natural EN la clusula N-camino junturas y condiciones de juntura adicionales
Nonequijoins


Tipos de Junturas
Dos junturas bsicas son el equijoin y el nonequijoin. Equijoins son ms con frecuencia
usados. Las junturas pueden ser realizadas entre tablas mltiples, pero la mayor parte de
la discusin siguiente usar dos tablas hipotticas para ilustrar los conceptos y lenguaje
de junturas. La primera comando es llamada la fuente y el segundo es llamado el objetivo.
Las filas en la fuente y tablas objetivo comprenden una o varias columnas. Como un
ejemplo, suliste que la fuente y el objetivo sean los COUNTRIES y tablas de REGIONS
del esquema de HORA, respectivamente.
La comando de COUNTRIES contiene tres columnas llamadas COUNTRY_ID,
COUNTRY_NAME, y REGION_ID. La comando de REGIONS consiste de dos
columnas llamadas REGION_ID y REGION_NAME. Los datos en estas dos tablas
estn relacionados el uno con el otro basado en la columna REGION_ID comn.
Considere las preguntas siguientes:

La consulta 1: seleccione * de COUNTRIES donde country_id ='CA'; la
Consulta 2: seleccione region_name de REGIONS donde region_id = '2';
El nombre de la regin a la cual un pas pertenece puede ser determinado por
la obtencin de su valor de REGION_ID. Este valor es usado para afiliarse a ello con la
fila en la comando de REGIONS con mismo REGION_ID. La consulta 1 recupera los
valores de columna asociados con la fila de la comando de COUNTRIES donde el
COUNTRY_ ID ='CA'. El valor REGION_ID de esta fila es 2. La consulta 2 trae las
Amricas REGION_NAME de la comando de REGIONS para la fila con
REGION_ID=2. Equijoining facilita la recuperacin de valores de columna de tablas
mltiples usando una pregunta sola.
312
Captulo 7:
La pruebas de Datos de Tablas Mltiples



La fuente y las tablas objetivo pueden ser cambiadas, entonces la comando de REGIONS podra ser el
la fuente y la comando de COUNTRIES podran ser el objetivo. Considere las dos
preguntas siguientes:

La consulta 1: seleccione * de REGIONS donde region_name ='Americas';
la Consulta 2: seleccione country_name de COUNTRIES donde region_id =
'2';
La consulta 1 trae una fila con un valor REGION_ID de 2. Participar en esto puso
marcha atrs
la manera permite que la pregunta siguiente sea preguntada: Qu COUNTRIES
pertenecen a la regin de Amricas? Las respuestas de la segunda pregunta son cinco
valores de COUNTRY_NAME: Argentina, Brasil, Canad, Mxico, y los Estados
Unidos de Amrica. Estos resultados pueden ser obtenidos de una pregunta sola que se
afilia a las tablas juntos. La lenguaje para realizar equijoins, nonequijoins, junturas
externas, y junturas enfadadas es introducida despus, junto con una discusin de la
sintaxis de juntura de Oracle tradicional.

Las Junturas naturales La juntura natural es puesta en prctica usando tres clusulas
de juntura posibles que usan las palabras claves siguientes en combinaciones diferentes:
JUNTURA NATURAL, UTILIZACIN, y EN.
Cuando la fuente y las tablas objetivo comparten columnas idnticamente llamadas, es
posible realizar una juntura natural entre ellos sin especificar una columna de juntura. Esto
es a veces referido como una juntura natural pura. En este guin, las columnas con los
mismos nombres en la fuente y tablas objetivo automticamente tienen que ver el uno con el
otro. Las filas con valores de columna correspondientes en ambas tablas son recuperadas.
La comando de COUNTRIES y REGIONS ambos comparte la columna REGION_ID.
Ellos pueden ser naturalmente afiliados sin especificar columnas de juntura, como mostrado
en las dos primeras preguntas en la Figura 7-1.
Las palabras claves de JUNTURA NATURALES instruyen el Oracle de identificar
columnas con nombres idnticos entre tablas objetivo y la fuente. A partir de entonces,
una juntura es implcitamente realizada entre ellos. En la primera pregunta, la columna
REGION_ID es identificada como la columna nica comnmente llamada en ambas
tablas. Las REGIONS son la comando de la fuente y aparecen despus el DE la clusula.
La comando objetivo es por lo tanto COUNTRIES. Para cada fila en la comando de
REGIONS, un partido para el valor de REGION_ID es buscado de todas las filas en la
comando de COUNTRIES. Un SET de resultado interino es construido conteniendo
filas que emparejan la condicin de juntura. Este SET es restringido entonces por el
DONDE clusula. En este instancia, porque el valor de COUNTRY_NAME debe ser
Canad, el NOMBRE de REGION_ de Amricas es devuelto.
La segunda pregunta muestra una juntura natural donde los COUNTRIES son la
comando de la fuente. El valor de REGION_ID para cada fila en la comando de
COUNTRIES es identificado y una bsqueda de una fila correspondiente en la comando
de REGIONS es iniciada. Si los partidos son encontrados, los resultados interinos son
limitados por cualquiera DONDE condiciones. Los COUNTRY_NAME de filas con
Amricas como su REGION_NAME son devueltos.
Escriba Select SENTENCIAS a Access Data Using Equijoins y Nonequijoins
313



FIGURA 7-1

Junturas naturales


























A veces ms control debe ser ejercido en cuanto a cual columnas usar para junturas.
Cuando hay nombres de columna idnticos en la fuente y apuntan tablas usted quiere
excluir como columnas de juntura, el formato de JOIN.USING puede ser usado. Recuerde que
el Oracle no impone ninguna regla que declara que las columnas con el mismo nombre
en dos tablas distintas deben tener una relacin el uno con el otro. La tercera pregunta
explcitamente especifica que la comando de REGIONS sea afiliada a la comando de
COUNTRIES basada en valores comunes en sus columnas REGION_ID. Esta sintaxis
permite que junturas naturales sean formadas en columnas especficas en vez de en todas
las columnas comnmente llamadas.
La cuarta pregunta demuestra el formato JOIN.ON de la juntura natural, que permite que
columnas de juntura sean explcitamente declaradas. Este formato no depende de las
columnas en la fuente y apunta tablas que tienen nombres idnticos. Esta forma es ms
general y es el formato de juntura natural el ms extensamente usado.
314
Captulo 7:
La pruebas de Datos de Tablas Mltiples



Tenga cuidado usando junturas naturales puras ya que los diseadores de base de
datos pueden adjudicar el mismo nombre a columnas claves o nicas. Estas
columnas pueden tener nombres como ID o SEQ_NO. Si una juntura natural
pura es intentada entre tales tablas, los resultados ambiguos e inesperados
pueden ser devueltos.

Junturas externas No todas las tablas comparten una relacin perfecta, donde cada
registro en la comando de la fuente puede ser emparejado a al menos una fila en la
comando objetivo. Hace falta de vez en cuando que las filas con la columna de juntura no
correspondiente tambin valoren ser recuperadas por una pregunta. Esto puede parecer
derrota el objetivo de junturas, pero tiene algunas ventajas prcticas.
Suliste a los EMPLOYEES y las tablas de DEPARTMENTS son afiliadas con valores
de DEPARTMENT_ID comunes. Los archivos de EMPLOYEES con valores de
DEPARTMENT_ID nulos son excluidos junto con valores ausentes de la comando de
DEPARTMENTS. Una juntura externa trae estas filas.

Las Junturas enfadadas Una juntura enfadada o el producto Cartesiano sacan sus
nombres de matemticas, donde tambin es referido como un producto enfadado entre dos
SETs o matrices. Esta juntura crea una fila de salida para cada combinacin de la fuente y
apuntan filas de comando.
Si la fuente y las tablas objetivo tienen tres y cuatro filas, respectivamente, una juntura
enfadada entre ellos resultados en (3 4 = 12) filas devueltas. Considere a las cuentas de
fila recuperadas de las preguntas en la Figura 7-2.
Los dos primeros recuentos de fila son realizados en los COUNTRIES y tablas de
REGIONS que ceden 25 y 4 filas respectivamente. La tercera pregunta cuenta el nmero
de filas volvi de una juntura enfadada de estas tablas y cede 100. La consulta 4 devolvera
100 archivos si el DONDE la clusula era ausente. Cada una de las cuatro filas en la
comando de REGIONS es afiliada a una fila de la comando de COUNTRIES. Cada fila
volvi contiene cada columna de ambas tablas.

La Sintaxis de Juntura de oracle que Una sintaxis de juntura de Oracle
patentada ha desarrollado lo que es estable y entendido por millones de usuarios. Esta
sintaxis tradicional es apoyada por el Oracle y est presente en sistemas de software a
travs del mundo. Usted sin duda encontrar la sintaxis de juntura de Oracle tradicional
que hace ahora el camino para la sintaxis ANSI-dcil estandarizada hablado en este
captulo.
Escriba Select SENTENCIAS a Access Data Using Equijoins y Nonequijoins
315



FIGURA 7-2

Juntura enfadada




















La sintaxis de juntura de Oracle tradicional apoya conexin natural, junturas
externas, y junturas Cartesianos, como mostrado en las preguntas siguientes:

La consulta 1: REGIONS region_name sentencias, COUNTRIES country_name
de REGIONS, COUNTRIES donde REGIONS region_id=countries.region_id; la
Consulta 2: seleccione last_name, department_name de EMPLOYEES,
DEPARTMENTS donde EMPLOYEES department_id (+) = DEPARTMENTS
department_id; la Consulta 3: seleccione * de REGIONS, COUNTRIES;
La consulta 1 realiza una juntura natural especificando la juntura como una condicin
en el
DONDE clusula. Esto es la diferencia ms significativa entre el tradicional y ANSI
SQL sintaxis de juntura. Tome la nota de la columna aliasing utilizacin de la
COMANDO.COLUMN_NAME nota para quitar la ambigedad a los nombres de
columna idnticos. Hablan de esta nota detalladamente ms tarde en este captulo. La
consulta 2 especifica la juntura entre la fuente y tablas objetivo como un DONDE
condicin. Hay un ms el smbolo encerrado entre parntesis (+) a la izquierda del signo
igual que indica al Oracle que una juntura externa correcta debe ser realizada. Esta
pregunta devuelve LAST_NAME de los EMPLOYEES y
316
Captulo 7:
La pruebas de Datos de Tablas Mltiples



sus valores de DEPARTMENT_NAME correspondientes. Adems, la juntura externa
recupera DEPARTMENT_NAME de las filas con valores de DEPARTMENT_ID no
actualmente adjudicados a cualquier archivo de empleado. La consulta 3 realiza una juntura
Cartesiano o enfadada por la exclusin de la condicin de juntura.




La sintaxis de juntura de Oracle tradicional es extensamente usada. Sin embargo,
el examen tasa su entendimiento de junturas y el ANSI SQL las formas de la su sintaxis. Est
preparado, aunque: algunas preguntas pueden dar un toque




su conocimiento de la sintaxis tradicional. Este conocimiento es til ya que la sintaxis de
Oracle tradicional es profundamente empotrada a travs de sistemas de software por todo el
mundo.


La conexin a Tablas Usando Sintaxis de SQL:1999
Antes del Oracle 9i, la sintaxis de juntura tradicional era la nica lenguaje disponible para
la juntura
tablas. Desde entonces, el Oracle ha introducido una nueva lenguaje que es dcil al
ANSI SQL:1999 estndares. Esto no ofrece ningunas ventajas de rendimiento sobre la
sintaxis tradicional. Las junturas naturales, externas, y enfadadas pueden ser escritas
usando tanto SQL:1999 como Oracle tradicional SQL.
La forma general de la select SENTENCIA usando ANSI SQL:1999 sintaxis es como
sigue:
SELECCIONE table1.column, table2.column DE table1 [la JUNTURA NATURAL
table2] | [SE UNE table2 USANDO (column_name)] | [SE AFILIAN a table2 EN
(table1.column_name = table2.column_name)] | [DEJADO | DERECHO | JUNTURA
EXTERNA LLENA table2 EN (table1.column_name = table2.column_name)] | [La
CRUZ SE AFILIA a table2]; Esto es disecado y los ejemplos son explicados en las
siguientes secciones. El
la forma general de la sintaxis patentada al Oracle tradicional relevante para junturas es
como sigue:
SELECCIONE table1.column, table2.column DE table1, table2 [DONDE
(table1.column_name = table2.column_name)] | [DONDE (table1.column_name (+) =
table2.column_name)] | [DONDE (table1.column_name) = table2.column_name) (+)];
Escriba Select SENTENCIAS a Access Data Using Equijoins y Nonequijoins
317



Si ningunas junturas o menos que junturas de n-1 son especificados en el DONDE las
condiciones de clusula, donde N se refiere al nmero de tablas en la pregunta, entonces
una juntura Cartesiano o enfadada es realizada. Si un nmero adecuado de condiciones de
juntura es especificado, entonces la primera clusula condicional opcional especifica una
juntura natural, mientras las dos segundas clusulas opcionales especifican la sintaxis para
junturas externas izquierdas y derechas.

Calificacin a Nombres de Columna Ambiguos
Las columnas con los mismos nombres pueden ocurrir en tablas implicadas en una
juntura. El
las columnas llamadas DEPARTMENT_ID y MANAGER_ID son encontradas tanto en
los EMPLOYEES como en tablas de DEPARTMENTS. La columna REGION_ID est
presente tanto en las REGIONS como en tablas de COUNTRIES. El listado de tales
columnas en una pregunta se hace problemtico cuando el Oracle no puede resolver su
origen. Las columnas con nombres nicos a travs de las tablas implicadas en una juntura
no causan ninguna ambigedad, y el Oracle puede resolver fcilmente su comando de la
fuente.
El problema de nombres de columna ambiguos es dirigido con la nota de punto. Una
columna puede ser prefijada por su nombre de tabla y un punto o smbolo de perodo para
designar su origen. Esto lo diferencia de una columna con el mismo nombre en otra
comando. La nota de punto puede ser usada en preguntas que implican cualquier nmero
de tablas. Referirse a algunas columnas usando la nota de punto no implica que todas las
columnas deben ser referidas de esta manera.
La nota de punto es realzada con aliases de comando. Un alias de comando proporciona
un suplente, nombre por lo general ms corto para una comando. Puede referirse una
columna como TABLE_NAME.COLUMN_NAME o TABLE_ALIAS.COLUMN_NAME.
Considere la pregunta mostrada en la Figura 7-3.
La comando de EMPLOYEES es aliased con el nombre corto EMP mientras la
comando de DEPARTMENTS no es. La clusula SENTENCIA se refiere al
EMPLOYEE_ID y columnas MANAGER_ID como EMP.EMPLOYEE_ID y
EMP.MANAGER_ID. La columna MANAGER_ID de la comando de DEPARTMENTS
se menciona como DEPARTMENTS MANAGER_ID. La calificacin a la columna
EMPLOYEE_ID usando la nota de punto es innecesaria porque hay slo una columna
con este nombre entre las dos tablas. Por lo tanto, no hay ninguna ambigedad.
La columna MANAGER_ID debe ser calificada para evitar la ambigedad porque es
presentado en ambas tablas. Ya que el formato de JOIN.USING es aplicado, slo
DEPARTMENT_ID es usado como la columna de juntura. Si una JUNTURA NATURAL
fuera empleada, tanto el DEPARTMENT_ID como las columnas MANAGER_ID seran
usados. Si la columna MANAGER_ID no fuera calificada, "ORA-00918:column
ambiguamente defini" el error sera devuelto. Si DEPARTMENT_ID fuera aliased,
"ORA-25154:column la parte de USAR la clusula no puede tener el calificador" error sera
levantado.
318
Captulo 7:
La pruebas de Datos de Tablas Mltiples



FIGURA 7-3

Nota de punto






























El Developer de SQL proporciona el ttulo MANAGER_ID a la primera referencia
hecha en la clusula SENTENCIA. La cuerda "_1" es automticamente aadida a la
segunda referencia, creando el ttulo MANAGER_ID_1.

La calificacin a referencias de columna con la nota de punto para indicar la
comando de una columna del origen tiene una ventaja de rendimiento. El tiempo
es ahorrado porque el Oracle es dirigido al instante a la comando apropiada y no
tiene que resolver el nombre de tabla.
Escriba Select SENTENCIAS a Access Data Using Equijoins y Nonequijoins



La Clusula de JUNTURA NATURAL
La sintaxis general para la clusula de JUNTURA NATURAL es como sigue:
SELECCIONE table1.column, table2.column
DE JUNTURA NATURAL table1 table2;
319
La juntura natural pura identifica las columnas con nombres comunes en table1 y
table2 e implcitamente se afilia a las tablas usando todas estas columnas. Las
columnas en la clusula SENTENCIA pueden ser calificadas usando la nota de punto a
menos que ellos sean una de las columnas de juntura. Considere las preguntas
siguientes:

Pregunta de pregunta donde Pregunta de Pregunta

1: seleccione * de LOCATIONS COUNTRIES de juntura naturales; 2: seleccione * de
LOCATIONS, LOCATIONS country_id de COUNTRIES = COUNTRIES country_id; 3:
seleccione * de JOBS COUNTRIES de juntura naturales; 4: seleccione * de JOBS,
COUNTRIES;
La juntura natural identifica columnas con nombres comunes entre las dos tablas.
En la consulta 1, COUNTRY_ID ocurre en ambas tablas y se hace la columna de juntura.
La consulta 2 es escrita usando la sintaxis de Oracle tradicional y recupera las mismas
filas que la consulta 1. A menos que usted sea familiar con las columnas en la fuente y
apunte tablas, las junturas naturales deben ser usadas con la precaucin, ya que las
condiciones de juntura son automticamente formadas entre todas las columnas con
nombres compartidos.
La consulta 3 realiza una juntura natural entre tablas de COUNTRIES y los JOBS. No
hay ningunas columnas con nombres idnticos, causando un producto Cartesiano. La
consulta 4 es equivalente a la consulta 3, y una juntura Cartesiano es realizada usando la
sintaxis de Oracle tradicional.
La juntura natural es simple, pero propensa a una debilidad fundamental. Esto sufre el
riesgo que dos columnas con el mismo nombre no pudieran tener ninguna relacin y
pueden no tener hasta tipos de datos compatibles. En la Figura 7-4, los COUNTRIES,
LAS REGIONS, y las tablas SALE_REGIONS son descritos. La comando
SALES_REGIONS fue construida para ilustrar el punto importante siguiente: Aunque
esto tenga REGION_ ID en comn con la comando de COUNTRIES, no puede ser
naturalmente afiliado a ello porque sus tipos de datos son incompatibles. Los tipos de
datos de los COUNTRIES. REGION_ID y las columnas
SALES_REGIONS.REGION_ID son el NMERO y VARCHAR2, respectivamente.
Los datos de carcter no pueden ser implcitamente convertidos en datos numricos y
"ORA-01722: el nmero invlido" error es incrementado. Las REGIONS.REGION_ID
columna son del NMERO de tipo y sus datos estn relacionados con los datos en la
comando de COUNTRIES. Por lo tanto, la juntura natural entre la comando de
COUNTRIES y REGIONS trabaja perfectamente.
320
Captulo 7:
La pruebas de Datos de Tablas Mltiples



FIGURA 7-4

La juntura natural



























EJERZA 7-1 Utilizacin de la JUNTURA NATURAL
La comando JOB_HISTORY comparte tres columnas idnticamente llamadas con el
Comando de EMPLOYEES: EMPLOYEE_ID, JOB_ID, y DEPARTMENT_ID. Se
requiere que usted describa las tablas y traiga el EMPLOYEE_ID, JOB_ID,
DEPARTMENT_ID, LAST_NAME, HIRE_DATE, y valores de END_DATE para todas
las filas recuperadas usando una juntura natural pura. El alias la comando de
EMPLOYEES como EMP y la comando JOB_HISTORY como JH y uso puntea la nota
donde posible.

1. Comience SQL*Plus y conecte al esquema de HORA. 2. Las tablas son descritas
usando los comandos EMPLOYEES de DESC y
El DESC JOB_HISTORY, y las columnas con nombres idnticos y sus tipos de
datos puede ser examinado.
Escriba Select SENTENCIAS a Access Data Using Equijoins y Nonequijoins



3. El DE la clusula es
DE JOB_HISTORY JH
4. La clusula de JUNTURA es
EMPLOYEES DE JUNTURA NATURALES EMP
5. La clusula SENTENCIA es
SELECCIONE EMP.LAST_NAME, EMP.HIRE_DATE, JH.END_DATE
321
6. La ejecucin de esta select devuelve una fila sola con mismo EMPLOYEE_ID,
JOB_ID, y DEPARTMENT_ID valoran en ambas tablas y son mostrados en la
ilustracin siguiente:



























La JUNTURA Natural USANDO Clusula
El formato de la sintaxis para la JUNTURA natural USANDO la clusula es
como sigue:
SELECCIONE table1.column, table2.column
DE table1 SE AFILIAN A LA UTILIZACIN de table2 (join_column1,
join_column2.);
322
Captulo 7:
La pruebas de Datos de Tablas Mltiples



Mientras la juntura natural pura contiene la palabra clave NATURAL en su sintaxis, el
La sintaxis de JOIN.USING no hace. Un error es levantado si las palabras claves NATURALES y
UTILIZACIN ocurren en la misma clusula de juntura. La clusula JOIN.USING
permite que una o varias columnas equijoin sean explcitamente especificadas entre
parntesis despus de la palabra clave de UTILIZACIN. Esto evita los defectos
asociados con la juntura natural pura. Muchas situaciones exigen que las tablas slo
sean afiliadas en ciertas columnas, y este formato satisface este requisito. Considere las
preguntas siguientes:

Pregunta 1: seleccione * de COUNTRIES de juntura de LOCATIONS usando
(country_id); Pregunta 2: seleccione * de LOCATIONS, COUNTRIES donde
LOCATIONS country_id = COUNTRIES country_id; Pregunta 3:
seleccione * de la utilizacin de COUNTRIES de juntura de JOBS;
La consulta 1 especifica que las LOCATIONS y las tablas de COUNTRIES deben
ser
afiliado en valores de columna COUNTRY_ID comunes. Todas las columnas de estas
tablas son recuperadas para las filas con valores de columna de juntura
correspondientes. La consulta 2 muestra una pregunta tradicionalmente especificada
que recupera las mismas filas que la consulta 1. La consulta 3 ilustra que una juntura
Cartesiano no puede ser por casualidad especificada con la sintaxis JOIN.USING desde
slo las columnas con nombres compartidos son permitidas despus de la palabra clave de
UTILIZACIN. Las columnas de juntura no pueden ser calificadas usando nombres
de tabla o aliases cuando se los refieren. Ya que esta sintaxis de juntura potencialmente
excluye algunas columnas con nombres idnticos de la clusula de juntura, stos deben
ser calificados si se los refieren para evitar la ambigedad.
Como la Figura 7-5 muestra, el JOB_HISTORY y las tablas de EMPLOYEES fueron
afiliados basados en la presencia de valores iguales en su JOB_ID y columnas
EMPLOYEE_ID. Las filas que se conforman con esta condicin de juntura son
recuperadas. Estas tablas comparten tres columnas idnticamente llamadas. La sintaxis
JOIN.USING permite la especificacin de slo dos de stos como columnas de juntura.
Note que aunque la columna tercera idnticamente llamada sea DEPARTMENT_ID,
es calificada con un alias de comando para evitar la ambigedad. Sin embargo, las
columnas de juntura en la clusula SENTENCIA no pueden ser calificadas con aliases
de comando.

La JUNTURA Natural EN Clusula
El formato de la sintaxis para la JUNTURA natural EN la clusula es como sigue:
SELECCIONE table1.column, table2.column
DE table1 SE AFILIAN a table2 EN (table1.column_name = table2.column_name);
Escriba Select SENTENCIAS a Access Data Using Equijoins y Nonequijoins
323



FIGURA 7-5

Juntura natural usando la
JOIN. clusula de
UTILIZACIN





















La juntura natural pura y las clusulas JOIN.USING dependen de columnas de juntura con
nombres de columna idnticos. La clusula JOIN.ON permite la especificacin explcita de
columnas de juntura, sin tener en cuenta sus nombres de columna. Esto es la forma ms
flexible y extensamente usada de las clusulas de juntura. El EN y palabras claves
NATURALES no puede aparecer juntos en una clusula de juntura. Las columnas
equijoin son totalmente calificadas de table1.column1 = table2.column2 y son
opcionalmente especificadas entre parntesis despus el EN la palabra clave. Las
preguntas siguientes ilustran la clusula JOIN.ON:

La consulta 1: seleccione * de DEPARTMENTS d acompaan a EMPLOYEES e en
(e.employee_id=d.department_id); la Consulta 2: seleccione * de
EMPLOYEES e, DEPARTMENTS d donde e.employee_id=d.department_id;
324
Captulo 7:
La pruebas de Datos de Tablas Mltiples




GUIN & SOLUCIN

Se requiere que usted recupere la informacin de tablas mltiples, agrupe los resultados, y aplique una funcin
agregada a ellos. Puede un grupo funcionar ser usado contra datos de fuentes de comando mltiples? Afilindose a
dos tablas, hay un riesgo que entre ellos ellos contengan nombres de columna comunes. Sabe el oracle qu tablas
traer datos de si tales columnas estn presentes en la lista SENTENCIA?

La clusula de JUNTURA NATURAL es usada para afiliarse a filas de dos tablas basadas en columnas con nombres
comunes que comparten valores idnticos. Es posible afiliarse a dos tablas basadas en algunas columnas compartidas
y no todos ellos?

S. La conexin a tablas mltiples por ltimo cede un SET de datos que comprenden una o varias filas y columnas. Una
vez que el dataset es creado, las funciones agregadas lo tratan como si los datos provinieron de una fuente. No. El
oracle no sabe de que tabula tales columnas provienen, y un error es levantado. Las referencias de columna ambiguas
pueden ser evitadas usando a calificadores. Los calificadores emplean la nota de punto para clarificar la comando de una
columna del origen. S. La clusula recomendada por afiliarse naturalmente a dos tablas basadas en una o varias de las
columnas con nombres idnticos es JOIN.USING. Un par de soportes sigue la clusula de UTILIZACIN en la cual las
columnas de juntura no calificadas son especificadas.



La consulta 1 recupera todos los valores de columna tanto de los DEPARTMENTS
como de tablas de EMPLOYEES para las filas que encuentran una condicin equijoin.
Esta condicin es realizada por valores de EMPLOYEE_ID que emparejan valores de
DEPARTMENT_ID en la comando de DEPARTMENTS. La sintaxis de Oracle
tradicional en la consulta 2 devuelve los mismos resultados que la consulta 1. Note las
semejanzas entre la condicin de juntura tradicional especificada en el DONDE clusula
y la condicin de juntura especificada despus el EN la palabra clave.
La columna START_DATE en la comando JOB_HISTORY es afiliada a la columna
de FECHA HIRE_ en la comando de EMPLOYEES en la Figura 7-6. Este equijoin
recupera los detalles de EMPLOYEES que trabajaron para la organizacin y cambiaron
JOBS.


EJERZA 7-2 Utilizacin de la Clusula JOIN.ON NATURAL
Cada registro en la comando de DEPARTMENTS tiene una columna MANAGER_ID
correspondiente
un EMPLOYEE_ID valora en la comando de EMPLOYEES. Se requiere que usted
produzca un informe con una columna aliased como gerentes. Cada fila debe contener una
oracin del formato FIRST_NAME LAST_NAME es el gerente del
DEPARTMENT_NAME
Escriba Select SENTENCIAS a Access Data Using Equijoins y Nonequijoins
325



FIGURA 7-6

Juntura natural usando la
clusula JOIN.ON























departamento. El alias la comando de EMPLOYEES como E y la comando de
DEPARTMENTS como D y uso puntea la nota donde posible.

1. Comience al Developer SQL y conecte al esquema de HORA. 2. La columna de
gerentes puede ser construida concadenando el requerido
artculos y separacin de ellos con espacios.
3. La clusula SENTENCIA es
SELECCIONE E.FIRST_NAME ||' '|| E.LAST_NAME ||' es el gerente del '||
D.DEPARTMENT_NAME ||' departamento.' "Gerentes"
326
Captulo 7:
La pruebas de Datos de Tablas Mltiples



4. El DE la clusula es
DE LOS EMPLOYEES E 5. La clusula JOIN.ON es
DEPARTMENTS DE JUNTURA D EN (E. EMPLOYEE_ID=D.MANAGER_ID).
6. La ejecucin de esta select devuelve 11 filas que describen a los gerentes de cada uno
departamento como mostrado en la ilustracin siguiente:
Escriba Select SENTENCIAS a Access Data Using Equijoins y Nonequijoins



De N-camino Junturas y Condiciones de Juntura Adicionales
327
Las junturas slo habladas fueron demostradas usando dos tablas. No hay ninguna
restriccin del nmero de tablas que pueden estar relacionadas usando junturas. La
tercera forma normal consiste en un SET de tablas conectadas por una serie de relaciones
de clave fornea y primarias. Cruzar estas relaciones usando junturas habilita la
recuperacin consecuente y confiable de datos. Cuando junturas mltiples existen en una
select, ellos son evaluados de la izquierda a la derecha. Considere la pregunta siguiente
usando junturas naturales puras:

seleccione r.region_name, c.country_name, l.city, d.department_name de
DEPARTMENTS d LOCATIONS de juntura naturales l COUNTRIES de juntura
naturales c REGIONS de juntura naturales r
La juntura entre DEPARTMENTS y LOCATIONS crea un nterin
SET de resultado que consiste en 27 filas. Estas tablas proporcionan columnas de
CIUDAD y el DEPARTMENT_NAME. Este SET es naturalmente afiliado a la
comando de COUNTRIES. Ya que el SET interino no contiene la columna
COUNTRY_ID, una juntura Cartesiano es realizada. Las 27 filas interinas son afiliadas
a las 25 filas en la comando de COUNTRIES, cediendo un nuevo SET de resultados
interino con 675 (27 25) filas y tres columnas: DEPARTMENT_NAME, CIUDAD, y
COUNTRY_NAME. Este SET es naturalmente afiliado a la comando de REGIONS.
Otra vez, una juntura Cartesiano ocurre porque la columna REGION_ID es ausente del
SET interino. El SET de resultado final contiene 2700 (675 ? 4) filas y cuatro columnas.
La utilizacin de junturas naturales puras con tablas mltiples es susceptible de errores y
no recomendada.
El JOIN.USING y la sintaxis JOIN.ON son mejor satisfechos para unirse mltiple
tablas. La pregunta siguiente se afilia a cuatro tablas usando la sintaxis de juntura natural
pura:

seleccione region_id, country_id, c.country_name, l.city, d.department_name de
DEPARTMENTS d LOCATIONS de juntura naturales l COUNTRIES de juntura naturales
c REGIONS de juntura naturales r
Esta pregunta correctamente cede 27 filas en el SET de resultados finales desde la
juntura requerida
las columnas son puestas en una lista en la clusula SENTENCIA. La pregunta siguiente
demuestra como la clusula JOIN.ON es usada para traer las mismas 27 filas. Una condicin de
juntura slo puede referirse a columnas en su alcance. En el ejemplo siguiente, la juntura de
DEPARTMENTS a LOCATIONS puede no referirse a columnas en los COUNTRIES o
tablas de REGIONS, pero la juntura entre COUNTRIES y REGIONS puede referirse a
cualquier columna de las cuatro tablas implicadas en la pregunta.

seleccione r.region_name, c.country_name, l.city, d.department_name de
DEPARTMENTS d LOCATIONS de juntura l en (l.location_id=d.location_id)
COUNTRIES de juntura c en (c.country_id=l.country_id) REGIONS de juntura
r en (r.region_id=c.region_id)
328
Captulo 7:
La pruebas de Datos de Tablas Mltiples



La clusula JOIN.USING tambin puede ser usada para afiliarse a estas cuatro tablas como sigue:

seleccione r.region_name, c.country_name, l.city, d.department_name de DEPARTMENTS d
LOCATIONS de juntura l usando (location_id) COUNTRIES de juntura c usando (country_id)
REGIONS de juntura r usando (region_id)
EL DONDE la clusula es usada para especificar condiciones que restringen el SET de resultados de a
pregunte si esto contiene junturas o no. La clusula JOIN.ON tambin es usada para especificar
condiciones que limitan el SET de resultados creado por la juntura. Considere las dos
preguntas siguientes:

La consulta 1: seleccione d.department_name de DEPARTMENTS d LOCATIONS
de juntura l en (l. LOCATION_ID=d. LOCATION_ID) donde d.department_name
como 'P %'

La consulta 2: seleccione d.department_name de DEPARTMENTS d LOCATIONS
de juntura l en (l. LOCATION_ID=d. LOCATION_ID y d.department_name como
'P %')
La consulta 1 usa un DONDE clusula para restringir las 27 filas creadas por
equijoining el
Las tablas de LOCATIONS y DEPARTMENTS basadas en su LOCATION_ID valoran
a los tres que contienen valores de DEPARTMENT_ID que comienzan con la carta P. La
consulta 2 pone en prctica la condicin dentro de los soportes del EN la subclusula y
devuelve las mismas tres filas.
Cinco tablas son afiliadas en la Figura 7-7, causando una lista que describe a los
EMPLOYEES de ganancia superiores e informacin geogrfica sobre sus
DEPARTMENTS.





Hay tres formatos de juntura naturales. La juntura natural pura usa la clusula
de JUNTURA NATURAL y se afilia a dos tablas basadas en todas las columnas con nombres
compartidos. Los otros dos formatos usan el JOIN.USING y clusulas JOIN.ON y tambin
son referidos junturas como naturales. Ellos no usan la palabra clave NATURAL.





Preste la atencin a la sintaxis, desde una clusula de juntura tal como SENTENCIA * DE LA
JUNTURA NATURAL TABLE1 TABLE2 USANDO (LA COLUMNA) puede parecer correcto, pero
es, de hecho, sintcticamente incorrecto. Recuerde la UTILIZACIN, EN, y las palabras claves
NATURALES son mutuamente exclusivas en el contexto de la misma clusula de juntura.
Escriba Select SENTENCIAS a Access Data Using Equijoins y Nonequijoins
329



FIGURA 7-7

El N-camino se une y
condiciones de juntura
adicionales























Nonequijoins
Nonequijoins emparejan valores de columna de tablas diferentes basadas en una
expresin de desigualdad. El valor de la columna de juntura en cada fila en la comando de
la fuente es comparado con los valores correspondientes en la comando objetivo. Un
partido es encontrado si la expresin usada en la juntura, basada en un operador de
desigualdad, evala al verdadero. Cuando tal juntura es construida, un nonequijoin es
realizado.
Un nonequijoin es especificado usando la sintaxis JOIN.ON, pero la condicin de juntura
contiene a un operador de desigualdad en vez de un signo igual.
330
Captulo 7:
La pruebas de Datos de Tablas Mltiples



El formato de la sintaxis para una clusula nonequijoin es como sigue: SELECCIONE table1.column,
table2.column DE table1 [SE UNEN table2 EN (table1.column_name <table2.column_name)] | [SE UNEN
table2 EN (table1.column_name> table2.column_name)] | [SE UNEN table2 EN (table1.column_name <=
table2.column_name)] | [SE UNEN table2 EN (table1.column_name> = table2.column_name)] | [SE
AFILIAN a table2 EN (table1.column ENTRE table2.col1 Y table2.col2)] | Consideran las 15 primeras filas
devueltas por la pregunta en la Figura 7-8. Los EMPLOYEES
la comando es nonequijoined a la comando de JOBS basada en la condicin de juntura
de desigualdad (2*E.SALARY <J.MAX_SALARY). La comando de JOBS almacena la
variedad de sueldo para JOBS diferentes en la organizacin. El valor de SUELDO para
cada registro de empleado es



FIGURA 7-8

Nonequijoins
Afliese a una Comando a S Usando una
Autojuntura
331



doblado y comparado con todo MAX_SALARY valora en la comando de JOBS. Si la
condicin de juntura evala al verdadero, la fila es devuelta.
Las dos primeras filas muestran al empleado con un LAST_NAME de Abel que
actualmente tiene un valor JOB_ID de SA_REP y gana un SUELDO de 11000. stos son
las slo dos filas en la comando de JOBS que satisfacen la condicin de juntura de
desigualdad (2*E.SALARY <J.MAX_SALARY) para este registro de empleado.

Nonequijoins no son comnmente usados. El ENTRE el operador de variedad a
menudo aparece con condiciones nonequijoin. Es ms simple usar un ENTRE el
operador en una condicin que dos condiciones nonequijoin basadas en el
menos que o igual a (<=) y el mayor que o igual a (> =) operadores.


OBJETIVO DE CERTIFICACIN 7.02


Afliese a una Comando a S Usando una Autojuntura
El almacenaje de datos jerrquicos en una comando relacional sola es llevado a cabo
asignando en
la menor parte dos columnas por fila. Una columna almacena un identificador del registro
paternal de la fila y las segundas tiendas el identificador de la fila. La asociacin de filas el
uno con el otro basado en una relacin jerrquica requiere que el Oracle se afilie a una
comando a s. Hablan de esta tcnica de autojuntura en la siguiente seccin.

La conexin a una Comando a S Usando la Clusula JOIN.ON
Suliste que hay una necesidad de almacenar un rbol genealgico en una comando
relacional. Hay varios
enfoques uno podra tomar. Una opcin es usar una comando llamada la FAMILIA con
columnas llamadas ID, NOMBRE, MOELR_ID, y FAELR_ID, donde cada fila almacena
nombre de una persona, Nmero de identificacin nico, y los valores de ID para sus
padres.
Cuando dos tablas son afiliadas, cada fila de la comando de la fuente es sujetada a la
condicin de juntura con filas de la comando objetivo. Si la condicin evala al
verdadero, entonces la fila afiliada, consistiendo en columnas de ambas tablas, es
devuelta.
Cuando las columnas de juntura provienen de la misma comando, se requiere una
autojuntura. Conceptualmente, la comando de la fuente es duplicada para crear la
comando objetivo. La autojuntura trabaja como una juntura regular entre estas tablas.
Note que, internamente, el Oracle no hace
332
Captulo 7:
La pruebas de Datos de Tablas Mltiples



duplique la comando y esta descripcin es simplemente proporcionada para explicar el
concepto de la autoconexin. Considere las cuatro preguntas siguientes:

La consulta 1: seleccione id, nombre, faelr_id de la familia; la Consulta
2: seleccione el nombre de la familia donde id=&faelr_id; la Consulta
3: seleccione al pap f1.name, f2.name Nio de la familia f1 familia de
juntura f2 en (f1.id=f2.faelr_id)
Para identificar al padre de una persona en la comando de FAMILIA, usted podra usar la
consulta 1 para ponerse
ID de aquella persona, NOMBRE, y valor de FAELR_ID. En la consulta 2, el valor de
FAELR_ID obtenido de la primera pregunta puede ser substituido para obtener el valor de
NOMBRE del padre. Note que amba informacin de la fuente de consultas 1 y 2 de la
comando de FAMILIA.
La consulta 3 realiza una autojuntura con la clusula JOIN.ON por aliasing la comando
de FAMILIA como f1 y f2. El oracle trata stos como tablas diferentes aunque ellos
sealen a la misma comando fsica. El primer acontecimiento de la comando de
FAMILIA, aliased como f1, es designado como la comando de la fuente, mientras el
segundo acontecimiento, aliased como f2, es adjudicado como la comando objetivo. La
condicin de juntura en el EN la clusula es de la fuente child_ de formato
id=target.parent_id. La figura 7-9 muestra una muestra de datos de FAMILIA y demuestra
una autojuntura de tres caminos a la misma comando.


EJERZA 7-3 Realizacin de
una Autojuntura
Hay una relacin jerrquica entre EMPLOYEES y sus gerentes. Ya que cada fila en la
comando de EMPLOYEES la columna MANAGER_ID almacena el EMPLOYEE_ID del
gerente de cada empleado. Usando una autojuntura en la comando de EMPLOYEES, se
requiere que usted recupere LAST_NAME del empleado, EMPLOYEE_ID, LAST_NAME
del gerente, y DEPARTMENT_ID del empleado para las filas con valores
DEPARMENT_ID de 10, 20, o 30. Alias la comando de EMPLOYEES como E y el
segundo instancia de la comando de EMPLOYEES como M de Clase los resultados
basados en la columna DEPARTMENT_ID.

1. Comience al Developer SQL y conecte al esquema de HORA. 2. La clusula
SENTENCIA es
SELECCIONE A EMPLEADO E.LAST_NAME, E.EMPLOYEE_ID,
E.MANAGER_ID, M LAST_NAME DE GERENTE, E.DEPARTMENT_ID.
3. El DE la clusula con comando de la fuente y alias es
DE EMPLOYEES E.
Afliese a una Comando a S Usando una
Autojuntura
333



FIGURA 7-9

Autojuntura






























4. La clusula JOIN.ON con la comando objetivo de aliased es
ACOMPAE A EMPLOYEES M EN
(E.MANAGER_ID=M.EMPLOYEE_ID). 5. El DONDE clusula es
DONDE E.DEPARTMENT_ID EN (10,20,30). 6. El PEDIDO POR
clusula es
PEDIDO POR E.DEPARTMENT_ID.
334
Captulo 7:
La pruebas de Datos de Tablas Mltiples



7. La ejecucin de esta select devuelve nueve filas que describen a los gerentes de cada uno
empleado en estos DEPARTMENTS como mostrado en la ilustracin siguiente:





























OBJETIVO DE CERTIFICACIN 7.03


Datos de vista Que no Encuentran una Condicin de
Juntura Usando Junturas Externas
Equijoins emparejan filas entre dos tablas basadas en la igualdad de los datos de columna
almacenado en cada comando. Nonequijoins confan en filas correspondientes entre tablas
basadas en una condicin de juntura que contiene una expresin de desigualdad. Las filas
de comando objetivo sin la columna de juntura correspondiente en la comando de la fuente
no se requieren por lo general. Cuando ellos son
Datos de vista Que no Encuentran una Condicin de Juntura Usando Junturas
Externas
335



requerido, sin embargo, una juntura externa es usada para traerlos. Varias variaciones de
junturas externas pueden ser usadas segn si los datos de columna de juntura faltan en la
fuente o tablas objetivo o ambos. Estas tcnicas de juntura externas son descritas en los
temas siguientes:

Interior contra junturas externas junturas externas Izquierdas junturas
externas Correctas junturas externas Llenas

Interior contra Junturas Externas
Cuando equijoins y nonequijoins son realizados, filas de la fuente y objetivo
las tablas son emparejadas usando una condicin de juntura formulada con operadores de
desigualdad e igualdad, respectivamente. stos se mencionan como junturas interiores. Una
juntura externa es realizada cuando las filas, que no son recuperadas por una juntura
interior, son devueltas.
Dos tablas a veces comparten la relacin de nio paternal o un detalle del maestro. En el
esquema de HORA de muestra hay varios pares de tablas con tal relacin. Un par es
tablas de EMPLOYEES y los DEPARTMENTS. La comando de DEPARTMENTS
almacena una lista de maestro de valores de DEPARTMENT_ID y
DEPARTMENT_NAME. Cada los EMPLOYEES registran hace reprimir una columna
DEPARTMENT_ID a ser un valor que existe en la comando de DEPARTMENTS o
nulo. Esto lleva a uno de los tres guiones siguientes. El cuarto guin podra ocurrir si la
coaccin entre las tablas fuera borrada.

1. Una fila de empleado tiene un valor de DEPARTMENT_ID que empareja una fila
en el
Comando de DEPARTMENTS. 2. Una fila de empleado tiene un valor nulo en su
columna DEPARTMENT_ID. 3. Hay filas en la comando de DEPARTMENTS con
DEPARTMENT_ID
los valores que no son almacenados en ningn archivo de empleado.
4. Una fila de empleado tiene un valor de DEPARTMENT_ID que no es presentado
en el
Comando de DEPARTMENTS.

El primer guin describe una juntura interior natural entre las dos tablas. Los segundos
y terceros guiones causan muchos problemas. La conexin a los EMPLOYEES y tablas
de DEPARTMENTS causa filas de empleado excluidas. Una juntura externa puede ser
usada para incluir estas filas quedadas hurfanas en el SET de resultados. El cuarto guin
debera ocurrir raramente en una base de datos bien diseada, porque las coacciones de
clave fornea prevendran la introduccin de archivos de nio sin valores paternales. Ya
que esta fila ser excluida por una juntura interior, puede ser recuperada usando una
juntura externa.
336
Captulo 7:
La pruebas de Datos de Tablas Mltiples



Una juntura externa izquierda entre la fuente y tablas objetivo devuelve los resultados de un
la juntura interior as como las filas de la comando de la fuente excluida por aquella
juntura interior. Una juntura externa correcta entre la fuente y tablas objetivo devuelve
los resultados de una juntura interior as como filas de la comando objetivo excluida por
aquella juntura interior. Si una juntura devuelve los resultados de una juntura interior as
como filas de ambos la fuente y tablas objetivo excluidas por aquella juntura interior,
entonces una juntura externa llena ha sido realizada.


Junturas Externas
izquierdas
El formato de la sintaxis para la clusula de JUNTURA EXTERNA IZQUIERDA es
como siga:
SELECCIONE table1.column, table2.column
DE table1 DEJ LA JUNTURA EXTERNA table2 EN (table1.column = table2.column);
Una juntura externa izquierda realiza una juntura interior de table1 y table2 basado en
el
condicin especificada despus el EN palabra clave. Cualquier fila de la comando a la
izquierda de la palabra clave de JUNTURA excluida para no realizar la condicin de
juntura tambin es devuelta. Considere las dos preguntas siguientes:

La consulta 1: seleccione e.employee_id, e.department_id EMP_DEPT_ID,
d.department_id DEPT_DEPT_ID, d.department_name de DEPARTMENTS el d
abandon a EMPLOYEES de juntura externos e en (d. DEPARTMENT_ID=e.
DEPARTMENT_ID) donde d.department_name como 'P %' la Consulta 2:
seleccione e.employee_id, e.department_id EMP_DEPT_ID, d.department_id
DEPT_DEPT_ID, d.department_name de DEPARTMENTS los d acompaan a
EMPLOYEES e en (d. DEPARTMENT_ID=e. DEPARTMENT_ID) donde
d.department_name como 'P %'
Las consultas 1 y 2 son idnticas excepto las clusulas de juntura, que tienen las
palabras claves
JUNTURA EXTERNA IZQUIERDA y JUNTURA, respectivamente. La consulta 2
realiza una juntura interior y siete filas son devueltas. Estas filas comparten valores de
DEPARTMENT_ID idnticos en ambas tablas. La consulta 1 devuelve las mismas siete
filas y una fila adicional. Esta fila suplementaria es obtenida de la comando a la izquierda
de la palabra clave de JUNTURA, que es la comando de DEPARTMENTS. Es la fila que
contiene detalles del departamento de Nmina. La juntura interior no incluye esta fila ya
que ningunos EMPLOYEES son adjudicados actualmente al departamento.
Una juntura externa izquierda es mostrada en la Figura 7-10. La juntura interior
produce 27 filas con emparejar valores de LOCATION_ID en ambas tablas. Hay 43 filas
en total, que implica que 16 filas fueron recuperadas de la comando de LOCATIONS,
que est en el
Datos de vista Que no Encuentran una Condicin de Juntura Usando Junturas
Externas
337



FIGURA 7-10

Juntura externa izquierda




























dejado de la palabra clave de JUNTURA. Ninguna de las filas de la comando de
DEPARTMENTS contiene cualquier de estos 16 valores de LOCATION_ID.


Junturas Externas
correctas
El formato de la sintaxis para la clusula de JUNTURA EXTERNA
CORRECTA es como sigue:
SELECCIONE table1.column, table2.column
DE JUNTURA EXTERNA CORRECTA table1 table2 EN (table1.column =
table2.column);
338
Captulo 7:
La pruebas de Datos de Tablas Mltiples



Una juntura externa correcta realiza una juntura interior de table1 y table2 basado en la juntura
condicin especificada despus el EN palabra clave. Las filas de la comando a la derecha
de la palabra clave de JUNTURA, excluida por la condicin de juntura, tambin son
devueltas. Considere la pregunta siguiente:

seleccione e.last_name, d.department_name de DEPARTMENTS d EMPLOYEES de
juntura externos correctos e en (e.department_id=d.department_id) donde
e.last_name como 'G %';
La juntura interior produce siete filas que contienen detalles para los EMPLOYEES
con
Los valores de LAST_NAME que comienzan con G. La comando de EMPLOYEES es a
la derecha de la palabra clave de JUNTURA. Cualquier archivo de empleado que no se
conforme con la condicin de juntura es incluido, a condicin de que ellos se conformen
con el DONDE condicin de clusula. Adems, la juntura externa correcta trae un
registro de EMPLEADO con un LAST_NAME de Subvencin. Este registro
actualmente tiene un valor de DEPARTMENT_ID nulo. La juntura interior excluye el
registro ya que ningn DEPARTMENT_ID es adjudicado a este empleado.
Una juntura externa correcta entre el JOB_HISTORY y tablas de EMPLOYEES es
mostrada en la Figura 7-11. La comando de EMPLOYEES es a la derecha de la palabra
clave de JUNTURA. La palabra clave DISTINTA elimina combinaciones duplicadas de
valores de JOB_ID de las tablas. Los resultados muestran los JOBS que los
EMPLOYEES se han marchado histricamente. Los JOBS que ningunos EMPLOYEES
han dejado tambin son devueltos.




Hay tres tipos de formatos de juntura externos. Cada uno de ellos realiza una
juntura interior antes incluso filas la condicin de juntura excluida. Si una juntura externa
izquierda es realizada entonces filas excluidas por el


Junturas Externas llenas




la juntura interior, a la izquierda de la palabra clave de JUNTURA, tambin es devuelta. Si una
juntura externa correcta es realizada entonces las filas excluidas por la juntura interior, a la
derecha de la palabra clave de JUNTURA, son devueltas tambin.
El formato de la sintaxis para la clusula de JUNTURA EXTERNA LLENA es
como sigue:
SELECCIONE table1.column, table2.column
DE JUNTURA EXTERNA LLENA table1 table2 EN (table1.column =
table2.column);
Datos de vista Que no Encuentran una Condicin de Juntura Usando Junturas
Externas
339



FIGURA 7-11

Juntura externa correcta



























Una juntura externa llena devuelve los resultados combinados de una juntura externa
derecha e izquierda. Una juntura interior de table1 y table2 es realizada antes de que las
filas excluidas por la condicin de juntura de ambas tablas sean fusionadas en el SET de
resultados.
La sintaxis de juntura de Oracle tradicional no apoya una juntura externa llena, que
es tpicamente realizada combinando los resultados de una juntura externa derecha e
izquierda usando al operador de SET de UNIN descrito en el Captulo 9. Considere la
juntura externa llena mostrada en la Figura 7-12. El DONDE la clusula que restringe los
resultados a filas con valores de DEPARTMENT_ID nulos muestra las filas hurfanas en
ambas tablas. Hay un registro en la comando de EMPLOYEES que no tiene ningunos
valores de DEPARTMENT_ID, y hay 16 DEPARTMENTS a los cuales ningunos
EMPLOYEES pertenecen.
340
Captulo 7:
La pruebas de Datos de Tablas Mltiples



FIGURA 7-12

Juntura externa llena


























EJERZA 7-4 Realizacin de una Juntura externa
La comando de DEPARTMENTS contiene detalles de todos los DEPARTMENTS en la
organizacin.
Se requiere que usted recupere el DEPARTMENT_NAME y valores de
DEPARTMENT_ID para aquellos DEPARTMENTS a los cuales ningunos
EMPLOYEES son adjudicados actualmente.

1. Comience SQL*Plus y conecte al esquema de HORA. 2. La clusula
SENTENCIA es
SELECCIONE D.DEPARTMENT_NAME, D.DEPARTMENT_ID.
Datos de vista Que no Encuentran una Condicin de Juntura Usando Junturas
Externas




GUIN & SOLUCIN
341

Los datos en dos tablas a las cuales usted desea afiliarse estn relacionados, pero no comparten ninguna columna
idnticamente llamada. Es posible afiliarse a tablas usando columnas que no comparten el mismo nombre? Usted desea
dividir al personal en cuatro grupos nombrados por las cuatro REGIONS en la comando de REGIONS. Es posible
obtener una lista de EMPLOYEE_ID, LAST_NAME, y valores de REGION_NAME para cada empleado afilindose al
EMPLOYEE_ID y columnas REGION_ID en una manera de retorno al punto de origen?



Se requiere que usted recupere una lista de NOMBRE de DEPARTMENT_ y valores de LAST_NAME para todos los
DEPARTMENTS, incluso aquellos que actualmente no tienen ningunos EMPLOYEES adjudicados a ellos. En tales
instancias la cuerda 'Ningunos EMPLOYEES' debera ser mostrada como el valor de columna de NOMBRE de LAST_.
Puede esto ser hecho usando junturas?

S. La clusula JOIN.ON es proporcionada para este fin. Esto proporciona una solucin flexible y genrica de tablas que se
unen basadas en nombres de columna no idnticos.

S. Los REGION_ID valoran variedades de 1 a 4. La adicin 1 al resto de EMPLOYEE_ID dividido en 4 crea un valor
en la variedad 1 a 4. La asignacin de retorno al punto de origen de EMPLOYEES puede ser hecha como sigue:
SELECCIONE LAST_NAME, EMPLOYEE_ID, REGION_NAME, DE EMPLOYEES SE AFILIAN A REGIONS
EN (MOD (EMPLOYEE_ID, 4) +1 = REGION_ID) S. Segn cual lado de la palabra clave de JUNTURA la comando
de DEPARTMENTS es colocada, una juntura externa izquierda o correcta puede ser usada, ya que esto es la comando
de donde las filas hurfanas provienen. La pregunta siguiente satisface la solicitud: SELECCIONE
DEPARTMENT_NAME, NVL (NOMBRE de LAST_, 'Ningunos EMPLOYEES) del DERECHO DE EMPLOYEES
DEPARTMENTS DE JUNTURA EXTERNOS USANDO (DEPARTMENT_ID)



3. El DE la clusula con comando de la fuente y alias es
DE LAS OFICINAS D. 4. La clusula de JUNTURA
EXTERNA IZQUIERDA con comando objetivo de aliased es
EMPLOYEES DE JUNTURA EXTERNOS ABANDONADOS E
EN E.DEPARTMENT_ID=D.DEPARTMENT_ID.
5. El DONDE la clusula es
DONDE E.DEPARTMENT_ID ES NULO.
342
Captulo 7:
La pruebas de Datos de Tablas Mltiples



6. La ejecucin de esta select devuelve diecisis filas que describen los DEPARTMENTS a
que ningunos EMPLOYEES son adjudicados actualmente como mostrado en la ilustracin siguiente:






















OBJETIVO DE CERTIFICACIN 7.04


Genere un producto Cartesiano de Dos o MoreTables
Un producto Cartesiano de dos tablas puede ser conceptuado como afilindose a cada fila
del
comando de la fuente con cada fila en la comando objetivo. El nmero de filas en el SET
de resultado creado por un producto Cartesiano es igual al nmero de filas en la comando
de la fuente multiplicada por el nmero de filas en la comando objetivo. Los productos
cartesianos pueden ser formados intencionadamente usando el ANSI SQL:1999 sintaxis
de juntura enfadada. Esta tcnica es descrita en la siguiente seccin.

La creacin de productos Cartesianos Usando Junturas Enfadadas
El producto cartesiano es un trmino matemtico. Esto se refiere al SET de datos creados
por
la fusin de las filas de dos o ms tablas juntos. La juntura enfadada es la sintaxis usada
Genere un producto Cartesiano de Dos o ms Tablas
343



crear un producto Cartesiano afilindose a tablas mltiples. Ambos trminos a menudo son
usados sinnimamente. El formato de la sintaxis para la clusula de JUNTURA ENFADADA
es como sigue:
SELECCIONE table1.column, table2.column DE LA CRUZ de table1 SE AFILIAN a
table2;
Es importante observar que ninguna condicin de juntura es especificada usando el EN o
USANDO palabras claves. Un producto Cartesiano libremente asocia las filas de table1 con
cada fila en table2. Las condiciones que limitan los resultados son permitidas en la forma de
DONDE restricciones de clusula. Si table1 y table2 contienen x y el nmero y de filas,
respectivamente, el producto Cartesiano contendr tiempos x y el nmero de filas. Los
resultados de una juntura enfadada pueden ser usados para identificar filas hurfanas o
generar un conjunto de datos grande para el uso en pruebas de aplicacin. Considere las
preguntas siguientes:

La consulta 1: seleccione * de job_history de juntura de cruz de JOBS; la
Consulta 2: seleccione * de JOBS j cruz se afilian a job_history jh donde
j.job_id ='AD_PRES';
La consulta 1 toma las 19 filas y 4 columnas de la comando de JOBS y las 10 filas y
5 columnas de la comando JOB_HISTORY y generan un SET grande de 190 archivos con 9
columnas. SQL*Plus presenta cualquier columna idnticamente llamada como ttulos. El
Developer de SQL aade subrayar y nmero a cada nombre de columna compartido y lo usa
como el ttulo. La columna JOB_ID es comn tanto a los JOBS como a tablas
JOB_HISTORY. Los ttulos en el Developer SQL son marcados JOB_ID y
JOB_ID_1, respectivamente. La consulta 2 genera el
mismo producto Cartesiano que el primer, pero las 190
filas son reprimidas por el DONDE clusula
Usando la cruz
La figura 7-13 muestra que una juntura enfadada
entre la sintaxis de juntura, un producto Cartesiano es
las REGIONS y tablas de COUNTRIES.
intencionadamente generado. Involuntario
Hay 4 filas en REGIONS y 25 filas los productos
Cartesianos son creados cuando
en COUNTRIES. Desde el DONDE la clusula t h e
re un re i n s u f fi c i e n t j o i n c o n d i t i o n s i n
limita la comando de REGIONS con 2 de 4 filas, un s t
un t e m e n t. J o i n s t h un t s p e c i f y f ew e r
el producto Cartesiano produce 50 (25 2)
que n-1 se afilian a condiciones unindose
archivos. Los resultados son clasificados por comando
alfabtico, N tablas o que especifican la juntura invlida
primero en el REGION_NAME y luego en las
condiciones puede crear por descuido
COUNTRY_NAME. El primer registro tiene
productos Cartesianos. Una juntura natural pura
el par de valores, Asia y Argentina. Cuando entre
dos tablas que comparten no idnticamente
los cambios de REGION_NAME, las columnas
llamadas del primer registro causan una juntura Cartesiano
tiene el par de valores, frica y Argentina. ya que
dos tablas son afiliadas, pero menos que
Note que los valores de COUNTRY_NAME son una
condicin est disponible.
repetido para cada REGION_NAME.
la condicin y slo 10 filas son devueltas.
344
Captulo 7:
La pruebas de Datos de Tablas Mltiples



FIGURA 7-13

La juntura enfadada

































EJERZA 7-5 Realizacin de una Juntura enfadada
Se requiere que usted obtenga el nmero de filas en los EMPLOYEES y
La comando de DEPARTMENTS as como el nmero de archivos que seran creados
Genere un producto Cartesiano de Dos o ms Tablas
345



por un conducto pro Cartesiano de estas dos tablas. Confirme sus resultados contando explcitamente y
multiplicando el nmero de filas presentes en cada una de estas tablas.

1. Comience SQL*Plus y conecte al esquema de HORA. 2. La clusula SENTENCIA para encontrar
el nmero de filas en el producto Cartesiano es
SELECCIONE AL CONDE (*).
3. El DE la clusula es
DE EMPLOYEES.
4. El producto Cartesiano es realizado usando
CRCESE SE AFILIAN A DEPARTMENTS.
5. Los cargos explcitos por las filas presentes en las tablas de la fuente son realizados usando
SELECCIONE AL CONDE (*) DE EMPLOYEES; SELECCIONE AL CONDE (*) DE
DEPARTMENTS;
6. La multiplicacin explcita de los valores que resultan de las preguntas anteriores puede
sea realizado preguntando la comando DUAL.
7. La ejecucin de estas select revela que hay 107 archivos en el
Comando de EMPLOYEES, 27 archivos en la comando de DEPARTMENTS, y 2889 archivos en el
conducto pro Cartesiano de estos dos conjuntos de datos como mostrado en la ilustracin siguiente:
346
Captulo 7:
La pruebas de Datos de Tablas Mltiples




DENTRO DEL EXAMEN


La conexin es un principio relacional fundamental. Los objetivos de certificacin en este captulo son
examinados usando guiones prcticos en los cuales dos tablas son afiliadas. Se requiere que usted prediga
el nmero de filas devueltas por una pregunta de juntura o tase si es syntacti-cally correcto o no. Las
clusulas de juntura naturales incluyen la JUNTURA NATURAL, JOIN.USING, y JOIN.ON.
Recuerde las reglas simples siguientes. Las palabras claves NATURALES, UTILIZACIN, y EN son
mutuamente exclusivas. Ellos no pueden ser usados juntos en la misma clusula de juntura. La juntura
NATURAL pura no toma ningunas condiciones de juntura. La clusula JOIN.USING requiere unquali-fied
referencias de columna en condiciones de juntura, que deben parecer entre parntesis despus de la
palabra clave de UTILIZACIN.


Las autojunturas a menudo son usadas para averiguar datos jerrquicos almacenados en columnas
separadas en la misma comando. Es una juntura poco comn y poco hincapi es hecho en pruebas de su
conocimiento de autoparticipa en el examen. Las junturas externas, sin embargo, forman una parte
significativa del contenido de examen. Asegure que usted tiene un entendimiento slido de junturas
EXTERNAS IZQUIERDAS, CORRECTAS, y LLENAS.
Los productos cartesianos pueden ser creados inad-vertently o intencionadamente utilizacin de la
clusula de JUNTURA ENFADADA. Un error con frecuencia hecho en las etapas tempranas del
aprendizaje sobre junturas es especificar menos condiciones de juntura que son neces-sary afilindose a
tablas mltiples. Esto lleva a junturas Cartesianos casuales y es a veces probado en los exmenes.
Recuerde que unindose N tablas, al menos n-1 condiciones de juntura se requieren evitar una juntura
Cartesiano.



RESUMEN DE CERTIFICACIN
Los datos almacenados en tablas separadas pueden tener que ver el uno con el otro usando
diversos tipos
de junturas. Las junturas permiten que datos sean almacenados en una manera relacional.
Esto previene la necesidad de copias mltiples de los mismos datos a travs de tablas
mltiples.
Equijoins y nonequijoins se mencionan como junturas interiores. Ellos asocian filas de
tablas mltiples que se conforman para afiliarse a condiciones y son especificadas usando
a operadores de desigualdad o igualdad. Las filas que no se conforman con estas
condiciones de juntura, que son generalmente excluidas por junturas interiores, pueden
ser recuperadas con junturas externas. Las junturas externas izquierdas, correctas, y llenas
facilitan la recuperacin de filas hurfanas.
Hablan de la sintaxis de juntura SQL:1999-dcil ANSI detalladamente, y tres formas
de la juntura natural son exploradas. Cada forma tiene un objetivo, y las ventajas y
arriesga asociado con ellos se consideran.
Resumen de certificacin
347



Las junturas asocian columnas de tablas mltiples que pueden compartir el mismo nombre. La nota de
punto usa un mtodo de calificar a columnas para quitarles la ambigedad. Es acompaado por la comando
aliasing, que no es estrictamente esencial, pero ayuda a mucho formulando junturas entre tablas con
nombres largusimos.
La recuperacin de datos jerrquicos almacenados en una comando sola usando autojunturas se
considera. De N-camino las junturas permiten que ms de dos tablas sean afiliadas, y hablan de esta opcin
generalizada. Finalmente, las junturas enfadadas y los desafos nicos asociados con ellos son examinados.
La conexin es uno de los pilares fundamentales de la teora relacional y es crtica a su explotacin
acertada del potencial lleno esto ofertas de SQL.
348
Captulo 7:
La pruebas de Datos de Tablas Mltiples




TALADRADORA DE DOS MINUTOS

Escriba Select SENTENCIAS a Datos de Acceso de ms de Un Table Using
Equijoins y Nonequijoins
Equijoining ocurre cuando una pregunta trae valores de columna de tablas mltiples
en que las filas realizan una condicin de juntura basada en la igualdad.
Una juntura natural pura es realizado usando la sintaxis de JUNTURA NATURAL cuando el
la fuente y las tablas objetivo son implcitamente equijoined usando todas las columnas
idnticamente llamadas.
La sintaxis JOIN.USING permite que una juntura natural sea formada en el especfico
columnas con nombres compartidos.
nota de Dot se refiere a la calificacin a una columna prefijndolo con su nombre de tabla
y un punto o smbolo de perodo. Esto designa la comando de la cual una columna proviene y
lo diferencia de columnas idnticamente llamadas de otras tablas.
La clusula JOIN.ON permite la especificacin explcita de columnas de juntura
sin tener en cuenta sus nombres de columna. Esto proporciona un formato de conexin flexible.
Los el EN, UTILIZACIN, y palabras claves NATURALES son mutuamente exclusivos y
por lo tanto no puede aparecer juntos en una clusula de juntura.
Un nonequijoin es realizado cuando los valores en las columnas de juntura realizan la juntura
condicin basada en una expresin de desigualdad.

Afliese a una Comando a S Usando una Autojuntura
Una autojuntura se requiere cuando las columnas de juntura provienen de la misma comando.
Conceptualmente, la comando de la fuente es duplicada y una comando objetivo es creada. La
autojuntura entonces trabaja como una juntura regular entre dos tablas distintas.
Almacenaje de datos jerrquicos en una comando relacional requiere mnimo de dos
columnas por fila. Una columna almacena un identificador del registro paternal de la fila y las
segundas tiendas el identificador de la fila.

Vista DataThat no Encuentra una Condicin de Juntura Usando Junturas
Externas
Cuando equijoins y nonequijoins son realizados, filas de la fuente y
las tablas objetivo son emparejadas. stos se mencionan como junturas interiores.
Taladradora de dos minutos
349



Una juntura externa es realizado cuando las filas, que no son recuperadas por un interior
nase, son incluidos para la recuperacin.
Una juntura externa izquierda entre la fuente y tablas objetivo devuelve los resultados de un
juntura interior y las filas ausentes esto excluy de la comando de la fuente.
Una juntura externa correcta entre la fuente y tablas objetivo devuelve los resultados de un
juntura interior y las filas ausentes esto excluy de la comando objetivo.
Una juntura externa llena devuelve los resultados combinados de una juntura externa izquierda y
derecho externo
juntura.

Genere un producto Cartesiano de Dos o ms Tablas
Un producto Cartesiano es a veces llamado una juntura enfadada. Es un matemtico
el trmino que se refiere al SET de datos creados fusionando las filas de dos o ms tablas.
El cargo por las filas devueltas de un producto Cartesiano es igual al num-
el ber de filas en la comando de la fuente se multiplic por el nmero de filas en la comando objetivo.
Junturas que especifican a menos que condiciones de juntura de n-1 unindose N tablas, o
esto especifica condiciones de juntura invlidas, por descuido crea productos Cartesianos.
350
Captulo 7:
La pruebas de Datos de Tablas Mltiples



M PRUEBA
Las preguntas siguientes le ayudarn a medir su entendimiento del material presentado en esto
captulo. Lea todas las opciones con cuidado porque puede haber ms de una respuesta correcta. Elija todo
el correcto responde de cada pregunta.

Escriba Select SENTENCIAS a Datos de Acceso de ms de Un Table Using
Equijoins y Nonequijoins
1. Los EMPLOYEES y las tablas de DEPARTMENTS tienen dos columnas idnticamente llamadas:
DEPARTMENT_ID y MANAGER_ID. Cul de estas select se afilia a estas tablas basadas slo en
valores de DEPARTMENT_ID comunes? (Elija todo que se aplican.) A. SELECCIONE * DE
EMPLOYEES DEPARTMENTS DE JUNTURA NATURALES; B. SELECCIONE * DE
EMPLOYEES E DEPARTMENTS DE JUNTURA NATURALES D EN
E.DEPARTMENT_ID=D.DEPARTMENT_ID;
C. SELECCIONE * DE EMPLOYEES UTILIZACIN DE DEPARTMENTS DE JUNTURA
NATURAL
(DEPARTMENT_ID);
D. Ninguno de los susodichos
2. Los EMPLOYEES y las tablas de DEPARTMENTS tienen dos columnas idnticamente llamadas:
DEPARTMENT_ID y MANAGER_ID. Qu select se afilian a estas tablas basadas en ambos
valores de columna? (Elija todo que se aplican.) A. SELECCIONE * DE EMPLOYEES
DEPARTMENTS DE JUNTURA NATURALES; B. SELECCIONE * DE LA UTILIZACIN DE
DEPARTMENTS DE JUNTURA DE EMPLOYEES (DEPARTMENT_
ID, MANAGER_ID);
C. SELECCIONE * DE EMPLOYEES E SE AFILIAN A DEPARTMENTS D EN
E.DEPARTMENT_
ID=D.DEPARTMENT_ID Y E.MANAGER_ID=D.MANAGER_ID;
D. Ninguno de los susodichos
3. Qu juntura es realizada por la pregunta siguiente?
SELECCIONE E.JOB_ID, J.JOB_ID DE EMPLOYEES E SE AFILIAN A JOBS J EN (E.SALARY
<J.MAX_SALARY); (Elija la mejor respuesta.) A. Equijoin B. Nonequijoin C. Juntura enfadada D.
Juntura externa
4. Cules de las select siguientes es sintcticamente correcta? (Elija todo que se aplican.)
A. SELECCIONE * DE EMPLOYEES E SE AFILIAN A DEPARTMENTS D USANDO
(DEPARTMENT_ID); B. SELECCIONE * DE DEPARTMENTS DE JUNTURA DE EMPLOYEES
D USANDO (D.DEPARTMENT_ID);
M Prueba
351



C. SELECCIONE D.DEPARTMENT_ID DE DEPARTMENTS DE JUNTURA DE EMPLOYEES
D UTILIZACIN
(DEPARTMENT_ID);
D. Ninguno de los susodichos
5. Cules de las select siguientes es sintcticamente correcta? (Elija todo que se aplican.)
A. SELECCIONE E.EMPLOYEE_ID, J.JOB_ID PREVIOUS_JOB, E.JOB_ID CURRENT_JOB DE
LOS JOB_HISTORY J CRUZ ACOMPAAN A EMPLOYEES E EN
(J.START_DATE=E.HIRE_DATE);
B. SELECCIONE E.EMPLOYEE_ID, J.JOB_ID PREVIOUS_JOB, E.JOB_ID CURRENT_JOB
DE JOB_HISTORY LOS J ACOMPAAN A EMPLOYEES E EN
(J.START_DATE=E.HIRE_DATE);
C. SELECCIONE E.EMPLOYEE_ID, J.JOB_ID PREVIOUS_JOB, E.JOB_ID CURRENT_JOB
DE JOB_HISTORY J EMPLOYEES DE JUNTURA EXTERNOS E EN (J.START_DATE=E.
HIRE_DATE);
D. Ninguno de los susodichos
6. Elija una select correcta en cuanto a la pregunta siguiente:
SELECCIONE * DE EMPLOYEES E SE AFILIAN A DEPARTMENTS D EN
(D.DEPARTMENT_ID=E.DEPARTMENT_ID) LOCATIONS DE JUNTURA L EN
(L.LOCATION_ID =D.LOCATION_ID); no permiten a A. Joining tres tablas. B. Un producto
Cartesiano es generado. C. La clusula JOIN.ON puede ser usada para junturas entre tablas mltiples. D.
Ninguno de los susodichos

Afliese a una Comando a S Usando una Autojuntura
7. Cuntas filas son devueltas despus de ejecutar la select siguiente?
SELECCIONE * DE REGIONS REGIONS DE JUNTURA de R1 R2 EN (R1.
REGION_ID=LENGTH (R2. REGION_NAME)/2); La comando de REGIONS contiene los datos
de fila siguientes. (Elija la mejor respuesta.)

REGION_ID
1234

REGION_NAME
Europa Amricas Asia Oriente Medio y frica
A. 2B. 3C. 4D.
Ninguno de los susodichos
352
Captulo 7:
La pruebas de Datos de Tablas Mltiples



Datos de vista Que no Encuentran una Condicin de Juntura Usando Junturas
Externas
8. Elija una select correcta en cuanto a la pregunta siguiente.
SELECCIONE C.COUNTRY_ID DE LOCATIONS L COUNTRIES DE JUNTURA EXTERNOS
CORRECTOS C EN (L.COUNTRY_ID=C.COUNTRY_ID) DONDE L.COUNTRY_ID es A nulo.
Ningunas filas en la comando de LOCATIONS hacen devolver los valores de COUNTRY_ID. B.
Ningunas filas en la comando de COUNTRIES hacen devolver los valores de COUNTRY_ID. C.
Las filas volvieron representan los valores de COUNTRY_ID para todas las filas en las
LOCATIONS
comando.
D. Ninguno de los susodichos
9. Cules de las select siguientes es sintcticamente correcta? (Elija todo que se aplican.)
A. SELECCIONE JH.JOB_ID DE JOB_HISTORY JH JOBS DE JUNTURA EXTERNOS
CORRECTOS J EN
JH.JOB_ID=J.JOB_ID
B. SELECCIONE JOB_ID DE JOB_HISTORY JH JOBS DE JUNTURA EXTERNOS
CORRECTOS J EN
(JH.JOB_ID=J.JOB_ID)
C. SELECCIONE JOB_HISTORY.JOB_ID DE JOBS DE JUNTURA EXTERNOS
JOB_HISTORY EN
JOB_HISTORY.JOB_ID=JOBS.JOB_ID
D. Ninguno de los susodichos

Genere un producto Cartesiano de Dos o ms Tablas
10. Si la comando de REGIONS, que contiene 4 filas, es enfadada afiliado a la comando de
COUNTRIES, que
contiene 25 filas, cuntas filas aparecen en el SET de resultados finales? (Elija la mejor respuesta.) A.
100 filas de filas C. 25 de filas B. 4 D. Ninguno de los susodichos

PREGUNTA DE LABORATORIO
Usando al Developer de SQL o SQL*Plus, conecte al esquema OE y complete las tareas siguientes.
Se requiere que usted produzca un informe de clientes que compraron productos con precios de
catlogo de ms de 1000$. El informe debe contener al cliente en general llama y los nombres de conducto
pro y sus precios de catlogo. La informacin de cliente es almacenada en la comando de CLIENTES, que
tiene la columna CUSTOMER_ID como su clave primaria. El nombre del producto y los detalles de
precio de catlogo son almacenados en
Pregunta de laboratorio
353



la comando PRODUCT_INFORMATION con la columna PRODUCT_ID como su clave primaria.
Otras dos tablas relacionadas pueden asistir en la generacin del informe requerido: el O RDERS
comando, que almacena el CUSTOMER_ID y O RDER_ID informacin, y el O RDER_ITEMS
comando, que almacena los valores de PRODUCT_ID asociados con cada O RDER_ID.
Hay varios enfoques a la solucin de esta pregunta. Su enfoque puede diferenciarse de la solucin puesta
en una lista.
354
Captulo 7:
La pruebas de Datos de Tablas Mltiples



M PRUEBAN RESPUESTAS

Escriba Select SENTENCIAS a Datos de Acceso de ms de Un Table Using
Equijoins y Nonequijoins
1. D. Las preguntas en B y C incorrectamente contienen la palabra clave NATURAL. Si esto es
borrado,
ellos se afiliarn a los DEPARTMENTS y tablas de EMPLOYEES basadas en la columna
DEPARTMENT_ID.
Los A, B, y C son incorrectos. Realizar una juntura natural pura que implcitamente se afilia
a dos
las tablas en todas las columnas con nombres idnticos que, en este instancia, son
DEPARTMENT_ID y MANAGER_ID.
2. A, B, y C. Estas clusulas demuestran tcnicas diferentes para afiliarse a las tablas en ambos el
DEPARTMENT_ID y columnas MANAGER_ID.
el D es incorrecto.
3. B. La condicin de juntura es una expresin basada en el menos que el operador de desigualdad.
Por lo tanto,
esta juntura es un nonequijoin.
Los A, C, y D son incorrectos. Ser correcto si el operador en la condicin de juntura
la expresin era un operador de igualdad. Las palabras claves de JUNTURA ENFADADAS o la
ausencia de una condicin de juntura causaran C ser verdadero. El D sera verdad si una de la
clusula de JUNTURA EXTERNA fuera usada en vez de la clusula JOIN.ON.
4. A. Esta select demuestra el uso correcto de la clusula JOIN.USING.
Los B, C, y D son incorrectos. El B es incorrecto ya que los nombres de columna slo no
calificados son permitidos
en los soportes despus de la palabra clave de UTILIZACIN. El C es incorrecto porque la
columna entre parntesis despus de la palabra clave de UTILIZACIN no puede ser referida con
un calificador en la clusula SENTENCIA.
5. el B demuestra el uso correcto de la clusula JOIN.ON.
Los A, C, y D son incorrectos. A es incorrecto ya que la clusula de JUNTURA ENFADADA
no puede contener
EL EN palabra clave. El C es incorrecto ya que las palabras claves de JUNTURA EXTERNAS
deben ser precedidas por la IZQUIERDA, DERECHO, o palabra clave LLENA.
6. C. La clusula JOIN.ON y las otras clusulas de juntura pueden ser todos usadas para junturas entre mltiple
tablas. El JOIN.ON y las clusulas JOIN.USING son mejor satisfechos para el N-camino junturas de
comando. los A, B, y D son incorrectos. A es falso ya que usted puede afiliarse a tantas tablas como
usted desea. Un
El producto cartesiano no es creado ya que hay dos condiciones de juntura y tres tablas.

Afliese a una Comando a S Usando una Autojuntura
7. B. Tres filas son devueltas. Para la fila con un valor REGION_ID de 2, el REGION_NAME
es Asia y mitad que la longitud del REGION_NAME tambin es 2. Por lo tanto esta fila es devuelta.
Respuesta de laboratorio



La misma lgica causa las filas con valores REGION_ID de tres y cuatro y valores
REGION_NAME de Europa y Amricas devueltas. los A, C, y D son incorrectos.

Datos de vista Que no Encuentran una Condicin de Juntura Usando Junturas
Externas
355
8. A. La juntura externa correcta trae las filas de COUNTRIES que la juntura interior entre el
LAS LOCATIONS y las tablas de COUNTRIES han excluido. El DONDE la clusula entonces
restringe los resultados eliminando los resultados de juntura interiores. Esto deja las filas de la
comando de COUNTRIES con la cual ningunos archivos de los archivos de comando de
LOCATIONS tienen que ver.
Los B, C, y D son incorrectos.
9. A. Esta select demuestra el uso correcto de la clusula JOIN.ON EXTERNA CORRECTA.
Los B, C, y D son incorrectos. La columna JOB_ID en la clusula SENTENCIA en B no es
calificada
y es por lo tanto ambiguo desde la comando de la cual esta columna viene no es especificado. El C usa
una JUNTURA EXTERNA sin las palabras claves DEJADAS, DERECHO, o LLENO.

Genere un producto Cartesiano de Dos o ms Tablas
10. A. La juntura enfadada asocia cada cuatro filas a partir de los tiempos de tabla 25 de REGIONS
con el
las filas de la comando de COUNTRIES que cede un SET de resultado que contiene 100 filas.
Los B, C, y D son incorrectos.

RESPUESTA DE LABORATORIO
Usando al Developer de SQL o SQL*Plus, conecte al esquema OE, y complete las tareas siguientes.
Hay varios enfoques a la solucin de esta pregunta. Su enfoque puede diferenciarse de la solucin siguiente
puesta en una lista.
1. Comience al Developer SQL y conecte al esquema OE. 2. La lista SENTENCIA consiste en cuatro
columnas de dos tablas, que tendrn que ver con cada uno
otra utilizacin de varias junturas. La clusula SENTENCIA es CUST_FIRST_NAME escogido,
CUST_LAST_NAME, PRODUCT_NAME, LIST_PRICE.
3. El DE la clusula es
DE CLIENTES.
4. El DONDE la clusula es
DONDE LIST_PRICE> 1000.
5. Las clusulas de JUNTURA son interesantes desde el PRODUCT_INFORMATION y CLIENTES
tablas no directamente relacionadas. Ellos estn relacionados por otras dos tablas.
356
Captulo 7:
La pruebas de Datos de Tablas Mltiples



6. La comando de PEDIDOS debe ser afiliada primero a la comando de CLIENTES basada en el comn
Valores de CUSTOMER_ID. La primera clusula de juntura despus el DE la clusula de
CLIENTES es PEDIDOS DE JUNTURA USANDO (CUSTOMER_ID).
7. Este SET debe ser afiliado entonces a la comando ORDER_ITEMS basada en valores de ORDER_ID
comunes
ya que la comando ORDER_ITEMS puede conectar por ltimo con la comando
PRODUCT_INFORMATION. La segunda clusula de juntura es la JUNTURA ORDER_ITEMS
USANDO (ORDER_ID).
8. El eslabn perdido para unirse a la comando PRODUCT_INFORMATION basada en comn
Los valores de columna de PRODUCT_ID estn disponibles ahora. La tercera clusula de juntura es
la JUNTURA PRODUCT_INFORMATION USANDO (PRODUCT_ID).
9. La ejecucin de esta select devuelve el informe requerido como mostrado en la ilustracin siguiente:
8
La utilizacin de
Subconsultas para
Solucionar
problemas









OBJETIVOS DE
CERTIFICACIN


8.01
Defina Subconsultas
8.04
Escriba la Fila sola y la Fila mltiple



Subconsultas
8.02
Describa los Tipos de problemas



Que las Subconsultas Puedan Solucionar

Taladradora de dos minutos
8.03
Liste los Tipos en una lista de Subconsultas
Q&A
M Prueba














Copyright 2008 por El Clic de McGraw-Hill Companies, Inc aqu para trminos de uso.
358
Captulo 8:
La utilizacin de Subconsultas para Solucionar problemas
Los seis captulos anteriores han tratado con la select SENTENCIA en detalles
considerables, pero en cada instancia la select SENTENCIA ha sido un comando solo, autnomo.
Este captulo es el primero de dos que el espectculo como dos o ms comandos
ESCOGIDOS pueden ser
combinado en una select. La primera tcnica (cubierto en este captulo) es el uso de subconsultas.
Una subpregunta es una select SENTENCIA cuya salida est acostumbrado como introducido para
otra select SENTENCIA (o en efecto para una select DML, como hecho en el Captulo 10).El segunda
tcnica es el uso de operadores de SET, donde los resultados de varios comandos ESCOGIDOS son
combinados en un SET de resultado solo.




OBJETIVO DE CERTIFICACIN 8.01


Defina Subconsultas
Una subpregunta es una pregunta que es anidada dentro de un ESCOGIDO, INSERCIN,
ACTUALIZACIN, o BORRAR
select o dentro de otra subpregunta. Una subpregunta puede devolver un SET de filas o slo
una fila a su pregunta paternal. Una subpregunta escalar es una pregunta que devuelve
exactamente un valor: una fila sola, con una columna sola. Las subconsultas escalares
pueden ser usadas en la mayor parte de sitios en una select SQL donde usted podra usar una
expresin o un valor literal.
Los sitios en una pregunta donde una subpregunta puede ser usada son como sigue:

En la lista SENTENCIA usada para proyeccin de columna En el DE clusula
En el DONDE clusula En la clusula que TIENE

Una subpregunta a menudo es referida como una
pregunta interior, y la select dentro de la cual
ocurre es llamada entonces la pregunta externa. No
hay nada
Las subconsultas pueden ser anidadas incorrecto con esta terminologa, salvo que
esto mayo a una profundidad ilimitada en un DE clusula implique que usted slo puede tener
dos niveles, interiores, pero a "slo" 255 niveles en un DONDE y externo. De hecho, la realizacin
de Oracle de clusula. Ellos pueden ser usados en el ESCOGIDO las subconsultas no imponen
ninguna lista de lmites prctica y en el DE, DONDE, y al nivel de anidar: la profundidad de anidar
TENIENDO clusulas de una pregunta. permitido en el DE clusula de una select
es ilimitado, y que en el DONDE la clusula es
hasta 255.
Defina Subconsultas
359



Una subpregunta puede tener cualquiera de las clusulas habituales para seleccin y
proyeccin. Lo siguiente es clusulas requeridas:

Una lista SENTENCIA UN DE clusula

Lo siguiente es clusulas opcionales:

DONDE GRUPO POR TENER

La subpregunta (o las subconsultas) dentro de una select deben ser ejecutadas antes
el
la pregunta paternal que lo llama, a fin de que los resultados de la subpregunta puedan
ser pasados al padre.


EJERZA 8-1 Tipos de
Subconsultas
En este ejercicio, usted escribir el cdigo que demuestra los sitios donde las
subconsultas pueden ser usadas. Use SQL*Plus o Developer SQL. Todas las preguntas
deberan ser ejecutadas cuando conectado al esquema de HORA.

1. Inicio de sesin a su base de datos como HORA de usuario 2. Escriba una
pregunta que usa subconsultas en la lista de proyeccin de columna. La pregunta
informar sobre los nmeros corrientes de DEPARTMENTS y personal:
seleccione sysdate Hoy,
(seleccione a la cuenta (*) de DEPARTMENTS) Dept_count, (cuenta
sentencia (*) de EMPLOYEES) Emp_count del dual;

3. Escriba una pregunta para identificar a todos los EMPLOYEES que son gerentes.
Esto va
requiera la utilizacin de una subpregunta en el DONDE la clusula para
seleccionar a todos los EMPLOYEES cuyo EMPLOYEE_ID aparece como un
MANAGER_ID:
seleccione last_name de EMPLOYEES donde
(employee_id en (seleccionan manager_id de EMPLOYEES));
360
Captulo 8:
La utilizacin de Subconsultas para Solucionar problemas



4. Escriba una pregunta para identificar el sueldo ms alto pagado en cada pas. Esto va
requiera la utilizacin de una subpregunta en el DE la clusula:
mximo escogido (sueldo), country_id de
(seleccione salary,department_id,location_id,country_id de
EMPLOYEES DEPARTMENTS de juntura naturales LOCATIONS de juntura
naturales)
grupo por country_id;




OBJETIVO DE CERTIFICACIN 8.02


Describa los Tipos de problemas Que las
Subconsultas Pueden Solucionar
Hay muchas situaciones donde usted necesitar el resultado de una pregunta como el
ingreso
para el otro.

Uso de un SET de Resultado de Subpregunta con Objetivos de
Comparacin
Qu EMPLOYEES tienen un sueldo que es menos que el sueldo medio? Esto podra ser
contestado por dos select, o por una select sola con una subpregunta. El ejemplo siguiente
usa dos select:
seleccione el avg (sueldo) de EMPLOYEES;
seleccione last_name de EMPLOYEES donde sueldo <result_of_previous_query;
O bien, este ejemplo usa una select con una subpregunta:

seleccione last_name de EMPLOYEES donde el sueldo <(seleccionan el avg
(sueldo) de EMPLOYEES);
En este ejemplo, la subpregunta es usada para substituir un valor en el DONDE
clusula
de la pregunta paternal: esto devuelve un valor solo, usado para la comparacin con las
filas recuperadas por la pregunta paternal.
La subpregunta podra devolver un SET de filas. Por ejemplo, usted podra usar el
siguiente para
encuentre todos los DEPARTMENTS que realmente tienen uno o varios EMPLOYEES
adjudicados a ellos:

seleccione department_name de DEPARTMENTS donde department_id en
(seleccionan distinto (department_id) de EMPLOYEES);
Describa los Tipos de problemas Que las Subconsultas Pueden Solucionar
361



En el ejemplo precedente, la subpregunta es usada como una alternativa a una juntura.
El
mismo resultado podra haber sido conseguido con lo siguiente:

seleccione department_name de DEPARTMENTS EMPLOYEES de juntura
interiores en EMPLOYEES department_id = grupo de DEPARTMENTS
department_id por department_name;
Si la subpregunta va a devolver ms de una fila, entonces la comparacin
el operador debe ser capaz de aceptar valores mltiples. Estos operadores estn EN, NO
EN, CUALQUIERA, y TODOS. Si el operador de comparacin es IGUAL, MAYOR
QUE, o MENOS QUE (que cada uno slo puede aceptar un valor), la pregunta paternal
fallar.

La utilizacin NO EN es llena de problemas debido al modo que SQL se maneja
NULLs. Por regla general, no use NO EN a menos que usted est seguro que el
SET de resultado no incluir un NULO.

Transformacin de estrella
Una extensin del uso de subconsultas como una alternativa a una juntura debe habilitar
la estrella
la transformacin a menudo necesaria en aplicaciones de depsito de datos. Considere
unas ventas de grabacin de comando grandes. Cada venta es marcada como siendo de un
producto particular a un comprador particular por un canal particular. Estos atributos son
identificados por cdigos, usados como claves forneas para dimensionar tablas con filas
que describen cada producto, comprador, y canal. Para identificar todas las ventas de
libros a compradores en Alemania por pedidos de Internet, uno podra ejecutar una
pregunta como esto:

seleccione . de ventas s, productos p, compradores b, c de canales donde
s.prod_code=p.prod_code y s.buy_code=b.buy_code y
s.chan_code=c.chan_code y p.product ='Books' y b.country ='Germany' y
c.channel ='Internet';
Esta pregunta usa el DONDE clusula para afiliarse a las tablas y luego filtrar los
resultados.
Lo siguiente es una pregunta alternativa que ceder el mismo resultado:
seleccione . de ventas
donde prod_code en (seleccionan prod_code de productos de donde producto ='Books')
y buy_code en (seleccionan buy_code compradores donde pas ='Germany') y chan_code
en (seleccionan chan_code de canales donde canal ='Internet);
Volver a escribir de la primera select al segundo es la transformacin de estrella.
Aparte
de ser una estructura intrnsecamente ms elegante (la mayor parte de developeres SQL
con cualquiera
362
Captulo 8:
La utilizacin de Subconsultas para Solucionar problemas



el sentido de la esttica estar de acuerdo con aquel), hay motivos tcnicos por qu la base
de datos puede ser capaz de ejecutarlo ms eficazmente que la pregunta original.
Tambin, las preguntas de estrella son ms fciles a mantener; es muy simple aadir ms
dimensiones a la pregunta o reemplazar los literales solos ('Libros', 'Alemania', y 'Internet') con
listas de valores.

Hay un parmetro de inicializacin de instancia, STAR_TRANSFORMATION_
HABILITADO, que (de ser puesto al verdadero) permitir que el Oracle pregunte
optimizer para volver a escribir el cdigo en preguntas de estrella.

Genere una Comando de la Cual SELECCIONAR
Las subconsultas tambin pueden ser usadas en el DE la clusula, donde ellos son a veces
mandados
a como vistas de inline. Considere otro problema basado en el esquema de HORA: los
EMPLOYEES son adjudicados a un departamento, y los DEPARTMENTS tienen una
posicin. Cada posicin est en un pas. Cmo puede usted encontrar el sueldo medio del
personal en un pas, aunque ellos trabajen para DEPARTMENTS diferentes? Como esto:

seleccione el avg (sueldo), country_id de
(seleccione salary,department_id,location_id,country_id de
EMPLOYEES DEPARTMENTS de juntura naturales LOCATIONS de juntura
naturales)
grupo por country_id;
La subpregunta construye una comando con el sueldo de cada empleado y el pas en
que su departamento est basado. La pregunta paternal entonces se dirige a esta comando,
haciendo un promedio del SUELDO y agrupndose por COUNTRY_ID.

Genere Valores para Proyeccin
El tercer lugar una subpregunta puede ir est en la lista SENTENCIA de una pregunta.
Como le puede
identifique el sueldo ms alto y el precio de comisin ms alto y as qu la comisin
mxima pagada sera si el empleado asalariado ms alto tambin tuviera el precio de
comisin ms alto? Como esto, con dos subconsultas:

escogido (seleccionan el mximo (sueldo) de EMPLOYEES) * (mximo escogido
(commission_pct) de EMPLOYEES) / 100 del dual;
En este uso, la lista SENTENCIA sola prever que las columnas estn siendo pobladas
con
los resultados de las subconsultas. Una subpregunta usada en esta manera debe ser el
escalar, o la pregunta paternal fallar con un error.
Describa los Tipos de problemas Que las Subconsultas Pueden Solucionar



Genere Filas para ser Pasadas a una Select DML
363
Las select de DML son cubiertas detalladamente en el Captulo 10. Por el momento,
considere estos ejemplos:

el insercin en sales_hist selecciona * de ventas donde fecha> sysdate-1;
actualice el sueldo de SET de EMPLOYEES = (seleccione el avg (sueldo) de
EMPLOYEES); borre de DEPARTMENTS donde department_id no en (seleccionan
department_id de EMPLOYEES);
El primer ejemplo usa una subpregunta para
identificar a
el SET de filas en una comando que ser insertada
en el otro. El segundo ejemplo usa una subpregunta a
Una subpregunta puede ser usada calcule el sueldo medio de todos los
EMPLOYEES y seleccionar filas para la introduccin, pero no en a los pases este valor (una
cantidad escalar) a una actualizacin VALORAN la clusula de una select de INSERCIN. select. El
tercer ejemplo usa una subpregunta a
recupere todos DEPARTMENT_IDs que estn en el
uso
y pasa la lista a un BORRAR comando, que borrar todos los DEPARTMENTS que no
estn en el uso.
Note que no es legal usar una subpregunta en la clusula de VALORES de un
insercin
select; esto es fino:

el insercin en fechas selecciona sysdate del dual;
Pero esto no es:

el insercin en fechas (date_col) valores (seleccionan sysdate fom
dual);


EJERZA 8-2 Subconsultas Ms complejas
En este ejercicio, usted escribir algunas subconsultas ms complicadas. Use tampoco
SQL*Plus o Developer SQL. Todas las preguntas deberan ser ejecutadas cuando
conectado al esquema de HORA.

1. Inicio de sesin a su base de datos como HORA de usuario 2. Escriba una
pregunta que identificar a todos los EMPLOYEES que trabajan en
DEPARTMENTS
localizado en el Reino Unido. Esto requerir tres niveles de subconsultas
anidadas:
seleccione last_name de EMPLOYEES donde department_id en
(seleccione department_id de DEPARTMENTS donde location_id en
(seleccione location_id de LOCATIONS
364
Captulo 8:
La utilizacin de Subconsultas para Solucionar problemas



donde country_id =
(seleccione country_id de COUNTRIES donde
country_name ='United Reino')
));

3. Compruebe que el resultado del paso 2 es correcto ejecutando las subconsultas
inde-
suspendidamente. En primer lugar, encuentre el COUNTRY_ID para el Reino
Unido:
seleccione country_id de COUNTRIES donde country_name ='United Reino';
El resultado ser el Reino Unido. Entonces encuentre las LOCATIONS
correspondientes:

seleccione location_id de LOCATIONS donde country_id = 'el Reino Unido';
El LOCATION_IDs volvi ser 2400, 2500, y 2600. Entonces encuentre el
DEPARTMENT_IDs de departamento en estas LOCATIONS:
seleccione department_id de DEPARTMENTS donde location_id en (2400,2500,2600);
El resultado ser dos DEPARTMENTS, 40 y 80. Finalmente, encuentre a los
EMPLOYEES relevantes:

seleccione last_name de EMPLOYEES donde department_id en (40,80);

4. Escriba una pregunta para identificar a todos los EMPLOYEES que ganan ms
que el promedio
y quines trabajan en cualquier de ESTO DEPARTMENTS. Esto requerir dos
subconsultas, no anid:
seleccione last_name de EMPLOYEES
donde department_id en (seleccionan department_id de DEPARTMENTS donde
department_name como 'ELLO %') y sueldo> (seleccionan el avg (sueldo) de
EMPLOYEES);




OBJETIVO DE CERTIFICACIN 8.03


Liste los Tipos en una lista de Subconsultas
Hay tres amplias divisiones de la subpregunta:

la Fila sola subpregunta subconsultas de Fila mltiple subconsultas
Correlacionadas




Solo - y Subconsultas de Fila mltiple
Liste los Tipos en una lista de Subconsultas
365
La subpregunta de fila sola devuelve una fila. Un instancia especial es la subpregunta
escalar, que devuelve una fila sola con una columna. Las subconsultas escalares son
aceptables (y a menudo muy tiles) en prcticamente cualquier situacin donde usted
podra usar un valor literal, una constante, o una expresin. La fila mltiple subpregunta
SETs de vuelta de filas. Estas preguntas comnmente son usadas para generar SETs de
resultado que sern pasados a un DML o select SENTENCIA para el procesamiento
adicional. Tanto la fila sola como las subconsultas de fila mltiple sern evaluadas una
vez, antes de que la pregunta paternal sea ejecutada.
Solo - y subconsultas de fila mltiple puede ser usado en el DONDE y las clusulas
que TIENEN de la pregunta paternal, pero hay restricciones de los operadores de
comparacin legtimos. Si el operador de comparacin es alguno de estos en la
comando siguiente, la subpregunta debe ser una subpregunta de fila sola:

Smbolo
= >> = <<= <>! =

Sentido
igual mayor que mayor que o igual menos que menos que o igual no igual no igual
Si alguno de los operadores en la comando precedente es usado con una subpregunta
que vuelve
ms de una fila, la pregunta fallar. Los operadores en la comando siguiente pueden usar
subconsultas de fila mltiple:

Smbolo
EN NO EN CUALQUIERA TODOS

Sentido
igual a cualquier miembro en una lista no igual a cualquier miembro en una lista devuelve filas que
emparejan cualquier valor a una lista devuelve filas que emparejan todos los valores en una lista
366
Captulo 8:
La utilizacin de Subconsultas para Solucionar problemas






Los operadores de comparacin vlido para subconsultas de fila
mltiple estn EN, vlido para subconsultas de fila sola son =,>,> =, NO EN,
CUALQUIERA, y TODOS. <<=, y <>. Los operadores de comparacin


Subconsultas correlacionadas
Una subpregunta correlacionada tiene un mtodo ms complejo de la ejecucin que solo -
y subconsultas de fila mltiple y es potencialmente mucho ms potente. Si unas columnas
de referencias de subpregunta en la pregunta paternal, entonces su resultado ser
dependiente de la pregunta paternal. Esto hace imposible evaluar la subpregunta antes de
evaluar la pregunta paternal. Considere esta select, que pone en una lista a todos los
EMPLOYEES que ganan menos que el sueldo medio:

seleccione last_name de EMPLOYEES donde el sueldo <(seleccionan el avg
(sueldo) de EMPLOYEES);
La subpregunta de fila sola slo tiene que ser ejecutada una vez, y su resultado
substituido
en la pregunta paternal. Pero ahora considere una pregunta que pondr en una lista a todos
los EMPLOYEES cuyo sueldo es menos que el sueldo medio de su departamento. En este
instancia, la subpregunta debe ser ejecutada para cada empleado para determinar el sueldo
medio para su departamento; es necesario pasar el cdigo de departamento del empleado a
la subpregunta. Esto puede ser hecho como sigue:

seleccione p.last_name, p.department_id de EMPLOYEES p donde p.salary
<(seleccionan avg (s.salary) de EMPLOYEES s donde
s.department_id=p.department_id);
En este ejemplo, la subpregunta se refiere a una columna, p.department_id, de
la lista sentencia de la pregunta paternal. Esto es la seal que, ms bien que evaluar la
subpregunta una vez, debe ser evaluado para cada fila en la pregunta paternal. Para
ejecutar la pregunta, el Oracle mirar cada fila en EMPLOYEES y, como esto hace as,
ejecute la subpregunta usando el DEPARTMENT_ID de la fila de empleado corriente.
El flujo de ejecucin es como sigue:

1. Comience en la primera fila de la comando de EMPLOYEES. 2. Lea el
DEPARTMENT_ID y el SUELDO de la fila corriente. 3. Ejecute la subpregunta
usando el DEPARTMENT_ID del paso 2.
Liste los Tipos en una lista de
Subconsultas
367



4. Compare el resultado del paso 3 con el SUELDO del paso 2, y vuelva el
la fila si el SUELDO es menos que el resultado. 5. Avance a la siguiente fila en la
comando de EMPLOYEES. 6. Repita del paso 2.

Una subpregunta de fila mltiple o fila sola es evaluada una vez, antes de evaluar la
pregunta externa; una subpregunta correlacionada debe ser evaluada una vez para cada
fila en la pregunta externa. Una subpregunta correlacionada puede ser sola - o la fila
mltiple, si el operador de comparacin es apropiado.

Las subconsultas correlacionadas pueden ser una construccin muy ineficaz,
debido a la necesidad de la ejecucin repetida de la subpregunta. Siempre trate
de encontrar un enfoque alternativo.


EJERCICIO 8-3 Investiga los Tipos diferentes de Subconsultas
En este ejercicio, usted demostrar problemas que pueden ocurrir con tipos diferentes
de subconsultas. Use SQL*Plus o Developer SQL. Todas las preguntas deberan ser
ejecutadas cuando conectado al esquema de HORA: se supone que la comando de
EMPLOYEES tiene los conjuntos estndares de filas.

1. Inicio de sesin a su base de datos como HORA de usuario 2. Escriba una pregunta
para determinar quin gana ms que el Sr. Tobias:

seleccione last_name de EMPLOYEES donde el sueldo> (seleccionan el
sueldo de EMPLOYEES donde last_name =' Tobias) piden por last_name;
Esto devolver 86 nombres, en comando alfabtico.
3. Escriba una pregunta para determinar quin gana ms que el Sr. Taylor:

seleccione last_name de EMPLOYEES donde el sueldo> (seleccionan el
sueldo de EMPLOYEES donde last_name =' Taylor') piden por last_name;
Esto fallar con el error "ORA-01427: la subpregunta de fila sola vuelve ms que
una fila." La ilustracin siguiente muestra las pocas ltimas lneas de salida del paso 2
seguido del paso 3 y el error, ejecutado con SQL*Plus.
368
Captulo 8:
La utilizacin de Subconsultas para Solucionar problemas


















4. Determine por qu la pregunta en el paso 2 tuvo xito, pero fallado en el paso 3. La
respuesta
est en el estado de los datos:

seleccione a la cuenta (last_name) de EMPLOYEES donde last_name ='
Tobias; seleccione a la cuenta (last_name) de EMPLOYEES donde last_name
=' Taylor';
El uso del "mayor que" el operador en las preguntas para los pasos 2 y 3 requiere
una subpregunta de fila sola, pero la subpregunta usada puede devolver cualquier nmero
de filas, segn el predicado de bsqueda usado.
5. Fije el cdigo en los pasos 2 y 3 de modo que las select tengan xito no importa
que LAST_NAME es usado. Hay dos soluciones posibles: uno usa a un operador
de comparacin diferente que puede manejarse una subpregunta de fila mltiple;
los otros usos una subpregunta que siempre ser la fila sola.

La primera solucin:
seleccione last_name de EMPLOYEES donde
el sueldo> todos (seleccionan el sueldo de EMPLOYEES donde last_name ='
Taylor') piden por last_name;
La segunda solucin:
seleccione last_name de EMPLOYEES donde
el sueldo> (seleccionan el mximo (sueldo) de EMPLOYEES donde last_name ='
Taylor') piden por last_name;
Escriba Subconsultas de Fila mltiple y Fila sola




GUIN & SOLUCIN
369

Como le puede mejor disear subconsultas tales que ellos no fallarn con "ORA-01427: la subpregunta de fila sola
devuelve ms de una fila" errores?




A veces hay una opcin entre utilizacin de una subpregunta o utilizacin de un poco de otra tcnica: la
transformacin de estrella es un ejemplo. Cul es mejor?








OBJETIVO DE CERTIFICACIN 8.04

Hay dos tcnicas comunes: use una agregacin de modo que si usted realmente consigue filas mltiples ellos sean
reducidos a uno, o usar uno del EN, CUALQUIERA, o TODOS los operadores de modo que no importe si filas mltiples
son devueltas. Pero stos son ambos las soluciones del hacker; la verdadera respuesta siempre debe usar la clave primaria
identificando la fila para ser devuelta, no una llave no nica. Esto depende de las circunstancias. Es bastante comn
para las tcnicas diferentes causar un mtodo de ejecucin diferente dentro de la base de datos. Segn como el
instancia, la base de datos, y las estructuras de datos dentro de ella son configurados, uno puede ser mucho ms
eficiente que el otro. Siempre que tal opcin se levante, las select deberan ser sujetadas a un anlisis de afinacin. Su
DBA ser capaz de aconsejar sobre esto.


Escriba Subconsultas de Fila mltiple y Fila sola
Lo siguiente es ejemplos del solo - y subconsultas de fila mltiple. Ellos estn basados en
el esquema de pruebas de HORA.
Cmo entendera usted qu EMPLOYEES tienen un gerente que trabaja para un
departamento basado en el Reino Unido? Esto es una solucin posible, usando
subconsultas de fila mltiple:

seleccione last_name de EMPLOYEES donde manager_id en (seleccionan
employee_id de EMPLOYEES de donde department_id en (seleccionan
department_id DEPARTMENTS donde location_id en (seleccionan
location_id de LOCATIONS donde country_id ='UK')));
En el ejemplo precedente, las subconsultas son anidadas tres niveles
profundamente. Note que el
las subconsultas usan el EN el operador porque es posible que las preguntas pudieran
devolver varias filas.
370
Captulo 8:
La utilizacin de Subconsultas para Solucionar problemas



Le han pedido encontrar el trabajo con el sueldo medio ms alto. Esto puede ser
hecho con una subpregunta de fila sola:

seleccione job_title de JOBS grupo de EMPLOYEES de juntura natural por
job_title que tiene avg (sueldo) = (mximo escogido (avg (sueldo)) del grupo
de EMPLOYEES por job_id);
La subpregunta devuelve un valor solo: el sueldo medio del departamento con el
el sueldo medio ms alto. Est seguro usar al operador de igualdad para esta subpregunta
porque la funcin de MAX garantiza que slo una fila ser devuelta.
CUALQUIER y TODOS los operadores son la sintaxis apoyada, pero su funcin
puede ser duplicada con otros operadores ms comnmente usados combinados con
agregaciones. Por ejemplo, estas dos select, que recuperan a todos los EMPLOYEES cuyo
sueldo est encima de aquel de cualquiera en la oficina 80, devolvern SETs de resultado
idnticos:

seleccione last_name de EMPLOYEES donde el sueldo> todos (seleccionan
el sueldo de EMPLOYEES donde department_id=80); seleccione last_name de
EMPLOYEES donde el sueldo> (seleccionan el mximo (sueldo) de EMPLOYEES
donde department_id=80);
La comando siguiente resume los equivalentes para CUALQUIERA y TODOS:

Operador
<CUALQUIERA> CUALQUIERA = CUALQUIERA> TODOS <TODOS

Sentido
menos que el ms alto ms que el equivalente ms bajo con EN ms que el ms alto menos
que el ms bajo


EJERCICIO 8-4 Escribe una Pregunta Que es Confiable y Usuario Simptico
En este ejercicio, desarrolle una subpregunta de multifila que apremio para la
introduccin de datos por el usuario. Usar
SQL*Plus o Developer SQL. Todas las preguntas deberan ser ejecutadas cuando
conectado al esquema de HORA; se supone que las tablas tienen los conjuntos estndares
de filas.

1. Inicio de sesin a su base de datos como HORA de usuario 2. Disee una pregunta
que apremio para un departamento llaman y ponen el apellido en una lista
de cada empleado en aquel departamento:
Escriba Subconsultas de Fila mltiple y Fila sola



seleccione last_name de EMPLOYEES donde department_id = (seleccionan department_id
de DEPARTMENTS donde department_name = '&Department_name');
371
3. Ejecute la pregunta en el paso 2 tres veces, cundo apremio suministrando estos valores:
la primera vez, Ejecutivo segunda vez, la tercera vez ejecutiva, Executiv

La ilustracin siguiente muestra el resultado, usando SQL*Plus:


















4. Note los resultados del paso 3. La primera carrera tuvo xito porque el valor
entrado era un partido exacto, pero otro fracasado. Ajuste la pregunta para hacerlo ms usuario
amistoso, de modo que esto pueda manejarse variaciones menores por si u ortografa:
seleccione last_name de EMPLOYEES donde department_id =
(seleccione department_id de DEPARTMENTS donde superior (department_name) como el
superior ('%&Department_name%'));
5. Ejecute la pregunta en el paso 4 tres veces, usando los mismos valores que usado en el paso 3.
Esta vez, la pregunta ejecutar con xito.
6. Ejecute la pregunta en el paso 4 otra vez, y esta vez escriba el valor Pu. La pregunta
fallar, con "ORA-01427: la subpregunta de fila sola devuelve ms de una fila" error, porque la
tentativa de hacerlo ms fcil de usar significa que la subpregunta ya no es garantizada para ser una
subpregunta de fila sola. La cuerda Pu empareja dos DEPARTMENTS.
372
Captulo 8:
La utilizacin de Subconsultas para Solucionar problemas



7. Ajuste la pregunta para hacerlo resistente contra el error ORA-01427, y adaptarse
salida para prevenir cualquier confusin posible:
seleccione last_name, department_name de EMPLOYEES se afilian a DEPARTMENTS
en EMPLOYEES department_id = DEPARTMENTS department_id donde los DEPARTMENTS
department_id en (seleccionan department_id de DEPARTMENTS donde superior
(department_name) como el superior ('%&Department_name%'));
La ilustracin siguiente muestra este paso final: el cdigo que se acerca al ideal de
ser tanto prueba de disco como usuario simptico:


















DENTRO DEL
EXAMEN


Uso de Subconsultas
Las subconsultas vienen a tres formas generales: la fila sola, la fila mltiple, y correlacionado. Un instancia
especial de la subpregunta de fila sola es la subpregunta escalar, una subpregunta que devuelve
exactamente un valor. Esto es una fila sola sola - subpregunta de columna. Para primer SQL OCP examen,
el conocimiento detallado slo es esperado de subconsultas escalares y la columna sola
subconsultas de fila mltiple. Las subconsultas correlacionadas y subconsultas de columna mltiples con
poca probabilidad sern examinadas a este nivel, pero un conocimiento general de ellos puede ser
probado.
Usando subconsultas en un DONDE clusula, usted debe ser consciente de que los operadores tendrn
xito con subconsultas de fila sola y que tendr xito con subconsultas de fila mltiple.




RESUMEN DE CERTIFICACIN
Resumen de certificacin
373
Una subpregunta es una pregunta empotrada dentro de otra select SQL. Esta select puede
est otra pregunta o una select DML. Las subconsultas pueden ser anidadas el uno
dentro del otro sin lmites prcticos.
Las subconsultas pueden ser usadas para generar valores para la lista sentencia de una
pregunta para generar una vista de inline para ser usada en el DE la clusula, en el
DONDE clusula, y en la clusula que TIENE. Cuando usado en el DONDE o clusulas
que TIENEN, las subconsultas de fila sola pueden ser usadas con estos operadores de
comparacin: =,>,> =, <<=, <>; las subconsultas de fila mltiple pueden ser usadas con
estos operadores de comparacin: EN, NO EN, CUALQUIERA, TODOS.
374
Captulo 8:
La utilizacin de Subconsultas para Solucionar problemas




TALADRADORA DE DOS MINUTOS

Defina Subconsultas
Una subpregunta es una select sentencia empotrada dentro de otra select SQL.
Subconsultas puede ser anidado el uno dentro del otro. a Excepcin de la subpregunta
correlacionada, las subconsultas son ejecutadas antes
la pregunta externa dentro de la cual ellos son empotrados.

Describa los Tipos de problemas Que las Subconsultas Pueden Solucionar
Seleccionar filas de una comando con una condicin que depende de los datos dentro de
la comando puede ser puesta en prctica con una subpregunta. junturas Complejas puede
ser a veces reemplazado con subconsultas. Subconsultas puede valores agregados a la
pregunta externa salida lo que no est disponible en
las tablas las direcciones de pregunta externas.

Liste los Tipos en una lista de Subconsultas
subconsultas de Fila mltiple puede devolver varias filas, posiblemente con varias columnas.
subconsultas de Fila sola devuelven una fila, posiblemente con varias columnas. Una
subpregunta escalar devuelve un valor solo; es una fila sola, la columna sola
subpregunta.
Una subpregunta correlacionada es ejecutado una vez para cada fila en la pregunta externa.

Escriba Subconsultas de Fila mltiple y Fila sola
subconsultas de Fila sola debera ser usado con operadores de comparacin de fila sola.
subconsultas de Fila mltiple debera ser usado con operadores de comparacin de fila mltiple. el
TODOS y CUALQUIER operador puede ser alternativas al uso de agregaciones.




M PRUEBA

Defina Subconsultas
1. Considere esta descripcin genrica de una select SENTENCIA:
SELECCIONE select_list DE la comando DONDE EL GRUPO de condicin POR expression_1 que TIENE
expression_2 PIDE POR expression_3; Dnde podra subconsultas ser usado? (Elija todas las respuestas
correctas.) A. select_list B. comando condicin de C. D. expression_1 E. expression_2 F.
expression_3
M Prueba
375
2. Una pregunta puede tener una subpregunta empotrada dentro de ello. Bajo que circunstancias podra
estar all
ms de una subpregunta? (Elija la mejor respuesta.) A. La pregunta externa puede incluir una
pregunta interior. No es posible tener otra pregunta dentro de
la pregunta interior.
B. Es posible empotrar una subpregunta de fila sola dentro de una subpregunta de fila mltiple, pero
no el
al revs.
C. La pregunta externa puede tener preguntas interiores mltiples, pero ellos no deben ser
empotrados dentro de
el uno al otro.
D. Las subconsultas pueden ser empotradas el uno dentro del otro sin limitaciones prcticas de la
profundidad. 3. Considere esta select:
seleccione employee_id, last_name de EMPLOYEES donde
el sueldo> (seleccionan el avg (sueldo) de EMPLOYEES);
Cundo ser ejecutada la subpregunta? (Elija la mejor respuesta.)
A. Ser ejecutado antes de la pregunta externa. B. Ser ejecutado despus de la pregunta externa.
376
Captulo 8:
La utilizacin de Subconsultas para Solucionar problemas



C. Ser ejecutado simultneamente con la pregunta externa. D. Ser ejecutado una vez para cada fila
en la comando de EMPLOYEES.
4. Considere esta select:
seleccione o.employee_id, o.last_name de EMPLOYEES o donde
el o.salary> (seleccionan avg (i.salary) de EMPLOYEES i donde yo
department_id=o.department_id);
Cundo ser ejecutada la subpregunta? (Elija la mejor respuesta.)
A. Ser ejecutado antes de la pregunta externa. B. Ser ejecutado despus de la pregunta externa. C.
Ser ejecutado simultneamente con la pregunta externa. D. Ser ejecutado una vez para cada fila en
la comando de EMPLOYEES.

Describa los Tipos de problemas Que las Subconsultas Pueden Solucionar
5. Considere la select siguiente:
seleccione last_name de DEPARTMENTS de juntura de EMPLOYEES
en EMPLOYEES department_id = DEPARTMENTS department_id donde department_name
='Executive';
y esta select:
seleccione last_name de EMPLOYEES donde department_id en
(seleccione department_id de DEPARTMENTS donde department_name ='Executive');
Qu puede ser dicho sobre las dos select? (Elija dos respuestas correctas.)
A. Las dos select deberan generar el mismo resultado. B. Las dos select podran generar resultados
diferentes. C. La primera select siempre se ejecutar con xito; la segunda select va el error si hay
dos DEPARTMENTS con 'Ejecutivo' DEPARTMENT_NAME.
D. Ambas select siempre se ejecutarn con xito, aun si hay dos DEPARTMENTS con
DEPARTMENT_NAME 'Ejecutivo'.

Liste los Tipos en una lista de Subconsultas
6. Cules son las caractersticas discernidoras de una subpregunta escalar? (Elija dos respuestas
correctas.)
A. Una subpregunta escalar devuelve una fila. B. Una subpregunta escalar devuelve una columna.
M Prueba
377



C. Una subpregunta escalar no puede ser usada en la LISTA SENTENCIA de la pregunta
paternal. D. Una subpregunta escalar no puede ser usada como una subpregunta correlacionada.
7. Qu operador de comparacin no puede ser usado con subconsultas de fila mltiple?
(Elija la mejor respuesta.) A. TODO B. CUALQUIER C. EN D. NO EN E. Todo el susodicho
puede ser usado.

Escriba Subconsultas de Fila mltiple y Fila sola
8. Considere esta select:
seleccione last_name, (cuenta sentencia (*) de DEPARTMENTS) de EMPLOYEES
donde el sueldo = (seleccionan el sueldo de EMPLOYEES);
Qu pasa con ello? (Elija la mejor respuesta.)
A. Nada es incorrecto - la select debera ejecutarse sin el error. B. La select fallar porque la
subpregunta en la lista SENTENCIA se refiere a una comando que es
no puesto en una lista en el DE clusula. C. La select fallar si la segunda pregunta devuelve
ms de una fila. D. La select se ejecutar, pero es muy ineficaz debido a la necesidad de ejecutar el
segundo
subpregunte una vez para cada fila en EMPLOYEES.
9. Cules de las select siguientes es equivalente? (Elija dos respuestas.)
A. seleccione employee_id de EMPLOYEES donde el sueldo <todos (seleccionan el sueldo de
EMPLOYEES donde
department_id=10);
B. seleccione employee_id de EMPLOYEES donde el sueldo <(seleccionan el minuto (sueldo) de
EMPLOYEES
donde department_id=10);
C. seleccione employee_id de EMPLOYEES donde el sueldo no> = cualquiera (seleccionan el
sueldo de EMPLOYEES
donde department_id=10);
D. seleccione employee_id de EMPLOYEES e DEPARTMENTS de juntura d en e.department_id
=
d.department_id donde e.salary <(seleccionan el minuto (sueldo) de EMPLOYEES) y
d.department_id=10;
378
Captulo 8:
La utilizacin de Subconsultas para Solucionar problemas



10. Considere esta select, que es querida para apremio para el nombre de un empleado y luego encontrar
todos
los EMPLOYEES que tienen el mismo trabajo que el primer empleado:
seleccione last_name, employee_id de EMPLOYEES donde job_id =
(seleccione job_id de EMPLOYEES donde last_name = '&Name');
Lo que pasara si dieran un valor para &Name que no emparej con ninguna fila en
EMPLOYEES? (Elija la mejor respuesta.) A. La select fallara con un error. B. La select devolvera
cada fila en la comando. C. La select no devolvera ningunas filas. D. La select devolvera todas las
filas donde JOB_ID es NULO.

PREGUNTA DE LABORATORIO
Entrnese 8-3 incluy esta pregunta que intent encontrar a todos los EMPLOYEES cuyo sueldo es ms
alto que esto
de un empleado denominado:
seleccione last_name de EMPLOYEES donde
el sueldo> (seleccionan el sueldo de EMPLOYEES donde last_name =' Taylor') piden por
last_name;
La pregunta se ejecuta con xito si last_name es nico. Dieron dos variaciones que se ejecutarn
sin el error pase lo que pase valoran es proporcionado.
La primera solucin era como sigue:
seleccione last_name de EMPLOYEES donde
el sueldo> todos (seleccionan el sueldo de EMPLOYEES donde last_name =' Taylor') piden
por last_name;
La segunda solucin era como sigue:
seleccione last_name de EMPLOYEES donde
el sueldo> (seleccionan el mximo (sueldo) de EMPLOYEES donde last_name =' Taylor') piden
por last_name;
Hay otras preguntas que se ejecutarn con xito; construya otras dos soluciones, una utilizacin el
CUALQUIER operador de comparacin, la otra utilizacin de la funcin de agregacin de MINUTO.
Ahora que usted tiene cuatro soluciones, dan todos ellos el mismo resultado?
Todas estas "soluciones" son de hecho slo modos de evitar el error. Ellos no necesariamente dan el
resultado que el usuario quiere, y ellos pueden no ser consecuentes. Qu el cambio tiene que ser hecho
dar a un consecuente, inequvoco, resultado?




M PRUEBAN RESPUESTAS

Defina Subconsultas
M Respuestas de Prueba
379
1. A, B, C, D, E. Subqueries puede ser usado a todos estos puntos.
F. Una subpregunta no puede ser usada en el PEDIDO POR la clusula de
una pregunta.
2. D. Subquery que anida puede ser hecho a muchos niveles.

A, B, y C. A y C son incorrectos porque las subconsultas pueden ser anidadas. El B es incorrecto
porque el
el nmero de filas volvi no es relevante para subconsultas que anidan, slo para los operadores
usados.
3. A. El SET de resultado de la pregunta interior es necesario antes de que la pregunta
externa puede ejecutarse.
B, C, y D. Los B y C no son posibles porque el resultado de la subpregunta es necesario antes

la pregunta paternal puede comenzar. El D es incorrecto porque la subpregunta slo es ejecutada
una vez.
4. D. Esto es una subpregunta correlacionada, que debe ser ejecutada para cada fila en la
comando.
A, B, y C. El resultado de la pregunta interior es dependiente de un valor de la pregunta externa;
esto
debe ser por lo tanto ejecutado una vez para cada fila.

Describa los Tipos de problemas Que las Subconsultas Pueden Solucionar
5. A, D. Las dos select entregarn el mismo resultado, y ninguno fallar si el nombre
es duplicado.
B, C. El B es incorrecto porque las select son funcionalmente idnticas, aunque sintcticamente
diferente. El C es incorrecto porque el operador de comparacin usado, EN, puede manejarse una
subpregunta de fila mltiple.

Liste los Tipos en una lista de Subconsultas
6. A, B. Una subpregunta escalar puede ser definida como una pregunta que devuelve
un valor solo.
C, D. El C es incorrecto porque una subpregunta escalar es la nica subpregu