Sunteți pe pagina 1din 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 subpregunta que puede
ser usada en el
LISTA SENTENCIA. El D es incorrecto porque las subconsultas escalares pueden ser
correlacionadas.
7. E. TODOS, CUALQUIERA, EN, y NO EN es los operadores de comparacin de fila
mltiple.
A, B, C, D. Todos stos pueden ser usados.

Escriba Subconsultas de Fila mltiple y Fila sola
8. C. El operador de igualdad requiere una subpregunta de fila sola, y la segunda subpregunta
podra
devuelva varias filas.
A, B, D. A es incorrecto porque la select fallar en todas las circunstancias excepto improbable
el instancia donde hay cero o EMPLOYEES. El B es incorrecto porque esto no es un problema; tiene
que no haber ninguna relacin entre la fuente de datos para las preguntas interiores y externas. El D
es incorrecto porque la subpregunta slo se ejecutar una vez; no es una subpregunta correlacionada.
380
Captulo 8:
La utilizacin de Subconsultas para Solucionar problemas



9. los A y B son idnticos.
el C es lgicamente el mismo como A y B, pero sintcticamente no es posible; esto dar un error.
El D siempre no devolver ningunas filas, porque pide a todos los EMPLOYEES que tienen un sueldo
ms abajo que todos los EMPLOYEES. Esto no es un error, pero nunca puede devolver ninguna fila.
El filtro en DEPARTMENTS no es relevante.
10. C. Si una subpregunta vuelve NULO, entonces la comparacin tambin volver NULO,
significando esto
ningunas filas sern recuperadas.
A, B, D. A es incorrecto porque esto no causara un error. El B es incorrecto porque una
comparacin
con el NULO no devolver nada, no todo. El D es incorrecto porque una comparacin con el NULO
nunca puede devolver nada, no hasta otro NULLs.

RESPUESTA DE LABORATORIO
Lo siguiente es dos soluciones posibles usando a CUALQUIERA y MINUTO:
seleccione last_name de EMPLOYEES donde
el sueldo> cualquiera (seleccionan el sueldo de EMPLOYEES donde last_name ='
Taylor') piden por last_name;

seleccione last_name de EMPLOYEES donde el sueldo no <(seleccionan el minuto
(sueldo) de EMPLOYEES donde last_name =' Taylor') piden por last_name;
stos son tan vlidos como las soluciones presentaron antes que us TODOS y MAX, pero ellos no
hacen
d el mismo resultado. No hay ninguna manera de decir que stos son mejores o peores que las soluciones
ms tempranas. El problema consiste en que la subpregunta est basada en una columna que no es la clave
primaria. No sera irrazonable decir que todas estas soluciones son incorrectas, y la pregunta original es la
mejor; esto da un resultado que es inequvocamente correcto si el LAST_NAME es nico, y si
LAST_NAME no es nico, esto lanza un error ms bien que dar una respuesta cuestionable. La verdadera
respuesta es que la pregunta debera estar basada en EMPLOYEE_ID, no LAST_NAME.
9
La utilizacin de
los Operadores
de SET









OBJETIVOS DE CERTIFICACIN


9.01 Describa a los Operadores de SET
9.02 Use a un Operador de SET para Combinarse Mltiple
Preguntas en una Pregunta Sola












9.03

Q&A












Controle el Pedido de Filas Devueltas
Taladradora de dos minutos M Prueba















Copyright 2008 por El Clic de McGraw-Hill Companies, Inc aqu para trminos de uso.
382
Captulo 9:
La utilizacin de los Operadores de SET
Cualquier pregunta de SQL puede ser
descrita matemticamente (el lgebra relacional es el trmino usado para esto), pero el uso de
operadores de SET consiste en que matemticas de escuela de memorias a muchos
programadores. Como su plan de estudios de matemticas puede no haber incluido la
teora de conjuntos, lo siguiente es
un resumen corto.

Todas las select SENTENCIAS devuelven un SET de filas. Los operadores de SET
toman como su ingreso los resultados de dos o ms select SENTENCIAS y de stos
generan un SET de resultado solo. Esto es conocido como una pregunta compuesta. El
oracle provee a tres operadores de SET: UNIN, CRCESE, y MENOS. LA UNIN
Puede ser calificada con TODOS. Hay una desviacin significativa del estndar de
organizacin internacional para la normalizacin para SQL aqu, en aquella
organizacin internacional para la normalizacin usos de SQL EXCEPTO donde usos de
Oracle MENOS, pero la funcionalidad es idntica. La diferencia puede ser importante
virando aplicaciones a babor (o habilidades) desarrollado para una base de datos de
tercero al entorno de Oracle.



OBJETIVO DE CERTIFICACIN 9.01


Describa a los Operadores de SET
Los operadores de SET usados en preguntas compuestas son como sigue:

UNIN Devuelve las filas combinadas de dos preguntas, clasificndolos y
borrar duplicados. UNIN TODOS Devuelve las filas combinadas de dos
preguntas sin la comandoacin
o borrar duplicados.
Los SE CRUZAN Las vueltas slo las filas que ocurren en los SETs de resultado
de las ambas preguntas,
la comandoacin de ellos y borrando duplicados.
MENOS Las vueltas slo las filas en el primer SET de resultado que no
aparecen en
el segundo resultado se puso, clasificndolos y borrando duplicados.

Estos comandos son equivalentes a los operadores estndares usados en la teora de
conjuntos de matemticas, a menudo representada grficamente como diagramas de
Venn.




SETs y Diagramas de Venn
Describa a los Operadores de SET
383
Considere agrupaciones de criaturas vivas, clasificadas como
sigue:

Criaturas con dos piernas La gente, los loros,
murcilagos Criaturas que pueden volar Loros,
murcilagos, abejas
Criaturas con piel Osos, murcilagos

Cada comandoacin es conocida como un SET, y cada miembro del SET es un
elemento.
La unin de los tres SETs es gente, loros, murcilagos, abejas, y osos. Esto es todos los
elementos en todos los SETs, sin las copias. La interseccin de los SETs es todos los
elementos que son comunes a tres SETs, otra vez borrando los duplicados. En este
ejemplo simple, la interseccin tiene slo un elemento: murcilagos. La interseccin del
SET de dos piernas y el SET de vuelo tiene dos elementos: loros y murcilagos. El menos
de los SETs es los elementos de un SET sin los elementos del otro, entonces el SET de
criaturas de dos piernas, menos el SET de criaturas volante, menos el SET de criaturas
peludo, causa un elemento solo: gente.
Estos SETs pueden ser representados grficamente como el diagrama de Venn mostrado
en la Figura 9-1. (Los diagramas de Venn son nombrados por John Venn, que formaliz la
teora en la universidad de Cambridge en el siglo diecinueve.)
El crculo en la cumbre dejada de la cifra representa el SET de criaturas de dos piernas;
el derecho de cumbre de crculo es criaturas que pueden volar; el crculo de fondo es
animales peludos. Las uniones, las intersecciones, y minuses de los SETs son
inmediatamente aparentes observando los elementos en varias partes de los crculos que
hacen o no se superponen. El diagrama


FIGURA 9-1

Un diagrama de Venn, pruebas tres SETs y el SET universal







GENTE






LOROS


MURCILAGOS






ABEJAS




OSOS DE
PESCADO
384
Captulo 9:
La utilizacin de los Operadores de SET



en la cifra tambin incluye el SET universal, representado por el rectngulo. El SET
universal es todos los elementos que existen, pero no son miembros de los SETs definidos.
En este instancia, el SET universal sera definido como todas las criaturas vivas que
evolucionaron sin desarrollar la piel, dos piernas, o la capacidad de volar (como el pescado).
Esto es bastante escuela maths; ahora siga a la realizacin dentro de SQL.

Principios generales de Operador de SET
Todos los operadores de SET hacen preguntas compuestas combinando los SETs de
resultado de dos
o ms preguntas. Si una select SENTENCIA incluye a ms de un operador de SET (y por
lo tanto ms de dos preguntas), ellos sern aplicados en el pedido que el programador
especifica: cumbre para profundizar y dejado a derecho. Aunque los realces pendientes a
la organizacin internacional para la normalizacin que SQL dar CRUCEN una
prioridad ms alta que los dems, no hay actualmente ninguna prioridad de un operador
sobre el otro. Para anular esta precedencia, basada en el pedido en el cual los operadores
aparecen, usted puede usar parntesis: los operadores dentro de soportes sern evaluados
antes de pasar los resultados a operadores fuera de los soportes.

Considerando el cambio pendiente de la prioridad de operador, puede ser la
prctica buena siempre para usar parntesis. Esto asegurar que la funcin del
cdigo no cambiar cuando ejecutado contra una versin posterior de la base de
datos.

Cada pregunta en una pregunta compuesta proyectar su propia lista de columnas
seleccionadas. Estas listas deben tener el mismo nmero de elementos, ser denominadas
en la misma secuencia, y ser del tipo de datos ampliamente similar. Ellos no tienen que
tener los mismos nombres (o aliases de columna), tampoco ellos tienen que venir de las
mismas tablas (o subconsultas). Si la columna llama (o aliases) son diferentes, el SET de
resultado de la pregunta compuesta har llamar columnas como ellos estaban en la primera
pregunta.
Mientras las listas de columna seleccionadas no
tienen que ser exactamente el mismo tipo de datos,
ellos deben ser del mismo grupo de tipo de datos. Por
ejemplo,
Las columnas en las preguntas las columnas seleccionadas por una pregunta
podran ser de
esto arregla una pregunta compuesta puede tener FECHA de tipos de datos y NMERO, y
aquellos nombres diferentes, pero el SET de resultado salida de la segunda pregunta podra ser
TIMESTAMP usar los ttulos de las columnas en el y NMERO ENTERO. El SET de resultado
del compuesto primero pregunta. la pregunta tendr columnas con el ms alto
nivel de precisin: en este instancia, ellos seran
TIMESTAMP y NMERO. Adems de
Describa a los Operadores de SET
385



aceptando tipos de datos del mismo grupo, los
operadores de SET no harn ningn reparto de tipo
implcito. Si la segunda pregunta recuperara
columnas del tipo
Las columnas correspondientes en las preguntas que arreglan una pregunta
compuesta deben ser del mismo grupo de tipo de datos.
VARCHAR2, la pregunta compuesta lanzara un error aun si las variables de cuerda pudieran ser resueltas a
fecha legtima y valores numricos.
LA UNIN, MENOS, y SE CRUZA siempre combinar los SETs de resultados del ingreso
preguntas, luego clasifique los resultados de borrar filas duplicadas. La comandoacin
est basada en todas las columnas, de la izquierda a la derecha. Si todas las columnas en
dos filas tienen el mismo
valor, entonces slo la primera fila es devuelta en
el SET de resultado compuesto. Un efecto
secundario de esto es que salida de una pregunta
compuesta ser clasificada.
Una pregunta compuesta va Si el pedido de clase (que sube, basado por filas de
vuelta por defecto clasificadas a travs de todos a la comando en la cual las columnas pasan
a las columnas, de la izquierda a la derecha. El nico aparezca en las listas sentencias) no es el
pedido usted la excepcin es la UNIN TODOS, donde las filas quiero, es posible ahorrar un
PEDIDO solo no ser clasificado. El nico lugar donde clusula al final de pregunta
compuesta. Es un PEDIDO POR la clusula es permitido est en no posible usar PEDIDO
POR en cualquier del final de la pregunta compuesta. las preguntas que arreglan el compuesto
entero
la pregunta, ya que esto interrumpira la
comandoacin que es
necesario para borrar duplicados.
UNIN TODO es la excepcin a la regla "no que clasifica ningunos duplicados": los
SETs de resultado de las dos preguntas de ingreso sern concadenados para formar el
resultado de la pregunta compuesta. Pero usted todava no puede usar el PEDIDO POR en las
preguntas individuales; slo puede aparecer al final de pregunta compuesta donde ser
aplicado al SET de resultado completo.


EJERCICIO 9-1 Describe a los Operadores de SET
En este ejercicio, usted ver el efecto de los operadores de SET. SQL*Plus o SQL
El developer puede ser usado.

1. Conecte a su base de datos como la HORA de usuario 2. Ejecute esta pregunta:

seleccione region_name de REGIONS;
Note el resultado, en particular el pedido de las filas. Si la comando es tan al
principio
creado, habr cuatro filas devueltas. El pedido ser Europa, Amrica, Asia, Oriente
Medio.
386
Captulo 9:
La utilizacin de los Operadores de SET



3. Pregunte la comando de REGIONS dos veces, usando la UNIN:

seleccione region_name de region_name escogido de la unin de REGIONS de REGIONS;
Las filas volvieron ser en cuanto al paso 1, pero clasificado por comando alfabtico.
4. Esta vez, use la UNIN TODOS:

seleccione region_name de la unin de REGIONS todos seleccionan region_name de REGIONS;
All ser doble el nmero de filas, y ellos no sern clasificados.
5. Una interseccin recuperar filas comunes para dos preguntas:

region_name escogidos de REGIONS cruzan region_name escogido de REGIONS;
Cuatro filas son comunes, y el resultado es clasificado.
6. Un MENOS borrar filas comunes:

seleccione region_name de REGIONS menos region_name escogido de REGIONS;
La segunda pregunta borrar todas las filas en la primera pregunta. Resultado: ningunas filas se marcharon.




OBJETIVO DE CERTIFICACIN 9.02


Use a un Operador de SET para Combinar
Preguntas Mltiples en una Pregunta Sola
Las preguntas compuestas son dos o ms preguntas, conectadas con uno o varios
operadores de SET.
El resultado final es un SET de resultado solo.
Los ejemplos que siguen estn basados en dos tablas, OLD_DEPT y NEW_DEPT. La
comando OLD_DEPT es querido para representar una comando creada con una versin
ms temprana del Oracle, cuando el nico tipo de datos disponible para representar fecha y
datos de tiempo era la FECHA, la nica opcin para datos numricos era el NMERO, y
los datos de carcter eran el TRABAJO POR HORAS de longitud fija. NEW_DEPT de
comando usa el NMERO ENTERO ms estrechamente definido tipo de datos numrico
(que el Oracle pone en prctica como VARIOS hasta 38 dgitos significativos, pero
ningunos sitios decimales), VARCHAR2 ms espacial y eficiente para el carcter
Use a un Operador de SET para Combinar Preguntas Mltiples en una Pregunta
Sola
387



los datos, y el tipo de datos TIMESTAMP, que puede por fecha de tienda por defecto y
valores de tiempo con seis decimales de la precisin durante los segundos. Hay dos filas en
cada comando.

La UNIN TODO el Operador
Una UNIN TODO toma dos SETs de resultado y los concadena juntos en un single
el resultado se puso. Los SETs de resultado vienen de dos preguntas que deben
seleccionar el mismo nmero de columnas, y las columnas correspondientes de las dos
preguntas (en el pedido en el cual ellos son especificados) debe ser del mismo grupo de
tipo de datos. Las columnas no tienen que tener los mismos nombres.
La figura 9-2 demuestra una UNIN TODA la operacin de dos tablas. La UNIN
TODAS las dos tablas converte todos los valores al nivel ms alto de la precisin: las
fechas son devueltas como timestamps (las FECHAS menos precisas rellenadas de ceros),
los datos de carcter son VARCHAR2 ms eficiente con la longitud de la columna de
ingreso ms larga, y los nmeros (aunque esto no sea obvio debido a la naturaleza de los
datos) aceptar decimales. El pedido de las filas es las filas de la primera comando, en
cualquier pedido ellos resultan ser almacenados, seguidos de las filas de la segunda
comando en cualquier pedido ellos resultan ser almacenados.

El Operador de UNIN
Una UNIN realiza una UNIN TODOS y luego clasifica el resultado a travs de todas las
columnas
y borra duplicados. La primera pregunta en la Figura 9-3 devuelve cuatro filas porque no hay
ningunos duplicados. Sin embargo, las filas estn ahora en el pedido. Puede parecer que las
dos primeras filas no estn en el pedido debido a los valores en el FECHADO, pero ellos
son: el DNAME


FIGURA 9-2

Una UNIN TODOS con conversiones de tipo de datos
388
Captulo 9:
La utilizacin de los Operadores de SET






Una UNIN TODOS volvern




en la comando OLD_DEPTS es 20 bytes de largo (rellenado de espacios), mientras que el DNAME en
NEW_DEPTS, donde es un VARCHAR2, slo es mientras el nombre s mismo. Los espacios dan el
las filas se agruparon de cada pregunta en su pedido natural. Este comportamiento puede
ser modificado colocando un PEDIDO solo POR la clusula al final.
la fila de OLD_DEPT un valor de clase ms alto, aunque el valor de fecha sea menos.
La segunda pregunta en la Figura 9-3 borra cualquier conduccin o rastreo de espacios de las columnas
DNAME y corta los elementos tiempo de
FECHADO y COMENZADO. Dos de las filas as se hacen idnticas, y entonces slo un
aparece en salida.
A causa de la clase, el pedido de las preguntas en una pregunta de compuesto de
UNIN no hace ninguna diferencia del pedido de las filas devuelta.

Si usted sabe que no pueden haber ningunos duplicados entre dos tablas,
entonces siempre usan la UNIN TODOS. Esto guarda la base de datos de hacer
mucha comandoacin. Su DBA no ser contento con usted si usted usa la
UNIN innecesariamente.

El Operador CRUZAR
La interseccin de dos SETs es las filas que son comunes a ambos SETs, como mostrado
en
Figura 9-4.
La primera pregunta mostrada en la Figura 9-4 no devuelve ningunas filas, porque cada
fila en las dos tablas es diferente. Despus, la aplicacin de funciones para eliminar
algunas diferencias devuelve una fila comn. En este instancia, slo una fila es devuelta;
hubo varias filas comunes, ellos estaran en el pedido. El pedido en el cual las preguntas
aparecen en la pregunta compuesta no tiene ningn efecto en esto.

FIGURA 9-3

Preguntas de compuesto de UNIN
Use a un Operador de SET para Combinar Preguntas Mltiples en una Pregunta
Sola
389



FIGURA 9-4

CRCESE y MENOS















EL MENOS Operador
UN MENOS carreras tanto preguntas, clasifica los resultados, como slo devuelve las
filas del
primero resulte el SET que no aparecen en el segundo SET de resultado.
La tercera pregunta en la Figura 9-4 devuelve todas las filas en OLD_DEPT porque
no hay ningunas filas correspondientes en NEW_DEPT. La ltima pregunta fuerza
alguna concordancia, causando una de las filas al borrado. A causa de la clase, las filas
estarn en el pedido independientemente del pedido en el cual las preguntas aparecen
en la pregunta compuesta.




DENTRO DEL EXAMEN


La utilizacin de los Operadores de SET
Una pregunta compuesta es una pregunta arreglada de varias preguntas, pero ellas no son subconsultas.
Una subpregunta genera un SET de resultado que es usado por otra pregunta; las preguntas en una
pregunta compuesta se ejecutan independientemente, y una etapa separada de la ejecucin combina los
SETs de resultado.
Esta operacin de combinacin es llevada a cabo clasificando los SETs de resultado y fusionndolos
juntos. Hay una excepcin a esto: UNIN TODO no hace ningn procesamiento despus de ejecutar
las dos preguntas; esto simplemente pone los resultados en una lista de cada uno.
390
Captulo 9:
La utilizacin de los Operadores de SET



Ejemplos Ms complejos
Si dos preguntas no devuelven el mismo nmero de columnas, todava puede ser posible a
ejectelos en una pregunta compuesta generando columnas adicionales con valores
NULOS. Por ejemplo, considere un sistema de comandoacin para animales: todos los
animales tienen un nombre y un peso, pero las aves tienen una envergadura mientras que
los gatos tienen una longitud de cola. Una pregunta para poner en una lista todas las aves y
gatos podra ser:

seleccione el nombre, tail_length, to_char (nulo) de la unin de gatos todo
el nombre escogido, to_char (nulo), wing_span de aves;
Note el uso de TO_CHAR (NULO) para generar los valores ausentes.
Una pregunta compuesta puede consistir en ms de dos preguntas, en cuyo instancia
operador
la precedencia puede ser controlada con parntesis. Sin parntesis, los operadores de
SET sern aplicados en la secuencia en la cual ellos son especificados. Considere la
situacin donde hay una comando PERMSTAFF con un listado de todos los
EMPLOYEES permanentes y unos CONSULTORES de comando con un listado del
personal de consultor. Tambin hay una LISTA NEGRA de comando de la gente puesta
en el ndice por un motivos o el otro. La pregunta siguiente pondr a todo el personal
permanente y consultor en una lista en un cierto geogrfico, borrando a aquellos en la lista
negra:

seleccione el nombre de permstaff donde posicin = unin 'de Alemania' todo
el nombre escogido de consultores donde work_area = 'Europa Occidental'
menos el nombre escogido de la lista negra;
Note el uso de UNIN TODOS, porque es asumido que nadie estar en ambos
el PERMSTAFF y las tablas de CONSULTORES; una UNIN forzara una clase
innecesaria. El pedido de precedencia para operadores de SET es el pedido especificado
por el programador, entonces el MENOS la operacin comparar la LISTA NEGRA con
el resultado de la UNIN TODOS. El resultado ser todo el personal (permanente y
consultor) quines no aparecen en la lista negra. Si poner en el ndice slo pudiera ser
aplicado al personal consultor y no al personal permanente, habra dos posibilidades. En
primer lugar, las preguntas podran ser puestas en una lista en un pedido diferente:

seleccione el nombre de consultores donde work_area = 'Europa
Occidental' menos el nombre escogido de la unin de lista negra todo el nombre
escogido de permstaff donde posicin = 'Alemania';
Use a un Operador de SET para Combinar Preguntas Mltiples en una Pregunta
Sola



Esto devolvera a consultores que no son puestos en el ndice y luego aaden todos
391
personal permanente. O bien, los parntesis podran controlar la precedencia
explcitamente:

seleccione el nombre de permstaff donde la posicin = unin 'de Alemania'
todos (seleccionan el nombre de consultores donde work_area = 'Europa
Occidental' menos el nombre escogido de la lista negra);
Esta pregunta pondr a todo el personal permanente en una lista y luego aadir a todo
el personal de consultor quien
no son puestos en el ndice.
Estas dos preguntas devolvern las mismas filas, pero el pedido ser diferente porque la
UNIN TODAS las operaciones pone en una lista el PERMSTAFF y tablas de
CONSULTORES en una secuencia diferente. Para asegurar que las preguntas devuelven
SETs de resultado idnticos, tendra que haber un PEDIDO POR la clusula en el pie de las
preguntas compuestas.

Las dos preguntas precedentes devolvern las mismas filas, pero la segunda
versin podra ser considerada el mejor cdigo porque los parntesis lo hacen ms
auto - documentacin. Adems, confiar en la precedencia implcita basada en el
pedido de los trabajos de preguntas en este momento, pero las futuras
liberaciones del SQL puede incluir la precedencia de operador de SET.





GUIN & SOLUCIN

Como le puede presentar varias tablas Esto es un problema comn, a menudo causado por el anlisis de sistemas malo
con datos similares como una comando? o quizs por tentativas de integrar sistemas juntos. Compuesto
las preguntas a menudo son la respuesta. Usando el reparto de tipo funciona
para obligar columnas al mismo tipo de datos y TO_CHAR (NULO) a
generar columnas ausentes, usted puede presentar los datos como si fuera
de una comando.
Hay all cuestiones de rendimiento con Quizs. A excepcin de la UNIN TODOS, comliste preguntas de
compuesto de preguntas? tienen que clasificar datos, a travs de la anchura llena de las filas. Esto puede ser
caro tanto en memoria como en unidad central de proceso. Tambin, si las
dos preguntas ambos se dirigen a la misma comando, habr dos pasa por
los datos ya que cada pregunta es ejecutada independientemente; si el
mismo resultado pudiera ser conseguido con un (aunque probablemente
ms complicado) pregunta, esto sera por lo general una solucin ms
rpida. Las preguntas compuestas son un instrumento potente, pero
deberan ser usadas con la precaucin.
392
Captulo 9:
La utilizacin de los Operadores de SET



EJERZA 9-2 Utilizacin de los Operadores de SET
En este ejercicio, usted ejecutar preguntas compuestas ms complejas.

1. Conecte a su base de datos como la HORA de usuario 2. Ejecute esta pregunta para
contar a los EMPLOYEES en tres DEPARTMENTS:

seleccione department_id, la cuenta (1) de EMPLOYEES donde
department_id en (20,30,40) grupo por department_id;

3. Obtenga el mismo resultado con una pregunta compuesta:

seleccione 20, la cuenta (1) de EMPLOYEES donde unin department_id=20
todos los 30 escogidos, la cuenta (1) de EMPLOYEES donde unin
department_id=30 todos los 40 escogidos, la cuenta (1) de EMPLOYEES
donde department_id=40;

4. Averige si cualquier gerente maneja al personal en las ambas oficinas 20 y 30, y
excluya a cualquier gerente con el personal en la oficina 40:

seleccione manager_id de EMPLOYEES donde department_id=20 cruzan
manager_id escogido de EMPLOYEES donde department_id=30 menos
manager_id escogido de EMPLOYEES donde department_id=40;

5. Use una pregunta compuesta para relatar sueldos subsumados por el departamento,
por el gerente,
y el total total:

seleccione department_id, to_number (nulo), sume (sueldo) del grupo
de EMPLOYEES por la unin department_id seleccionan el to_number (nulo),
manager_id, suman (sueldo) del grupo de EMPLOYEES por la unin
manager_id todos seleccionan el to_number (nulo), to_number (nulo),
suman (sueldo) de EMPLOYEES;





OBJETIVO DE CERTIFICACIN 9.03
Controle el Pedido de Filas Devueltas
393


Controle el Pedido de Filas Devueltas
En ausencia, salida de una UNIN TODA la pregunta compuesta no es clasificada en
absoluto: el
las filas sern devueltas en grupos en el pedido del cual la pregunta fue puesta en una lista
primero y dentro de los grupos en el pedido que ellos resultan ser almacenados. Salida de
cualquier otro operador de SET ser clasificada en comando ascendente de todas las
columnas, que comienzan con la primera columna llamada.
No es sintcticamente posible usar un PEDIDO POR la clusula en las preguntas
individuales que arreglan una pregunta compuesta. Esto es porque la ejecucin de la
mayor parte de preguntas compuestas tiene que clasificar las filas, que entraran en
conflicto con el PEDIDO POR. Podra parecer tericamente posible que una UNIN por
la cual TODOS (que no clasifica las filas) podran tomar un PEDIDO para cada pregunta,
pero la realizacin de Oracle de la UNIN que TODO no permite a esto.
No hay ningn problema con la colocacin de un PEDIDO POR la clusula al final de
pregunta compuesta, sin embargo. Esto clasificar el entero salida de la pregunta
compuesta. La comandoacin por defecto de filas est basada en todas las columnas en la
secuencia ellos aparecen. Un PEDIDO especificado POR la clusula no tiene ningunas
restricciones: puede estar basado en cualquier columna (y funciones aplicadas a
columnas) en cualquier pedido. Por ejemplo:

SQL> seleccione deptno, recorte (dname) el nombre de
old_dept
2 unin 3 seleccione dept_id, dname de new_dept 4
pedido de nombre;
NOMBRE DE DEPTNO
---------- --------------------
10 Cuentas 30 Admin 20 Apoyo
Note que los nombres de columna en el PEDIDO POR la clusula deben ser el
nombre (s) (o,
en este instancia, el alias) de las columnas en la primera pregunta de la pregunta
compuesta.
394
Captulo 9:
La utilizacin de los Operadores de SET



EJERZA 9-3 Control que el Pedido de Filas Devolvi
En este ejercicio, usted comandoar el resultado del paso final en el Ejercicio 2. Este paso
producido un listado de sueldos sumados por el departamento y luego por el gerente, pero
los resultados no fue muy bien formateado.

1. Conecte a su base de datos como la HORA de usuario 2. Genere mejores ttulos de
columna para la pregunta:
seleccione el departamento department_id, to_number mgr (nulo), sume
(sueldo)
del grupo de EMPLOYEES por la unin department_id todos seleccionan el
to_number (nulo), manager_id, suman (sueldo) del grupo de EMPLOYEES
por la unin manager_id todos seleccionan el to_number (nulo),
to_number (nulo), suman (sueldo) de EMPLOYEES;

3. Intente clasificar los resultados de las preguntas que total parcial usando la
UNIN
en vez de UNIN TODOS:
seleccione el departamento department_id, to_number mgr (nulo), sume
(sueldo)
del grupo de EMPLOYEES por la unin department_id seleccionan el to_number
(nulo), manager_id, suman (sueldo) del grupo de EMPLOYEES por la unin
manager_id todos seleccionan el to_number (nulo), to_number (nulo),
suman (sueldo) de EMPLOYEES;
Esto sera fino, salvo que los totales parciales para el personal sin un departamento
o
un gerente es colocado en el fondo de salida encima del magnfico total, no en las
secciones para DEPARTMENTS y gerentes.
4. Genere un valor para reemplazar el NULLs para cdigos de gerente y
departamento
y para el total total:
seleccione 20, la cuenta (1) de EMPLOYEES donde department_id=20
unin todos los 30 escogidos, la cuenta (1) de EMPLOYEES donde unin
department_id=30 todos los 40 escogidos, la cuenta (1) de EMPLOYEES
donde department_id=40;
Resumen de certificacin
395



5. Averige si cualquier gerente maneja al personal en las ambas oficinas 20 y 30, y
excluya a cualquier gerente con el personal en la oficina 40:
seleccione manager_id de EMPLOYEES donde department_id=20
cruce manager_id escogido de EMPLOYEES donde department_id=30 menos
manager_id escogido de EMPLOYEES donde department_id=40;

6. Use una pregunta compuesta para relatar sueldos subsumados por el departamento,
por el gerente,
y el total total:
seleccione el departamento department_id, to_number mgr (nulo), sume
(sueldo)
del grupo de EMPLOYEES por la unin department_id seleccionan el to_number
(nulo), manager_id, suman (sueldo) del grupo de EMPLOYEES por la unin
manager_id todos seleccionan el to_number (nulo), to_number (nulo),
suman (sueldo) de EMPLOYEES;



RESUMEN DE CERTIFICACIN
Los operadores de SET combinan los SETs de resultado de dos o ms preguntas en un
resultado
SET. Una pregunta que usa a un operador de SET es una pregunta compuesta. Los
operadores de SET son la UNIN, UNIN TODOS, SE CRUZAN, y MENOS. Ellos
tienen la precedencia igual, y si ms de un es incluido en una pregunta compuesta ellos
sern ejecutados en el pedido en el cual ellos ocurren - aunque esto pueda ser controlado
usando parntesis. Todos los operadores de SET excepto la UNIN TODOS confan en
la comandoacin para fusionar SETs de resultado y borrar filas duplicadas.
Las preguntas en una pregunta compuesta deben devolver el mismo nmero de
columnas. Las columnas correspondientes en cada pregunta deben ser de tipos de datos
compatibles. Las preguntas pueden usar aspectos de la select SENTENCIA a excepcin
del PEDIDO POR; es, sin embargo, permisible colocar un PEDIDO solo POR la clusula
al final de pregunta compuesta.
396
Captulo 9:
La utilizacin de los Operadores de SET




TALADRADORA DE DOS MINUTOS

Describa a los Operadores de SET
UNIN TODO concadena los resultados de dos preguntas. UNIN clasifica los
resultados de dos preguntas y borra duplicados. los CRUZAN vueltas slo las filas comunes
para el resultado de dos preguntas. MENOS vueltas las filas de la primera pregunta que no
existen en el segundo
pregunta.

Use a un Operador de SET para Combinar Preguntas Mltiples en una
Pregunta Sola
Las preguntas en la pregunta compuesta debe devolver el mismo nmero de columnas. Las
columnas correspondientes debe ser del tipo de datos compatible. Los operadores de SET
tienen la precedencia igual y ser aplicado en el pedido ellos
son especificados.

Controle el Pedido de Filas Devueltas
no es posible usar el PEDIDO POR en las preguntas individuales que hacen a
pregunta compuesta. Un PEDIDO POR la clusula puede ser aadido al final de una
pregunta compuesta. Las filas devueltas por una UNIN TODOS estarn en el pedido ellos
ocurren en el
dos preguntas de la fuente.
Las filas devueltas por una UNIN ser clasificado a travs de todas sus columnas, dejadas
a derecho.




M PRUEBA

Describa a los Operadores de SET
1. Cul de estos operadores de SET no clasificar las filas? (Elija la mejor respuesta.)
A. CRUCE B. MENOS C. UNIN D. UNIN TODOS
M Prueba
397
2. Cul de estos operadores borrar filas duplicadas del resultado final? (Elija todo que se aplican.)
A. CRUCE B. MENOS C. UNIN D. UNIN TODOS

Use a un Operador de SET para Combinar Preguntas Mltiples en una
Pregunta Sola
3. Si una pregunta compuesta contiene tanto un MENOS como un operador CRUZAR, que ser
aplicado primero? (Elija la mejor respuesta.) A. CRUZAR, porque SE CRUZAN tiene la
precedencia ms alta que MENOS. B. El MENOS, porque MENOS tiene una precedencia ms alta
que SE CRUZAN. C. La precedencia es determinada por el pedido en el cual ellos son
especificados. D. No es posible para una pregunta compuesta incluir tanto MENOS como
CRUZARSE.
4. Hay cuatro filas en la comando de REGIONS. Considere las select siguientes y elija como
muchas filas sern devueltas para cada uno: 0, 4, 8, o 16.
A. seleccione * de la unin de REGIONS sentencia * de REGIONS B. escogido * de la unin
de REGIONS que todos seleccionan * de REGIONS C. escogido * de REGIONS menos el escogido
* de REGIONS que D. escogidos * de REGIONS cruzan escogido * de REGIONS
5. Considere esta pregunta compuesta:
seleccione empno, alquilado de emp
unin todos seleccionan emp_id, alquilado, disparado de ex_emp;
398
Captulo 9:
La utilizacin de los Operadores de SET



Las columnas EMP.EMPNO y EX_EMP.EMP_ID son el nmero entero; la columna EMP.HIRED es
timestamp; las columnas EX_EMP.HIRED y EX_EMP.FIRED son la fecha. Por qu va el estado -
ment falla? (Elija la mejor respuesta.) A. Como las columnas EMPNO y EMP_ID tienen nombres
diferentes B. Como las columnas EMP.HIRED y EX_EMP.HIRED son tipos de datos diferentes C.
Como hay dos columnas en la primera pregunta y tres columnas en la segunda consulta D. Por todos
los motivos encima de E. La pregunta tendr xito.

Controle el Pedido de Filas Devueltas
6. Qu lnea de esta select har que esto falle? (Elija la mejor respuesta.)
A. seleccione ename, alquilado de current_staff B. pedido por ename C. menos D.
seleccionan ename, alquilado del personal corriente E. donde deptno=10 F. piden por
ename;
7. Estudie esta select:

seleccione ename de la unin emp todos seleccionan ename de ex_emp;
En que pedido sern devueltas las filas? (Elija la mejor respuesta.)
A. Las filas de cada comando sern agrupadas y dentro de cada grupo ser clasificado en ENAME.
B. Las filas de cada comando sern agrupadas, pero no clasificadas. C. Las filas no sern agrupadas,
pero sern todos clasificadas en ENAME. D. Las filas sern ni agrupadas, ni clasificadas.

PREGUNTA DE LABORATORIO
Trabajando en el esquema de HORA, disee algunas preguntas que generarn informes usando a los
operadores de SET.
Los informes requeridos son como sigue:
1. Los EMPLOYEES tienen su trabajo corriente (identificado por JOB_ID) registrado en su fila de
EMPLOYEES.
Los JOBS que ellos han sostenido antes (pero no su trabajo corriente) son registrados en
JOB_HISTORY. Qu EMPLOYEES nunca han cambiado JOBS? El listado debera incluir
EMPLOYEE_ID de los EMPLOYEES y LAST_NAME.
Pregunta de laboratorio
399



2. Qu EMPLOYEES fueron reclutados en un trabajo, luego cambiaron a un trabajo diferente, pero son
ahora
atrs en un trabajo ellos sostuvieron antes? Otra vez, usted tendr que construir una pregunta que
compara a EMPLOYEES con JOB_HISTORY. El informe debera mostrar los nombres de los
EMPLOYEES y los ttulos de trabajo. Los ttulos de trabajo son almacenados en los JOBS de
comando.
3. Qu JOBS tiene cualquier empleado sostuvo? Esto ser el JOB_ID para la corriente del empleado
trabajo (en EMPLOYEES) y todos los JOBS anteriores (en JOB_HISTORY). Si el empleado ha
sostenido un trabajo ms que una vez, no hay ninguna necesidad de ponerlo en una lista ms que una
vez. Use una variable de reemplazo para apremio para el EMPLOYEE_ID y mostrar el ttulo (s) de
trabajo. Los EMPLOYEES 101 y 200 sern EMPLOYEES convenientes para pruebas.
400
Captulo 9:
La utilizacin de los Operadores de SET



M PRUEBAN
RESPUESTAS

Describa a los Operadores de SET
1. D. La UNIN TODAS las filas de vueltas en el pedido que ellos son entregados por las dos
preguntas de
que la pregunta compuesta es arreglada.
A, B, C. CRCESE, MENOS, y UNIN todo el uso que clasifica como la parte de su
ejecucin.
2. A, B, C. CRCESE, MENOS, y UNIN todos borran filas duplicadas.
D. UNIN TODAS las vueltas todas las filas, los duplicados incluidos.

Use a un Operador de SET para Combinar Preguntas Mltiples en una
Pregunta Sola
3. C. Todos los operadores de SET tienen la precedencia igual, entonces la precedencia es
determinada por el
la secuencia en la cual ellos ocurren.
A, B, D. A y B son incorrectos porque los operadores puestos tienen la precedencia igual -
aunque esto pueda
cambio de futuras liberaciones. El D es incorrecto porque muchos operadores de SET pueden ser
usados en una pregunta compuesta.
4. UN = 4; B = 8; C = 0; D = 4
Nota que 16 no es usado; sera el resultado de una pregunta de producto Cartesiano.
5. C. Cada pregunta en una pregunta compuesta debe devolver el mismo nmero de
columnas.
A, B, D, E. A es incorrecto porque las columnas pueden tener nombres diferentes. El B es
incorrecto porque
las dos columnas son del mismo grupo de tipo de datos, que es todo que fue requerido. Esto por lo
tanto sigue esto D y E tambin son incorrectos.

Controle el Pedido de Filas Devueltas
6. B. Usted no puede usar el PEDIDO POR para una pregunta de una pregunta compuesta; usted
slo puede colocar un
PEDIDO solo POR clusula al final.
A, C, D, E, F. Todas estas lneas son legales.
7. B. Las filas de cada pregunta estarn juntos, pero no habr ninguna comandoacin.

A, C, D. A no es posible con ninguna sintaxis. El C es incorrecto porque sera el resultado de un

UNIN, no una UNIN TODOS. El D es incorrecto porque UNIN TODOS devolvern las filas de
cada pregunta agrupada juntos.




RESPUESTA DE LABORATORIO
Respuesta de laboratorio
401
1. Para identificar a todos los EMPLOYEES que no han cambiado el trabajo, pregunte la comando de
EMPLOYEES y borre
todos aquellos que se pelean en JOB_HISTORY:
seleccione employee_id, last_name de EMPLOYEES
menos employee_id escogido, last_name de job_history acompaan a EMPLOYEES que usan
(employee_id);
2. Todos los EMPLOYEES que han cambiado el trabajo al menos una vez se pelearn en
JOB_HISTORY; para aquellos
quines estn de vuelta ahora en un trabajo que ellos han sostenido antes, el JOB_ID en
EMPLOYEES ser el mismo como el JOB_ID en una de sus filas en JOB_HISTORY:
seleccione last_name, job_title de EMPLOYEES se afilian a JOBS usando (job_id)
cruce last_name escogido, job_title de job_history h JOBS de juntura j en
(h.job_id=j.job_id) acompaan a EMPLOYEES e en (h.employee_id=e.employee_id);
3. Esta pregunta compuesta apremio para un EMPLOYEE_ID y luego pondr la corriente del empleado en
una lista
trabajo y JOBS anteriores,
seleccione job_title de EMPLOYEES de juntura de JOBS que usan (job_id)
donde employee_id=&&Who unin seleccionan job_title de la juntura de JOBS job_history
usando (job_id) donde employee_id=&&Who;
La figura 9-5 muestra la pregunta y su resultado en el Developer SQL, despus de dar 101 como el
EMPLOYEE_ID.

FIGURA 9-5

Una pregunta compuesta y el resultado
Esta pgina intencionadamente se dej en blanco
10
Manipulacin de
Datos












OBJETIVOS DE CERTIFICACIN


10.01

10.02
10.03


Describa Cada Lenguaje de Manipulacin de Datos (DML) Select
Filas de insercin en unas Filas de Actualizacin de Comando en una Comando


10.04
10.05

Q&A


Borre Filas de una Comando
Transacciones de control Taladradora De dos minutos M Prueba














Copyright 2008 por El Clic de McGraw-Hill Companies, Inc aqu para trminos de uso.
404
Captulo 10:
Manipulacin de Datos
Este captulo es todo sobre los comandos aquellos datos de cambio.
Sintcticamente, los comandos de DML son mucho ms simples que el comando ESCOGIDO que ha
sido estudiado hasta ahora. Sin embargo, hay una cantidad grande de la teora de base de datos
relacional que viene junto con
DML. As como entendiendo los comandos que hacen los cambios, es esencial entender
la teora de la direccin de transaccin, que es la parte del paradigma de base de datos relacional. Los
mecanismos de direccin de transaccin proporcionados por la base de datos de Oracle garantizan la
conformidad a los estndares relacionales para transacciones: ellos ponen en prctica lo que es
comnmente referido como el CIDO (atomicity, consecuencia, aislamiento, y durabilidad) prueba.

Detalle siguiente de los comandos de DML, este captulo incluye un tratamiento lleno
de
la teora necesaria: la integridad transaccional, el cierre de registro, y leen el
consecuencia.



OBJETIVO DE CERTIFICACIN 10.01


Describa Cada Lenguaje de Manipulacin de Datos
(DML) Select
En sentido estricto, hay cinco comandos de DML:

SELECCIONAN INSERCIN DE ACTUALIZAN BORRAR FUSIN

En la prctica, la mayor parte de profesionales de base de datos nunca incluyen
ESCOGIDO como la parte de DML.
Se considera que esto es una lenguaje separada en su propio derecho, que es bastante
razonable cuando usted considera que se han necesitado los ocho captulos precedentes
para describirlo. El comando de FUSIN a menudo es dejado caer tambin, no porque no
es claramente un comando de manipulacin de datos, pero porque esto no hace nada que
no pueda ser hecho con otros comandos. Pueden pensar de la FUSIN como un atajo
para ejecutar un INSERCIN o una ACTUALIZACIN o un BORRAR, segn un poco
de condicin. Un comando a menudo considerado con DML es TRUNCADO. Esto es
realmente un DDL (Lenguaje de Definicin de Datos) comando, pero como el efecto para
usuarios finales es el mismo como
Describa Cada Lenguaje de Manipulacin de Datos (DML) Select
405



BORRAR (aunque su realizacin sea totalmente diferente), esto realmente
corresponde con DML. De este modo, los comandos siguientes son descritos en las
siguientes secciones, con sintaxis y ejemplos:

INSERTAN ACTUALIZACIN DE BORRAR TRUNCADO

Adems, hablaremos, para el completo:

FUSIN

stos son los comandos que manipulan datos.


INSERCIN




El oracle almacena datos en la forma de filas en tablas. Las tablas son pobladas con filas (como un pas es
poblado con la gente) de varios modos, pero la mayor parte de mtodo comn es con la select de
INSERCIN. SQL es una lenguaje orientada al SET, entonces cualquier comando puede afectar una fila o
un SET de filas. Resulta que una select de INSERCIN puede insertar una fila individual en una comando
o muchas filas en muchas tablas. Las versiones bsicas de la select realmente insertan slo una fila, pero las
variaciones ms complejas, con un comando, pueden insertar filas mltiples en tablas mltiples.

Hay tcnicas mucho ms rpidas que el INSERCIN para poblar una comando con grandes
nmeros de filas. stos son la herramienta SQL*Loader, que puede ascenso de archivos datos
de archivos producidos por un sistema de alimentador externo, y Datapump, que puede
transferir datos al por mayor de una base de datos de Oracle al otro - va archivos de disco o
por un enlace de red.

Las tablas tienen reglas defini aquel control las filas que pueden ser insertadas. Estas reglas son
coacciones. Una coaccin es una realizacin de una regla comercial. Los analistas comerciales que modelan
los procesos de negocio de una organizacin disearn un conjunto de reglas para los datos de la organizacin.
Los ejemplos de tales reglas podran ser que cada empleado debe tener un nmero de empleado nico, o que
cada empleado debe ser adjudicado a un departamento vlido. La creacin de coacciones es descrita en el
Captulo 11 - por el momento, recuerde que no hay ningn modo que un comando de INSERCIN pueda
insertar una fila esto
406
Captulo 10:
Manipulacin de Datos



viola una coaccin. Tan si usted intenta insertar una fila en EMPLOYEES con un
EMPLOYEE_ID que ya existe en otra fila, o con un DEPARTMENT_ID que no
empareja una fila en la comando de DEPARTMENTS, el insercin fallar. Las
coacciones garantizan que los datos en la base de datos se conforman con las reglas que
definen los procedimientos comerciales.
Hay muchas fuentes posibles para la fila (o filas) insertadas por una select de
INSERCIN. Una fila sola puede ser insertada proporcionando los valores a las columnas
de la fila individualmente. Tal select puede ser construida teclendolo en SQL*Plus o
Developer SQL, o por un proceso de usuario ms sofisticado que presenta una forma que
apremio para valores. Esto es la tcnica usada para generar las filas insertadas
interactivamente por usuarios finales. Para insercins de filas mltiples, la fuente de las
filas puede ser una select SENTENCIA. Salida de cualquiera y todas las select
SENTENCIAS habladas en preceder a ocho captulos pueden ser usadas como el ingreso
a una select de INSERCIN.
Pueden pensar del resultado final de cualquier select SENTENCIA como una
comando: unos dos - SET dimensional de filas. Esta "comando" puede ser mostrada a un
usuario (quizs en un instrumento simple como SQL*Plus), o puede ser pasado a un
comando de INSERCIN para poblar otra comando, definida dentro de la base de datos.
La utilizacin de una select SENTENCIA a construccin
las filas para una select de INSERCIN son una
tcnica muy comn. El ESCOGIDO puede realizar
muchas tareas. stos tpicamente incluyen la
conexin

Un comando de INSERCIN las filas insertadas en la comando objetivo
contienen
puede insertar una fila, con valores de columna la informacin que es mucho ms
inmediatamente especificada en el comando, o un SET de filas comprensible a los usuarios finales
que la materia prima creado por una select SENTENCIA. datos en las tablas de la fuente.

ACTUALIZACIN
tablas y agregaciones, de modo que resultar








El comando de ACTUALIZACIN es usado para cambiar filas que ya las existir-filas
que han sido creadas por un comando de INSERCIN, o posiblemente por un
instrumento, como Datapump. Como con cualquier otro comando de SQL, una
ACTUALIZACIN puede afectar una fila o un SET de filas. La talla del SET afectado
por una ACTUALIZACIN es determinada por un DONDE la clusula, de exactamente
el mismo modo que el SET de filas recuperadas por una select SENTENCIA es definido
por un DONDE clusula. La sintaxis es idntica. Todas las filas actualizadas estarn en
una comando; no es posible para un comando de actualizacin solo de afectar filas en
tablas mltiples.
Actualizando una fila o un SET de filas, el comando de ACTUALIZACIN especifica
que
columnas de la fila (s) para actualizar. No es necesario (o en efecto comn) actualizar
Describa Cada Lenguaje de Manipulacin de Datos (DML) Select
407



cada columna de la fila. Si la columna actualizada ya tiene un valor, entonces este valor
es reemplazado con el nuevo valor especificado por el comando de ACTUALIZACIN.
Si la columna no fuera poblada antes - que debe decir, su valor era NULO ENTONCES
ser poblada despus de la ACTUALIZACIN con el nuevo valor.
Un uso tpico de la ACTUALIZACIN debe recuperar una fila y actualizar una o
varias columnas de la fila. La recuperacin ser hecha usando un DONDE la clusula que
selecciona una fila por su clave primaria, el identificador nico que asegurar que slo
una fila es recuperada. Entonces las columnas que son actualizadas sern cualquier
columna adems de la columna de clave primaria. Es muy extrao cambiar el valor de la
clave primaria. La vida de una fila comienza cuando es insertada, luego puede seguir a
travs de varias actualizaciones, hasta que ella sea borrada. En todas partes de esta vida,
esto no cambiar por lo general su clave primaria.
Para actualizar un SET de filas, use un menos
restrictivo DONDE clusula que la clave primaria.
Para actualizar cada fila en una comando, no use a
ninguno DONDE clusula en absoluto. Este
comportamiento de SET puede
Una select de ACTUALIZACIN est desconcertante cuando esto pasa por
casualidad. puede cambiar filas en slo una comando, pero esto Si usted selecciona las filas
para ser actualizadas con alguno puede cambiar cualquier nmero de filas en aquel columna
adems de la clave primaria, usted puede tabular. actualice varias filas, no slo un. Si usted omite
EL DONDE clusula completamente, usted
actualizar
los millones de comando quizs enteros de filas actualizaron con slo una select -
cuando usted pens cambiar slo un.
Un comando de ACTUALIZACIN debe cumplir cualquier coaccin definida para
la comando, como el INSERCIN original tendra. Por ejemplo, no ser posible
actualizar una columna que ha sido marcada como obligatoria a un valor NULO o
actualizar una columna de clave primaria de modo que ya no no sea nico.

BORRAR
Las filas antes insertadas pueden ser borradas de una comando con el BORRAR
comando.
El comando borrar una fila o un SET de filas de la comando, segn un DONDE clusula.
Si no hay DONDE clusula, cada fila en la comando ser borrada (que puede ser un poco
desconcertante si usted excluyera el DONDE clusula por equivocacin).

No hay ninguna "advertencia" apremio para cualquier comando de SQL. Si usted
instruye la base de datos de borrar un milln de filas, har as. Inmediatamente.
No hay nada de eso "Est seguro usted?" negocio que algunos entornos ofrecen.
408
Captulo 10:
Manipulacin de Datos



Una eliminacin es todo o nada. No es posible denominar columnas. Cuando las filas
son insertadas, usted puede elegir que columnas poblar. Cuando las filas son actualizadas,
usted puede elegir que columnas actualizar. Pero una eliminacin se aplica a la fila
entera - la nica opcin es que filas en cual comando. Esto hace el BORRAR comando
sintcticamente ms simple que los otros comandos de DML.


FUSIN



Las versiones ms tempranas de SQL no tenan un comando de FUSIN. LA FUSIN Fue introducida con
el estndar SQL1999, puesto en prctica por el Oracle en la liberacin 9i de base de datos. La liberacin
10g (conformndose con el estndar SQL2003) proporciona algunos realces. Algunas realizaciones SQL
patentadas tenan un comando llamado UPSERT. Esta palabra de sondeo bastante desacapable describe el
comando de FUSIN mejor dicho bien: esto ejecuta una ACTUALIZACIN o un INSERCIN, segn un
poco de condicin. Pero el trmino UPSERT es definitivamente obsoleto ahora, porque la versin actual de
FUSIN, segn circunstancias, puede hacer un BORRAR tambin.
Hay muchas ocasiones donde usted quiere tomar un SET de datos (la fuente) e integrarlo en una
comando existente (el objetivo). Si una fila en la fuente de datos ya existe en la comando objetivo, usted
puede querer actualizar la fila objetivo, o usted puede querer reemplazarlo completamente, o usted puede
querer dejar la fila objetivo sin alterar. Si una fila en la fuente no existe en el objetivo, usted querr
insertarlo. El comando de FUSIN le deja hacer esto. Una FUSIN pasa por la fuente de datos, para cada
fila que intenta localizar una fila correspondiente en el objetivo. Si ningn partido es encontrado, una fila
puede ser insertada; si un partido es encontrado, la fila correspondiente puede ser actualizada. El realce de
liberacin 10g significa que la fila objetivo puede ser hasta borrada, siendo emparejado y actualizada. El
resultado final es una comando objetivo en la cual los datos en la fuente han sido fusionados.
Una operacin de FUSIN no hace nada que no pudiera ser hecho con INSERCIN,
ACTUALIZACIN, y BORRAR select - pero con un pase por la fuente de datos, esto puede hacer todos
los tres. El cdigo alternativo sin una FUSIN requerira tres pasa por los datos, un para cada comando.

LA FUSIN puede no ser importante para los exmenes OCP, pero puede ser de la vital
importancia para codificar aplicaciones que funcionan bien y usan la base de datos eficazmente.

La fuente de datos para una select de FUSIN puede ser una comando o cualquier subpregunta. La
condicin usada para encontrar filas correspondientes en el objetivo es similar a un DONDE clusula. Las
clusulas que actualizan o insertan filas son tan complejas como una ACTUALIZACIN o
Describa Cada Lenguaje de Manipulacin de Datos (DML) Select
409



un comando de INSERCIN. Resulta que la FUSIN es la ms complicada de los
comandos de DML, que es bastante razonable, ya que es (posiblemente) el ms potente.


TRUNCADO
El comando TRUNCADO no es un comando de DML; es el comando de DDL. La
diferencia es enorme. Cuando los comandos de DML afectan datos, ellos insertan,
actualizan, y borran filas como la parte de transacciones. Las transacciones son definidas
ms tarde en este captulo en el artculo 10.05, "Transacciones de Control." Por el
momento, djele ser dicho que una transaccin puede
sea controlado, en el sentido que el usuario tiene la
opcin de si hacer el trabajo hecho en una
transaccin permanente, o si invertirlo. Esto es
muy til, pero obliga la base de datos a hacer
Transacciones, consistiendo trabajo adicional entre bastidores que el usuario de
INSERCIN, ACTUALIZACIN, y BORRAR (o no es consciente de. Los comandos de DDL no son el
usuario hasta FUSIONAN) los comandos pueden ser hechos transacciones (aunque dentro de la
base de datos, ellos permanente (con DESTINAR) o invertido son de hecho puestos en prctica
como transacciones - pero (con un ROLLBACK).A TRUNCADO los developeres no pueden
controlarlos), y all mande, como cualquier otro comando de DDL, no es ninguna opcin de si
hacerlos es inmediatamente permanente: nunca puede ser permanente o invertirlos. Una vez
ejecutado, invertido. ellos son hechos. Sin embargo, en comparacin con
DML, ellos son muy rpidos.
Desde el punto de vista del usuario, un truncamiento de una comando es equivalente a la
ejecucin un BORRAR de cada fila: BORRAR mandan sin un DONDE clusula. Pero
mientras que una eliminacin puede llevar tiempo (posiblemente horas, si hay muchas
filas en la comando) un truncamiento pasar al instante. Esto no hace ninguna diferencia
si la comando contiene una fila o mil millones; un TRUNCADO ser prcticamente
instantneo. La comando todava existir, pero ser vaco.

DDL manda, tal como TRUNCADO, fallar si hay cualquier comando de DML
activo en la comando. Una transaccin bloquear el comando de DDL hasta
que el comando de DML sea terminado con DESTINAR o un ROLLBACK.

Frainstancias de Select de DML
Los comandos pueden fallar por muchos motivos, incluso lo siguiente:

Errores de sintaxis Referencias a objetos inexistentes o columnas
410
Captulo 10:
Manipulacin de Datos



permisos de Acceso violaciones de Coaccin cuestiones Espaciales

Como un comando de SQL puede afectar un SET de filas, hay complicacin esto a
el comando puede tener xito parcialmente: el frainstancia podra ocurrir slo algn
camino en el SET. Las tres primeras clases precedentes del error tambin se aplican a
select SENTENCIAS.
Un objetivo de leer este libro es prevenir errores de sintaxis. Cuando ellos ocurren (y
ellos van), ellos deberan ser descubiertos por el instrumento que construye el SQL para
ser enviado a la base de datos: SQL*Plus o el Developer SQL si el SQL est siendo
entrado interactivamente, o independientemente de otro instrumento son usados para
generar un interface ms sofisticado. Hay cualquier nmero de errores de sintaxis
posibles, que comienzan con errores de ortografa simples o errores de transposicin.

La gente que teclea con slo un dedo no hace errores de transposicin.

Los errores de esta naturaleza no afectarn la base de datos, porque la base de datos
nunca los ver. SQL errneo es parado en la fuente. El nivel de la ayuda el instrumento
asegura la fijacin de tales errores depender del esfuerzo que los developeres del
instrumento toman.
Una select SQL puede ser sintcticamente correcta, pero referirse a objetos que no
existen. Los problemas tpicos deletrean errores, pero hay cuestiones ms complejas: una
select podra referirse a una columna que existi en algn momento, pero ha sido dejada
caer de la comando o renombrada. Una select de esta naturaleza ser enviada a la base de
datos y fallar entonces, antes de la ejecucin de tentativas de base de datos. Esto es peor
para la base de datos que un error de sintaxis simple, pero la afirmacin todava es parado
antes de que esto consuma cualquier recurso de base de datos significativo.
Un error relacionado tiene que ver con el reparto de tipo. SQL es una lenguaje
fuertemente tecleada: las columnas son definidas como un cierto tipo de datos, y una
tentativa de escribir un valor de un tipo de datos diferente fallar. Sin embargo, usted puede
llevarse esto porque la realizacin del Oracle de SQL, en algunas circunstancias, har el
reparto de tipo automtico.
La figura 10-1 muestra varias ejecuciones intentadas de una select con SQL*Plus. En la
Figura 10-1, un usuario conecta como DEMANDAN (contrasea, DEMANDE - no un
ejemplo de bueno
seguridad) y preguntas la comando de EMPLOYEES. La select falla debido a un error de
sintaxis simple, correctamente identificado por SQL*Plus. Note que SQL*Plus nunca
intenta corregir tales errores, aun cuando sabe exactamente lo que usted pens teclear.
Algunos herramientas de tercero pueden ser ms provechosos, ofreciendo la correccin
de errores automtica.
Describa Cada Lenguaje de Manipulacin de Datos (DML) Select
411



FIGURA 10-1

Algunos ejemplos de
frainstancia de select















La segunda tentativa de ejecutar la select falla con un error declarando que el objeto
no existe. Esto es porque esto no existe en el esquema del usuario corriente; esto existe en
el esquema de HORA. Habiendo corregido esto, la tercera carrera de la select tiene xito
- pero por poco. El valor pas en el DONDE la clusula es una cuerda, '21-APR-00', pero
la columna HIRE_DATE no es definido en la comando como una cuerda, es definido como
una fecha. Para ejecutar la select, la base de datos tuvo que calcular lo que el usuario
realmente quiso decir y d la cuerda el papel de una fecha. En el ltimo ejemplo, el
reparto de tipo falla. Esto es porque la cuerda pas es formateado como una fecha de estilo
europeo, pero la base de datos ha sido alistada como el americano: la tentativa de
emparejar "21" a un mes falla. La select habra tenido xito si la cuerda hubiera sido
'04/21/2007'.
Los developeres nunca deberan confiar en el reparto de tipo automtico. Es la
programacin muy perezosa. Ellos siempre deberan hacer cualquier reparto de tipo
explcito es necesario, usando funciones apropiadas como hablado en captulos anteriores.
Si el reparto de tipo automtico realmente trabaja, a lo ms hay una peticin de
rendimiento ya que la base de datos tiene que hacer el trabajo suplementario. Esto puede
ser sustancial si el reparto de tipo impide al Oracle usar ndices. En este ejemplo, si hay un
ndice en la columna HIRE_DATE, ser un ndice de fechas; no hay ningn modo que la
base de datos pueda usarlo cuando usted pasa una cuerda. En el peor de los instancias, el
resultado ser incorrecto. Si la cuerda de fecha pasara en eran '04/05/2007', esto tendra
xito - pero sera el cuarto de mayo o el quinto de abril?
412
Captulo 10:
Manipulacin de Datos



El oracle intentar corregir faltas de armona de tipo de datos en select SQL
(DML y ESCOGIDO) por el reparto de tipo automtico, pero los resultados son
imprevisibles y ningn programador debera confiar alguna vez en ello.

Si una select es sintcticamente correcta y no tiene ningunos errores con los objetos a
los cuales se refiere, todava puede fallar debido a permisos de acceso. Si el usuario que
intenta ejecutar la select no tiene los permisos relevantes en las tablas a las cuales se
refiere, la base de datos devolver un error idntico a esto que sera devuelto si el objeto
no existiera. Por lo que el usuario est preocupado, esto no existe.
Los errores causados por permisos de acceso son un instancia donde las select
SENTENCIAS y DML pueden devolver resultados diferentes: es posible para un usuario
tener el permiso de ver las filas en una comando, pero no insertar, actualizar, o borrarlos.
Tal arreglo es bastante comn; esto a menudo hace la cabeza para los negocios. Quizs de
una manera ms confusa, los permisos pueden ser alistados en tal manera que es posible
insertar filas que no le permiten ver. Y, quizs el peor de todos, es posible borrar filas que
usted puede ver ni, ni actualizar. Sin embargo, tales medidas no son comunes.
Una coaccin es una regla comercial, puesta en prctica dentro de la base de datos. Las
coacciones tpicas consisten en que una comando debe tener una clave primaria: un valor
de una columna (o la combinacin de columnas) que puede identificar nicamente cada
fila. Un comando de INSERCIN puede insertar varias filas en una comando, y para cada
fila la base de datos comprobar si una fila ya existe con la misma clave primaria. Esto
ocurre ya que cada fila es insertada. Podra ser que las pocas primeras filas (o el poco
primer milln de filas) entran sin un problema, y luego la select golpea una fila con un
valor duplicado. A este punto esto devolver un error, y la select fallar. Este frainstancia
provocar una inversin de todas las introducciones que haban tenido xito ya. Esto es la
parte del estndar SQL: una select debe tener xito en total, o en absoluto. La inversin
del trabajo es un rollback. Los mecanismos de un rollback son descritos en la seccin de
este captulo titulado "Controlando Transacciones."
Si una select falla debido a problemas espaciales, el efecto es similar. Una parte de la
select puede haber tenido xito antes de que la base de datos se quedara sin el espacio. La
parte que realmente tuvo xito ser automticamente hecha rodar atrs. Rollback de una
select es un asunto serio. Esto obliga la base de datos a hacer mucho trabajo
suplementario y tomar por lo general al menos mientras la select ha tomado ya (a veces
mucho ms largo).





OBJETIVO DE CERTIFICACIN 10.02


Filas de insercin en una Comando
Filas de insercin en una Comando
413
La forma ms simple de la select de INSERCIN inserta una fila en una comando,
usando
los valores proveyeron en la lnea como la parte del comando. La sintaxis es como
sigue:
INSERCIN EN comando [(columna [column.])] VALORES (valor [value.]); Por
ejemplo:
insercin en hr.regions
insercin en hr.regions ('Australasia', 11); el insercin en hr.regions
inserta en hr.regions
valores (10, 'Gran Bretaa');
(region_name, region_id) valores

(region_id) valores (12); valores (13, nulo);
El primer de los comandos precedentes proporciona valores a ambos las columnas del
Comando de REGIONS. Si la comando tuviera una tercera columna, la select fallara
porque esto confa en la nota posicional. La select no dice qu valor debera ser insertado
en cual columna; esto confa en la posicin de los valores: su pedido en el comando.
Cuando la base de datos recibe una select usando la nota posicional, emparejar el
pedido de los valores al pedido en el cual las columnas de la comando son definidas. La
select tambin fallara si el pedido de columna fuera incorrecto: la base de datos intentara
la introduccin, pero fallara debido a faltas de armona de tipo de datos.
El segundo comando denomina las columnas para ser pobladas y los valores con los
cuales poblarlos. Note que el pedido en el cual las columnas son mencionadas ahora se
hace irrelevante mientras el pedido de las columnas es el mismo como el pedido de los
valores.
El tercer ejemplo pone en una lista una columna, y por lo tanto slo un valor. Todas
otras columnas sern dejadas nulas. Esta select fallara si la columna REGION_NAME
no fuera nullable. El cuarto ejemplo producir el mismo resultado, pero porque no hay
ninguna lista de columna, un valor de alguna clase debe ser proporcionado a cada
columna al menos, un NULO.

A menudo se considera la prctica buena para no confiar en la nota posicional y
en cambio siempre poner las columnas en una lista. Esto es ms trabajo, pero
hace el cdigo auto - documentando (siempre una idea buena!) y tambin hace el
cdigo ms resistente contra cambios de estructura de comando. Por ejemplo, si
una columna es aadida a una comando, todas las select de INSERCIN que
confan en la nota posicional fallarn hasta que ellos sean vueltos a escribir
para incluir un NULO para la nueva columna. INSERTE el cdigo que llama las
columnas seguir ejecutndose.
414
Captulo 10:
Manipulacin de Datos



Muy a menudo, una select de INSERCIN incluir funciones para hacer el lanzamiento
de tipo u otro trabajo de edicin. Considere esta select:

insercin en EMPLOYEES (employee_id, last_name, hire_date) valores
(1000, 'WATSON', '03-Nov-07');
en contraste con esto:
insercin en EMPLOYEES (employee_id, last_name, hire_date)
valores (1000, superior ('Watson'), to_date ('03-Nov-07',
'dd-mon-yy'));
Las filas insertadas con cada select seran idnticas. Pero el primer insertar
exactamente los literales proveyeron. Puede estar bien que la aplicacin confa en
apellidos de empleado que estn en la mayscula - sin esto, quizs clasifique pedidos ser
incorrecto y las bsquedas en el apellido darn resultados imprevisibles. Tambin, la
introduccin del valor de fecha confa en el reparto de tipo automtico de una cuerda a una
fecha, que siempre es mala para el rendimiento y puede causar valores incorrectos
entrados. La segunda select fuerza el apellido en la mayscula si fue entrado as o no, y
especifica exactamente la mscara de formato de la cuerda de fecha antes de convertirlo
explcitamente en una fecha. No hay ninguna pregunta que la segunda select es una
mejor pieza del cdigo que el primer.
Lo siguiente es otro ejemplo de usar funciones:

insercin en EMPLOYEES (employee_id, last_name, hire_date) valores
(1000 + 1, usuario, sysdate - 7);
En la select precedente, la columna EMPLOYEE_ID es poblada con el
el resultado de alguna aritmtica, la columna LAST_NAME es poblada con el resultado
del USUARIO de funcin (que devuelve el nombre de entrada en el sistema de base de
datos del usuario), y la columna HIRE_DATE es poblada con el resultado de una funcin
y aritmtica: la fecha siete das antes de la fecha de sistema actual.
La figura 10-2 muestra la ejecucin de las tres introducciones anteriores, seguidas de
una pregunta pruebas los resultados.
La utilizacin de funciones para pretratar valores antes de insertar filas puede ser
particularmente importante ejecutando escrituras con variables de substitucin, ya que
ellos permitirn que el cdigo corrija muchas de las variaciones no deseadas en la
introduccin de datos que puede ocurrir cuando los usuarios escriben valores
interactivamente.
Para insertar muchas filas con un comando de INSERCIN, los valores para las filas
deben venir de una pregunta. La sintaxis es como sigue:
INSERCIN EN comando [(columna [column.])] subpregunta; Note que esta sintaxis
no usa la palabra clave de VALORES. Si la lista de columna
es omitido, entonces la subpregunta debe proporcionar valores a cada columna en la
comando.
Filas de insercin en una Comando
415



FIGURA 10-2

La utilizacin de funciones con
el comando de INSERCIN












Para copiar cada fila de una comando al otro, si las tablas tienen la misma estructura de
columna, un comando, como esto es todo que es necesario:

el insercin en regions_copy selecciona * de REGIONS;
Esto presupone que la comando REGIONS_COPY realmente existe (con o sin
cualquier fila). La subpregunta SENTENCIA lee cada fila de la comando de la fuente, que
es REGIONS, y el INSERCIN los inserta en la comando objetivo, que es
REGIONS_COPY.
No hay ningunas restricciones de la naturaleza de la subpregunta. Cualquier vuelta de
pregunta (finalmente) una matriz de dos dimensiones de filas; si la comando objetivo
(que tambin es unos dos - matriz dimensional) tiene columnas para recibirlos, la
introduccin trabajar. Un requisito comn debe presentar datos a usuarios finales en una
forma que lo har fcil para ellos a extraer la informacin e imposible para ellos de
interpretarlo mal. Esto significar por lo general tablas relacionales denormalizing,
haciendo agregaciones, renombrando columnas, y ajustando datos que pueden deformar
resultados si no correctamente tratado.
Considere un instancia simple dentro del esquema de HORA: una necesidad de
informar sobre la cuenta de sueldo para cada departamento. La pregunta tendr que
realizar una juntura externa llena para asegurar que cualquier empleado sin un
departamento no es echado de menos, y que todos los DEPARTMENTS son puestos en
una lista si ellos tienen EMPLOYEES. Esto tambin debera asegurar que cualquier valor
nulo no deformar ninguna aritmtica substituyendo ceros o cuerdas para nulls. Esta
pregunta es absolutamente franca para cualquier programador SQL, pero cuando los
usuarios finales intentan ejecutar esta clase de la pregunta ellos demasiado probablemente
producirn resultados inexactos omitiendo
416
Captulo 10:
Manipulacin de Datos



los controles. Un trabajo de mantenimiento diario en un depsito de datos que
ensamblara los datos en una forma conveniente podra ser una escritura, como esto:

comando truncada department_salaries; insercin en department_salaries
(departamento, personal, sueldos) escogido
fndase (department_name, 'No adjudicado'), cuenta (employee_id), suma
(fndase (sueldo, 0))
de EMPLOYEES e DEPARTMENTS de juntura externos llenos d en
e.department_id = d.department_id grupo por department_name piden por
department_name;
El comando TRUNCADO vaciar
la comando, que es poblada de nuevo entonces de
la subpregunta. Los usuarios finales pueden ser
dejados sueltos en esta comando, y debera ser
imposible para ellos a
Cualquier select SENTENCIA, interprete mal los contenido-a simples natural
especificado como una subpregunta, puede ser usado como la juntura sin SE FUNDE funciones,
que la fuente de filas pas a un INSERCIN. podra ser todo un usuario final hara, podra ser Esto
habilita la introduccin de muchas filas. muy engaoso. Haciendo todo el trabajo complejo O
bien, usando la clusula de VALORES va en la select de INSERCIN, los usuarios pueden
ejecutar entonces el insercin una fila. Los valores pueden ser literales preguntas mucho ms
simples contra el denormalized o apremio para como variables de substitucin. y datos agregados
en el cuadro resumen.
Sus preguntas sern rpidas, tambin: todo el
trabajo duro ha sido hecho ya.
Para concluir la descripcin del comando de INSERCIN, hay que mencionar que es
posible insertar filas en varias tablas con una select. Esto no es la parte del SQL OCP
examen, pero para el completo aqu est un ejemplo:

inserte todos cuando 1=1 entonces
en emp_no_name (department_id,job_id,salary,commission_pct,hire_date)
valores (department_id,job_id,salary,commission_pct,hire_date)
cuando department_id <> 80 entonces
en emp_non_sales (employee_id,department_id,salary,hire_date) valores
(employee_id,department_id,salary,hire_date)
cuando department_id = 80 entonces
en emp_sales (employee_id,salary,commission_pct,hire_date) valores
(employee_id,salary,commission_pct,hire_date)
seleccione employee_id,department_id,job_id,salary,commission_pct,hire_date de
EMPLOYEES donde hire_date> sysdate - 30;
Filas de insercin en una Comando
417



Para leer esta select, comience en el fondo. La subpregunta recupera a todos los
EMPLOYEES reclutados en los 30 das anteriores. Entonces vaya a la cumbre. TODA la
palabra clave significa que cada fila seleccionada ser considerada para la introduccin en
todas las tablas despus, no slo en la primera comando para la cual la condicin se
aplica. La primera condicin es 1=1, que siempre es verdad, entonces cada fila de la fuente
crear una fila del NOMBRE de EMP_NO_. Esto es una copia de la comando de
EMPLOYEES con los identificadores personales borrados, un requisito comn en un
depsito de datos. La segunda condicin es DEPARTMENT_ID <> 80, que generar una
fila en EMP_NON_SALES para cada empleado que no est en el departamento de ventas;
no hay ninguna necesidad de esta comando para tener la columna COMMISSION_PCT.
La tercera condicin genera una fila en EMP_SALES para todos los dependientes; no hay
ninguna necesidad de la columna DEPARTMENT_ID, porque ellos estarn todos en la
oficina 80.
Esto es un ejemplo simple de un insercin de multicomando, pero debera ser aparente
que con una select, y por lo tanto slo un pase por la fuente de datos, es posible poblar
muchas tablas objetivo. Esto puede tomar una cantidad enorme de la tensin de la base de
datos.


EJERZA 10-1 Uso el Comando de INSERCIN
En este ejercicio, use varias tcnicas para insertar filas en una comando.

1. Conecte al esquema de HORA, con el Developer SQL o con SQL*Plus. 2.
Pregunte la comando de REGIONS, para comprobar que valores estn ya en el uso
para el
Columna de REGION_ID:

seleccione * de REGIONS;
Este ejercicio supone que los valores encima 100 no estn en el uso. Si ellos son,
se adaptan
los valores sugeridos abajo para evitar conflictos de clave primaria.
3. Inserte una fila en la comando de REGIONS, proporcionando los valores en la
lnea:
insercin en valores de REGIONS (101, 'Gran Bretaa');
4. Inserte una fila en la comando de REGIONS, proporcionando los valores como
la substitucin
variables:

insercin en valores de REGIONS (&Region_number, '&Region_name');
418
Captulo 10:
Manipulacin de Datos



Cuando apremio, d los valores 102 para el nmero, Australasia para el nombre. Note el uso de citas
alrededor de la cuerda.
5. Inserte una fila en la comando de REGIONS, calculando el REGION_ID para ser
un ms alto que el valor alto corriente. Esto necesitar una subpregunta escalar:
el insercin en valores de REGIONS ((seleccionan el mximo (region_id) +1 de REGIONS),
'Oceana');
6. Confirme la introduccin de las filas:
seleccione * de REGIONS;
7. Destine las introducciones:
destine;
La ilustracin siguiente muestra los resultados del ejercicio, usando SQL*Plus:





OBJETIVO DE CERTIFICACIN 10.03


Filas de actualizacin en una Comando
Filas de actualizacin en una Comando
419
El comando de ACTUALIZACIN cambia valores de columna en una o varias filas
existentes en a
comando sola. La sintaxis bsica es lo siguiente:
SET de comando de ACTUALIZACIN column=value [column=value.] [DONDE
condicin]; La forma ms compleja del comando usa subconsultas por su parte o ms del
valores de columna y para el DONDE condicin. La figura 10-3 muestra actualizaciones
de la complejidad variada, ejecutada de SQL*Plus.
El primer ejemplo es el ms simple. Una columna de una fila es puesta a un valor
literal. Como la fila es elegida con un DONDE la clusula que usa el predicado de
igualdad en la clave primaria de la comando, hay una garanta absoluta que como mximo
slo una fila ser afectada. Ninguna fila ser cambiada si el DONDE la clusula deja de
encontrar cualquier fila en absoluto.
El segundo ejemplo muestra el uso de la aritmtica y una columna existente para poner
el nuevo valor, y la seleccin de fila no es hecha en la columna de clave primaria. Si la
seleccin no es hecha en la clave primaria, o si un predicado de no igualdad (tal como
ENTRE) es



FIGURA 10-3

Ejemplos de usar la select de
ACTUALIZACIN
420
Captulo 10:
Manipulacin de Datos



usado, entonces el nmero de filas actualizadas puede ser ms de un. Si el DONDE la
clusula es omitida completamente, la actualizacin ser aplicada a cada fila en la
comando.
El tercer ejemplo en la Figura 10-3 introduce el uso de una subpregunta para definir el
SET de filas para ser actualizadas. Una complicacin adicional menor es el uso de una
variable de reemplazo para apremio al usuario para un valor para usar en el DONDE la
clusula de la subpregunta. En este ejemplo, la subpregunta (lneas 3 y 4) seleccionar a
cada empleado que est en un departamento cuyo nombre incluye la cuerda 'ESTO' e
incremente su sueldo corriente en el 10 por ciento (con poca probabilidad para pasar en
la prctica).
Tambin es posible usar subconsultas para determinar el valor al cual una columna ser
puesta, como en el cuarto ejemplo. En este instancia, un empleado (identificado por la
clave primaria, en la lnea 5) es transferido a la oficina 80 (el departamento de ventas), y
luego la subpregunta en lneas 3 y 4 puso su precio de comisin a lo que el precio de
comisin ms bajo en el departamento resulta ser.
La sintaxis de una actualizacin que usa subconsultas es como sigue:
Columna de SET de comando de ACTUALIZACIN = [subpregunta]
[column=subquery.] DONDE columna = (subpregunta) [Y column=subquery.]; hay
una restriccin rgida de las subconsultas usando columnas de actualizacin en el SET
clusula: la subpregunta debe devolver un valor escalar. Un valor escalar es un valor solo de
cualquier tipo de datos es necesario: la pregunta debe devolver una fila, con una columna.
Si la pregunta devuelve varios valores, la ACTUALIZACIN fallar. Considere estos dos
ejemplos:

actualice el sueldo de SET de EMPLOYEES = (sueldo escogido de EMPLOYEES
donde employee_id=206); actualice el sueldo de SET de EMPLOYEES = (sueldo
escogido de EMPLOYEES donde last_name =' Abel');
El primer ejemplo, usando un predicado de igualdad en la clave primaria, siempre va
tener xito. Aun si la subpregunta no recupera una fila (como sera el instancia si no
hubiera ningn empleado con el EMPLOYEE_ID igual a 206), la pregunta todava
devolver un valor escalar: un nulo. En este instancia, todas las filas en EMPLOYEES
haran poner su SUELDO AL NULO - que no podra ser deseado, pero no es un error por
lo que SQL est referido. El segundo ejemplo usa un predicado de igualdad en el
LAST_NAME, que no es garantizado para ser nico. La select tendr xito si hay slo un
empleado con aquel nombre, pero si hubiera ms de un esto fallara con el error
"ORA-01427: la subpregunta de fila sola devuelve ms de una fila." Para el cdigo que
trabajar de fuentes fidedignas, pase lo que pase el estado de los datos, es esencial
asegurar que las subconsultas usadas para poner valores de columna son el escalar.
Filas de actualizacin en una
Comando
421



Un apuro comn para asegurarse que las preguntas son el escalar debe usar a
MAX o minuto. Esta versin de la select siempre tendr xito:

actualice el sueldo de SET de EMPLOYEES = (mximo escogido (sueldo) de EMPLOYEES
donde last_name =' Abel');
Sin embargo, slo porque esto trabajar, no necesariamente significa que esto
hace que
es querido.

Las subconsultas en el DONDE la clusula tambin debe ser el escalar, si esto usa el
predicado de igualdad (como en los ejemplos precedentes) o el mayor/menos que
predicados. Si esto usa el EN el predicado, entonces la pregunta puede devolver filas
mltiples, como en este ejemplo que usa EN:

actualice salary=10000 de SET de EMPLOYEES donde department_id en
(seleccionan department_id de DEPARTMENTS donde department_name como
'%IT %');
Esto aplicar la actualizacin a todos los EMPLOYEES en un departamento cuyo
nombre incluye
la cuerda 'ESTO'. Hay varios de stos. Pero aunque la pregunta pueda devolver varias
filas, todava debe devolver slo una columna.




Las subconsultas solan PONERSE los valores de columna deben ser
subconsultas escalares. Las subconsultas solan seleccionar las filas


EJERZA 10-2 Uso el Comando de ACTUALIZACIN




tambin debe ser el escalar, a menos que ellos usen el EN el predicado.
En este ejercicio, use varias tcnicas para actualizar filas en una comando. Se supone que
la comando HR.REGIONS es como vista en la ilustracin al final de Ejercicio 10-1. Si
no, ajuste los valores si es necesario.

1. Conecte al esquema de HORA usando al Developer de SQL o SQL*Plus. 2.
Actualice una fila sola, identificada por la clave primaria:
las REGIONS de actualizacin ponen region_name ='Scandinavia' donde
region_id=101;
422
Captulo 10:
Manipulacin de Datos



Esta select debera devolver el mensaje "1 fila actualizada." 3. Actualice un SET de filas, usando un
predicado de no igualdad:
las REGIONS de actualizacin ponen region_name ='Iberia' donde region_id> 100;
Esta select debera devolver el mensaje "3 filas actualizadas."
4. Actualice un SET de filas, usando subconsultas para seleccionar las filas y proporcionar valores:
REGIONS de actualizacin
el SET region_id = (region_id + (seleccionan el mximo (region_id) de REGIONS)) donde
region_id en (seleccionan region_id de REGIONS donde region_id> 100);
Esta select debera devolver el mensaje "3 filas actualizadas."
5. Confirme el estado de las filas:
seleccione * de REGIONS;
6. Destine los cambios hechos:
destine;
La ilustracin siguiente muestra el ejercicio, como hecho de SQL*Plus.





OBJETIVO DE CERTIFICACIN 10.04


Borre Filas de una Comando
Borre Filas de una Comando
423
Para borrar filas de una comando, hay dos opciones: BORRAR mandan y el
Comando TRUNCADO. BORRAR es menos drstico, en que puede hacerse rodar una
eliminacin atrs mientras que un truncamiento no puede ser. BORRAR tambin es ms
controlable, en que es posible elegir qu filas borrar, mientras que un truncamiento
siempre afecta la comando entera. BORRAR es, sin embargo, mucho ms despacio y
puede colocar mucha tensin en la base de datos. TRUNCADO es prcticamente
instantneo y sin esfuerzo alguno.

Borrar Filas con BORRAR
BORRAR comandos borra filas de una comando sola. La sintaxis es como sigue:
BORRAR DE comando [DONDE condicin]; Esto es el ms simple de los comandos de
DML, en particular si la condicin es omitida.
En este instancia, cada fila en la comando ser borrada sin apremio. La nica
complicacin est en la condicin. Esto puede ser un partido simple de una columna a un
literal:
borrar
de
EMPLOYEES
donde
employee_id=206;
borrar
de
EMPLOYEES
donde
last_name como 'S %';
borrar
de
EMPLOYEES
donde
department_id=&Which_department;
borrar
de
EMPLOYEES
donde
el department_id es nulo;
La primera select identifica una fila por la clave primaria. Una fila slo ser borrada - o
ninguna fila en absoluto, si el valor dado no encuentra un partido. La segunda select usa un
predicado de no igualdad que podra causar la eliminacin de muchas filas: cada empleado
cuyo apellido comienza con una mayscula "S". La tercera select usa un predicado de
igualdad, pero no en la clave primaria. Esto apremio para un nmero de departamento con
una variable de substitucin, y todos los EMPLOYEES en aquel departamento irn. La
select final borra a todos los EMPLOYEES que no son adjudicados actualmente a un
departamento.
La condicin tambin puede ser una subpregunta:
borre de EMPLOYEES donde department_id en (seleccionan department_id de
DEPARTMENTS donde location_id en
(seleccione location_id de LOCATIONS donde country_id en
(seleccione country_id de COUNTRIES donde region_id en
(seleccione region_id de REGIONS donde region_name ='Europe')
)
)
)
424
Captulo 10:
Manipulacin de Datos



Este ejemplo usa una subpregunta para la seleccin de fila que navega la HORA rbol
geogrfico (con ms subconsultas) para borrar a cada empleado que trabaja para cualquier
departamento que est basado en Europa. La misma regla para el nmero de valores
devueltos por la subpregunta se aplica en cuanto a un comando de ACTUALIZACIN: si
la seleccin de fila est basada en un predicado de igualdad (como en el ejemplo
precedente) la subpregunta debe ser el escalar, pero si esto usa EN la subpregunta puede
devolver varias filas.
Si BORRAR el comando no encuentra ningunas filas borrando, esto no es un error. El
comando devolver el mensaje "0 filas borradas", ms bien que un mensaje de error porque
la select complet con xito - esto slo no encontr nada haciendo.


EJERZA 10-3 Uso el BORRAR Comando
En este ejercicio, use varias tcnicas para borrar filas en una comando. Es asumido esto
la comando HR.REGIONS es como vista en la ilustracin al final de Ejercicio 10-2. Si
no, ajuste los valores si es necesario.

1. Conecte al esquema de HORA usando al Developer de SQL o SQL*Plus. 2.
Borre una fila, usando el predicado de igualdad en la clave primaria:
borre de REGIONS donde region_id=204;
Esto debera devolver el mensaje "1 fila borrada."
3. Tentativa de borrar cada fila en la comando omitiendo un DONDE clusula:
borre de REGIONS;
Esto fallar, debido a una violacin de coaccin.
4. Borre filas con la seleccin de fila basada en una subpregunta:
borre de REGIONS donde
el region_id en (seleccionan region_id de REGIONS donde region_
llaman ='Iberia');
Esto devolver el mensaje "2 filas borradas."
5. Confirme que la comando de REGIONS ahora contiene slo las cuatro filas
originales:
seleccione * de REGIONS;
6. Destine la eliminacin:
destine;
Borre Filas de una Comando



La ilustracin siguiente muestra el ejercicio, como hecho de SQL*Plus:
425






















Borrar Filas con TRUNCADO
TRUNCADO es un DDL (Lenguaje de Definicin de Datos) comando. Esto funciona
dentro de
el diccionario de datos y afecta la estructura de la comando, no los contenido de la
comando. Sin embargo, el cambio que esto hace a la estructura tiene el efecto secundario
de destruir todas las filas en la comando.
Una parte de la definicin de una comando
como almacenado en el diccionario de datos es la
posicin fsica de la comando. Cuando primero
creado, una comando es asignada

TRUNCADO completamente los ficheros de datos de la base de datos. Esto es
conocido ya que un grado vaca la comando. No hay ningn concepto de y ser vaco.
Entonces, ya que las filas son insertadas, seleccin de fila, ya que hay con un BORRAR. el grado
se llena. Una vez que est lleno, ms grados
ser asignado a la comando automticamente.
un rea sola de espacio, de talla fija, en el




Una comando por lo tanto consiste en uno o varios grados, que sostienen las filas. As
como rastreando la asignacin de grado, el diccionario de datos tambin rastrea cuanto
del espacio asignado a la comando ha sido usado. Esto es hecho con la seal de pleamar.
La seal de pleamar es la ltima posicin en el ltimo grado que ha sido usado; todo el
espacio abajo
426
Captulo 10:
Manipulacin de Datos



la seal de pleamar ha sido usada para filas en algn momento, y ninguno del espacio
encima de la seal de pleamar an ha sido usado.
Note que es posible para all ser mucho espacio debajo de la seal de pleamar que no
est siendo usada en este momento; esto es debido a filas que han sido borradas con un
BORRAR comando. Insertar filas en una comando hace subir la seal de pleamar.
Borrarlos deja la seal de pleamar donde es; el espacio que ellos ocuparon permanece
adjudicado a la comando, pero es liberado para insertar ms filas.
El truncamiento de una comando reinicializa la seal de pleamar. Dentro del
diccionario de datos, la posicin registrada de la seal de pleamar es movida al principio
del primer grado de la comando. Como el Oracle supone que no puedan haber ningunas
filas encima de la seal de pleamar, esto tiene el efecto de borrar cada fila de la comando.
La comando es vaciada y permanece vaca hasta que las introducciones subsecuentes
comiencen a empujar el apoyo de seal de pleamar otra vez. En esta manera, un comando
de DDL, que realmente hace poco ms que una actualizacin en el diccionario de datos,
puede aniquilar mil millones de filas en una comando.

Un truncamiento es rpido: prcticamente instantneo, independientemente de
si la comando tiene muchos millones de filas o ninguno. Una eliminacin puede
tomar segundos, minutos, horas - y coloca mucho ms tensin en la base de
datos que un truncamiento. Pero un truncamiento es todo o nada.

La sintaxis para truncar una comando no poda ser ms simple:
Comando de COMANDO TRUNCADA; la Figura 10-4 muestra el acceso al comando
TRUNCADO por el SQL
rbol de navegacin de developer, pero por supuesto tambin puede ser ejecutado de
SQL*Plus.

FUSIN



El comando de FUSIN a menudo no es ignorado, porque no hace nada que no pueda ser hecho con
INSERCIN, ACTUALIZACIN, y BORRAR. Es, sin embargo, muy potente, en esto con un pase por
los datos esto puede realizar tres operaciones. Esto puede mejorar el rendimiento dramticamente. El uso
de la FUSIN no est en el programa de estudios OCP, pero para el completo aqu est un ejemplo simple:

fusin en EMPLOYEES e usando new_employees n
en (e.employee_id = n.employee_id)
cuando emparejado entonces
actualice pone e.salary=n.salary
cuando no emparejado entonces
insercin (employee_id, last_name, sueldo) valores (n.employee_id, n.last_name,
n.salary);
Transacciones de control
427



FIGURA 10-4

El comando TRUNCADO en
Developer SQL, de la lnea de
comandos y de los mens














La select precedente usa los contenido de una comando NEW_EMPLOYEES para
actualizar o insertar filas en EMPLOYEES. La situacin podra consistir en que los
EMPLOYEES son una comando de todo el personal, y NEW_EMPLOYEES es una
comando con filas para el nuevo personal y para cambios de sueldo por el personal
existente. El comando pasar por EMPLOYEES NEW_, y para cada fila, intentar
encontrar una fila en EMPLOYEES con mismo EMPLOYEE_ID. Si hay una fila
encontrada, su columna de SUELDO ser actualizada con el valor de la fila en
NEW_EMPLOYEES. Si no hay tal fila, uno ser insertado. Las variaciones en la sintaxis
permiten que el uso de una subpregunta seleccione las filas de la fuente, y es hasta posible
borrar filas correspondientes.



OBJETIVO DE CERTIFICACIN 10.05


Transacciones de control
Los conceptos detrs de una transaccin son una parte del paradigma de base de datos
relacional.
Una transaccin consiste en una o varias select DML, seguidas de un ROLLBACK o de
un comando DESTINAR. Es el uso posible el SAVEPOINT
428
Captulo 10:
Manipulacin de Datos



comando de dar un nivel de control dentro de la transaccin. Antes de entrar en la
sintaxis, es necesario examinar el concepto de una transaccin. Los temas relacionados
son el consecuencia ledo; esto es automticamente puesto en prctica por el servidor de
Oracle, pero hasta cierto punto los programadores pueden manejarlo a propsito ellos
usan la select SENTENCIA.

Transacciones de base de datos
Esto no es el lugar para entrar en el detalle de la base de datos relacional transaccional
el paradigma all es cualquier nmero de textos acadmicos en esto, y no hay el espacio
para cubrir este tema en un gua prctico. Lo siguiente es una revisin rpida de algunos
principios de una base de datos relacional con la cual todas las bases de datos (no slo el
Oracle) deben conformarse. Otros vendedores de base de datos cumplen con los mismos
estndares con sus propios mecanismos, pero con niveles variados de la eficacia. En
resumen, cualquier base de datos relacional debe ser capaz de pasar la Prueba de fuego:
esto debe garantizar atomicity, consecuencia, aislamiento, y durabilidad.

A es para Atomicity El principio de atomicity declara que todas las partes de una
transaccin deben completar o ninguno de ellos. (El razonamiento detrs del trmino
consiste en que un tomo no puede ser partido ahora famoso de ser una asuncin falsa).
Por ejemplo, si sus analistas comerciales han dicho que cada vez usted cambia el sueldo de
un empleado usted tambin debe cambiar el grado del empleado, entonces la transaccin
atmica consistir en dos actualizaciones. La base de datos debe garantizar que ambos
pasan o ninguno. Si slo una de las actualizaciones debiera tener xito, usted tendra un
empleado en un sueldo que era incompatible con su grado: una corrupcin de datos, en
trminos comerciales. Si algo (algo en absoluto!) se equivoca antes de que la transaccin
sea completa, la base de datos s mismo debe garantizar que cualquier parte que realmente
pasara es invertida; esto debe pasar automticamente. Pero aunque una transaccin
atmica parezca pequea (como un tomo), puede ser enorme. Para tomar otro ejemplo,
es lgicamente imposible para una suite de la contabilidad el libro mayor nominal ser la
mitad en agosto y la mitad en septiembre: el aplazamiento de final del mes es por lo tanto
(en trminos comerciales) una transaccin atmica, que puede afectar millones de filas en
miles de tablas y tomar horas para completar (o rodar atrs, si algo se equivoca). El
rollback de una transaccin incompleta puede ser manual (como cuando usted publica el
comando de ROLLBACK), pero debe ser automtico e imparable en instancia de un
error.




C es para Consecuencia
Transacciones de control
429
El principio de consecuencia declara que los resultados de una pregunta deben ser consecuentes con el estado de
la base de datos entonces la pregunta comenz. Imagine una pregunta simple que hace un promedio del valor
de una columna de una comando. Si la comando es grande, se necesitarn muchos minutos para pasar por la
comando. Si otros usuarios actualizan la columna mientras la pregunta est en el progreso, debera la pregunta
incluir el nuevo o los viejos valores? Debera esto incluir filas que fueron insertadas o borradas despus de
que la pregunta comenz? El principio de consecuencia requiere que la base de datos asegure que los valores
cambiados no son vistos por la pregunta; esto le dar un promedio de la columna como era cuando la pregunta
comenz, no importa cuanto la pregunta toma o lo que otra actividad ocurre en las tablas referidas. El oracle
garantiza que si una pregunta tiene xito, el resultado ser consecuente. Sin embargo, si el administrador de
base de datos no ha configurado la base de datos apropiadamente, la pregunta puede no tener xito: hay un
error de Oracle famoso, "la foto ORA-1555 demasiado vieja," esto es levantado. Esto sola ser un problema muy
difcil de fijar con liberaciones ms tempranas de la base de datos, pero con versiones recientes el
administrador de base de datos siempre debera ser capaz de prevenir esto.

Soy para el Aislamiento El principio de aislamiento declara que un incompleto (es decir no
comprometido) la transaccin debe ser invisible para el resto del mundo. Mientras la transaccin est en el
progreso, slo una sesin que ejecuta la transaccin es permitida ver los cambios; todas otras sesiones
deben ver los datos sin alterar, no los nuevos valores. La lgica detrs de esto es primera, que la
transaccin llena no podra pasar (recuerde el principio de atomicity y rollback automtico o manual?) y
esto por lo tanto a ningunos otros usuarios deberan permitirles ver cambios que podran ser invertidos. Y
en segundo lugar, durante el progreso de una transaccin los datos son (en trminos comerciales)
incoherentes: hay un poco tiempo cuando el empleado ha hecho cambiar su sueldo, pero no su grado. El
aislamiento de transaccin requiere que la base de datos debiera ocultar transacciones en el progreso de
otros usuarios: ellos vern la versin de preactualizacin de los datos hasta que la transaccin complete,
cuando ellos vern todos los cambios como un conjunto coherente. El oracle garantiza el aislamiento de
transaccin: no hay ningn modo que cualquier sesin (adems de aquella fabricacin de los cambios)
pueda ver datos no comprometidos. Un ledo de datos no comprometidos es conocido como un sucio ledo,
qu Oracle no permite (aunque algunas otras bases de datos hagan).

El D es para el Duradero El principio de durabilidad declara que una vez que una transaccin
completa, debe ser imposible para la base de datos perderlo. Durante el tiempo que la transaccin est en
el progreso, el principio de aislamiento no requiere que nadie (adems de la sesin
430
Captulo 10:
Manipulacin de Datos



referido) puede ver los cambios que esto ha hecho hasta ahora. Pero el instante que la
transaccin completa, debe ser transmitida al mundo, y la base de datos debe garantizar
que el cambio nunca es perdido; una base de datos relacional no es permitida perder
datos. El oracle realiza este requisito por escribir todos los vectores de cambio que son
aplicados a datos a registros de actividades ya que los cambios son hechos. Aplicando este
registro de cambios en copias de seguridad tomadas antes, es posible repetir cualquier
trabajo hecho en instancia de la base de datos daada. Por supuesto, los datos pueden ser
perdidos por el error de usuario, como DML inadecuado, o tablas que se caen o truncan.
Pero por lo que el Oracle y el DBA estn referidos, tales acontecimientos son
transacciones como cualquiera otro: segn el principio de durabilidad, ellos son
absolutamente no reversibles.

El Principio y el Final de una Transaccin Una sesin comienza una
transaccin el momento esto publica cualquier INSERCIN, ACTUALIZACIN, o
BORRAR select (pero no un TRUNCADO - que es un comando de DDL, no DML). La
transaccin sigue por cualquier nmero de adelante comandos de DML hasta que la
sesin publique DESTINAR o una select ROLLBACK. Slo entonces van los cambios
ser hechos permanentes y hacerse visibles a otras sesiones (si es destinado, ms bien que
rodara atrs). Es imposible anidar transacciones. El estndar SQL no permite que un
usuario comience una transaccin y luego comience al otro antes de terminar el primer.
Esto puede ser hecho con PL/SQL (El tercero patentado del oracle - lenguaje de
generacin), pero no con SQL estndar por la industria. Las select de control de
transaccin explcitas son DESTINAN, ROLLBACK, y SAVEPOINT. Tambin hay las
circunstancias adems de un publicado por el usuario DESTINAN o ROLLBACK que
terminar implcitamente una transaccin:

Publicacin de un DDL o select DCL Saliendo del instrumento de usuario
(SQL*Plus o Developer SQL o algo ms) Si la sesin de cliente muere Si el
sistema se estrella

Si un usuario resulta un DDL (CREE, CAMBIE, o GOTA) o DCL (SUBVENCIN o
REVOQUE) el comando, la transaccin que l tiene en el progreso (si alguno) ser
destinado: ser hecho permanente y hacerse visible a todos otros usuarios. Esto es porque
el DDL y los comandos de DCL son transacciones. Si fuera posible ver el cdigo fuente
para estos comandos, sera obvio. Ellos ajustan las estructuras de datos realizando
comandos de DML contra las tablas que arreglan el diccionario de datos,
Transacciones de control
431



y estos comandos son terminados con DESTINAR. Si ellos no fueran, los cambios
hechos no podan ser garantizados para ser permanentes. Como no es posible en SQL
anidar transacciones, si el usuario ya tiene una transaccin ejecutarse, las select que el
usuario ha ejecutado sern destinadas junto con las select que arreglan el comando de
DCL o el DDL.
Si un usuario comienza una transaccin publicando un comando de DML y luego sale
del instrumento l usa sin publicar explcitamente DESTINAR o un ROLLBACK, la
transaccin se terminar - pero si esto se termina con DESTINAR o un ROLLBACK es
completamente dependiente de como el instrumento es escrito. Muchos herramientas
tendrn el comportamiento diferente, segn como salen del instrumento. (Por ejemplo,
en el entorno de Microsoft Windows, es comn ser capaz de terminar un programa
seleccionando el Archivo | opciones de Salida de un men en la cumbre dejada de la
ventana, o haciendo clic "un X" en la esquina correcta superior. Los programadores que
escribieron el instrumento pueden haber codificado bien la lgica diferente en estas
funciones.) En el uno o el otro instancia, ser una salida controlada, entonces los
programadores deberan publicar DESTINAR o un ROLLBACK, pero la opcin es hasta
ellos.
Si la sesin de un cliente falla por la razn que sea, la base de datos siempre har rodar
atrs la transaccin. Tal frainstancia podra ser por varias razones: el proceso de usuario
puede morir o ser matado al nivel de sistema operativo, la conexin de red con el
servidor de base de datos puede disminuir, o la mquina donde el instrumento de cliente
se ejecuta puede estrellarse. En cualquier de estos instancias, no hay ninguna cuestin
comandoada de DESTINAR o select ROLLBACK, y es hasta la base de datos para
descubrir lo que ha pasado. El comportamiento consiste en que la sesin es matada, y se
hace rodar una transaccin activa atrs. El comportamiento es el mismo si el frainstancia
est en el lado de servidor. Si el servidor de base de datos se estrella por cualquier motivo,
cuando despus inicializa todas las transacciones de cualquier sesin que estuviera en el
progreso ser hecho rodar atrs.

Las Select de Control de Transaccin
Una transaccin comienza implcitamente con la primera select DML. No hay ningn
comando
comenzar explcitamente una transaccin. La transaccin sigue por todas las select
DML subsecuentes publicadas por la sesin. Estas select pueden estar contra cualquier
nmero de tablas: una transaccin no es restringida a una comando. Esto se termina
(excluyendo cualquier de los acontecimientos puestos en una lista en la seccin anterior)
cuando las cuestiones a de sesin DESTINAN u comando de ROLLBACK. El comando
de SAVEPOINT puede ser usado para poner marcadores que organizarn la accin de un
ROLLBACK, pero la misma transaccin permanece en el progreso independientemente
del uso de SAVEPOINT.
432
Captulo 10:
Manipulacin de Datos



DESTINE Sintcticamente, DESTINE es el comando de SQL ms simple. La sintaxis
es como sigue:
DESTINE; Esto terminar la transaccin corriente, que tiene el efecto dual de la
fabricacin
los cambios tanto permanentes como visibles a otras sesiones. Hasta que una transaccin
sea destinada, no puede ser visto por ninguna otra sesin, aun si ellos son entrados en el
sistema a la base de datos con el mismo nombre de usuario que aquella de la sesin
ejecutando las transacciones. Hasta que una transaccin sea destinada, es invisible para
otras sesiones y puede ser invertido. Pero una vez que es destinado, es absolutamente no
reversible. El principio de durabilidad se aplica. Todos los administradores de base de
datos temen una llamada telefnica a lo largo de estas lneas:
Usuario: acabo de borrar un milln de filas en vez de uno. DBA: Cmo? Usuario: Como
olvid de poner un DONDE clusula en mi BORRAR select. DBA: usted dice
DESTINAN? Usuario: Por supuesto. DBA: Um. El estado de los datos antes de
DESTINAR es que los cambios han sido hechos,
pero todas las sesiones adems del que que hizo los cambios son desviadas a copias de
los datos en su forma precambiada. Tan si la sesin ha insertado filas, otras sesiones que
SELECCIONAN de la comando no los vern. Si la transaccin ha borrado filas, otras
sesiones seleccionar de la comando todava los vern. Si la transaccin ha hecho
actualizaciones, sern las versiones no actualizadas de las filas que son presentadas a
otras sesiones. Esto es de acuerdo con el principio de aislamiento: ninguna sesin puede
ser de cualquier modo el dependiente en el estado de una transaccin no comprometida.
Despus de DESTINAR, todas las sesiones vern inmediatamente los nuevos datos en
cualquier pregunta que ellos publiquen: ellos vern las nuevas filas, ellos no vern las
filas borradas, ellos vern las nuevas versiones de las filas actualizadas. En instancia de
la conversacin hipottica slo hablada, un momento las preguntas de otras sesiones vern
millones de filas en la comando; el siguiente ser vaco. Esto es de acuerdo con el
principio de durabilidad.




ROLLBACK
Transacciones de control
433
Mientras una transaccin est en el progreso, el Oracle guarda una imagen de los datos
como era antes de la transaccin. Esta imagen es presentada a otras sesiones que
preguntan los datos mientras la transaccin est en el progreso. Esto tambin es usado
para rodar apoyan la transaccin automticamente si algo se equivoca, o deliberadamente
si la sesin lo solicita. La sintaxis para solicitar un rollback es como sigue:
ROLLBACK [A SAVEPOINT savepoint]; El uso opcional de savepoints es detallado
en la seccin despus.
El estado de los datos antes del rollback es que los datos han sido cambiados, pero
la informacin tena que poner marcha atrs los cambios est disponible. Esta
informacin es presentada a todas otras sesiones, a fin de poner en prctica el principio
de aislamiento. El rollback desechar todos los cambios restaurando la imagen de
precambio de los datos; cualquier fila la transaccin insertada ser borrada, rema la
transaccin borrada ser insertada atrs en la comando, y cualquier fila que fuera
actualizada ser devuelta a su estado original. Otras sesiones no sern conscientes que
algo ha pasado en absoluto; ellos nunca vieron los cambios. La sesin que hizo la
transaccin ver ahora los datos como era antes de que la transaccin comenzara.

DESTINAR es instantneo, porque realmente no tiene que hacer nada. El trabajo
ha sido hecho ya. Un ROLLBACK puede ser muy lento: esto tomar por lo
general como mucho tiempo (si no ms largo) para invertir una transaccin
que esto tom para hacer los cambios en primer lugar. Rollbacks no estn bien
para el rendimiento de base de datos.


EJERZA 10-4 Uso Comandos de ROLLBACK y DESTINAR
En este ejercicio, demuestre el uso de select de control de transaccin y transaccin
aislamiento. Se supone que la comando HR.REGIONS es como vista en la ilustracin al
final de Ejercicio 10-3. Si no, ajuste los valores si es necesario. Conecte al esquema de
HORA con dos sesiones simultneamente. stos pueden ser dos sesiones SQL*Plus o dos
sesiones de Developer SQL o uno de cada uno. Las listas de comando siguientes andan
para seguir en cada sesin.
434
Captulo 10:
Manipulacin de Datos



Paso En su primera sesin En su segunda sesin
1 seleccione * de REGIONS; seleccione * de REGIONS;
Ambas sesiones ven los mismos datos.
2 insercin en REGIONS insercin en REGIONS
valores (100, 'el Reino Unido'); valores (101, 'gigabyte');
3 seleccione * de REGIONS; seleccione * de REGIONS;
Ambas sesiones ven resultados diferentes: los datos originales, ms su propio
cambio.
4 destine; 5 seleccione * de REGIONS; seleccione * de REGIONS;
Una transaccin ha sido publicada al mundo, el otro todava es visible a slo una sesin.
6 rollback; rollback; 7 seleccione * de REGIONS;
seleccione * de REGIONS;
La transaccin comprometida no fue invertida porque ha sido destinada ya, pero el no comprometido
uno es completamente ido ahora, habiendo sido terminado rodando apoya el cambio.
8 borre de REGIONS donde borre de REGIONS donde
region_id=100; region_id=101;
9 seleccione * de REGIONS; seleccione * de REGIONS;
Cada fila borrada todava es visible en la sesin que no la borr, hasta que usted haga lo siguiente:
10 destine; destine; 11 seleccione * de REGIONS;
seleccione * de REGIONS;
Con todas las transacciones terminadas, ambas sesiones ven una vista consecuente de la comando.



SAVEPOINT El uso de savepoints debe permitir que un programador liste un
marcador en una transaccin que puede ser usada para controlar el efecto del comando
de ROLLBACK. Ms bien que rodar apoyan la transaccin entera y terminacin de ello,
se hace posible invertir todos los cambios hechos despus de un punto particular, pero
cambios de permiso hechos antes de aquel punto intacto. La transaccin s mismo
permanece en el progreso: todava no comprometido, todava rollbackable, y todava
invisible para otras sesiones.
La sintaxis es como sigue: SAVEPOINT savepoint;
Transacciones de control
435



Esto crea un punto llamado en la transaccin que puede ser usada en un comando de
ROLLBACK subsecuente. La comando siguiente ilustra el nmero de filas en una comando
en varias etapas en una transaccin. La comando es una comando muy simple llamada la
PALETA, con una columna.

Comando
paleta de comando truncada; insercin en valores de paleta ('un'); savepoint primero;
insercin en valores de paleta ('dos'); savepoint segundo; insercin en valores de paleta
('tres'); rollback a segundo savepoint; rollback a savepoint primero; destine; borre de la
paleta; rollback;

Filas Visibles al Usuario
01122321101

Filas Visibles a Otros
00000000111


El ejemplo en la comando muestra dos transacciones: el primer terminado con
DESTINAR, el segundo con un ROLLBACK. Puede verse que el uso de savepoints slo
es visible dentro de la transaccin: otras sesiones no ven nada que no sea destinado.

El comando de SAVEPOINT (an) no es la parte del estndar SQL oficial,
entonces puede considerarse la prctica buena para evitarlo en sistemas de
produccin. Puede ser muy til en el desarrollo, sin embargo, cuando usted
prueba el efecto de select DML y anda por una transaccin compleja paso a paso.

El AUTOCOMMIT en SQL*Plus y Developer SQL El comportamiento
estndar de SQL*Plus y Developer SQL debe seguir el estndar SQL: una transaccin
comienza implcitamente con una select DML y se termina explcitamente con
DESTINAR o un ROLLBACK. Es posible cambiar este comportamiento en ambos
herramientas de modo que cada select DML destine inmediatamente, en su propia
transaccin. Si esto es hecho, no hay ninguna necesidad de ninguno DESTINAN select, y
el ROLLBACK
436
Captulo 10:
Manipulacin de Datos



la select nunca puede tener ningn efecto: todas las select DML se hacen permanentes y
visibles a otros tan pronto como ellos ejecutan.
En SQL*Plus, habilite el modo autodestinar con el comando:
SET AUTODESTINA EN
Volver a normal:
SET AUTODESTINA LEJOS En Developer SQL, del men de Herramientas,
seleccione Preferencias. Entonces amplese
Base de datos y Parmetros de Hoja de clculo: usted ver la casilla de verificacin
Autocommit in SQL Worksheet.

Puede ser difcil justificar la habilitacin del modo autodestinar del SQL*Plus e
herramientas de Developer SQL. Quizs la nica razn es para la compatibilidad
con algunos productos de tercero que no siguen el estndar SQL. Las escrituras
de SQL escritas para tales productos pueden no tener cualquiera DESTINA
select.

ESCOGIDO PARA LA ACTUALIZACIN Una ltima select de control de
transaccin es SENTENCIA PARA LA ACTUALIZACIN. El oracle, en ausencia,
proporciona el nivel ms alto posible de la coincidencia: los lectores no bloquean a
escritores, y los escritores no bloquean a lectores. O en la lenguaje clara, no hay ningn
problema con datos de interrogatorio de sesin que otra sesin actualiza, o datos de
actualizacin de sesin que otra sesin pregunta. Sin embargo, hay tiempos cuando usted
puede desear cambiar este comportamiento y prevenir cambios en datos que estn siendo
preguntados.
Es bastante habitual para una aplicacin recuperar un SET de filas con un comando
ESCOGIDO, presentarlos a un usuario para la lectura, y le apremio para cualquier
cambio. Como el Oracle es una base de datos multiusuaria, no es imposible que otra sesin
tambin haya recuperado las mismas filas. Si ambas sesiones intentan hacer cambios,
pueden haber algunos efectos bastante raros. La comando siguiente representa tal
situacin.


Primer Usuario Segundo Usuario
seleccione * de REGIONS; seleccione * de REGIONS;
borre de REGIONS
donde region_id=5; destine;
las REGIONS de actualizacin ponen region_name ='GB' donde region_id=5;
Transacciones de control
437



Esto es lo que el primer usuario ver, de un SQL*Plus apremio:

SQL> seleccionan * de REGIONS;
REGION_ID REGION_NAME
---------- -------------------------
5 el Reino Unido 1 Europa 2 Amricas 3 Asia 4 Oriente Medio y frica
SQL> REGIONS de actualizacin ponen region_name ='GB' donde region_id=5;
0 filas actualizadas.
Esto es un poco desconcertante. Un camino alrededor de este problema es cerrar con
llave las filas en
qu est interesado:

seleccione * de REGIONS para la actualizacin;



DENTRO DEL EXAMEN


Entendimiento de Aislamiento de Transaccin
Todas las select DML son privadas a la sesin que los hace, hasta que la transaccin destine. La transaccin
es comenzada implcitamente con la primera select DML ejecutada. Hasta que sea destinado, puede ser
invertido con un ROLLBACK. Ninguna otra sesin ver alguna vez cambios que no han sido destinados,
pero el instante ellos son destinados ellos sern visibles a todas otras sesiones.
La estructura de transaccin es esencial para la programacin buena. Una transaccin es una unidad
lgica del trabajo: los cambios hechos por la transaccin, si es una select que afecta una fila en una
comando, o mucha afectacin de select
cualquier nmero de filas en muchas tablas, debera ser m contenido. No debera ser de ningn modo el
dependiente en select ejecutadas fuera de la transaccin, y no debera ser divisible en transacciones ms
pequeas, autnomas. Una transaccin debera ser la medida correcta; esto debera contener todas las
select que no pueden ser separadas en trminos de lgica comercial y ningunas select que puedan ser.
Las decisiones sobre la estructura de transaccin pueden ser complejas, pero con algn pensamiento e
investigacin, ellos pueden ser hechos para cualquier situacin. Los analistas de sistemas y comerciales
pueden y deberan aconsejar.
438
Captulo 10:
Manipulacin de Datos




GUIN & SOLUCIN

Las transacciones, como coacciones, son reglas comerciales: una tcnica por lo cual la base de datos puede hacer
cumplir reglas desarrolladas por analistas comerciales. Si la "unidad lgica del trabajo" es enorme, como un
aplazamiento de perodo de suite de la contabilidad, debera realmente esto ser puesto en prctica como una
transaccin?



Siendo capaz de hacer operaciones DML, mire el resultado, luego ruede atrs e intntelos otra vez puede ser muy
til. Pero es realmente una idea buena?

No necesariamente. Tal transaccin podra tomar horas, ocupando una cantidad enorme de recursos de base de datos. En
tales instancias, usted debe hablar con sus analistas comerciales y DBA si es posible romper una transaccin comercial
en varias transacciones de base de datos. Por supuesto, si algo se equivoca parcialmente por, usted tendr una suite de la
contabilidad que es en parte en un perodo y en parte en el otro. Esta aplicacin tendr que ser capaz de clasificar el lo.
No, no realmente. Si la aplicacin es diseada de modo que los usuarios finales puedan hacer esto, el DBA no ser
feliz. l ver muchas transacciones ser hechas rodar atrs, que acenta la base de datos. Es mucho mejor para la
aplicacin hacer todo tal trabajo del lado de cliente y slo presentar el trabajo a la base de datos cuando est listo y
puede ser destinado inmediatamente.


EL PARA la clusula de ACTUALIZACIN colocar una cerradura en todas las filas
recuperadas. Ningunos cambios pueden ser hechos a ellos por cualquier sesin adems de
lo que public el comando, y por lo tanto las actualizaciones subsecuentes tendrn xito:
no es posible para las filas haber sido cambiado. Esto significa que una sesin tendr una
vista consecuente de los datos (esto no cambiar), pero el precio para ser pagado es que
otras sesiones colgarn si ellos tratan de actualizar alguna de las filas cerradas con llave
(ellos pueden preguntarlos, por supuesto,).
Las cerraduras colocadas por un PARA la clusula de ACTUALIZACIN sern
sostenidas hasta que la sesin publicando las cuestiones a de comando DESTINE o
ROLLBACK. Esto debe ser hecho para soltar las cerraduras, aun si ningunos comandos
de DML han sido ejecutados.

RESUMEN DE CERTIFICACIN
Hay cuatro comandos de DML que afectan datos: INSERCIN, ACTUALIZACIN,
BORRAR,
y (el comando opcional) FUSIN. TRUNCADO Es un comando de DDL que es
funcionalmente equivalente a un BORRAR comando sin un DONDE clusula, pero es
mucho ms rpido. Todos los comandos de DML pueden ser hechos rodar atrs,
automticamente en instancia del error, o a mano con el comando de ROLLBACK - a
menos que ellos hayan sido destinados con DESTINAR. Una vez destinado, los cambios
nunca pueden ser invertidos. TRUNCADO, como todos los comandos de DDL, tiene un
incorporado DESTINAN lo que es imparable.
Taladradora de dos minutos
439




TALADRADORA DE DOS MINUTOS

Describa Cada Lenguaje de Manipulacin de Datos (DML) Select
INSERCIN escribe filas en una comando. ACTUALIZACIN ajusta los valores en
filas existentes. BORRAR borra filas. FUSIN puede combinar las funciones de
INSERCIN, ACTUALIZACIN, y BORRAR. Aunque TRUNCADO no sea DML, esto
realmente borra todas las filas en una comando.

Filas de insercin en una Comando
INSERCIN puede escribir una fila o un SET de filas. Esto es posible para un
INSERCIN escribir filas en tablas mltiples. Subconsultas puede ser usado para generar
las filas para ser insertadas. el Subconsultas y funciones puede ser usado para generar valores
de columna. Un INSERCIN no es permanente hasta que sea destinado.

Filas de actualizacin en una Comando
ACTUALIZACIN puede afectar una fila o un SET de filas en una comando.
Subconsultas puede ser usado para seleccionar las filas para ser actualizadas. el Subconsultas
y funciones puede ser usado para generar valores de columna. Una ACTUALIZACIN
no es permanente hasta que sea destinado.

Borre Filas de una Comando
BORRAR puede borrar una fila o un SET de filas de una comando. Una subpregunta
puede ser usado para seleccionar las filas para ser borradas. BORRAR no es permanente
hasta que sea destinado. TRUNCADO borra cada fila de una comando. Un
TRUNCADO es inmediatamente permanente: no puede ser hecho rodar atrs.
440
Captulo 10:
Manipulacin de Datos



Transacciones de control
Una transaccin es una unidad lgica del trabajo, posiblemente varias select DML.
Transacciones son invisibles para otras sesiones hasta no destinado. Hasta no
destinado, las transacciones pueden ser hechas rodar atrs. Una vez destinado,
una transaccin no puede ser invertida. Un SAVEPOINT deja a una sesin hacer
rodar atrs la parte de una transaccin.




M PRUEBA
M Prueba
441
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.

Describa Cada Lenguaje de Manipulacin de Datos (DML) Select
1. Cul de los comandos siguientes puede ser hecho rodar atrs?
A. DESTINE B. BORRAR C. INSERCIN D. FUSIN E. F TRUNCADO. ACTUALIZACIN
2. Cmo puede usted cambiar el valor de clave primaria de una fila? (Elija la mejor respuesta.)
A. Usted no puede cambiar el valor de clave primaria. B. Change esto con una select de
ACTUALIZACIN simple. C. La fila debe ser borrada con un BORRAR y entrada de nuevo con
un INSERCIN. D. Esto slo es posible si la fila es cerrada con llave primero con un ESCOGIDO
PARA LA ACTUALIZACIN.
3. Si una ACTUALIZACIN o BORRAR manda tiene un DONDE la clusula que le da un alcance de
varios
las filas, qu pasar si hay una parte de error el camino a travs de la ejecucin? El comando es uno
de varios en una transaccin de multiselect. (Elija la mejor respuesta.) A. El comando saltar la fila
que caus el error y seguir. B. El comando se parar en el error, y las filas que han sido actualizadas
o borradas van
permanezca actualizado o borrado.
C. Independientemente del trabajo el comando haba hecho antes de golpear el error ser hecho
rodar atrs, pero
el trabajo hecho ya por la transaccin permanecer.
D. La transaccin entera ser hecha rodar atrs.

Filas de insercin en una Comando
4. Si una tabla T1 tiene cuatro columnas numricas, C1, C2, C3, y C4, que de estas select va
tenga xito? (Elija la mejor respuesta.) A. insertan en valores de T1 (1,2,3, nulo); B. insertan en
valores de T1 ('1', '2', '3', '4'); C. insertan en T1 escogido * de T1;
442
Captulo 10:
Manipulacin de Datos



D. Todas las select (A, B, y C) tendrn xito. E. Ninguna de las
select (A, B, o C) tendr xito.
5. Estudie el resultado de esta select SENTENCIA:
SQL> seleccionan * de t1;
C1 C2 C3 C4
---------- ---------- ---------- ----------
1 2 3 45 6 7
8
Si usted publica esta select:
el insercin en t1 (c1, c2) valores (seleccionan c1, c2 de t1);
por qu fallar esto? (Elija la mejor respuesta.)
A. Como los valores no son proporcionados a las columnas de toda la comando: debera haber NULLs
para C3
y C4.
B. Como la subpregunta devuelve filas mltiples: esto requiere un DONDE clusula restringir el
el nmero de filas volvi a uno. C. Como la subpregunta no es el escalar: esto debera usar a
MAX o MINUTO para generar valores escalares. D. Como la palabra clave de VALORES no es
usada con una subpregunta. E. Esto tendr xito, insertando dos filas con NULLs para C3 y C4.
6. Considere esta select:
insercin en REGIONS (region_id, region_name)
los valores ((seleccionan el mximo (region_id) +1 de REGIONS), 'Gran Bretaa');
Cul ser el resultado? (Elija la mejor respuesta.)
A. La select no tendr xito si el valor generado para REGION_ID no es nico,
porque REGION_ID es la clave primaria de la comando de REGIONS.
B. La select tiene un error de sintaxis porque usted no puede usar la palabra clave de VALORES con
una subpregunta. C. La select ejecutar sin el error. D. La select fallar si la comando de
REGIONS tiene una tercera columna.

Filas de actualizacin en una Comando
7. Usted quiere insertar una fila y luego actualizarlo. Qu secuencia de pasos debera usted seguir?
(Elija la mejor respuesta.) A. INSERCIN, ACTUALIZACIN, DESTINA B. INSERTE,
DESTINE, ACTUALICE, DESTINE




C. INSERCIN, SELECCIONE PARA ACTUALIZACIN, ACTUALIZACIN, DESTINE D.
INSERTE, DESTINE, ESCOGIDO PARA ACTUALIZACIN, ACTUALIZACIN, DESTINE
8. Si usted publica este comando:
actualice salary=salary de SET de EMPLOYEES * 1.1;
cul ser el resultado? (Elija la mejor respuesta.)
M Prueba
443
A. La select fallar porque no hay DONDE la clusula para restringir las filas afect. B. La primera
fila en la comando ser actualizada. C. Habr un error si cualquier fila tiene su columna de SUELDO
NULA. D. Cada fila har incrementar el SUELDO en el 10 por ciento, a menos que el SUELDO fuera
NULO.

Borre Filas de una Comando
9. Cmo puede usted borrar los valores de una columna de cada fila en una comando? (Elija la mejor
respuesta.)
A. Use el BORRAR comando de COLUMNA. B. Use el comando de COLUMNA TRUNCADO.
C. Use el comando de ACTUALIZACIN. D. Use el comando de COLUMNA DE GOTA.
10. Cul de estos comandos borrar cada fila en una comando? (Elija uno o varios correctos
respuestas.) A. BORRAR mandan sin DONDE la clusula B. Una COMANDO DE GOTA manda C.
Un comando TRUNCADO D. Un comando de ACTUALIZACIN, poniendo cada columna a
NULO y sin DONDE clusula

Transacciones de control
11. El usuario JOHN actualiza algunas filas y pide al usuario ROOPESH entrar en el sistema y
comprobar los cambios antes
l los destina. Cul de las select siguientes es verdad? (Elija la mejor respuesta.) A. ROOPESH
puede ver los cambios, pero no puede cambiarlos porque JOHN se habr cerrado
las filas. B. ROOPESH no ser capaz de ver los cambios. C. JOHN debe destinar los cambios de
modo que ROOPESH pueda verlos y, si es necesario, rollo
ellos atrs.
D. JOHN debe destinar los cambios de modo que ROOPESH pueda verlos, pero slo JOHN puede
rodar
ellos atrs.
444
Captulo 10:
Manipulacin de Datos



12. El usuario JOHN actualiza algunas filas, pero no destina los cambios. El usuario ROOPESH pregunta
el
las filas aquel JOHN actualizadas. Cul de las select siguientes es verdad? (Elija tres respuestas
correctas.) A. ROOPESH no ser capaz de ver las filas porque ellos sern cerrados con llave. B.
ROOPESH ser capaz de ver los nuevos valores, pero slo si l entra en el sistema como JOHN. C.
ROOPESH ver las viejas versiones de las filas. D. ROOPESH ver el estado del estado de los datos
como era cuando JOHN ltimo cre
un SAVEPOINT. 13. Cul de estos comandos terminar una transaccin? (Elija tres respuestas
correctas.)
A. DESTINE B. BORRAR C. ROLLBACK D. ROLLBACK A SAVEPOINT E. SAVEPOINT F.
TRUNCADO

PREGUNTA DE LABORATORIO
Realice este ejercicio en el esquema OE.
1. Inserte a un cliente en CLIENTES, usando una funcin para generar un nmero de cliente nico:
insercin en clientes
(customer_id,cust_first_name,cust_last_name) valores ((seleccionan el mximo
(customer_id) +1 de clientes), 'John', 'Watson');

2. Dle un lmite de crdito igual al lmite de crdito medio:
actualice el SET de clientes
el credit_limit = (seleccionan avg (credit_limit) de clientes) donde cust_last_name
=' Watson';

3. Cree a otro cliente que usa al cliente slo creado, pero asegrese que el CUSTOMER_ID es
nico:
insercin en clientes
(customer_id,cust_first_name,cust_last_name,credit_limit) seleccionan
customer_id+1,cust_first_name,cust_last_name,credit_limit de clientes donde
cust_last_name =' Watson';




4. Cambie el nombre del segundo cliente entrado:
clientes de actualizacin
SET cust_last_name ='Ramklass', cust_first_name ='Roopesh'
Pregunta de laboratorio
445
donde customer_id = (seleccionan el mximo (customer_id) de clientes);
5. Destine esta transaccin:
destine;
6. Determine el CUSTOMER_IDs de los dos nuevos clientes y cierre con llave las filas: 7. seleccione
customer_id, cust_last_name de clientes
donde cust_last_name en ('Watson', 'Ramklass') para actualizacin; De otra sesin conectada al esquema
OE, intente actualizar una de las filas cerradas con llave:
actualice credit_limit=0 de SET de clientes donde cust_last_name ='Ramklass';
8. Este comando colgar. En la primera sesin, suelte las cerraduras publicando destinar:
destine;
9. La segunda sesin completar ahora su actualizacin. En la segunda sesin, borre las dos filas:
borre de clientes donde cust_last_name en ('Watson', 'Ramklass');
10. En la primera sesin, intente truncar la comando de CLIENTES:
clientes de comando truncados;
11. Esto fallar porque hay una transaccin en el progreso contra la comando, que bloquear todos
DDL manda. En la segunda sesin, destine la transaccin:
destine;
12. La comando de CLIENTES estar de vuelta ahora en el estado en el cual estaba al principio del
ejercicio.
Confirme esto comprobando el valor de CUSTOMER_ID ms alto:
mximo escogido (customer_id) de clientes;
446
Captulo 10:
Manipulacin de Datos



M PRUEBAN RESPUESTAS

Describa Cada Lenguaje de Manipulacin de Datos (DML) Select
1. B, C, D, F. stos son los comandos de DML: pueden hacerlos rodar todos atrs.

A, E. DESTINE termina una transaccin, que nunca puede ser hecha rodar entonces
atrs.
TRUNCADO es un comando de DDL e incluye un incorporado DESTINAN.
2. B. Assuming ningunas violaciones de coaccin, la clave primaria puede actualizado como
cualquier otra columna.
A, C, D. A es incorrecto porque no hay ninguna restriccin de la actualizacin de claves
primarias (adems de
coacciones). El C es incorrecto porque no hay ninguna necesidad de hacerlo en una manera tan
compleja. El D es incorrecto porque la ACTUALIZACIN aplicar su propia cerradura: usted no
tiene que cerrar con llave la fila primero.
3. C. Esto es el comportamiento esperado: la select es hecha rodar atrs, y el resto del
la transaccin permanece no comprometida.
A, B, D. A es incorrecto porque, mientras este comportamiento es de hecho configurable, no es
habilitado
en ausencia. El B es incorrecto porque, mientras esto es de hecho posible en instancia de errores
espaciales, no es habilitado en ausencia. El D es incorrecto porque slo una select ser hecha rodar
atrs, no la transaccin entera.

Filas de insercin en una Comando
4. D. A, B, y C tendr xito todo, aunque B obligue la base de datos a hacer algn
reparto de tipo automtico.
A, B, C, E. A, B, y C son incorrectos porque cada uno tendr xito. El E es incorrecto porque A,
B,
y C tendr xito todo.
5. D. La sintaxis es incorrecta: use la palabra clave de VALORES o una subpregunta, pero no a
ambos.
Borre la palabra clave de VALORES, y se ejecutar. C3 y C4 seran poblados con NULLs.
A, B, C, E. A es incorrecto porque no hay ninguna necesidad de proporcionar valores a columnas
no puestas en una lista.
Los B y C son incorrectos porque un INSERCIN puede insertar un SET de filas, as no hay
ninguna necesidad de restringir el nmero con un DONDE clusula o usando a MAX o MINUTO
para devolver slo una fila. El E es incorrecto porque la select no es sintcticamente correcta.
6. C. La select es sintcticamente correcta, y el uso de "MAX (REGION_ID) + 1"
garantas que generan un nmero nico para la columna de clave primaria.
A, B, D. A es incorrecto porque la funcin generar un valor nico para primario
llave. El B es incorrecto porque no hay ningn problema usando una subpregunta escalar para generar
un valor para una lista de VALORES. Lo que no puede ser hecho debe usar la palabra clave de
VALORES y luego una subpregunta no escalar sola para proporcionar todos los valores. El D es
incorrecto porque si hay una tercera columna, ser poblado con un valor NULO.




Filas de actualizacin en una Comando
M Respuestas de Prueba
447
7. A. Esto es el ms simple (y por lo tanto el mejor) el camino.
B, C, D. Todos stos trabajarn, pero ellos son todos innecesariamente complicados: ningn
programador debera
use select innecesarias.
8. D. Cualquier operacin aritmtica de unas vueltas NULAS un NULO, pero todas otras filas ser
actualizada.
A, B, C. A y B son incorrectos porque la carencia de un DONDE la clusula significa que
cada fila
ser tratado. El C es incorrecto porque tratando de hacer la aritmtica contra un NULO no es un
error (aunque no sea muy til, cualquiera).

Borre Filas de una Comando
9. C. Una ACTUALIZACIN, sin un DONDE clusula, es el nico
camino.
A, B, D. A es incorrecto porque no hay ninguna tal sintaxis: BORRAR afecta la fila entera.
El B es incorrecto porque no hay ninguna tal sintaxis: un TRUNCADO afecta la comando entera. El
D es incorrecto porque, mientras este comando realmente existe (es la parte del comando de
COMANDO CAMBIAR), borrar la columna completamente, no slo borrar los valores de ello.
10. A, C. El TRUNCADO ser ms rpido, pero BORRAR se pondr all tambin.
el B es incorrecto porque esto borrar la comando as como las filas dentro de ella. El D es
incorrecto
porque las filas todava estarn all - aunque ellos sean poblados con NULLs.

Transacciones de control
11. B. El principio de aislamiento significa que slo JOHN puede ver su transaccin no
comprometida.
A, C, D. A es incorrecto porque el aislamiento de transaccin significa que ninguna otra sesin
ser capaz a
ver los cambios. Los C y D son incorrectos porque nunca puede hacerse rodar una transaccin
comprometida atrs.
12. aislamiento de C. Transaction significa que ninguna otra sesin ser capaz de ver los cambios
hasta
ellos son destinados.
A, B, D. A es incorrecto porque el cierre no es relevante; los escritores no bloquean a lectores. El
B es
incorrecto porque el aislamiento restringe la visibilidad de transacciones en el progreso a la sesin que
hace los cambios; el esquema al cual los usuarios conectan no importa. El D es incorrecto porque
savepoints slo son marcadores en una transaccin; ellos no afectan cambios de publicacin en otras
sesiones.
13. A, C, F. DESTINE y ROLLBACK son los comandos de terminar una transaccin
explcitamente; TRUNCADO lo har implcitamente.
B, D, E. El B es incorrecto porque BORRAR es un comando de DML que puede ser ejecutado
dentro de un
transaccin. Los D y E son incorrectos porque la creacin savepoints y el balanceo atrs a ellos
dejan la transaccin en el progreso.
448
Captulo 10:
Manipulacin de Datos



RESPUESTA DE LABORATORIO
La figura 10-5 muestra los cinco primeros pasos del ejercicio.
La figura 10-6 muestra los siete pasos finales del ejercicio, como visto desde el punto de vista de la
primera sesin.



FIGURA 10-5

Los pasos 1 a 5 del ejercicio de
laboratorio















FIGURA 10-6

Los pasos finales del ejercicio de
laboratorio, incluso el error
TRUNCADO
11
La utilizacin de Select
de DDL para Crear y
Manejar Tablas







OBJETIVOS DE
CERTIFICACIN


11.01
Clasifique los Objetos de Base de datos Principales
11.05
Explique Como Coacciones Son Creadas



en el momento de Creacin de Comando
11.02
Examine la Estructura de Comando

Taladradora de dos minutos
11.03
Liste en una lista los Tipos de datos Que estn Disponibles



para Columnas
Q&A
M Prueba
11.04
Cree una Comando Simple















Copyright 2008 por El Clic de McGraw-Hill Companies, Inc aqu para trminos de uso.
450
Captulo 11:
La utilizacin de Select de DDL para Crear y Manejar Tablas
Hay varios tipos de objetos de datos en una base de datos que puede ser dirigida por usuarios con
SQL.El el ms comnmente usaba el tipo del objeto es la comando. Las tablas vienen a varias formas,
pero SQL no es consciente de esto. Una comando tambin puede tener que ver con otros objetos tal
como
ndices o GLOBOS (un objeto grande - una estructura diseada para almacenar artculos grandes de
la informacin, tal
como videograbaciones) que son dirigidos implcitamente. La select slo se dirigir a la comando con
la cual los otros objetos tienen que ver. Esta creacin de comando de detalles de captulo; el Captulo
12 cubrir algunos otros tipos de objeto.

Creando una comando, hay ciertas reglas que deben ser seguidas en cuanto a la
estructura de la comando: sus columnas slo pueden ser de ciertos tipos de datos. Tambin
hay las reglas que pueden ser definidas para las filas individuales; stos son conocidos
como coacciones. Las reglas estructurales y las reglas de coaccin juntos restringen los
datos que pueden ser insertados en la comando.



OBJETIVO DE CERTIFICACIN 11.01


Clasifique los Objetos de Base de datos Principales
Hay diversos tipos de objetos que pueden existir dentro de una base de datos, muchos ms con
el
liberacin corriente que con versiones ms tempranas. Todos los objetos tienen unos
nombres, y todos los objetos son posedos por alguien. "Alguien" es un usuario de base de
datos, como la HORA. Los objetos que el usuario posee son su esquema. El nombre de un objeto
debe conformarse con ciertas reglas.

Tipos de objeto
Esta pregunta pone en una lista los tipos de objeto que resultan existir en esta base de
datos particular, con
un cargo de cuntos hay:
SQL> seleccionan object_type, cuenta (object_type) de dba_objects

2 grupo por object_type pide por object_type;
OBJECT_TYPE CONDE (OBJECT_TYPE)
------------------- ------------------
DIRECTORIO DE DIMENSIN DE CONTEXTO DE GRUPO DE CONSUMIDOR DE RACIMO
10 12
659




LA PARTICIN DE NDICE DE NDICE DE FUNCIN DE CONTEXTO DE EVALUACIN DE EDICIN INDEXTYPE
CLASE DE JAVA DATOS DE JAVA LA PARTICIN DE GLOBO DE GLOBO DE BIBLIOTECA DE CLASE DE TRABAJO
DE TRABAJO DE RECURSO DE JAVA MATERIALIZ EL TIPO DE GATILLO DE PARTICIN DE COMANDO DE COMANDO
DE SINNIMO DE SECUENCIA DE HORARIO DE SET DE REGLA DE REGLA DE PLAN DE RECURSO DE COLA DE
PROGRAMA DE PROCEDIMIENTO DE CUERPO DE PAQUETE DE PAQUETE DE OPERADOR DE VISTA TECLEA EL CUERPO
GRUPO DE VENTANA DE VENTANA DE VISTA INDETERMINADO filas de ESQUEMA 42 de XML seleccionadas.
Clasifique los Objetos de Base de datos Principales



1
13
286
3023
342
12
22018
322820
11 11
177769
73
60 1240 1178
118
17 37
71
21
2
204
26493
2464
199413
2630
231
6
4669
94
93
451
Esta pregunta se dirige a la vista DBA_OBJECTS, que se pelea para cada objeto en
la base de datos. Los nmeros son bajos, porque la base de datos es muy pequeo uno usado slo para la
enseanza. Una base de datos usada para una aplicacin comercial podra tener cientos de miles de objetos.
Usted no puede ser capaz de ver la vista DBA_OBJECTS, segn que permisos su cuenta tiene. Las vistas
alternas son USER_OBJECTS, que mostrar todos los objetos posedos por usted, y ALL_OBJECTS, que
mostrar todos los objetos a los cuales le han concedido el acceso (incluso su propio). Todos los usuarios tienen el
acceso a stos.
452
Captulo 11:
La utilizacin de Select de DDL para Crear y Manejar Tablas



Los objetos de gran inters para un programador SQL son aquellos que contienen, o
dan el acceso a, datos. stos son

Tablas Visualiza Sinnimos ndices Secuencias

Este captulo cubre tablas; los dems son descritos en el Captulo 12. Brevemente, una
vista
es una select SENTENCIA almacenada que puede ser dirigida como si fuera una
comando. No es nada ms que una select SENTENCIA, pero, ms bien que ejecutar la
select s mismo, el usuario publica una select SENTENCIA contra la vista en cambio. En
efecto, el usuario selecciona del resultado de otra seleccin. Un sinnimo es un alias para
una comando (o una vista). Los usuarios pueden ejecutar select SQL contra el sinnimo,
y la base de datos trazar un mapa de ellos en select contra el objeto al cual el sinnimo
seala. Los ndices son un medio de tiempos de acceso que mejoran a filas en tablas. Si una
pregunta requiere slo una fila, entonces ms bien que escanear la comando entera para
encontrar la fila, un ndice puede dar un indicador a la posicin exacta de la fila. Por
supuesto, el ndice s mismo debe ser buscado, pero esto a menudo es ms rpido que
escanear la comando. Una secuencia es una construccin que genera nmeros nicos.
Hay muchos instancias donde los nmeros nicos son necesarios. Nmeros de
publicacin de secuencias en pedido, a peticin: es absolutamente imposible para el mismo
nmero ser publicado dos veces.
Los tipos de objeto restantes son menos comnmente relevantes para un programador
SQL. Su uso se cae ms dentro del reino de programadores PL/SQL y administradores de
base de datos.


Usuarios y Esquemas
Muchas personas usan los trminos "usuario" y "esquema" de modo intercambiable. En el
entorno de Oracle, usted puede llevarse esto (aunque no necesariamente con otros
sistemas de administracin de bases de datos). Un usuario es una persona que puede
conectar a la base de datos. El usuario tendr un nombre de usuario y una contrasea. Un
esquema es un contenedor para los objetos posedos por un usuario. Cuando un usuario
es creado, su esquema es creado tambin. Un esquema es los objetos posedos por un
usuario; al principio, ser vaco.
Algunos esquemas siempre sern vacos: el usuario nunca crear ningn objeto, porque
ellos no necesitan a y (si el usuario es alistado correctamente) no tendr los privilegios
necesarios de todos modos. Habrn concedido a usuarios, como esto permisos, por
privilegios directos o por papeles, para usar cdigo y datos de acceso en otros esquemas,
posedos por otros usuarios. Otros usuarios pueden ser el revs de esto: ellos poseern
muchos objetos, pero
Clasifique los Objetos de Base de datos Principales
453



nunca realmente entrar en el sistema a la base de datos. No tienen que haberles concedido
hasta el privilegio de SESIN CREAR, entonces la cuenta es con eficacia inhibida (o en
efecto puede ser cerrado con llave) - estos esquemas son usados como depsitos para cdigo
y datos tenidos acceso por otros.
Los objetos de esquema son objetos con un dueo. El identificador nico para un
objeto de un tipo particular no es su nombre - es su nombre, prefijado con el ttulo del
esquema al cual esto pertenece. As HR.REGIONS de comando es una comando llamada
REGIONS, que es posedo por la HORA de usuario. Podra haber otra comando
SYSTEM.REGIONS que sera una comando completamente diferente (quizs diferente
tanto en estructura como en contenido) posedo por SISTEMA de usuario y residencia en
su esquema.
Varios usuarios (y sus esquemas asociados) son creados automticamente en el tiempo
de creacin de base de datos. El principal entre stos es SYS y SISTEMA. El usuario SYS
posee el diccionario de datos: un SET de tablas (en el esquema SYS) que definen la base
de datos y sus contenido. SYS tambin posee varios cientos de paquetes PL/SQL: el cdigo
que es proporcionado al uso de administradores de base de datos y developeres. Los objetos
en el esquema SYS nunca deberan ser modificados con comandos de DML. Si usted
debiera ejecutar DML contra las tablas de diccionario de datos, usted ejecutara el riesgo de
corromper el diccionario de datos, con resultados desastrosos. Usted actualiza el
diccionario de datos ejecutando comandos de DDL (tales que CREAN LA COMANDO),
que proporcionan una capa de abstraccin entre usted y el diccionario de datos s mismo. El
esquema de SISTEMA almacena varios objetos adicionales usados para la administracin
y supervisar.
Segn las opciones seleccionadas durante la creacin de base de datos, pueden haber
ms usuarios quizs creados hasta 30 en total. Estos otros son usados para almacenar el
cdigo y datos requeridos por varias opciones. Por ejemplo, el usuario MDSYS almacena
los objetos usados por el Oracle Espacial, una opcin que ampla las capacidades de la
base de datos de Oracle de manejar la informacin geogrfica.

Nombramiento de Objetos de Esquema
Un objeto de esquema es un objeto que es posedo por un usuario. Todos los nombres de
objeto de esquema deben
confrmese con ciertas reglas:

El nombre puede ser de 1 a 30 carcteres mucho tiempo (a excepcin
los nombres de enlace de base de datos que pueden ser hasta 128 carcteres mucho
tiempo). palabras Reservadas (tal tan ESCOGIDO) no puede ser usado como
nombres de objeto. Todos los nombres debe comenzar con una carta de "A" por
"Z". Los carcteres de un nombre slo puede ser cartas, nmeros, subrayar (_),
el signo de dlar ($), o el smbolo de picadillo (#).
Minsculas ser convertido a la mayscula.
454
Captulo 11:
La utilizacin de Select de DDL para Crear y Manejar Tablas



Encerrando el nombre dentro de dobles citas,
todas estas reglas (a excepcin de la longitud)
pueden ser rotas, pero ponerse al objeto,
Los nombres de objeto deben ser no ms que 30 carcteres. Los carcteres
pueden ser cartas, dgitos, subrayar, dlar, o picadillo.
posteriormente, siempre debe ser especificado con dobles citas, como en los ejemplos en la Figura 11-1. Note
que las mismas restricciones tambin se aplican a nombres de columna.

Aunque los herramientas, como SQL*Plus y Developer SQL convertan
automticamente minsculas a la mayscula a menos que el nombre sea encerrado dentro
de dobles citas; recuerde que los nombres de objeto siempre son el instancia sensible. En
este ejemplo, las dos tablas son completamente diferentes:

SQL> crean la comando ms abajo (c1 fecha); la Comando creada. SQL> crean
la comando "ms abajo" (col1 varchar2 (2)); la Comando creada. SQL>
seleccionan table_name de dba_tables donde
2 ms abajo (table_name) = 'ms abajo'; los
TABLE_NAME------------------------------bajan ms ABAJO



FIGURA 11-1

Utilizacin de dobles citas
para usar nombres no estndar
Clasifique los Objetos de Base de datos Principales
455



Mientras es posible usar nombres minsculos y carcteres no estndar (hasta
espacios), se considera la prctica mala debido a la confusin que esto puede
causar.

Objeto Namespaces
A menudo se dice que el identificador nico para un objeto es el nombre de objeto,
prefijado
con el nombre de esquema. Mientras esto generalmente es verdad, para un
entendimiento lleno del nombramiento, es necesario introducir el concepto de un
namespace. Un namespace define un grupo de tipos de objeto, dentro de los cuales todos
los nombres deben ser nicamente identificados, por esquema y nombre. Los objetos en
namespaces diferente pueden compartir el mismo nombre.
Estos el objeto teclea toda la parte mismo namespace:

Tablas Vistas Secuencias sinnimos Privados

As es imposible crear una vista con el mismo nombre que una comando al menos,
esto
es imposible si ellos estn en el mismo esquema. Y una vez creado, las select de SQL
pueden dirigirse a una vista o un sinnimo como si fuera una comando. El hecho que las
tablas, las vistas, y los sinnimos privados comparten mismo namespace significa que
usted puede alistar varias capas de la abstraccin entre lo que los usuarios ven y las tablas
actuales, que pueden ser inestimables tanto para la seguridad como para simplificar el
desarrollo de aplicaciones. ndices y coacciones cada uno tiene su propio namespace. As
es posible para un ndice tener el mismo nombre que una comando, hasta dentro del
mismo esquema.


EJERCICIO 11-1 Determina Que Objetos son Accesibles a Su Sesin
En este ejercicio, pregunte varias vistas de diccionario de datos como la HORA de usuario
para determinar que
los objetos estn en el esquema de HORA y a que objetos en otros esquemas la HORA
tiene el acceso.

1. Conecte a la base de datos con SQL*Plus o Developer SQL como la HORA de
usuario 2. Determine cuantos objetos de cada tipo estn en el esquema de HORA:
seleccione object_type, cuenta (*) del grupo user_objects por object_type;
La vista de USER_OBJECTS pone en una lista todos los objetos posedos por el
esquema a cual
la sesin corriente es conectada, en esta HORA de instancia.
456
Captulo 11:
La utilizacin de Select de DDL para Crear y Manejar Tablas



3. Determine en cuantos objetos en la HORA total tiene permisos:
seleccione object_type, cuenta (*) del grupo all_objects por object_type;
La vista de ALL_OBJECTS pone en una lista todos los objetos a los cuales el usuario tiene alguna
clase
de acceso.
4. Determine quin posee la HORA de objetos puede ver:
seleccione al dueo distinto de all_objects;




OBJETIVO DE CERTIFICACIN 11.02


Examine la Estructura de Comando
Segn el paradigma de base de datos relacional, una comando es un de dos dimensiones
filas de almacenaje de estructura. Una fila es una o varias columnas. Cada fila en la
comando tiene las mismas columnas, que definido por la estructura de la comando. La
base de datos de Oracle realmente permite variaciones en este modelo de dos
dimensiones. Algunas columnas pueden ser definidas como anid tablas, que ellos
mismos tienen varias columnas. Otras columnas pueden ser de un tipo de datos ilimitado,
como un objeto grande binario, tericamente terabytes grandes. Tambin es posible
definir columnas como objetos. El objeto tendr una estructura interna (posiblemente
basado en columnas) que no es visible como la parte de la comando.
La fase de anlisis de sistemas del desarrollo de sistema lifecycle habr modelado las
estructuras de datos tenan que almacenar la informacin del sistema en la tercera forma
normal, como descrito en el Captulo 1. El resultado es un SET de tablas de dos
dimensiones, cada uno con una clave primaria y conectado el uno con el otro con claves
forneas. La fase de diseo de sistema puede haber puesto en peligro esta estructura,
quizs por denormalizing las tablas o aprovechando capacidades especficas para el
Oracle tales que anidaron tablas. Pero el resultado final, por lo que el developer SQL est
preocupado, es un SET de tablas.
Cada comando existe como una definicin en el diccionario de datos. En la creacin, la
comando habr sido adjudicada una cantidad limitada del espacio (conocido como un
grado) dentro de la base de datos. Esto puede ser pequeo, quizs slo unos kilobytes o
megaoctetos. Como las filas son insertadas en la comando, este grado se llenar. Cuando est
lleno, la base de datos adjudicar (automticamente) otro grado a la comando. Como las
filas son borradas, el espacio dentro de los grados adjudicados se hace disponible para la
reutilizacin. Aun si cada fila es borrada, los grados permanecen asignados a la comando.
Ellos slo sern liberados y devueltos a la base de datos para el uso en otra parte si la
comando es dejada caer o truncada (como descrito en el Captulo 10).





EJERCICIO 11-2 Investiga Estructuras de Comando
Liste en una lista los Tipos de datos Que estn Disponibles para Columnas
457
En este ejercicio, pregunte varias vistas de diccionario de datos como la HORA de
usuario para determinar la estructura de una comando.

1. Conecte a la base de datos con SQL*Plus o Developer SQL como la HORA de
usuario 2. Determine los nombres y los tipos de las tablas que existen en el esquema
de HORA:
seleccione table_name, cluster_name, iot_type de user_tables;
Las tablas arracimadas y las tablas organizadas del ndice (IOTs) son la comando
avanzada
estructuras. En el esquema de HORA, todas las tablas son tablas de montn
estndares excepto COUNTRIES que es un IOT.
3. Use el comando DESCRIBIR de mostrar la estructura de una comando:
describa REGIONS;
4. Recupere la informacin similar preguntando una vista de diccionario de datos:
seleccione column_name, data_type, nullable de user_tab_columns
donde table_name ='REGIONS';




OBJETIVO DE CERTIFICACIN 11.03


Liste en una lista los Tipos de datos Que estn
Disponibles para Columnas
Creando tablas, cada columna debe ser adjudicada un tipo de datos, que determina
la naturaleza de los valores que pueden ser insertados en la columna. Estos tipos de datos
tambin son usados para especificar la naturaleza de los argumentos para procedimientos
PL/SQL y funciones. Seleccionando un tipo de datos, usted debe considerar los datos que
usted tiene que almacenar y las operaciones que usted querr realizar sobre ellos. El
espacio tambin es una consideracin: algunos tipos de datos son la longitud fijada,
tomando el mismo nmero de bytes pase lo que pase los datos estn realmente en ello; los
otros son variables. Si una columna no es poblada, entonces el Oracle no le dar ningn
espacio en absoluto. Si usted ms tarde actualiza la fila para poblar la columna, entonces
la fila se har ms grande, no importa si el tipo de datos es la longitud fijada o la variable.
458
Captulo 11:
La utilizacin de Select de DDL para Crear y Manejar Tablas



Lo siguiente es los tipos de datos para datos alfanumricos:

VARCHAR2 Datos de carcter de longitud variable, de 1 byte a 4 kilobyte.
Los datos
es almacenado en el SET de caracteres de base de datos.
NVARCHAR2 Como VARCHAR2, pero los datos es almacenado en la
alternativa
SET de caracteres de lenguaje nacional, uno de los SETs de caracteres de
Unicode permitidos.
TRABAJO POR HORAS Datos de carcter de longitud fija, de 1 byte a 2
kilobyte, en la base de datos
SET de caracteres. Si los datos no son la longitud de la columna, entonces ser
rellenado de espacios.


Para la conformidad ISO/ANSI, usted puede especificar un tipo de datos
VARCHAR, pero cualquier columna de este tipo ser automticamente
convertida a VARCHAR2.

Lo siguiente es el tipo de datos para datos binarios:

MATERIA PRIMA Datos binarios de longitud variable, de 1 byte a 4
kilobyte. A diferencia del TRABAJO POR HORAS
y tipos de datos de VARCHAR2, los Datos iniciales no son convertidos por Red
de Oracle del SET de caracteres de la base de datos al SET de caracteres del proceso
de usuario en el ESCOGIDO o el otro camino en el INSERCIN.

Lo siguiente es los tipos de datos para datos numricos, toda la longitud variable:

NMERO Los datos numricos, para los cuales usted puede especificar la
precisin y la escala.
La precisin puede extenderse de a 1 a 38, la escala puede extenderse de84 a 127.
FLOTADOR Esto es un tipo de datos ANSI, nmero de punto flotante con la
precisin
de 126 binario (o 38 decimal). El oracle tambin proporciona BINARY_FLOAT y
BINARY_DOUBLE como alternativas.
NMERO ENTERO Equivalente a NMERO, con cero de escala.

Lo siguiente es los tipos de datos para fecha y datos de tiempo, toda la longitud fija:

FECHA Esto es el cero de longitud, si la columna es vaca, o 7 bytes. Todos
Los datos de FECHA incluyen el siglo, el ao, el mes, el da, la hora, el minuto, y
segundo. La variedad vlida es a partir del 1 de enero, 4712 A.C. al 31 de
diciembre, 9999 d. C.
TIMESTAMP Esto es el cero de longitud si la columna es vaca, o hasta 11
bytes,
segn la precisin especificada. Similar HASTA AHORA, pero con la precisin
de hasta 9 decimal coloca para los segundos, 6 sitios en ausencia.
Liste en una lista los Tipos de datos Que estn Disponibles para Columnas
459



TIMESTAMP CON TIMEZONE Como TIMESTAMP, pero los datos
es provisto de un registro guardado del huso horario al cual esto se refiere. La longitud puede ser hasta
13 bytes, segn la precisin. Este tipo de datos deja al Oracle determinar la diferencia entre dos veces
normalizndolos a la hora universal coordinada, aun si los tiempos son para husos horarios diferentes.
TIMESTAMP CON TIMEZONE lOCAL Como TIMESTAMP, pero el
los datos son normalizados al huso horario de base de datos en guardar. Cuando recuperado, es
normalizado al huso horario del proceso de usuario que lo selecciona.
AO DE INTERVALO A MES Usado para registrar un perodo durante aos y
meses entre dos FECHAS o TIMESTAMPs.
DA DE INTERVALO A SEGUNDO Usado para registrar un perodo en das y
segundos entre dos FECHAS o TIMESTAMPs.

Lo siguiente es los tipos de datos de objeto grandes:

CLOB Datos de carcter almacenados en el SET de caracteres de base de datos, talla con eficacia
ilimitado: 4 gigabytes se multiplicaron por el tamao de bloque de base de datos.
NCLOB Como CLOB, pero los datos es almacenado en el ciudadano alternativo
SET de caracteres de lenguaje, uno de los SETs de caracteres de Unicode permitidos.
GOTA Como CLOB, pero datos binarios que no se sometern al SET de caracteres
conversin por Red de Oracle.
BFILE Un localizador que seala a un archivo almacenado en el sistema operativo del
servidor de base de datos. La talla de los archivos es limitada con 4 gigabytes.
MUCHO TIEMPO Datos de carcter en el SET de caracteres de base de datos, hasta 2 gigabytes.
Todo el
la funcionalidad del LARGO (y ms) es proporcionada por CLOB; LONGs no debera ser usado en
una base de datos moderna, y si su base de datos tiene cualquier columna de este tipo ellos deberan
ser convertidos a CLOB. Slo puede haber una columna LARGA en una comando.
MATERIA PRIMA LARGA Como el LARGO, pero datos binarios que no sern convertidos por
Red de oracle. Cualquier columna CRUDA LARGA debera ser convertida a GOTAS.

Lo siguiente es el tipo de datos ROWID:

ROWID Un valor codific en la base 64 que es el indicador a la posicin de a
fila en una comando. Cifrado. Dentro de ello es la direccin fsica exacta. ROWID es un Oracle tipo
de datos patentado, no visible a menos que expresamente no seleccionado.
460
Captulo 11:
La utilizacin de Select de DDL para Crear y Manejar Tablas






Se esperar que todos los examinandos sepan sobre estos tipos de datos:
VARCHAR2, TRABAJO POR HORAS, NMERO, FECHA, TIMESTAMP, INTERVALO, MATERIA
PRIMA, MUCHO TIEMPO, MATERIA PRIMA LARGA, CLOB, GOTA, BFILE, y ROWID. El
conocimiento detallado tambin ser necesario para VARCHAR2, NMERO, y FECHA.



El tipo de datos VARCHAR2 debe ser calificado con un nmero que indica la longitud mxima de la
columna. Si un valor es insertado en la columna que es menos que esto, no es un problema: el valor slo
tomar tanto espacio como esto necesita. Si el valor es ms largo que este mximo, el INSERCIN fallar
con un error. Si el valor es actualizado a un valor ms largo o ms corto, la longitud de la columna (y por lo
tanto la fila s mismo) cambiar en consecuencia. Si no es entrado en absoluto o es actualizado al NULO,
entonces esto no tomar ningn espacio en absoluto.
El tipo de datos de NMERO puede ser opcionalmente calificado con una precisin y
una escala. La precisin establece el nmero mximo de dgitos en el nmero, y la escala
es cuantos de aquellos dgitos son a la derecha de la coma decimal. Si la escala es negativa,
esto tiene el efecto de reemplazar los ltimos dgitos de cualquier nmero insertado con
ceros, que no cuentan hacia el nmero de dgitos especificados para la precisin. Si el
nmero de dgitos excede la precisin, habr un error; si es dentro de la precisin, pero
fuera de la escala, doblarn sobre el nmero (o abajo) al valor ms cercano dentro de la
escala.
El tipo de datos de FECHA siempre incluye el siglo, el ao, el mes, el da, la hora, el
minuto, y segundo - aun si todos estos elementos no son especificados en el tiempo de
insercin. El ao, el mes, y la fecha deben ser especificados; si las horas, los minutos, y
los segundos son omitidos ellos van la falta a la medianoche. La utilizacin de la funcin
de TRUNC en una fecha tambin tiene el efecto de poner las horas, minutos, y segundos
a la medianoche.
El oracle proporciona una variedad de funciones de reparto de tipo para convertir entre
tipos de datos y en algunas circunstancias har el reparto de tipo automtico. La figura
11-2 ilustra la utilizacin tanto el manual como las tcnicas de reparto de tipo
automticas.
En el ejemplo precedente, el primer INSERCIN usa funciones de reparto de tipo para
convertir los datos de carcter entrados a los tipos de datos especificados para las columnas
de comando. El segundo INSERCIN intenta insertar cadenas de caracteres en tres
columnas, pero el insercin todava tiene xito porque el Oracle puede convertir tipos de
datos automticamente si es necesario - pero slo si el formato de los datos es conveniente.
Note que si el valor para la fecha ha sido entrado en cualquier formato adems de
DD-MM-YY, como 'el 18-Nov-07', esto habra fallado.

No confe en el reparto de tipo automtico. Esto puede afectar el rendimiento y
no siempre puede trabajar. El entorno de Oracle es fuertemente tecleado, y los
programadores deberan respetar esto.
Liste en una lista los Tipos de datos Que estn Disponibles para
Columnas
461



FIGURA 11-2

El uso del reparto de tipo
funciona y reparto de tipo
automtico











EJERCICIO 11-3 Investiga los Tipos de datos en el esquema de HORA
En este ejercicio, averige que tipos de datos son usados en las tablas en el esquema de
HORA,
utilizacin de dos tcnicas.

1. Conecte a la base de datos como la HORA de usuario con SQL*Plus o Developer
SQL. 2. Use el comando DESCRIBIR de mostrar los tipos de datos en algunas
tablas:
describa a EMPLOYEES;
describa DEPARTMENTS;
3. Use una pregunta contra una vista de diccionario de datos para mostrar lo que las
columnas arreglan
la comando de EMPLOYEES, como el comando DESCRIBIR iba:
escogido column_name,data_type,nullable,data_length,data_
la precisin, data_scale de user_tab_columns donde table_ llaman
='EMPLOYEES';
La vista USER_TAB_COLUMNS muestra el detalle de cada columna en cada comando
en el esquema del usuario corriente.
462
Captulo 11:
La utilizacin de Select de DDL para Crear y Manejar Tablas




OBJETIVO DE CERTIFICACIN 11.04


Cree una Comando Simple
Las tablas pueden ser almacenadas en la base de datos de varios modos. El ms simple es
la comando de montn.
Un montn es filas de longitud variables en el pedido arbitrario. Puede haber un poco de
correlacin entre el pedido en el cual las filas son entradas y el pedido en el cual ellos son
almacenados, pero esto es un asunto de la suerte. Las estructuras de comando ms
avanzadas, tal como el siguiente, pueden imponer el pedido y la agrupacin en las filas o
forzar una distribucin arbitraria:

ndice organiz tablas Filas de tienda en el pedido de una llave de ndice.
racimos de ndice Pueden las tablas denormalize en relaciones de nio paternal de
modo que
las filas relacionadas de la comando diferente son almacenadas juntos.
racimos de Picadillo Fuerce una distribucin arbitraria de filas, que se
estropearn
cualquier pedido basado en la secuencia de entrada.
tablas Divididas Filas de tienda en estructuras fsicas separadas, las particiones,
la asignacin de filas segn el valor de una columna.

La utilizacin de las estructuras de comando ms avanzadas no tiene ningn efecto en
absoluto en SQL. Cada select SQL ejecutada contra tablas definidas con estas opciones
devolver exactamente los mismos resultados como si las tablas fueran tablas de montn
estndares, entonces el uso de estos aspectos no afectar el cdigo. Pero mientras su uso
es transparente a programadores, ellos realmente dan ventajas enormes en el rendimiento.

La creacin de Tablas con Especificaciones de Columna
Para crear una comando de montn estndar, use esta sintaxis:

CREE LA COMANDO [esquema]. comando [MONTN DE ORGANIZACIN] (columna
datatype [expresin POR DEFECTO] [columna datatype [expresin POR
DEFECTO] .);
Como mnimo, especifique el nombre de tabla (ser creado en su propio esquema, si
usted no especifica de alguien ms) y al menos una columna con un tipo de datos. Hay muy
pocos developeres que alguna vez especifican el MONTN DE ORGANIZACIN, ya
que esto es la falta y es el estndar de industria SQL. La palabra clave POR DEFECTO en
una definicin de columna le deja proporcionar una expresin que generar un valor para
la columna cuando una fila es insertada si un valor no es proporcionado por la select de
INSERCIN.




Considere esta select:

CREE LA COMANDO SCOTT.EMP (EMPNO NMERO (4), ENAME VARCHAR2 (10), FALTA DE FECHA DE
HIREDATE TRUNC (SYSDATE), SAL NMERO (7,2), FALTA NMERO (7,2) DE COMM 0.03);
Cree una Comando Simple
463
Esto crear una comando llamada EMP en el esquema de SCOTT. El uno o el otro usuario SCOTT
l mismo tiene que publicar la select (en cuyo instancia denominar el esquema realmente no sera
necesario), u otro usuario podra publicarlo si le han concedido el permiso de crear tablas en el esquema de
otro usuario. La toma de las columnas uno tras otro:

el EMPNO puede ser 4 dgitos mucho tiempo, sin sitios decimales. Si cualquier decimal es
incluido en una select de INSERCIN, doblarn sobre ellos (o abajo) al nmero entero ms
cercano.
el ENAME puede almacenar cualquier carcter en absoluto, hasta diez de ellos. el HIREDATE
aceptar cualquier fecha, opcionalmente con el tiempo, pero si un valor es
no a condicin de que, la fecha de hoy sea entrada como en la medianoche.
SAL, querida para el sueldo del empleado, aceptar valores numricos con
a 7 dgitos. Si cualquier dgito que ms de 7 sean a la derecha de la coma decimal, ellos sern
acabados.
COMM (para el porcentaje de comisin) tiene un valor por defecto de 0.03, que va
sea entrado si la select de INSERCIN no incluye un valor para esta columna.

La creacin siguiente de la comando, estas select insertan una fila y seleccionan el resultado:

SQL> insertan en scott.emp (empno, ename, sal) valores (1000, 'John', 1000.789); 1 fila creada.
SQL> seleccionan * de emp;
EMPNO ENAME HIREDATE SAL COMM
---------- ---------- --------- ---------- ----------
1000 John 19-NOV-07 1000.79 .03
Note que los valores para las columnas no mencionadas en la select de INSERCIN tienen
sido generado por las clusulas POR DEFECTO. A condicin de que aquellas clusulas no haban sido
definidas en la definicin de comando, las columnas habran sido NULAS. Tambin note que el
doblamiento del valor asegur la SAL.
464
Captulo 11:
La utilizacin de Select de DDL para Crear y Manejar Tablas



La clusula POR DEFECTO puede ser til, pero es de la funcionalidad limitada.
Usted no puede usar una subpregunta para generar el valor por defecto: usted
slo puede especificar valores literales o funciones.

La creacin de Tablas de Subconsultas
Ms bien que crear una comando de nada y luego insertar filas en ello (como en
la seccin anterior), las tablas pueden ser creadas de otras tablas usando una subpregunta.
Esta tcnica le deja crear la definicin de comando y poblar la comando con filas con
slo una select. Cualquier pregunta en absoluto puede ser usada como la fuente tanto de
la estructura de comando como de las filas. La sintaxis es como sigue:

CREE LA COMANDO [esquema]. comando COMO subpregunta;
Todas las preguntas devuelven un SET de dos dimensiones de filas; este resultado es
almacenado como el nuevo
comando. Un ejemplo simple de crear una comando con una subpregunta es:
cree la comando employees_copy como sentencia * de EMPLOYEES;
Esta select crear una comando EMPLOYEES_COPY, que es una copia exacta
de la comando de EMPLOYEES, idntica tanto en la definicin como en las filas esto
contiene. Cualquiera no nulo y coacciones de control en las columnas tambin ser
aplicado a la nueva comando, pero cualquier clave primaria, las coacciones de clave
fornea o nicas no sern. (Hablan de coacciones en el artculo 11.05, "Explique Como las
Coacciones Son Creadas en el momento de la Creacin de Comando.") Esto es porque
estos tres tipos de coacciones requieren ndices que no podran estar disponibles o
deseados.
Lo siguiente es un ejemplo ms complejo:
cree la comando emp_dept como sentencia

los last_name ename, department_name dname, por ah (sysdate - hire_date)
servicio de EMPLOYEES DEPARTMENTS de juntura naturales piden por dname, ename;
Las filas en la nueva comando sern el resultado de afiliarse a las dos tablas de la
fuente,
con dos de las columnas seleccionadas que cambian sus nombres. La nueva columna de
SERVICIO ser poblada con el resultado de la aritmtica que computa el nmero de das
ya que el empleado fue contratado. Las filas sern insertadas en el pedido especificado.
Este pedido no ser mantenido por DML subsecuente, pero, asumiendo los datos de
esquema de HORA estndares, la nueva comando parecer a esto:
SQL> seleccionan * de emp_dept donde rownum <10;
ENAME DNAME SERVICIO----------------------------------------Gietz
Contabilidad 4914




De Haan Kochhar Chen Faviet Popp Sciarra Urman Austin 9 filas seleccionado.




Finanzas de Finanzas de Finanzas de Finanzas Ejecutivas ejecutivas Lo financian
Cree una Comando Simple



5424 6634 3705 4844 2905 3703 3545 3800
465
La subpregunta puede incluir por supuesto un DONDE la clusula para restringir las
filas insert
en la nueva comando. Para crear una comando sin filas, use un DONDE la clusula que
excluir todas las filas:
cree la comando no_emps como sentencia * de EMPLOYEES donde 1=2;
EL DONDE la clusula 1=2 nunca puede volver LA VERDAD ES QUE entonces la
estructura de comando ser
creado listo para el uso, pero ningunas filas ser insertado en el tiempo de creacin.

El cambio de Definiciones de Comando despus de Creacin
Hay muchas modificaciones que pueden ser hechas a una comando despus de la
creacin. Aquellos que
afecte el almacenamiento fsico caen al dominio del administrador de base de datos, pero
muchos cambios son puramente lgicos y sern realizados por los developeres SQL. Lo
siguiente es ejemplos (en su mayor parte que se explica por s mismo):

Adicin de columnas:
cambie comando los emp aaden (job_id nmero);
Modificacin de columnas:
cambie comando los emp modifican (comm falta nmero (4,2) 0.05);
columnas que se Caen:
cambie la comando emp columna de gota comm;
marcar columnas como no usado:
cambie comando los emp ponen la columna no usada job_id;
Renombrar columnas:
cambie comando los emp renombran la columna hiredate al reclutado;
marcar la comando como slo para leer:
cambie comando los emp slo leen;
466
Captulo 11:
La utilizacin de Select de DDL para Crear y Manejar Tablas



Todos estos cambios son comandos de DDL con el incorporado DESTINAN. Ellos
son por lo tanto no reversibles y fallarn si hay una transaccin activa contra la comando.
Ellos tambin son prcticamente instantneos a excepcin de la cada de una columna.
La cada de una columna puede ser un ejercicio entretenido porque ya que cada columna
es dejada caer, cada fila debe ser reestructurada para borrar los datos de la columna. El
SET comando NO USADO, que hace columnas inexistentes por lo que SQL est
referido, a menudo es una mejor alternativa, seguida cuando conveniente de

CAMBIE COMANDO los tablename DEJAN CAER COLUMNAS NO USADAS;

que dejar caer todas las columnas no usadas en un pase por la comando. Marcar una
comando como slo para leer causar errores para cualquiera intent comandos de
DML.
Pero la comando todava puede ser dejada caer. Esto puede ser desconcertante, pero es
absolutamente lgico cuando usted lo estudia detenidamente. Un comando de GOTA
realmente no afecta la comando: esto afecta las tablas en el diccionario de datos que
definen la comando, y stos no son slo para leer.


La cada y el Truncamiento de Tablas
El comando de COMANDO TRUNCADO fue descrito en el Captulo 10: esto tiene el
efecto
de borrar cada fila de una comando, dejando la definicin de comando intacta. La
COMANDO DE GOTA es ms drstica en esto la definicin de comando es borrada
tambin. La sintaxis es como sigue:

COMANDO DE GOTA [esquema]. tablename;
Si el esquema no es especificado, entonces la comando llam tablename su actualmente
registrado
en el esquema ser dejado caer.
Como con un TRUNCADO, SQL no producir una advertencia antes de que la
comando sea dejada caer, y adems, como con cualquier comando de DDL, esto incluye
DESTINAR. Una GOTA es por lo tanto absolutamente no reversible. Pero hay algunas
restricciones: si cualquier sesin (hasta su propio) tiene una transaccin en el progreso
que incluye una fila en la comando, entonces la GOTA fallar, y tambin es imposible
dejar caer una comando que es mandada a en una coaccin de clave fornea definida
para una otra comando. Esta comando (o la coaccin) debe ser dejada caer primero.





EJERCICIO 11-4 Crea Tablas
Cree una Comando Simple
467
En este ejercicio, use al Developer SQL para crear una comando de montn, insertar
algunas filas con una subpregunta, y modificar la comando. Haga algunas modificaciones
ms con SQL*Plus, luego deje caer la comando.

1. Conecte a la base de datos como la HORA de usuario con el Developer SQL. 2.
El clic correcto la rama de Tablas del rbol de navegacin, y hace clic en el New
Table. 3. Llame la nueva comando EMPS, y use el botn Add Column para
establecerlo como
en la ilustracin siguiente:























4. Haga clic en la paleta DDL para ver si la select que ha sido construida. Esto
debera parecer a esto:
CREE COMANDO EMPS
(
NMERO DE EMPNO, ENAME VARCHAR2 (25),
468
Captulo 11:
La utilizacin de Select de DDL para Crear y Manejar Tablas



NMERO DE SUELDO, NMERO DE DEPTNO (4, 0)
);
Vuelva a la paleta de Comando (como en la ilustracin precedente) y haga clic en el OK a
cree la comando.
5. Ejecute esta select:
el insercin en emps selecciona employee_id,last_name,salary,department_id
de EMPLOYEES;
y destine el insercin:
destine;
6. El clic correcto la comando EMPS en el navegante de Developer SQL, haga clic en el Column
y Aada. 7. Defina una nueva columna ALQUILADA, teclee la FECHA, como en la ilustracin
siguiente
abajo; y haga clic en el Apply para crear la columna.





















8. Conecte a la base de datos como la HORA con
SQL*Plus.
Explique Como Coacciones Son Creadas en el momento de Creacin de
Comando



9. Defina una falta para la columna ALQUILADA en la comando EMPS:
cambie comando los emps modifican (falta alquilada sysdate);
469
10. Inserte una fila sin especificar un valor para el ALQUILADO y compruebe que el
nuevo
la fila realmente tiene una fecha ALQUILADA, pero que las otras filas no hacen:
insercin en emps (empno, ename) valores (99, 'Newman');
escogido alquilado, la cuenta (1) de grupo emps por alquilado;
11. Comandoe dejando caer la nueva comando:
comando de gota emps;




OBJETIVO DE CERTIFICACIN 11.05


Explique Como Coacciones Son Creadas en el
momento de Creacin de Comando
Las coacciones de comando son un medio por el cual la base de datos puede hacer cumplir
gobiernos comerciales, y
garantice que los datos se conforman con el modelo de relacin de la entidad determinado
por el anlisis de sistemas que define las estructuras de datos de aplicacin. Por ejemplo,
los analistas comerciales de su organizacin pueden haber decidido que cada cliente y cada
factura deben ser nicamente identificables por el nmero, que ningunas facturas pueden
ser publicadas a un cliente antes de que aquel cliente haya sido creado, y que cada factura
debe tener una fecha vlida y un valor mayor que el cero. stos iban puesto en prctica
creando coacciones de clave primaria en la columna CUSTOMER_NUMBER de la
comando de CLIENTES y la columna INVOICE_NUMBER de la comando de
FACTURAS, una coaccin de clave fornea en la comando de FACTURAS que se
refiere a la comando de CLIENTES, un no - coaccin nula en la fecha columna de la
comando de FACTURAS (el tipo de datos de FECHA asegurar que esto cualquier fecha
es vlida automticamente - esto no aceptar fechas invlidas), y una coaccin de
control en la columna de CANTIDAD en la comando de FACTURAS.
Cuando cualquier DML es ejecutado contra una comando con coacciones definidas, si
el DML viola una coaccin, entonces la select entera ser hecha rodar atrs
automticamente. Recuerde que una select DML que afecta muchas filas podra tener
xito parcialmente antes de que ella golpee un problema de coaccin con una fila
particular. Si la select es la parte de una transaccin de multiselect, entonces las select
que han tenido xito ya permanecern intactas, pero no comprometidas.
470
Captulo 11:
La utilizacin de Select de DDL para Crear y Manejar Tablas



Los Tipos de Coacciones
Los tipos de coaccin apoyados por la base de datos de Oracle son como sigue:
NICO NO las Coacciones de CONTROL DE CLAVE FORNEA DE CLAVE
PRIMARIA NULAS tienen nombres. Es la prctica buena para especificar los nombres
con un estndar
llamando la convencin, pero si ellos no son explcitamente llamados, el Oracle generar
nombres.

Las Coacciones nicas Una coaccin nica denomina una columna (o la
combinacin de columnas) para que el valor debe ser diferente para cada fila en la
comando. De ser basado en una columna sola, esto es conocido como la columna clave. Si
la coaccin es formada de ms de una columna (conocido como una coaccin nica clave
compuesta) las columnas no tienen que ser el mismo tipo de datos o son adyacentes en la
definicin de comando.
Una singularidad de coacciones nicas es que es posible escribir un valor NULO en la
columna (s) clave; en efecto es posible tener cualquier nmero de filas con valores
NULOS en su columna (s) clave. Tan seleccionar filas en una columna clave garantizar
que slo una fila es devuelta - a menos que usted busque el NULO, en cuyo instancia todas
las filas donde las columnas claves son NULAS sern devueltas.
Las coacciones nicas son hechas cumplir por un ndice. Cuando una coaccin nica
es definida, el Oracle buscar un ndice en la columna (s) clave, y si uno no existe ser
creado. Entonces siempre que una fila sea insertada, el Oracle buscar el ndice para ver si
los valores de las columnas claves estn presentes ya: si ellos son, esto rechazar el
insercin. La estructura de estos ndices (conocido como ndices de B*Tree) no incluye
valores NULOS, que es por qu muchas filas con el NULO son permitidas: ellos
simplemente no existen en el ndice. Mientras el primer objetivo del ndice es hacer
cumplir la coaccin, esto tiene un efecto secundario: el mejoramiento del rendimiento si
las columnas claves son usadas en el DONDE las clusulas de las select SQL. Sin embargo,
seleccionar DONDE key_column es NULO no puede usar el ndice porque esto no incluye
el NULLs y siempre causar por lo tanto una exploracin de la comando entera.

No Coacciones Nulas el no la coaccin nula obliga valores a ser entrados en la
columna clave. No las coacciones nulas son definidas por columna: si el requisito
comercial es que un grupo de
Explique Como Coacciones Son Creadas en el momento de Creacin de
Comando
471



las columnas deberan tener todos valores, usted no puede definir un no coaccin nula para
el grupo entero, pero en cambio debe definir un no coaccin nula para cada columna.
Cualquier tentativa de insertar una fila sin especificar valores para el no columnas
reprimidas nulas causa un error. Es posible evitar la necesidad de especificar un valor por la
inclusin de una clusula POR DEFECTO en la columna creando la comando, como hablado
en la seccin anterior en la creacin de tablas.


Las Coacciones de Clave primaria La clave primaria son los medios de localizar
una fila sola en una comando. El paradigma de base de datos relacional incluye un requisito
que cada comando debiera tener una clave primaria, una columna (o la combinacin de
columnas) que puede ser usado para distinguir cada fila. La base de datos de Oracle se desva
del paradigma (como hacen algunas otras realizaciones RDBMS) permitiendo tablas sin
claves primarias.

Las tablas sin claves primarias son posibles, pero no una idea buena. Aun si las
reglas comerciales no requieren la capacidad de identificar cada fila, las claves
primarias a menudo son necesarias para el trabajo de mantenimiento.

La realizacin de una coaccin de clave primaria es, en efecto, la unin de una coaccin
nica y un no coaccin nula. Las columnas claves deben tener valores nicos, y ellos
pueden no ser nulos. Como con coacciones nicas, un ndice debe existir en la columna (s)
reprimida. Si uno no existe ya, un ndice ser creado cuando la coaccin es definida. Una
comando puede tener slo una clave primaria. Trate de crear un segundo, y usted conseguir
un error. Una comando puede tener, sin embargo, cualquier nmero de coacciones nicas y
no columnas nulas, tan si hay varias columnas que el
los analistas comerciales se han decidido debe ser nico
y poblado, uno de stos puede ser designado la clave
primaria y los dems hicieron nico
Una coaccin de clave primaria y no nulo. Un ejemplo podra ser una comando de es
una coaccin nica combinada con a EMPLOYEES, donde direccin de correo electrnico,
seguridad social no coaccin nula. el nmero, y el nmero de empleado deberan ser todos
requerido y nico.

Coacciones de Clave fornea
Una coaccin de clave fornea es definida en la comando de nio en una relacin de nio
paternal. La coaccin denomina una columna (o columnas) en la comando de nio que
equivale a la columna (s) de clave primaria en la comando paternal. Las columnas no
tienen que tener
472
Captulo 11:
La utilizacin de Select de DDL para Crear y Manejar Tablas



los mismos nombres, pero ellos deben ser del mismo tipo de datos. Las coacciones de
clave fornea definen la estructura relacional de la base de datos: las relaciones "muchos
a un" que conectan la comando, en su tercera forma normal.
Si la comando paternal tiene coacciones nicas as como (o en vez de) una coaccin de
clave primaria, estas columnas pueden ser usadas como la base de coacciones de clave
fornea, aun si ellos son nullable.
Como los valores nulos de los permisos de una coaccin nica en la columna reprimida,
tan hace una coaccin de clave fornea. Usted puede insertar filas en la comando de nio
con columnas de clave fornea nulas - aun si no hay una fila en la comando paternal con
un valor nulo. Esto crea filas hurfanas y puede causar la confusin terrible. Por regla
general, todas las columnas en una coaccin nica y todas las columnas en una coaccin
de clave fornea son mejor definidas con no coacciones nulas tambin; esto a menudo ser
un requisito comercial.
El intento de insertar una fila en la comando de nio para la cual no hay ninguna fila
correspondiente en la comando paternal dar un error. Del mismo modo, borrar una fila
en la comando paternal dar un error si hay ya las filas que se refieren a ello en la
comando de nio. Hay dos tcnicas para cambiar este comportamiento. En primer lugar,
la coaccin puede ser creada como EN BORRAR la CASCADA. Esto significa que si
una fila en la comando paternal es borrada, el Oracle buscar la comando de nio todas
las filas correspondientes y los borrar tambin. Esto pasar automticamente. Una
tcnica menos drstica debe crear la coaccin como EN BORRAR el SET NULO. En
este instancia, si una fila en la comando paternal es borrada, el Oracle buscar la comando
de nio todas las filas correspondientes y pondr las columnas de clave fornea al nulo.
Esto significa que las filas de nio sern quedadas hurfanas, pero todava existirn. Si
las columnas en la comando de nio tambin tienen un no coaccin nula, entonces la
eliminacin de la comando paternal fallar.
No es posible dejar caer o truncar la comando paternal en una relacin de clave
fornea, aun si no hay ningunas filas en la comando de nio. Esto todava se aplica si el
EN BORRAR el SET NULO o EN clusulas BORRAR de CASCADA fueron usados.
Una variacin en la coaccin de clave fornea es la coaccin de clave fornea que se
autorefiere. Esto define una condicin donde las filas de nio y padre existen en la misma
comando. Un ejemplo sera una comando de EMPLOYEES, que incluye una columna para el
gerente del empleado. El gerente es un empleado y debe existir en la comando. Tan si el
la clave primaria es la columna
EMPLOYEE_NUMBER, y el gerente es identificado
por una columna MANAGER_NUMBER, entonces
el
Una coaccin de clave fornea en la coaccin de clave fornea declarar que el
valor una comando de nio debe referirse a las columnas de la columna
MANAGER_NUMBER debe de una coaccin nica o de una primaria refirase atrs a
EMPLOYEE_NUMBER vlido. coaccin clave en la comando paternal. Si un empleado es
su propio gerente, entonces la fila
se referira a s.
Explique Como Coacciones Son Creadas en el momento de Creacin de
Comando



Compruebe Coacciones
473
Una coaccin de control puede ser usada para hacer cumplir reglas simples, tal como que
el valor entrado en una columna debe ser dentro de una variedad de valores. La regla debe
ser una expresin que evaluar a VERDADERO o FALSO. Las reglas pueden referirse a
valores absolutos entrados como literales o a otras columnas en la misma fila y pueden
hacer el uso de algunas funciones. Tantas coacciones de control como usted quiere
pueden ser aplicadas a una columna, pero no es posible usar una subpregunta para
evaluar si un valor es permisible o usar funciones, como el SYSDATE.

El no la coaccin nula es de hecho puesta en prctica como una coaccin de
control preconfigurada.

Definicin de Coacciones
Las coacciones pueden ser definidas creando una comando o aadidas a la comando ms
tarde. Cuando
definiendo coacciones en el tiempo de creacin de comando, la coaccin puede ser
definida de acuerdo con la columna a la cual esto se refiere o al final de definicin de
comando. Hay ms flexibilidad a la utilizacin de la tcnica ltima. Por ejemplo, es
imposible definir una coaccin de clave fornea que se refiere a dos columnas, o una
coaccin de control que se refiere a cualquier columna adems de aquel reprimido si la
coaccin es definida en la lnea, pero ambos de stos son posibles si la coaccin es
definida al final de comando.



GUIN & SOLUCIN

Usted disea estructuras de comando para una aplicacin de recursos humanos. Los analistas comerciales han dicho
que cuando un empleado abandona la compaa, su registro de empleado debera ser movido a una comando de
archivo. Pueden las coacciones ayudar? Las transacciones activas bloquean algunas select DDL contra tablas. Si
usted quiere aadir una coaccin o renombrar una columna en una comando ocupada y encontrar que la select
siempre falla con "ORA-00054: el recurso ocupado y adquiere con NOWAIT especificado o el intervalo de espera
expir," qu puede usted hacer?

Probablemente no. Las coacciones son queridas para hacer cumplir reglas comerciales simples: esto puede ser
demasiado complicado. Puede estar bien necesario usar un gatillo de DML en la comando viva, que insertar
automticamente una fila en la comando de archivo siempre que un empleado sea borrado de la comando viva. Los
gatillos pueden hacer el procesamiento mucho ms complicado que una coaccin. Quizs usted no debera hacer esta
clase de la cosa cuando la base de datos est en el uso, pero debera esperar hasta el prximo perodo del tiempo de
indisponibilidad previsto. Sin embargo, si usted realmente tiene que hacer el cambio de prisa, pregunte al
administrador de base de datos a quiesce la base de datos: esto es un proceso que congelar todas las sesiones de
usuario. Si usted es muy rpido, usted puede hacer el cambio entonces unquiesce la base de datos antes de que los
usuarios finales se quejen.
474
Captulo 11:
La utilizacin de Select de DDL para Crear y Manejar Tablas



Para las coacciones que requieren un ndice (las coacciones de clave primaria y
nicas), el ndice ser creado con la comando si la coaccin es definida en el tiempo de
creacin de comando.
Considere estas dos select de creacin de comando (a que los nmeros de lnea han
sido aadidos):

12345678910 11 12 13 14 15 16

cree el departamento de comando (deptno coaccin nmero (2,0) dept_deptno_pk coaccin de clave primaria
dept_deptno_ck control (deptno entre 10 y 90), dname varchar2 (20) coaccin dept_dname_nn no nulo);
cree la comando emp (empno coaccin nmero (4,0) emp_empno_pk clave primaria, ename varchar2 (20) coaccin
emp_ename_nn no nulo, mgr coaccin nmero (4,0) emp_mgr_fk referencias emp (empno), dob fecha,
fecha de hiredate, deptno coaccin nmero (2,0) emp_deptno_fk departamento de referencias (deptno) en
borran el SET nulo, envan varchar2 por correo electrnico (30) coaccin emp_email_uk nico, coaccin
emp_hiredate_ck control (hiredate> = dob + 365*16), coaccin emp_email_ck control ((instr (e-mail,'
')> 0) y (instr (e-mail,'. ')> 0)));
La toma de estas select lnea por lnea:

1. La primera comando creada es el DEPARTAMENTO, querido para pelearse para
cada departamento. 2. DEPTNO no es numrico, 2 dgitos, ningunos decimales. Esto
es la clave primaria de la comando.
La coaccin es llamada DEPT_DEPTNO_PK.
3. Una segunda coaccin aplicada a DEPTNO es un control que lo limita con
nmeros en
la variedad 10 a 90. La coaccin es llamada DEPT_DEPTNO_CK.
4. La columna DNAME es carcteres de longitud variables, con una coaccin
DEPT_
DNAME_NN que lo hace no nullable. 5. La segunda comando creada es EMP,
querido para pelearse para cada empleado. 6. EMPNO es numrico, hasta 4 dgitos sin
decimales. Coaccin EMP_
EMPNO_PK marca esto como la clave primaria de la comando.
7. ENAME es carcteres de longitud variables, con una coaccin
EMP_ENAME_NN
la fabricacin de esto no nullable.
8. MGR es el gerente del empleado, que debe ser un empleado. El Cnel -
el umn es definido del mismo modo como la columna de clave primaria de la
comando de EMPNO. La coaccin EMP_MGR_FK define esta columna como
autoreferirse
Explique Como Coacciones Son Creadas en el momento de Creacin de Comando
475



la clave fornea, entonces cualquier valor entrado debe referirse a una fila ya existente en EMP
(aunque no sea reprimido no a ser nulo, tan puede ser dejado en blanco).
9. DOB, el cumpleaos del empleado, es una fecha y no reprimido.
10. HIREDATE es la fecha el empleado fue contratado y no es obligado. En
lo menos, todava no.
11. DEPTNO es el departamento con el cual el empleado tiene que ver. El
la columna es definida del mismo modo como la columna de clave primaria de la comando de
DEPARTAMENTO de DEPTNO, y la coaccin EMP_DEPTNO_FK hace cumplir una relacin de
clave fornea: no es posible adjudicar a un empleado a un departamento que no existe. Aunque esto
sea nullable.
12. La coaccin EMP_DEPTO_FK es definida adelante como EN BORRAR el SET
NULO, tan si la fila paternal en el DEPARTAMENTO es borrada, todas las filas de nio
correspondientes en EMPNO tendrn el SET de DEPTNO al NULO.
13. El E-MAIL es datos de carcter de longitud variables, y debe ser nico de ser entrado
(aunque pueda ser dejado vaco).
14. Esto define una coaccin de nivel de comando adicional EMP_HIREDATE_CK. El
la coaccin comprueba el uso del trabajo de nio rechazando cualquier fila donde la fecha de
alquiler no es al menos 16 aos ms tarde que el cumpleaos. Esta coaccin no poda ser definida
de acuerdo con HIREDATE, porque la sintaxis no permite referencias a otras columnas a aquel
punto.
15. Una coaccin adicional EMP_EMAIL_CK es aadida a la columna de E-MAIL,
que realiza dos controles en la direccin de correo electrnico. El INSTR funciona la bsqueda del
en el smbolo (y carcteres de punto (.) (que siempre estar presente en una direccin de correo
electrnico vlida); si esto no puede encontrar a ambos, la condicin de control volver FALSO y la
fila ser rechazada.

Los ejemplos precedentes muestran varias posibilidades para definir coacciones en el tiempo de creacin
de comando. Lo siguiente es posibilidades adicionales no cubiertas:

Control de la creacin de ndice para las coacciones de clave primaria y nicas Definicin si la
coaccin debera ser comprobada en el tiempo de insercin (que es
en ausencia) o ms tarde cuando la transaccin es destinada
Select si la coaccin est siendo de hecho hecha cumplir en absoluto (que es el
la falta) o es inhibido

Es posible crear tablas sin coacciones y luego aadirlos ms tarde con un comando de COMANDO
CAMBIAR. El resultado final ser el mismo, pero esta tcnica
476
Captulo 11:
La utilizacin de Select de DDL para Crear y Manejar Tablas



realmente hace el cdigo menos m documentacin, ya que la definicin de comando
completa ser extendida entonces sobre varias select ms bien que estar en uno.


EJERZA 11-5 Trabajo con
Coacciones
Use SQL*Plus o Developer SQL para crear tablas, aadir coacciones, y demostrar su uso.

1. Conecte a la base de datos como la HORA de usuario 2. Cree una comando EMP
como una copia de algunas columnas de EMPLOYEES:

cree la comando emp como

seleccione employee_id empno, last_name ename, department_id deptno

de EMPLOYEES;
3. Cree un DEPARTAMENTO de comando como una copia de algunas columnas de
DEPARTMENTS:

cree el departamento de comando como

seleccione department_id deptno, department_name dname de DEPARTMENTS;
4. Use DESCRIBEN para describir la estructura de las nuevas tablas. Note esto
el no la coaccin nula en ENAME y DNAME ha sido transmitida de las tablas de
la fuente.
5. Aada una coaccin de clave primaria a EMP y al DEPARTAMENTO y una
coaccin de clave fornea
conexin de las tablas:
cambie comando los emp aaden la coaccin emp_pk clave primaria (empno);
cambie departamento de comando aaden la coaccin dept_pk clave primaria
(deptno); cambie comando los emp aaden la coaccin

la clave fornea de dept_fk (deptno) departamento de referencias en borra
el SET nulo;
La ltima coaccin precedente no especifica que columna del DEPARTAMENTO a
referencia; esta falta de voluntad a la columna de clave primaria.
6. Demuestre la eficacia de las coacciones tratando de insertar datos esto
los violar:
insercin en valores de departamento (10, 'Nuevo Departamento');
insercin en valores de emp (9999, 'Nuevo emp', 99); departamento de
comando truncado;





DENTRO DEL EXAMEN
Resumen de certificacin
477


La utilizacin de Select de DDL para Crear y Manejar
Tablas
La select de COMANDO CREAR en efecto puede ser muy compleja. El volumen de Referencia SQL de la
Base de datos de Oracle 11g el SET de documentacin dedica 69 pginas a ello, con ms 85 pginas para
CAMBIAN LA COMANDO (por el contraste, la COMANDO DE GOTA toma slo cuatro pginas). Para
examen
objetivos, slo el conocimiento de la estructura de comando ms simple - la comando de montn - se
requiere, con el conocimiento de los tipos de datos ms bsicos. In - derstanding, definicin, y la
utilizacin de coacciones es necesaria, pero no los mtodos para controlar cuando (o si) ellos son hechos
cumplir.




7. Comandoe dejando caer las tablas. Note que esto debe ser hecho en el pedido
correcto:
comando de gota emp;
departamento de comando de gota;



RESUMEN DE CERTIFICACIN
Las tablas son estructuras de dos dimensiones que consisten en filas de columnas de datos
definidos
tipos. La base de datos de Oracle realmente permite tipos de datos definidos por el
usuario, pero en su mayor parte usted usar los tipos de datos incorporados.
Las tablas pueden ser creadas desde el principio: definicin de cada columna y luego
insertar filas. O bien, las tablas pueden ser creadas usando salida de una pregunta. Esta
tcnica ltima puede definir la comando e insertar filas en un comando, pero hay
limitaciones: ser necesario aadir clave primaria y coacciones nicas ms tarde,
mientras que ellos pueden ser definidos en el tiempo de creacin de comando usando la
antigua tcnica.
Para asistir con hacer cumplir reglas comerciales, las coacciones pueden ser definidas
para columnas. stos mantendrn la integridad de datos hacindolo absolutamente
imposible de insertar datos que rompen las reglas.
478
Captulo 11:
La utilizacin de Select de DDL para Crear y Manejar Tablas




TALADRADORA DE DOS MINUTOS

Clasifique los Objetos de Base de datos Principales
Algunos objetos contienen datos, principalmente tablas e ndices. los objetos de
Programmatic, como procedimientos almacenados y funciones son ejecutables
cdigo.
Los Vistas y sinnimos son objetos que dan el acceso a otros objetos.

Examine la Estructura de Comando
Tablas son estructuras de dos dimensiones, almacenando filas definidas con columnas.
Tablas existen dentro de un esquema. El nombre de esquema con el nombre de tabla hace
un identificador nico.

Liste en una lista los Tipos de datos que estn Disponibles para Columnas
Los tipos de datos de carcter ms comunes son VARCHAR2, NMERO,
y FECHA.
hay muchos otros tipos de datos.

Cree una Comando Simple
Tablas no puede ser creado de nada o con una subpregunta. Despus de la creacin, las
definiciones de columna pueden ser aadidas, dejadas caer, o modificadas. La definicin de
comando puede incluir valores por defecto para columnas.

Explique Como Coacciones Son Creadas en el momento de Creacin de
Comando
Coacciones puede ser definido en el tiempo de creacin de comando o aadido ms tarde.
Una coaccin puede ser el inline definido con su columna o al nivel de comando despus
las columnas. coacciones de nivel de la Comando puede ser ms complejo que aquellos el
inline definido. Una comando slo puede tener una clave primaria, pero puede tener muchas
llaves nicas. Una clave primaria es funcionalmente equivalente al nico ms no nulo.
Una coaccin nica no para la introduccin de muchos valores nulos. coacciones de Clave
fornea definen las relaciones entre tablas.




M PRUEBA
M Prueba
479
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.

Clasifique los Objetos de Base de datos Principales
1. Si una comando es creada sin especificar un esquema, en cul esquema ser? (Elija el mejor
respuesta.) A. Ser una comando quedada hurfana, sin un esquema. B. La creacin fallar. C.
Estar en el esquema SYS. D. Estar en el esquema del usuario que lo crea. E. Estar en el esquema
PBLICO.
2. Varios tipos de objeto comparten mismo namespace, y por lo tanto no pueden tener el mismo nombre
en
el mismo esquema. Cul de los tipos de objeto siguientes no est en mismo namespace que los
dems? (Elija la mejor respuesta.) A. El ndice B. PL/SQL almacen el procedimiento C. Synonym
D. Table E. Ver
3. Cul de estas select fallar porque el nombre de tabla no es legal? (Elija dos respuestas.)
A. cree la comando "SENTENCIA" (col1 fecha); B. crean la comando "minscula" (col1 fecha); C.
crean la tabla number1 (col1 fecha); D. crean la tabla 1number (col1 fecha); E. crean la
actualizacin de comando (col1 fecha);

Examine la Estructura de Comando
4. Qu distingue caractersticas de tablas de montn? (Elija dos respuestas.)
A. Un montn puede almacenar filas de longitud variables. B. Ms de una comando puede
almacenar filas en un montn solo. C. Rows en un montn est en el pedido arbitrario.
480
Captulo 11:
La utilizacin de Select de DDL para Crear y Manejar Tablas



D. No pueden poner ndice a tablas de montn. E. Tables en un montn no tiene una clave primaria.

Liste en una lista los Tipos de datos que estn Disponibles para Columnas
5. Cules de los tipos de datos siguientes es la longitud variable? (Elija todas las respuestas correctas.)
A. GOTA B. TRABAJO POR HORAS C. MUCHO TIEMPO D. EL NMERO E. MATERIA
PRIMA F. VARCHAR2
6. Estudie estas select:
cree la tabla tab1 (c1 fecha nmero (1), c2);
cambie la sesin puso nls_date_format ='dd-mm-yy'; insercin en valores de tab1 (1.1,
'31-01-07');
Tendr xito el insercin? (Elija la mejor respuesta)
A. El insercin fallar porque los 1.1 son demasiado largos. B. El insercin fallar porque 'el
31-01-07' es una cuerda, no una fecha. C. El insercin fallar por ambos motivos A y B. D. al cual el
insercin suceder.
7. Cul de lo siguiente no es apoyado por el Oracle como un tipo de datos interno? (Elija el mejor
respuesta.) A. TRABAJO POR HORAS B. FLOTADOR C. NMERO ENTERO D. CUERDA

Cree una Comando Simple
8. Considere esta select:
cree la tabla t1 como sentencia * de REGIONS donde 1=2;
Cul ser el resultado? (Elija la mejor respuesta.)




A. B.




Habr un error debido a la condicin imposible. Ninguna comando ser creada porque las vueltas de
condicin FALSAS.
M Prueba
481
C. La tabla T1 ser creada pero ningunas filas insertadas porque las vueltas de condicin
FALSAS. D. La tabla T1 ser creada y cada fila en REGIONS insertada porque la
condicin
devuelve un NULO como un filtro de fila.
9. Cuando una comando es creada con una select, como lo siguiente:

cree la comando newtab como sentencia * de la paleta;
habr alguna coaccin en la nueva comando? (Elija la mejor respuesta.)
A. La nueva comando no tendr ningunas coacciones, porque las coacciones no son copiadas
creando
tablas con una subpregunta. B. Todas las coacciones en la PALETA sern copiadas a NEWTAB.
C. Primary key y las coacciones nicas sern copiados, pero no control y no coacciones nulas. D.
Check y no coacciones nulas ser copiado, pero no clave primaria o nica. E. Todas las coacciones
sern copiadas, excepto coacciones de clave fornea.

Explique Como Coacciones Son Creadas en el momento de Creacin de
Comando
10. Qu tipos de la coaccin requieren un ndice? (Elija todo que se aplican.)
A. COMPRUEBE B. NO C NULO. CLAVE PRIMARIA D. NICO
11. Una transaccin consiste en dos select. El primer tiene xito, pero el segundo (que actualiza
varias filas) falla parcialmente por debido a una violacin de coaccin. Qu pasar? (Elija la mejor
respuesta.) A. La transaccin entera ser hecha rodar atrs. B. La segunda select ser hecha rodar
atrs completamente, y el primer ser destinado. C. La segunda select ser hecha rodar atrs
completamente, y el primer permanecer no comprometido. D. Slo una actualizacin que caus la
violacin ser hecha rodar atrs; todo lo dems ser
comprometido.
E. Slo una actualizacin que caus la violacin ser hecha rodar atrs; todo lo dems va
permanezca no comprometido.
482
Captulo 11:
La utilizacin de Select de DDL para Crear y Manejar Tablas



PREGUNTA DE LABORATORIO
Considere este anlisis simple de un sistema de facturacin telefnico:
Un suscriptor es identificado por un nmero de cliente y tambin tiene un nombre y posiblemente uno o
varios telfonos.
Un telfono es identificado por su nmero, que debe ser un nmero entero de 7 dgitos que comienza con
2 o 3, y tambin tiene hacer, una fecha de activacin, y una bandera para si es activo. Los telfonos
inactivos no son adjudicados a un suscriptor; los telfonos activos son.
Para cada llamada, es necesario registrar el tiempo que esto comenz y el tiempo que esto termin. Cree
tablas con coacciones y faltas que pueden ser usadas para poner en prctica este sistema.




M PRUEBAN RESPUESTAS

Clasifique los Objetos de Base de datos Principales
M Respuestas de Prueba
483
1. D. El esquema va la falta al usuario corriente.
A, B, C, E. A es incorrecto porque todas las tablas deben estar en un esquema. El B es
incorrecto porque el
la creacin tendr xito. El C es incorrecto porque el esquema SYS no es un esquema por defecto. El
E es incorrecto porque mientras hay un PBLICO de usuario terico, l no tiene un esquema en
absoluto.
2. A. Indexes tienen su propio namespace.
B, C, D, E. Los procedimientos almacenados, los sinnimos, las tablas, y las vistas existen en
mismo namespace.
3. D, E. El D viola la regla que un nombre de tabla debe comenzar con una carta, y E viola la regla
que un nombre de tabla no pueda ser una palabra reservada. Ambas reglas pueden ser evitadas usando
dobles citas. A, B, C. stos son incorrectos porque todos tendrn xito (aunque A y B no sean
exactamente prudentes).

Examine la Estructura de Comando
4. A, C. Un montn es una comando de filas de longitud variables en el pedido arbitrario.
B, D, E. El B es incorrecto porque una comando de montn slo puede ser una comando. Los D
y E son incorrectos porque
una comando de montn puede (y por lo general va) tener ndices y una clave primaria.

Liste en una lista los Tipos de datos que estn Disponibles para Columnas
5. A, C, D, E, F. Todos stos son tipos de datos de longitud variables.
B. Las columnas de TRABAJO POR HORAS son la longitud fijada.
6. D. Doblarn sobre el nmero a 1 dgito, y la cuerda dar el papel de una fecha.
A, B, C. El doblamiento automtico y el lanzamiento de tipo corregirn los "errores", aunque
idealmente ellos
no ocurrira.
7. D. La CUERDA no es un tipo de datos interno.
A, B, C. TRABAJO POR HORAS, FLOTADOR, y NMERO ENTERO son todos los tipos de
datos internos, aunque no como extensamente
usado como algunos otros.

Cree una Comando Simple
8. C. La condicin slo se aplica a las filas seleccionadas para el insercin, no a la creacin de
comando.
A, B, D. A es incorrecto porque la select es sintcticamente correcta. El B es incorrecto porque el

la condicin no se aplica al DDL, slo al DML. El D es incorrecto porque la condicin excluir todas
las filas de la seleccin.
484
Captulo 11:
La utilizacin de Select de DDL para Crear y Manejar Tablas



9. D. Check y no coacciones nulas no son dependientes de ninguna estructura adems de la comando

a que ellos se aplican y tan pueden ser sin peligro copiados a una nueva comando.
A, B, C, E. A es incorrecto porque no nulo y coaccin de control ser aplicado a nuevo
comando. Los B, C, y E son incorrectos porque estas coacciones necesitan otros objetos (ndices o
una comando paternal) y no copiadas tambin.

Explique Como Coacciones Son Creadas en el momento de Creacin de
Comando
10. C, D. Las coacciones de clave primaria y nicas son hechas cumplir con
ndices.
A, B. Check y no coacciones nulas no confa en ndices.
11. C. Una violacin de coaccin har retroceder un rollo de la select corriente, pero nada ms.
A, B, D, E. A es incorrecto porque todas las select que han tenido xito permanecen intactas. B y
D
son incorrectos porque no hay destinan de algo hasta que sea expresamente solicitado. El E es
incorrecto porque la select entera ser hecha rodar atrs, no slo la fila fracasada.

RESPUESTA DE LABORATORIO
Una solucin posible:

La comando de SUSCRIPTORES:
cree a suscriptores de comando
(nmero de identificacin (4,0) coaccin sub_id_pk clave primaria, coaccin
de nombre varchar2 (20) sub_name_nn no nulo);
La comando de TELFONOS:
cree telfonos de comando
(telno coaccin nmero (7,0) tel_telno_pk coaccin de clave primaria
tel_telno_ck control (telno entre 1000000 y 9999999), falta de fecha activada
sysdate, varchar2 activo (1) coaccin tel_active_nn no coaccin nula
tel_active_ck control (='Y activo' o ='N activo'), coaccin nmero (4,0) de
suscriptor tel_sub_fk suscriptores de referencias, coaccin tel_active_yn
control ((='Y activo' y el suscriptor no son nulos) o (='N activo' y el
suscriptor son nulos)));
Respuesta de laboratorio
485



Esta comando tiene una coaccin en la columna ACTIVA que slo permitir Y o N, segn si hay un
valor en la columna de SUSCRIPTOR. Esta coaccin es demasiado compleja para definir de
acuerdo con la columna, porque esto se refiere a otras columnas. El SUSCRIPTOR, si no nulo, debe
emparejar una fila en SUSCRIPTORES.
La comando de LLAMADAS:
cree llamadas de comando
(telno coaccin nmero (7,0) calls_telno_fk telfonos de referencias, starttime
coaccin de fecha calls_start_nn no nulo, endtime coaccin de fecha calls_end_nn no
nulo, coaccin calls_pk clave primaria (telno, starttime), coaccin calls_endtime_ck
control (endtime> starttime));
Dos coacciones son definidas al nivel de comando, no el nivel de columna. La clave primaria no puede
ser
definido de acuerdo con una columna porque est basado en dos columnas: un telfono puede hacer
muchas llamadas, pero no dos que comienzan al mismo tiempo (al menos, no con la tecnologa
corriente). La coaccin final compara el principio y los fines del tiempo de la llamada y tan no puede ser
definida en la lnea.
Esta pgina intencionadamente se dej en blanco
12
Creacin de Otros
Objetos de
Esquema









OBJETIVOS DE CERTIFICACIN


12.01
Cree Vistas Simples y Complejas
12.05
Cree y Mantenga ndices
12.02
Recupere Datos de Vistas

Taladradora de dos minutos
12.03
Cree Sinnimos Privados y Pblicos
Q&A
M Prueba
12.04
Cree, Mantenga, y Use Secuencias
















Copyright 2008 por El Clic de McGraw-Hill Companies, Inc aqu para trminos de uso.
488
Captulo 12:
Creacin de Otros Objetos de Esquema
Hasta ahora, la mayor parte de las
select SQL usadas en este libro se han dirigido a tablas. Esto parece razonable: los comandos de SQL
se relacionan con datos, y los datos son almacenados en tablas. En la prctica, la mayor parte de
usuarios nunca publican SQL que se dirige a tablas: ellos publican SQL que se dirige a vistas o
sinnimos. Las vistas y los sinnimos no almacenan datos; ellos proporcionan una capa de abstraccin
entre los usuarios y los datos. Como tablas, las vistas, y los sinnimos comparten mismo namespace, los
usuarios nunca tienen que ser conscientes de que ellos se dirigen.

Las secuencias son un mecanismo para publicar nmeros nicos. En muchas bases de
datos, los valores de clave primaria son definidos como un nmero nico. Una secuencia
puede publicar tales nmeros a peticin, sin programadores que tienen que preocuparse
de si ellos realmente son nicos. La estructura de una secuencia significa que cientos de
nmeros pueden ser, si es necesario, publicados cada segundo sin cualquier cuestin de
rendimiento.
Se dice a veces que la direccin de ndice miente en el dominio de administracin de
base de datos, no el dominio del developer SQL. Por esta razn, el tratamiento aqu es
muy breve. Pero si la direccin de ndice es la parte del trabajo del developer, todos los
developeres deben entender el objetivo y diseo de ndices. En muchos instancias la
estrategia de indexacin es crucial para el rendimiento adecuado: acierte en ello, y las
ventajas sern enormes; consgalo incorrecto, y los resultados pueden ser desastrosos. El
uso de ndices es transparente, pero si los programadores son conscientes de ellos ellos
pueden asegurar que su cdigo ser capaz de hacer el mejor uso de que ndices estn
disponibles y aconsejan sobre que ndices deberan ser creados.



OBJETIVO DE CERTIFICACIN 12.01


Cree Vistas Simples y Complejas
Al usuario, una vista parece a una comando: una estructura de dos dimensiones de filas de
las columnas, contra las cuales el usuario puede ejecutar select SENTENCIAS y DML.
El programador sabe la verdad: una vista es slo una select SENTENCIA. Cualquier
select SENTENCIA devuelve un SET de dos dimensiones de filas. Si la select
SENTENCIA es guardada como una vista, entonces siempre que los usuarios pregunten
o actualicen filas en la vista (bajo la impresin que es la comando), las carreras de select,
y el resultado es presentado a usuarios como si fuera una comando. La select
SENTENCIA en la cual una vista est basada puede ser algo. Esto puede afiliarse a
tablas, realizar agregaciones, o hacer clases; absolutamente algo que sea legal en el
comando ESCOGIDO puede ser usado. Sin embargo, si la vista es compleja,
Cree Vistas Simples y Complejas
489



entonces las select slo SENTENCIAS pueden ser ejecutadas contra ello. Una vista
simple es el que que puede ser dirigido por select DML as como ESCOGIDO. Como
podra ser esperado, las vistas simples estn basadas en select SENTENCIAS
relativamente simples; las vistas complejas estn basadas en select ms complicadas.




Las vistas comparten el mismo sintcticamente correcto. Pero
operaciones de DML namespace como tablas: en todas partes esto a no siempre tendr
xito. el tablename puede ser usado, un viewname tambin es


Por qu Vistas de Uso en Absoluto?
No es por lo general una idea buena de dejar a usuarios finales soltar en tablas. Los
motivos posibles incluyen:

Seguridad. Simplificacin de usuario SQL. Prevencin de error.
Fabricacin de datos comprensibles. La comando y los nombres de columna a
menudo son largos y
bastante sin sentido. La vista y sus columnas pueden ser mucho ms obvias.
Rendimiento.

Los ejemplos de vistas con cada uno de estos objetivos siguen.

Las vistas para Hacer cumplir la Seguridad que puede ser que los usuarios
slo deberan ver ciertas filas o columnas de una comando. Hay varios modos de hacer
cumplir esto, pero una vista a menudo es la ms simple. Considere la comando
HR.EMPLOYEES. Esto incluye detalles personales que no deberan ser visibles para
proveer de personal fuera del departamento de personal. Pero el personal de finanzas
tendr que ser capaz de ver la informacin de presupuesto. Esta vista va depersonalize los
datos:
cree la hora emp_fin de vista como sentencia
hire_date,job_id,salary,commission_pct,department_id de hr.employees;
Note el uso de calificadores de esquema para la comando como la fuente de los datos
(a menudo
referido como la base o la comando de detalle) y la vista: las vistas son objetos de
esquema y pueden dibujar sus datos de tablas en el mismo esquema o en otros esquemas.
Si el esquema no es especificado, estar por supuesto en el esquema corriente.
490
Captulo 12:
Creacin de Otros Objetos de Esquema



El personal de finanzas puede ser dado entonces el permiso de ver la vista, pero no la
comando y puede publicar select, como esto:
seleccione * de emp_fin donde department_id=50;
Ellos slo vern las cinco columnas que arreglan la vista, no el restante
columnas de EMPLOYEES con la informacin personal. La vista puede ser afiliada a
otras tablas o agregada como si fuera una comando:
seleccione department_name, sume (sueldo) de DEPARTMENTS la juntura natural
emp_fin
grupo por department_name;
Un SET bien construido de vistas puede poner en prctica una estructura de seguridad
entera dentro de
la base de datos, dando el acceso de usuarios a datos que ellos tienen que ver ocultando
datos que ellos no tienen que ver.

Las vistas para Simplificar al Usuario SQL ser mucho ms fcil para
usuarios preguntar datos si el trabajo duro (como junturas o agregaciones) es hecho para
ellos por el cdigo que define la vista. En el ltimo ejemplo, el usuario tuvo que escribir el
cdigo que se afili a la vista de EMP_FIN a la comando de DEPARTMENTS y sum los
sueldos por departamento. Esto podra ser todo hecho en una vista:
cree la vista dept_sal como
seleccione d.department_name, sume (e.salary) de DEPARTMENTS d abandon
a EMPLOYEES de juntura externos e en d.department_ id=e.department_id
grupo por la comando de department_name por department_name;
Entonces los usuarios pueden seleccionar de DEPT_SAL sin tener que saber algo
sobre junturas, o hasta como clasificar los resultados:
seleccione * de dept_sal;
En particular, ellos no tienen que saber como asegurarse que todos los
DEPARTMENTS
son puestos en una lista, hasta aquellos sin EMPLOYEES. El ejemplo en la seccin
anterior habra perdido stos.

Las vistas para Prevenir Errores es imposible impedir a usuarios hacer errores,
pero vistas bien construidas pueden prevenir algunos errores de provenir de una carencia
del entendimiento de como los datos deberan ser interpretados. La seccin anterior ya
introdujo este concepto construyendo una vista que pondr todos los DEPARTMENTS
en una lista, independientemente de si ellos actualmente hacen adjudicar al personal a
ellos.
Cree Vistas Simples y Complejas
491



Una vista puede ayudar a presentar datos en un camino que es inequvoco. Por ejemplo, muchas
aplicaciones nunca realmente borran filas. Considere esta comando:
cree la comando emp (empno coaccin de nmero emp_empno_pk clave primaria,
ename varchar2 (10), deptno nmero, varchar2 activo (1) 'Y' por defecto);
La columna ACTIVA es una bandera que indica que el empleado es empleado actualmente
y va la falta a 'Y' cuando una fila es insertada. Cuando un usuario, por el interface de usuario, "borra" a un
empleado, la select SQL subyacente ser una actualizacin que se pone ACTIVO a 'N'. Si usuarios que no
son conscientes de esta pregunta la comando, ellos pueden interpretar mal con severidad los resultados. A
menudo ser mejor darles el acceso a una vista:
cree la vista current_staff como sentencia * de emp donde activo ='Y';
Las preguntas dirigidas a esta vista no pueden ver posiblemente a EMPLOYEES "borrados".

Las vistas para Hacer Datos Comprensibles Las estructuras de datos en una base de datos
sern tablas normalizadas. No es razonable esperar que usuarios entiendan estructuras normalizadas. Para
tomar un ejemplo de la suite de Negocio electrnico de Oracle, un "cliente" en el mdulo de Cuentas por
cobrar es de hecho una entidad que consiste en la informacin distribuida a travs de las tablas
HZ_PARTIES, HZ_PARTY_SITES, HZ_CUST_ACCTS_ALL, y muchos ms. Todas estas tablas son
conectadas por relaciones de clave primaria a clave fornea, pero stos no son definidos en ningn
identificador visible a usuarios (como un nmero de cliente): ellos estn basados en columnas los usuarios
nunca ven que tienen valores generados internamente de secuencias. Las formas y los informes solan
recuperar la informacin de cliente nunca se dirigen a estas tablas directamente; todos ellos trabajan a
travs de vistas.
As como presentando datos a usuarios en una forma comprensible, el uso de vistas para proporcionar
una capa de abstraccin entre los objetos vistos por usuarios y los objetos almacenados dentro de la base de
datos puede ser inestimable para el trabajo de mantenimiento. Se hace posible replantear las estructuras de
datos sin necesidad tener de codificar de nuevo la aplicacin. Si las tablas son cambiadas, entonces el ajuste
de las definiciones de vista puede hacer cualquier cambio en el SQL y cdigo de PL/SQL innecesario. Esto
puede ser una tcnica potente para hacer aplicaciones porttiles a travs de bases de datos diferentes.

Las vistas para el Rendimiento La select SENTENCIA detrs de una vista puede ser optimizada
por programadores, de modo que los usuarios no tengan que preocuparse de la afinacin del cdigo. Pueden
haber muchas posibilidades para conseguir el mismo resultado, pero algunas tcnicas pueden ser mucho
ms lentas que otros. Por ejemplo, afilindose a dos tablas hay por lo general una opcin entre el bucle
anidado
492
Captulo 12:
Creacin de Otros Objetos de Esquema



nase y la juntura de picadillo. Una juntura de bucle anidada usa un ndice para ponerse a
filas individuales; una juntura de picadillo lee la comando entera en la memoria. La
opcin entre los dos ser dependiente del estado de los datos y los recursos de hardware
disponibles.
Tericamente, uno siempre puede confiar en el Oracle optimizer para calcular la mejor
manera de ejecutar una select SQL, pero hay instancias donde lo consigue incorrecto. Si
los programadores saben qu tcnica es la mejor, ellos pueden instruir el optimizer. Este
ejemplo fuerza el uso de la tcnica de picadillo:
cree la vista dept_emp como
seleccione / * + USE_HASH (DEPARTMENTS de EMPLOYEES) */department_name,
last_name de DEPARTMENTS EMPLOYEES de juntura naturales;
Siempre que los usuarios pregunten la vista de DEPT_EMP, la juntura ser realizada
por
escanear las tablas de detalle en memoria. Los usuarios no tienen que saber la sintaxis
para forzar el uso de este mtodo de juntura. Usted no tiene que saberlo, tampoco: esto
est ms all del alcance del OCP SQL el examen, pero el concepto de la afinacin con el
diseo de vista debera ser conocido.

Vistas simples y Complejas
Con objetivos prcticos, la comandoacin de una vista como simple o complejo est
relacionada con
si las select DML pueden ser ejecutadas contra ello: las vistas simples pueden aceptar
select DML, las vistas complejas no pueden. Las definiciones estrictas son como sigue:

Una vista simple dibuja datos de una comando de detalle, no usa ningunas
funciones, y hace
ninguna agregacin. Una vista compleja puede afiliarse a tablas de detalle, usar
funciones, y realizar agregaciones.

La aplicacin de estas definiciones muestra que de las cuatro vistas usadas como
ejemplos en
la seccin anterior, el primer y el tercer son simples y los segundos y cuarto son
complejos.
A menudo no es posible ejecutar INSERCIN, ACTUALIZACIN, o BORRAR
manda contra una vista compleja. Trazar un mapa de las filas en la vista atrs a las filas en
la comando (s) de detalle no siempre puede ser establecido en una base de uno a uno, que
es necesaria para operaciones DML. Es por lo general posible ejecutar DML contra una
vista simple, pero no siempre. Por ejemplo, si la vista no incluye una columna que tiene
un NO coaccin NULA, luego un INSERCIN a travs de la vista no puede tener xito
(a menos que la columna tenga un valor por defecto). Esto puede producir un efecto
desconcertante porque el mensaje de error se referir a una comando y una columna que
no son mencionados en la select, como demostrado en el primer ejemplo en la Figura
12-1.
Cree Vistas Simples y Complejas
493



FIGURA 12-1

DML contra vistas simples y
complejas













La primera vista en la cifra, RNAME_V, realmente se conforma con la definicin de
una vista simple, pero un INSERCIN no puede ser realizado por ello porque esto pierde
una columna obligatoria. La segunda vista, RUPPERNAME_V, es una vista compleja
porque incluye una funcin. Esto hace un INSERCIN imposible, porque no hay ningn
modo que la base de datos pueda calcular lo que realmente debera ser insertado: esto no
puede invertir al ingeniero el efecto de la funcin SUPERIOR de una moda determinista.
Pero BORRAR tiene xito, porque no es dependiente de la funcin.

Por regla general, las vistas simples aceptan DML, las vistas complejas no hacen.
Pero hay excepciones.

CREE VISTA, CAMBIE VISTA, y VISTA DE GOTA
La sintaxis para crear una vista es como sigue: CREE [O REEMPLACE] [FUERZA |
NOFORCE] VISTA [esquema]. viewname [(alias [alias] .)] COMO subpregunta [CON
OPCIN DE CONTROL [COACCIN constraintname]] [CON LEDO SLO
[COACCIN constraintname]];
Note que las vistas son objetos de esquema. No hay ninguna razn de no hacer poseer
una vista
por un usuario que se refiere al detalle las tablas posedas por otro usuario. En ausencia, la
vista va
494
Captulo 12:
Creacin de Otros Objetos de Esquema



sea creado en el esquema corriente. Las palabras claves opcionales, ninguna de las
cuales ha sido usada en los ejemplos hasta ahora, son como sigue:

O REEMPLAZAN Si la vista ya existe, ser dejada caer antes de ser
creado.
FUERZA o NOFORCE La palabra clave de FUERZA crear la vista aun si
la comando (s) de detalle en la subpregunta no existe. NOFORCE es la falta y
causar un error si la comando de detalle no existe.
CON OPCIN DE CONTROL Esto debe hacer con DML. Si la subpregunta
incluye un DONDE clusula, entonces esta opcin prevendr la introduccin de
filas que no seran vistas en la vista o actualizaciones que haran que una fila
desaparezca de la vista. En ausencia, esta opcin no es habilitada, que puede dar
resultados desconcertantes.
CON LEDO SLO Previene cualquier DML a travs de la vista.
COACCIN constraintname Esto puede ser usado para llamar el CON
COMPRUEBE LA OPCIN y CON EL LEDO SLO restricciones de modo que
los mensajes de error cuando las restricciones hacen que select fallen, sean ms
comprensibles.

Adems, un SET de nombres de alias puede ser proporcionado a los ttulos de las
columnas de la vista. Si no a condicin de que, las columnas sean nombradas por las
columnas de la comando o con aliases especificados en la subpregunta.
La figura 12-2 primero demuestra el efecto de crear una vista, R1, que permite la
introduccin de filas que no pueden ser vistas. La segunda vista, LOC1800, usa CON LA
OPCIN DE CONTROL de impedir a esto pasar.

FIGURA 12-2

Uso de CON OPCIN DE
CONTROL de prevenir
comportamiento aparentemente
anmalo
Cree Vistas Simples y Complejas
495



El uso principal del comando de VISTA CAMBIAR debe compilar la vista. Una vista
debe ser compilada con xito antes de que ella pueda ser usada. Cuando una vista es creada,
el Oracle comprobar que las tablas de detalle y las columnas necesarias en las cuales la
vista est basada existen. Si ellos no hacen, la compilacin falla y la vista no ser creada -
a menos que usted use la opcin de FUERZA. En este instancia, la vista ser creada, pero
ser inservible hasta las tablas o columnas a las cuales se refiere son creados y la vista es
con xito compilada. Cuando una vista invlida es preguntada, el Oracle intentar
compilarla automticamente. Si la compilacin tiene xito porque el problema ha sido
fijado, el usuario no sabr que haba alguna vez un problema - salvo que su pregunta puede
tomar un poco ms largo que de costumbre. En trminos generales, usted debera compilar
a mano vistas para asegurarse que ellos realmente compilan con xito, ms bien que tener
usuarios descubren errores.
La figura 12-3 muestra el ciclo de error y correccin. En la cifra, la primera select crea
una vista EX_STAFF esto se refiere a a
LOS EMPLOYEES LEFT_DATE de columna, que no existe. La select no falla porque la
creacin es forzada, pero esto realmente da una advertencia. Una tentativa de seleccionar
de la vista falla. Despus de aadir la columna necesaria a la comando de detalle, el
ESCOGIDO tiene xito. Esto es porque la vista fue compilada con xito automticamente.
Finalmente, hay una compilacin manual de la vista. Habra sido la mejor prctica para
hacer esto inmediatamente despus de aadir la columna ausente.
No es posible ajustar las definiciones de columna de una vista despus de la creacin en
el modo que las columnas de una comando pueden ser cambiadas. La vista debe ser dejada
caer y recreada. El comando de GOTA es como sigue:
DEJE CAER VISTA [esquema]. viewname; usando el O REEMPLAZAN palabras
claves con el comando de VISTA CREAR, el
la vista ser automticamente dejada caer (si existe en absoluto) antes de ser creado.

FIGURA 12-3

Como corregir errores y
compilar una vista
496
Captulo 12:
Creacin de Otros Objetos de Esquema



EJERCICIO 12-1 Crea
Vistas
En este ejercicio, usted crear algunas vistas simples y complejas, usando datos en el
esquema de HORA. SQL*Plus o el developer SQL pueden ser usados.

1. Conecte a su base de datos como la HORA de usuario 2. Cree vistas en los
EMPLOYEES y tablas de DEPARTAMENTO que borran
toda la informacin personal:
cree la vista emp_anon_v como
seleccione hire_date, job_id,salary,commission_pct,department_id de
EMPLOYEES; cree la vista dept_anon_v como sentencia
department_id,department_name,location_id de DEPARTMENTS;
3. Cree una vista compleja que se afiliar y agregar las dos vistas simples.
Note que no hay ninguna razn de no tener vistas de vistas.
cree la vista dep_sum_v como
seleccione e.department_id, personal de cuenta (1), sume sueldos
(e.salary), d.department_name de emp_anon_v los e se afilian a
dept_anon_v d en el grupo e.department_id=d.department_id por
e.department_id, d.department_name;
4. Confirme que la vista trabaja preguntndolo, como en la ilustracin siguiente:





OBJETIVO DE CERTIFICACIN 12.02


Recupere Datos de Vistas
Recupere Datos de Vistas
497
Las preguntas pueden ser dirigidas a vistas exactamente como si a tablas. Vistas y tablas
comparta mismo namespace, tan sintcticamente no hay absolutamente ninguna
diferencia en las select SENTENCIAS. El usuario tiene que no tener ningn
conocimiento de cual tipo del objeto l se dirija.
Considere esta vista:
cree la vista dept_emp como
seleccione department_name, last_name de DEPARTMENTS acompaan a
EMPLOYEES que usan (department_id);
La pregunta siguiente:
seleccione * de dept_emp donde department_name ='Marketing';
cuando analizado por el Oracle para la ejecucin se har:
seleccione * de
(seleccione department_name, last_name de DEPARTMENTS acompaan a
EMPLOYEES que usan (department_id)) donde department_name ='Marketing';
Usted raramente consigue algo para nada (tratando con Oracle Corporation),
y el uso de vistas seguramente no hace de ningn modo reducen el trabajo que la base de
datos tiene que hacer. Las vistas pueden reducir, sin embargo, considerablemente el trabajo
que los usuarios tienen que hacer.


EJERZA 12-2 Vistas de
Uso
En este ejercicio, usted usar las vistas creadas en el Ejercicio 12-1 para select
SENTENCIAS y DML. SQL*Plus o el developer SQL pueden ser usados.

1. Conecte a su base de datos como la HORA de usuario 2. Inserte un nuevo
departamento a travs de la vista de DEPT_ANON_V e intente a
inserte a un empleado por EMP_ANON_V:
insercin en valores de DEPT_ANON_V (99, 'Departamento Temp',
1800);
insercin en valores de emp_anon_v (sysdate, 'AC_MGR', 10000,0,99);
498
Captulo 12:
Creacin de Otros Objetos de Esquema



El insercin en EMP_ANON_V fallar debido a la ausencia de valores obligatorios. Usted ser, sin
embargo, capaz de hacer esta actualizacin por ello:
actualice salary=salary*1.1 de SET de emp_anon_v;
Entonces el rollo apoya los cambios:
rollback;
3. Averige el sueldo medio del departamento con el sueldo medio ms alto,
preguntando la comando de EMPLOYEES:
mximo escogido (avg_sal) de
(seleccione el AVG (SUELDO) avg_sal del grupo de EMPLOYEES por department_id);
y encuentre la misma informacin de la vista de DEP_SUM_V, que es mucho
pregunta ms simple:
mximo escogido (sueldos / personal) de dep_sum_v;




OBJETIVO DE CERTIFICACIN 12.03


Cree Sinnimos Privados y Pblicos
Un sinnimo es un nombre alternativo para un objeto. Si los sinnimos existen para
objetos,
entonces cualquier select SQL puede dirigirse al objeto por su nombre actual, o por su
sinnimo. Esto puede parecer trivial. No es. El uso de sinnimos significa que una
aplicacin puede funcionar para cualquier usuario, independientemente del cual el
esquema posea las vistas y tablas o hasta en cual base de datos las tablas residen.
Considere esta select:
seleccione * de hr.employees@prod;
El usuario que publica la select debe saber que la comando de EMPLOYEES es
poseda por
el esquema de HORA en la base de datos identificada por el GOLPECITO de enlace de
base de datos (no se preocupan de enlaces de base de datos - ellos son un medio de tener
acceso a objetos en una base de datos adems de esto en el cual usted es registrado). Si un
sinnimo pblico ha sido creado con esta select:
cree el sinnimo pblico emp para hr.employees@prod;
entonces todo el usuario (cualquier usuario!) tengo que entrar es lo siguiente:
seleccione * de emp;
Cree Sinnimos Privados y Pblicos
499



Esto da tanto la independencia de datos como la transparencia de posicin. Las tablas y
las vistas pueden ser renombradas o trasladadas sin necesidad tener alguna vez de cambiar el
cdigo; slo los sinnimos tienen que ser ajustados.
As como select SENTENCIAS, las select de DML pueden dirigirse a sinnimos como si
ellos fueran el objeto al cual ellos se refieren.
Los sinnimos privados son objetos de esquema. Ellos deben estar en su propio esquema,
o ellos deben ser calificados con el nombre de esquema. Los sinnimos pblicos existen
independientemente de un esquema. Un sinnimo pblico puede ser mandado a por
cualquier usuario a quien el permiso haya sido concedido verlo sin la necesidad de calificar
a l con un nombre de esquema. Los sinnimos privados deben ser un nombre nico dentro
de su esquema. Los sinnimos pblicos pueden tener el mismo nombre que objetos de
esquema. Cuando la ejecucin de select que objetos de direccin sin un calificador de
esquema, el Oracle buscar primero el objeto en el esquema local, y slo si no puede ser
encontrado lo va buscar un sinnimo pblico. As, en el ejemplo precedente, si el usuario
resultara poseer una comando llamada EMP sera esto que l vera - no la comando seal a
por el sinnimo pblico.
La sintaxis para crear un sinnimo es como sigue: CREE el sinnimo de SINNIMO
[PBLICO] PARA el objeto; tendrn que haber concedido a un usuario el permiso de crear
sinnimos privados
y permiso adicional de crear sinnimos pblicos. Por lo general, slo el administrador de
base de datos puede crear (o gota) sinnimos pblicos. Esto es porque su presencia (o
ausencia) afectar a cada usuario.




El "pblico" en "pblico con un nombre de esquema. Esto no significa que el
sinnimo" significa que no es un esquema cada uno tiene permisos contra ello. opngase y
no puede ser por lo tanto prefijado


Dejar caer un sinnimo:
GOTA [PBLICO] sinnimo de SINNIMO; Si el objeto al cual un sinnimo se refiere (la
comando o vista) es dejado caer, el sinnimo
sigue existiendo. Cualquier tentativa de usarlo devolver un error. A este respecto, los
sinnimos se comportan del mismo modo como vistas. Si el objeto es recreado, el sinnimo
debe ser compilado de nuevo antes del uso. Como con vistas, esto pasar automticamente la
prxima vez que el sinnimo es dirigido, o puede ser hecho explcitamente con
CAMBIE sinnimo de SINNIMO COMPILAN;
500
Captulo 12:
Creacin de Otros Objetos de Esquema



EJERCICIO 12-3 Crea y Sinnimos de Uso
En este ejercicio, usted crear y usar sinnimos privados, usando objetos en la HORA
esquema. SQL*Plus o el developer SQL pueden ser usados.

1. Conecte a su base de datos como la HORA de usuario 2. Cree sinnimos para las
tres vistas creadas en el Ejercicio 12-1:
cree el sinnimo emp_s para emp_anon_v;
cree el sinnimo dept_s para dept_anon_v; cree el sinnimo dsum_s para
dep_sum_v;
3. Confirme que los sinnimos son idnticos al objeto subyacente:
describa emp_s;
describa emp_anon_v;
4. Confirme que los sinnimos trabajan (hasta hasta el punto de producir el mismo
errores) ejecutando las select en Ejercicios 12-1 y 12-2 contra los sinnimos en vez
de las vistas:
seleccione * de dsum_s;
insercin en valores de dept_s (99, 'Departamento Temp', 1800);
insercin en valores de emp_s (sysdate, 'AC_MGR', 10000,0,99);
actualice salary=salary*1.1 de SET de emp_s; rollback; mximo escogido
(sueldos / personal) de dsum_s;
5. Deje caer dos de las vistas:
cigase visualizan emp_anon_v;
cigase visualizan dept_anon_v;
6. Pregunte la vista compleja que est basada en las vistas dejadas caer:
seleccione * de dep_sum_v;
Note que la pregunta falla.
7. Tentativa de compilar de nuevo la vista rota:
cambie vista los dep_sum_v compilan;
Esto fallar tambin.
8. Deje caer la vista de DEP_SUM_V:
cigase visualizan dep_sum_v;
Cree, Mantenga, y Use Secuencias
501



9. Pregunte el sinnimo para una vista dejada caer:
seleccione * de emp_s;
Esto fallar.
10. Compile de nuevo el sinnimo roto:
cambie sinnimo los emp_s compilan;
Note que esto no da un error, pero ejecuta de nuevo la pregunta del paso 9. Es
definitivamente todava roto.
11. Comandoe dejando caer los sinnimos:
sinnimo de gota emp_s;
sinnimo de gota dept_s; sinnimo de gota dsum_s;




OBJETIVO DE CERTIFICACIN 12.04


Cree, Mantenga, y Use Secuencias
Una secuencia es una estructura para generar valores enteros nicos. Slo una sesin
puede
lea el siguiente valor y as oblguelo a incrementar. Esto es un punto de adaptacin,
entonces cada valor generado ser nico.
Las secuencias son un instrumento inestimable para generar claves primarias. Muchas
aplicaciones necesitarn valores de clave primaria automticamente generados. Los
ejemplos en el procesamiento de informacin comercial diario son nmeros de factura o
nmeros de pedido: los analistas comerciales habrn declarado que cada factura y pedido
deben tener un nmero nico, que debera incrementar continuamente. Otras
aplicaciones pueden no tener tal requisito en trminos comerciales, pero ser necesario
hacer cumplir la integridad relacional. Considere un sistema de facturacin telefnico: en
los trminos de negocio el identificador nico de un telfono es el nmero de telfono
(que es una cuerda) y aquella de una llamada ser el nmero de telfono de la fuente y el
tiempo que la llamada comenz (que es un timestamp). Estos tipos de datos son
innecesariamente complejos para usar como claves primarias para los altos volmenes que
pasan por un sistema de conmutacin telefnico. Mientras esta informacin ser
registrada, ser mucho ms rpido para usar columnas numricas simples para definir las
claves forneas y primarias. Los valores en estas columnas pueden ser la secuencia basada.
502
Captulo 12:
Creacin de Otros Objetos de Esquema



FIGURA 12-4

Uso de una secuencia por dos
sesiones simultneamente












El mecanismo de secuencia es independiente de tablas, el mecanismo de cierre de fila,
y destine o procesamiento de rollback. Esto significa que una secuencia puede publicar
miles de valores nicos un lejano del minuto ms rpido que cualquier implicacin de
mtodo que selecciona una columna de una comando, actualizndolo, y comisin del
cambio.
La figura 12-4 muestra dos sesiones que seleccionan valores de una secuencia SEQ1.
Note esto en la cifra cada seleccin de SEQ1. NEXTVAL genera un nico
nmero. Los nmeros son publicados consecutivamente por comando del tiempo que la
seleccin fue hecha, y los incrementos de nmero globalmente, no slo dentro de una
sesin.


Creacin de Secuencias
La sintaxis llena para crear una secuencia es como sigue:

CREE LA SECUENCIA [esquema]. los sequencename
[INCREMENTO POR el nmero] [COMIENZAN CON el
nmero] [nmero de MAXVALUE | NOMAXVALUE]
[nmero de MINVALUE | NOMINVALUE] [CICLO |
NOCYCLE] [nmero de CACHE | NOCACHE]
[PEDIDO | NOORDER];
Cree, Mantenga, y Use Secuencias
503



Puede verse que la creacin de una secuencia puede ser muy simple. Por ejemplo, la secuencia
usada en la Figura 12-4 fue creada con
cree la secuencia seq1;
Las opciones son mostradas en la comando siguiente.


INCREMENTO POR


COMIENCE CON

MAXVALUE


MINVALUE


CICLO


CACHE


PEDIDO


Cunto ms alto (o ms abajo) que el ltimo nmero publicado debera el siguiente nmero ser? Las faltas a +1 pero
pueden ser cualquier nmero positivo (o nmero negativo para una secuencia inclinada). El punto de partida para la
secuencia: el nmero result por la primera seleccin. Las faltas a 1 pero pueden ser algo. El nmero ms alto una
secuencia que sube puede ir a antes de generar un error o volver a su PRINCIPIO CON el valor. La falta no es ningn
mximo. El nmero ms bajo una secuencia inclinada puede ir a antes de generar un error o volver a su PRINCIPIO
CON el valor. La falta no es ningn mnimo. Controla el comportamiento en el alcance de MAXVALUE o
MINVALUE. El comportamiento por defecto es dar un error, pero si el CICLO es especificado la secuencia volver a
su punto de partida y repeticin. Para el rendimiento, el Oracle puede prepublicar valores de secuencia en lotes y cache
ellos para resultar a usuarios. La falta debe generar y cache los 20 siguientes valores. Slo relevante para una base de
datos arracimada: PIDA obliga todos los instancias en el racimo a coordinar incrementar la secuencia, de modo que
los nmeros publicados siempre estn en el pedido aun cuando publicado a sesiones contra instancias diferentes.

Configuraciones apropiadas para el INCREMENTO POR, COMIENCE CON, y MAXVALUE o
MINVALUE vendrn de sus analistas comerciales.
Es muy raro para el CICLO ser usado porque esto deja a los valores de duplicado de cuestin de
secuencia. Si la secuencia es usada para generar valores de clave primaria, el CICLO slo tiene sentido si
hay una rutina en la base de datos que borrar viejas filas ms rpido que la secuencia reeditar nmeros.
Esconder valores de secuencia es esencial para el rendimiento. Seleccionar de una secuencia es un punto
de adaptacin en el cdigo de la aplicacin: slo una sesin puede hacer esto inmediatamente. El
mecanismo es muy eficiente: es mucho ms rpido que cierre de una fila, actualizacin de la fila, y luego
abrirlo con DESTINAR. Pero an as, seleccionar de una secuencia puede ser una causa de opinin entre
sesiones. La palabra clave de CACHE instruye el Oracle de pregenerar nmeros de secuencia en lotes.
Esto significa que ellos pueden ser publicados ms rpido que si ellos tuvieran que ser generados a
peticin.
504
Captulo 12:
Creacin de Otros Objetos de Esquema



El nmero por defecto de valores al cache es slo 20. La experiencia muestra que
esto no es bastante. Si su aplicacin selecciona de la secuencia 10 veces por
segundo, entonces puesto el valor de cache a 50 mil. No est tmido por esto.


Utilizacin de
Secuencias
Para usar una secuencia, una sesin puede seleccionar el siguiente valor con la columna
pseudo NEXTVAL, que obliga la secuencia a incrementar, o el ltimo (o "corriente")
valor publicado a aquella sesin con la columna pseudo CURRVAL. El NEXTVAL ser
globalmente nico: cada sesin que lo selecciona conseguir un diferente, incrementado,
el valor para cada uno SELECCIONA. El CURRVAL ser constante para una sesin
hasta que esto seleccione NEXTVAL otra vez. No hay ninguna manera de averiguar cual
el ltimo valor publicado por una secuencia era: usted siempre puede obtener el
siguiente valor incrementndolo con NEXTVAL, y usted siempre puede recordar el
ltimo valor publicado a su sesin con CURRVAL, pero usted no puede encontrar el
ltimo valor publicado.




El CURRVAL de una secuencia Usted no puede seleccionar el CURRVAL hasta
que sea el ltimo valor publicado a la corriente seleccionar la sesin NEXTVAL., no
necesariamente el ltimo valor result.


Un uso tpico de secuencias es para valores de clave primaria. Este ejemplo usa una
secuencia ORDER_SEQ para generar nmeros de pedido nicos y LINE_SEQ para
generar nmeros de lnea nicos para los artculos de lnea del pedido. Primero cree las
secuencias, que es una operacin nica:
cree la secuencia order_seq comienzan con 10;
cree la secuencia line_seq comienzan con 10;
Entonces inserte los pedidos con sus lneas como una transaccin sola:
insercin en pedidos (order_number, order_date, customer_number)
valores (order_seq.nextval, sysdate, '1000'); insercin en order_lines
(order_number,line_number,item_number,quantity) valores (order_seq.currval,
line_seq.nextval, 'A111', 1); insercin en order_lines
(order_number,line_number,item_number,quantity) valores (order_seq.currval,
line_seq.nextval, 'B111', 1); destine;
Cree, Mantenga, y Use Secuencias
505



La primera select de INSERCIN levanta un pedido con un nmero de pedido nico
dibujado de la secuencia ORDER_SEQ para el cliente nmero 1000. Las segundas y
terceras select insertan las dos lneas del pedido, usando el nmero de pedido antes
publicado de ORDER_SEQ como la clave fornea para conectar las lneas al pedido, y
los siguientes valores de LINE_SEQ para generar un identificador nico para cada lnea.
Finalmente, la transaccin es destinada.
Una secuencia no es atada a ninguna comando. En el ejemplo precedente, no habra
ninguna razn tcnica de no usar una secuencia para generar valores para las claves
primarias del pedido y de las lneas.
DESTINAR no es necesario para hacer el incremento de una secuencia permanente:
es permanente y hecho visible al resto del mundo el momento esto pasa. No puede ser
hecho rodar atrs, tampoco. La figura 12-5 demuestra esto.
En la cifra, el segundo insercin es hecho rodar atrs. Pero ya que la pregunta final
muestra, la secuencia fue incrementada a pesar de esto. Las actualizaciones de secuencia
ocurren independientemente del sistema de gestin de transaccin. Por esta razn,
siempre habr huecos en la serie. Los huecos sern ms grandes si la base de datos ha sido
reanudada y la clusula de CACHE fue usada. Todos los nmeros que han sido generados
y escondidos, pero todava no publicados sern perdidos cuando la base de datos es
apagada. En el siguiente se reactivan, el valor corriente de la secuencia ser el ltimo
nmero generado, no el ltimo publicado. De este modo, con el CACHE por defecto de
20, cada cierre/inicializador perder hasta 20 nmeros.


FIGURA 12-5

No puede hacerse rodar un
incremento de secuencia
atrs.
506
Captulo 12:
Creacin de Otros Objetos de Esquema



Algunos contables se disgustan mucho en la idea de huecos en la enumeracin.
Pregnteles por qu esto importa. Esto por lo general no hace.

Si los analistas comerciales han declarado que no deben haber ningunos huecos en una
secuencia, entonces otro medio de generar nmeros nicos debe ser usado. Para el
ejemplo precedente de levantar pedidos, el nmero de pedido corriente podra ser
almacenado en esta comando e iniciado a 10:
cree la comando current_on (order_number nmero);
insercin en valores de current_on (10); destine;
Entonces el cdigo para crear un pedido tendra que hacerse:
actualice order_number=order_number de SET de current_on + 1;
el insercin en pedidos (order_number, order_date, customer_number)
valores ((seleccionan order_number de current_on), sysdate, '1000');
destine;
Esto trabajar seguramente como un medio de generar nmeros de pedido nicos, y
porque el incremento del nmero de pedido es dentro de la transaccin que inserta el
pedido, puede ser hecho rodar atrs con el insercin si es necesario: no habr ningunos
huecos en nmeros de pedido, a menos que un pedido sea deliberadamente borrado. Pero
es mucho menos eficiente que la utilizacin de una secuencia, y el cdigo como esto es
famoso de causar problemas de opinin terribles. Si muchas sesiones tratan de cerrar con
llave e incrementar una fila que contiene el nmero corriente, la aplicacin entera
colgar ya que ellos hacen cola para tomar su direccin. Despus de crear y usar una
secuencia, puede ser modificado. La sintaxis es como sigue:

CAMBIE LA SECUENCIA sequencename [el INCREMENTO POR el nmero]
[COMIENZA CON el nmero] [nmero de MAXVALUE | NOMAXVALUE] [nmero de
MINVALUE | NOMINVALUE] [CICLO | NOCYCLE] [nmero de CACHE |
NOCACHE] [PEDIDO | NOORDER];
Esto CAMBIA el comando es el mismo como el comando CREAR, con una excepcin:
no hay ninguna manera de poner el valor inicial. Si usted quiere reanudar la secuencia, el
nico
Cree, Mantenga, y Use Secuencias




GUIN & SOLUCIN
507

Usted est implicado en intentar de una base de datos ser usada para entrada de pedido en lnea e informe financiero
fuera de lnea. Qu debera usted considerar en cuanto a vistas, sinnimos, e ndices?




Deberan siempre las secuencias ser usadas para claves primarias?

Los datos deben ser normalizados para el almacenamiento, pero deberan ser denormalized en vistas para la
recuperacin. El uso dual de la base de datos ser un problema: demasiados ndices harn ms lentos la entrada de
pedido, demasiado pocos harn impacto negativamente en el obteniendo. Un enfoque alternativo sera crean un SET
separado de tablas (posiblemente denormalized y agregado como las vistas) para el obteniendo y actualizan stos con
rutinas de lote. La utilizacin de sinnimos siempre hara ms fcil cambiar entre realizaciones con y sin tablas de
obteniendo separadas. En algunos instancias, los analistas comerciales pueden haber definido una clave primaria
basada en atributos de los datos. Por ejemplo, una lista de suscriptores telefnicos podra ser keyed en el nmero de
telfono: esto es una cuerda formateada que puede tener la informacin, como la posicin geogrfica (para una lnea
de tierra) o conectar a la red al operador (para un mvil) empotrado dentro de ello. Pero por lo general una clave
primaria no tiene el sentido, y en estos instancias una secuencia siempre es el mejor camino.



el camino es dejarlo caer y recrearlo. Ajustar el valor de cache de falta para mejorar
rendimiento del ejemplo de entrada de pedido precedente:
cambie la secuencia order_seq cache 1000;
Sin embargo, si usted quiere reinicializar la secuencia a su valor inicial, el nico
camino es a
djelo caer:
secuencia de gota order_seq;
y crelo otra vez.


EJERCICIO 12-4 Crea y Secuencias de Uso
En este ejercicio, usted crear algunas secuencias y los usar. Usted necesitar dos
sesiones concurrentes, Developer SQL o SQL*Plus.

1. Inicio de sesin a su base de datos dos veces, como HORA en sesiones separadas.
Piense que es
su Una sesin y el otro para ser su sesin B.
508
Captulo 12:
Creacin de Otros Objetos de Esquema



2. En su Una sesin, cree una secuencia como sigue:
cree la secuencia seq1 comienzan con 10 nocache maxvalue 15 ciclo;
El uso de NOCACHE es deletreo para el rendimiento. Si MAXVALUE
es especificado, entonces el CICLO ser necesario para prevenir errores cuando MAXVALUE es
alcanzado.
3. Ejecute los comandos siguientes en la sesin apropiada en el correcto
pedido de observar el uso de NEXTVAL y CURRVAL y el ciclismo de la secuencia:



1er 2do 3er 4to 5to 6to 7mo 8vo 9no 10mo


En Su Una Sesin
seleccione seq1.nextval del dual;


seleccione seq1.nextval del dual;

seleccione seq1.currval del dual;

seleccione seq1.nextval del dual;

seleccione seq1.nextval del dual;


En Su Sesin B


seleccione seq1.nextval del dual;

seleccione seq1.nextval del dual;

seleccione seq1.nextval del dual;

seleccione seq1.currval del dual;

seleccione seq1.nextval del dual;

4. Cree una comando con una clave primaria:
cree la comando seqtest (c1 nmero, c2 varchar2 (10));
cambie comando los seqtest aaden la coaccin seqtest_pk clave primaria
(c1);
5. Cree una secuencia para generar valores de clave primaria:
cree la secuencia seqtest_pk_s;
6. En su Una sesin, inserte una fila en la nueva comando y destine:
insercin en valores de seqtest (seqtest_pk_s.nextval, 'primero');
destine;
7. En su sesin B, inserte una fila en la nueva comando y no lo destine:
insercin en valores de seqtest (seqtest_pk_s.nextval, 'segundo');
Cree y Mantenga ndices
509



8. En su Una sesin, inserte una tercera fila y destine:
insercin en valores de seqtest (seqtest_pk_s.nextval, 'tercero');
destine;
9. En su sesin B, el rollo apoya la segunda introduccin:
rollback;
10. En su sesin B, ver los contenido de la comando:
seleccione * de seqtest;
Esto demuestra que las secuencias son incrementadas y el siguiente valor
publicado inmediatamente, fuera del mecanismo de control de transaccin.
11. Comandoe:
comando de gota seqtest;
secuencia de gota seqtest_pk_s; secuencia de gota seq1;




OBJETIVO DE CERTIFICACIN 12.05


Cree y Mantenga ndices
Los ndices tienen dos funciones: hacer cumplir clave primaria y coacciones nicas y a
mejore el rendimiento. La estrategia de indexacin de una aplicacin es crtica para el
rendimiento. Tericamente, el developer SQL no tiene que ser consciente de la
existencia (o por otra parte) de ndices, pero si el developer realmente sabe que ndices
existen y como ellos son estructurados, el developer puede escribir el cdigo diseado
para explotarlos.
No hay ninguna demarcacin clara de cuya direccin de ndice de dominio mienta
dentro de. Cuando los analistas comerciales especifican reglas comerciales que sern
puestas en prctica como coacciones, ellos especifican en efecto ndices. Los
administradores de base de datos supervisarn la ejecucin de cdigo que se ejecuta en
la base de datos y harn recomendaciones para ndices. El developer, que debera tener
la mejor idea de lo que contina en el cdigo y la naturaleza de los datos, tambin estar
implicado en el desarrollo de la estrategia de indexacin.
510
Captulo 12:
Creacin de Otros Objetos de Esquema



Para qu ndices Son
Los ndices son la parte del mecanismo de coaccin. Si una columna (o un grupo de
columnas)
es marcado como la clave primaria de una comando, entonces cada vez una fila es insertada
en la comando, el Oracle debe comprobar que una fila con el mismo valor en la clave
primaria no existe ya. Si la comando no tiene ningn ndice en la columna (s), la nica
manera de hacer esto debe escanear directamente por la comando, comprobando cada
fila. Mientras esto podra ser aceptable para una comando de slo unas filas, para una
comando con miles o millones (o mil millones) de filas, esto no es factible. Un ndice da
(cerca) de el acceso inmediato a valores de clave, entonces el control de la existencia
puede ser realizado prcticamente al instante. Cuando una coaccin de clave primaria es
definida, el Oracle crear automticamente un ndice en la columna (s) de clave primaria,
si uno no existe ya.
Una coaccin nica tambin requiere un ndice. La diferencia de una coaccin de
clave primaria es que la columna (s) de la coaccin nica puede ser dejada nula, quizs
en muchas filas. Esto no afecta la creacin y el uso del ndice: los nulls no entran en los
ndices B*Tree, como descrito en la siguiente seccin, "Los tipos del ndice."
Las coacciones de clave fornea son hechas cumplir por ndices, pero el ndice debe
existir en la comando paternal, no necesariamente en la comando para la cual la coaccin
es definida. Una coaccin de clave fornea relaciona una columna en la comando de nio
a la clave primaria o a un nico entran la comando paternal. Cuando una fila es insertada
en la comando de nio, el Oracle har una consulta en el ndice en la comando paternal
para confirmar que hay una fila correspondiente antes de permitir el insercin. Sin
embargo, usted siempre debera crear ndices en las columnas de clave fornea dentro de la
comando de nio por motivos de rendimiento: BORRAR en la comando paternal ser
mucho ms rpido si el Oracle puede usar un ndice para determinar si hay cualquier fila
en la comando de nio que se refiere a la fila que est siendo borrada.
Los ndices son crticos para el rendimiento. Ejecutando cualquier select SQL que
incluya un DONDE clusula, el Oracle tiene que identificarse qu filas de la comando
deben ser seleccionadas o modificadas. Si no hay ningn ndice en la columna (s)
referida en el DONDE clusula, la nica manera de hacer esto es con una exploracin de
comando llena. Una exploracin de comando llena lee cada fila de la comando, a fin de
encontrar las filas relevantes. Si la comando tiene mil millones de filas, esto puede tomar
horas. Si hay un ndice en la columna (s) relevante, el Oracle puede buscar el ndice en
cambio. Un ndice es una lista clasificada de valores de clave, estructurados en una
manera que hace la bsqueda muy eficiente. Con cada valor de clave es un indicador a la
fila en la comando. La localizacin de filas relevantes va una consulta de ndice es
mucho ms rpida que la utilizacin de una exploracin de comando llena, si la comando
es por encima de una cierta talla y la proporcin de las filas para ser recuperadas es debajo
de un cierto valor. Para pequeas tablas, o para un DONDE la clusula que recuperar una
fraccin grande de las filas de la comando, una exploracin de comando llena va
Cree y Mantenga ndices
511



est ms rpido: usted puede confiar (por lo general) en el Oracle para tomar la decisin
correcta, basada en la informacin que la base de datos junta al lado de las tablas y las
filas dentro de ellos.
Una segunda circunstancia donde los ndices pueden ser usados es para la
comandoacin. Una select SENTENCIA que incluye el PEDIDO POR, GRUPO POR, o
palabras claves de UNIN (y algunos otros) debe clasificar las filas en el pedido - a
menos que haya un ndice, que puede devolver las filas en el pedido correcto sin tener
que clasificarlos primero.
Una tercera circunstancia cuando los ndices pueden mejorar el rendimiento es cuando
las tablas son afiliadas, pero otra vez el Oracle tiene una opcin: segn la talla de las
tablas y los recursos de memoria disponibles, puede ser ms rpido para escanear tablas en
la memoria y afiliarse a ellos all, ms bien que usar ndices. La tcnica de juntura de bucle
anidada pasa por una comando usando un ndice en la otra comando para localizar las
filas correspondientes: esto es por lo general una operacin intensiva por el disco. Una
tcnica de juntura de picadillo lee la comando entera en la memoria, lo converte en una
tabla hash, y usa un algoritmo que desmenuza para localizar filas correspondientes; esto es
ms memoria y unidad central de proceso intensiva. Una juntura de fusin de clase clasifica
las tablas en la columna de juntura entonces los fusiona juntos: esto a menudo es un
compromiso entre disco, memoria, y recursos de unidad central de proceso. Si no hay
ningunos ndices, entonces el Oracle es con severidad limitado en las tcnicas de juntura
disponibles.


Tipos de ndice
El oracle apoya varios tipos del ndice, que tienen varias variaciones. Los dos tipos de
ndice de la preocupacin aqu son el ndice B*Tree, que es el tipo de ndice por defecto, y
el ndice de bitmap. La nica variacin digna de la consideracin con objetivos de examen
se aplica a ndices B*Tree: stos pueden ser nicos o no nicos. Un ndice nico no
permitir la introduccin de dos filas con los mismos valores de clave; un ndice no nico
permitir tantas filas como usted quiere con los mismos valores. No nico es la falta.
Por regla general, los ndices mejorarn el rendimiento para la extraccin de datos, pero
reducirn el rendimiento para operaciones DML. Esto es porque los ndices deben ser
mantenidos. Cada vez una fila es insertada en una comando, una nueva llave debe ser
insertada en cada ndice en la comando, que coloca una tensin adicional en la base de
datos. Por esta razn, en sistemas de procesamiento de transaccin es acostumbrado para
guardar el nmero de ndices tan bajo como sea posible (quizs no ms que los necesarios
para las coacciones) y en una pregunta - el sistema intensivo, como un depsito de datos,
para crear tantos como podra ser provechoso.

B*Tree Pone ndice A un ndice B*Tree (los soportes "de B" para "el equilibrado") es
una estructura de rbol. El nodo de raz del rbol seala a muchos nodos al segundo nivel,
que puede sealar a muchos nodos en
512
Captulo 12:
Creacin de Otros Objetos de Esquema



el tercer nivel, etctera. La profundidad necesaria del rbol ser en gran parte determinada
por el nmero de filas en la comando y la longitud de los valores de clave de ndice.

La estructura B*Tree es muy eficiente. Si la profundidad es mayor entonces tres
o cuatro, que las llaves de ndice son muy largas o la comando tiene mil millones
de filas. Si ninguno si stos son el instancia, entonces el ndice necesita
reconstruir.

Los nodos de hoja del rbol de ndice almacenan las llaves de las filas, en el pedido, cada
uno con un indicador que identifica la posicin fsica de la fila. Entonces recuperar una fila
con una consulta de ndice, si el DONDE la clusula usa un predicado de igualdad en la
columna de clave primaria, el Oracle navega abajo el rbol al nodo de hoja que contiene el
valor de clave deseado, luego usa el indicador para encontrar la fila. Si el DONDE la
clusula usa un predicado de no igualdad (como alguno de los operadores COMO,
ENTRE,>, o <) entonces el Oracle puede navegar abajo el rbol para encontrar el primer
valor de clave correspondiente y luego navegar a travs de los nodos de hoja del ndice
para encontrar todos los otros valores correspondientes. Como esto hace as, esto
recuperar las filas de la comando, en el pedido.
El indicador a la fila es el rowid. El rowid es un Oracle pseudocolumna patentada que cada
fila en cada comando tiene. Cifrado dentro de ello es la direccin fsica de la fila. Como los
rowids no son la parte del estndar SQL, ellos nunca son visibles a una select SQL normal,
pero usted puede verlos y usarlos si usted quiere. Esto es demostrado en la Figura 12-6.
Rowid de una fila es globalmente nico. Cada fila en cada comando en la base de datos
entera tendr rowid diferente. El cifrado rowid da la direccin fsica de la fila: de ello, el
Oracle puede contar qu archivo de sistema operativo y donde en el archivo la fila es, y va
directamente a ello.

FIGURA 12-6

La pruebas y la utilizacin
rowids
Cree y Mantenga ndices
513



Los ndices de B*Tree son un modo muy eficiente de recuperar filas si el nmero de filas necesarias es
bajo en la proporcin con el nmero total de filas en la comando y si la comando es grande. Considere esta
select:
seleccione a la cuenta (*) de EMPLOYEES donde last_name entre 'Un %' y 'Z %';
Esto DONDE la clusula es suficientemente amplia que incluir cada fila en el
comando. Sera mucho ms lento a tal el ndice para encontrar el rowids y luego usar el rowids para
encontrar las filas que escanear la comando entera. Despus de todo, es la comando entera que es
necesaria. Otro ejemplo sera si la comando fuera bastante pequea que un disco ledo podra escanearlo
en su totalidad: no habra ninguna razn en la lectura de un ndice primero.
A menudo se dice que si la pregunta va a recuperar ms del 2 a 4 por ciento de las filas, entonces una
exploracin de comando llena ser ms rpida. Una excepcin principal a esto es si el valor especificara en
el DONDE la clusula es NULA. NULLs no entran en ndices B*Tree, entonces una pregunta, como esto:
seleccione * de EMPLOYEES donde last_name es nulo;
siempre causar una exploracin de comando llena. Hay poco valor en la creacin de un B*Tree
el ndice en una columna con pocos valores nicos, ya que no ser selectivo: la proporcin de la comando
que ser recuperada para cada valor de clave distinto ser demasiado alta. En general, los ndices de B*Tree
deberan ser usados si:

El cardinality (el nmero de valores distintos) en la columna es alto, y El nmero de filas en la
comando es alto, y La columna es usada en DONDE condiciones de JUNTURA o clusulas

Los ndices de bitmap En muchas aplicaciones comerciales, la naturaleza de los datos y las preguntas
son tales que los ndices B*Tree no son de mucho uso. Considere la comando de ventas para una cadena de
supermercados, almacenando un ao de datos histricos, que pueden ser analizados en varias
dimensiones. La figura 12-7 muestra un diagrama de relacin de la entidad simple, con slo cuatro de las
dimensiones.
El cardinality de cada dimensin podra ser completamente bajo. Haga estas asunciones:


TIENDA Hay cuatro tiendas el PRODUCTO Hay 200 FECHA de productos Hay
CANAL de 365 das Hay dos canales (paseo - en y entrega)
514
Captulo 12:
Creacin de Otros Objetos de Esquema



LA FIGURA 12-7 Tienda

Una comando de hecho con cuatro dimensiones

Canal Ventas Producto



Fecha



Asumiendo hasta la distribucin de datos, slo dos de las dimensiones (PRODUCTO
y FECHA) tienen una selectividad mejor que el criterio comnmente usado del 2 por
ciento al 4 por ciento que hace un ndice que vale la pena. Pero si predicados de variedad
de uso de preguntas (como contar ventas en un mes, o de una clase de diez o ms
productos) entonces no hasta stos se licenciarn. Esto es un simple hecho: los ndices de
B*Tree a menudo son intiles en un entorno de depsito de datos. Una pregunta tpica
podra querer comparar ventas entre dos tiendas para andar - en compradores de una
cierta clase del producto en un mes. Pueden haber bien ndices B*Tree en las columnas
relevantes, pero el Oracle no har instancia de ellos como insuficientemente selectivo.
Esto es para qu los ndices de bitmap son diseados.
Un ndice de bitmap almacena el rowids asociado con cada valor de clave como un
bitmap. Los bitmaps para el ndice de CANAL podran parecer a esto:
WALKIN 11010111000101011101011101...
ENTREGA 00101000111010100010100010...
Esto indica que las dos primeras filas eran ventas para andar - en clientes, el tercer
la venta era una entrega, la cuarta venta era un paseo - en, etctera.
Los bitmaps para el ndice de TIENDA podran ser:
LONDRES 11001001001001101001010000...
OXFORD 00100010011000010001001000...
LECTURA 00010001000100000100100010...
GLASGOW 00000100100010000010000101...
Esto indica que las dos primeras ventas estaban en la tienda de Londres, el tercer
estaba en
Oxford, el cuarto en Lectura, etctera. Ahora si esta pregunta es recibida:
seleccione a la cuenta (*) de ventas donde canal ='WALKIN' y tienda
='OXFORD';
Cree y Mantenga ndices



El oracle puede recuperar los dos bitmaps relevantes y aadirlos juntos con un
Booleano Y operacin:
WALKIN 11010111000101011101011101...
OXFORD 00100010011000010001001100... WALKIN & OXFORD
00000010000000010000000000...
515
El resultado del Y operacin muestra que slo el sptimo y diecisis
las filas tienen derecho a la seleccin. Esta combinacin de bitmaps es muy rpida y puede
ser usada para poner en prctica operaciones de lgebra Booleanas complejas con muchas
condiciones en muchas columnas usando cualquier combinacin de Y, O, y NO
operadores. Una ventaja particular que los ndices de bitmap tienen sobre ndices B*Tree
consiste en que ellos incluyen NULLs. Por lo que el ndice de bitmap est referido,
NULO es slo otro valor distinto, que tendr su propio bitmap.
En general, los ndices de bitmap deberan ser usados si:

El cardinality (el nmero de valores distintos) en la columna es bajo (tal como
macho/femenino), y El nmero de filas en la comando es alto, y La columna
es usada en el lgebra Booleana (AND/OR/NOT) operaciones

Si usted supiera de antemano lo que las preguntas seran entonces usted podra
construir ndices B*Tree que trabajaran, como un ndice compuesto en TIENDA y
CANAL. Pero por lo general usted no sabe, que es donde la fusin dinmica de
bitmaps da la gran flexibilidad.

La creacin y la Utilizacin de ndices
Los ndices son creados implcitamente cuando la clave primaria y las coacciones nicas
son definidas,
si un ndice en la columna (s) relevante no existe ya. La sintaxis bsica para crear un
ndice explcitamente es como sigue:

CREE [NICO | EL BITMAP] NDICE [esquema]. indexname EN [esquema]. tablename
(columna [column.]);
El tipo por defecto del ndice es un ndice B*Tree no nico. No es posible crear
un ndice de bitmap nico (y usted no querra a si usted pudiera: piense en la cuestin de
cardinality). Los ndices son objetos de esquema, y es posible crear un ndice en un
esquema en una comando en el otro, pero la mayor parte de personas encontraran esto
algo confuso. Un ndice compuesto es un ndice en varias columnas. Los ndices
compuestos pueden
516
Captulo 12:
Creacin de Otros Objetos de Esquema



est en columnas de tipos de datos diferentes, y las columnas no tienen que ser
adyacentes en la comando.

Muchos administradores de base de datos no lo consideran prctica buena para
confiar en la creacin de ndice implcita. Si los ndices son creados
explcitamente, el creador tiene el control total sobre las caractersticas del
ndice, que puede hacerlo ms fcil para el DBA a poder posteriormente.

Considere este ejemplo de crear tablas e ndices y luego definir coacciones:
cree el departamento de comando (deptno nmero, dname varchar2 (10));
cree la comando emp (empno nmero, apellido varchar2 (10), nombre de pila varchar2 (10),
dob fecha, deptno nmero); cree el ndice dept_i1 nico en el departamento (deptno); cree
el ndice emp_i1 nico en emp (empno); cree el ndice emp_i2 en emp (apellido, nombre
de pila); cree el ndice emp_i3 de bitmap en emp (deptno); cambie departamento de comando
aaden la coaccin dept_pk clave primaria (deptno); cambie comando los emp aaden la
coaccin emp_pk clave primaria (empno); cambie comando los emp aaden la coaccin emp_fk
clave fornea (deptno) departamento de referencias (deptno);
Los dos primeros ndices creados son sealados como NICOS, significando que esto
no va
est posible insertar valores duplicados. Esto no es definido como una coaccin a este
punto, pero es verdad sin embargo. El tercer ndice no es definido como NICO y
aceptar por lo tanto valores duplicados; esto es un ndice compuesto en dos columnas. El
cuarto ndice es definido como un ndice de bitmap, porque el cardinality de la columna
probablemente ser bajo en la proporcin con el nmero de filas en la comando.
Cuando las dos coacciones de clave primaria son definidas, el Oracle descubrir los
ndices pre creados y los usar para hacer cumplir las coacciones. Note que el ndice en
DEPT.DEPTNO no tiene ningn objetivo para el rendimiento porque la comando va en
toda la probabilidad ser tan pequea que el ndice nunca ser usado para recuperar filas
(una exploracin ser ms rpida), pero todava es esencial tener un ndice para hacer
cumplir la coaccin de clave primaria.




Una clave primaria y nica el instancia ltimo, ser una coaccin no
nica puede ser hecho cumplir por ndices el ndice que resulta slo tener nico que
son nicos o no nicos: en valores.
Cree y Mantenga ndices
517



Una vez creado, el uso de ndices es completamente transparente y automtico. Antes
de ejecutar una select SQL, el servidor de Oracle evaluar todos los modos posibles de
ejecutarlo. Algunos de estos caminos pueden implicar usar todo lo que los ndices estn
disponibles, los otros pueden no. El oracle har el uso de la informacin que esto junta
en las tablas y el entorno para tomar una decisin inteligente sobre cual (si cualquiera)
ndices de usar.

El servidor de Oracle debera tomar la mejor decisin sobre el uso de ndice, pero
si lo consigue incorrecto que es posible para un programador empotrar
instrucciones, conocidas como optimizer indirectas, en el cdigo que forzar el
uso (o no) de ciertos ndices.

La modificacin y la Cada de ndices
Hay un comando, CAMBIE INDEX.but esto no puede ser usado para cambiar cualquier del
las caractersticas descritas en este captulo: el tipo (B*Tree o bitmap) del ndice, las
columnas, o si es nico o no nico. El comando de NDICE CAMBIAR est en el
dominio de administracin de base de datos y sera tpicamente usado para ajustar las
propiedades fsicas del ndice, no las propiedades lgicas que son del inters para
developeres. Si es necesario cambiar alguna de estas propiedades, el ndice debe ser
dejado caer y recreado. Seguir el ejemplo en la seccin anterior, para cambiar el ndice
EMP_I2 para incluir los cumpleaos de los EMPLOYEES:
el ndice emp_i2 de gota;
cree el ndice emp_i2 en emp (apellido, nombre de pila, dob);
Este ndice compuesto ahora incluye columnas con tipos de datos diferentes. Las
columnas
resulte ser puesto en una lista en el mismo pedido que ellos son definidos en la comando,
pero esto no es de ningn modo necesario.
Cuando una comando es dejada caer, todos los ndices y las coacciones definidas para
la comando son dejados caer tambin. Si un ndice fuera creado implcitamente creando
una coaccin, entonces la cada de la coaccin tambin dejar caer el ndice. Si el ndice
hubiera sido creado explcitamente y la coaccin creada ms tarde, entonces si la
coaccin es dejada caer el ndice sobrevivir.
518
Captulo 12:
Creacin de Otros Objetos de Esquema




DENTRO DEL EXAMEN


Creacin de Otros Objetos de Esquema
En muchas aplicaciones, los usuarios nunca ven tablas.
Los datos de comando son abstrados en vistas, y las vistas adelante abstradas por sinnimos. El uso de
vistas y sinnimos es completamente transparente a SQL: todos ellos comparten mismo namespace, y
entonces el cdigo se ejecutar contra cualquier de ellos. Las vistas pueden hacer estructuras relacionales
complejas mucho ms fciles a usar, y los sinnimos proporcionan la propiedad de datos y la transparencia
de posicin.
El uso de ndices tambin es transparente. Ellos se requieren hacer cumplir coacciones de clave primaria
y nicas (y fuertemente aconsejados para coacciones de clave fornea) y puede ser opcionalmente creado
para realzar el rendimiento. Los ndices vienen a dos formas: B*Tree y bitmap. Llegar a una estrategia de
indexacin apropiada, que crea ndices del tipo correcto en las columnas correctas, es crtico para el
rendimiento.




EJERZA 12-5 ndices de Creacin



Los ndices de B*Tree son convenientes para columnas muy selectivas con cardinality alto; los ndices de bitmap
son convenientes para columnas con slo unos valores distintos. El servidor de Oracle determinar en el tiempo
de ejecucin de select si usar ndices, aunque los programadores puedan controlar esto por indirectas de fijacin
en su cdigo.
Las secuencias son una instalacin para generar nmeros nicos. Es absolutamente imposible para dos
sesiones leer el mismo valor de una secuencia. Las secuencias y sus valores existen fuera de la estructura de
procesamiento de transaccin. Si una secuencia es incrementada, este incremento no puede ser hecho rodar
atrs y es inmediatamente visible a todas otras sesiones sin ninguno destinan. Las secuencias evitan los
mecanismos para transacciones atmicas y aislamiento de transaccin.
En este ejercicio, cree ndices en una copia de la comando de EMPLOYEES en el
esquema de HORA. SQL*Plus o el Developer SQL pueden ser usados.

1. Conecte a su base de datos como la HORA de usuario 2. Cree una comando que
es una copia de EMPLOYEES:
cree la comando emps como sentencia * de EMPLOYEES;
Cree y Mantenga ndices
519



Esta comando no tendr ni ndices, ni coacciones de clave fornea o primarias, nicas, porque stos no
son copiados por una COMANDO CREAR COMO el comando. El NO las coacciones NULAS habrn
sido copiadas. Confirme esto describiendo la comando:
describa emps;
3. Cree un ndice para ser usado para la coaccin de clave primaria:
cree el ndice nico emps_empid_i en emps (employee_id);
4. Demuestre que un ndice nico no puede aceptar duplicados, hasta antes a
la coaccin es definida:
insercin en emps (employee_id,last_name,email,hire_date,job_id)
valores (198, 'Watson', 'jw@bplc.co.za', sysdate, 'IT_PROG');
Esto devolver un error porque el ndice no puede insertar segundo employee_
id 198. La unicidad de ndice es un atributo del ndice que puede existir sin una coaccin, pero no
debera ser confiado en hacer cumplir la integridad de datos.
5. Cree ndices adicionales en columnas que probablemente sern usadas en DONDE
clusulas, usando B*Tree para columnas de cardinality alto y bitmap para columnas de cardinality bajo:
cree ndice emps_name_i en emps (last_name, first_name);
cree ndice emps_tel_i en emps (phone_number); cree ndice de bitmap
emps_mgr_i en emps (manage_id); cree ndice de bitmap emps_dept_i en emps
(department_id);
6. Defina algunas coacciones:
cambie comando los emps aaden la coaccin emps_pk clave primaria (employee_id);
cambie comando los emps aaden la coaccin emps_email_uk nico (e-mail); cambie comando los
emps aaden la coaccin emps_tel_uk nico (phone_number);

7. Muestre los nombres de ndice y su tipo:
seleccione index_name, index_type, unicidad de user_indexes
donde table_name ='EMPS';
La vista USER_INDEXES muestra detalles de todos los ndices en su esquema corriente.
Note que adems de los cinco ndices explcitamente creados en los pasos 3 y 5, tambin hay un ndice
creado implcitamente con el nombre de la coaccin definida en el E-MAIL. Tambin note que la
coaccin nica en PHONE_NUMBER
520
Captulo 12:
Creacin de Otros Objetos de Esquema



est siendo hecho cumplir con un ndice no nico; esto es absolutamente posible, porque aunque el
mecanismo de coaccin use ndices, es independiente de la estructura del ndice.
8. Comandoe dejando caer la comando EMPS, y confirme que todos los ndices tienen
tambin ido:
comando de gota emps;
seleccione index_name de user_indexes donde table_name ='EMPS';



RESUMEN DE CERTIFICACIN
Las vistas son select sentencias, almacenadas en el diccionario de datos. Ellos pueden ser
preguntados
como si ellas fueran tablas, y en algunos instancias ellos pueden ser el objeto de select
DML. Una vista simple es columnas de una comando, sin agregaciones o funciones; una
vista compleja puede afiliarse a tablas, conjunto, y usar funciones. Por regla general, es
posible hacer DML a travs de una vista simple, pero no a travs de una vista compleja -
pero hay excepciones.
Los sinnimos son aliases que pueden estar acostumbrados a vistas de acceso y tablas.
Los sinnimos pueden simplificar el cdigo hacindolo innecesario para especificar a
calificadores de esquema o nombres de enlace de base de datos: ellos dejan al cdigo
ejecutado sin tener que saber sobre propiedad de datos o posicin. Las tablas, las vistas, y
los sinnimos comparten el nombre namespace: dentro de un esquema, ellos deben tener
todos nombres diferentes y pueden ser usados de modo intercambiable.
Las secuencias generan nmeros nicos, tpicamente para el uso como valores de clave
primaria. Los ndices tienen un objetivo dual: hacer cumplir coacciones y realzar
rendimiento.
Si un ndice est disponible definiendo una coaccin, el Oracle lo usar; por otra parte, un
ndice ser implcitamente creado. Creando ndices para el rendimiento, considere qu
columnas son usadas para afiliarse a tablas o en DONDE las clusulas y crean ndices
B*Tree en columnas con cardinality alto e ndices de bitmap en columnas con
relativamente pocos valores distintos.
Taladradora de dos minutos
521




TALADRADORA DE DOS MINUTOS

Cree Vistas Simples y Complejas
Una vista simple tiene un detalle (o base) comando y no usa ni funciones, ni
agregacin.
Una vista compleja puede estar basado en cualquier select SENTENCIA, no importa como
complicado.
Vistas son objetos de esquema. Usar una vista en otro esquema, el nombre de vista
debe ser calificado con el nombre de esquema.

Recupere Datos de Vistas
Una vista puede ser preguntado exactamente como si fuera una comando. Vistas puede
ser afiliado a otras vistas o a tablas, ellos pueden ser agregados, y
en algunos instancias ellos pueden aceptar select DML.
Vistas slo existen como construcciones de diccionario de datos. Siempre que usted pregunte
una vista,
la select SENTENCIA subyacente debe ser ejecutada.

Cree Sinnimos Privados y Pblicos
Un sinnimo es un nombre alternativo para una vista o una comando. sinnimos Privados
son objetos de esquema; los sinnimos pblicos existen el usuario exterior
los esquemas y pueden ser usados sin especificar un nombre de esquema como un calificador.
Sinnimos comparten mismo namespace que vistas y tablas y puede ser por lo tanto
usado de modo intercambiable con ellos.

Cree, Mantenga, y Use Secuencias
Una secuencia no genera valores nicos - a menos que MAXVALUE o
MINVALUE y el CICLO han sido especificados. Incrementar una secuencia no tiene que
ser destinado y no puede ser hecho rodar atrs. Cualquier sesin puede incrementar la
secuencia leyendo su siguiente valor. Es posible
obtener el ltimo valor publicado a su sesin, pero no el ltimo valor publicado.
522
Captulo 12:
Creacin de Otros Objetos de Esquema



Cree y Mantenga ndices
ndices se requieren para hacer cumplir coacciones de clave primaria y nicas.
los NULLs no son incluidos en ndices B*Tree, pero son incluidos en ndices de
bitmap. B*Tree ndices puede ser nico o no nico, que determina si ellos
puede aceptar valores de clave duplicados.
B*Tree ndices son convenientes para columnas cardinality altas, ndices de
bitmap para
bajo columnas de cardinality.
ndices combinados tienen una llave que consiste en varias columnas, que pueden
ser de
tipos de datos diferentes.




M PRUEBA
M Prueba
523
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.

Cree Vistas Simples y Complejas
1. Cul de stos es caracterstica una definicin de una vista compleja, ms bien que una vista simple?
(Elija una o varias respuestas correctas.) A. La restriccin de la proyeccin seleccionando slo
algunas columnas de la comando B. Naming las columnas de la vista con aliases de columna C.
Restricting la seleccin de filas con un DONDE la clusula D. La realizacin de una agregacin E.
Joining dos tablas
2. Considere estas tres select:
cree la vista v1 como department_id escogido, department_name, last_name de
los DEPARTMENTS acompaan a EMPLOYEES que usan (department_id); seleccione
department_name, last_name de v1 donde department_id=20; seleccione
d.department_name, e.last_name de DEPARTMENTS d, EMPLOYEES e donde
d.department_id=e.department_id y d.department_id=20;
La primera pregunta ser ms rpida que el segundo porque (eligen la mejor respuesta):
A. La vista ha hecho ya el trabajo de afiliarse a las tablas. B. La vista usa la sintaxis de juntura de
estndar de organizacin internacional para la normalizacin, que es ms rpida que la sintaxis de
juntura de Oracle usada en
la segunda pregunta.
C. La vista es precompilada, entonces la primera pregunta requiere la compilacin menos dinmica
que el segundo
pregunta.
D. No hay ninguna razn de la primera pregunta para ser ms rpida.
3. Estudie esta select de creacin de vista:
cree la vista dept30 como
seleccione department_id, employee_id, last_name de EMPLOYEES donde
department_id=30 con la opcin de control;
524
Captulo 12:
Creacin de Otros Objetos de Esquema



Qu podra hacer la select siguiente fallar? (Elija la mejor respuesta.)
actualice department_id=10 de SET de dept30 donde employee_id=114;

A. A menos que no especificado por otra parte, las vistas sern creadas como CON EL LEDO SLO.
B. La vista es demasiado compleja para permitir operaciones DML. C. El CON LA OPCIN DE
CONTROL rechazar cualquier select que cambie el DEPARTMENT_ID. D. La select tendr
xito.


Recupere Datos de Vistas
4. Hay una vista simple SCOTT.DEPT_VIEW en la comando SCOTT.DEPT. Este insercin falla con
un error:
SQL> insertan en valores de dept_view ('APOYO', 'OXFORD');
insercin en valores de dept_view ('APOYO', 'OXFORD') *ERROR en lnea 1: ORA-01400:
no puede insertar NULO en ("SCOTT". "DEPARTAMENTO". "DEPTNO")
Cul podra ser el problema? (Elija la mejor respuesta.)
A. El INSERCIN viola una coaccin en la comando de detalle. B. El INSERCIN viola una
coaccin en la vista. C. La vista fue creada como CON EL LEDO SLO. D. La vista fue creada
como CON LA OPCIN DE CONTROL.

Cree Sinnimos Privados y Pblicos
5. Qu distingue caractersticas de un sinnimo pblico, ms bien que un sinnimo privado?
(Elija dos respuestas correctas.) A. Los sinnimos pblicos siempre son visibles a todos los usuarios.
Pueden tener acceso a sinnimos de B. Public de nombre sin un nombre de esquema calificador. Los
sinnimos de C. Public pueden ser seleccionados desde fuera necesitando cualquier permiso. Los
sinnimos de D. Public pueden tener los mismos nombres que tablas o vistas.
6. Considere estas tres select:
cree el sinnimo s1 para EMPLOYEES;
cree el sinnimo pblico s1 para DEPARTMENTS; seleccione * de s1;




Cul de las select siguientes es correcta? (Elija la mejor respuesta.) A. La segunda select fallar
porque un objeto S1 ya existe. B. La tercera select mostrar los contenido de EMPLOYEES. C. La
tercera select mostrar los contenido de DEPARTMENTS.
M Prueba
525
D. La tercera select mostrar los contenido de la tabla S1, si tal comando existe en
el esquema corriente.
7. Una vista y un sinnimo son creados como sigue:
cree la vista dept_v como sentencia * del departamento;
cree el sinnimo dept_s para dept_v;
Posteriormente el DEPARTAMENTO de comando es dejado caer. Qu pasar si usted pregunta el
sinnimo DEPT_S?
(Elija la mejor respuesta.) A. No habr un error porque el sinnimo se dirige a la vista, que todava
existe, pero
no habr ningunas filas devueltas.
B. No habr un error si usted primero compila de nuevo la vista con el comando CAMBIAN LA
VISTA
DEPT_V COMPILAN LA FUERZA; C. Habr un error porque el sinnimo ser invlido. D.
Habr un error porque la vista ser invlida. E. Habr un error porque la vista habr sido dejada caer
implcitamente cuando la comando
fue dejado caer.

Cree, Mantenga, y Use Secuencias
8. Una secuencia es creada como sigue:
cree la secuencia seq1 maxvalue 50;
Si el valor corriente es ya 50, cuando usted intenta seleccionar SEQ1. NEXTVAL lo que va
pase? (Elija la mejor respuesta.) A. La secuencia ir en bicicleta y la edicin 0. B. La secuencia ir
en bicicleta y la edicin 1. C. La secuencia reeditar 50. D. Habr un error.
9. Usted crea una secuencia como sigue:
cree la secuencia seq1 comienzan con 1;
526
Captulo 12:
Creacin de Otros Objetos de Esquema



Despus de seleccionar de ello unas veces, usted quiere iniciarlo de nuevo para reeditar los nmeros ya
generados. Cmo puede usted hacer esto? (Elija la mejor respuesta.) A. Usted debe dejar caer y
recrear la secuencia. B. Usted no puede. De ninguna manera pueden los nmeros de una secuencia ser
reeditados una vez ellos
han sido usados. C. Use el comando CAMBIA LA SECUENCIA PRINCIPIO de SEQ1 CON 1;
reinicializar el siguiente valor a 1. D. Use el comando CAMBIA LA SECUENCIA CICLO de
SEQ1; reinicializar la secuencia a su
comienzo de valor. 10. Estudie el objeto expuesto siguiente:
















Suponer que la secuencia SEQ1 fuera creada con el PEDIDO de opcin e INCREMENTO POR el
SET a 1, qu valor ser devuelto por la select SENTENCIA final? (Elija la mejor respuesta.) A. 2 B.
3 C. 4 D. Esto depender de si cualquier otra sesin selecciona de la secuencia mientras el
las select en el objeto expuesto estn siendo ejecutadas.

Cree y Mantenga ndices
11. Una coaccin NICA en una columna requiere un ndice. Cual de los guiones siguientes es
correcto? (Elija una o varias respuestas correctas.) A. Si un ndice NICO ya existe en la columna,
ser usado. B. Si un ndice NONUNIQUE ya existe ser usado.
Pregunta de laboratorio
527



C. Si un ndice NONUNIQUE ya existe en la columna, un ndice NICO ser creado
implcitamente.
D. Si cualquier ndice existe en la columna, habr un error ya que el Oracle intenta crear
otro ndice implcitamente. 12. Esta select fallar:
cree el ndice de bitmap nico en EMPLOYEES (department_id, hire_date);
Por qu? (Elija la mejor respuesta.)
A. Los ndices de bitmap no pueden ser nicos. B. Las dos columnas son de tipos de datos
diferentes. C. Un ndice de bitmap puede estar en slo una columna. D. Hay ya un ndice B*Tree en
DEPARTMENT_ID.
13. Usted ha creado un ndice con esta select:
cree el ndice ename_i en EMPLOYEES (last_name, first_name);
Como le puede ajustar el ndice para incluir los cumpleaos de los EMPLOYEES, que es una
columna de tipo de fecha
DOB llamado? (Elija la mejor respuesta.) A. Use CAMBIAN EL NDICE ENAME_I AADEN
LA COLUMNA DOB;. B. Usted no puede hacer esto debido a la falta de armona de tipo de datos.
C. Usted debe dejar caer el ndice y recrearlo. D. Esto slo puede ser hecho si la columna DOB es
NULA en todas las filas existentes.

PREGUNTA DE LABORATORIO
La figura 12-7 en este captulo muestra un diagrama de relacin de la entidad para un sistema simple
diseado para almacenar
y analice ventas. Las columnas para las VENTAS de comando de hecho son como sigue:
SALE_ID Clave primaria generada por
el sistema
CHANNEL_ID Clave fornea a CANALES
PRODUCT_ID Clave fornea a PRODUCTOS
SHOP_ID Clave fornea a
TIENDAS DAY_ID Clave
fornea hasta DAS
CANTIDAD La cantidad del producto se
vendi
528
Captulo 12:
Creacin de Otros Objetos de Esquema



Se espera que habr varios millones de filas de VENTAS por ao. Las tablas de dimensin son como
sigue:
PRODUCTOS Una lista de todos los productos, incluso precio. Cardinality de unos cientos
CANALICE mtodos de ventas Posibles, como el paseo - en, Internet, y llame por telfono Detalles de
TIENDAS de todas las tiendas - no ms que un par de docenas de DAS Fechas para cuales ventas
estn siendo almacenados: 365, identificado por nmero de da
Escriba el cdigo para crear las tablas; cree ndices; cree coacciones. Cree secuencias para ser usadas
para
claves primarias donde necesario. Cree algunas vistas que presentarn los datos de una moda comprensible.




M PRUEBAN RESPUESTAS

Cree Vistas Simples y Complejas
M Respuestas de Prueba
529
1. los D, E. Aggregations y junturas hacen un complejo de vista y hacen el imposible
DML.
A, B, C. Selection y proyeccin o columnas que renombran no hace el complejo de vista.
2. D. Triste pero verdadero. Las vistas no ayudan al
rendimiento.
A es incorrecto porque una vista es slo una select SENTENCIA; esto no preejecuta la pregunta.
El B es
incorrecto porque el Oracle optimizer clasificar cualquier diferencia en la sintaxis. El C es
incorrecto porque, aunque las vistas sean precompiladas, esto no afecta la velocidad de compilar la
select de un usuario.
3. C. El CON LA OPCIN DE CONTROL prevendr DML que hara que una fila desaparezca
de la vista.
A, B, D. A es incorrecto porque las vistas son en ausencia creadas ley/escribi. El B es
incorrecto porque
la vista es una vista simple. El D es incorrecto porque la select no puede tener xito porque la
opcin de control lo rechazar.

Recupere Datos de Vistas
4. A. Hay un NO coaccin de CLAVE PRIMARIA o NULA en DEPT.DEPTNO.
B, C, D. El B es incorrecto porque las coacciones son hechas cumplir en tablas de detalle, no en
vistas. C y
Los D son incorrectos porque el mensaje de error sera diferente.

Cree Sinnimos Privados y Pblicos
5. B, los sinnimos de D. Public no son objetos de esquema y tan slo pueden ser dirigidos
directamente. Ellos
puede tener los mismos nombres que objetos de esquema.
A, C. stos son incorrectos porque deben conceder a usuarios privilegios en un sinnimo pblico
antes
ellos pueden verlo o seleccionar de ello.
6. B. El comando de prioridad debe buscar el esquema namespace antes del pblico namespace,
entonces
ser el sinnimo privado (a EMPLOYEES) que ser encontrado.
A, C, D. A es incorrecto porque un sinnimo puede existir tanto en el pblico namespace como
en el
esquema namespace. El C es incorrecto porque el comando de prioridad encontrar el sinnimo
privado primero. El D es incorrecto porque no sera posible tener una comando y un sinnimo
privado en el mismo esquema con el mismo nombre.
530
Captulo 12:
Creacin de Otros Objetos de Esquema



7. D. El sinnimo ser fino, pero la vista ser invlida. El oracle intentar compilar de nuevo
la vista, pero esto fallar.
A, B, C, E. A es incorrecto porque la vista ser invlida. El B es incorrecto porque la FUERZA

la palabra clave slo puede ser aplicada creando una vista (y todava sera invlido, an as). El C es
incorrecto porque el sinnimo ser fino. El E es incorrecto porque las vistas no son dejadas caer
implcitamente (a diferencia de ndices y coacciones).

Cree, Mantenga, y Use Secuencias
8. D. La falta es NOCYCLE, y la secuencia no puede avanzar adelante.
A, B, C. A y B son incorrectos porque el CICLO es inhibido en ausencia. Si fuera habilitado,
el siguiente nmero publicado sera 1 (no cero) porque 1 es la falta para el PRINCIPIO CON. El C
es incorrecto porque de ninguna manera va una repeticin de cuestin de secuencia valorar.
9. A. No es posible cambiar el siguiente valor de una secuencia, entonces usted debe recrearlo.

B, C, D. El B es incorrecto porque, mientras una secuencia NOCYCLE nunca puede reeditar
nmeros,
no hay ninguna razn por qu una nueva secuencia (con el mismo nombre) no puede hacer as. El C
es incorrecto porque el PRINCIPIO CON slo puede ser especificado en el tiempo de creacin. El D
es incorrecto porque esto no forzar un ciclo inmediato; esto slo afectar lo que pasa cuando la
secuencia alcanza su MAXVALUE o MINVALUE.
10. D. Si la secuencia est siendo usada por otras sesiones, no hay saber cuantos
los incrementos pueden haber ocurrido entre el primer y las segundas select de INSERCIN.
A, B, C. La respuesta sera 4, C, salvo que podra haber habido forzado de incrementos
por otras sesiones. A y B son incorrectos porque el ROLLBACK no invertir los incrementos de
secuencia.

Cree y Mantenga ndices
11. A, B. Un NICO o un ndice NONUNIQUE pueden ser usados para hacer cumplir nico
coaccin.
C, D. El C es incorrecto porque no hay ninguna necesidad de crear otro ndice (de hecho, usted no
puede poner ndice a
la misma columna dos veces aun si usted quiere a). El D es incorrecto porque si un ndice existe, el
Oracle no intentar crear al otro.
12. A. El BITMAP de palabras claves y NICO es mutuamente exclusivo. Y usted no querra
hacer esto, de todos modos.
Respuesta de laboratorio
531



B, C, D. Los B y C son incorrectos porque un ndice de bitmap puede ser compuesto, con
columnas de
tipos de datos diferentes. El D es incorrecto porque el ndice de bitmap no est en el
DEPARTMENT_ID solo, que no sera posible.
13. C. No es posible cambiar las columnas de un ndice despus de la creacin.
A, B, D. El B es incorrecto porque el tipo de datos no es el problema. A y D son incorrectos
porque
las columnas de un ndice son fijadas en el tiempo de creacin.

RESPUESTA DE LABORATORIO
Esto es una solucin posible:
/*create los tables*/crean ventas de comando (sale_id nmero, channel_id nmero, product_id nmero,
shop_id nmero, day_id nmero, nmero de cantidad); cree productos de comando (product_id nmero, pname
varchar2 (20), nmero de precios); cree canales de comando (channel_id nmero, cname varchar2 (20));
cree tiendas de comando (shop_id nmero, dirjase a varchar2 (20)); cree das de comando (day_id nmero,
fecha de da);/*pre-create los ndices para ser usados para constraints*/crean el ndice nico prod_pk
en productos (product_id); cree el ndice nico chan_pk en canales (channel_id); cree el ndice nico
shop_pk en tiendas (shop_id); cree el ndice nico day_id durante das (day_id); cree el ndice nico
sales_pk en ventas (sale_id); los ndices de bitmap de/*create en las columnas de dimensin del hecho
table*/crean el ndice de bitmap sales_chan en ventas (channel_id); cree el ndice de bitmap sales_prod
en ventas (product_id); cree el ndice de bitmap sales_shop en ventas (shop_id); cree el ndice de
bitmap sales_date en ventas (day_id); los/*add la clave primaria constraints/* cambia productos de
comando aaden la coaccin prod_pk clave primaria (product_id); cambie los canales de comando aaden
la coaccin chan_pk clave primaria (channel_id); cambie las tiendas de comando aaden la coaccin
shop_pk clave primaria (shop_id); cambie los das de comando aaden la coaccin day_pk clave primaria
(day_id); cambie ventas de comando aaden la coaccin sales_pk clave primaria (sale_id); los/*add la
clave fornea constraints*/cambia ventas de comando aaden la coaccin sales_prod_fk clave fornea
(product_id) productos de referencias; cambie ventas de comando aaden la coaccin sales_chan_fk clave
fornea (channel_id) canales de referencias; cambie ventas de comando aaden la coaccin sales_shop_fk
clave fornea (shop_id) tiendas de referencias; cambie ventas de comando aaden la coaccin
sales_day_fk clave fornea (day_id) das de referencias;/*create las secuencias para claves primarias:
cache muchos valores para la comando de hecho, pero no prepublican valores para el en gran parte
esttico
532
Captulo 12:
Creacin de Otros Objetos de Esquema



tablas de dimensin. Esto guardar algunos memory*/crean la secuencia sales_seq cache 1000; cree
la secuencia product_seq nocache; cree la secuencia channel_seq nocache; cree la secuencia shop_seq
nocache; cree la secuencia day_seq nocache; los/*create una vista para analizar ventas en varios
dimensions*/crea la vista sales_analysis como cname escogido, pname, direccin, da, suman
(cantidad) el total de ventas, canales, productos, tiendas, das donde grupo de ventas
channel_id=channels.channel_id y de ventas product_id=products.product_id y de ventas
shop_id=shops.shop_id y de ventas day_id=days.day_id agrupando SETs ((cname, pname, direccin, da),
(direccin, pname), (pname, da));
A
Sobre el CD


































Copyright 2008 por El Clic de McGraw-Hill Companies, Inc aqu para trminos de uso.
534
Apndice: Sobre el CD
El CD-ROM incluido con este libro viene completo de MasterExam y una versin
electrnica del libro. El software es fcil a instalar en cualquier Windows 98/NT/2000/XP/Vista
el comandoador y debe ser instalado para tener acceso al aspecto de MasterExam. Usted
puede, sin embargo,
hojee el libro electrnico directamente del CD sin la instalacin. Para registrar para un segundo
sobresueldo MasterExam, simplemente haga clic en el enlace de Formacin en Lnea en la Pgina
Principal y siga las direcciones al gratis en lnea registro.



Requisitos del sistema
El software requiere el Windows 98 o ms alto e Internet Explorer 5.0 o encima y
20 mb de espacio en el disco duro para instalacin llena. El libro electrnico requiere el
Adobe Acrobat Reader.

Instalar y Ejecutar MasterExam
Si su lector de CD-ROM de comandoador es configurado al automvil ejecutado, el
CD-ROM va
automticamente inicialize para insertar el disco. De la pantalla inicial usted puede instalar
MasterExam pulsando el botn MasterExam. Esto comenzar el proceso de instalacin y
crear un grupo de programa llamado "LearnKey". Para ejecutar MasterExam, navegue para
Comenzar | Programas | LearnKey. Si el automvil aspecto ejecutado no lanzara su CD,
ojeada al CD e hiciera clic en el LaunchTraining.exe icono.

MasterExam
MasterExam le provee de una simulacin del examen actual. El nmero de
las preguntas, el tipo de preguntas, y el tiempo permitido son queridos para ser una
representacin exacta del entorno de examen. Usted tiene la opcin de tomar un examen
de libro abierto, incluso indirectas, referencias, y respuestas; un examen de libro cerrado; o
la simulacin de MasterExam calculada.
Cuando usted lanza MasterExam, una visualizacin de reloj digital aparecer en la
esquina izquierda superior de su pantalla. El reloj seguir contando al revs al cero a
menos que usted decida terminar el examen antes de que el tiempo expire.




Libro electrnico
Apoyo tcnico
535
Los contenido enteros del Manual son proporcionados en PDF. El Lector de Acrbata del
Adobe
ha sido incluido en el CD.

Ayuda
Un archivo de ayuda es proporcionado por el botn de ayuda en la pgina principal en el
izquierdo inferior
esquina. Un aspecto de ayuda individual tambin est disponible por MasterExam.


Borrar Instalacin (ones)
MasterExam es instalado a su disco duro. Para los mejores resultados para retiro de
programas
use el Principio | Programas | LearnKey | No instalan opciones de borrar MasterExam.

Apoyo tcnico
Para preguntas en cuanto al contenido tcnico del libro electrnico o MasterExam,
por favor visite www.osborne.com o enve por correo electrnico
customer.service@mcgraw-hill.com. Para clientes fuera de los 50 Estados Unidos, enve
por correo electrnico international_cs@mcgraw-hill.com.

Apoyo tcnico de LearnKey
Para problemas tcnicos con el software (instalacin, operacin, borrando
instalaciones), por favor visite www.learnkey.com o enve por correo electrnico
techsupport@learnkey.com.
Esta pgina intencionadamente se dej en blanco
Glosario










A

Atomicity cido, consecuencia, aislamiento, y durabilidad. Cuatro caractersticas
que una base de datos relacional debe ser capaz de mantener para transacciones.

ADDM Base de datos Automtica Monitor Diagnstico. Un instrumento que genera
informes de afinacin de rendimiento basados en fotos en el AWR.

AES Estndar de Cifrado Avanzado. Un mtodo de cifrado de datos extensamente
usado.

AL16UTF16 Unico de SET de caracteres de 2 bytes de anchura fija, comnmente
especificado para el SET de caracteres NLS usado para NVARCHAR2, NCHAT, y
tipos de datos NCLOB.

alias En Red de Oracle, un indicador a una cuerda conectar. Un alias debe ser
resuelto en la direccin de un oyente y el nombre de un servicio o instancia.

Americano de ANSI Instituto de Estndares Nacional. Un cuerpo estadounidense
que define varios estndares relevantes para la informtica.




Copyright 2008 por El Clic de McGraw-Hill Companies, Inc aqu para trminos de uso.
538
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Examen



Interfaz para programas de aplicacin de API. Un mtodo definido para manipular datos,
tpicamente puestos en prctica como un SET de procedimientos PL/SQL en un paquete.

ASCII de ASCII. Un estndar (con muchas variaciones) para codificar cartas y otros carcteres
como bytes.

ASM direccin de Almacenamiento Automtica. Un LVM provedo de la base de datos de Oracle.

atribuya Un elemento de un tuple (aka una columna).

AVG Una funcin que divide la suma de una columna o expresin por el nmero de filas no nulas
en un grupo.

B

proceso subordinado Un proceso que es la parte del instancia: lanzado en inicializador.

BFILE Un tipo de datos de objeto grande que es almacenado como un archivo de sistema
operativo. El valor en la columna de comando es un indicador al archivo.

ligue la variable que Un valor pas de un proceso de usuario a una select SQL en el tiempo de
ejecucin de select.

Binario de GOTA Objeto Grande. Un tipo de datos de GLOBO para datos binarios, como
fotografas y clips de vdeo.

bl o c k T h e u n i t s o f s t o r un g e i n t o w h i c h d un t un f i l e s un r e f o r m de un t t e d. T h e s i z e c un n b e 2
kilobyte, 4 kilobyte, 8 kilobyte, 16 kilobyte, 32 kilobyte, o 64 kilobyte. Algunas plataformas no
permitirn todas estas tallas.

C

El producto cartesiano a Veces llamaba una juntura enfadada. Un trmino matemtico que
se refiere al SET de datos creados fusionando las filas de dos o ms tablas.

Hora central europea de CET. Un huso horario us en la mayor parte de Europa (aunque no Gran
Bretaa) que es una hora delante de la hora universal coordinada con el horario de verano en efecto
durante los meses de verano.
Glosario
539



SET de caracteres El sistema que codifica para representar datos dentro de bytes. Los SETs de
caracteres diferentes pueden almacenar carcteres diferentes y pueden no ser convenientes para todas las
lenguajejes. Los SETs de caracteres de Unicode pueden almacenar cualquier carcter.

compruebe la coaccin Una regla simple hecha cumplir por la base de datos que restringe los valores
que pueden ser entrados en una columna.

la arquitectura cliente-servidor Un paradigma de procesamiento donde la aplicacin est dividida
en el software de cliente que se relaciona con el software de servidor y usuario que se relaciona con los
datos.

Carcter de CLOB Objeto Grande. Un tipo de datos de GLOBO para datos de carcter, como
documentos de texto, almacenados en el SET de caracteres de base de datos.

agrpese Un entorno de hardware donde ms de un comandoador comparte el acceso al
almacenamiento. Una base de datos RAC consiste en varios instancias en varios comandoadores que abren
una base de datos en el almacenamiento compartido.

el racimo segmenta Un segmento esto que puede contener una o varias tablas, denormalized en una
estructura sola.

FNDASE Una funcin que devuelve el primer valor no nulo de su lista de parmetro. Si todos sus
parmetros son nulos, entonces un valor nulo es devuelto.

columna Un elemento de una fila: las tablas son estructuras de dos dimensiones, divididas
horizontalmente en filas y verticalmente en columnas.

destine A hacer permanente un cambio en datos.

recuperacin completa Despus de restaurar de archivos de base de datos daados, esto se aplica
cada uno rehace para poner la base de datos al da sin la prdida de datos.

conecte el identificador Un alias de Red de Oracle.

conecte la cuerda Los detalles de conexin a la base de datos tenan que establecer una sesin: la
direccin del oyente y el servicio o nombre de instancia.

la copia de seguridad consecuente Una copia de seguridad hecha mientras la base de datos est
cerrada.
540
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Examen



coaccin Un mecanismo para hacer cumplir reglas de datos: que un valor de columna debiera
ser nico o slo puede contener ciertos valores. Una coaccin de clave primaria especifica que la
columna debe ser tanto nica como no nula.

controle archivan El archivo que contiene indicadores al resto de la base de datos, informacin
de secuencia crtica, y el depsito RMAN.

Unidad central de proceso de unidad central de proceso. El chip que proporciona la
capacidad de procesamiento de un comandoador, como Intel Pentium o un Sol SPARC.

D

bloques de datos Las unidades en las cuales los ficheros de datos son formateados.

el diccionario de datos Las tablas posedas por SYS en el SISTEMA tablespace que definen
la base de datos y los objetos dentro de ella.

el diccionario de datos visualiza Vistas en las tablas de diccionario de datos que dejan al
DBA investigar el estado de la base de datos.

los datos guardan Una instalacin por lo cual una copia de la base de datos de produccin es
creada y actualizada (posiblemente en tiempo real) con todos los cambios aplicados a la base de
datos de produccin.

los datos bombean Una instalacin para transferir cantidades grandes de datos en la alta
velocidad en, de, o entre bases de datos.

el cache de memoria intermedia de base de datos Un rea de memoria en el SGA
usado para trabajar en bloques copi de ficheros de datos.

enlace de base de datos Una conexin de una base de datos al otro, basado en un nombre de
usuario y contrasea y una cuerda conectar.

fichero de datos La estructura basada en el disco para almacenar datos.

Administrador de Base de datos de DBA. La persona responsable de crear y manejar bases de
datos de Oracle - esto podra ser usted.
Glosario
541



El papel de DBA Un papel presembrado asegur la compatibilidad con versiones anteriores que incluye
todos los privilegios tena que manejar una base de datos, salvo que necesario para inicializar o apagar.

DBCA El Ayudante de Configuracin de Base de datos. Un instrumento de GUI para creacin,
modificacin, y cada de instancias y bases de datos.

Sistema de administracin de bases de datos de DBMS. A menudo usado de modo intercambiable con
RDBMS.

DBWn o DBWR El Escritor de Base de datos. El proceso subordinado responsable de escribir bloques
cambiados desde la base de datos almacena el cache en un buffer a los ficheros de datos. Un instancia puede
tener hasta 10 procesos de escritor de base de datos, DBW0 por DBW9.

Lenguaje de Definicin de Datos de DDL. El subconjunto de SQL manda que el cambio objete
definiciones dentro del diccionario de datos: CREE, CAMBIE, CIGASE, y TRUNCADO.

estanque Una situacin donde dos sesiones bloquean el uno al otro, tal que ninguno puede hacer nada.
Los puntos muertos son descubiertos y resueltos automticamente por la base de datos.

DECODIFIQUE Una funcin que pone en prctica "si entonces ms" lgica condicional probando dos
trminos de la igualdad y devolviendo el tercer trmino si ellos son iguales o, opcionalmente, devolviendo
algn otro trmino si ellos no son.

el paso directo Un mtodo de entrada-salida en ficheros de datos que evita el cache de memoria
intermedia de base de datos.

objeto de directorio Un directorio de Oracle: un objeto dentro de la base de datos que seala a un
directorio de sistema operativo.

Lenguaje de Manipulacin de Datos de DML. El subconjunto de SQL manda que datos de cambio dentro
de la base de datos: INERTE, ACTUALIZACIN, BORRAR, y FUSIN.

DHCP Protocolo de Configuracin de Servidor Dinmico. El estndar para configurar las caractersticas
de red de un comandoador, como su direccin IP, en un entorno que cambia donde los comandoadores
pueden ser movidos de una posicin al otro.

Servicio de Nombre de dominio de sistema de nombres de dominio. El mecanismo de TCP para
resolver la red llama en direcciones IP.
542
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Examen



el dominio El SET de valores un atributo es permitido tomar. Terminologa: las tablas tienen
filas; las filas tienen columnas con valores. O: las relaciones tienen tuples; los tuples tienen
atributos con valores tomados de su dominio.

Sistema de apoyo para la toma de decisiones de DSS. Una base de datos, como un depsito de
datos, optimizado para ejecutar preguntas en comparacin con trabajo de OLTP.

E

fcil conectan Un mtodo de establecer una sesin contra una base de datos especificando la
direccin en el oyente y el nombre de servicio sin usar un alias de Red de Oracle.

EBCDIC Extended Binary Co ded Decimal Interchange Co de. Un estndar desarrollado por IBM
para codificar cartas y otros carcteres en bytes.

la variable de entorno Un SET variable en la cscara de sistema operativo que puede ser
usada por el software de aplicacin y por shell scripts.

equijoin Una condicin de juntura usando a un operador de igualdad.

F

el hecho tabula La comando central en un esquema de estrella, con columnas para valores
relevantes para la fila y columnas usadas como claves forneas a las tablas de dimensin.

FGA Revisin de Grained fina. Una instalacin para rastrear el acceso de usuario a datos basados
en las filas que son vistas o manipuladas.

la copia de seguridad llena que Una copia de seguridad que contiene todos los bloques de
los archivos hizo una copia de seguridad, no slo aquellos bloques cambi desde la ltima copia de
seguridad.

G

Hora media de Greenwich GMT. Ahora referido como hora universal coordinada, esto es el huso
horario del meridiano por el Observatorio de Greenwich en Londres.
Glosario
543



la computacin grid Una arquitectura donde la entrega de un servicio a usuarios finales no es atada a
ciertos recursos de servidor, pero puede ser proporcionada de dondequiera en un fondo de recursos.

EL GRUPO POR Una clusula que especifica las filas de atributo que se agrupan debe tener en comn
para ellos para ser agrupado juntos.

Interfaz grfica de usuario de GUI. Una capa de una aplicacin que deja a usuarios trabajar con la
aplicacin por un terminal grfico, como un comandoador personal con un ratn.

H

Protocolo de transmisin de hipertexto de HTTP. El protocolo que habilita el World Wide Web (ambos
inventados en la Organizacin europea para la Investigacin Nuclear en 1989), esto es un protocolo
acodado que atropella el TCP/IP.

Seal de Pleamar de HWM. Esto es el ltimo bloque de un segmento que ha estado alguna vez bloques
usados encima de esto son la parte del segmento, pero todava no son formateados para el uso.

Yo

La entrada-salida Introdujo/salida. La actividad de lectura de o escritura a discos a menudo el punto
ms lento de una operacin de informtica.

IBM International Business Machines. Un hardware conocido, software, y compaa de servicios.

la copia de seguridad inconsecuente Una copia de seguridad hecha mientras la base de datos
estaba abierta.

INITCAP Una funcin que acepta una serie de carcteres y devuelve cada palabra en el instancia de ttulo.

la copia de seguridad incremental que Una copia de seguridad que contiene slo bloquea lo que
ha sido cambiado desde la ltima copia de seguridad fue hecha.
544
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Examen



la juntura interior Cuando equijoins y nonequijoins son realizados, filas de la fuente y apuntan
tablas es emparejada. stos se mencionan como junturas interiores.

INSTR Una funcin que devuelve la posicin posicional del acontecimiento ensimo de una
serie especificada de carcteres en una cuerda de la fuente.

la recuperacin de instancia La reparacin automtica del dao causada por un cierre
descomandoado de la base de datos.

ndice de IOT Comando Organizada. Un tipo de comando donde las filas son almacenadas en los
bloques de hoja de un segmento de ndice.

Protocolo Internet de IP. Juntos con el Protocolo de Control de Transmisin, TCP/IP: el
protocolo de comunicacin estndar de facto usado para la comunicacin de cliente/servidor sobre
una red.

Protocolo de Comunicaciones de Interproceso de IPC. El protocolo especfico para la
plataforma, proporcionado por su vendedor OS, usado para procesos que se ejecutan en la misma
mquina para comunicarse el uno con el otro.

Organizacin internacional para la normalizacin Organizacin internacional para
Estandarizacin. Un grupo que define muchos estndares, incluso SQL.

J

J2EE Java 2 Edicin de Empresa. El estndar para desarrollar aplicaciones de Java.

JOIN.ON Una clusula que permite la especificacin explcita de columnas de juntura sin tener en cuenta
sus nombres de columna. Esto proporciona un formato de conexin flexible.

JOIN.USING Una sintaxis que permite que una juntura natural sea formada en columnas especficas con
nombres compartidos.

la 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 vez de en una
comando grande.
Glosario
545



JVM Java Mquina Virtual. El entorno de tiempo de ejecucin necesario para ejecutar cdigo escrito en
Java. El oracle proporciona un JVM dentro de la base de datos, y habr el que proporcionado por su
sistema operativo.

L

LAST_DAY Una funcin sola obtener el da anterior en un mes dado cualquier artculo de fecha
vlido.

LDAP Protocolo de Acceso de Directorio Ligero. La realizacin de TCP del estndar de directorio X25,
usado por el Directorio de Internet de Oracle para resolucin de nombre, seguridad, y autenticacin. LDAP
tambin es usado por otros vendedores de software, incluso Microsoft e IBM.

LA LONGITUD Una funcin que computa el nmero de carcteres en una cuerda incluso espacios y
carcteres especiales.

Escritor de Registro de LGWR. El proceso subordinado responsable de limpiar con agua vectores de
cambio de la memoria intermedia de registro en la memoria al en lnea rehace archivos histricos en el disco.

el cache de biblioteca Una estructura de memoria dentro del fondo compartido, usado para esconder
select SQL analizado en su forma ejecutable.

el oyente El proceso de lado del servidor que escucha para solicitudes de conexin a la base de datos de
procesos de usuario y lanza procesos de servidor para establecer sesiones.

VOLEE POR ALTO el Objeto Grande. Una estructura de datos que es demasiado grande para
almacenar dentro de una comando. Los GLOBOS (El oracle apoya varios tipos) son definidos como
columnas de una comando, pero son fsicamente almacenados en un segmento separado.

registre cambian La accin de cerrar un grupo de archivo histrico en lnea y abrir al otro; provocado
por el proceso de LGWR que llena el primer grupo.

LVM gerente de Volumen Lgico. Una capa de software que abstrae el almacenamiento fsico dentro de su
comandoador del almacenamiento lgico visible a una aplicacin.
546
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Examen



M

Monitor de Manejabilidad de MMON. El proceso subordinado responsable de informacin de
supervisando de rendimiento creciente y levantamiento de alarmas.

MOD La operacin de mdulo, una funcin que devuelve el resto de una operacin de divisin.

MONTHS_BETWEEN Una funcin que computa el nmero de meses entre dos parmetros de
fecha dados y est basada durante un mes de 31 das.

la base de datos montada Una situacin donde el instancia ha abierto el archivo de control
de base de datos, pero no el en lnea rehace archivos histricos o los ficheros de datos.

Tiempo medio de MTBF entre frainstancia. Una medida de la duracin media de duracin para
una base de datos entre cierres inesperados.

Tiempo medio de MTTR para recuperar. El tiempo medio esto toma para poner la base de datos
a disposicin para el uso normal despus de un frainstancia.

multiplexin Mantener copias mltiples de archivos.

N

el namespace Una agrupacin lgica de objetos dentro de los cuales ningunos dos objetos
pueden tener el mismo nombre.

la juntura natural Una juntura realiz la utilizacin de la sintaxis de JUNTURA NATURAL
cuando la fuente y las tablas objetivo son implcitamente equijoined usando todas las columnas
idnticamente llamadas.

NCLOB Carcter Nacional Objeto Grande. Un tipo de datos de GLOBO para datos de carcter,
como documentos de texto, almacenados en el SET de caracteres de base de datos nacional
alternativo.

NETBEUI NETBIOS Interface de Usuario Extenso. Una versin realzada de NETBIOS.

La Red de NETBIOS Ingreso Bsico Salida el Sistema. El protocolo de comunicaciones de red
que fue quemado en la primera tarjeta de red aquella IBM alguna vez producida.
Glosario
547



NLS Apoyo de Lenguaje Nacional. La capacidad de la base de datos de Oracle de apoyar a muchos
entornos ahora lingsticos, geogrficos, y culturales por lo general se refera como a la globalizacin.

nodo Un comandoador adjuntado a una red.

el nonequijoin Realizado cuando los valores en las columnas de juntura realizan la condicin de
juntura basada en una expresin de desigualdad.

nu l l T h e un b s e n c e o f un v un l u e, yo n d i c un t i n g t h un t t h e v un l u e i s n o t k n o w n, m de i s s i n g, o inaplicable.

NULLIF Una funcin que prueba dos trminos de la igualdad. Si ellos son iguales, las vueltas de funcin
nulas; ms esto devuelve el primer de los dos trminos probados.

NVL Una funcin que devuelve el artculo original sin alterar o un artculo alternativo si el trmino inicial
es nulo.

NVL2 Una funcin que devuelve un nuevo si - artculo nulo si el artculo original es nulo o una
alternativa si no el artculo nulo si el trmino original no es nulo.

O

Contenedores de Oracle de OC4J para J2EE. La estructura de control provey por el Servidor de
Aplicacin de Oracle para ejecutar programas de Java.

Oracle de OCA Socio Certificado.

Interface de Llamada de Oracle de OCI. Un API, publicado como un SET de bibliotecas C, que los
programadores pueden usar para escribir procesos de usuario que usarn una base de datos de Oracle.

Oracle de OCP Profesional Certificado. La calificacin usted trabaja hacia.

ODBC Conectividad de Base de datos Abierta. Un estndar se desarroll por Microsoft para
comunicarse con bases de datos relacionales. El oracle provee a un driver ODBC que permitir a clientes
Microsoft que se ejecuta conductos pro para conectar a una base de datos de Oracle.
548
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Examen



la copia de seguridad fuera de lnea Una copia de seguridad hecha mientras la base de
datos est cerrada.

OLAP Procesamiento Analtico en Lnea. Seleccione preguntas de ejecutando de implicacin de
trabajo intensivas contra una base de datos (por lo general) grande. El oracle proporciona
capacidades OLAP como una opcin, adems de las instalaciones de pregunta estndares.

OLTP Procesamiento de Transaccin en Lnea. Un modelo de actividad dentro de una base de
datos tipificada por un gran nmero de pequeo, corto, transacciones.

la copia de seguridad en lnea Una copia de seguridad hecha mientras la base de datos est
abierta.

en lnea rehaga el registro Los archivos a los cuales los vectores de cambio son
derramados por el LGWR.

Sistema operativo de OS. Tpicamente, en el entorno de Oracle, esto ser una versin de Unix
(quizs Linux) o Microsoft Windows.

El protocolo de comunicaciones patentado del Oracle de Red de oracle, acodado encima de
un protocolo de estndar de industria.

ORACLE_BASE El directorio raz en el cual los productos de Oracle son instalados.

ORACLE_HOME El directorio raz de cualquier producto de Oracle.

la juntura externa que Una juntura realiz cuando filas, que no son recuperadas por una
juntura interior, es incluida para la recuperacin.

P

analice Una accin que converte select SQL en una forma conveniente para la ejecucin.

Programa de PGA rea Global. La variable puso la talla al bloque de la memoria usada para
mantener el estado de una sesin de base de datos. PGAs son privados a la sesin y controlado por
el proceso de servidor de la sesin.

PL/SQL Lenguaje de Pregunta de Lenguaje/Estructurar Procesal. El lenguajeje de programacin
patentado del oracle, que combina construcciones procesales, como control de flujo, y capacidades
de interface de usuario con SQL.
Glosario
549



Monitor de Proceso de PMON. El proceso subordinado responsable de supervisar el estado de las
sesiones del usuario contra un instancia.

la clave primaria La columna (o la combinacin de columnas) cuyo valor (es) puede ser usado para
identificar cada fila en una comando.

la proyeccin La restriccin de columnas seleccionada de una comando. Usando la proyeccin, usted
slo recupera las columnas del inters y no cada columna posible.

R

RAC Verdaderos Racimos de Aplicacin. La tecnologa que se agrupa del oracle, que permite que varios
instancias en mquinas diferentes abran la misma base de datos para escalabilidad, rendimiento, y tolerancia
de falta.

ASALTE la Matriz Redundante de Discos Baratos. Tcnicas para realzar rendimiento y/o tolerancia de
falta usando a un gerente de volumen para presentar varios discos fsicos al sistema operativo como un disco
lgico solo.

dispositivo crudo Una particin de disco o disco no formateada.

Sistema de gestin de Base de datos relacional de RDBMS. A menudo usado de modo intercambiable
con DBMS.

Memoria de acceso aleatorio de RAM. Los chips que arreglan la verdadera memoria en su hardware, a
diferencia de la memoria virtual presentada al software por el sistema operativo.

la integridad de referencia que Una regla defini en una comando que especifica que los valores en
una columna (o columnas) deben trazar un mapa en aquellos de una fila en otra comando.

relacin Una estructura de dos dimensiones que consiste en tuples con atributos (aka una comando).

REEMPLACE Una funcin que substituye cada acontecimiento de un artculo de bsqueda en la
cuerda de la fuente con un trmino de reemplazo y devuelve la cuerda de la fuente modificada.
550
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Examen



Gerente de Recuperacin de RMAN. La copia de seguridad del oracle e instrumento de
recuperacin.

rowid El identificador nico de cada fila en la base de datos, usada como un indicador a la
posicin fsica de la fila.

S

el esquema Los objetos posedo por un usuario de base de datos.

Nmero de Cambio de Sistema de SCN. El nmero que incrementa continuamente sola rastrear
la secuencia y el tiempo exacto de todos los acontecimientos dentro de una base de datos.

segmente Un objeto de base de datos, dentro de un esquema, que almacena datos.

seleccin La extraccin de filas de una comando. La seleccin incluye la restriccin adicional
de las filas extradas basadas en varios criterios o condiciones. Esto permite que usted slo
recupere las filas que son del inters y no cada fila en la comando.

autunase Una juntura requiri 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.

secuencia Un objeto de base de datos, dentro de un esquema, que puede generar
nmeros consecutivos.

el nombre de servicio Un nombre lgico registrado por un instancia con un oyente,
que puede ser especificado por un proceso de usuario cuando cuestiones a conecta la
solicitud.

sesin Un proceso de usuario y un proceso de servidor, conectado al instancia.

Sistema de SGA rea Global. El bloque de memoria compartida que contiene las
estructuras de memoria que arreglan un instancia de Oracle.

SID (1) Identificador de Sistema. El nombre de un instancia, que debe ser nico en el
comandoador el instancia se ejecuta en. (2) Identificador de Sesin. El nmero sola
identificarse nicamente una sesin entr en el sistema a un instancia de Oracle.
Glosario
551



Monitor de Sistema de SMON. El proceso subordinado responsable de abrir una base de datos y
supervisar el instancia.

archivo de parmetro de Servidor de spfile. El archivo que contiene los parmetros sola construir un
instancia en la memoria.

SQL Lenguaje de Pregunta Estructurada. Una lenguaje de norma internacional para extraer datos de y
manipular datos en bases de datos relacionales.

SSL Capa de Enchufes Segura. Un estndar para asegurar transmisin de informacin, usando cifrado,
checksumming, y certificados digitales.

SUBSTR Una funcin que extrae y devuelve un segmento de una cuerda de la fuente dada.

SUME Una funcin que devuelve un total agregado de todos los valores de expresin numricos no nulos
en un grupo.

sinnimo Un nombre alternativo para un objeto de base de datos.

el sysdba El privilegio que deja a un usuario conectar con sistema operativo o autenticacin de archivo
de contrasea y crear, inicialize, y apague una base de datos.

los sysoper El privilegio que deja a un usuario conectar con sistema operativo o autenticacin de
archivo de contrasea e inicializar y apagan (pero no crean) una base de datos.

el sistema Un esquema presembrado usado con objetivos de administracin de base de datos.

T

t un bl e Un l o g i c un l t w o - d i m e n s i o n un l d un t un s t o r un g e s t r u c t u r e, c o n s i s t i n g o f r o w s un n d columnas.

tablespace La estructura lgica que extractos almacenamiento de datos lgico en tablas de
almacenamiento de datos fsico en ficheros de datos.
552
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Examen



Protocolo de Control de Transmisin de TCP. Juntos con el protocolo Internet, TCP/IP: el
protocolo de comunicacin estndar de facto usado para la comunicacin de cliente/servidor sobre
una red.

TCP de TCPS con SSL. La versin de enchufes segura de TCP.

el tempfile El almacenamiento fsico que arregla tablespace temporal, usado para almacenar
segmentos temporales.

TNS Red Transparente Substrate. El corazn de Red de Oracle, un protocolo acodado patentado
que se ejecuta encima de cualquier red subyacente transporta el protocolo usted decide usar
probablemente el TCP/IP.

TO_CHAR Una funcin que realiza fecha al carcter y conversiones de tipo de datos de nmero al
carcter.

TO_DATE Una funcin que explcitamente transforma artculos de carcter en valores de
fecha.

TO_NUMBER Una funcin que cambia artculos de carcter en valores de nmero.

la transaccin Una unidad lgica del trabajo que completar en total o en absoluto.

tuple Una estructura de una dimensin que consiste en atributos (aka una fila).

U

Usuario de UGA rea Global. Aquella parte del PGA que es almacenado en el SGA para sesiones
que pasan a servidores compartidos.

Interface de Usuario de UI. La capa de una aplicacin que se comunica con usuarios finales hoy
da, con frecuencia grficos: un GUI.

URL de URL. Un estndar para especificar la posicin de un objeto en Internet que consiste en un
protocolo, un nombre de sistema central y dominio, un nmero de puerto de IP, un paso y nombre
del archivo, y una serie de parmetros.
Glosario
553



Hora universal coordinada Tiempo universal Coordinado. Antes conocido como la Hora media de
Greenwich (GMT), la hora universal coordinada es la zona de hora oficial global; todos los otros estn
relacionados con ello como compensaciones, delante o detrs.

X

El X-Windows que El entorno de GUI estndar us en la mayor parte de comandoadores, excepto
aquellos que ejecutan el Microsoft Windows.

XML Lenguaje de Maquetacin Extensible. Un estndar para el intercambio de datos usando
documentos, donde el formato de los datos es definido por etiquetas dentro del documento.
Esta pgina intencionadamente se dej en blanco
NDICE




SMBOLO tipos de datos alfanumricos, 458
CAMBIE el comando, 506-507
% (smbolo de porcentaje), 120-121 & (signo ""). Ver la substitucin de signo "" () (parntesis), 384; (los puntos y
coma), 65 _ (subrayan el carcter), 120-122 || (dobles smbolos de tubo). Ver el carcter
el operador de encadenamiento "(doblan citas), 454 '(citas solas), 77-81 3GLs (lenguajejes de la tercera
generacin), 10

A
permisos de acceso, 412
Prueba de fuego
atomicity, 428 consecuencia, 429 definido, 537 durabilidad, 429-430 aislamiento, 429
preguntas ad hoc, 147 funcin de ADD_MONTHS, 173, 208-211 ADDM (Base de datos Automtica Diagnstica
Monitor), 537 Estndar de Cifrado Avanzado (AES), 537 opcin Avanzada, 36 AES (Estndar de Cifrado
Avanzado), 537 obteniendo agregado, 275 funciones de agregacin. Ver funciones de grupo SET de caracteres de
AL16UTF16, 537 aliases, 61, 74, 537 TODO el operador
funciones de grupo, 275 subconsultas, 365, 370
CAMBIE el comando de NDICE, 517 CAMBIAN el comando de COMANDO, 475-476 cambian comandos de
usuario, 42 CAMBIAN el comando de VISTA, 493-496 Instituto de Estndares Nacional americano (ANSI),
23, 537 Cdigo Estndar americano para la informacin
Intercambio (ASCII), 538 substitucin de signo ""
para nombres de columna, 147 DEFINEN el comando, 149-154 doble, 145-147 para expresiones, 147-149
descripcin, 142-143 single, 143-145 para el texto, 147-149 comando de UNDEFINE, 149-154 VERIFICAN el
comando, 149-150, 154-156
Y operador, 126-128 ANSI (Instituto de Estndares Nacional americano),
23, 537 CUALQUIER operador, 365, 370 Interfaz para programas de aplicacin (API), 538 servidor de
Aplicacin, 5-7 instrumento de Control de Servidor de Aplicacin, 8 capa de aplicacin, 6 arquitectura, 3-5
operadores aritmticos, 70-73 COMO palabra clave, 75-76 comandoacin de ascensin, 137-138 ASCII (Cdigo
Estndar americano para la informacin
Intercambio), 538 ASM (direccin de Almacenamiento Automtica), 538 atomicity, 428



Copyright 2008 por El Clic de McGraw-Hill Companies, Inc aqu para trminos de uso.
556
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Gua de Examen (Examen 1Z0-051)



atributos, definidos, 538. Tambin ver columnas comando de AUTOCOMMIT, 435-436 Base de datos
Automtica Monitor Diagnstico
(ADDM), 537 direccin de Almacenamiento Automtica (ASM), 538 funcin de AVG, 281-282, 538

B
ndices de B*Tree, 470, 511-513
los procesos subordinados, 538 opcin Bsica, 36 ENTRE el operador, de 113 aos, 116-119, 331 tipo de datos
BFILE, 459, 538 tipo de datos binarios, 458 Objeto Grande Binario (GOTA) tipo de datos, 55, 459, 538 ligan
variables, 538 ndices de bitmap, 513-515 clculos de caja negra, 170-171 preguntas ciegas, 60, 63 GOTA (Objeto
Grande Binario) tipo de datos, 55, 459, 538 bloques, definidos, 538 operadores Booleanos
Y, 126-128 contra operadores de comparacin, 135 clusula que TIENE, 298 NO, 131-132 y ENTRE
operador, 117-118 O, 128-131 y filas, 104
expresiones acorchetadas, 70, 132

C
Opcin de CACHE, 503
Productos cartesianos
definido, 310, 538 descripcin, 314 de dos o ms tablas, 342-346
funciones de conversin de instancia. Ver el instancia de carcter
la conversin funciona la expresin de INSTANCIA, 254, 257-261



El CD-ROM incluido con el libro
archivo de ayuda, 535 software de LearnKey, 535 aspecto de MasterExam, 534 descripcin, 533-534 instalacin
que borra, 535 Manual, 535 requisitos del sistema, 534 apoyo tcnico, 535
CDs, compaero, 43 Hora central europea (CET), 538 unidades centrales de proceso (unidades centrales de
proceso), 540 CET (Hora central europea), 538 tipo de datos de TRABAJO POR HORAS, 55, 458 funciones de
conversin de instancia de carcter
INITCAP, 179-182, 543 ms ABAJO, 177-179 descripcin, 171 SUPERIOR, 179
encadenamiento de carcter (||) operador
funciones de manipulaciones de carcter, 183 y expresiones, 70 y valores NULOS, 84 descripcin, 75-76
conversin de carcter
convertir fechas a, 235-240 nmeros que converten a, 232-235 a fechas, 231, 241-242 a nmeros, 230, 242-244
Carcter Objeto Grande (CLOB) tipo de datos,
459, 539 carcter datos literales, 65 funciones de manipulaciones de carcter
CONCAT, 183-184 INSTR, 189-190 LONGITUD, 184-185 LPAD, 186-187 descripcin, 171 REEMPLAZAN,
193-196 RPAD, 186-187 SUBSTR, 190-193 NETO, 187-189




SETs de caracteres, 539 cadenas de caracteres
convertir nmeros en, 235 conversiones implcitas, 229
versin de carcter, SQL*Plus, 28 condiciones basadas en el carcter, 107-110 coacciones de control, 473, 539
capa de cliente
SQL, 4 aplicaciones web, 6
herramientas de cliente
Developer de SQL
AUTOCOMMIT mandan en, 435-436 conexiones a la base de datos, 35-37 instalar y lanzamiento, 33-34
Interface de Usuario, 34-35
SQL*Plus
AUTOCOMMIT mandan en, 435-436 conexiones a la base de datos, 30-32 en Linux, 27-28 descripcin, 26
en Windows, 28-30
la arquitectura cliente-servidor, 4, 539 CLOB (Carcter Objeto Grande) tipo de datos, 459, 539 segmentos de
racimo, 539 racimos, 6, 539 SE FUNDE la funcin, 247, 253-254, 539 columna aliasing, 74-75, 384 nombres de
columna
substitucin de signo "" por, 147 calificacin ambigua, 317-318
columnas. Tambin ver ttulos de columnas especficas
la creacin de tablas con especificaciones, 462-464 tipos de datos disponibles para, 457-461 definido, 456, 539
agrupacin por mltiple, 291-294 en esquema de HORA, 40-41
Columna de COMM, 463 DESTINAN el comando, 409, 427, 431-432 comisin, definida, 539 CDs de
compaero, 43
ndice



operadores de comparacin. Tambin ver DONDE clusula
ENTRE, 116-119, 331 contra operadores Booleanos, 135 igualdad, 113-116 EN, 119-120, 365, 369 desigualdad,
113-116 es NULA, 126 COMO, 120-125, 182 subconsultas de fila mltiple, 365-366 descripcin, 113
subconsultas de fila sola, 365-366
parmetros de comparacin, 255-256 recuperacin completa, 539 vistas complejas, 492-493 ndices compuestos,
515-516 operadores de desigualdad compuestos, 115 coacciones nicas claves compuestas, 470 llaves compuestas,
18 comandoacin compuesta, 139-142 preguntas compuestas, 382 funcin de CONCAT, 171, 183-184 operador de
encadenamiento. Ver el carcter
operador de encadenamiento clusulas condicionales, 113 expresiones condicionales
funciones condicionales
Expresin de INSTANCIA, 257-261 DECODIFICAN la funcin, 254-257
funciones generales
FNDASE, 253-254 NULLIF, 249-252 NVL, 247-248 NVL2, 248-249
funciones que anidan, 245-246 funciones condicionales
Expresin de INSTANCIA, 257-261 DECODIFICAN la funcin, 254-257
operadores condicionales
expresiones basadas en el carcter, 109-110 y NO operador, 131 DONDE clusula, 105
557
558
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Gua de Examen (Examen
1Z0-051)



conecte identificadores, 539 conectan cuerdas, 539 reunin de conexin, 7 botones tipos radios de Tipo de
Conexin, 36 conexiones, indirectas, 4 consecuencia, 429 copias de seguridad consecuentes, 539 palabra clave
de COACCIN, 494 coacciones
definido, 405, 412, 450, 540 definicin, 473-477 descripcin, 469 tipos de
compruebe, 473, 539 clave fornea, 471-472 no nulo, 470-471 clave primaria, 471 nico, 470
controle archivos, 540 transacciones de control
transacciones de base de datos
Prueba de fuego, 428-430 principio y final de, 430-431
descripcin, 427-428 select de control de transaccin
AUTOCOMMIT mandan, 435-436 DESTINAN el comando, 432 descripcin, 431 comando de
ROLLBACK, 433-434 comando de SAVEPOINT, 434-435 ESCOGIDO PARA el comando de
ACTUALIZACIN,
436-438 funciones de conversin
descripcin, 174, 228-229 TO_CHAR
convertir fechas a utilizacin de carcteres,
235-240
convertir nmeros a utilizacin de carcteres,
232-235 definido, 228, 552 descripcin, 231-232



TO_DATE
convertir carcteres a utilizacin de fechas,
205-206, 241-242 definido, 228 descripcin, 231-232
TO_NUMBER
convertir carcteres a utilizacin de nmeros,
243-244 definido, 228, 552 descripcin, 231-232
tipos de
conversin de tipo de datos explcita, 231 conversin de tipo de datos implcita, 229-230
El Tiempo universal coordinado (hora universal coordinada), 553 subconsultas correlacionadas, 366-369 funcin
de CONDE, 275, 279-280 comando de COUNTRIES, 41, 55-56 unidades centrales de proceso (unidades
centrales de proceso), 540 CREA el comando, 506-507 CREAN el comando de ESQUEMA, 38 CREAN la select
de COMANDO, 477 CREAN el comando de USUARIO, 38 CREAN el comando de VISTA, 493-496 junturas
enfadadas
la creacin de productos Cartesianos con, 342-346 definido, 310, 538 descripcin, 314
patas de gallo, 19 columna pseudo CURRVAL, 504 opcin de CICLO, 503

D
bloques de datos, 540
Lenguaje de Control de datos (DCL) comandos, 24 datos, definidos, 53 Lenguaje de Definicin de Datos (DDL)
comandos, 24 definido, 541 tablas
el cambio de definiciones, 465-466




coacciones, 469-477 creacin de subconsultas, 464-465 creacin con especificaciones de columna,
462-464 tipos de datos disponibles para columnas, 457-461 cada, 466-469 objetos de base de datos
principales, 450-456 estructura de comando, 456-457 truncamiento, 466-469
diccionarios de datos, 53, 540 vistas de diccionario de datos, 540 ficheros de datos, definidos, 540 guardias de datos,
540 Lenguaje de Manipulacin de Datos (DML)
definido, 541 BORRAR comando, 407-408 frainstancias de, 409-412 filas de generacin para ser pasadas a
select,
363-364 comando de INSERCIN, 405-406 comando de FUSIN, 408-409 descripcin, 24, 404-405 comando
TRUNCADO, 409 comando de ACTUALIZACIN, 406-407 y vistas, 492-493
modelos de datos, 22 normalizacin de datos, 14-22 bombas de datos, 540 extraccin de datos. Ver la select
SENTENCIA
ndice



Sistema de administracin de bases de datos (DBMS), 541 capa de base de datos, 6 transacciones de base de datos
Prueba de fuego, 428-430 principio y final de, 430-431
Escritor de base de datos (DBWn o DBWR), 541 instrumento de Datapump, 405-406 fecha funciones incorporadas
aritmtica de fecha, 205-206 almacenamiento de fecha, 202-204 SYSDATE, 204-205
conversin de fecha
a carcteres, 229, 235-240 carcteres que converten a, 241-242
Tipo de datos de FECHA, 55, 458, 460 mscaras de formato de fecha, 236-238 literales de fecha, 190 funciones de
manipulacin de fecha
ADD_MONTHS, 208-211 LAST_DAY, 213-214 MONTHS_BETWEEN, 207-208 NEXT_DAY, 211-213
descripcin, 173, 206 RONDA, 214-216 TRUNC, 216-217, 460
almacenamiento de fecha, 202-204 condiciones basadas en la fecha, 110-113 da del parmetro de semana, 211-212
DBAs (Administradores de Base de datos), 540-541
559
comandoacin de datos, 137-142 capa de datos, 6 tipos de datos, 457-46. Tambin ver nombres de tipos de datos
especficos, Administradores de Base de datos (DBAs), 540-541 caches de memoria intermedia de base de datos, 540
Ayudante de Configuracin de Base de datos (DBCA), 541 conexiones a la base de datos
indirecto, 4 Developer SQL, 35-37 SQL*Plus, 30-32
Instrumento de Control de base de datos, 8 enlaces de base de datos, 498, 540 entrada en el sistema de base de
datos, 29
DBCA (Ayudante de Configuracin de Base de datos), 541 DBMS (Sistema de administracin de bases de
datos), 541 DBWn o DBWR (Escritor de Base de datos), 541 DCL (Lenguaje de Control de Datos)
comandos, 24 DDL. Ver la Lenguaje de Definicin de Datos mscara de formato de DD-MON-RR, 203
puntos muertos, definidos, 541 botn Debug, 35 parmetro de precisin decimal, 197, 199 Sistemas de apoyo
para la toma de decisiones (DSS), 14, 542 DECODIFICAN la funcin, 254-257, 541 clusula POR
DEFECTO, 464 formato de fecha por defecto, 111
560
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Gua de Examen (Examen
1Z0-051)



Palabra clave POR DEFECTO, 462 DEFINEN el comando, 149-154 BORRAR comando
borrar filas de tablas con, 423-425 descripcin, 407-408
esquemas de pruebas
la creacin, 42-43 HORA, 38-42 OE, 38-42 descripcin, 37
La comando de DEPARTMENTS, 41, 55 comandoacin de bajada, 137-138 DESCRIBE el comando, 53-57, 228
tablas de detalle, 489 DHCP (Protocolo de Configuracin de Servidor Dinmico), 541 pasos directos, 541
objetos de directorio, 541 sucio lee, 429 datos de pruebas de tablas mltiples
Productos cartesianos, 342-346 clusula JOIN.ON, 322-326 JUNTURA... LA UTILIZACIN De clusula,
321-322 clusula de JUNTURA NATURAL, 319-321 nonequijoins, 329-331 N-camino junturas, 327-329
junturas externas, 334-342 descripcin, 310-311 nombres de columna ambiguos eliminatorios, 317-318
autojunturas, 331-334 sintaxis SQL:1999, 316-317 tipos de junturas, 311-316
Palabra clave DISTINTA, 61, 105, 279 parmetro de dividendo, 200 parmetro de divisor, 200 DML. Ver el
Servicio de Nombre de dominio de Lenguaje de Manipulacin de Datos (sistema de nombres de dominio), 541
dominios, definidos, 542 nota de punto, 317-318 doble substitucin de signo "", 145-147 dobles smbolos de
tubo (||). Ver el carcter
operador de encadenamiento



doble citas ("), 454 comando de GOTA, 466 comando de VISTA DE GOTA, 493-496 tablas que se caen, 466-469
DSS (Sistemas de apoyo para la toma de decisiones), 14, 542 comando DUAL, 54, 77, 248 durabilidad, 429-430
Protocolo de Configuracin de Servidor Dinmico (DHCP), 541

E
fcil conecta, 542
EBCDIC (Decimal codificado en binario Extenso
Cdigo de intercambio), 542 botn Edit, 35 comando de EMPLOYEES, 41, 55 columna EMPNO, 463 columna
ENAME, 463 sesiones de usuario final, 6-7 gerente de Empresa, 544 entidades. Ver el diagrama de relacin de la
entidad de tablas, 19 variables de entorno, 542 operadores de igualdad, de 105 aos, 113-116, 370. Tambin ver
DONDE clusula equijoins, 310-311, 542 mensajes de error
conexin a la base de datos, 32 "ORA-00904: identificador invlido", 108 "ORA-00918:column ambiguamente
definidos", 317 "ORA-00923: DE palabra clave no encontrada
donde esperado", 73, 75 "ORA-00932: tipos de datos inconsecuentes", 253 "ORA-00934: la funcin de grupo
no es permitida
aqu", 290
"ORA-00935: la funcin de grupo es anidada tambin
profundamente", 287
"ORA-00937: grupo de ni-un-solo-grupo
funcione", 290 "ORA-00942: la comando o la vista no existen", 73 "ORA-01427: la subpregunta de fila sola
vuelve ms
que una fila", 367, 371, 420




"Foto de ORA-1555 demasiado vieja", 429 "parte de ORA-25154:column de USAR clusula
no puede tener el calificador", 317






funciones generales





G
ndice
561
Identificador de FUGA, 123-124 conversin de tipo de datos explcita, 231 expresiones. Tambin ver expresiones
condicionales
substitucin de signo "" por, 147-149 INSTANCIA, 254, 257-261 columna aliasing y, 74-75 comando DUAL,
77 valores literales, 77
Cdigo de Intercambio de Decimal codificado en binario extenso
(EBCDIC), 542 Lenguaje de Maquetacin Extensible (XML), 553 grados, 425, 456

F
tablas de hecho, 542
FGA (Grained fino que Revisa), 542 espacios. Ver que botn File de columnas, 35 llenan el modo (de) el operador,
236, 238, 240-241 Grained finos que Revisan (FGA), 542 primera forma normal, 15-16 tipo de datos de
FLOTADOR, 458 de (llene el modo) el operador, 236, 238, 240-241 PARA la clusula de ACTUALIZACIN, 438
palabra clave de FUERZA, 494 coacciones de clave fornea, 471-472 claves forneas, 18, 85-88 nombres oficiales,
194-195 mscaras de formato, 203-204 parmetro de formato, 232 DE la clusula, 358 copias de seguridad llenas, 542
junturas externas llenas, 338-342 funciones. Tambin ver nombres de funciones especficas
la fila mltiple, 175-176 funcionamiento en datos de carcter, 171-172 funcionamiento en informacin de
fecha, 173 funcionamiento en datos numricos, 172-173
FNDASE, 253-254, 539 NULLIF, 249-252, 547 NVL, 247-248, 547 NVL2, 248-249, 547 descripcin, 247
GMT (Hora media de Greenwich), 542 prctica buena, 66-69 Interfaces grficas de usuario (GUIs), 543
versin grfica, SQL*Plus, 28 Hora media de Greenwich (GMT), 542 computacin grid, 8-9, 543
instrumento de Control de Reja, 8 GRUPO POR clusula
la creacin de grupos de datos, 287-288 definido, 543 agrupacin por columnas mltiples, 291-294 y
TENER clusula, 298 funciones de grupo que anidan, 285 descripcin, 288-291
funciones de grupo
AVG, 281-282, 538 CONDE, 275, 279-280 definido, 274-275 GRUPO POR clusula
la creacin de grupos de datos, 287-288 agrupacin por columnas mltiples, 291-294 descripcin,
288-291
TENER clusula
descripcin, 296-299 resultados de grupo de restriccin, 294-296
MAX, 282-285 MINUTOS, 282-285 anidar, 285-287 descripcin, 175 contra funciones de fila sola, 213
SUMA, 280-281, 551 sintaxis de, 275-278 tipos de, 275-278
562
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Gua de Examen (Examen
1Z0-051)



filas agrupadas
descripcin, 296-299 resultados de grupo de restriccin, 294-296
la agrupacin de atributo, 288, 291 resultados de nivel del grupo, 295 GUIs (Interfaces grficas de usuario), 543

H
racimos de picadillo, 462
desmenuce junturas, 492, 511 clusula que TIENE
descripcin, 296-299 resultados de grupo de restriccin, 274, 294-296
tablas de montn, 462 seal de pleamar (HWM), 425-426, 543 columna HIREDATE, DE 463 HORAS
(Recursos humanos) esquema de pruebas,
38-42 HTTP (protocolo de transmisin de hipertexto), 543 Recursos humanos (HORA) pruebas
esquema, 38-42 HWM (seal de pleamar), 425-426, 543 protocolo de transmisin de hipertexto (HTTP), 543

Yo
IBM (International Business Machines), 543
lgica "si entonces ms", 228, 254 conversin de tipo de datos implcita, 229-230 precedencia implcita, 391 EN
operador, de 113 aos, 119-120, 365, 369 copias de seguridad inconsecuentes, 543 INCREMENTO POR
opcin, 503 copias de seguridad incrementales, 543 sangra, 66-69 racimos de ndice, 462 ndice Tablas
Organizadas (IOTs), 462, 544



ndices
la creacin, 515-517 definido, 452 cada, 517-520 modificacin, 517-520 descripcin, 509 objetivo de, 510-511
tipos de, 511-515 utilizacin, 515-517
conexiones a la base de datos indirectas, 4 operadores de desigualdad, 113-116 funcin de INITCAP, 171,
179-182, 543 vistas de inline, 362 junturas interiores
definido, 544 contra externo, 335-336
las preguntas interiores, 358 parmetros de ingreso, 170, 176 introdujeron/salida (entrada-salida), definida, 543
comando de INSERCIN, 5, 405-406 anomalas de introduccin, 15-16 Developer SQL que instala, 33-34
recuperacin de instancia, 544 instancias, 3-4 funcin de INSTR (en la cuerda), 172, 189-190, 544 tipo de datos de
NMERO ENTERO, 386, 458 International Business Machines (IBM), 543 Organizacin internacional para la
Estandarizacin
(La organizacin internacional para la normalizacin), 23, 544 protocolo Internet (IP), definido, 544 Protocolo
de Comunicaciones de Interproceso (IPC), 544 CRUZA al operador de SET, 382, 388-389 DA DE INTERVALO
AL SEGUNDO tipo de datos, 459 AO DE INTERVALO AL TIPO DE DATOS DE MES, 459 entrada-salida
(introdujo/salida), definido, 543 IOTs (ndice Tablas Organizadas), 462, 544 IP (protocolo Internet), definido,
544 IPC (Protocolo de Comunicaciones de Interproceso), 544 SON el operador NULO, de 113 aos, 126




Organizacin internacional para la normalizacin (Organizacin internacional para
Estandarizacin), 23, 544 aislamiento, 429

J






columnas claves, 470





K



L
ndice
563
Java la 2 Edicin (J2EE), 6, 544 de Empresa Entorno de Tiempo de ejecucin de Java (JRE), 33 Java Mquina
Virtual (JVM), 545 comando JOB_HISTORY, 41, 55 comando de JOBS, 41, 55 clusula JOIN.ON
definido, 544 utilizacin de tablas que se une, 331-334 descripcin, 313, 322-326, 328
junturas
cruz
la creacin de productos Cartesianos con, 342-346 definido, 310, 538 descripcin, 314
definido, 58, 544 equijoins, 310-311, 542 picadillo, 492, 511 interior, 335-336, 544 natural, 312-314, 546 anid el
bucle, 491-492, 511 nonequijoins, 310, 329-331, 547 N-camino, 327-329 externo
definido, 310, 548 lleno, 338-342 contra interior, 335-336 dejado, 336-337 descripcin, 314, 334-335 derecho,
337-338
descripcin, 311-312 autojunturas, 310, 331-334, 346, 550 fusin de clase, 511 sintaxis de, 314-316
JUNTURA... LA UTILIZACIN De clusula, 313, 321-322, 544 JRE (Entorno de Tiempo de ejecucin de Java),
33 JVM (Java Mquina Virtual), 545
Objeto grande (GLOBO) tipos de datos, 450, 459, 545
La funcin de LAST_DAY, 173, 213-214, 545 variable LD_LIBRARY_PATH, 27 LDAP (Protocolo de Acceso
de Directorio Ligero), 545 software de LearnKey, 534, 535 junturas externas izquierdas, 336-337 funcin de
LONGITUD, 171, 184-185, 545 LGWR (registran al escritor) el proceso, 545 caches de biblioteca, 545
Protocolo de Acceso de Directorio Ligero (LDAP), 545 COMO el operador, de 113 aos, 120-125, 182 Linux,
SQL*Plus en, 27-28 oyentes, 545 valores literales, 65, 77, 190 GLOBO (Objeto Grande) tipos de datos, 450, 459,
545 comando de LOCATIONS, 41, 55-56 accin de conmutador de registro, 545 escritor de registro (LGWR)
proceso, 545 almacenamiento lgico, 13 gerente de Volumen Lgico (LVM), 545 inicio de sesin/de de ciclo, 4
tipo de datos LARGO, 459 tipo de Datos iniciales LARGO, 459 funcin INFERIOR, 171, 177-179 minscula,
escribiendo select de SQL en, 64-65 funcin de LPAD, 172, 186-187 LVM (gerente de Volumen Lgico), 545

M
objetos de base de datos principales
namespaces, 455-456 objetos de esquema de nombramiento, 453-455 esquemas, 452-453 tipos de, 450-452
usuarios, 452-453
564
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Gua de Examen (Examen
1Z0-051)



Monitor de manejabilidad (MMON), 546 datos de manipulacin
transacciones de control
transacciones de base de datos, 428-431 descripcin, 427-428 select de control de transaccin, 431-438
borrar filas de tablas
BORRAR comando, 423-425 comando de FUSIN, 426-427 comando TRUNCADO, 425-426
Select de DML
BORRAR comando, 407-408 frainstancias de, 409-412 comando de INSERCIN, 405-406 comando de
FUSIN, 408-409 descripcin, 404-405 comando TRUNCADO, 409 comando de ACTUALIZACIN,
406-407
insertar filas en tablas, 413-418 filas de actualizacin en tablas, 419-422
relacin "muchos a muchos", 20-21 relacin "muchos a un", 18 relacin de detalle del maestro, 335 aspecto de
MasterExam, 534 funcin de MAX, 282-285 opcin MAXVALUE, 503 tiempo medio entre frainstancia
(MTBF), 546 tiempo medio para recuperar (MTTR), 546 comando de FUSIN
borrar filas de tablas con, 426-427 descripcin, 404, 408-409
metadata, definido, 53 capa media, 6 botn Migrate, 35 funcin de MINUTO, 282-285 MENOS operador de
SET, 382, 389 opcin MINVALUE, 503 MMON (Monitor de Manejabilidad), 546 funcin de MOD (mdulo),
173, 199-202, 546 funcin de MONTHS_BETWEEN, 173, 207-208, 546 bases de datos montadas, 546



MTBF (tiempo medio entre frainstancia), 546 MTTR (tiempo medio para recuperar), 546 funciones de fila
mltiple. Ver subconsultas de fila mltiple de funciones de grupo, 365-366, 369-372 multiplexin, 546

N
namespaces, definido, 546
Carcter nacional Objeto Grande (NCLOB) datos
tipo, 459, 546 Apoyo de Lenguaje Nacional (NLS), 116,
232-233, 547 clusula de JUNTURA NATURAL, 312, 319-321 junturas naturales, 312-314, 546 palabra clave
NATURAL, 323, 346 botn Navigate, 35 NCLOB (Carcter Nacional Objeto Grande) datos
el tipo, 459, 546 parmetro de posicin de principio negativo, 192 anid junturas de bucle, 491-492, 511 anidar
funciones
CONCAT, 183 descripcin, la 245-246 fila sola, 174, 287
subconsultas, 358 NETBEUI (NETBIOS Usuario Extenso
Interface), 546 NETBIOS (Red Ingreso Bsico Salida
Sistema), 546 NETBIOS Interface de Usuario Extenso
(NETBEUI), 546 Red Ingreso Bsico Salida Sistema
(NETBIOS), 546 funcin de NEXT_DAY, 173, 211-213 columna pseudo NEXTVAL, 504 NLS (Apoyo de
Lenguaje Nacional),
116, 232-233, 547 valor de NLS_CURRENCY, 232




Parmetro de base de datos de NLS_DATE_LANGUAGE,
211-212 vista de NLS_SESSION_PARAMETERS, 232





O
objete namespaces, 455-456
ndice
565
nodos, definidos, 547 palabra clave NOFORCE, 494 nonequijoins, 310, 329-331, 547 ndices no nicos, 511
normalizacin, 10-11, 22 NO EN operador, 361, 365 no coacciones nulas, 470-471 NO operador, 131-132
comparacin nula, 113, 126 valores nulos
definido, 55, 547 claves forneas y columnas nullable, 85-88 NO columnas NULAS, 82-84 columnas
NULLABLE, 82-84 descripcin, 81-82
Funcin de NULLIF, 247, 249-252, 547 NULLS PRIMERAS palabras claves, 137 NULLS LTIMAS palabras
claves, 137 conversin de nmero
a carcteres, 229, 232-235 carcteres que converten a, 242-244
Tipo de datos de NMERO, 458, 460 parmetro de nmero, 232 columnas numricas, 54 tipos de datos
numricos, 458 mscaras de formato numricas, 234 funciones numricas
MOD, 199-202, 546 descripcin, 172-173 RONDA, 196-198 TRUNC, 198-199
literales numricos, 190 condiciones basadas del modo numrico, 105-107 tipo de datos NVARCHAR2, 458
funcin de NVL, 247-248, 547 funcin de NVL2, 247-249, 547 N-camino junturas, 327-329
OC4J (Contenedores de oracle para J2EE), 547 OCAs (Oracle Socios Certificados), 547 OCI (Interface de
Llamada de Oracle), 10, 547 OCPs (Oracle Profesionales Certificados), 547 ODBC (Conectividad de Base
de datos Abierta), 547 OE (Entrada de Pedido) esquema de pruebas, 38-42 copias de seguridad fuera de lnea,
548 OLAP (Procesamiento Analtico en Lnea), 548 OLTP (Procesamiento de Transaccin en Lnea)
sistemas,
14, 548 EN coaccin BORRAR de CASCADA, 472 EN BORRAR SET coaccin NULA, 472 EN palabra
clave, 323, 346 filas cojas, 310 Procesamiento Analtico en Lnea (OLAP), 548 copias de seguridad en lnea,
548 Transaccin en Lnea que Trata (OLTP) sistemas,
14, 548 Conectividad de Base de datos Abierta (ODBC), 547 sistemas operativos (OS), definido, 548
operadores. Tambin ver nombres de operadores especficos
aritmtica, 70-73 Booleano
Y, 126-128 contra operadores de comparacin, 135 clusula que TIENE, 298 NO, 131-132 y ENTRE
operador, 117-118 O, 128-131 y filas, 104
encadenamiento de carcter
funciones de manipulaciones de carcter, 183 y expresiones, 70 y valores NULOS, 84 descripcin,
75-76
comparacin
ENTRE, 116-119, 331 contra operadores Booleanos, de 135 aos
566
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Gua de Examen (Examen
1Z0-051)



operadores (Cont).
la igualdad, 113-116 EN, 119-120, 365, 369 desigualdad, 113-116 es NULA, 126 COMO, 120-125, 182
subconsultas de fila mltiple, 365-366 descripcin, 113 subconsultas de fila sola, 365-366
condicional
expresiones basadas en el carcter, 109-110 y NO operador, 131 DONDE clusula, 105
SET
la combinacin de preguntas mltiples en solo,
386-392
el control del pedido de filas volvi,
393-395 principios generales de, 384-386 descripcin, 382-383 diagramas de Venn y, 383-384
las indirectas de optimizer, 517 U OPERADOR, 128-131 O REEMPLAZAN palabras claves, 494 "ORA-00904:
identificador invlido" error
mensaje, 108 "ORA-00918: la columna ambiguamente defini" el error
mensaje, 317 "ORA-00923: DE palabra clave no encontrada donde
" mensaje de error esperado, 73, 75 "ORA-00932: tipos de datos inconsecuentes" error
mensaje, 253 "ORA-00934: la funcin de grupo no es permitida aqu"
mensaje de error, 290 "ORA-00935: la funcin de grupo es anidada demasiado profundamente"
mensaje de error, 287 "ORA-00937: el grupo de ni-un-solo-grupo funciona"
mensaje de error, 290 "ORA-00942: la comando o la vista no existen"
mensaje de error, 73 "ORA-01427: la subpregunta de fila sola vuelve ms
que una fila" mensaje de error, 367, 371, 420



"Foto de ORA-1555 demasiado viejo" mensaje de error, 429 "ORA-25154: parte de columna de USAR clusula
no puede tener el calificador" mensaje de error, 317 servidor de Aplicacin de Oracle, 5-7 Interface de Llamada
de Oracle (OCI), 10, 547 Oracle Socios Certificados (OCAs), 547 Oracle Profesionales Certificados (OCPs), 547
Contenedores de Oracle para J2EE (OC4J), 547 gerente de Empresa de Oracle, el 7-8 gerente de Empresa de
Oracle Application Server
Instrumento de control, el 8 gerente de Empresa de Oracle Database
Instrumento de control, el 8 gerente de Empresa de Oracle Grid Control instrumento, 8 Oracle instalacin de
software de Casa, 25 protocolo de Red de Oracle, 4, 548 Oracle Espacial, 453 directorio raz ORACLE_BASE,
27, 548 conexin orcl_sys, 34 PEDIDO POR clusula
la ascensin de comandoacin, 137-138 comandoacin compuesta, 139-142 preguntas compuestas, 385
comandoacin de bajada, 137-138 pedido de filas, 393 descripcin, 136 comandoacin posicional, 139
Entrada de pedido (OE) esquema de pruebas, 38-42 opcin de PEDIDO, 503 Organisation Internationale de
Normalisation
(Organizacin internacional para la normalizacin), 23, 544 parmetro original, 247, 249 filas quedadas
hurfanas, 310 OS (sistemas operativos), definidos, 548 junturas externas
definido, 310, 548 lleno, 338-342 contra interior, 335-336 dejado, 336-337 descripcin, 314, 334-335 derecho,
337-338
preguntas externas, 358






paradigmas, definidos, 2





P




descripcin, 386-387 UNIN TODO el operador, 387 operador de UNIN, 387-388
ndice
567
relacin de nio paternal, 335 parntesis (), 384 anlisis sintctico, definido, 548 tablas divididas, 462 variable de
PASO, 27-28 comparacin de modelo, 113, 120-125, smbolo de 182 porcentajes (%), 120-121 PGAs (Programa
reas Globales), 548 almacenamiento fsico, 13 PL/SQL (Pregunta de Lenguaje/Estructurar Procesal
Lenguaje), 10, 170, 548 PMON (Monitor de Proceso), 549 nota posicional, 413 comandoacin posicional, 139
coacciones de clave primaria, 471 claves primarias, 15, 18, 471, 549 sinnimos privados, 498-501 lenguajejes
procesales, 25, 170 Lenguaje de Pregunta de Lenguaje/Estructurar Procesal
(PL/SQL), 10, 170, 548 Monitor de Proceso (PMON), 549 Programa reas Globales (PGAs), 548 proyeccin,
57, 104, 549 columnas pseudo, 504 sinnimos pblicos, 498-501 signos de puntuacin, 238 junturas naturales puras,
312, 314

Q
q (cotizacin) operador, 77-81
preguntas. Tambin ver subconsultas
ad hoc, 147 ciego, 60, 63 combinacin mltiple en solo
los ejemplos complejos, 390-392 CRUZAN al operador, 388-389 MENOS EL OPERADOR, 389
compuesto, 382 forma genrica, 142 interior, 358 filas restrictivas recuperadas por
Operadores booleanos, 126-132 operadores de comparacin, 113-126 reglas de precedencia,
132-135 DONDE clusula, 104-113
externo, 358 repetido, 147 filas de comandoacin recuperadas por, 136-142
cotizacin (q) operador, 77-81

R
RACs (Verdaderos Racimos de Aplicacin), 5, 549
botones tipos radios, Tipo de Conexin, 36 INCURSIN (Matriz redundante de Barato
Discos), 549 Memoria de acceso aleatorio (RAM), 549 comparacin de variedad, 113, 116-119, 331.
Ver
ENTRE tipo de Datos iniciales de operador, 458 dispositivos crudos, 549 RDBMS (direccin de Base
de datos relacional
Sistema), 2, 549 legibilidad, afirmaciones de SQL y, 66-69 Verdaderos Racimos de Aplicacin
(RACs), 5, 549 archivos. Ver a gerente de Recuperacin de filas (RMAN), 550 Matriz Redundante de
Discos Baratos
(INCURSIN), 549 integridad de referencia, 549 comando de REGIONS, 41, 55-56 variables de
Registro, 30 lgebra relacional, 57, 382 Sistema de gestin de Base de datos relacional
(RDBMS), 2, 549
568
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Gua de Examen (Examen
1Z0-051)



estructuras relacionales. Tambin ver tablas
normalizacin de datos, 14-22 descripcin, 10-11 filas, 11-14 tablas, 11-14
teora relacional, 57 relaciones, definidas, 549. Ver que tambin las tablas repitieron que las preguntas, 147
REEMPLAZAN la funcin, 172, 193-196, 549 parmetro de trmino de reemplazo, 193 obteniendo agreg
datos
Funcin de AVG, 281-282 funcin de CONDE, 279-280 definido, 274-275 GRUPO POR clusula, 287-294
clusula que TIENE, 294-299 funcin de MAX, 282-285 funcin de MINUTO, 282-285 anidar, 285-287
funcin de SUMA, 280-281 sintaxis de, 275-278 tipos de, 275-278
restriccin de datos
Operadores booleanos, 126-132 operadores de comparacin, 113-126 reglas de precedencia, 132-135 DONDE
clusula, 104-113
junturas externas correctas, 336, 337-338 RMAN (gerente de Recuperacin), 550 Papel se cae la caja, 36
comando de ROLLBACK, 409, 427, 431, 433-434 rollbacks, 412 funcin REDONDA
fecha, 214-216 numrico, 172, 196-198
Tipo de datos de ROWID, 459 identificador rowid, 512, 550 resultados de nivel de la fila, 294 filas
el control de pedido de devuelto, 393-395 definido, 456



borrar de tablas
BORRAR comando, 423-425 comando de FUSIN, 426-427 comando TRUNCADO, 425-426
incluso o excluyendo agrupado, 294-299 insertar en tablas, 406, 413-418 limitacin recuperada
Operadores booleanos, 126-132 operadores de comparacin, 113-126 reglas de precedencia, 132-135
DONDE clusula, 104-113
descripcin, 11-14 comandoacin recuperada, 136-142 subconsultas para generacin, 363-364 actualizacin en
tablas, 419-422
Funcin de RPAD, 172, 186-187 botn Run, 35 encuadernacin de tiempo de ejecucin. Ver la substitucin de
tiempo de ejecucin de substitucin de signo "". Ver la substitucin de signo ""

S
Columna de SAL, 463
SAVEPOINT mandan, 427-428, 431, 434-435 subconsultas escalares, 358 objetos de esquema
ndices
la creacin, 515-517 definido, 452 cada, 517-520 modificacin, 517-520 descripcin, 509 objetivo de,
510-511 tipos de, 511-515 utilizacin, 515-517
el nombramiento, 453-455 secuencias
la creacin, 502-504 definido, 452, 550 descripcin, 488, 501-502 utilizacin, 504-509




sinnimos, 452, 498-501, 551 vistas
CAMBIE VISTA, 493-496




nonequijoins, 329-331 N-camino junturas, 327-329 descripcin, 310-311
ndice
569
complejo, 492-493 CREAN LA VISTA, 493-496 diccionario de datos, 540 definido, 452 VISTA DE GOTA,
493-496 para hacer cumplir la seguridad, 489-490 inline, 362 para hacer datos comprensibles, 491
descripcin, 488-489 para el rendimiento, 491-492 para prevenir errores, 490-491 datos que recuperan de,
497-498 simple, 492-493 para simplificar al usuario SQL, 490
calificacin a nombres de columna ambiguos,
317-318 sintaxis SQL:1999, 316-317 tipos de junturas, 311-316
ejecucin
expresiones, 74-75, 77 valores nulos, 81-88 operadores, 70-73, 75-76, 77-81 reglas, 64-69 sintaxis, 59-64
forma general usando ANSI SQL:1999 sintaxis, 316 descripcin, 52-53 operadores de SET, 382 funciones de fila
sola en
esquemas
definido, 38, 452-453, 550 pruebas
la creacin, 42-43 HORA, 38-42 OE, 38-42 descripcin, 37
SCN (Nmero de Cambio de Sistema), 550 variable de BSQUEDA, 145 expresin de INSTANCIA buscada,
forma normal de 257 segundos, 17 Capa de Enchufes Segura (SSL), 551 segmentos, definidos, 550 ESCOGIDO
PARA comando de ACTUALIZACIN, 436-438 select SENTENCIA
la aplicacin de expresiones condicionales en
funciones condicionales, 254-261 funciones generales, 247-254 funciones que anidan, 245-246
las capacidades de, 57-58 DESCRIBEN el comando de Comando, 53-57 datos de pruebas de tablas mltiples
con
Clusula de JOIN.ON, 322-326 JUNTURA... LA UTILIZACIN De clusula, 321-322 clusula de
JUNTURA NATURAL, 319-321
conversin de instancia de carcter, 177-182 manipulaciones de carcter, 183-196 fecha
incorporada, 202-206 manipulacin de fecha, 206-217 numrico, 196-202
subconsultas, 362 expresiones substitutivas y texto, 147
seleccin, 58, 104, 550 autojunturas, 310, 331-334, 346, 550 coacciones de clave fornea que se
autorefieren, 472 claves forneas que se autorefieren, 39 puntos y coma (;), 65 secuencias
la creacin, 502-504 definido, 452, 550 descripcin, 488, 501-502 utilizacin, 504-509
archivo de parmetro de servidor (spfile), 551 tecnologas de servidor
arquitectura, 3-5 Computacin grid, 8-9 lenguajejes, 9-10 servidor de Aplicacin de Oracle, 5-7 gerente
de Empresa de Oracle, 7-8 descripcin, 2
570
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Gua de Examen (Examen
1Z0-051)



la capa de servidor, 4 nombres de servicio, 550 Identificador de Sesin (SID), 550 sesiones, definieron, 4, 550
comando de SET, 152, 154 comparacin de SET, 113, 119-120, 365, 369.
Ver EN SET de operador DEFINEN comando de ON|OFF, 152 operadores de SET
la combinacin de preguntas mltiples en solo
los ejemplos complejos, 390-392 CRUZAN al operador, 388-389 MENOS EL OPERADOR, 389
descripcin, 386-387 UNIN TODO el operador, 387 operador de UNIN, 387-388
el control del pedido de filas volvi, 393-395 principios generales de, 384-386 descripcin, 382-383 diagramas
de Venn y, 383-384
LISTE el comando NO USADO, 466 SGA (Sistema rea Global), 550 SID (Identificador de Sesin), 550 SID
(Identificador de Sistema), 550 expresin de INSTANCIA simple, 257 vistas simples, 492-493 substitucin de
signo "" sola, 143-145 citas solas ('), 77-81 valores solos, 285 funciones de fila sola
conversin de instancia de carcter
INITCAP, 179-182, 543 ms ABAJO, 177-179 descripcin, 171 SUPERIOR, 179
manipulaciones de carcter
CONCAT, 183-184 INSTR, 189-190 LONGITUD, 184-185 LPAD, 186-187 descripcin, 171
REEMPLAZAN, 193-196



RPAD, 186-187 SUBSTR, 190-193 NETO, 187-189
fecha incorporada
aritmtica de fecha, 205-206 almacenamiento de fecha, 202-204 SYSDATE, 204-205
manipulacin de fecha
ADD_MONTHS, 208-211 LAST_DAY, 213-214 MONTHS_BETWEEN, 207-208 NEXT_DAY, 211-213
descripcin, 173, 206 RONDA, 214-216 TRUNC, 216-217, 460
numrico
MOD, 199-202, 546 descripcin, 172-173 RONDA, 196-198 TRUNC, 198-199
descripcin, 170-171 subconsultas de fila sola, 365-366, 369-372 SMON (Monitor de Sistema), 551 junturas de
fusin de clase, 511 datos de comandoacin, con PEDIDO POR clusula, 136-142 botn Source, 35 parmetro de
nmero de la fuente, 197, 199 tablas de la fuente, 311, 408 spfile (archivo de parmetro de servidor), 551 SQL. Ver
la Lenguaje de Pregunta Estructurada Developer de SQL
AUTOCOMMIT mandan en, 435-436 conexiones a la base de datos, 35-37 instalar y lanzamiento, 33-34
Interface de Usuario, 34-35
Herramienta de SQL*Loader, 405 SQL*Plus
AUTOCOMMIT mandan en, 435-436 conexiones a la base de datos, 30-32 en Linux, 27-28 descripcin, 26 en
Windows, 28-30




Sintaxis de SQL:1999, 316-317 SSL (Capa de Enchufes Segura), 551 transformacin de estrella, 361-362
STAR_TRANSFORMATION_ENABLED
parmetro de inicializacin, 362






aliases de comando, 317 tablas
Select de DDL





T
ndice
571
COMIENCE CON la opcin, 503 afirmacin terminators, 65-66 funcin de STDDEV, 278 Lenguaje de Pregunta
Estructurada (SQL). Tambin ver
Select SENTENCIA
comandos, 23-24 definido, 551 lenguaje orientada al SET, 25 estndares para, 23
subconsultas
con objetivos de comparacin, 360-361 correlacionado, 366-369 tablas de creacin de, 464-465 definido, 358-360
para generar filas pasaron a select DML,
363-364 para generar tablas, 362 para generar valores para proyeccin, la 362 fila mltiple, 365-366, la
369-372 fila sola, 365-366, 369-372 para transformacin de estrella, 361-362
substitucin. Ver la substitucin de signo "" funcin de SUBSTR (subcuerda), 172, 190-193, 551 funcin de
SUMA, 280-281, 551 sinnimos, 452, 498-501, 551 errores de sintaxis, 410 usuario SYS, 453 funcin de SYSDATE,
173, 204-205 privilegio sysdba, 36, 551 privilegio sysoper, 551 Nmero de Cambio de Sistema (SCN), 550 Sistema
rea Global (SGA), 550 Identificador de Sistema (SID), 550 Monitor de Sistema (SMON), 551 usuario de
SISTEMA, 453 sistemas, definidos, 551
el cambio de definiciones, 465-466 coacciones, 469-477 creacin de subconsultas, 464-465 creacin con
especificaciones de columna, 462-464 tipos de datos disponibles para columnas, 457-461 cada, 466-469
objetos de base de datos principales, 450-456 estructura de comando, 456-457 truncamiento, 466-469
definido, 551 filas que borran de
BORRAR comando, 423-425 comando de FUSIN, 426-427 comando TRUNCADO, 425-426
la pruebas de datos de mltiple
Productos cartesianos, 342-346 clusula JOIN.ON, 322-326 JUNTURA... LA UTILIZACIN De
clusula, 321-322 clusula de JUNTURA NATURAL, 319-321 nonequijoins, 329-331 N-camino
junturas, 327-329 junturas externas, 334-342 descripcin, 310-311 nombres de columna ambiguos
eliminatorios,
317-318 autojunturas, 331-334 sintaxis SQL:1999, 316-317 tipos de junturas, 311-316
en esquema de HORA, 40-41 filas que insertan en, 413-418 descripcin, 11-14 relacin de nio paternal, 335
subconsultas para generacin, 362 filas de actualizacin en, 419-422
tablespaces, definido, 551 tablas objetivo, 311, 408
572
Base de datos de Oracle de OCA 11g: Fundamentos de SQL I Gua de Examen (Examen
1Z0-051)



TCL (Lenguaje de Control de Transaccin) comandos, 24 TCP (Protocolo de Control de Transmisin), 552
TCPS (Protocolo de Control de transmisin con SSL), 552 tempfile, 552 botn Test, 37 texto, substitucin de
signo "" por, 147-149 tercera forma normal, 17-18, 327 lenguajejes de la tercera generacin (3GLs), 10 tipo de
datos TIMESTAMP, 55, 387, 458 TIMESTAMP CON datos TIMEZONE LOCALES
tipo, 459 TIMESTAMP CON tipo de datos TIMEZONE, 459 TNS (Red Transparente Substrate), 552 opcin
TNS, 36 funcin de conversin TO_CHAR
convertir fechas a utilizacin de carcteres, 235-240 nmeros que converten a utilizacin de carcteres,
232-235 definido, 228, 552 descripcin, 231-232
Funcin de conversin de TO_DATE
convertir carcteres a utilizacin de fechas,
205-206, 241-242 definido, 228 descripcin, 231-232
Funcin de conversin de TO_NUMBER
convertir carcteres a utilizacin de nmeros,
243-244 definido, 228, 552 descripcin, 231-232
Instrumento para Desarrolladores de aplicaciones (TOAD), 5 botn Tools, 35 Lenguaje de Control de
Transaccin (TCL) comandos, 24 select de control de transaccin
AUTOCOMMIT mandan, 435-436 DESTINAN el comando, 432 comando de ROLLBACK, 433-434
comando de SAVEPOINT, 434-435 ESCOGIDO PARA el comando de ACTUALIZACIN, 436-438
aislamiento de transaccin, 437 transacciones, definidas, 427-428, 552 Protocolo de Control de Transmisin
(TCP), 552



Protocolo de Control de transmisin con SSL (TCPS), 552 Red Transparente Substrate (TNS), 552 errores de
transposicin, 410 funcin NETA, 172-173, 187-189 funcin de TRUNC (truncada)
fecha, 216-217, 460 numrico, 172, 198-199
Comando TRUNCADO
borrar filas de tablas con, 425-426 descripcin, 409
funcin truncada. Ver TRUNC funcionar truncando tablas, 466-469 tablas de verdad
NO Operador, 131 U OPERADOR, de 128 aos
tuples, definido, 552. Tambin ver filas modelo de dos niveles, 4 reparto de tipo, 410, 461

U
UGA (Usuario rea Global), 552
UIs. Ver interfaces de usuario NO DEFINIR el comando de COLNAME, 151 comando de UNDEFINE, 149-154
subrayan el carcter (_), 120-122 URLs (URLs), 552 UNIN TODO el operador de SET, 382, 385, 387, 393
operador de SET de UNIN, 339, 382, 387-388 coacciones nicas, 470 ndices nicos, 511 modelo de datos no
normalizado, 22 comando de ACTUALIZACIN, 406-407 funcin SUPERIOR, 171, 179 mayscula, escribiendo
select de SQL en, 64-65 URLs (URLs), 552 Usuario rea Global (UGA), 552 interfaces de usuario (UIs)
definido, 552 GUIs, 543 NETBEUI, 546 Developer SQL, 34-35




usuarios




definido, 452
ndice
573
definido, 38 conexin indirecta con base de datos, 4 descripcin, 452-453
LA UTILIZACIN de palabra clave, 322, 346 hora universal coordinada (Tiempo universal Coordinado), 553

V
valores
literal, 65, 77, 190 nulo
definido, 55, 547 claves forneas y columnas nullable, 85-88 NO columnas NULAS, 82-84 columnas
NULLABLE, 82-84 descripcin, 81-82
solo, 285 subconsultas para generacin, 362
Clusula de VALORES, 416 tipo de datos VARCHAR2, 54-55, 229, 386, 458, 460 variables
asignacin, 144 ligan variables, 538 entorno, 542 LD_LIBRARY_PATH, 27 PASO, 27-28 Registro, 30
BSQUEDA, 145
La funcin de DESACUERDO, 277 diagramas de Venn, 383-384 Venn, John, 383 VERIFICAN el comando,
149-150, 154-156 botn View, 35 vistas
CAMBIE LA VISTA, 493-496 complejo, 492-493 CREAN LA VISTA, 493-496 diccionario de datos, 540
DEJE CAER LA VISTA, 493-496 para hacer cumplir la seguridad, 489-490 inline, 362 descripcin,
488-489 para el rendimiento, 491-492 para prevenir errores, 490-491 datos que recuperan de, 497-498
simple, 492-493 para simplificar al usuario SQL, 490 utilizacin para hacer datos comprensibles, 491
virtualization, 8

W
la advertencia apremio, 407
aplicaciones web, definidas, 6 CUANDO... ENTONCES Select, 257 DONDE clusula
funciones de conversin de instancia, 182 condiciones basadas en el carcter, 107-110 condiciones
basadas en la fecha, 110-113 contra TENER clusula, 294, 296 y junturas, 328 subconsultas que
anidan, 358 condiciones basadas del modo numrico, 105-107 descripcin, 104-105 y filas, 274, 407,
465 subconsultas, 372 funcin de TO_DATE, 242
smbolos de comodn, 120-122 Windows, SQL*Plus en, 28-30 CON palabras claves de OPCIN DE
CONTROL, 494 CON LEDO SLO palabras claves, 494

X
XML (Lenguaje de Maquetacin Extensible), 553
X-Windows, 553
Qu sabe usted?
Demustrelo!
Use los Herramientas de Estudio Interactivos en el CD incluido de
LearnKey!

Usted va:
Descubra fuerzas y debilidades en su comprensin de objetivos de prueba
Construya el conocimiento y la confianza para el rendimiento ptimo durante el da de
prueba Prctica usando los mismos tipos de preguntas y guiones usted ver en el
examen Enfoque sus estudios de temas crticos Calibre su preparacin de tomar
exmenes de certificacin




P


LUS! Descuentos de Formacin de LearnKey especiales para
Osborne Customers!
Como usted compr un Manual de Osborne con un CD de pruebas integrado,
usted tiene derecho a ahorros increbles en cursos de formacin de LearnKey.

Guarde hasta el 60 % en la Formacin de multimedia de
LearnKey!

Courseware rico en el medio Motivacin de Instruccin
Desafo de Laboratorios Material de referencia Prctico &
Probado


Oferta Limitada en el tiempo - no TARDA
Vistenos en learnkey.com/osborne HOY!



1.800.865.0165 learnkey.com/osborne
2006 LearnKey, Inc. LK022102
SUSCRIPCIN LIBRE 578 Base de
datos de Oracle de OCA 11g: Fundamentos de SQL I Gua de Examen (Examen 1Z0-051)
S, por favor nvieme una suscripcin LIBRE a la Revista de Oracle.
Para recibir una suscripcin libre a la Revista de Oracle, usted debe llenar la tarjeta entera, firmarlo, y fecharlo




NO
(los naipes incompletos no pueden ser tratados o reconocidos). Usted tambin puede faxear su aplicacin a
+1.847.763.9638. O suscrbase en nuestro Sitio web en otn.oracle.com/oraclemagazine
De vez en cuando, la Publicacin de Oracle permite la firma (se requiere) feche a nuestros compaeros acceso exclusivo a
nuestras direcciones de correo electrnico para promociones especiales y anuncios. Ser incluido en esto pro- x
gramo, por favor compruebe este crculo.
La Publicacin de oracle permite compartir de nuestra lista de correo con terceros seleccionados. Si usted prefiere su direccin postal no ser incluida
en este programa, por favor compruebe aqu. Si en cualquier momento le gustara ser borrado de esta lista de correo, por favor pngase en contacto

nombre

compaa

street/p.o.




caja

ttulo

e-mail



direccin
El Servicio de atencin al cliente en +1.847.647.9630 o envia un e-mail a oracle@halldata.com.
ciudad/estado/zip

pas
o
postal
cdigo
telfono

fax

USTED DEBE CONTESTAR A DIEZ
PREGUNTAS ABAJO.
1 LO QUE ES EL NEGOCIO PRIMARIO
ACTIVIDAD DE SU FIRMA EN ESTE LOCUnTION?(compruebeunnico)


04
05 06
IBMAIX
IBMUNIXJava
Hardware
20 Macintosh
Herramientas
24 Suite de Developer de Oracle
25 Descubridor de Oracle

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
Espacioareo yDefensaqueFabrica Proveedorde Servicio de aplicacin ProductosqumicosIndustrialesAutomotores,PetrleoySector/ConsumidordeConsumidordeConstruccin/IngenieradeMedioy Comunicaciones
deGasEducacindeBienesEnvasadaGobierno de Servicios/Seguro Financiero FabricacindeTecnologaavanzadadeAsistenciamdica(militar)delGobierno(civil),OEMCiencias dela vida de Vendedorde Software
Intecapas (Biotech,Productos farmacuticos)

07 08 09 10 11 12 13 14 15 16 17 18 19 20 21
LinuxMS-DOSdeMacintoshMVS TeleinformticadeNetWareOpenVMSUNIXdeSCOSolDYNIX/ptxSecuencialSolaris/SunOSSVR4 UnixWareWindowsNTdeWindowsOtroUNIX

22 Macizamente 21 Procesamiento de MainframeParallel
23 Minicomandoador
24 comandoador personal ork Comandoador
26 simtricos 25 Multiprocesamiento Netw
P ip e als
er
27h Wr orkstation
28 Puentes/Direccionadors/Concentradors/Pasarelas
29 Lectores de CD-ROM 30 Unidades de disco/Subsistemas de Disco
31 Mdems es/Subsystems
32 TVape Driv Sv
er
33icesideo Tableros electrnicos/Multimedia
34

27 Migracin de Oracle 26 Oracle JDeveloperWorkbench
28 PortalBuilder Oracle9WAS i

ra
29le Oracleicearehouse O c Serv s
30 Externalizacindeoracle
31 OracleConsultando 32 Educacindeoracle 33 Apoyodeoracle 98 Otros99
Ningunodelossusodichos
7 CUALES OTROS PRODUCTOS DE BASE DE DATOS SON
YoNU S E Un TY O U RS IT E? (compruebetodo que se aplican)

16 17 18
IntegradordeVentaalpormenor/Venta alpormayor/Sistemasdedistribucin minero,VAR/VAD

99
98
OtroNingunodelossusodichos

35 36 37
Proveedorde Servicio de aplicacin ConsultandoMantenimientodeEducacin/Formacin

01 02 03 04
AccesoBaan dbaseGupta
0089

10

11
MicrosoftAccessMicrosoftSQLServerPeopleSoftProgress

19 20 21
Viajesdetelecomunicacionesy Herramientas de Transporte (elctrico, de gas, saneamiento, agua)
4
EVALA USTED, ESPECIFICA, RECOMIENDA, O AUTORIZA LA COMPRA DE ALGUNO DE LOS SIGUIENTES?

38 39 40
ApoyodeServiciosdeBasededatosenlneaFormacinbasadaenlaTecnologa

05 06 07
IBMDB2InformixIngres

12

13

14
DEBILITE SybaseVSAM
Otro 98 Negocio y Servicios (compruebe todo que se aplican) 98 Otro 98
Otro
2 CUAL DEL SIGUIENTE MEJOR
01 02
Softwaredehardware
99

Ningunodelossusodichos
99

Ningunodelossusodichos
DESCRIBE SU TRABAJO PRIMARIO FUNCTION?(compruebeunnico)direccin/Personal Corporativa
03 04 05
Internetde productos de Base de datos de Herramientas de desarrollo de aplicaciones o productos de Intranet
6
QU PRODUCTOS DE ORACLE ESTN EN USO UnTY O U RS IT E?(compruebetodoque seaplican) Suite de Negocio electrnico de Oracle
8
QU OTROS PRODUCTOS DE SERVIDOR DE APLICACIN ESTN EN EL USO EN SU SITIO WEB? (compruebe todo que se aplican)
01 Ejecutivo, direccin (presidente, Presidente, presidente,DueodeCFO,Compaero,Principal)
99

Ningunodelossusodichos
01 Mercadotecnia de Oracle 02 Realizacin de Ventas de Oracle

01 02
BEA IBM
02 F (VP/Director/inManager/Controllere, nt inance/Admistrative Managem
La compra,Administracin)
5
EN SU TRABAJO, USA USTED O PLANEA COMPRAR ALGUNO DE Psiguientes RODUCTS?(compruebetodoqueseaplican)

04 Suministro de Oracle 03 direccin de Cadena de Pedido de Oracle
05 Consecucin de Oracle

03 04 05
Sol de Sybase Otro
03 direccin de Ventas/Mercadotecnia
Software

(VP/Director/Manager)04 direccin de Sistemas/Operaciones de Comandoador
(CIO/VP/Director/Sistema informativo de direccin de gerente,Operaciones)

01 02 03
GrficoscomercialesCAD/CAE/CAMINSTANCIA

07 Mantenimiento de Oracle 06 Oracle ManufacturingManagement
08 Servicio de Oracle
09 Contratos de Oracle
9
DURANTE LOS PRXIMOS 12 MESES, QUE USTED ESPERA QUE SU ORGANIZACIN GASTAR PARA
ES/ESTO Personal
05 desarrollo de Sistemas /
Programacindedireccin

04 05 06
DireccindeArchivodeGestindedatosdecomunicaciones
10 Proyectos de Oracle 11 Oracle Recursos de FHuman inancials
12 Centro de Interaccin de Oracle
HARDWARE, SOFTWARE, PERIPHERALS, Y SERVICIOS FORYOURLOCUnTION?(compruebesloun)
06 desarrollo de Sistemas / Programacin de Personal 07 Finanzas 01 Menos de 10.000$

08
Administrador DBA/Systems 07 Consulta

09
Educacin/Formacin

10
Director/Gerente de Apoyo tcnico Otra 11 direccin/Personal Tcnica

08 09 10 11
RecursodeMaterialesde JavaPlaneandoa Multimedia Authoring Networking
13 Comunicaciones/Herramientas de Oracle (mdulos)
14 Sector pblico de Oracle / universidad (mdulos) 15 Servicios financieros de Oracle (mdulos)S v/Sof
er
16er Oracletware

02 03 04 05
10.000$ a $49.999$ 50.000 a $99.999$ 100.000 a $499.999$ 500.000 a 999.999$

98
Otro

12 13
Entrada/Controlde existencias de Pedido de Ofimtica

17 18
Oracle9iOracle9iLite

06
1.000.000$ y
3 LO QUE ES SU PRIMARIA CORRIENTE

14 15
ProgramacindeGestindeproyectos

19 20
Oracle8iOtrabasededatosdeOracle
10W HUNTIS Y OURCOM P UNNY 'S Y EUNRLY
SUnLESREVENUE?(porfavorelijaun)
OP ERUnTINGP LUnTFORM?(seleccionetodoqueseaplican)
02 Equipos Digitales VAX 01 Equipo DigitalUNIXVMS
UNIX DE 03 CV

16 17 18 19
VolumendetrabajodedireccindeSistemasde Hojasdeclculocientficoy Tcnico

21 22 23
SuitedePequeonegociodeOracle deRadiodeServidorde AplicacindeServidorde Aplicacinde Oracle9iOracle9i

01 02 03 04 05
500$,000,000 y encima de 100$,000,000 a 500$,000,000 50$, 000, 000 a 100$, 000, 000 5$, 000, 000 a 50$, 000, 000 1$, 000, 000 a 5$, 000,000
1
0
0
1
0
3

EL ACUERDO DE LICENCIA ESTE PRODUCTO (EL "PRODUCTO") CONTIENE
EL SOFTWARE PROPRIKTARY. IJATA E INFORMACIN (INCLUSO DOCUMENTACIN) POSEDO POR McGRAW-HILL COMPANIES.
INC. ("McGRAW-HILL") Y SUS LICENCIADORES. SU DERECHO DE USAR EL PRODUCTO THK ES RY THH GOBERNADO TKRMS Y LAS
CONDICIONES DEL ESTE ACUERDO Y ES ADICIONAL SUJETO a THH THRMS Y CONDICIONES CONTENIDAS EN KACH del ACUERDO
DE LICENCIA DEL LICENCIADOR APLICABLE (cada uno un "LLA") INCLUIDO COMO LA PARTE DEL PRODUCTO. LICENCIA: en todas partes
del Acuerdo de licencia Ihis, "usted" debe querer decir el petrleo ella el individuo o el cnlily vvho.se agenl abren este paquete. Le conceden una licencia
no transferible anil no exclusiva para usar el producto Ihe sujeto para el fallowing lernis: (i) Si usted ha licenciado.1 versin de usuario sola de Producl ihe.
El producto de Ihe slo puede Iw usado en un comandoador solo (es decir. una unidad central de proceso sola). Si usted licenciara y pagara a
honorarios ihe lo aplicable una red de rea local o versin de red de rea amplia ofihc producto, usted aie sujeto al trmino de ihe - de ihe despus de
suhparagraph (ii), (esto) Si usted ha licenciado una versin de red de aiea local, usted puede usar salgo Pmducl mintiendo en iones de listn de guio
ilimitados localizados en un huililinjr solo seleccionado por usted tailands es atendido por tal red de rea local. Si usted ha licenciado una amplia versin
de red de iii'cii, usted puede usar I l el producto en estaciones de trabajo ilimitadas localiz en imiltiple huiEdings en el sitio web.same seleccionado por
usted que es seived por tal red de rea amplia; a condicin de que. bowcvCTi lha! cualquier edificio va nol estar considerado localizado en la lata: mismo
sitio web si es ms lhan vivo (5) millas de distancia de cualquier edificio incluido en tal sile. Adicin de Jn, usted slo puede usar LI red de rea local o
versin de red de rea amplia de ProdtiLi en un servidor solo. Si usted desea usar el producto en ms de un servidor, usted la mam oblain wrilten
aulhon/alion de McGiaw-Uill anil paga honorarios adicionales. <iii) Usted puede hacer una copia del producto ihe con objetivos de apao slo y usted
musi mantienen un registro de accuuitc como lo ihe la posicin del apao a: todos los tiempos. CQI'YKICIIT; KKSI RICI IONES EN USO Y yo
KANSFKR: Todos los derechos (incluso copyright) en y al producto areowned por McGraw-Hill y sus licenciadores. Usted es el dueo del disco
encerrado de Ihe en el cual el producto Ihe es registrado. Usted no puede usar. copie, descompile, desmonte, invierta al ingeniero, modifique, reproduzca,
cree trabajos derivados, transmita, distribuya, sublicencia. tienda en una base de datos o sistema de recuperacin de cualquier clase, renl o transferencia
producto de Ihe, o cualquier parte (del presente, en cualquier forma o por cualquier medio (incluso electrnicamente o por otra parte) excepto como
expresamente asegurado en este Acuerdo de licencia y cada uno 1.1. A. Ytiu debe repioduce ihe copvnghi nol hielos, tiademark avisos, leyendas y
logotipos de McGraw-Hill; los md iis licenciadores thar aparecen en Producl ihe en la copia de apao de Producl ihc que le permiten hacer h. yo. los mi.
yo Todos los derechos en el producto Ihe nol expresamente grained aqu estn McGraw-Hill reservedby y sus licenciadores. TKHM: Este Acuerdo de
licencia es tmlil eficaz icrminatcd. ll va lerminale si usted fuil para obedecer a wiih cualquier trmino oreondilion del Acuerdo de licencia ihis y cada
LLA, Sobre teiuiiniiiion. le obligan lo reiiirn a McCpi.m - Molino ihe producto logelller con todas las copias I del presente y purgar todas las copias del
producto Ihe incluido en cualquier anil todos los servidores e I'acililies computei. MENTS OKEY GARANTA: EL PRODUCTO Y LA COPIA DE
COPIA DE SEGURIDAD SON LICENCIADOS "COMO ES." McGRAW-HILL. SUS LICENCIADORES Y AUTORES THK NO HACEN NINGUNAS
GARANTAS. EXPRESE O IMPLICADO. EN CUANTO A LOS RESULTADOS PARA SER OBTENIDOS POR CUALQUIER PERSONA O
ENTIDAD DE USO DEL PRODUCTO. CUALQUIER INFORMACIN O DATOS INCLUIDOS ALL Y/O CUALQUIER SERVICIO DE APOYO
TCNICO PROVEYERON BAJO LOS TRMINOS AQU ESTABLECIDOS. SI CUALQUIERA ("SERVICIOS DE APOYO TCNICO").
MECKAW-COLINA. SUS LICENCIADORES Y LOS AUTORES MAKF. NINGUNA COMERCIABILIDAD de WAfiRANTIBSOT EXPRESA O
IMPLCITA OKEY FITNE.SM-OKEY UN OBJETIVO PARTICULAR AH USA CON RliSI'hC'l PARA IHI-: PKOIH'I 1 MCGKAW-COLINA. SUS
LICENCIADORES. Y LOS AUTORES NO HACEN NINGUNA GARANTA QUE USTED PASAR CUALQUIER EXAMEN DE CERTIFICACIN
EN ABSOLUTO USANDO ESTE PRODUCTO. NINGUNA MCGKAW-COLINA. CUALQUIER DE SUS LICENCIADORES NI LOS AUTORES
GARANTIZA QUE LAS FUNCIONES CONTENIDAS EN EL PRODUCTO CUMPLIRN CON SUS REQUISITOS O QUE LA OPERACIN AH
EL PRODUCTO Ser ININTERRUMPIDA AH liRROR I:R]-L. USTED ASUME EL RIESGO de IHEl-MIKJ-con RESPECTO A LA CALIDAD Y
PERFf IKMANCi; Ol-EL PRODI K I GARANTA LIMITADA DISCO de EOK: A concesionario original Ihe slo. McGraw-Hill... m.inr, que el disco
incluido en el cual Ihe Producl es registrado es libre de dcfccls en materiales y habilidad bajo uso normal y servicio para el periodo de noventa (') ()) los
das del valle de la compra. En acontecimiento Ihe de un ilefc-cl en disco de Ihe tiy cubierto ihe warranly anterior. McGraw-Hill reemplazar el disco de
Ihe. LIMITACIN DE RESPONSABILIDAD: NINGN McGRAW-HILL. SUS LICENCIADORES NI LOS AUTORES Deben ser OBLIGADOS DE
CUALQUIERA INDIRECTO. ESPECIAL OKEY DAOS CONSECUENCIALES. TAL COMO PERO NO LIMITADO CON. PRDIDA DE
GANANCIAS ESPERADAS O VENTAJAS. RESULTAR DEL USO OKEY INHABILIDAD DE USAR EL PRODUCTO AUN SI HAN ACONSEJADO
A ALGUNO DE ELLOS AH LA POSIBILIDAD DE TALES DAOS. ESTA LIMITACIN DE LA RESPONSABILIDAD Debe APLICARSE A
CUALQUIER RECLAMACIN O CAUSAR W H yo S O I 'V T K W H M I yo yo' K S I 'C H C M de I m O R C Un U S h AkIShS EN LA ESTAFA 1 RAC 1. 1
AH yo. () R n I HERWIM' Sunn-sl; l - hace nol permiten a exclusin de Ihe 01 limicaiion de indiiect. los daos consecuenciales o especiales, entonces el
susodicho el limuaiion puede no aplicar lo usted.
Estados Unidos (lOVKKNMKNT KKSTKKTKI) K i yo, yo n Cualquier softwaie incluido en Pioduci es piovided va) reslricled lighls sujetan 10
suliparagraphs ic), (I) imd (2l ol Ihe Comnuier comercial clusula de Derechos Soriwiuo-restringida 4K Al-C.F.R. 52.227-11). El lermsof Ihis Acuerdo uso
de Ihe lo aplicable de los datos en el producto m Ihose bajo cual Ihe dala ure generalmente puesto a disposicin del gran pblico t> y McGraw-Hill. I-xcepl
como piovidcd aqu, ninguna reproduccin, usan. o los derechos de revelacin son grained con respecto al dala incluido en Producl y ningn lighl para
modificar o crear el derivado woikt 1'ioni cualesquiera tales datos son heiuhy concedido. (iKNKKAL: Esta Licencia Agieenii'iii y cada LLA constituye
agieemeni entero ihe bcrwccn ihe parlies relnling 10 producto ihe. Los trminos de ait v i'i i ii. El pedido no debe ir la baya del espino ningn efecto en
los trminos ol'iliis Licencia Agieemeni o cualquier LLA-En el cvcm de cualquier conllict bttWND ihe lerms de esta Licencia Agreementand cualquier
LLA. Ihe lerms ol'lhe LLA aplicable debe gobernar. El frainstancia de McGraw-Hill de insistir Al-cualquier tiempo en la conformidad estricta con esta
Licencia Agitemeni debe ir nol constituir una renuncia hacia cualquier derecho segn este Acuerdo de licencia. Este LicenseAgreement debe ser
interpretado y gobernado de acuerdo con las leyes de [l Se vuelve duro de Nuevo Yoik Si cualquier estipulacin de este Acuerdo de licencia es
sostenida [o ser el contrario lo ley. aquella provisin estar hecha cumplir al grado mximo permisible, y las provisiones restantes permanecern en
fuerza llena y efecto.

S-ar putea să vă placă și