Você está na página 1de 254

Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
n - t r
no Conceptos
Oracle Database:
a
)has e de SQL I
Fundamentales
id
o m u
a ilc ent G
o t m Volumen
t u d
@ h is S II Gua del Alumno

c t 04 se th
( j ulio to u
ob a
C ord
io
Jul

D64258CS10
Edicin 1.0
Enero de 2010
D73591
Autores Copyright 2010, Oracle y/o sus filiales. Todos los derechos reservados.

Salome Clement Renuncia


Brian Pottle Este documento contiene informacin propiedad de Oracle Corporation y se
Puja Singh encuentra protegido por las leyes de copyright, as como por otras leyes de
propiedad intelectual. El usuario podr realizar copias o imprimir este documento
Colaboradores y para su uso exclusivo en los cursos de formacin de Oracle. Este documento no
podr ser modificado ni alterado en modo alguno. Salvo que la legislacin de
Revisores Tcnicos
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

copyright lo considere un uso legtimo, no podr utilizar, compartir, descargar, cargar,


copiar, imprimir, mostrar, representar, reproducir, publicar, conceder licencias, enviar,
Anjulaponni Azhagulekshmi transmitir ni distribuir este documento total ni parcialmente sin autorizacin expresa
Clair Bennett por parte de Oracle.
Zarko Cesljas
Yanti Chang La informacin contenida en este documento est sujeta a cambio sin previo aviso.
Si detecta cualquier problema en el documento, le agradeceremos que nos lo
Gerlinde Frenzen comunique por escrito a: Oracle University, 500 Oracle Parkway, Redwood Shores,
Steve Friedberg California 94065 USA. Oracle Corporation no garantiza que este documento est
Joel Goodman exento de errores.
Nancy Greenberg
Aviso sobre Restriccin de Derechos nse
Pedro Neves
li c e
Manish Pawar
l
Si esta documentacin se entrega al Gobierno de los EE. UU. o a cualquier entidad
b e
Surya Rekha
a
que la utilice en nombre del Gobierno de los EE. UU., se aplicar la siguiente
disposicin:
fer
Helen Robertson
an s
Lauran Serhal
Hilda Simon
U.S. GOVERNMENT RIGHTS
n - t r
no
The U.S. Governments rights to use, modify, reproduce, release, perform, display, or
Tulika Srivastava disclose these training materials are restricted by the terms of the applicable Oracle
a
has ide
license agreement and/or the applicable U.S. Government contract.
Redactor
)
Aviso de Marca Registrada
Amitha Narayan
l c om t Gu
m ai den
Oracle es una marca comercial registrada de Oracle Corporation y/o sus filiales.
Todos los dems nombres pueden ser marcas comerciales de sus respectivos
t
Diseador Grfico
o
propietarios.
h S tu
Rajiv Chandrabhanu
0 4 @ this
Publicador l i o ct use
a
Jobi Varghese (ju to
r d ob
C o
io
Jul
Contenido
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

I Introduccin
Objetivos I-2
Agenda I-3
Objetivos del Curso I-4
Agenda I-5
Apndices Utilizados en el Curso I-7
nse
Agenda I-8
li c e
Oracle Database 11g: reas de Atencin I-9 b le
Oracle Database 11g I-10 fer a
ans
Oracle Fusion Middleware I-12
n - t r
Oracle Enterprise Manager Grid Control I-13
Oracle BI Publisher I-14 a no
Agenda I-15 ) has ide
c om t Gu
Sistema de Gestin de Bases de Datos Relacionales y Relacionales de Objetos I-16
l
t m ai den
Almacenamiento de Datos en Diferentes Medios Fsicos I-17
h o S tu
Concepto de Base de Datos Relacional I-18
0 4 @ this
Definicin de una Base de Datos Relacional I-19
l i o ct use
Modelos de Datos I-20
u to
o ba (j
Modelo de Relacin de Entidades I-21

C ord Convenciones de Modelado de Relacin de Entidades I-23


Relacin de Varias Tablas I-25
io
Jul Terminologa de Bases de Datos Relacionales I-27
Agenda I-29
Uso de SQL para Consultar Base de Datos I-30
Sentencias SQL I-31
Entornos de Desarrollo para SQL I-32
Agenda I-33
Esquema Human Resources(HR) I-34
Tablas Utilizadas en el Curso I-35
Agenda I-36
Documentacin de Oracle Database I-37
Recursos Adicionales I-38
Resumen I-39
Prctica I: Visin General I-40

iii
1 Recuperacin de Datos Mediante la Sentencia SQL SELECT
Objetivos 1-2
Agenda 1-3
Capacidades de las Sentencias SQL SELECT 1-4
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Sentencia SELECT Bsica 1-5


Seleccin de Todas las Columnas 1-6
Seleccin de Columnas Concretas 1-7
Escritura de Sentencias SQL 1-8
Valores por Defecto de Cabeceras de Columna 1-9
Agenda 1-10
Expresiones Aritmticas 1-11
nse
Uso de Operadores Aritmticos 1-12
li c e
Prioridad de Operadores 1-13
b le
Definicin de Valor Nulo 1-14 fer a
Valores Nulos en Expresiones Aritmticas 1-15 ans
n - t r
Agenda 1-16
Definicin de Alias de Columna 1-17 a no
Uso de Alias de Columna 1-18 ) has ide
Agenda 1-19
l c om t Gu
Operador de Concatenacin 1-20
t m ai den
h o
Cadenas de Caracteres Literales 1-21 S tu
4 @ this
Uso de Cadenas de Caracteres Literales 1-22
0
l i o ct use
Operador de Comillas (q) Alternativo 1-23
u to
o b a (j
Filas Duplicadas 1-24

C ord
Agenda 1-25
Visualizacin de la Estructura de la Tabla 1-26
io
Jul Uso del Comando DESCRIBE 1-27
Prueba 1-28
Resumen 1-29
Prctica 1: Visin General 1-30

2 Restriccin y Ordenacin de Datos


Objetivos 2-2
Agenda 2-3
Limitacin de Filas con una Seleccin 2-4
Limitacin de las Filas Seleccionadas 2-5
Uso de la Clusula WHERE 2-6
Fechas y Cadenas de Caracteres 2-7
Operadores de Comparacin 2-8
Uso de Operadores de Comparacin 2-9

iv
Uso de Condiciones de Rango mediante el Operador BETWEEN 2-10
Condicin de Miembro mediante el Operador IN 2-11
Coincidencia de Patrones mediante el Operador LIKE 2-12
Combinacin de Caracteres Comodn 2-13
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Uso de las Condiciones NULL 2-14


Definicin de Condiciones mediante los Operadores Lgicos 2-15
Uso del Operador AND 2-16
Uso del Operador OR 2-17
Uso del Operador NOT 2-18
Agenda 2-19
Reglas de Prioridad 2-20
nse
Agenda 2-22 li c e
Uso de la Clusula ORDER BY 2-23 b le
fer a
Ordenacin 2-24
an s
Agenda 2-26
n - t r
Variables de Sustitucin 2-27
a no
has ide
Uso de la Variable de Sustitucin de Un Solo Ampersand 2-29
)
Valores de Fecha y Carcter con Variables de Sustitucin 2-31
l c om t Gu
Especificacin de Nombres de Columna, Expresiones y Texto 2-32
m ai den
Uso de Variables de Sustitucin de Dos Ampersands 2-33
t
h o S tu
Agenda 2-34
0 4 @ this
l i o ct use
Uso del Comando DEFINE 2-35

( u
Uso jdel Comando t o VERIFY 2-36
o b a
Prueba 2-37
or d Resumen 2-38
io C Prctica 2: Visin General 2-39
Jul
3 Uso de Funciones de Una Sola Fila para Personalizar la Salida
Objetivos 3-2
Agenda 3-3
Funciones SQL 3-4
Dos Tipos de Funciones SQL 3-5
Funciones de Una Sola Fila 3-6
Agenda 3-8
Funciones de Carcter 3-9
Funciones de Conversin de Caracteres 3-11
Using Case-Conversion Functions 3-12
Uso de Funciones de Conversin de Caracteres 3-12
Funciones de Manipulacin de Caracteres 3-13
Uso de las Funciones de Manipulacin de Caracteres 3-14

v
Agenda 3-15
Funciones Numricas 3-16
Uso de la Funcin ROUND 3-17
Uso de la Funcin TRUNC 3-18
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Uso de la Funcin MOD 3-19


Agenda 3-20
Trabajo con Fechas 3-21
Formato de Fecha RR 3-22
Uso de la Funcin SYSDATE 3-24
Operadores Aritmticos con Fechas 3-25
Uso de Operadores Aritmticos con Fechas 3-26
nse
Agenda 3-27
li c e
Funciones de Manipulacin de Fecha 3-28 b le
Uso de las Funciones de Fecha 3-29 fer a
ans
Uso de las Funciones ROUND y TRUNC con Fechas 3-30
n - t r
Prueba 3-31
a no
has ide
Resumen 3-32
Prctica 3: Visin General 3-33 )
l c om t Gu
ya
i enCondicionales
4 Uso de Funciones de Conversin
o t m Expresiones
t u d
Objetivos 4-2 h s S
Agenda 4-3 t 0 4@ e thi
l i oc o u4-4s
Funciones de Conversin
u
a
Conversin(jImplcita delt Tipo de Dato 4-5
b
o rdo
Conversin Explcita del Tipo de Dato 4-7

io C Agenda 4-10
Jul Uso de la Funcin TO_CHAR con Fechas 4-11
Elementos del Modelo de Formato de Fecha 4-12
Uso de la Funcin TO_CHAR con Fechas 4-16
Uso de la Funcin TO_CHAR con Nmeros 4-17
Uso de Funciones TO_NUMBER y TO_DATE 4-20
Uso de las Funciones TO_CHAR y TO_DATE con el Formato de Fecha RR 4-22
Agenda 4-23
Funciones de Anidacin 4-24
Funciones de Anidacin: Ejemplo 1 4-25
Funciones de Anidacin: Ejemplo 2 4-26
Agenda 4-27
Funciones Generales 4-28
Funcin NVL 4-29
Uso de la Funcin NVL 4-30

vi
Uso de la Funcin NVL2 4-31
Uso de la Funcin NULLIF 4-32
Uso de la Funcin COALESCE 4-33
Agenda 4-36
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Expresiones Condicionales 4-37


Expresin CASE 4-38
Uso de la Expresin CASE 4-39
Funcin DECODE 4-40
Uso de la Funcin DECODE 4-41
Prueba 4-43
Resumen 4-44
nse
Prctica 4: Visin General 4-45 li c e
b le
5 Informes de Datos Agregados con Funciones de Grupo fer a
ans
Objetivos 5-2
n - t r
Agenda 5-3
a no
has ide
Qu Son las Funciones de Grupo? 5-4
Tipos de Funciones de Grupo 5-5 )
Funciones de Grupo: Sintaxis 5-6 l c om t Gu
m
Uso de las Funciones AVG y SUM 5-7
t ai den
o
Uso de Funciones MINhy MAX s5-8 S tu
t
Uso de la Funcin0 4@ e
COUNT t h5-9i
l c
ioPalabra u s DISTINCT 5-10
( u
Uso jde la t o Clave
b a
Funciones de Grupo y Valores Nulos 5-11
or do Agenda 5-12
io C
Jul
Creacin de Grupos de Datos 5-13
Creacin de Grupos de Datos: Sintaxis de la Clusula GROUP BY 5-14
Uso de la Clusula GROUP BY 5-15
Agrupacin de Ms de Una Columna 5-17
Uso de la Clusula GROUP BY en Varias Columnas 5-18
Consultas No Vlidas Realizadas con las Funciones de Grupo 5-19
Restriccin de Resultados de Grupo 5-21
Restriccin de Resultados de Grupo con la Clusula HAVING 5-22
Uso de la Clusula HAVING 5-23
Agenda 5-25
Anidamiento de Funciones de Grupo 5-26
Prueba 5-27
Resumen 5-28
Prctica 5: Visin General 5-29

vii
6 Visualizacin de Datos de Varias Tablas Utilizando Uniones
Objetivos 6-2
Agenda 6-3
Obtencin de Datos de Varias Tablas 6-4
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Tipos de Uniones 6-5


Unin de Tablas mediante la Sintaxis SQL:1999 6-6
Cualificacin de Nombres de Columna Ambiguos 6-7
Agenda 6-8
Creacin de Uniones Naturales 6-9
Recuperacin de Registros con Uniones Naturales 6-10
Creacin de Uniones con la Clusula USING 6-11 e
Unin de Nombres de Columna 6-12
c e ns
Recuperacin de Registros con la Clusula USING 6-13 le li
a b
Uso de Alias de Tabla con la Clusula USING 6-14
s fer
Creacin de Uniones con la Clusula ON 6-15
- t r an
Recuperacin de Registros con la Clusula ON 6-16
n on
Creacin de Uniones en 3 Direcciones con la Clusula ON a
s 6-17e
Aplicacin de Condiciones Adicionales a una Unin h a
) 6-18uid
o m
Agenda 6-19
a i l c ent G
Unin de una Tabla consigo Mismam6-20
o t t u d
h iON
Autouniones que Utilizan la Clusula
@ S
s 6-21
Agenda 6-22 4
t0 se t h
i o c u
( j ul
Uniones no igualitarias
t o6-23
o b a de Registros con Uniones no Igualitarias 6-24
Recuperacin
rd
oAgenda 6-25

io C Devolucin de Registros sin Coincidencia Directa con las uniones OUTER 6-26
Jul Uniones INNER frente a Uniones OUTER 6-27
LEFT OUTER JOIN 6-28
RIGHT OUTER JOIN 6-29
FULL OUTER JOIN 6-30
Agenda 6-31
Productos Cartesianos 6-32
Generacin de un Producto Cartesiano 6-33
Creacin de Uniones Cruzadas 6-34
Prueba 6-35
Resumen 6-36
Prctica 6: Visin General 6-37

viii
7 Uso de Subconsultas para Solucionar Consultas
Objetivos 7-2
Agenda 7-3
Uso de una Subconsulta para Solucionar Problemas 7-4
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Sintaxis de la Subconsulta 7-5


Uso de Subconsultas 7-6
Instrucciones para el Uso de Subconsultas 7-7
Tipos de Subconsultas 7-8
Agenda 7-9
Subconsultas de Una Sola Fila 7-10
Ejecucin de Subconsultas de una Sola Fila 7-11 e
Uso de Funciones de Grupo en una Subconsulta 7-12
c e ns
Clusula HAVING con Subconsultas 7-13 le li
a b
Qu Parte de esta Sentencia Es Incorrecta? 7-14
s fer
La Consulta Interna No Devuelve Ningn Resultado 7-15
- t r an
Agenda 7-16
non
Subconsultas de Varias Filas 7-17 a
has ide
Uso del Operador ANY en Subconsultas de Varias Filas 7-18
)
Uso del Operador ALL en Subconsultas
c omde Varias
G uFilas 7-19
Uso del Operador EXISTS 7-20
l
ai den t
o t m tu
Agenda 7-21 h S
is 7-22
@ Subconsulta
Valores Nulos0 4
en una t h
Prueba lio ct use
7-24
a (ju 7-25to
Resumen

or dobPrctica 7: Visin General 7-26


io C
Jul 8 Uso de los Operadores de Definicin
Objetivos 8-2
Agenda 8-3
Operadores de Definicin 8-4
Instrucciones de los Operadores de Definicin 8-5
Servidor de Oracle y Operadores de Definicin 8-6
Agenda 8-7
Tablas Utilizadas en esta Leccin 8-8
Agenda 8-12
Operador UNION 8-13
Uso del Operador UNION 8-14
Operador UNION ALL 8-16
Uso del Operador UNION ALL 8-17
Agenda 8-18

ix
Operador INTERSECT 8-19
Uso del Operador INTERSECT 8-20
Agenda 8-21
Operador MINUS 8-22
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Uso del Operador MINUS 8-23


Agenda 8-24
Coincidencia de las Sentencias SELECT 8-25
Coincidencia de las Sentencias SELECT: Ejemplo 8-26
Agenda 8-27
Uso de la Clusula ORDER BY en Operaciones de Definicin 8-28
Prueba 8-29
nse
Resumen 8-30 li c e
Prctica 8: Visin General 8-31 b le
fer a
ans
9 Manipulacin de Datos
n - t r
Objetivos 9-2
a no
has ide
Agenda 9-3
Lenguaje de Manipulacin de Datos 9-4 )

Adicin de una Nueva Fila a una Tabla 9-5
l c om t Gu
m ai den
Sintaxis de las Sentencias INSERT 9-6
t
h o S tu
Insercin de Filas 9-7
0 4 @ this
l i o ct use
Insercin de Filas con Valores Nulos 9-8
u to
Insercin de Valores Especiales 9-9

ob a (j
Insercin de Valores de Fecha y Hora Especficos 9-10

C ord
Creacin de un Script 9-11
io Copia de Filas de Otra Tabla 9-12
Jul Agenda 9-13
Cambio de Datos en la Tabla 9-14
Sintaxis de Sentencias UPDATE 9-15
Actualizacin de Filas en una Tabla 9-16
Actualizacin de Dos Columnas con una Subconsulta 9-17
Actualizacin de Filas Basada en Otra Tabla 9-18
Agenda 9-19
Eliminacin de Filas de Tablas 9-20
Sentencia DELETE 9-21
Supresin de Filas de Tablas 9-22
Supresin de Filas Basada en Otra Tabla 9-23
Sentencia TRUNCATE 9-24
Agenda 9-25
Transacciones de Base de Datos 9-26

x
Transacciones de la Base de Datos: Inicio y Fin 9-27
Ventajas de las Sentencias COMMIT y ROLLBACK 9-28
Sentencias de Control de Transacciones Explcitas 9-29
Rollback de los Cambios de un Marcador 9-30
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Procesamiento de Transacciones Implcitas 9-31


Estado de los Datos antes de COMMIT o ROLLBACK 9-33
Estado de los Datos despus de COMMIT 9-34
Confirmacin de Datos 9-35
Estado de los Datos despus de ROLLBACK 9-36
Estado de los Datos despus de ROLLBACK: Ejemplo 9-37
Rollback a Nivel de Sentencias 9-38
nse
Agenda 9-39
li c e
Consistencia de Lectura 9-40 b le
Implementacin de Consistencia de Lectura 9-41 fer a
ans
Agenda 9-42
n - t r
Clusula FOR UPDATE en una Sentencia SELECT 9-43
a no
has ide
Clusula FOR UPDATE: Ejemplos 9-44
Prueba 9-46 )
Resumen 9-47
l c om t Gu
Prctica 9: Visin General m
t ai den
9-48
h o S tu
4 @DDL para
t h isCrear y Gestionar Tablas
t
10 Uso de Sentencias0
c10-2 se
l
Objetivosi o u
a (ju 10-3 to
Agenda
b
ordo Objetos de Base de Datos 10-4
io C Reglas de Nomenclatura 10-5
Jul Agenda 10-7
Sentencia CREATE TABLE 10-8
Referencia a Tablas de Otro Usuario 10-9
Opcin DEFAULT 10-10
Creacin de Tablas 10-11
Agenda 10-12
Tipos de Dato 10-13
Tipos de Dato de Fecha y Hora 10-15
Agenda 10-16
Inclusin de Restricciones 10-17
Instrucciones de Restriccin 10-18
Definicin de Restricciones 10-19
Restriccin NOT NULL 10-21
Restriccin UNIQUE 10-22

xi
Restriccin PRIMARY KEY 10-24
Restriccin FOREIGN KEY: Palabras Clave 10-27
Restriccin CHECK 10-28
Sentencia CREATE TABLE: Ejemplo 10-29
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Violacin de Restricciones 10-30


Agenda 10-32
Creacin de una Tabla mediante una Subconsulta 10-33
Agenda 10-35
Sentencia ALTER TABLE 10-36
Tablas de Slo Lectura 10-37
Agenda 10-38
nse
Borrado de una Tabla 10-39
li c e
Prueba 10-40 b le
Resumen 10-41 fer a
ans
Prctica 10: Visin General 10-42
n - t r
n o
a
has ide
11 Creacin de Otros Objetos de Esquema
Objetivos 11-2 )
Agenda 11-3
l c om t Gu
Objetos de Base de Datos 11-4 ma
i en
t t u d
Qu es una Vista? 11-5 ho S
Ventajas de las Vistas04
@ thi
11-6
s
c t e
Vistas SimpleslyioComplejasus11-7
Creacina (juVistas 11-8
de
to
r d ob
Recuperacin de Datos de una Vista 11-11
o
io C Modificacin de Vistas 11-12
Jul Creacin de Vistas Complejas 11-13
Reglas para Realizar Operaciones DML en una Vista 11-14
Uso de la Clusula WITH CHECK OPTION 11-17
Denegacin de Operaciones DML 11-18
Eliminacin de Vistas 11-20
Prctica 11: Visin General de la Parte 1 11-21
Agenda 11-22
Secuencias 11-23
Sentencia CREATE SEQUENCE: Sintaxis 11-25
Creacin de Secuencias 11-26
Pseudocolumnas NEXTVAL y CURRVAL 11-27
Uso de una Secuencia 11-29
Almacenamiento en Cach de los Valores de Secuencia 11-30
Modificacin de una Secuencia 11-31

xii
Instrucciones para Modificar una Secuencia 11-32
Agenda 11-33
ndices 11-34
Cmo se Crean los ndices? 11-36
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Creacin de ndices 11-37


Instrucciones de Creacin de ndices 11-38
Eliminacin de ndices 11-39
Agenda 11-40
Sinnimos 11-41
Creacin de un Sinnimo para un Objeto 11-42
Creacin y Eliminacin de Sinnimos 11-43 e
Prueba 11-44
c e ns
Resumen 11-45 le li
a b
Prctica 11: Visin General de la Parte 2 11-46
s fer
- t r an
Apndice A: Prcticas y Soluciones
no n
a
has ide
Apndice AP: Prcticas y Soluciones adicionales
)
l c om t Gu
Apndice B: Descripciones de las
t m ai Tablasden
h o S tu
Apndice C: Uso de 4 @ h is
SQL Developer
t
Objetivosoc t
C-2
0 se
l i u
(jues OracletoSQL Developer? C-3
Qu
a
b
ordo Especificaciones de SQL Developer C-4
io C Interfaz de SQL Developer 1.5 C-5

Jul Creacin de una Conexin a la Base Datos C-7


Examen de Objetos de Bases de Datos C-10
Visualizacin de la Estructura de la Tabla C-11
Examen de Archivos C-12
Creacin de un Objeto de Esquema C-13
Creacin de una Nueva Tabla: Ejemplo C-14
Uso de la Hoja de Trabajo de SQL C-15
Ejecucin de Sentencias SQL C-18
Guardado de Scripts SQL C-19
Ejecucin de Archivos de Script Guardados: Mtodo 1 C-20
Ejecucin de Archivos de Script Guardados: Mtodo 2 C-22
Formato del Cdigo SQL C-23
Uso de Fragmentos C-24
Uso de Fragmentos: Ejemplo C-25
Depuracin de Procedimientos y Funciones C-26

xiii
Informes de Bases de Datos C-27
Creacin de un Informe Definido por el Usuario C-28
Motores de Bsqueda y Herramientas Externas C-29
Definicin de Preferencias C-30
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Restablecimiento del Diseo de SQL Developer C-31


Resumen C-32

Apndice D: Uso de SQL*Plus


Objetivos D-2
Interaccin de SQL y SQL*Plus D-3
Sentencias SQL frente a Comandos SQL*Plus D-4 e
Visin General de SQL*Plus D-5
c e ns
Conexin a SQL*Plus D-6 le li
a b
Visualizacin de la Estructura de la Tabla D-7
s fer
Comandos de Edicin SQL*Plus D-9
- t r an
Uso de LIST, n y APPEND D-11
non
Uso del Comando CHANGE D-12 a
Comandos de Archivos SQL*Plus D-13
) has ide
Using the SAVE, START Commands D-14
l c om t Gu
Comando SERVEROUTPUT D-15
t m ai den
h o D-16Stu
Uso del Comando SQL*Plus SPOOL
4 @ D-17
t h is
0
Uso del Comando AUTOTRACE
ct use
Resumen D-18 l i o
a (ju to
r d obE: Uso de JDeveloper
Apndice
C oObjetivos E-2
io
Jul Oracle JDeveloper E-3
Database Navigator E-4
Creacin de Conexin E-5
Examen de Objetos de Bases de Datos E-6
Ejecucin de Sentencias SQL E-7
Creacin de Unidades de Programa E-8
Compilacin E-9
Ejecucin de una Unidad de Programa E-10
Borrado de una Unidad de Programa E-11
Ventana Structure E-12
Ventana del Editor E-13
Navegador de Aplicaciones E-14
Despliegue de Procedimientos Java Almacenados E-15
Publicacin de Java en PL/SQL E-16

xiv
Cmo Puedo Obtener ms Informacin sobre JDeveloper 11g? E-17
Resumen E-18

Apndice F: Sintaxis de Unin en Oracle


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Objetivos F-2
Obtencin de Datos de Varias Tablas F-3
Productos Cartesianos F-4
Generacin de un Producto Cartesiano F-5
Tipos de Uniones Propiedad de Oracle F-6
Unin de Tablas mediante la Sintaxis de Oracle F-7
Cualificacin de Nombres de Columna Ambiguos F-8 e
Uniones igualitarias F-9
c e ns
Recuperacin de Registros con Uniones Igualitarias F-10 le li
a b
Recuperacin de Registros con Uniones Igualitarias: Ejemplo F-11
s fer
- t r an
Condiciones de Bsqueda Adicionales Mediante el Operador AND F-12
Unin de Ms de Dos Tablas F-13
no n
Uniones no Igualitarias F-14 a
has ide
Recuperacin de Registros con Uniones no Igualitarias F-15
)
l c om t Gu
Devolucin de Registros sin Coincidencia Directa con las Uniones Externas F-16

t m ai den
Uniones Externas: Sintaxis F-17
o
Uso de Uniones Externas F-18
h S tu
4 @ this
Unin Externa: Otro Ejemplo F-19
0
i o ct use
Unin de una Tabla consigo Misma F-20
l
u to
ob a (j
Autounin: Ejemplo F-21
Resumen F-22
C ord Prctica F: Visin General F-23
io
Jul ndice

xv
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Jul
Cio
ord
o
b
a (j
u l i o
0 4
to
h
ct use
o t m
@ this
l
S
c
tu
)
ai den
om t Gu
a
has ide
n no
- t r an
s
fer a b l
eli c e ns
e
Apndice A
Prcticas y Soluciones
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
ob a (j
C ord
io
Jul
Tabla de Contenido
Prcticas para la Leccin I ........................................................................................................ 3
Prctica I-1: Introduccin ............................................................................................... 4
Soluciones a la Prctica I-1: Introduccin ...................................................................... 5
Prcticas de la Leccin 1......................................................................................................... 11
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Prctica 1-1: Recuperacin de Datos mediante la Sentencia SQL SELECT ................ 12


Soluciones a la Prctica 1-1: Recuperacin de Datos mediante la Sentencia SQL
SELECT ........................................................................................................................ 16
Prcticas de la Leccin 2......................................................................................................... 19
Prctica 2-1: Restriccin y Ordenacin de Datos ......................................................... 20
Soluciones a la Prctica 2-1: Restriccin y Ordenacin de Datos ................................ 24
Prcticas de la Leccin 3......................................................................................................... 27
Prctica 3-1: Uso de Funciones de Una Sola Fila para Personalizar la Salida ............. 28
nse
Soluciones a la Prctica 3-1: Uso de Funciones de Una Sola Fila para
li c e
Personalizar la Salida.................................................................................................... 32 e
a b l
Prcticas de la Leccin 4......................................................................................................... 35
Prctica 4-1: Uso de Funciones de Conversin y Expresiones Condicionales............. 36 s fer
Soluciones a la Prctica 4-1: Uso de Funciones de Conversin y Expresiones
- t r an
n
Condicionales................................................................................................................ 39
no
a
Prcticas de la Leccin 5......................................................................................................... 41

) has ide
Prctica 5-1: Informes de Datos Agregados con Funciones de Grupo ......................... 42
Soluciones a la Prctica 5-1: Informes de Datos Agregados con Funciones de
c om t Gu
Grupo ............................................................................................................................ 45
l
t m ai den
Prcticas de la Leccin 6......................................................................................................... 48
o S tu
Prctica 6-1: Visualizacin de Datos de Varias Tablas Utilizando Uniones ................ 49
h
0 4 @ this
Soluciones a la Prctica 6-1: Visualizacin de Datos de Varias Tablas Utilizando
l i o ct use
Uniones ......................................................................................................................... 52
u to
Prcticas de la Leccin 7......................................................................................................... 54
o b a (j
Prctica 7-1: Uso de Subconsultas para Solucionar Consultas..................................... 55

C ord
Soluciones a la Prctica 7-1: Uso de Subconsultas para Solucionar Consultas............ 57
Prcticas de la Leccin 8......................................................................................................... 59
io
Jul Prctica 8-1: Uso de los Operadores de Definicin ...................................................... 60
Soluciones a la Prctica 8-1: Uso de los Operadores de Definicin............................. 62
Prcticas de la Leccin 9......................................................................................................... 64
Prctica 9-1: Manipulacin de Datos............................................................................ 65
Soluciones a la Prctica 9-1: Manipulacin de Datos................................................... 69
Prcticas de la Leccin 10....................................................................................................... 73
Prctica 10-1: Uso de Sentencias DDL para Crear y Gestionar Tablas........................ 74
Soluciones a la Prctica 10-1: Uso de Sentencias DDL para Crear y Gestionar
Tablas............................................................................................................................ 76
Prcticas de la Leccin 11....................................................................................................... 79
Prctica 11-1: Creacin de Otros Objetos de Esquema ................................................ 80
Soluciones a la Prctica 11-1: Creacin de Otros Objetos de Esquema ....................... 82
Prcticas del Apndice F......................................................................................................... 84
Prctica F-1: Sintaxis de Unin en Oracle.................................................................... 85
Soluciones a las Prcticas F-1: Sintaxis de Unin en Oracle........................................ 88

Oracle Database: Conceptos Fundamentales de SQL I A-2


Prcticas para la Leccin I
En esta prctica, realizar las siguientes tareas:
Iniciar Oracle SQL Developer y crear una nueva conexin a la cuenta ora1.
Utilizar Oracle SQL Developer para examinar objetos de datos en la cuenta ora1.
La cuenta ora1 contiene las tablas de esquema HR.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Observe la siguiente ubicacin de los archivos de los ejercicios prcticos:


\home\oracle\labs\sql1\labs
Si se le pide que guarde algn archivo de los ejercicios prcticos, gurdelo en esta
ubicacin.

En las prcticas, puede que haya ejercicios que estn precedidos por las frases Si tiene e
tiempo o Si desea superarse a s mismo. Realice estos ejercicios slo si ha terminado
c e ns
el resto de ejercicios en el tiempo asignado y si desea poner a prueba sus habilidades.
le li
a b
Realice las prcticas despacio y de forma precisa. Puede experimentar guardando s f ery
ejecutando los archivos de comandos. Si tiene alguna duda en cualquier
- t r an
momento,
pregunte a su instructor.
n on
s a
Nota
) a
h ide
1) Todas las prcticas escritas utilizan Oracle c om G u como entorno de
SQL Developer
desarrollo. Aunque se recomienda a l
i Oracle
utilizar
t
en SQL Developer, tambin puede usar
SQL*Plus, disponible en este t m
ocurso. St u d
h
@la secuencia is de filas recuperadas de la base de datos puede
2) Para cualquier consulta,
0 4 t h
o ct a la uquesese muestra en las capturas de pantalla.
variar con respecto
l i
a (ju to
r d ob
C o
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-3


Prctica I-1: Introduccin
sta es la primera de varias prcticas de este curso. Las soluciones (si las necesita) estn
al final de esta prctica. Las prcticas estn destinadas a abarcar la mayora de los temas
que se presentan en la leccin correspondiente.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Inicio de Oracle SQL Developer


1) Inicie Oracle SQL Developer mediante el icono del escritorio de SQL Developer.
Creacin de Nuevas Conexiones a la Base de Datos de Oracle SQL Developer
2) Para crear una nueva conexin a la base de datos, en el navegador de conexiones,
haga clic con el botn derecho del mouse en Connections. Seleccione New
Connection en el men. Aparece el cuadro de dilogo New/Select Database
Connection.
nse
3) Cree una conexin a la base de datos con la siguiente informacin: li c e
b le
a) Connection Name: myconnection
fer a
b) Username: ora1 ans
n - t r
c) Password: ora1
a no
d) Hostname: localhost
) has ide
e) Port: 1521
l c om t Gu
f) SID: ORCL
t m ai den
h o S tu
Asegrese de activar la casilla
4 @ de control
t h is Save Password.
0
ctmediante
sela Conexin a la Base de Datos de Oracle SQL
Prueba y Conexinl i o u
Developer a (ju to
d b
oPruebe
o r
4) la nueva conexin.
io C
Jul
5) Si el estado es Success, conctese a la base de datos mediante esta nueva conexin.
Examen de Tablas en el Navegador de Conexiones
6) En el navegador de conexiones, visualice los objetos disponibles en el nodo Tables.
Verifique que las siguientes tablas estn presentes:
COUNTRIES
DEPARTMENTS
EMPLOYEES
JOB_GRADES
JOB_HISTORY
JOBS
LOCATIONS
REGIONS
7) Examine la estructura de la tabla EMPLOYEES.
8) Visualice los datos de la tabla DEPARTMENTS.

Oracle Database: Conceptos Fundamentales de SQL I A-4


Soluciones a la Prctica I-1: Introduccin
Inicio de Oracle SQL Developer
1) Inicie Oracle SQL Developer mediante el icono del escritorio de SQL Developer.
a) Haga doble clic en el icono del escritorio de SQL Developer.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Aparece la interfaz de SQL Developer.

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul
Creacin de Nuevas Conexiones a la Base de Datos de Oracle SQL Developer
2) Para crear una nueva conexin a la base de datos, en el navegador de conexiones,
haga clic con el botn derecho del mouse en Connections y seleccione New
Connection en el men.

Oracle Database: Conceptos Fundamentales de SQL I A-5


Soluciones a la Prctica I-1: Introduccin (continuacin)
Aparece el cuadro de dilogo New/Select Database Connection.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
n - t r
a no
3) Cree una conexin a la base de datos con la siguientesinformacin:
a) Connection Name: myconnection m)
ha ide
c o G u
b) Username: ora1 l
ai den t
o t m tu
c) Password: ora1 h
@ this S
0 4
l i o ct use
d) Hostname: localhost
(ju1521 to
e) Port:
a
r d of) bSID: ORCL
io CoAsegrese de activar la casilla de control Save Password.
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-6


Soluciones a la Prctica I-1: Introduccin (continuacin)
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b l e
fer a
a n s
r
-t SQL
Prueba y Conexin mediante la Conexin a la Base de Datos denOracle
Developer n o
a
4) Pruebe la nueva conexin.
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
a (ju to
r d ob
io Co
Jul

5) Si el estado es Success, conctese a la base de datos mediante esta nueva conexin.

Oracle Database: Conceptos Fundamentales de SQL I A-7


Soluciones a la Prctica I-1: Introduccin (continuacin)
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b l e
fer a
a n s
n
Al crear una conexin, automticamente se abre una hoja de trabajo
r
-t de SQL para
n o
dicha conexin. a
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
a (ju to
b
ordo
io C
Jul

Examen de Tablas en el Navegador de Conexiones


6) En el navegador de conexiones, visualice los objetos disponibles en el nodo Tables.
Verifique que las siguientes tablas estn presentes:
COUNTRIES
DEPARTMENTS
EMPLOYEES
JOB_GRADES
JOB_HISTORY
JOBS
LOCATIONS
REGIONS

Oracle Database: Conceptos Fundamentales de SQL I A-8


Soluciones a la Prctica I-1: Introduccin (continuacin)
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
n - t r
7) Examine la estructura de la tabla EMPLOYEES. a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

8) Visualice los datos de la tabla DEPARTMENTS.

Oracle Database: Conceptos Fundamentales de SQL I A-9


Soluciones a la Prctica I-1: Introduccin (continuacin)
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
ob a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-10


Prcticas de la Leccin 1
En esta prctica, escribir consultas simples SELECT. Las consultas tratan la mayora de
las operaciones y clusulas SELECT que ha aprendido en esta leccin.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-11


Prctica 1-1: Recuperacin de Datos mediante la Sentencia SQL
SELECT
Parte 1

Ponga a prueba sus conocimientos:


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

1) La siguiente sentencia SELECT se ejecuta correctamente:


SELECT last_name, job_id, salary AS Sal
FROM employees;

Verdadero/Falso

nse
2) La siguiente sentencia SELECT se ejecuta correctamente: li c e
b l e
SELECT *
fer a
FROM job_grades;
ans
n - t r
Verdadero/Falso a no
) has ide
c
3) En la siguiente sentencia hay cuatro erroresom G u Puede identificarlos?
de codificacin.
l
ai den t
SELECT employee_id,
o t m tu
last_name
sal x 12 ANNUAL SALARY h
@ this S
FROM 0 4
employees;
l i o ct use
a (ju to
r d ob2
Parte

io CoTenga en cuenta los siguientes puntos antes de iniciar las prcticas:


Jul Guarde todos los archivos de los ejercicios prcticos en la siguiente ubicacin:
/home/oracle/labs/sql1/labs
Introduzca las sentencias SQL en una hoja de trabajo de SQL. Para guardar un
script en SQL Developer, asegrese de que la hoja de trabajo de SQL necesaria
est activa y, a continuacin, en el men File, seleccione Save As para guardar la
sentencia SQL como un script lab_<lessonno>_<stepno>.sql. Cuando est
modificando un script existente, asegrese de que utiliza Save As para guardarlo
con un nombre de archivo diferente.
Para ejecutar una consulta, haga clic en el icono Execute Statement en la hoja de
trabajo de SQL. Como alternativa, puede pulsar [F9]. Para sentencias DML y
DDL, utilice el icono Run Script o pulse [F5].
Una vez ejecutada la consulta, asegrese de que no introduce la siguiente consulta
en la misma hoja de trabajo. Abra una hoja de trabajo nueva.
Se le ha contratado como programador de SQL para Acme Corporation. Su primera tarea
es crear algunos informes segn los datos de las tablas de recursos humanos.

Oracle Database: Conceptos Fundamentales de SQL I A-12


Prctica 1-1: Recuperacin de Datos mediante la Sentencia SQL
SELECT (continuacin)
4) Su primera tarea es determinar la estructura de la tabla DEPARTMENTS y su contenido.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
n - t r
a no
5) Determine la estructura de la tabla EMPLOYEES). ha
s e
o m u id
a ilc ent G
o t m tud
@ h is S
c t 04 se th
( j ulio to u
o b a
rd
io Co
Jul

El departamento de recursos humanos desea que una consulta muestre el apellido, ID


de cargo, fecha de contratacin e ID de empleado de cada empleado, con el ID de
empleado en primer lugar. Proporcione un alias STARTDATE para la columna
HIRE_DATE. Guarde la sentencia SQL en un archivo con el nombre
lab_01_05.sql para distribuirlo al departamento de recursos humanos.
6) Pruebe la consulta en el archivo lab_01_05.sql para asegurarse de que se ejecuta
correctamente.
Nota: una vez ejecutada la consulta, asegrese de que no introduce la siguiente
consulta en la misma hoja de trabajo. Abra una hoja de trabajo nueva.

Oracle Database: Conceptos Fundamentales de SQL I A-13


Prctica 1-1: Recuperacin de Datos mediante la Sentencia SQL
SELECT (continuacin)
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

7) El departamento de recursos humanos desea una consulta para mostrar todos los ID nse
de cargo nicos de la tabla EMPLOYEES. li c e
b l e
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io Parte 3
Jul Si tiene tiempo, realice los siguientes ejercicios:
8) El departamento de recursos humanos desea cabeceras de columna ms descriptivas
para su informe sobre empleados. Copie la sentencia de lab_01_05.sql en una
nueva hoja de trabajo de SQL. Asigne a las cabeceras de columna los nombres Emp
#, Employee, Job y Hire Date, respectivamente. A continuacin, vuelva a ejecutar
la consulta.

Oracle Database: Conceptos Fundamentales de SQL I A-14


Prctica 1-1: Recuperacin de Datos mediante la Sentencia SQL
SELECT (continuacin)

9) El departamento de recursos humanos ha solicitado un informe de todos los


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

empleados y sus ID de cargo. Muestre el apellido concatenado con el ID de cargo


(separado por una coma y un espacio) y asigne a la columna el nombre Employee
and Title.

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
c G u
om ejercicio:
Si desea superarse a s mismo, complete el l siguiente
ai dEMPLOYEESen t
o t
10) Para familiarizarse con los datosm u
t cada salida, cree
de la tabla una consulta para
deh
mostrar todos los datos@ i s
dicha tabla. S Separe de la columna por una
coma. Asigne a lat0 4
columna e t h
el ttulo THE_OUTPUT.
i o c u s
( j ul to
ob a
r d
io Co
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-15


Soluciones a la Prctica 1-1: Recuperacin de Datos mediante la
Sentencia SQL SELECT
Parte 1

Ponga a prueba sus conocimientos:


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

1) La siguiente sentencia SELECT se ejecuta correctamente:


SELECT last_name, job_id, salary AS Sal
FROM employees;

Verdadero/Falso
nse
2) La siguiente sentencia SELECT se ejecuta correctamente: li c e
b le
SELECT *
fer a
FROM job_grades;
ans
n - t r
Verdadero/Falso a no
) has ide
c om G u Puede identificarlos?
l
3) En la siguiente sentencia hay cuatro errores
ai den t
de codificacin.
SELECT employee_id,
o t mlast_nametu
h
@ this
sal x 12 ANNUAL SALARY S
FROM 0 4
employees;
l i o ct use
ju EMPLOYEES
La (tabla
a to no contiene ninguna columna denominada sal. La
r d obcolumna se denomina SALARY.
io Co El operador de multiplicacin es *, no x, como se muestra en la lnea 2.
Jul
El alias ANNUAL SALARY no puede incluir espacios. El alias debe ser
ANNUAL_SALARY o se deben incluir entre comillas dobles.

Falta una coma tras la columna LAST_NAME.


Parte 2
Se le ha contratado como programador de SQL para Acme Corporation. Su primera tarea
es crear algunos informes segn los datos de las tablas de recursos humanos.
4) Su primera tarea es determinar la estructura de la tabla DEPARTMENTS y su contenido.

a. Para determinar la estructura de la tabla DEPARTMENTS:


DESCRIBE departments

Oracle Database: Conceptos Fundamentales de SQL I A-16


Soluciones a la Prctica 1-1: Recuperacin de Datos mediante
la Sentencia SQL SELECT (continuacin)
b. Para ver los datos que contiene la tabla DEPARTMENTS:
SELECT *
FROM departments;
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

5) Determine la estructura de la tabla EMPLOYEES.


DESCRIBE employees

El departamento de recursos humanos desea que una consulta muestre el apellido, ID


de cargo, fecha de contratacin e ID de empleado de cada empleado, con el ID de
empleado en primer lugar. Proporcione un alias STARTDATE para la columna
HIRE_DATE. Guarde la sentencia SQL en un archivo con el nombre
nse
lab_01_05.sql para distribuirlo al departamento de recursos humanos. li c e
b l e
SELECT employee_id, last_name, job_id, hire_date StartDate
fer a
FROM employees;
a n s
6) Pruebe la consulta en el archivo lab_01_05.sql para asegurarse n r
-tde que se ejecuta
correctamente. n o
a
SELECT employee_id, last_name, job_id,
) hashire_date
i d e StartDate
FROM employees;
l c om t Gu
7) El departamento de recursos humanos
t m ai deseaduna
enconsulta para mostrar todos los ID
o
de cargo nicos de la tablahEMPLOYEESS .t u
@ thi
4job_id s
SELECT DISTINCT
c t 0 se
FROM l i o
employees; u
a (ju to
d o b
r
io CoParte 3
Jul Si tiene tiempo, realice los siguientes ejercicios:
8) El departamento de recursos humanos desea cabeceras de columna ms descriptivas
para su informe sobre empleados. Copie la sentencia de lab_01_05.sql en una
nueva hoja de trabajo de SQL. Asigne a las cabeceras de columna los nombres Emp
#, Employee, Job y Hire Date, respectivamente. A continuacin, vuelva a ejecutar
la consulta.
SELECT employee_id "Emp #", last_name "Employee",
job_id "Job", hire_date "Hire Date"
FROM employees;

9) El departamento de recursos humanos ha solicitado un informe de todos los


empleados y sus ID de cargo. Muestre el apellido concatenado con el ID de cargo
(separado por una coma y un espacio) y asigne a la columna el nombre Employee
and Title.
SELECT last_name||', '||job_id "Employee and Title"
FROM employees;

Oracle Database: Conceptos Fundamentales de SQL I A-17


Soluciones a la Prctica 1-1: Recuperacin de Datos mediante
la Sentencia SQL SELECT (continuacin)
Si desea superarse a s mismo, complete el siguiente ejercicio:
10) Para familiarizarse con los datos de la tabla EMPLOYEES, cree una consulta para
mostrar todos los datos de dicha tabla. Separe cada salida de la columna por una
coma. Asigne a la columna el ttulo THE_OUTPUT.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT employee_id || ',' || first_name || ',' || last_name


|| ',' || email || ',' || phone_number || ','|| job_id
|| ',' || manager_id || ',' || hire_date || ','
|| salary || ',' || commission_pct || ',' ||
department_id
THE_OUTPUT
FROM employees;
nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-18


Prcticas de la Leccin 2
En esta prctica se crean ms informes, incluyendo sentencias que utilizan las clusulas
WHERE y ORDER BY. Puede hacer que las sentencias SQL sean ms reutilizables y
genricas incluyendo la sustitucin con ampersand.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b l e
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-19


Prctica 2-1: Restriccin y Ordenacin de Datos
El departamento de recursos humanos necesita su ayuda para crear algunas consultas.
1) Debido a problemas presupuestarios, el departamento de recursos humanos necesita
un informe que muestre el apellido y el salario de los empleados que ganan ms de
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

12.000 dlares. Guarde la sentencia SQL como un archivo denominado


lab_02_01.sql. Ejecute la consulta.

nse
li c e
b l e
a
2) Abra una hoja de trabajo de SQL nueva. Cree un informe que muestre el apellido y el
fer
s
nmero de departamento para el nmero de empleado 176. Ejecute la consulta.
an
n - t r
a no
) has ide
c om encontrar
G u los empleados con salarios
3) El departamento de recursos humanoslnecesita
i t
en para mostrar el apellido y el
alab_02_01.sql
tanto altos como bajos. Modifique
t m u d
t no est entre 5.000 y 12.000 dlares.
o cuyo salario
h
salario de cualquier empleado
i s S
@comothlab_02_03.sql
Guarde la sentencia
t 0 4SQL e .
c s
( j ulio to u
o b a
rd
io Co
Jul

4) Cree un informe para mostrar el apellido, ID de cargo y fecha de contratacin de los


empleados cuyos apellidos sean Matos y Taylor. Ordene la consulta en orden
ascendente por fecha de contratacin.

Oracle Database: Conceptos Fundamentales de SQL I A-20


Prctica 2-1: Restriccin y Ordenacin de Datos (continuacin)
5) Muestre el apellido y el ID de departamento de todos los empleados de los
departamentos 20 o 50 en orden alfabtico ascendente por nombre.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

6) Modifique el archivo lab_02_03.sql para mostrar el apellido y el salario de los nse


li c e
empleados que ganan entre 5.000 y 12.000 dlares y estn en el departamento 20 o e
50. Etiquete las columnas Employee y Monthly Salary, respectivamente. Vuelva a b l
a guardar lab_02_03.sql como lab_02_06.sql. Ejecute la sentencia en el s fer
archivo lab_02_06.sql. - t r an
no n
a
) has ide
l c om t Gu
t m ai den
7) El departamento de recursos h tu un informe que muestre el apellido y
ohumanosSnecesita
4
la fecha de contratacin@de todos
t h is
los empleados contratados durante el ao 1994.
0
ct use
l i o
a (ju to
r d ob
io Co
Jul 8) Cree un informe para mostrar el apellido y el puesto de todos los empleados que no
tienen un supervisor.

9) Cree un informe para mostrar el apellido, salario y comisin de todos los empleados que
perciben comisiones. Ordene los datos en orden descendente de salario y comisiones.
Utilice la posicin numrica de la columna en la clusula ORDER BY.

Oracle Database: Conceptos Fundamentales de SQL I A-21


Prctica 2-1: Restriccin y Ordenacin de Datos (continuacin)
10) Los miembros del departamento de recursos humanos desean tener ms flexibilidad
con las consultas que est creando. Les gustara tener un informe que muestre el
apellido y el salario de los empleados que ganen ms de una cantidad especificada por
el usuario despus de una solicitud. Guarde esta consulta en un archivo denominado
lab_02_10.sql. Si introduce 12000 cuando se le solicite, el informe mostrar los
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

siguientes resultados:

nse
li c e
11) El departamento de recursos humanos desea ejecutar informes basados en un le
a b
supervisor. Cree una consulta que solicite al usuario un ID de supervisor y genere el
s fer
ID de empleado, apellido, salario y departamento de los empleados de ese supervisor.
t r an
El departamento de recursos humanos desea ordenar el informe en una columna
-
no n
seleccionada. Puede probar los datos con los siguientes valores:
manager_id = 103, ordenado por last_name: a
) has ide
l c om t Gu
t m ai den
h o S tu
@ por
manager_id = 201, ordenado
4 t h is
salary:
0
ct use
l i o
a (ju to
b
ordomanager_id = 124, ordenado por employee_id:
io C
Jul

Si tiene tiempo, realice los siguientes ejercicios:


12) Muestre todos los apellidos de los empleados cuya tercera letra sea una "a".

Oracle Database: Conceptos Fundamentales de SQL I A-22


Prctica 2-1: Restriccin y Ordenacin de Datos (continuacin)
13) Muestre los apellidos de los empleados que tengan una "a" y una "e" en su apellido.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Si desea superarse a s mismo, complete los siguientes ejercicios:


14) Muestre el apellido, cargo y salario de todos los empleados que sean vendedores u
oficinistas en el departamento de stock y cuyos salarios no sean iguales que 2.500,
3.500 7.000 dlares.
nse
li c e
b le
fer a
ans
n - t r
a no
15) Modifique el archivo lab_02_06.sql para mostrar el apellido, salario y comisin
has ide
de todos los empleados cuya comisin sea del 20%. Vuelva a guardar
)
l c om t Gu
lab_02_06.sql como lab_02_15.sql. Vuelva a ejecutar la sentencia en el
archivo lab_02_15.sql.
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-23


Soluciones a la Prctica 2-1: Restriccin y Ordenacin de Datos
El departamento de recursos humanos necesita su ayuda para crear algunas consultas.
1) Debido a problemas presupuestarios, el departamento de recursos humanos necesita
un informe que muestre el apellido y el salario de los empleados que ganan ms de
12.000 dlares. Guarde la sentencia SQL como un archivo denominado
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

lab_02_01.sql. Ejecute la consulta.


SELECT last_name, salary
FROM employees
WHERE salary > 12000;
2) Abra una hoja de trabajo de SQL nueva. Cree un informe que muestre el apellido y el
nmero de departamento para el nmero de empleado 176.
SELECT last_name, department_id nse
FROM employees li c e
WHERE employee_id = 176; b l e
fer a
s
3) El departamento de recursos humanos necesita encontrar los empleados con salarios
an
t r
tanto altos como bajos. Modifique lab_02_01.sql para mostrar el apellido y el
n -
Guarde la sentencia SQL como lab_02_03.sql. a no
salario de todos los empleados cuyo salario no est entre 5.000 y 12.000 dlares.

SELECT last_name, salary ) has ide


FROM employees
l c om t Gu
WHERE salary NOT BETWEEN
t m ai5000 dANDen12000;
h
4) Cree un informe para mostrar oel apellido,
S u
t ID de cargo y fecha de contratacin de los
4@ sean
empleados cuyos apellidos t s
i y Taylor. Ordene la consulta en orden
hMatos
t 0 e
ascendente por
u l i ocfechaodeucontratacin.
s
SELECT
a (j last_name, t job_id, hire_date
o b
FROM employees
rd
io Co WHERE last_name IN ('Matos', 'Taylor')
ORDER BY hire_date;
Jul 5) Muestre el apellido y el ID de departamento de todos los empleados de los
departamentos 20 o 50 en orden alfabtico ascendente por nombre.
SELECT last_name, department_id
FROM employees
WHERE department_id IN (20, 50)
ORDER BY last_name ASC;
6) Modifique el archivo lab_02_03.sql para mostrar el apellido y el salario de los
empleados que ganan entre 5.000 y 12.000 dlares y estn en el departamento 20 o
50. Etiquete las columnas Employee y Monthly Salary, respectivamente. Vuelva a
guardar lab_02_03.sql como lab_02_06.sql. Ejecute la sentencia en el archivo
lab_02_06.sql.
SELECT last_name "Employee", salary "Monthly Salary"
FROM employees
WHERE salary BETWEEN 5000 AND 12000
AND department_id IN (20, 50);

Oracle Database: Conceptos Fundamentales de SQL I A-24


Soluciones a la Prctica 2-1: Restriccin y Ordenacin de Datos
(continuacin)
7) El departamento de recursos humanos necesita un informe que muestre el apellido y
la fecha de contratacin de todos los empleados contratados durante el ao 1994.
SELECT last_name, hire_date
FROM employees
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

WHERE hire_date LIKE '%94';

8) Cree un informe para mostrar el apellido y el puesto de todos los empleados que no
tienen un supervisor.
SELECT last_name, job_id
FROM employees
WHERE manager_id IS NULL;
nse
9) Cree un informe para mostrar el apellido, salario y comisin de todos los empleados
li c e
que perciben comisiones. Ordene los datos en orden descendente de salario y le
comisiones. Utilice la posicin numrica de la columna en la clusula ORDER BY. a b
s fer
SELECT last_name, salary, commission_pct
- t r an
FROM
WHERE
employees
commission_pct IS NOT NULL non
a
has ide
ORDER BY 2 DESC, 3 DESC;
10) Los miembros del departamento de recursosm ) udesean tener ms flexibilidad
l c o humanos
t G
con las consultas que est creando. Les
a i gustara
e ntener un informe que muestre el
o t m tu
apellido y el salario de los empleados que d
ganen ms de una cantidad especificada por
el usuario despus de una h S
solicitud.s(Puede utilizar la consulta creada en el ejercicio
t 0 4 @
prctico 1 y modificarla). t
Guarde
e hiesta consulta en un archivo denominado
l
lab_02_10.sql
u i oc . o us
a (j last_name, t salary
b
SELECT
o rdoFROM employees

io C WHERE salary > &sal_amt;

Jul Introduzca 12000 cuando se le solicite un valor en un cuadro de dilogo. Haga clic
en OK.

11) El departamento de recursos humanos desea ejecutar informes basados en un


supervisor. Cree una consulta que solicite al usuario un ID de supervisor y genere el ID
de empleado, apellido, salario y departamento de los empleados de ese supervisor. El
departamento de recursos humanos desea ordenar el informe en una columna
seleccionada. Puede probar los datos con los siguientes valores:

Oracle Database: Conceptos Fundamentales de SQL I A-25


Soluciones a la Prctica 2-1: Restriccin y Ordenacin de Datos
(continuacin)
manager _id = 103, ordenado por last_name
manager_id = 201, ordenado por salary
manager_id = 124, ordenado por employee_id
SELECT employee_id, last_name, salary, department_id
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

FROM employees
WHERE manager_id = &mgr_num
ORDER BY &order_col;

Si tiene tiempo, realice los siguientes ejercicios:


12) Muestre todos los apellidos de los empleados cuya tercera letra sea una "a".
SELECT last_name
nse
FROM
WHERE
employees
last_name LIKE '__a%'; li c e
a b le
13) Muestre los apellidos de los empleados que tengan una "a" y una "e" en su apellido.
s f er
SELECT last_name
- t r an
FROM employees
n on
WHERE last_name LIKE '%a%'
s a
AND last_name LIKE '%e%';
) a
h ide
c G u
om t ejercicios:
Si desea superarse a s mismo, complete los
i l siguientes
enempleados que sean vendedores u
14) Muestre el apellido, cargo y o t made todos
salario u dlos
t cuyo salario no sea igual que 2.500, 3.500 o
h
oficinistas en el departamento
@ thi de s
stockS y
7.000 dlares. t04
l i o c u se
SELECT
a (ju last_name,
to job_id, salary
d b
FROM
oWHERE employees
o r job_id IN ('SA_REP', 'ST_CLERK')

io C AND salary NOT IN (2500, 3500, 7000);

Jul 15) Modifique el archivo lab_02_06.sql para mostrar el apellido, salario y comisin
de todos los empleados cuya comisin sea del 20%. Vuelva a guardar
lab_02_06.sql como lab_02_15.sql. Vuelva a ejecutar la sentencia en el
archivo lab_02_15.sql.
SELECT last_name "Employee", salary "Monthly Salary",
commission_pct
FROM employees
WHERE commission_pct = .20;

Oracle Database: Conceptos Fundamentales de SQL I A-26


Prcticas de la Leccin 3
Esta prctica proporciona una variedad de ejercicios que utilizan diferentes funciones que
estn disponibles para tipos de dato de carcter, de nmero y de fecha.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-27


Prctica 3-1: Uso de Funciones de Una Sola Fila para
Personalizar la Salida
1) Escriba una consulta para mostrar la fecha del sistema. Etiquete la columna como
Date.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Nota: si la base de datos se ubica de forma remota en una zona horaria diferente, la
salida ser la fecha del sistema operativo en el que reside la base de datos.

2) El departamento de recursos humanos necesita un informe que muestre el nmero de


empleado, apellido, salario y salario aumentado en un 15,5% (expresado como
nmero entero) para cada empleado. Etiquete la columna como New Salary. Guarde nse
la sentencia SQL en un archivo denominado lab_03_02.sql. li c e
b l e
3) Ejecute la consulta en el archivo lab_03_02.sql.
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den

h o S tu
0 4 @ this
l i o ct use
u to
b a (j
4) Modifique la consulta lab_03_02.sql para agregar una columna que reste el
o
C ord salario antiguo del nuevo. Etiquete la columna como Increase. Guarde el contenido
io del archivo como lab_03_04.sql. Ejecute la consulta revisada.
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-28


Prctica 3-1: Uso de Funciones de Una Sola Fila para
Personalizar la Salida (continuacin)
5) Escriba una consulta que muestre el apellido (con la primera letra en maysculas y el
resto en minsculas) y la longitud del apellido de todos los empleados cuyos nombres
empiecen por las letras "J", "A" o "M". Proporcione a cada columna una etiqueta
adecuada. Ordene los resultados por el apellido de los empleados.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Vuelva a escribir la consulta para que se le solicite al usuario que introduzca la letra
por la que empieza el apellido. Por ejemplo, si el usuario introduce "H" (en
mayscula) cuando se le solicita que introduzca una letra, la salida debe mostrar a nse
todos los empleados cuyos apellidos empiecen por la letra "H". li c e
b l e
fer a
ans
n - t r
a no
has idede la letra introducida no
Modifique la consulta de forma que la mayscula/minscula
)
afecte a la salida. La letra introducida debe
c om
estar en G u
mayscula antes de que la procese
la consulta SELECT. l
ai den t
o t m tu
h
@ this S
0 4
l i o ct use
a (ju to
or dob
io C
Jul

6) El departamento de recursos humanos desea buscar la duracin del contrato de cada


empleado. Para cada empleado, muestre el apellido y calcule el nmero de meses
entre el da de hoy y la fecha de contratacin del empleado. Etiquete la columna como
MONTHS_WORKED. Ordene los resultados por el nmero de meses durante los que ha
trabajado. Redondee el nmero de meses hasta el nmero entero ms cercano.
Nota: debido a que esta consulta depende de la fecha de ejecucin, los valores de la
columna MONTHS_WORKED sern diferentes.

Oracle Database: Conceptos Fundamentales de SQL I A-29


Prctica 3-1: Uso de Funciones de Una Sola Fila para
Personalizar la Salida (continuacin)
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
Si tiene tiempo, realice los siguientes ejercicios: li c e
7) Cree una consulta para mostrar el apellido y el salario de todos los empleados. b le
fer a
Formatee el salario para que tenga 15 caracteres de longitud y tenga un relleno hacia
ans
la izquierda con el smbolo $. Etiquete la columna como SALARY.
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
ob a (j
r d
o8) Cree una consulta que muestre los primeros ocho caracteres de los apellidos de los
io C
Jul
empleados y que indique las cantidades de sus salarios con asteriscos. Cada asterisco
significa mil dlares. Ordene los datos en orden descendente de salarios. Etiquete la
columna como EMPLOYEES_AND_THEIR_SALARIES.

Oracle Database: Conceptos Fundamentales de SQL I A-30


Prctica 3-1: Uso de Funciones de Una Sola Fila para
Personalizar la Salida (continuacin)
9) Cree una consulta para mostrar el apellido y el nmero de semanas durante las que
han trabajado todos los empleados del departamento 90. Etiquete la columna de
nmero de semanas como TENURE. Trunque el valor del nmero de semana en 0
decimales. Muestre los registros en orden descendente de antigedad del empleado.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Nota: el valor TENURE variar ya que depende de la fecha de ejecucin de la


consulta.

nse
li c e
b l e
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-31


Soluciones a la Prctica 3-1: Uso de Funciones de Una Sola Fila
para Personalizar la Salida
1) Escriba una consulta para mostrar la fecha del sistema. Etiquete la columna como
Date.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Nota: si la base de datos se ubica de forma remota en una zona horaria diferente, la
salida ser la fecha del sistema operativo en el que reside la base de datos.
SELECT sysdate "Date"
FROM dual;

2) El departamento de recursos humanos necesita un informe que muestre el nmero de


empleado, apellido, salario y salario aumentado en un 15,5% (expresado como
nmero entero) para cada empleado. Etiquete la columna como New Salary.
nse
Guarde la sentencia SQL en un archivo denominado lab_03_02.sql. li c e
b le
SELECT employee_id, last_name, salary,
fer a
ROUND(salary * 1.155, 0) "New Salary"
ans
FROM employees;
n - t r
3) Ejecute la consulta en el archivo lab_03_02.sql.
a no
SELECT employee_id, last_name, salary,
) h as de
ROUND(salary * 1.155, 0)m"New Salary"
c o G ui
FROM employees;
a il ent
o t m tupara
4) Modifique la consulta lab_03_02.sql
d agregar una columna que reste el
@
salario antiguo del nuevo.
S
hEtiqueteisla columna como Increase. Guarde el
c t 4
0 como e th
contenido del archivo
lio to u s lab_03_04.sql. Ejecute la consulta revisada.
SELECT ( j uemployee_id, last_name, salary,
b a
rdo
ROUND(salary * 1.155, 0) "New Salary",
o
C FROM ROUND(salary * 1.155, 0) - salary "Increase"
io employees;
Jul 5) Escriba una consulta que muestre el apellido (con la primera letra en maysculas y el
resto en minsculas) y la longitud del apellido de todos los empleados cuyos nombres
empiecen por las letras "J", "A" o "M". Proporcione a cada columna una etiqueta
adecuada. Ordene los resultados por el apellido de los empleados.
SELECT INITCAP(last_name) "Name",
LENGTH(last_name) "Length"
FROM employees
WHERE last_name LIKE 'J%'
OR last_name LIKE 'M%'
OR last_name LIKE 'A%'
ORDER BY last_name ;

Vuelva a escribir la consulta para que se le solicite al usuario que introduzca la letra
por la que empieza el apellido. Por ejemplo, si el usuario introduce H (en mayscula)
cuando se le solicita que introduzca una letra, la salida debe mostrar a todos los
empleados cuyos apellidos empiecen por la letra "H".

Oracle Database: Conceptos Fundamentales de SQL I A-32


Soluciones a la Prctica 3-1: Uso de Funciones de Una Sola Fila
para Personalizar la Salida (continuacin)
SELECT INITCAP(last_name) "Name",
LENGTH(last_name) "Length"
FROM employees
WHERE last_name LIKE '&start_letter%'
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

ORDER BY last_name;

Modifique la consulta de forma que la mayscula/minscula de la letra introducida no


afecte a la salida. La letra introducida debe estar en mayscula antes de que la procese
la consulta SELECT.
SELECT INITCAP(last_name) "Name",
LENGTH(last_name) "Length"
FROM
WHERE
employees
last_name LIKE UPPER('&start_letter%' ) nse
ORDER BY last_name; li c e
b l e
fer
6) El departamento de recursos humanos desea buscar la duracin del contrato de cada a
ans
empleado. Para cada empleado, muestre el apellido y calcule el nmero de meses
- t r
entre el da de hoy y la fecha de contratacin del empleado. Etiquete la columna como
n
no
MONTHS_WORKED. Ordene los resultados por el nmero de meses durante los que ha
a
has ide
trabajado. Redondee el nmero de meses hasta el nmero entero ms cercano.
) u ejecucin, los valores de la
Nota: debido a que esta consulta depende
l c odemla fecha
t G de
i
columna MONTHS_WORKED sernadiferentes. en
o t m t u d
h
SELECT last_name, ROUND(MONTHS_BETWEEN(
s S
@ thi MONTHS_WORKED
SYSDATE, 4 hire_date))
c t 0 se
FROM
l i o
employees
u
ORDER BY
a (jumonths_worked;
to
r
Si d ob tiempo, realice los siguientes ejercicios:
tiene
C o
io
Jul
7) Cree una consulta para mostrar el apellido y el salario de todos los empleados.
Formatee el salario para que tenga 15 caracteres de longitud y tenga un relleno hacia
la izquierda con el smbolo $. Etiquete la columna como SALARY.
SELECT last_name,
LPAD(salary, 15, '$') SALARY
FROM employees;
8) Cree una consulta que muestre los primeros ocho caracteres de los apellidos de los
empleados y que indique las cantidades de sus salarios con asteriscos. Cada asterisco
significa mil dlares. Ordene los datos en orden descendente de salarios. Etiquete la
columna como EMPLOYEES_AND_THEIR_SALARIES.
SELECT rpad(last_name, 8)||' '||
rpad(' ', salary/1000+1, '*')
EMPLOYEES_AND_THEIR_SALARIES
FROM employees
ORDER BY salary DESC;

Oracle Database: Conceptos Fundamentales de SQL I A-33


Soluciones a la Prctica 3-1: Uso de Funciones de Una Sola Fila
para Personalizar la Salida (continuacin)
9) Cree una consulta para mostrar el apellido y el nmero de semanas durante las que
han trabajado todos los empleados del departamento 90. Etiquete la columna de
nmero de semanas como TENURE. Trunque el valor del nmero de semana en 0
decimales. Muestre los registros en orden descendente de antigedad del empleado.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Nota: el valor TENURE variar ya que depende de la fecha de ejecucin de la


consulta.

SELECT last_name, trunc((SYSDATE-hire_date)/7) AS TENURE


FROM employees
WHERE department_id = 90
ORDER BY TENURE DESC
nse
li c e
b l e
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-34


Prcticas de la Leccin 4
Esta prctica proporciona una variedad de ejercicios que utilizan las funciones TO_CHAR
y TO_DATE y expresiones condicionales como DECODE y CASE. Recuerde que para las
funciones anidadas, los resultados se evalan desde la funcin ms profunda hasta la
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

funcin menos profunda.

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-35


Prctica 4-1: Uso de Funciones de Conversin y Expresiones
Condicionales
1) Cree un informe que produzca los siguientes resultados para cada empleado:
<apellido_empleado> earns <salario> monthly but wants <3 veces
el salario.>. Etiquete la columna como Dream Salaries.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse

li c e
b le
fer a
a n s
n
2) Muestre el apellido, fecha de contratacin y fecha de revisin de
r
-t de cada
salario
empleado, que es el primer lunes despus de seis meses de n o
contrato. Etiquete la
a
columna como REVIEW. Formatee las fechas para que
) hasaparezcan
d e en un formato
c o m Gui
similar a Lunes treinta y uno de julio de 2000.

a il ent
o t m tud
@ h is S
c t 04 se th
( j ulio to u
o b a
rd
io Co
Jul
3) Muestre el apellido, fecha de contratacin y da de la semana en el que empez a
trabajar el empleado. Etiquete la columna como DAY. Ordene los resultados por el da
de la semana, empezando por el lunes.

Oracle Database: Conceptos Fundamentales de SQL I A-36


Prctica 4-1: Uso de Funciones de Conversin y Expresiones
Condicionales (continuacin)
4) Cree una consulta que muestre los apellidos y comisiones de los empleados. Si un
empleado no obtiene ninguna comisin, indique "No Commission". Etiquete la
columna como COMM.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

e
c e ns
le li
a b
s fer
- t r an
no n
a
Si tiene tiempo, realice los siguientes ejercicios:
) has ide
5) Con la funcin DECODE, escriba una consulta
c omquetmuestre
G u el grado de todos los
l
ai JOB_ID
empleados segn el valor de la columna en, utilizando los siguientes datos:
o t m t u d
Cargo h
Grado
s S
AD_PRES
t 0 4@ ABe thi
ST_MAN
IT_PROGulio
c u sC
(j o
t D
a
SA_REP
b
o rdoST_CLERK
None of the above 0
E

io C
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-37


Prctica 4-1: Uso de Funciones de Conversin y Expresiones
Condicionales (continuacin)
6) Vuelva a escribir la sentencia del ejercicio anterior utilizando la sintaxis CASE.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates


nse
li c e
b le

fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-38


Soluciones a la Prctica 4-1: Uso de Funciones de Conversin y
Expresiones Condicionales
1) Cree un informe que produzca los siguientes resultados para cada empleado:
<apellido_empleado> earns <salario> mensual pero desea<3 veces el salario.>.
Etiquete la columna como Dream Salaries.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT last_name || ' earns '


|| TO_CHAR(salary, 'fm$99,999.00')
|| ' monthly but wants '
|| TO_CHAR(salary * 3, 'fm$99,999.00')
|| '.' "Dream Salaries"
FROM employees;

2) Muestre el apellido, fecha de contratacin y fecha de revisin de salario de cada nse


empleado, que es el primer lunes despus de seis meses de contrato. Etiquete la li c e
columna como REVIEW. Formatee las fechas para que aparezcan en un formato b le
similar a Lunes treinta y uno de julio de 2000. fer a
ans
SELECT last_name, hire_date,
n - t r
TO_CHAR(NEXT_DAY(ADD_MONTHS(hire_date, 6),'MONDAY'),
'fmDay, "the" Ddspth "of" Month, YYYY') REVIEW a no
FROM employees;
) has ide
3) Muestre el apellido, fecha de contratacin c u en el que empez a
oymda det laGsemana
l
ai como
trabajar el empleado. Etiquete la columna enDAY. Ordene los resultados por el da
de la semana, empezando h t m
oel lunes.St
por u d
4 t h is
@hire_date,
SELECT last_name, 0
ct use 'DAY') DAY
i o
TO_CHAR(hire_date,
l
FROM (ju employees to
a
b BY TO_CHAR(hire_date - 1, 'd');
oORDER
r d
io Co4) Cree una consulta que muestre los apellidos y comisiones de los empleados. Si un
Jul empleado no obtiene ninguna comisin, indique "No Commission". Etiquete la
columna como COMM.
SELECT last_name,
NVL(TO_CHAR(commission_pct), 'No Commission') COMM
FROM employees;

5) Con la funcin DECODE, escriba una consulta que muestre el grado de todos los
empleados segn el valor de la columna JOB_ID, utilizando los siguientes datos:
Cargo Grado
AD_PRES A
ST_MAN B
IT_PROG C
SA_REP D
ST_CLERK E
None of the above 0

Oracle Database: Conceptos Fundamentales de SQL I A-39


Soluciones a la Prctica 4-1: Uso de Funciones de Conversin y
Expresiones Condicionales (continuacin)
SELECT job_id, decode (job_id,
'ST_CLERK', 'E',
'SA_REP', 'D',
'IT_PROG', 'C',
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

'ST_MAN', 'B',
'AD_PRES', 'A',
'0')GRADE
FROM employees;

6) Vuelva a escribir la sentencia del ejercicio anterior utilizando la sintaxis CASE.


SELECT job_id, CASE job_id
WHEN 'ST_CLERK' THEN 'E'
WHEN 'SA_REP' THEN 'D' nse
WHEN 'IT_PROG' THEN 'C' li c e
WHEN 'ST_MAN' THEN 'B'
b le
WHEN 'AD_PRES' THEN 'A'
fer a
ELSE '0' END GRADE
ans
FROM employees;
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-40


Prcticas de la Leccin 5
Al finalizar esta prctica, debe estar familiarizado con el uso de funciones de grupo y la
seleccin de grupos de datos.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b l e
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-41


Prctica 5-1: Informes de Datos Agregados con Funciones de
Grupo
Determine la validez de las tres sentencias siguientes. Seleccione Verdadero o Falso.
1) Las funciones de grupo funcionan en varias filas para producir un resultado por grupo.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Verdadero/Falso
2) Las funciones de grupo incluyen valores nulos en los clculos.
Verdadero/Falso
3) La clusula WHERE restringe las filas antes de incluirlas en un clculo de grupo.
Verdadero/Falso

nse
El departamento de recursos humanos necesita los siguientes informes:
li c e
l
4) Encontrar el valor ms alto, el valor ms bajo, la suma y la media del salario de todos
b e
los empleados. Etiquete las columnas como Maximum, Minimum, Sum y Average, fer a
ans
respectivamente. Redondee los resultados al nmero entero ms cercano. Guarde la
sentencia SQL como lab_05_04.sql. Ejecute la consulta. n - t r
a no
) has ide
c om t Gpara u
a i l
5) Modifique la consulta del archivo lab_05_04.sql
e n mostrar el valor mnimo, el
o t m del salario
valor mximo, la suma y la media
t u d de cada tipo de cargo. Vuelva a guardar
S
@h this . Ejecute la sentencia en el archivo
lab_05_04.sql como lab_05_05.sql
lab_05_05.sql.04
l i o ct use
a (ju to
r d ob
io Co
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-42


Prctica 5-1: Informes de Datos Agregados con Funciones de
Grupo (continuacin)
6) Escriba una consulta para mostrar el nmero de personas con el mismo cargo.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b l e
fer a
a n s
Generalice la consulta para preguntar al usuario del departamento
n r
t recursos
-de
n o
humanos cul es su puesto. Guarde el script en un archivo denominado
lab_05_06.sql. Ejecute la consulta. Introduzca IT_PROG
a
s ecuando se le solicite.
) h a
o m u id
a ilc ent G
o t t u d en una lista. Etiquete la columna
msin enumerarlos
h is
7) Determine el nmero de gestores
@ S
Number of Managers
c t 4 .
0la columnae th
Indicacin: utilice
l i s
o o u MANAGER_ID para determinar el nmero de gestores.
(j u t
b a
o rdo
io C 8) Busque la diferencia entre los salarios ms altos y ms bajos. Etiquete la columna
Jul como DIFFERENCE.

Si tiene tiempo, realice los siguientes ejercicios:


9) Cree un informe para mostrar el nmero de gestor y el salario del empleado con
menor sueldo de ese gestor. Excluya a cualquier trabajador del que desconozca su
gestor. Excluya cualquier grupo en el que el salario mnimo sea 6.000 dlares o
menos. Ordene la salida en orden descendente de salarios.

Oracle Database: Conceptos Fundamentales de SQL I A-43


Prctica 5-1: Informes de Datos Agregados con Funciones de
Grupo (continuacin)
Si desea superarse a s mismo, complete los siguientes ejercicios:
10) Cree una consulta para mostrar el nmero total de empleados y, de ese total, el
nmero de empleados contratados en 1995, 1996, 1997 y 1998. Cree las cabeceras de
columna adecuadas.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

11) Cree una consulta de matriz para mostrar el cargo, el salario de ese cargo segn el
nmero de departamento y el salario total del cargo para los departamentos 20, 50, 80
y 90, proporcionando a cada columna una cabecera adecuada.

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-44


Soluciones a la Prctica 5-1: Informes de Datos Agregados con
Funciones de Grupo
Determine la validez de las tres sentencias siguientes. Seleccione Verdadero o Falso.
1) Las funciones de grupo funcionan en varias filas para producir un resultado por grupo.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Verdadero/Falso
2) Las funciones de grupo incluyen valores nulos en los clculos.
Verdadero/Falso
3) La clusula WHERE restringe las filas antes de incluirlas en un clculo de grupo.
Verdadero/Falso

El departamento de recursos humanos necesita los siguientes informes:


nse
4) Encontrar el valor ms alto, el valor ms bajo, la suma y la media del salario de todos li c e
los empleados. Etiquete las columnas como Maximum, Minimum, Sum y Average, b l e
fer
respectivamente. Redondee los resultados al nmero entero ms cercano. Guarde la a
sentencia SQL como lab_05_04.sql. Ejecute la consulta. ans
n - t r
SELECT ROUND(MAX(salary),0)
ROUND(MIN(salary),0)
"Maximum",
"Minimum", a no
ROUND(SUM(salary),0) "Sum",
) has ide
FROM
ROUND(AVG(salary),0)
employees;
"Average"
l c om t Gu
a i en para mostrar el valor mnimo,
5) Modifique la consulta del archivo t m
omedia del t u d
lab_05_04.sql
el valor mximo, la suma h
y la
@ como s S
i salario de cada tipo de cargo. Vuelva a
t
guardar lab_05_04.sql 0 4 t h
e lab_05_05.sql. Ejecute la sentencia en el
i o c u s
( j ul
archivo lab_05_05.sql.
to
a
b job_id, ROUND(MAX(salary),0) "Maximum",
oSELECT
r d ROUND(MIN(salary),0) "Minimum",
io Co ROUND(SUM(salary),0) "Sum",
Jul FROM
ROUND(AVG(salary),0) "Average"
employees
GROUP BY job_id;
6) Escriba una consulta para mostrar el nmero de personas con el mismo cargo.
SELECT job_id, COUNT(*)
FROM employees
GROUP BY job_id;
Generalice la consulta para preguntar al usuario del departamento de recursos
humanos cul es su puesto. Guarde el script en un archivo denominado
lab_05_06.sql. Ejecute la consulta. Introduzca IT_PROG cuando se le solicite y
haga clic en OK.
SELECT job_id, COUNT(*)
FROM employees
WHERE job_id = '&job_title'
GROUP BY job_id;

Oracle Database: Conceptos Fundamentales de SQL I A-45


Soluciones a la Prctica 5-1: Informes de Datos Agregados con
Funciones de Grupo (continuacin)
7) Determine el nmero de gestores sin enumerarlos en una lista. Etiquete la columna
como Number of Managers.
Indicacin: utilice la columna MANAGER_ID para determinar el nmero de gestores.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT COUNT(DISTINCT manager_id) "Number of Managers"


FROM employees;

8) Busque la diferencia entre los salarios ms altos y ms bajos. Etiquete la columna


como DIFFERENCE.
SELECT MAX(salary) - MIN(salary) DIFFERENCE
FROM employees;

Si tiene tiempo, realice los siguientes ejercicios: nse


li c e
9) Cree un informe para mostrar el nmero de gestor y el salario del empleado con
b le
fer
menor sueldo de ese gestor. Excluya a cualquier trabajador del que desconozca sua
ans
gestor. Excluya cualquier grupo en el que el salario mnimo sea 6.000 dlares o
menos. Ordene la salida en orden descendente de salarios.
n - t r
SELECT manager_id, MIN(salary) a no
FROM employees
) has ide
om t Gu
WHERE manager_id IS NOT NULL
GROUP BY manager_id
l c
HAVING MIN(salary) > 6000
t m ai den
ORDER BY MIN(salary) DESC;
h o S tu
0 4 @ this
Si desea superarse c a ts mismo,scomplete
e los siguientes ejercicios:
l i o u
10) Cree una
a (juconsulta que to muestre el nmero total de empleados y, de ese total, el
d b de empleados contratados en 1995, 1996, 1997 y 1998. Cree las cabeceras de
ocolumna
nmero
o r adecuadas.
io C
Jul SELECT COUNT(*) total,
SUM(DECODE(TO_CHAR(hire_date,
'YYYY'),1995,1,0))"1995",
SUM(DECODE(TO_CHAR(hire_date,
'YYYY'),1996,1,0))"1996",
SUM(DECODE(TO_CHAR(hire_date,
'YYYY'),1997,1,0))"1997",
SUM(DECODE(TO_CHAR(hire_date, 'YYYY'),1998,1,0))"1998"
FROM employees;

Oracle Database: Conceptos Fundamentales de SQL I A-46


Soluciones a la Prctica 5-1: Informes de Datos Agregados con
Funciones de Grupo (continuacin)
11) Cree una consulta de matriz para mostrar el cargo, el salario de ese cargo segn el
nmero de departamento y el salario total del cargo para los departamentos 20, 50, 80
y 90, proporcionando a cada columna una cabecera adecuada.
SELECT job_id "Job",
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SUM(DECODE(department_id , 20, salary)) "Dept 20",


SUM(DECODE(department_id , 50, salary)) "Dept 50",
SUM(DECODE(department_id , 80, salary)) "Dept 80",
SUM(DECODE(department_id , 90, salary)) "Dept 90",
SUM(salary) "Total"
FROM employees
GROUP BY job_id;

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-47


Prcticas de la Leccin 6
Esta prctica est destinada a proporcionarle experiencia en la extraccin de datos desde
ms de una tabla utilizando uniones compatibles con SQL:1999.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-48


Prctica 6-1: Visualizacin de Datos de Varias Tablas Utilizando
Uniones
1) Escriba una consulta para que el departamento de recursos humanos genere las
direcciones de todos los departamentos. Utilice las tablas LOCATIONS y COUNTRIES.
Muestre el ID de ubicacin, direccin, ciudad, estado o provincia y pas en la salida.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Utilice NATURAL JOIN para producir los resultados.

2) El departamento de recursos humanos necesita un informe slo de los empleados con nse
los departamentos correspondientes. Escriba una consulta para mostrar el apellido, li c e
nmero y nombre de departamento de estos empleados. b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den

h o S tu
0 4 @ this
l i o ct use
u to
b a (j
3) El departamento de recursos humanos necesita un informe de todos los empleados de
o
C ord Toronto. Muestre el apellido, cargo, nmero y nombre de departamento de todos los
empleados que trabajan en Toronto.
io
Jul

4) Cree un informe para mostrar el apellido y nmero de empleado junto con el apellido
y nmero de gestor del empleado. Etiquete las columnas como Employee, Emp#,
Manager y Mgr#, respectivamente. Guarde la sentencia SQL como
lab_06_04.sql. Ejecute la consulta.

Oracle Database: Conceptos Fundamentales de SQL I A-49


Prctica 6-1: Visualizacin de Datos de Varias Tablas Utilizando
Uniones (continuacin)

5) Modifique lab_06_04.sql para mostrar todos los empleados, incluido King, que no
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

tienen gestor. Ordene los resultados por nmero de empleado. Guarde la sentencia
SQL como lab_06_05.sql. Ejecute la consulta en el archivo lab_06_05.sql.

nse
li c e
b le
fer a
ans
n - t r
a no
6) Cree un informe del departamento de recursos humanos que muestre los apellidos y
has ide
nmeros de empleado y todos los empleados que trabajen en el mismo departamento
)
l c om t Gu
como un empleado determinado. Proporcione a cada columna una etiqueta adecuada.

t m ai den
Guarde el script en un archivo denominado lab_06_06.sql.
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

7) El departamento de recursos humanos necesita un informe sobre los salarios y grados


de cargo. Para familiarizarse con la tabla JOB_GRADES, en primer lugar, muestre la
estructura de la tabla JOB_GRADES. A continuacin, cree una consulta que muestre el
apellido, cargo, nombre de departamento, salario y grado de todos los empleados.

Oracle Database: Conceptos Fundamentales de SQL I A-50


Prctica 6-1: Visualizacin de Datos de Varias Tablas Utilizando
Uniones (continuacin)
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Si desea superarse a s mismo, complete los siguientes ejercicios: nse


li c e
8) El departamento de recursos humanos desea determinar los nombres de todos los
b le
fer
empleados contratados despus de Davies. Cree una consulta para mostrar el nombre a
s
y la fecha de contratacin de cualquier empleado contratado despus del empleado
an
Davies.
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
ob a (j
r d
o9) El departamento de recursos humanos necesita buscar el nombre y la fecha de
io C
Jul
contratacin de todos los empleados contratados antes que sus gestores, junto con el
nombre y fecha de contratacin del gestor. Guarde el script en un archivo
denominado lab_06_09.sql.

Oracle Database: Conceptos Fundamentales de SQL I A-51


Soluciones a la Prctica 6-1: Visualizacin de Datos de Varias
Tablas Utilizando Uniones
1) Escriba una consulta para que el departamento de recursos humanos genere las
direcciones de todos los departamentos. Utilice las tablas LOCATIONS y COUNTRIES.
Muestre el ID de ubicacin, direccin, ciudad, estado o provincia y pas en la salida.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Utilice NATURAL JOIN para producir los resultados.


SELECT location_id, street_address, city, state_province,
country_name
FROM locations
NATURAL JOIN countries;
2) El departamento de recursos humanos necesita un informe de todos los empleados.
Escriba una consulta para mostrar el apellido, nmero y nombre de departamento de e
todos los empleados.
c e ns
SELECT last_name, department_id, department_name le li
a b
FROM employees
s fer
JOIN departments
USING (department_id); - t r an
no n
3) El departamento de recursos humanos necesita un informe de todos los empleados de
a
empleados que trabajan en Toronto. ) has ide
Toronto. Muestre el apellido, cargo, nmero y nombre de departamento de todos los

c m Gu
oe.department_id,
SELECT e.last_name, e.job_id,
a i l
d e nt
d.department_name
FROM employees e h otmdepartments
JOIN S tu d
4 @ t h isd.department_id)
ON
JOIN o c
locationst0 l se
(e.department_id =

ON ( j l i t o u = l.location_id)
u(d.location_id
b a LOWER(l.city) = 'toronto';
WHERE
o
rd
o4) Cree un informe para mostrar el apellido y nmero de empleado junto con el apellido
io C
Jul
y nmero de gestor de sus gestores. Etiquete las columnas como Employee, Emp#,
Manager y Mgr#, respectivamente. Guarde la sentencia SQL como
lab_06_04.sql. Ejecute la consulta.
SELECT w.last_name "Employee", w.employee_id "EMP#",
m.last_name "Manager", m.employee_id "Mgr#"
FROM employees w join employees m
ON (w.manager_id = m.employee_id);
5) Modifique lab_06_04.sql para mostrar todos los empleados, incluido King, que no
tienen gestor. Ordene los resultados por nmero de empleado. Guarde la sentencia
SQL como lab_06_05.sql. Ejecute la consulta en el archivo lab_06_05.sql.
SELECT w.last_name "Employee", w.employee_id "EMP#",
m.last_name "Manager", m.employee_id "Mgr#"
FROM employees w
LEFT OUTER JOIN employees m
ON (w.manager_id = m.employee_id)
ORDER BY 2;

Oracle Database: Conceptos Fundamentales de SQL I A-52


Soluciones a la Prctica 6-1: Visualizacin de Datos de Varias
Tablas Utilizando Uniones (continuacin)
6) Cree un informe del departamento de recursos humanos que muestre los apellidos y
nmeros de empleado y todos los empleados que trabajen en el mismo departamento
como un empleado determinado. Proporcione a cada columna una etiqueta adecuada.
Guarde el script en un archivo denominado lab_06_06.sql. Ejecute la consulta.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT e.department_id department, e.last_name employee,


c.last_name colleague
FROM employees e JOIN employees c
ON (e.department_id = c.department_id)
WHERE e.employee_id <> c.employee_id
ORDER BY e.department_id, e.last_name, c.last_name;

7) El departamento de recursos humanos necesita un informe sobre los salarios y grados e


de cargo. Para familiarizarse con la tabla JOB_GRADES, en primer lugar, muestre la
c e ns
estructura de la tabla JOB_GRADES. A continuacin, cree una consulta que muestre el
l e li
apellido, cargo, nombre de departamento, salario y grado de todos los empleados.a b
s fer
DESC JOB_GRADES
- t r an
SELECT e.last_name, e.job_id, d.department_name,
nno
a
has ide
e.salary, j.grade_level
FROM employees e JOIN departments d )
ON (e.department_id = d.department_id)
l c om t Gu
JOIN job_grades j
t m ai den
ON
h o S tu
(e.salary BETWEEN j.lowest_sal AND j.highest_sal);

Si desea superarse a s mismo,


4 @ complete
t h is los siguientes ejercicios:
0
ctde recursos
sehumanos desea determinar los nombres de todos los
8) El departamentol i o u
empleados
a (jucontratadosto despus de Davies. Cree una consulta para mostrar el nombre
r d oy bla fecha de contratacin de cualquier empleado contratado despus del empleado
io Co Davies.
Jul SELECT
FROM
e.last_name, e.hire_date
employees e JOIN employees davies
ON (davies.last_name = 'Davies')
WHERE davies.hire_date < e.hire_date;
9) El departamento de recursos humanos necesita buscar el nombre y la fecha de
contratacin de todos los empleados contratados antes que sus gestores, junto con el
nombre y fecha de contratacin del gestor. Guarde el script en un archivo
denominado lab_06_09.sql.
SELECT w.last_name, w.hire_date, m.last_name, m.hire_date
FROM employees w JOIN employees m
ON (w.manager_id = m.employee_id)
WHERE w.hire_date < m.hire_date;

Oracle Database: Conceptos Fundamentales de SQL I A-53


Prcticas de la Leccin 7
En esta prctica escribir consultas complejas utilizando sentencias SELECT anidadas.
Para las preguntas de la prctica, puede crear la consulta interna primero. Antes de
codificar la consulta externa, asegrese de que la consulta interna se ejecuta y produce los
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

datos que anticipe.

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-54


Prctica 7-1: Uso de Subconsultas para Solucionar Consultas
1) El departamento de recursos humanos necesita una consulta que solicite al usuario el
apellido de un empleado. A continuacin, la consulta muestra el apellido y la fecha de
contratacin de cualquier empleado en el mismo departamento del empleado cuyo
nombre se proporciona (excepto ese empleado). Por ejemplo, si el usuario introduce
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Zlotkey, se buscarn todos los empleados que trabajen con Zlotkey (excepto Zlotkey).

nse
li c e
b le
fer a
ans
n - t r
a no
2) Cree un informe que muestre el nmero de empleado,sapellido y salario de todos los
) ha los iresultados
empleados que ganan ms del salario medio. Ordene d e en orden
ascendente de salario.
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
a (ju to
r d ob
io Co
Jul
3) Escriba una consulta que muestre el nmero de empleado y el apellido de todos los
empleados que trabajan en un departamento con un empleado cuyo apellido contiene
una "u". Guarde la sentencia SQL en un archivo denominado lab_07_03.sql.
Ejecute la consulta.

Oracle Database: Conceptos Fundamentales de SQL I A-55


Prctica 7-1: Uso de Subconsultas para Solucionar Consultas
(continuacin)
4) El departamento de recursos humanos necesita un informe que muestre el apellido,
nmero de departamento e ID de cargo de todos los empleados cuyo ID de ubicacin
de departamento sea 1700.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Modifique la consulta para que se solicite al usuario un ID de ubicacin. Guarde estos


nse
datos en un archivo denominado lab_07_04.sql. li c e
b le
a
5) Cree un informe para el departamento de recursos humanos que muestre el apellido y
fer
el salario de cada empleado que realice informes para King. s
- t r an
no n
a
) has ide
l c om t Gu
t m ai den
h o S tu
6) Cree un informe para 4el
t h is de recursos humanos que muestre el nmero de
@departamento
0
ct ue ID
departamento, apellido sede cargo de cada empleado del departamento Executive.
l i o
a (ju to
r d ob
io Co
Jul 7) Cree un informe que muestre una lista de todos los empleados cuyo salario sea mayor
que el salario de los empleados del departamento 60.
Si tiene tiempo, realice el siguiente ejercicio:
8) Modifique la consulta del archivo lab_07_03.sql para mostrar el nmero de
empleado, apellido y salario de todos los empleados que ganan ms del salario medio
y que trabajan en un departamento con cualquier empleado cuyo apellido contiene
una "u". Vuelva a guardar lab_07_03.sql como lab_07_08.sql. Ejecute la
sentencia en el archivo lab_07_08.sql.

Oracle Database: Conceptos Fundamentales de SQL I A-56


Soluciones a la Prctica 7-1: Uso de Subconsultas para
Solucionar Consultas
1) El departamento de recursos humanos necesita una consulta que solicite al usuario el
apellido de un empleado. A continuacin, la consulta muestra el apellido y la fecha de
contratacin de cualquier empleado en el mismo departamento del empleado cuyo
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nombre se proporciona (excepto ese empleado). Por ejemplo, si el usuario introduce


Zlotkey, se buscarn todos los empleados que trabajen con Zlotkey (excepto
Zlotkey).
UNDEFINE Enter_name

SELECT last_name, hire_date


FROM employees
nse
WHERE department_id = (SELECT department_id
FROM employees li c e
b l e
AND
WHERE last_name = '&&Enter_name')
last_name <> '&Enter_name'; fer a
a n s
2) Cree un informe que muestre el nmero de empleado, apellido y salario
n r
-t de todos los
n
empleados que ganan ms del salario medio. Ordene los resultados o en orden
a
ascendente de salario.
) h as de
SELECT employee_id, last_name, salary
c o m Gui
FROM employees
a il ent
WHERE salary > (SELECT AVG(salary)
o t memployees)
t u d
ORDER BY salary; @
FROMh is S
c t 0 se th
4
(
empleados j uqueo trabajan
3) Escriba unaliconsulta
t oqueuenmuestre el nmero de empleado y el apellido de todos los
un departamento con un empleado cuyo apellido contiene
o b
una
a"u". Guarde la sentencia SQL en un archivo denominado lab_07_03.sql.
rd
io Co Ejecute la consulta.
Jul SELECT employee_id, last_name
FROM employees
WHERE department_id IN (SELECT department_id
FROM employees
WHERE last_name like '%u%');
4) El departamento de recursos humanos necesita un informe que muestre el apellido,
nmero de departamento e ID de cargo de todos los empleados cuyo ID de ubicacin
de departamento sea 1700.
SELECT last_name, department_id, job_id
FROM employees
WHERE department_id IN (SELECT department_id
FROM departments
WHERE location_id = 1700);

Oracle Database: Conceptos Fundamentales de SQL I A-57


Soluciones a la Prctica 7-1: Uso de Subconsultas para
Solucionar Consultas (continuacin)
Modifique la consulta para que se solicite al usuario un ID de ubicacin. Guarde estos
datos en un archivo denominado lab_07_04.sql.
SELECT last_name, department_id, job_id
FROM employees
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

WHERE department_id IN (SELECT department_id


FROM departments
WHERE location_id =
&Enter_location);
5) Cree un informe para el departamento de recursos humanos que muestre el apellido y
el salario de cada empleado que realice informes para King.
SELECT last_name, salary
nse
FROM employees
WHERE manager_id = (SELECT employee_id li c e
FROM employees b le
WHERE last_name = 'King'); fer a
an s
t r
6) Cree un informe para el departamento de recursos humanos que muestre el nmero de
n -
no
departamento, apellido e ID de cargo de cada empleado del departamento Executive.
a
SELECT department_id, last_name, job_ids
FROM employees ) ha ide
WHERE department_id IN (SELECT
c o m G u
department_id
l
ai ddepartments
FROM
en t
o t m WHERE t u department_name =
'Executive'); h
@ this S
0 4
7) Cree un informe
l i o ctque muestre
u se unadellista de todos los empleados cuyo salario sea mayor
( j u
que el salario de lost o
empleados departamento 60.
o b a last_name FROM employees
SELECT
rd WHERE salary > ANY (SELECT salary
io Co FROM employees
Jul WHERE department_id=60);
Si tiene tiempo, realice el siguiente ejercicio:
8) Modifique la consulta del archivo lab_07_03.sql para mostrar el nmero de
empleado, apellido y salario de todos los empleados que ganan ms del salario medio
y que trabajan en un departamento con cualquier empleado cuyo apellido contiene
una "u". Vuelva a guardar lab_07_03.sql como lab_07_08.sql. Ejecute la
sentencia en el archivo lab_07_08.sql.
SELECT employee_id, last_name, salary
FROM employees
WHERE department_id IN (SELECT department_id
FROM employees
WHERE last_name like '%u%')
AND salary > (SELECT AVG(salary)
FROM employees);

Oracle Database: Conceptos Fundamentales de SQL I A-58


Prcticas de la Leccin 8
En esta prctica escribir consultas utilizando los operadores de definicin.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-59


Prctica 8-1: Uso de los Operadores de Definicin
1) El departamento de recursos humanos necesita una lista de ID de departamento que
no contienen el ID de cargo ST_CLERK. Utilice los operadores de definicin para
crear este informe.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
2) El departamento de recursos humanos necesita una lista de pases que no tienen b le
fer a
ningn departamento. Muestre el ID de pas y el nombre de los pases. Utilice los
operadores de definicin para crear este informe.
ans
n - t r
a no
ha50s y i20,
3) Cree una lista de cargos para los departamentos) 10, d een ese orden. Muestre los
c m Gdeudefinicin.
ooperadores
ID de cargo y departamento mediantellos
a i
d e nt
h otm Stu
0 4 @ this
l i o ct use
a (ju to
r d ob
io Co
Jul
4) Cree un informe que muestre los ID de empleado y de cargo de los empleados que
actualmente tienen un puesto que es el mismo que tenan cuando fueron contratados
(es decir, han cambiado de cargo pero ahora han vuelto a su puesto original).

5) El departamento de recursos humanos necesita un informe con las siguientes


especificaciones:
ID de departamento y apellido de todos los empleados de la tabla EMPLOYEES,
independientemente de si pertenecen o no a un departamento.
El nombre e ID de departamento de todos los departamentos de la tabla
DEPARTMENTS, independientemente de si hay o no empleados trabajando en
dichos departamentos.
Para ello, escriba una consulta compuesta.

Oracle Database: Conceptos Fundamentales de SQL I A-60


Prctica 8-1: Uso de los Operadores de Definicin
(continuacin)
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
ob a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-61


Soluciones a la Prctica 8-1: Uso de los Operadores de
Definicin
1) El departamento de recursos humanos necesita una lista de ID de departamento que
no contienen el ID de cargo ST_CLERK. Utilice los operadores de definicin para
crear este informe.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT department_id
FROM departments
MINUS
SELECT department_id
FROM employees
WHERE job_id = 'ST_CLERK'
2) El departamento de recursos humanos necesita una lista de pases que no tienen
nse
ningn departamento. Muestre el ID de pas y el nombre de los pases. Utilice los li c e
operadores de definicin para crear este informe. b le
fer a
SELECT country_id,country_name
ans
FROM countries
n - t r
no
MINUS
SELECT l.country_id,c.country_name a
FROM locations l JOIN countries c
ON (l.country_id = c.country_id) ) has ide
JOIN departments d
l c om t Gu
ON d.location_id=l.location_id;
t m ai den
h
3) Cree una lista de cargos para S tu 10, 50 y 20, en ese orden. Muestre los
olos departamentos
4 @ mediante
t h is los operadores de definicin.
0
ID de cargo y departamento
t
SELECTju l
distinct use department_id
ioc tojob_id,
FROMa (
employees
b
o rdoWHERE department_id = 10

io C UNION ALL

Jul
SELECT DISTINCT job_id, department_id
FROM employees
WHERE department_id = 50
UNION ALL
SELECT DISTINCT job_id, department_id
FROM employees
WHERE department_id = 20

4) Cree un informe que muestre los ID de empleado y de cargo de los empleados que
actualmente tienen un puesto que es el mismo que tenan cuando fueron contratados
(es decir, han cambiado de cargo pero ahora han vuelto a su puesto original).
SELECT employee_id,job_id
FROM employees
INTERSECT
SELECT employee_id,job_id
FROM job_history;

Oracle Database: Conceptos Fundamentales de SQL I A-62


Soluciones a la Prctica 8-1: Uso de los Operadores de
Definicin (continuacin)
5) El departamento de recursos humanos necesita un informe con las siguientes
especificaciones:
ID de departamento y apellido de todos los empleados de la tabla EMPLOYEES,
independientemente de si pertenecen o no a un departamento.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

El nombre e ID de departamento de todos los departamentos de la tabla


DEPARTMENTS, independientemente de si hay o no empleados trabajando en
dichos departamentos.
Para ello, escriba una consulta compuesta.
SELECT last_name,department_id,TO_CHAR(null)
FROM employees
nse
UNION
li c e
SELECT TO_CHAR(null),department_id,department_name
b le
FROM departments;
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o ba (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-63


Prcticas de la Leccin 9
En esta prctica, agregar filas a la tabla MY_EMPLOYEE, actualizar y suprimir datos de
la tabla y controlar las transacciones. Ejecute un script para crear la tabla
MY_EMPLOYEE.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-64


Prctica 9-1: Manipulacin de Datos
El departamento de recursos humanos desea que cree sentencias SQL para insertar,
actualizar y suprimir datos de los empleados. Como prototipo, utilizar la tabla
MY_EMPLOYEE, antes de proporcionar las sentencias al departamento.
Nota: para todas las sentencias DML, utilice el icono Run Script (o pulse [F5]) para ejecutar
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

la consulta. De esta forma, ve los mensajes de comentarios en la pgina con separadores


Script Output. Para consultas SELECT, siga utilizando el icono Execute Statement o pulse
[F9] para obtener la salida con formato en la pgina con separadores Results.
Inserte los datos en la tabla MY_EMPLOYEE.
1) Ejecute la sentencia en el script lab_09_01.sql para crear la tabla MY_EMPLOYEE
utilizada en esta prctica. e
2) Describa la estructura de la tabla MY_EMPLOYEE para identificar los nombres de las c e ns
columnas. le li
a b
s fer
- t r an
no n
a
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
a (juLAST_NAME to
o b
ID FIRST_NAME USERID SALARY
ord
io C
Jul
1 Patel Ralph rpatel 895

2 Dancs Betty bdancs 860

3 Biri Ben bbiri 1100

4 Newman Chad cnewman 750

5 Ropeburn Audrey aropebur 1550

3) Cree una sentencia INSERT para agregar la primera fila de datos a la tabla
MY_EMPLOYEE a partir de los siguientes datos de ejemplo. No muestre la lista de
columnas en la clusula INSERT. No introduzca an todas las filas.

Oracle Database: Conceptos Fundamentales de SQL I A-65


Prctica 9-1: Manipulacin de Datos (continuacin)
4) Rellene la tabla MY_EMPLOYEE con la segunda fila de datos de ejemplo de la lista
anterior. En esta ocasin, muestre explcitamente la lista de columnas en la clusula
INSERT.
5) Confirme la adicin a la tabla.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

6) Escriba una sentencia INSERT en un archivo de script reutilizable para cargar las
filas restantes en la tabla MY_EMPLOYEE. El script se debe solicitar para todas las
columnas (ID, LAST_NAME, FIRST_NAME, USERID y SALARY). Guarde este script en
un archivo lab_09_06.sql.
nse
7) Rellene la tabla con las dos siguientes filas de ejemplo mostradas en el paso 3 li c e
mediante la ejecucin de la sentencia INSERT en el script que ha creado. b l e
fer a
8) Confirme las adiciones a la tabla.
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
9) Convierta las adiciones dehdatos S tu
o en permanentes.
0 4 @ this
l i o ct use
( u
Actualice y jsuprima o de la tabla MY_EMPLOYEE.
datos
t
10) o b a el apellido del empleado 3 a Drexler.
Cambie
C ord
11) Cambie el salario a 1.000 dlares para todos los empleados con un salario inferior a
ul i o 900.
J
12) Verifique los cambios en la tabla.

13) Suprima Betty Dancs de la tabla MY_EMPLOYEE.


14) Confirme los cambios en la tabla.

Oracle Database: Conceptos Fundamentales de SQL I A-66


Prctica 9-1: Manipulacin de Datos (continuacin)

15) Confirme todos los cambios pendientes.


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Controle la transaccin de datos a la tabla MY_EMPLOYEE.


16) Rellene la tabla con la ltima fila de datos de ejemplo mostrada en el paso 3 mediante
las sentencias del script que ha creado en el paso 6. Ejecute las sentencias en el script.
17) Confirme la adicin a la tabla.
nse
li c e
b le
fer a
ans
n - t r
a no
18) Marque un punto intermedio en el procesamiento de la transaccin.
19) Suprima todas las filas de la tabla MY_EMPLOYEE ) h. as ide
20) Confirme que la tabla est vaca. ilco
m Gu
a d e nt
21) Deseche la operacin DELETE m reciente
otms tu sin desechar la operacin INSERT anterior.
@ h is S
22) Confirme que la nueva4 fila estth
intacta.
0
ct use
l i o
a (ju to
r d ob
C o
io
Jul
23) Convierta la adicin de datos en permanente.
Si tiene tiempo, realice el siguiente ejercicio:
24) Modifique el script lab_09_06.sql de forma que USERID se genere
automticamente concatenando la primera letra del primer nombre y de los primeros
siete caracteres del apellido. El USERID generado debe estar en minscula. Por lo
tanto, no se debe solicitar el script para el USERID. Guarde este script en un archivo
denominado lab_09_24.sql.

ID LAST_NAME FIRST_NAME USERID SALARY

6 Anthony Mark manthony 1230

Oracle Database: Conceptos Fundamentales de SQL I A-67


Prctica 9-1: Manipulacin de Datos (continuacin)
25) Ejecute el script lab_09_24.sql para insertar el siguiente registro:

26) Confirme que se ha agregado la nueva fila con el USERID correcto.


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-68


Soluciones a la Prctica 9-1: Manipulacin de Datos
Inserte los datos en la tabla MY_EMPLOYEE.
1) Ejecute la sentencia en el script lab_09_01.sql para crear la tabla MY_EMPLOYEE
utilizada en esta prctica.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

a) En el men File, seleccione Open. En el cuadro de dilogo Open, navegue a la


carpeta /home/oracle/labs/sql1/labs y haga doble clic en
lab_09_01.sql.
b) Una vez abierta la sentencia en una hoja de trabajo de SQL, haga clic en el icono
Run Script para ejecutar el script. Aparece un mensaje que indica que la creacin
de la tabla se ha realizado correctamente en la pgina con separadores Script
Output.
nse
2) Describa la estructura de la tabla MY_EMPLOYEE para identificar los nombres de las
li c e
columnas.
b l e
DESCRIBE my_employee fer a
a n s
r
3) Cree una sentencia INSERT para agregar la primera fila de datos a-tla tabla
n la lista de
n
MY_EMPLOYEE a partir de los siguientes datos de ejemplo. Noomuestre
columnas en la clusula INSERT. s a
) a
h ide
l c om t Gu
ID LAST_NAME ai den USERID
FIRST_NAME
t m SALARY
h o S t u
1 Patel 04@ t hi
Ralph
s rpatel 895
c t s e
( j ulio to u
o2b a Dancs Betty bdancs 860
rd
io Co
Jul
3 Biri Ben bbiri 1100

4 Newman Chad cnewman 750

5 Ropeburn Audrey aropebur 1550

INSERT INTO my_employee


VALUES (1, 'Patel', 'Ralph', 'rpatel', 895);

4) Rellene la tabla MY_EMPLOYEE con la segunda fila de datos de ejemplo de la lista


anterior. En esta ocasin, muestre explcitamente la lista de columnas en la clusula
INSERT.
INSERT INTO my_employee (id, last_name, first_name,
userid, salary)

Oracle Database: Conceptos Fundamentales de SQL I A-69


Soluciones a la Prctica 9-1: Manipulacin de Datos
(continuacin)
VALUES (2, 'Dancs', 'Betty', 'bdancs', 860);

5) Confirme las adiciones a la tabla.


SELECT *
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

FROM my_employee;

6) Escriba una sentencia INSERT en un archivo de script reutilizable para cargar las
filas restantes en la tabla MY_EMPLOYEE. El script se debe solicitar para todas las
columnas (ID, LAST_NAME, FIRST_NAME, USERID y SALARY). Guarde este script en
un archivo denominado lab_09_06.sql.
INSERT INTO my_employee
VALUES (&p_id, '&p_last_name', '&p_first_name',
nse
'&p_userid', &p_salary);
li c e
b le
7) Rellene la tabla con las dos siguientes filas de ejemplo mostradas en el paso 3
fer a
mediante la ejecucin de la sentencia INSERT en el script que ha creado.
ans
INSERT INTO my_employee n - t r
VALUES (&p_id, '&p_last_name', '&p_first_name',
a no
has ide
'&p_userid', &p_salary);
)
8) Confirme las adiciones a la tabla.
l c om t Gu
SELECT *
t m ai den
FROM my_employee;
h o S tu
0 4
9) Convierta las adiciones
@de datosthenispermanentes.
l i o ct use
(ju
COMMIT;
a to
r d ob
io CoActualice y suprima datos de la tabla MY_EMPLOYEE.
Jul 10) Cambie el apellido del empleado 3 a Drexler.
UPDATE my_employee
SET last_name = 'Drexler'
WHERE id = 3;

11) Cambie el salario a 1.000 dlares para todos los empleados con un salario inferior a 900.
UPDATE my_employee
SET salary = 1000
WHERE salary < 900;

12) Verifique los cambios en la tabla.


SELECT *
FROM my_employee;

13) Suprima Betty Dancs de la tabla MY_EMPLOYEE.


DELETE

Oracle Database: Conceptos Fundamentales de SQL I A-70


Soluciones a la Prctica 9-1: Manipulacin de Datos
(continuacin)
FROM my_employee
WHERE last_name = 'Dancs';
14) Confirme los cambios en la tabla.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT *
FROM my_employee;

15) Confirme todos los cambios pendientes.


COMMIT;

Controle la transaccin de datos a la tabla MY_EMPLOYEE.


16) Rellene la tabla con la ltima fila de datos de ejemplo mostrada en el paso 3 mediante
nse
las sentencias del script que ha creado en el paso 6. Ejecute las sentencias en el script.
li c e
b le
INSERT INTO my_employee
VALUES (&p_id, '&p_last_name', '&p_first_name', fer a
'&p_userid', &p_salary); ans
n - t r
17) Confirme la adicin a la tabla.
a no
SELECT *
) h as de
FROM my_employee;
c o m Gui
18) Marque un punto intermedio en el a il entde la transaccin.
procesamiento
SAVEPOINT step_17; ho
tm Stud
0 4 @ this
19) Suprima todas las
l i o ct filas de
u slaetabla MY_EMPLOYEE.
(ju
DELETE
a to
d b my_employee;
oFROM
o r
io C 20) Confirme que la tabla est vaca.
Jul SELECT *
FROM my_employee;

21) Deseche la operacin DELETE ms reciente sin desechar la operacin INSERT


anterior.
ROLLBACK TO step_17;

22) Confirme que la nueva fila est intacta.


SELECT *
FROM my_employee;
23) Convierta la adicin de datos en permanente.
COMMIT;

Oracle Database: Conceptos Fundamentales de SQL I A-71


Soluciones a la Prctica 9-1: Manipulacin de Datos
(continuacin)
Si tiene tiempo, realice el siguiente ejercicio:
24) Modifique el script lab_09_06.sql de forma que USERID se genere
automticamente concatenando la primera letra del primer nombre y de los primeros
siete caracteres del apellido. El USERID generado debe estar en minscula. Por lo
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

tanto, no se debe solicitar el script para el USERID. Guarde este script en un archivo
denominado lab_09_24.sql.
SET ECHO OFF
SET VERIFY OFF
INSERT INTO my_employee
VALUES (&p_id, '&&p_last_name', '&&p_first_name',
lower(substr('&p_first_name', 1, 1) ||
nse
substr('&p_last_name', 1, 7)), &p_salary);
SET VERIFY ON li c e
SET ECHO ON b l e
UNDEFINE p_first_name fer a
UNDEFINE p_last_name ans
n - t r
no
25) Ejecute el script lab_09_24.sql para insertar el siguiente registro:
a
ID LAST_NAME )
FIRST_NAME has ideUSERID
SALARY

l c om t Gu manthony
6 Anthony
t m ai den
Mark 1230

h
26) Confirme que se ha agregado tucon el USERID correcto.
ola nuevaSfila
0 4 @ this
SELECT *
l i o
FROM my_employee
ct use
ju
WHERE (ID='6';
a to
r d ob
io Co
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-72


Prcticas de la Leccin 10
Cree nuevas tablas mediante la sentencia CREATE TABLE. Confirme que la nueva tabla
se ha agregado a la base de datos. Tambin aprender a definir el estado de una tabla
como READ ONLY y, a continuacin, revertir a READ/WRITE.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Nota: para todas las sentencias DDL y DML, haga clic en el icono Run Script (o pulse
[F5]) para ejecutar la consulta en SQL Developer. De esta forma, ve los mensajes de
comentarios en la pgina con separadores Script Output. Para consultas SELECT, siga
haciendo clic en el icono Execute Statement o pulse [F9] para obtener la salida con
formato en la pgina con separadores Results.

nse
li c e
b l e
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-73


Prctica 10-1: Uso de Sentencias DDL para Crear y Gestionar
Tablas
Column Name ID NAME
Key Type Primary key
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Nulls/Unique
FK Table
FK Column
Data type NUMBER VARCHAR2
Length 7 25

nse
li c e
a b le
1) Cree la tabla DEPT segn el siguiente grfico de instancias de tabla. Guarde e
sentencia en un script denominado lab_10_01.sql y, a continuacin,nejecute s f lar el
script para crear la tabla. Confirme que se ha creado la tabla. n-tr
a
a no
) has ide
l c om t Gu
t m ai dDEPARTMENTS
en
2) Rellene la tabla DEPT con datos
h o de la tabla
S t u . Incluya slo las columnas
que necesite.
0 4 @ this
3) Cree la tabla EMP
l i o ctsegnuelssiguiente
e grfico de instancias de tabla. Guarde la
sentencia
a ( juen un script
todenominado lab_10_03.sql y, a continuacin, ejecute el
d b para crear la tabla. Confirme que se ha creado la tabla.
oscript
r
io Co Column Name ID LAST_NAME FIRST_NAME DEPT_ID

Jul Key Type


Nulls/Unique
FK Table DEPT
FK Column ID
Data type NUMBER VARCHAR2 VARCHAR2 NUMBER
Length 7 25 25 7

Oracle Database: Conceptos Fundamentales de SQL I A-74


Prctica 10-1: Uso de Sentencias DDL para Crear y Gestionar
Tablas (continuacin)
4) Cree la tabla EMPLOYEES2 segn la estructura de la tabla EMPLOYEES. Incluya slo
las columnas EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY y
DEPARTMENT_ID. Asigne a las columnas de la tabla los nombres ID, FIRST_NAME,
LAST_NAME, SALARY y DEPT_ID, respectivamente.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

5) Modifique el estado de la tabla EMPLOYEES2 a slo lectura. Tenga en cuenta que esta
opcin est soportada en Oracle Database 11g.

ID FIRST_NAME LAST_NAME SALARY DEPT_ID


34 Grant Marcie 5678 10

nse
6) Intente insertar la siguiente fila en la tabla EMPLOYEES2: li c e
b le
Aparecer el siguiente mensaje de error:
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
a
7) Revierta(jlau tabla EMPLOYEES2
to al estado de lectura/escritura. Ahora, vuelva a intentar
o b
o rd insertar la misma fila. Tenga en cuenta que esta opcin est soportada en Oracle

io C Database 11g.
Jul Deben aparecer los siguientes mensajes:

8) Borre la tabla EMPLOYEES2.

Oracle Database: Conceptos Fundamentales de SQL I A-75


Soluciones a la Prctica 10-1: Uso de Sentencias DDL para Crear
y Gestionar Tablas

Column Name ID NAME


Key Type Primary key
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Nulls/Unique
FK Table
FK Column
Data type NUMBER VARCHAR2
Length 7 25

nse
li c e
a b le
1) Cree la tabla DEPT segn el siguiente grfico de instancias de tabla. Guarde e
sentencia en un script denominado lab_10_01.sql y, a continuacin,nejecute s f lar el
script para crear la tabla. Confirme que se ha creado la tabla. n-tr
a
CREATE TABLE dept a no
(id NUMBER(7)CONSTRAINT department_id_pk
) h as dePRIMARY
KEY,
name VARCHAR2(25));
om t Gu i
l c
i y visualizar
Para confirmar que se ha creado laa
t m tabla
u d en su estructura, ejecute el siguiente
comando:
h o S t
DESCRIBE dept 04@ t hi s
t
ocDEPTocon e
sdatos de la tabla DEPARTMENTS. Incluya slo aquellas
u l i u
a
columnas
(j que necesite.
2) Rellene la tabla t
b
o rdoINSERT INTO dept
io C
Jul
SELECT department_id, department_name
FROM departments;

3) Cree la tabla EMP segn el siguiente grfico de instancias de tabla. Guarde la


sentencia en un script denominado lab_10_03.sql y, a continuacin, ejecute el
script para crear la tabla. Confirme que se ha creado la tabla.
Column Name ID LAST_NAME FIRST_NAME DEPT_ID
Key Type
Nulls/Unique
FK Table DEPT
FK Column ID
Data type NUMBER VARCHAR2 VARCHAR2 NUMBER
Length 7 25 25 7

Oracle Database: Conceptos Fundamentales de SQL I A-76


Soluciones a la Prctica 10-1: Uso de Sentencias DDL para Crear
y Gestionar Tablas (continuacin)

CREATE TABLE emp


(id NUMBER(7),
last_name VARCHAR2(25),
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

first_name VARCHAR2(25),
dept_id NUMBER(7)
CONSTRAINT emp_dept_id_FK REFERENCES dept (id)
);

Para confirmar que se ha creado la tabla y ver su estructura:


DESCRIBE emp

4) Cree la tabla EMPLOYEES2 segn la estructura de la tabla EMPLOYEES. Incluya slo nse
las columnas EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY y li c e
b le
DEPARTMENT_ID. Asigne a las columnas de la tabla los nombres ID, FIRST_NAME,
fer a
LAST_NAME, SALARY y DEPT_ID, respectivamente.
ans
CREATE TABLE employees2 AS n - t r
SELECT employee_id id, first_name, last_name, salary,
a no
has ide
department_id dept_id
FROM employees; ) u
l c oma slo
t G
t m ai den
5) Modifique el estado de la tabla EMPLOYEES2 lectura.
ALTER TABLE employees2
h o READ SONLY tu
6) Intente insertar lat0 4@ efilathenisla tabla EMPLOYEES2.
siguiente
u l i oc o usLAST_NAME SALARY
ID
( j
FIRST_NAME
a Grant t DEPT_ID

d o b
34 Marcie 5678 10
r
io Co
Jul Aparecer el mensaje de error Update operation not allowed on table. Por lo tanto,
no se le permitir insertar ninguna fila en la tabla porque se ha asignado un estado de
slo lectura.
INSERT INTO employees2
VALUES (34, 'Grant','Marcie',5678,10)

7) Revierta la tabla EMPLOYEES2 al estado de lectura/escritura. Ahora, vuelva a intentar


insertar la misma fila.
Ahora, debido a que a la tabla se le ha asignado un estado READ WRITE, podr
insertar una fila en la tabla.
ALTER TABLE employees2 READ WRITE

INSERT INTO employees2


VALUES (34, 'Grant','Marcie',5678,10)

Oracle Database: Conceptos Fundamentales de SQL I A-77


Soluciones a la Prctica 10-1: Uso de Sentencias DDL para Crear
y Gestionar Tablas (continuacin)
8) Borre la tabla EMPLOYEES2.
Nota: si es necesario, puede borrar una tabla con modo READ ONLY. Para probar
esto, vuelva a modificar la tabla al estado READ ONLY y, a continuacin, ejecute el
comando DROP TABLE. Se borrar la tabla EMPLOYEES2.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

DROP TABLE employees2;

nse
li c e
b l e
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
ob a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-78


Prcticas de la Leccin 11
La Parte 1 de la prctica de esta leccin ofrece varios ejercicios de creacin, uso y
eliminacin de vistas. Complete las preguntas de la 1 a la 6 de esta leccin.
La Parte 2 de la prctica de esta leccin ofrece varios ejercicios de creacin y uso de una
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

secuencia, un ndice y un sinnimo. Complete las preguntas de la 7 a la 10 de esta


leccin.

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-79


Prctica 11-1: Creacin de Otros Objetos de Esquema
Parte 1
1) El personal del departamento de recursos humanos desea ocultar algunos de los datos
de la tabla EMPLOYEES. Cree una vista denominada EMPLOYEES_VU basada en los
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nmeros y los apellidos de los empleados y en los nmeros de departamento de la


tabla EMPLOYEES. La cabecera del nombre de empleado debe ser EMPLOYEE.
2) Confirme que la vista funciona. Visualice el contenido de la vista EMPLOYEES_VU.

nse
li c e
b le
fer a

ans
n - t r
a no
s e
hapara
3) Con la vista EMPLOYEES_VU, escriba una consulta
m ) u el
i ddepartamento de recursos
humanos para visualizar todos los nombres
i l co de empleados
n t G y nmeros de departamento.
o t ma tude
@ h is S
c t 04 se th
( j ulio to u
o b a
rd
io Co
Jul

4) El departamento 50 necesita acceso a los datos de los empleados. Cree una vista con
el nombre DEPT50 que contenga los nmeros y apellidos de los empleados y los
nmeros de departamento de todos los empleados del departamento 50. Se le ha
pedido que etiquete las columnas de la vista como EMPNO, EMPLOYEE y DEPTNO. Por
motivos de seguridad, no permita la reasignacin de un empleado a otro departamento
a travs de la vista.
5) Visualice la estructura y el contenido de la vista DEPT50.

Oracle Database: Conceptos Fundamentales de SQL I A-80


Prctica 11-1: Creacin de Otros Objetos de Esquema
(continuacin)
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

6) Pruebe la vista. Intente reasignar Matos al departamento 80.

Parte 2
7) Necesita una secuencia que se pueda utilizar con la columna PRIMARY KEY de la nse
tabla DEPT. La secuencia debe empezar en 200 y tener un valor mximo de 1.000. li c e
Aplique incrementos de 10 a la secuencia. Asigne a la secuencia el nombre b l e
DEPT_ID_SEQ. fer a
ans
t r
8) Para probar la secuencia, escriba un script para insertar dos filas en la tabla DEPT.
n -
a no
Asigne al script el nombre lab_11_08.sql. Asegrese de utilizar la secuencia que
ha creado para la columna ID. Agregue dos departamentos: Education y
has ide
Administration. Confirme las adiciones. Ejecute los comandos del script.
)
c
9) Cree un ndice no nico en la columnalNAME G uDEPT.
omde lat tabla
t m ai d. Llmelo
en EMP.
10) Cree un sinnimo para la tabla
h o t
EMPLOYEES
S u
4@ e thi s
t 0
u l i oc o us
a (j t
b
o rdo
io C
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-81


Soluciones a la Prctica 11-1: Creacin de Otros Objetos de
Esquema
Parte 1
1) El personal del departamento de recursos humanos desea ocultar algunos de los datos
de la tabla EMPLOYEES. Cree una vista denominada EMPLOYEES_VU basada en los
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nmeros y los apellidos de los empleados y en los nmeros de departamento de la


tabla EMPLOYEES. La cabecera del nombre de empleado debe ser EMPLOYEE.
CREATE OR REPLACE VIEW employees_vu AS
SELECT employee_id, last_name employee, department_id
FROM employees;
2) Confirme que la vista funciona. Visualice el contenido de la vista EMPLOYEES_VU.
nse
SELECT
FROM
*
employees_vu; li c e
a b le
fer
3) Con la vista EMPLOYEES_VU, escriba una consulta para el departamento de recursos
humanos para visualizar todos los nombres de empleados y nmeros dens
departamento. n - tra
SELECT employee, department_id a no
FROM employees_vu;
) has ide
4) El departamento 50 necesita acceso a los o
c datos u
m de losGempleados. Cree una vista con
el nombre DEPT50 que contenga los l t
inmeroseynapellidos de los empleados y los
nmeros de departamento deotodos t malos empleados
t u d del departamento 50. Se le ha
solicitado que etiquete@ las h
columnas S
is de la vista como EMPNO, EMPLOYEE y DEPTNO.
t 0 4
Por motivos decseguridad, e
no t h
permita la reasignacin de un empleado a otro
i o u s
departamento
( j ul a travs
t o de la vista.
b a VIEW dept50 AS
CREATE
o
rd SELECT employee_id empno, last_name employee,

io Co department_id deptno
Jul FROM
WHERE
employees
department_id = 50
WITH CHECK OPTION CONSTRAINT emp_dept_50;
5) Visualice la estructura y el contenido de la vista DEPT50.
DESCRIBE dept50

SELECT *
FROM dept50;
6) Pruebe la vista. Intente reasignar Matos al departamento 80.
UPDATE dept50
SET deptno = 80
WHERE employee = 'Matos';

El error se debe a que la vista DEPT50 se ha creado con la restriccin WITH CHECK
OPTION. De esta forma, se garantiza que la columna DEPTNO de la vista est
protegida contra cambios.

Oracle Database: Conceptos Fundamentales de SQL I A-82


Soluciones a la Prctica 11-1: Creacin de Otros Objetos de
Esquema (continuacin)
Parte 2
7) Necesita una secuencia que se pueda utilizar con la columna de clave primaria de la
tabla DEPT. La secuencia debe empezar en 200 y tener un valor mximo de 1.000.
Aplique incrementos de 10 a la secuencia. Asigne a la secuencia el nombre
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

DEPT_ID_SEQ.
CREATE SEQUENCE dept_id_seq
START WITH 200
INCREMENT BY 10
MAXVALUE 1000;

8) Para probar la secuencia, escriba un script para insertar dos filas en la tabla DEPT.
Asigne al script el nombre lab_11_08.sql. Asegrese de utilizar la secuencia que nse
ha creado para la columna ID. Agregue dos departamentos: Education y li c e
Administration. Confirme las adiciones. Ejecute los comandos del script. b l e
fer a
INSERT INTO dept
ans
VALUES (dept_id_seq.nextval, 'Education');
n - t r
INSERT INTO dept a no
VALUES (dept_id_seq.nextval, 'Administration');
) has ide
c
9) Cree un ndice no nico en la columnaNAME G uDEPT.
omde lat tabla
l
aiON dept en(name);
CREATE INDEX dept_name_idx
o t m t u d
h s S
10) Cree un sinnimo para
t 0 4@ e hi
la tablatEMPLOYEES . Llmelo EMP.
l i
CREATE SYNONYM
u oc oempusFOR EMPLOYEES;
a (j t
o b
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-83


Prcticas del Apndice F
Esta prctica est destinada a proporcionarle experiencia prctica en la extraccin de
datos desde ms de una tabla utilizando sintaxis de unin en Oracle.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I A-84


Prctica F-1: Sintaxis de Unin en Oracle
1) Escriba una consulta para que el departamento de recursos humanos genere las
direcciones de todos los departamentos. Utilice las tablas LOCATIONS y COUNTRIES.
Muestre el ID de ubicacin, direccin, ciudad, estado o provincia y pas en la salida.
Ejecute la consulta.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

2) El departamento de recursos humanos necesita un informe de todos los empleados.


Escriba una consulta para mostrar el apellido, nmero y nombre de departamento de
nse
todos los empleados. Ejecute la consulta.
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu

t m ai den
h o S tu
0 4 @ this
l
3) El departamentoi o ctde recursos
u sehumanos necesita un informe de todos los empleados de
(juMuestre eltoapellido, cargo, nmero y nombre de departamento de todos los
Toronto.
a
d b
oempleados que trabajan en Toronto.
o r
io C
Jul
4) Cree un informe para mostrar el apellido y nmero de empleado junto con el apellido
y nmero de gestor de sus gestores. Etiquete las columnas como Employee, Emp#,
Manager y Mgr#, respectivamente. Guarde la sentencia SQL como lab_f_04.sql.

Oracle Database: Conceptos Fundamentales de SQL I A-85


Prctica F-1: Sintaxis de Unin en Oracle (continuacin)
5) Modifique lab_f_04.sql para mostrar todos los empleados, incluido King, que no
tienen gestor. Ordene los resultados por nmero de empleado. Guarde la sentencia
SQL como lab_f_05.sql. Ejecute la consulta en el archivo lab_f_05.sql.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
6) Cree un informe del departamento de recursos humanos que muestre los apellidos y
s
nmeros de empleado y todos los empleados que trabajen en el mismo departamento
an
t r
como un empleado determinado. Proporcione a cada columna una etiqueta adecuada.
n -
no
Guarde el script en un archivo denominado lab_f_06.sql.
a
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to

o b a (j
C ord
io
Jul
7) El departamento de recursos humanos necesita un informe sobre los salarios y grados
de cargo. Para familiarizarse con la tabla JOB_GRADES, en primer lugar, muestre la
estructura de la tabla JOB_GRADES. A continuacin, cree una consulta que muestre el
apellido, cargo, nombre de departamento, salario y grado de todos los empleados.

Oracle Database: Conceptos Fundamentales de SQL I A-86


Prctica F-1: Sintaxis de Unin en Oracle (continuacin)
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
Si desea superarse a s mismo, complete los siguientes ejercicios:
li c e
8) El departamento de recursos humanos desea determinar los nombres de todos los b le
empleados contratados despus de Davies. Cree una consulta para mostrar el fer a
ans
nombre y la fecha de contratacin de cualquier empleado contratado despus del
empleado Davies. n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
9) El departamento de recursos humanos necesita buscar el nombre y la fecha de
io
Jul contratacin de todos los empleados contratados antes que sus gestores, junto con el
nombre y fecha de contratacin del gestor. Guarde el script en un archivo
denominado lab_f_09.sql.

Oracle Database: Conceptos Fundamentales de SQL I A-87


Soluciones a las Prcticas F-1: Sintaxis de Unin en Oracle
1) Escriba una consulta para que el departamento de recursos humanos genere las
direcciones de todos los departamentos. Utilice las tablas LOCATIONS y COUNTRIES.
Muestre el ID de ubicacin, direccin, ciudad, estado o provincia y pas en la salida.
Ejecute la consulta.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT location_id, street_address, city, state_province,


country_name
FROM locations, countries
WHERE locations.country_id = countries.country_id;

2) El departamento de recursos humanos necesita un informe de todos los empleados.


Escriba una consulta para mostrar el apellido, nmero y nombre de departamento de
todos los empleados. Ejecute la consulta. nse
li c e
SELECT e.last_name, e.department_id, d.department_name
b le
FROM employees e, departments d
WHERE e.department_id = d.department_id; fer a
a n s
3) El departamento de recursos humanos necesita un informe de todos n r
-t los empleados de
n o
Toronto. Muestre el apellido, cargo, nmero y nombre de departamento de todos los
a
empleados que trabajan en Toronto.
) h as de
c o m Gui
SELECT e.last_name, e.job_id, e.department_id,
d.department_name
a il de,ntlocations l
FROM
o t m
employees e, departments
t u d
WHERE e.department_id
@
= S
h = l.location_id
d.department_id
is
AND 4
d.location_id
0 t h
AND
l i o ct use= 'toronto';
LOWER(l.city)
u paratomostrar el apellido y nmero de empleado junto con el apellido
4) Cree un(jinforme
a
odelbgestor del empleado y el nmero de gestor. Etiquete las columnas como
r d
io Co Employee, Emp#, Manager y Mgr#, respectivamente. Guarde la sentencia SQL
Jul
como lab_f_04.sql.
SELECT w.last_name "Employee", w.employee_id "EMP#",
m.last_name "Manager", m.employee_id "Mgr#"
FROM employees w , employees m
WHERE w.manager_id = m.employee_id;

5) Modifique lab_f_04.sql para mostrar todos los empleados, incluido King, que no
tienen gestor. Ordene los resultados por nmero de empleado. Guarde la sentencia
SQL como lab_f_05.sql. Ejecute la consulta en el archivo lab_f_05.sql.
SELECT w.last_name "Employee", w.employee_id "EMP#",
m.last_name "Manager", m.employee_id "Mgr#"
FROM employees w, employees m
WHERE w.manager_id = m.employee_id (+);

Oracle Database: Conceptos Fundamentales de SQL I A-88


Soluciones a las Prcticas F-1: Sintaxis de Unin en Oracle
(continuacin)
6) Cree un informe del departamento de recursos humanos que muestre los apellidos y
nmeros de empleado y todos los empleados que trabajen en el mismo departamento
como un empleado determinado. Proporcione a cada columna una etiqueta adecuada.
Guarde el script en un archivo denominado lab_f_06.sql.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT e1.department_id department, e1.last_name employee,


e2.last_name colleague
FROM employees e1, employees e2
WHERE e1.department_id = e2.department_id
AND e1.employee_id <> e2.employee_id
ORDER BY e1.department_id, e1.last_name, e2.last_name;

7) El departamento de recursos humanos necesita un informe sobre los salarios y grados e


de cargo. Para familiarizarse con la tabla JOB_GRADES, en primer lugar, muestre la
c e ns
estructura de la tabla JOB_GRADES. A continuacin, cree una consulta que muestre el
l e li
apellido, cargo, nombre de departamento, salario y grado de todos los empleados.a b
s fer
DESC JOB_GRADES
- t r an
SELECT e.last_name, e.job_id, d.department_name,
n
no
a
has ide
e.salary, j.grade_level
FROM employees e, departments d, job_grades j )
WHERE e.department_id = d.department_id
l c om t Gu
AND
ai den
e.salary BETWEEN j.lowest_sal AND j.highest_sal;
t m
h o S tu
Si desea superarse a s mismo,
4 @ complete
t h is los siguientes ejercicios:
8) El departamento 0
ctde recursos
sehumanos desea determinar los nombre de todos los
l i o u
jucontratados
empleados
a ( to despus de Davies. Cree una consulta para mostrar el
d b y la fecha de contratacin de cualquier empleado contratado despus de
nombre
oDavies
r .
io Co
Jul SELECT
FROM
e.last_name, e.hire_date
employees e , employees davies
WHERE davies.last_name = 'Davies'
AND davies.hire_date < e.hire_date;
9) El departamento de recursos humanos necesita buscar el nombre y la fecha de
contratacin de todos los empleados contratados antes que sus gestores, junto con el
nombre y fecha de contratacin del gestor. Etiquete las columnas como Employee,
Emp Hired, Manager y Mgr Hired, respectivamente. Guarde el script en un
archivo denominado lab_f_09.sql.
SELECT w.last_name, w.hire_date, m.last_name, m.hire_date
FROM employees w , employees m
WHERE w.manager_id = m.employee_id
AND w.hire_date < m.hire_date;

Oracle Database: Conceptos Fundamentales de SQL I A-89


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Jul
Cio
ord
o
b
a (j
u l i o
0 4
to
h
ct use
o t m
@ this
l
S
c
tu
)
ai den
om t Gu
a
has ide
n no
- t r an
s
fer a b l
eli c e ns
e
Apndice AP
Prcticas y Soluciones adicionales
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
ob a (j
C ord
io
Jul
Tabla de Contenido
Prcticas Adicionales .......................................................................................................... 3
Prctica 1-1 ..................................................................................................................... 4
Soluciones a la Prctica 1-1 .......................................................................................... 12
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Caso Prctico .................................................................................................................... 17


Prctica 2-1 ................................................................................................................... 19
Soluciones a la Prctica 2-1 .......................................................................................... 27

nse
li c e
b l e
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I AP-2


Prcticas Adicionales
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
ob a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I AP-3


Prctica 1-1
Estos ejercicios se pueden utilizar como prctica adicional despus de tratar los siguientes
temas: sentencia SQL SELECT bsica, comandos de SQL Developer bsicos y funciones
SQL.
1) El departamento de recursos humanos necesita obtener los datos de todos los
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

oficinistas que se contrataron despus del ao 1997.

2) El departamento de recursos humanos necesita un informe de los empleados que


perciben comisiones. Muestre el apellido, el cargo, el salario y la comisin de dichos
empleados. Ordene los datos por salario en orden descendente.
nse
li c e
b le
fer a
ans
n - t r
a no
s humanos
3) Por motivos de presupuesto, el departamento de recursos
hadebe e a losnecesita un
m )
informe de los aumentos programados. El informe
u i d
mostrar empleados que
o
los salarios). a ilc ent G
no perciben comisiones, pero que tienen un aumento del 10% del salario (redondee

o t m tud
@ h is S
c t 04 se th
( j ulio to u
o b a
rd
io Co
Jul

Oracle Database: Conceptos Fundamentales de SQL I AP-4


Prctica 1-1 (continuacin)
4) Cree un informe de los empleados y la duracin de los contratos. Muestre los
apellidos de todos los empleados junto con el nmero de aos y de meses completos
que han estado contratados. Ordene el informe segn la duracin de las
contrataciones. El empleado que haya estado contratado durante ms tiempo
aparecer al principio de la lista.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b l e
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
ob a (j
r d
o5) Muestre los empleados cuyo apellido empiece por las letras "J", "K", "L" o "M".
io C
Jul

Oracle Database: Conceptos Fundamentales de SQL I AP-5


Prctica 1-1 (continuacin)
6) Cree un informe que muestre todos los empleados e indique con las palabras Yes o No
si perciben comisiones. Utilice la expresin DECODE en la consulta.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b l e
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
Estos b a (ju se pueden
ejercicios
to utilizar como prctica adicional despus de tratar los siguientes
o rdo sentencia SQL SELECT bsica, comandos de SQL Developer bsicos, funciones
temas:
io C SQL, uniones y funciones de grupo.
Jul 7) Cree un informe que muestre el nombre de departamento, el ID de ubicacin, el
nombre, el cargo y el salario de los empleados que trabajan en una ubicacin
concreta. Solicite al usuario la ubicacin. Por ejemplo, si el usuario introduce 1800,
se obtienen los siguientes resultados:

8) Busque el nmero de empleados cuyo apellido termine con la letra "n". Cree dos
soluciones posibles.

Oracle Database: Conceptos Fundamentales de SQL I AP-6


Prctica 1-1 (continuacin)
9) Cree un informe que muestre el nombre, la ubicacin y el nmero de empleados de
cada departamento. Asegrese de que el informe slo incluye los departamentos sin
empleados.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
10) El departamento de recursos humanos necesita obtener los puestos de los li c e
departamentos 10 y 20. Cree un informe en el que se muestren los ID de cargo de b le
dichos departamentos. fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai de dlosedepartamentos
11) Cree un informe que muestre los cargos n Administration y
Executive. Muestre tambino
h el nmero de
S u
t empleados de dichos cargos. Muestre el
4 @ thi
cargo con el mayor nmero de s
empleados en primer lugar.
0
ct use
l i o
a (ju to
r d ob
io Co
Jul Estos ejercicios se pueden utilizar como prctica adicional despus de tratar los siguientes
temas: sentencias SQL SELECT bsicas, comandos de SQL Developer bsicos, funciones
SQL, uniones, funciones de grupo y subconsultas.
12) Muestre todos los empleados que se hayan contratado en la primera mitad del mes
(antes del 16 del mes).

Oracle Database: Conceptos Fundamentales de SQL I AP-7


Prctica 1-1 (continuacin)
13) Cree un informe que muestre lo siguiente para todos los empleados: apellido, salario
y salario expresado en trminos de miles de dlares.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
14) Muestre todosl i o ct empleados
los u se cuyo gestor tenga un salario superior a 15.000 dlares.
u siguientes
Muestre(jlos to datos: nombre del empleado, nombre del gestor, salario del
a
b y grado de salario del gestor.
ogestor
r d
io Co
Jul

Oracle Database: Conceptos Fundamentales de SQL I AP-8


Prctica 1-1 (continuacin)
15) Muestre el nmero de departamento, nombre, nmero de empleados y salario medio
de todos los departamentos, junto con los nombres, salarios y cargos de los
empleados que trabajan en cada departamento.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b l e
fer a
ans
n - t r
a no
) has ide
l c om t Gu
16) Cree un informe que muestre elt m ai de ddepartamento
nmero en y el salario ms bajo del
o
h is
departamento con el salario medio S
ms t u
alto.
@
0 se th
4
c t
( j ulio to u
17) o b
Cree
aun informe que muestre los departamentos en los que no haya ningn vendedor.
rd
io Co Incluya el nmero y nombre de departamento, as como el ID de gestor y la ubicacin
en la salida.
Jul

Oracle Database: Conceptos Fundamentales de SQL I AP-9


Prctica 1-1 (continuacin)
18) Cree los siguientes informes estadsticos para el departamento de recursos humanos:
incluya el nmero y nombre de departamento, as como el nmero de empleados que
trabajan en cada departamento que:
a) Contrate menos de tres empleados:
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

b) Tenga el mayor nmero de empleados:

nse
li c e
c) Tenga el menor nmero de empleados: le
a b
s fer
- t r an
no n
19) Cree un informe que muestre el nmero de empleado, el apellido, el salario, el
a
nmero de departamento y el salario medio del departamento para todos los
empleados. ) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I AP-10


Prctica 1-1 (continuacin)
20) Muestre todos los empleados que se hayan contratado el da de la semana en que se
contratara el mayor nmero de empleados.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

21) Cree una visin general de los aniversarios segn la fecha de contratacin de los
empleados. Ordene los aniversarios en orden ascendente.
nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I AP-11


Soluciones a la Prctica 1-1
Estos ejercicios se pueden utilizar como prctica adicional despus de tratar los siguientes
temas: sentencia SQL SELECT bsica, comandos de SQL Developer bsicos y funciones
SQL.
1) El departamento de recursos humanos necesita obtener los datos de todos los
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

oficinistas que se contrataron despus del ao 1997.


SELECT *
FROM employees
WHERE job_id = 'ST_CLERK'
AND hire_date > '31-DEC-1997';

2) El departamento de recursos humanos necesita un informe de los empleados que


perciben comisiones. Muestre el apellido, el cargo, el salario y la comisin de dichos nse
empleados. Ordene los datos por salario en orden descendente. li c e
b le
SELECT last_name, job_id, salary, commission_pct
fer a
FROM employees
ans
WHERE commission_pct IS NOT NULL
n - t r
ORDER BY salary DESC;
a no
3) Por motivos de presupuesto, el departamento de recursos s humanos
hadebe e a losnecesita un
informe de los aumentos programados. El informe
m ) u i d
mostrar empleados que
o t Gdel 10% del salario (redondee los
no perciben comisiones pero que tienen
salarios). a ilcun aumento
e n
o t m tud
SELECT 'The salary h
@ s S
of '||last_name||'
i after a 10% raise is '
4
t0 se t h
|| ROUND(salary*1.10) "New salary"
o c
i o u IS NULL;
FROM employees
WHERE (ju
l t
commission_pct
o b a
o rd apellidos
4) Cree un informe de los empleados y la duracin de los contratos. Muestre los

io C de todos los empleados junto con el nmero de aos y de meses completos


Jul que han estado contratados. Ordene el informe segn la duracin de las
contrataciones. El empleado que haya estado contratado durante ms tiempo
aparecer al principio de la lista.
SELECT last_name,
TRUNC(MONTHS_BETWEEN(SYSDATE, hire_date) / 12) YEARS,
TRUNC(MOD(MONTHS_BETWEEN(SYSDATE, hire_date), 12))
MONTHS
FROM employees
ORDER BY years DESC, MONTHS desc;
5) Muestre los empleados cuyo apellido empiece por las letras "J", "K", "L" o "M".
SELECT last_name
FROM employees
WHERE SUBSTR(last_name, 1,1) IN ('J', 'K', 'L', 'M');

Oracle Database: Conceptos Fundamentales de SQL I AP-12


Soluciones a la Prctica 1-1 (continuacin)
6) Cree un informe que muestre todos los empleados e indique con las palabras Yes o No
si perciben comisiones. Utilice la expresin DECODE en la consulta.
SELECT last_name, salary,
decode(commission_pct, NULL, 'No', 'Yes') commission
FROM employees;
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Estos ejercicios se pueden utilizar como prctica adicional despus de tratar los siguientes
temas: sentencia SQL SELECT bsica, comandos de SQL Developer bsicos, funciones
SQL, uniones y funciones de grupo.
7) Cree un informe que muestre el nombre de departamento, el ID de ubicacin, el
nombre, el cargo y el salario de los empleados que trabajan en una ubicacin nse
concreta. Solicite al usuario la ubicacin. li c e
b le
a) Introduzca 1800 para location_id cuando se le solicite.
fer a
SELECT d.department_name, d.location_id, e.last_name, ans
e.job_id, e.salary
n - t r
FROM employees e, departments d
a no
has ide
WHERE e.department_id = d.department_id
AND d.location_id = &location_id;
) ucon la letra "n". Cree dos
8) Busque el nmero de empleados cuyo l c om termine
apellido t G
soluciones posibles. t m ai den
h o S tu
SELECT COUNT(*) @
4 t h is
FROM employees 0
ct LIKE se '%n';
l i
WHERE last_nameo u
--or (ju to
a
b COUNT(*)
oSELECT
r d
Co WHERE SUBSTR(last_name, -1) = 'n';
FROM employees
io
Jul 9) Cree un informe que muestre el nombre, la ubicacin y el nmero de empleados de
cada departamento. Asegrese de que el informe slo incluye los departamentos sin
empleados.
SELECT d.department_id, d.department_name,
d.location_id, COUNT(e.employee_id)
FROM employees e RIGHT OUTER JOIN departments d
ON e.department_id = d.department_id
GROUP BY d.department_id, d.department_name, d.location_id;

10) El departamento de recursos humanos necesita obtener los puestos de los


departamentos 10 y 20. Cree un informe en el que se muestren los ID de cargo de
dichos departamentos.
SELECT DISTINCT job_id
FROM employees
WHERE department_id IN (10, 20);

Oracle Database: Conceptos Fundamentales de SQL I AP-13


Soluciones a la Prctica 1-1 (continuacin)
11) Cree un informe que muestre los cargos de los departamentos Administration y
Executive. Muestre tambin el nmero de empleados de dichos cargos. Muestre el
cargo con el mayor nmero de empleados en primer lugar.
SELECT e.job_id, count(e.job_id) FREQUENCY
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

FROM employees e JOIN departments d


ON e.department_id = d.department_id
WHERE d.department_name IN ('Administration', 'Executive')
GROUP BY e.job_id
ORDER BY FREQUENCY DESC;

Estos ejercicios se pueden utilizar como prctica adicional despus de tratar los siguientes
temas: sentencias SQL SELECT bsicas, comandos de SQL Developer bsicos, funciones nse
SQL, uniones, funciones de grupo y subconsultas. li c e
b le
12) Muestre todos los empleados que se hayan contratado en la primera mitad del mes
fer a
(antes del 16 del mes).
ans
SELECT last_name, hire_date n - t r
FROM employees a no
WHERE TO_CHAR(hire_date, 'DD') < 16;
) has ide
13) Cree un informe que muestre lo siguienteopara
c m todosGlosuempleados: apellido, salario
y salario expresado en trminos deamiles l nt
i de dlares.
d e
SELECT last_name, salary, h otm TRUNC(salary,
S tu -3)/1000 Thousands
@ i s
FROM employees;
c t 04 se th
14) Muestre todos
( j u liolos empleados
t o u cuyo gestor tenga un salario superior a 15.000 dlares.
Muestre los siguientes datos: nombre del empleado, nombre del gestor, salario del
a y grado
o b
gestor de salario del gestor.
C ord
io SELECT e.last_name, m.last_name manager, m.salary,
Jul j.grade_level
FROM employees e JOIN employees m
ON e.manager_id = m.employee_id
JOIN job_grades j
ON m.salary BETWEEN j.lowest_sal AND j.highest_sal
AND m.salary > 15000;

Oracle Database: Conceptos Fundamentales de SQL I AP-14


Soluciones a la Prctica 1-1 (continuacin)
15) Muestre el nmero de departamento, nombre, nmero de empleados y salario medio
de todos los departamentos, junto con los nombres, salarios y cargos de los
empleados que trabajan en cada departamento.
SELECT d.department_id, d.department_name,
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

count(e1.employee_id) employees,
NVL(TO_CHAR(AVG(e1.salary), '99999.99'), 'No average'
) avg_sal,
e2.last_name, e2.salary, e2.job_id
FROM departments d RIGHT OUTER JOIN employees e1
ON d.department_id = e1.department_id
RIGHT OUTER JOIN employees e2
ON d.department_id = e2.department_id
GROUP BY d.department_id, d.department_name, e2.last_name,
nse
e2.salary,
li c e
e2.job_id
b le
ORDER BY d.department_id, employees;
fer a
a n s
16) Cree un informe que muestre el nmero de departamento y el salario
n r
-t ms bajo del
departamento con el salario medio ms alto. n o
a
s e
SELECT department_id, MIN(salary) ha
FROM employees m ) u id
l o
c ent G
GROUP BY department_id
a i
HAVING AVG(salary) = (SELECT
o t t u d
m MAX(AVG(salary))
@ h GROUP
FROM S employees
is BY department_id);
0 4 t h
l
17) Cree un informe i o ctque muestre
u se los departamentos en los que no haya ningn vendedor.
Incluya
a (eljunmero ytonombre de departamento, as como la ubicacin, en la salida.
d b
oSELECT
r *
io Co FROM departments
Jul WHERE department_id NOT IN(SELECT department_id
FROM employees
WHERE job_id = 'SA_REP'
AND department_id IS NOT NULL);
18) Cree los siguientes informes estadsticos para el departamento de recursos humanos:
incluya el nmero y nombre de departamento, as como el nmero de empleados que
trabajan en cada departamento que:
a) Contrate menos de tres empleados:
SELECT d.department_id, d.department_name, COUNT(*)
FROM departments d JOIN employees e
ON d.department_id = e.department_id
GROUP BY d.department_id, d.department_name
HAVING COUNT(*) < 3;

Oracle Database: Conceptos Fundamentales de SQL I AP-15


Soluciones a la Prctica 1-1 (continuacin)
b) Tenga el mayor nmero de empleados:
SELECT d.department_id, d.department_name, COUNT(*)
FROM departments d JOIN employees e
ON d.department_id = e.department_id
GROUP BY d.department_id, d.department_name
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

HAVING COUNT(*) = (SELECT MAX(COUNT(*))


FROM employees
GROUP BY department_id);

c) Tenga el menor nmero de empleados:


SELECT d.department_id, d.department_name, COUNT(*)
FROM departments d JOIN employees e
nse
ON d.department_id = e.department_id
li c e
GROUP BY d.department_id, d.department_name
b le
HAVING COUNT(*) = (SELECT MIN(COUNT(*))
fer a
FROM employees
ans
GROUP BY department_id);
n - t r
no
19) Cree un informe que muestre el nmero de empleado, el apellido, el salario, el
a
empleados. ) has ide
nmero de departamento y el salario medio del departamento para todos los

c G u
om e.department_id,
i
SELECT e.employee_id, e.last_name,
a l e n t e.salary,
AVG(s.salary)
otmemployees d
tu s
FROM employees e h JOIN
s S
ON 0 4 @ th
e.department_id = is.department_id
o ct use e.last_name, e.department_id,
GROUP BY e.employee_id,
l i
(ju
e.salary;
a to
d
20) b todos los empleados que se hayan contratado el da de la semana en que se
oMuestre
r
io Co contratara el mayor nmero de empleados.
Jul SELECT last_name, TO_CHAR(hire_date, 'DAY') day
FROM employees
WHERE TO_CHAR(hire_date, 'Day') =
(SELECT TO_CHAR(hire_date, 'Day')
FROM employees
GROUP BY TO_CHAR(hire_date, 'Day')
HAVING COUNT(*) = (SELECT MAX(COUNT(*))
FROM employees
GROUP BY TO_CHAR(hire_date,
'Day')));

21) Cree una visin general de los aniversarios segn la fecha de contratacin de los
empleados. Ordene los aniversarios en orden ascendente.
SELECT last_name, TO_CHAR(hire_date, 'Month DD') BIRTHDAY
FROM employees
ORDER BY TO_CHAR(hire_date, 'DDD');

Oracle Database: Conceptos Fundamentales de SQL I AP-16


Caso Prctico
En este caso prctico, crear un juego de tablas de base de datos para una aplicacin de
vdeo. Despus de crear las tablas, inserte, actualice y suprima registros de una base de
datos de videoclub y genere un informe. La base de datos slo contiene las tablas
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

esenciales.
A continuacin, se muestra un diagrama de las entidades y los atributos de una aplicacin
de vdeo:

TITLE
de #* id
RESERVATION * title
#* res date el asunto * description e
de o rating
c e ns
configurado o category le li
o release date a b
para
n s fer
r a
no n-t disponible
como
a
) has ide
c G ucopia
om t una
responsable l
ai den
de m
h o t S tu TITLE_COPY
MEMBER 4@ t h i s #* id
#* id ioct
0 se * status
l
u nameto
*(jlast
u
o b a o first name el asunto de

C ord o address
o city
responsable
io
Jul
de realizado en
o phone
* join date RENTAL
creado #* book date
para o act ret date
o exp ret date

Nota: si desea crear las tablas, puede ejecutar los comandos del script buildtab.sql en
SQL Developer. Si desea borrar las tablas, puede ejecutar los comandos del script
dropvid.sql en SQL Developer. A continuacin, puede ejecutar los comandos del
script buildvid.sql en SQL Developer para crear y rellenar las tablas.
Los tres scripts SQL se encuentran en la carpeta /home/oracle/labs/sql1/labs.
Si utiliza el script buildtab.sql para crear las tablas, empiece en el paso 4.

Oracle Database: Conceptos Fundamentales de SQL I AP-17


Si utiliza el script dropvid.sql para eliminar las tablas de vdeos, empiece en el
paso 1.
Si utiliza el script buildvid.sql para crear y rellenar las tablas, empiece en el
paso 6(b).
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o ba (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I AP-18


Prctica 2-1
1) Cree las tablas segn el siguiente grfico de instancias de tabla. Seleccione los tipos
de dato adecuados y asegrese de agregar restricciones de integridad.
a) Nombre de la tabla: MEMBER
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Column_ MEMBER_ LAST_ FIRST_NAME ADDRESS CITY PHONE JOIN


Name ID NAME _
DATE
Key PK
Type
Null/ NN,U NN NN
Unique
Default System
Value Date
ns e
Data NUMBER VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2
li c
DATEe
Type
b le
Length 10 25 25 100 30
fer
15 a
ans
n - t r
a no
b) Nombre de la tabla: TITLE
) has ide
c u
om t GRATING
Column_
Name
TITLE_ID TITLE
l
DESCRIPTION
ai den
CATEGORY RELEASE_
DATE
o t m tu
Key PK h
@ this S
Type
Null/ NN,U ct 0 4 NNse NN
l i o u
Unique
Check a (
ju to G, PG, R, DRAMA,
o b
ord
NC17, NR COMEDY,
ACTION,
io C
Jul
CHILD,
SCIFI,
DOCUMEN
TARY
Data Type NUMBER VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 DATE

Length 10 60 400 4 20

Oracle Database: Conceptos Fundamentales de SQL I AP-19


Prctica 2-1 (continuacin)

c) Nombre de la tabla: TITLE_COPY


Column COPY_ID TITLE_ID STATUS
Name
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Key PK PK,FK
Type
Null/ NN,U NN,U NN
Unique
Check AVAILABLE,
DESTROYED,
RENTED,
RESERVED e
FK Ref TITLE
c e ns
Table
l e li
FK Ref TITLE_ID
a b
Col s fer
Data NUMBER NUMBER
- r an
VARCHAR2
t
Type n
no
Length 10 10 a 15

) has ide
l c om t Gu
d) Nombre de la tabla: RENTAL ai en
o t m u d
tCOPY_ ACT_RET_
Column BOOK_ hMEMBER_ s S EXP_RET_ TITLE_
Name t 0
DATE 4@ ID e t hi ID DATE DATE ID
c
Key lio PK s
(
Typej u t o u PK,FK1 PK,FK2 PK,FK2

o b aDefault System System Date


rd
io Co Value
FK Ref
Date
MEMBER TITLE_
+ 2 days
TITLE_
Jul Table COPY COPY
FK Ref MEMBER_I COPY_ TITLE_ID
Col D ID
Data DATE NUMBER NUMBER DATE DATE NUMBER
Type
Length 10 10 10

Oracle Database: Conceptos Fundamentales de SQL I AP-20


Prctica 2-1 (continuacin)
e) Nombre de la tabla: RESERVATION

Column RES_ MEMBER_ TITLE_


Name DATE ID ID
Key PK PK,FK1 PK,FK2
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Type
Null/ NN,U NN,U NN
Unique
FK Ref MEMBER TITLE
Table
FK Ref MEMBER_ID TITLE_ID
Column
Data Type DATE NUMBER NUMBER
nse
Length 10 10 li c e
b le
fer a
ans
n - t r
2) Verifique que las tablas se han creado correctamente comprobando en el navegador
de conexiones de SQL Developer.
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I AP-21


Prctica 2-1 (continuacin)
3) Cree secuencias para identificar de forma nica cada fila de las tablas MEMBER y TITLE.
a) Nmero de miembro para la tabla MEMBER: empezar por 101; no permitir
almacenamiento en cach de los valores. Asigne el nombre MEMBER_ID_SEQ a la
secuencia.
b) Nmero de ttulo para la tabla TITLE: empezar por 92; no permitir
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

almacenamiento en cach de los valores. Asigne el nombre TITLE_ID_SEQ a la


secuencia.
c) Verifique la existencia de las secuencias en el navegador de conexiones de SQL
Developer.

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul 4) Agregue datos a las tablas. Cree un script para cada juego de datos que desee agregar.
a) Agregue los ttulos de las pelculas a la tabla TITLE. Escriba un script para
introducir la informacin sobre las pelculas. Guarde las sentencias en un script
denominado lab_apcs_4a.sql. Utilice las secuencias para identificar de forma
nica cada ttulo. Introduzca las fechas de versin en formato DD-MES-AAAA.
Recuerde que las comillas simples se deben gestionar de forma especial en los
campos de caracteres. Verifique las adiciones.

Oracle Database: Conceptos Fundamentales de SQL I AP-22


Prctica 2-1 (continuacin)

Title Description Rating Category Release_date


Willie and All of Willies friends G CHILD 05-OCT-1995
Christmas Too make a Christmas list for
Santa, but Willie has yet
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

to add his own wish list.


Alien Again Yet another installation of R SCIFI 19-MAY-1995
science fiction history.
Can the heroine save the
planet from the alien life
form?
The Glob A meteor crashes near a NR SCIFI 12-AUG-1995
small American town and
unleashes carnivorous goo nse
in this classic. li c e
My Day Off With a little luck and a lot PG COMEDY 12-JUL-1995 b l e
of ingenuity, a teenager
fer a
skips school for a day in
ans
New York.
n - t r
Miracles on Ice A six-year-old has doubts PG
a no DRAMA12-SEP-1995

has ide
about Santa Claus, but she
discovers that miracles
)
really do exist.
l c omNR t GuACTION
Soda Gang i
After discovering a cache
a e n 01-JUN-1995
otm Stu d
of drugs, a young couple
h
find themselves pitted
@ this
0 4
against a vicious gang.
b) Agreguel i o ct a la tabla
datos u seMEMBER. Guarde las sentencias insert en un script
a (ju lab_apcs_4b.sql
denominado
to . Ejecute los comandos del script. Asegrese de
o b
d utilizar la secuencia para agregar los nmeros de miembro.
or
io C First_
Jul Name Last_Name Address City Phone Join_Date
Carmen Velasquez 283 King Seattle 206-899- 08-MAR-
Street 6666 1990
LaDoris Ngao 5 Modrany Bratislava 586-355- 08-MAR-
8882 1990
Midori Nagayama 68 Via Sao Paolo 254-852- 17-JUN-
Centrale 5764 1991
Mark Quick-to-See 6921 King Lagos 63-559-7777 07-APR-1990
Way
Audry Ropeburn 86 Chu Street Hong Kong 41-559-87 18-JAN-
1991
Molly Urguhart 3035 Laurier Quebec 418-542- 18-JAN-
9988 1991

Oracle Database: Conceptos Fundamentales de SQL I AP-23


Prctica 2-1 (continuacin)
c) Agregue las siguientes copias de pelculas a la tabla TITLE_COPY:
Nota: tenga a mano los nmeros de TITLE_ID para este ejercicio.
Title Copy_Id Status Title Copy_Id
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Willie and 1 AVAILABLE Willie and Christmas 1


Christmas Too Too
Alien Again 1 AVAILABLE Alien Again 1

2 RENTED 2

The Glob 1 AVAILABLE The Glob 1

My Day Off 1 AVAILABLE My Day Off 1


nse
li c e
2 AVAILABLE 2
b le
fer a
3 RENTED
an s3
n - t r
Miracles on Ice 1 AVAILABLE
no
Miracles on Ice
a
1

Soda Gang 1 AVAILABLE haSoda Gang


s e 1
) i d
l c om t Gu
d) Agregue los siguientes alquileres
t m ai a la tabla
d n :
eRENTAL
Nota: el nmero de ttulo h u
opuede serStdiferente en funcin del nmero de secuencia.
0 4 @ this
Title_ Id
o c t
Copy_
s e
Member_Id
j u l i Id
t o u Book_date Exp_Ret_Date
92 a ( 1 101 3 days ago 1 day ago
o b
ord 93 2 101 1 day ago 1 day from now
io C
Jul 95 3 102 2 days ago Today

97 1 106 4 days ago 2 days ago

Oracle Database: Conceptos Fundamentales de SQL I AP-24


Prctica 2-1 (continuacin)
5) Cree una vista con el nombre TITLE_AVAIL para mostrar los ttulos de las pelculas,
la disponibilidad de cada copia y la fecha de devolucin esperada si est alquilada.
Consulte todas las filas de la vista. Ordene los resultados por ttulo.
Nota: los resultados pueden ser diferentes.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
6) Realice cambios en los datos de las tablas. ans
n - t r
a no
a) Agregue un nuevo ttulo. La pelcula es Interstellar Wars, que tiene la categora
PG y est clasificada como una pelcula de ciencia ficcin. La fecha de la versin
has ide
es 07-JUL-77. La descripcin es Futuristic interstellar action movie. Can the
)
l c om t Gu
rebels save the humans from the evil empire? Asegrese de agregar un registro

t m ai den
de copia de ttulo para dos copias.
b) Introduzca dos reservas. o
h Una reserva
S tues para Carmen Velasquez, que desea
0 4 @Wars.thLaisotra es para Mark Quick-to-See, que desea
alquilar Interstellar
alquilar Soda
l i o ct Gang.
u se
a (ju to
or dob
io C
Jul

Oracle Database: Conceptos Fundamentales de SQL I AP-25


Prctica 2-1 (continuacin)
7) Realice una modificacin en una de las tablas.
a) Ejecute el script lab_apcs_7a.sql ubicado en la carpeta
/home/oracle/labs/sql1/labs, para agregar una columna PRICE a la tabla
TITLE para registrar el precio de venta del vdeo. Verifique las modificaciones.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
Title Price
b le
Willie and Christmas Too 25
fer a
Alien Again 35
ans
The Glob 35 n - t r
My Day Off 35 a no
Miracles on Ice 30
) has ide
Soda Gang
l
35
c om t Gu
Interstellar Wars
t m ai den
29
tu
ho lab_apcs_7b.sql
S
b) Cree un script con @
4 el nombre
t h i s que contenga sentencias de
c 0 actualizar
actualizacintpara
s cada vdeo con un precio segn la lista
elos comandos
ul i o
proporcionada. u
Ejecute
o del script.
( j t
a tenga a mano los nmeros de TITLE_ID para este ejercicio.
d o bNota:

C o8)r Cree un informe que contenga el historial de alquiler de vdeos de cada cliente.
io
Jul
Asegrese de incluir el nombre del cliente, la pelcula alquilada, las fechas de alquiler
y la duracin de los alquileres. Calcule el nmero total de alquileres de todos los
clientes para el perodo de informe. Guarde los comandos generados por el informe
en un script lab_apcs_8.sql.
Nota: los resultados pueden ser diferentes.

Oracle Database: Conceptos Fundamentales de SQL I AP-26


Soluciones a la Prctica 2-1
1) Cree las tablas segn el siguiente grfico de instancias de tabla. Seleccione los tipos
de dato adecuados y asegrese de agregar restricciones de integridad.
a) Nombre de la tabla: MEMBER
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

CREATE TABLE member


(member_id NUMBER(10)
CONSTRAINT member_member_id_pk PRIMARY KEY,
last_name VARCHAR2(25)
CONSTRAINT member_last_name_nn NOT NULL,
first_name VARCHAR2(25),
address VARCHAR2(100),
city
phone
VARCHAR2(30),
VARCHAR2(15), nse
join_date DATE DEFAULT SYSDATE li c e
CONSTRAINT member_join_date_nn NOT NULL); b l e
fer a
b) Nombre de la tabla: TITLE
ans
n - t r
CREATE TABLE title
(title_id NUMBER(10) a no
title VARCHAR2(60) ) has ide
CONSTRAINT title_title_id_pk PRIMARY KEY,

c om t Gu
CONSTRAINT title_title_nn NOT NULL,
l
description ai den
VARCHAR2(400)
t m
o tu
CONSTRAINT title_description_nn NOT NULL,
h S
rating
0 @ this
VARCHAR2(4)
4
l i ct use
CONSTRAINT title_rating_ck CHECK
o
(rating IN ('G', 'PG', 'R', 'NC17', 'NR')),
u to
o b a (j
category VARCHAR2(20)
CONSTRAINT title_category_ck CHECK

C ord (category IN ('DRAMA', 'COMEDY', 'ACTION',


'CHILD', 'SCIFI', 'DOCUMENTARY')),
io
Jul release_date DATE);

c) Nombre de la tabla: TITLE_COPY


CREATE TABLE title_copy
(copy_id NUMBER(10),
title_id NUMBER(10)
CONSTRAINT title_copy_title_if_fk REFERENCES
title(title_id),
status VARCHAR2(15)
CONSTRAINT title_copy_status_nn NOT NULL
CONSTRAINT title_copy_status_ck CHECK (status IN
('AVAILABLE', 'DESTROYED','RENTED', 'RESERVED')),
CONSTRAINT title_copy_copy_id_title_id_pk
PRIMARY KEY (copy_id, title_id));

Oracle Database: Conceptos Fundamentales de SQL I AP-27


Soluciones a la Prctica 2-1 (continuacin)
d) Nombre de la tabla: RENTAL
CREATE TABLE rental
(book_date DATE DEFAULT SYSDATE,
member_id NUMBER(10)
CONSTRAINT rental_member_id_fk REFERENCES
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

member(member_id),
copy_id NUMBER(10),
act_ret_date DATE,
exp_ret_date DATE DEFAULT SYSDATE + 2,
title_id NUMBER(10),
CONSTRAINT rental_book_date_copy_title_pk
PRIMARY KEY (book_date, member_id, copy_id,title_id),
CONSTRAINT rental_copy_id_title_id_fk
nse
FOREIGN KEY (copy_id, title_id)
REFERENCES title_copy(copy_id, title_id)); li c e
b le
e) Nombre de la tabla: RESERVATION fer a
ans
CREATE TABLE reservation
n - t r
(res_date
member_id
DATE,
NUMBER(10) a no
member(member_id), ) has ide
CONSTRAINT reservation_member_id REFERENCES

title_id NUMBER(10)
l c om t Gu
t m ai den
CONSTRAINT reservation_title_id REFERENCES
title(title_id),
h o S tu
0 4 @ this
CONSTRAINT reservation_resdate_mem_tit_pk PRIMARY KEY

l i o ct use
(res_date, member_id, title_id));

(juque las tablas


2) Verifique
a to se han creado correctamente comprobando en el navegador
r d odebconexiones de SQL Developer.
io Co a) En el navegador de conexiones, ample Connections > myconnection > Tables.
Jul 3) Cree secuencias para identificar de forma nica cada fila de las tablas MEMBER y
TITLE.
a) Nmero de miembro para la tabla MEMBER: empezar por 101; no permitir
almacenamiento en cach de los valores. Asigne el nombre MEMBER_ID_SEQ a la
secuencia.
CREATE SEQUENCE member_id_seq
START WITH 101
NOCACHE;

b) Nmero de ttulo para la tabla TITLE: empezar por 92; no permitir


almacenamiento en cach de los valores. Asigne el nombre TITLE_ID_SEQ a la
secuencia.
CREATE SEQUENCE title_id_seq
START WITH 92
NOCACHE;

Oracle Database: Conceptos Fundamentales de SQL I AP-28


Soluciones a la Prctica 2-1 (continuacin)
c) Verifique la existencia de las secuencias en el navegador de conexiones de SQL
Developer.
i) En el navegador de conexiones, asumiendo que el nodo myconnection est
ampliado, ample Sequences.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

4) Agregue datos a las tablas. Cree un script para cada juego de datos que desee agregar.
a) Agregue los ttulos de las pelculas a la tabla TITLE. Escriba un script para
introducir la informacin sobre las pelculas. Guarde las sentencias en un script
denominado lab_apcs_4a.sql. Utilice las secuencias para identificar de forma
nica cada ttulo. Introduzca las fechas de versin en formato DD-MES-AAAA.
Recuerde que las comillas simples se deben gestionar de forma especial en los
campos de caracteres. Verifique las adiciones.
nse
INSERT INTO title(title_id, title, description, rating, li c e
category, release_date)
b le
VALUES (title_id_seq.NEXTVAL, 'Willie and Christmas Too',
fer a
'All of Willie''s friends make a Christmas list for
ans
Santa, but Willie has yet to add his own wish list.',
n - t r
/ a no
'G', 'CHILD', TO_DATE('05-OCT-1995','DD-MON-YYYY'))

has ide
INSERT INTO title(title_id , title, description, rating,
)
VALUES l om t Gu
category, release_date)
c
(title_id_seq.NEXTVAL, 'Alien Again', 'Yet another
t m ai den
installment of science fiction history. Can the
o S tu
heroine save the planet from the alien life form?',
h
0 4 @ this
'R', 'SCIFI', TO_DATE( '19-MAY-1995','DD-MON-YYYY'))
/
l i o ct use
INSERT INTO title(title_id, title, description, rating,
u to
o b a (j
VALUES
category, release_date)
(title_id_seq.NEXTVAL, 'The Glob', 'A meteor crashes
C ord near a small American town and unleashes carnivorous
io goo in this classic.', 'NR', 'SCIFI',
Jul /
TO_DATE( '12-AUG-1995','DD-MON-YYYY'))

INSERT INTO title(title_id, title, description, rating,


category, release_date)
VALUES (title_id_seq.NEXTVAL, 'My Day Off', 'With a little
luck and a lot ingenuity, a teenager skips school
for
a day in New York.', 'PG', 'COMEDY',
TO_DATE( '12-JUL-1995','DD-MON-YYYY'))
/
INSERT INTO title(title_id, title, description, rating,
category, release_date)
VALUES (title_id_seq.NEXTVAL, 'Miracles on Ice', 'A six-
year-old has doubts about Santa Claus, but she discovers
that miracles really do exist.', 'PG', 'DRAMA',
TO_DATE('12-SEP-1995','DD-MON-YYYY'))
/

Oracle Database: Conceptos Fundamentales de SQL I AP-29


Soluciones a la Prctica 2-1 (continuacin)

INSERT INTO title(title_id, title, description, rating,


category, release_date)
VALUES (title_id_seq.NEXTVAL, 'Soda Gang', 'After
discovering a cache of drugs, a young couple find themselves
pitted against a vicious gang.', 'NR', 'ACTION', TO_DATE('01-
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

JUN-1995','DD-MON-YYYY'))
/
COMMIT
/
SELECT title
FROM title;

nse
b) Agregue datos a la tabla MEMBER. Inserte las sentencias en un script denominado
li c e
lab_apcs_4b.sql. Ejecute los comandos del script. Asegrese de utilizar la
b le
secuencia para agregar los nmeros de miembro.
fer a
ans
SET VERIFY OFF
INSERT INTO member(member_id, first_name, last_name, n - t r
address, city, phone, join_date)
a no
) has ide
VALUES (member_id_seq.NEXTVAL, 'Carmen', 'Velasquez',
'283 King Street', 'Seattle', '206-899-6666',
TO_DATE('08-MAR-1990',
l c om t Gu
'DD-MM-YYYY'))
t m ai den
/
h o S tu
0 4 @ this first_name, last_name,
INSERT INTO member(member_id,
o t
caddress,secity, phone, join_date)
l i u
(ju(member_id_seq.NEXTVAL,
VALUES
a to 'LaDoris', 'Ngao',
b '5 Modrany', 'Bratislava', '586-355-8882',
ordoTO_DATE('08-MAR-1990',
io C 'DD-MM-YYYY'))
Jul /

INSERT INTO member(member_id, first_name, last_name,


address, city, phone, join_date)
VALUES (member_id_seq.NEXTVAL, 'Midori', 'Nagayama',
'68 Via Centrale', 'Sao Paolo', '254-852-5764',
TO_DATE('17-JUN-1991',
'DD-MM-YYYY'))
/

INSERT INTO member(member_id, first_name, last_name,


address, city, phone, join_date)
VALUES (member_id_seq.NEXTVAL, 'Mark', 'Quick-to-See',
'6921 King Way', 'Lagos', '63-559-7777', TO_DATE('07-
APR-1990',
'DD-MM-YYYY'))
/

Oracle Database: Conceptos Fundamentales de SQL I AP-30


Soluciones a la Prctica 2-1 (continuacin)

INSERT INTO member(member_id, first_name, last_name,


address, city, phone, join_date)
VALUES (member_id_seq.NEXTVAL, 'Audry', 'Ropeburn',
'86 Chu Street', 'Hong Kong', '41-559-87',
TO_DATE('18-JAN-1991',
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

'DD-MM-YYYY'))
/

INSERT INTO member(member_id, first_name, last_name,


address, city, phone, join_date)
VALUES (member_id_seq.NEXTVAL, 'Molly', 'Urguhart',
'3035 Laurier', 'Quebec', '418-542-9988', TO_DATE('18-
JAN-1991',
'DD-MM-YYYY')); nse
/ li c e
b le
COMMIT fer a
SET VERIFY ON
an s
n - t r
no
c) Agregue las siguientes copias de pelculas a la tabla TITLE_COPY:
a
) h s ieste
Nota: tenga a mano los nmeros de TITLE_IDapara
d eejercicio.

INSERT INTO title_copy(copy_id, omtitle_id,
G u status)
VALUES (1, 92, 'AVAILABLE')ilc t
/ t m a
u d en
h o
INSERT INTO title_copy(copy_id, S t title_id, status)
VALUES (1, 93, 4 @ thi
'AVAILABLE')
s
c t 0 se
/
INSERTju l i o u
a ( INTO to'RENTED')
title_copy(copy_id, title_id, status)
b
VALUES (2, 93,

ordo/
io C INSERT INTO title_copy(copy_id, title_id, status)

Jul
VALUES (1, 94, 'AVAILABLE')
/
INSERT INTO title_copy(copy_id, title_id, status)
VALUES (1, 95, 'AVAILABLE')
/
INSERT INTO title_copy(copy_id, title_id,status)
VALUES (2, 95, 'AVAILABLE')
/
INSERT INTO title_copy(copy_id, title_id,status)
VALUES (3, 95, 'RENTED')
/
INSERT INTO title_copy(copy_id, title_id,status)
VALUES (1, 96, 'AVAILABLE')
/
INSERT INTO title_copy(copy_id, title_id,status)
VALUES (1, 97, 'AVAILABLE')
/

Oracle Database: Conceptos Fundamentales de SQL I AP-31


Soluciones a la Prctica 2-1 (continuacin)
d) Agregue los siguientes alquileres a la tabla RENTAL:
Nota: el nmero de ttulo puede ser diferente en funcin del nmero de secuencia.
INSERT INTO rental(title_id, copy_id, member_id,
book_date, exp_ret_date, act_ret_date)
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

VALUES (92, 1, 101, sysdate-3, sysdate-1, sysdate-2)


/
INSERT INTO rental(title_id, copy_id, member_id,
book_date, exp_ret_date, act_ret_date)
VALUES (93, 2, 101, sysdate-1, sysdate-1, NULL)
/
INSERT INTO rental(title_id, copy_id, member_id,
book_date, exp_ret_date, act_ret_date)
VALUES (95, 3, 102, sysdate-2, sysdate, NULL) nse
/ li c e
INSERT INTO rental(title_id, copy_id, member_id,
b l e
book_date, exp_ret_date,act_ret_date)
fer a
VALUES (97, 1, 106, sysdate-4, sysdate-2, sysdate-2)
an s
/
n - t r
COMMIT
/ a no
) as de
hmostrar
5) Cree una vista con el nombre TITLE_AVAIL para
o m u i los ttulos de las pelculas,
a e n t G esperada si est alquilada.
ilc delosdevolucin
la disponibilidad de cada copia y la fecha
Consulte todas las filas de la vista. Ordene
m tud resultados por ttulo.
o t S
h ser diferentes.
Nota: los resultados pueden
@ i s
t 04 se thAS
CREATE VIEWctitle_avail
SELECT
( j u liot.title,
t o u c.copy_id, c.status, r.exp_ret_date
o b a
FROM title t JOIN title_copy c

o rd ON t.title_id = c.title_id

io C FULL OUTER JOIN rental r

Jul
ON c.copy_id = r.copy_id
AND c.title_id = r.title_id;

SELECT *
FROM title_avail
ORDER BY title, copy_id;

Oracle Database: Conceptos Fundamentales de SQL I AP-32


Soluciones a la Prctica 2-1 (continuacin)
6) Realice cambios en los datos de las tablas.
a) Agregue un nuevo ttulo. La pelcula es Interstellar Wars, que tiene la categora
PG y est clasificada como una pelcula de ciencia ficcin. La fecha de la versin
es 07-JUL-77. La descripcin es Futuristic interstellar action movie. Can the
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

rebels save the humans from the evil empire? Asegrese de agregar un registro
de copia de ttulo para dos copias.
INSERT INTO title(title_id, title, description, rating,
category, release_date)
VALUES (title_id_seq.NEXTVAL, 'Interstellar Wars',
'Futuristic interstellar action movie. Can the
rebels save the humans from the evil empire?',
'PG', 'SCIFI', '07-JUL-77')
nse
/
INSERT INTO title_copy (copy_id, title_id, status) li c e
VALUES (1, 98, 'AVAILABLE') b le
/ fer a
INSERT INTO title_copy (copy_id, title_id, status) ans
VALUES (2, 98, 'AVAILABLE') n - t r
/
a no
b) Introduzca dos reservas. Una reserva es para h
) as Velasquez,
Carmen
d e que desea
u i
m MarkGQuick-to-See,
alquilar Interstellar Wars. La otra esopara que desea
l c t
alquilar Soda Gang.
t m ai den
INSERT INTO reservation
h o (res_date,
S tu member_id, title_id)
VALUES (SYSDATE, @ 101, 98)is
/ c t 0 4 e th
INSERT INTO u s
lio reservation (res_date, member_id, title_id)
( j u t o
/b
o a
VALUES (SYSDATE, 104, 97)

rd
o7)
io C Realice una modificacin en una de las tablas.
Jul a) Ejecute el script lab_apcs_7a.sql ubicado en la carpeta
/home/oracle/labs/sql1/labs, para agregar una columna PRICE a la tabla
TITLE para registrar el precio de venta del vdeo. Verifique las modificaciones.
ALTER TABLE title
ADD (price NUMBER(8,2));

DESCRIBE title

Oracle Database: Conceptos Fundamentales de SQL I AP-33


Soluciones a la Prctica 2-1 (continuacin)
b) Cree un script con el nombre lab_apcs_7b.sql que contenga sentencias de
actualizacin para actualizar cada vdeo con un precio segn la lista
proporcionada. Ejecute los comandos del script.
Nota: tenga a mano los nmeros de TITLE_ID para este ejercicio.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SET ECHO OFF


SET VERIFY OFF
UPDATE title
SET price = &price
WHERE title_id = &title_id;
SET VERIFY OFF
SET ECHO OFF

8) Cree un informe que contenga el historial de alquiler de vdeos de cada cliente. nse
Asegrese de incluir el nombre del cliente, la pelcula alquilada, las fechas de alquiler li c e
y la duracin de los alquileres. Calcule el nmero total de alquileres de todos los b le
fer
clientes para el perodo de informe. Guarde los comandos generados por el informe
a
en un script lab_apcs_8.sql. ans
n - t r
Nota: los resultados pueden ser diferentes.
a no
SELECT m.first_name||' '||m.last_name sMEMBER,
h-ar.book_date
e t.title,
r.book_date, r.act_ret_date
m ) u i d DURATION
o
ilc ent G
FROM member m
JOIN rental r
t a
m tud
ON o
r.member_id = m.member_id
h is S
JOIN title t @ th
04= t.title_id
ON r.title_id
c t s e
( j u o to u
ORDER BY limember;

o b a
ord
io C
Jul

Oracle Database: Conceptos Fundamentales de SQL I AP-34


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Descripciones de las Tablas

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
ob
C ord
io
Jul
Descripcin de Esquema
Descripcin General
Los esquemas de ejemplo de Oracle Database ilustran una compaa de ejemplo que opera en todo el
mundo para surtir pedidos de varios productos distintos. La compaa tiene tres divisiones:
Human Resources: realiza un seguimiento de la informacin sobre los empleados y las
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

instalaciones.
Order Entry: realiza un seguimiento de los inventarios y las ventas de productos a travs de
distintos canales.
Sales History: realiza un seguimiento de los datos estadsticos de negocio para facilitar las
decisiones de negocio.
Cada una de estas divisiones se representa mediante un esquema. En este curso tendr acceso a los
objetos de todos los esquemas. No obstante, el nfasis de los ejemplos, demostraciones y prcticas
est en el esquema de Human Resources (HR). nse
Todos los scripts necesarios para crear los esquemas de ejemplo estn en la carpeta li c e
b le
$ORACLE_HOME/demo/schema/.
fer a
Human Resources (HR)
ans
- t r
Se trata del esquema que se utiliza en este curso. En los registros de recursos humanos (HR), cada
n
no
empleado tiene un nmero de identificacin, una direccin de correo electrnico, un cdigo de
a
salario. ) has ide
identificacin de cargo, un salario y un gestor. Algunos empleados ganan comisiones adems de su

l c om t Gu
t m ai den
La compaa tambin registra informacin sobre cargos dentro de la organizacin. Cada cargo

h o S tu
dispone de un cdigo de identificacin, un puesto y un rango de salario mximo y mnimo para el

0 4 @ this
cargo. Algunos empleados llevan bastante tiempo en la compaa y han desempeado distintos

l i ct use
trabajos en ella. Cuando se reasigna un empleado, se registran la duracin del trabajo del empleado,
o
el nmero de identificacin del cargo y el departamento.
u to
b a (j
La compaa de ejemplo se extiende por distintas regiones, por lo que registra la ubicacin de sus
o
C ord
almacenes y departamentos. Cada empleado est asignado a un departamento y cada departamento se
identifica mediante un nmero de departamento nico o una abreviatura. Cada departamento est
io
Jul asociado a una ubicacin y cada ubicacin tiene una direccin completa que incluye el nombre de la
calle, el cdigo postal, la ciudad, el estado o la provincia y el cdigo de pas.
En las ubicaciones de los departamentos y almacenes, la compaa registra detalles como el nombre
de pas, el smbolo y nombre de divisa y la regin en la que est ubicado geogrficamente el pas.

Oracle Database: Conceptos Fundamentales de SQL I B-2


Diagrama de Relacin de Entidades de HR

HR DEPARTMENTS
department_id
LOCATIONS
location_id
department_name street_address
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

manager_id postal_code
location_id city
state_province
country_id
JOB_HISTORY
employee_id
start_date EMPLOYEES
end_date employee_id
job_id first_name
last_name
COUNTRIES
nse
department_id
email
country_id
li c e
phone_number
country_name
b le
hire_date
region_id
fer a
job_id
ans
JOBS
job_id
salary
commission_pct n - t r
job_title manager_id
a no REGIONS
has ide
min_salary department_id
max_salary region_id
)
l c om t Gu region_name

t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
ob a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I B-3


Descripciones de las Tablas de Human Resources (HR)
DESCRIBE countries
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT * FROM countries;

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
ob a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I B-4


Descripciones de las Tablas de Human Resources (HR) (continuacin)
DESCRIBE departments
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT * FROM departments;

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
ob a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I B-5


Descripciones de las Tablas de Human Resources (HR) (continuacin)
DESCRIBE employees
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
n - t r
SELECT * FROM employees;
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
ob a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I B-6


Descripciones de las Tablas de Human Resources (HR) (continuacin)
DESCRIBE job_history
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT * FROM job_history


nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
ob a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I B-7


Descripciones de las Tablas de Human Resources (HR) (continuacin)
DESCRIBE jobs
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT * FROM jobs

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
ob a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I B-8


Descripciones de las Tablas de Human Resources (HR) (continuacin)
DESCRIBE locations
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT * FROM locations


nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
ob a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I B-9


Descripciones de las Tablas de Human Resources (HR) (continuacin)
DESCRIBE regions
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT * FROM regions

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
ob a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I B-10


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Uso de SQL Developer


nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
ob
C ord
io
Jul
Objetivos
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Al finalizar este apndice, debera estar capacitado para lo


siguiente:
Mostrar las funciones clave de Oracle SQL Developer
Identificar las opciones de men de Oracle SQL Developer
Crear una conexin a la base de datos
Gestionar objetos de bases de datos nse
li c e
Utilizar la hoja de trabajo de SQL
a b le
Guardar y ejecutar scripts SQL s f er
Crear y guardar informes - t r an
n no
a
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
Objetivos
ob
ord
En este apndice, se ofrece una introduccin a la herramienta grfica SQL Developer. Aprender
C
io cmo utilizar SQL Developer para las tareas de desarrollo de la base de datos. Aprender cmo
Jul utilizar la hoja de trabajo de SQL para ejecutar sentencias y scripts SQL.

Oracle Database: Conceptos Fundamentales de SQL I C-2


Qu es Oracle SQL Developer?
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Oracle SQL Developer es una herramienta grfica que


mejora la productividad y simplifica las tareas de
desarrollo de la base de datos.
Puede conectarse a cualquier esquema de Oracle
Database de destino mediante la autenticacin estndar
de Oracle Database. e
c e ns
le li
a b
s fer
- t r an
no n
a
) has ide
l c om t Gu
t m SQLai Developer d en
h o S t u
4@ t s
hy/oi sus filiales. Todos los derechos reservados.
t 0
Copyright
e
2010, Oracle

u l i oc o us
ba (j
Qu es Oracle SQL Developer?
o
t
ord
Oracle SQL Developer es una herramienta grfica gratuita diseada para mejorar la productividad y
C
io simplificar el desarrollo de las tareas diarias de la base de datos. Con slo unos clics, puede crear y
Jul depurar fcilmente los procedimientos almacenados, probar sentencias SQL y visualizar los planes del
optimizador.
SQL Developer, la herramienta visual para el desarrollo de la base de datos, simplifica las siguientes
tareas:
Examen y gestin de objetos de la base de datos
Ejecucin de sentencias y scripts SQL
Edicin y depuracin de sentencias PL/SQL
Creacin de informes
Puede conectarse a cualquier esquema de Oracle Database de destino mediante la autenticacin estndar
de Oracle Database. Una vez conectado, puede realizar operaciones en los objetos de la base de datos.
SQL Developer versin 1.2 est estrechamente integrado con Developer Migration Workbench, que
proporciona a los usuarios un punto nico para examinar los objetos y datos de base de datos en bases
de datos de terceros y migrar desde estas bases de datos a Oracle. Tambin se puede conectar a los
esquemas para las bases de datos de terceros (no de Oracle) seleccionadas, como MySQL, Microsoft
SQL Server y Microsoft Access, y ver los metadatos y datos de estas bases de datos.
Adems, SQL Developer incluye soporte para Oracle Application Express 3.0.1 (Oracle APEX).

Oracle Database: Conceptos Fundamentales de SQL I C-3


Especificaciones de SQL Developer
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Incluido con Oracle Database 11g Versin 2


Desarrollado en Java
Soporta plataformas Windows, Linux y Mac OS X
Permite la conectividad por defecto mediante el
controlador JDBC Thin
Se conecta a Oracle Database versin 9.2.0.1 y nse
li c e
posteriores le
r a b
Descarga gratuita desde el siguiente enlace: sfe n
n - tra
http://www.oracle.com/technology/products/database/
sql_developer/index.html no a
a
h ides
)
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Especificaciones de SQL Developer
o
ord
Oracle SQL Developer 1.5 se incluye con Oracle Database 11g Versin 2. SQL Developer est
C
io desarrollado en Java aprovechando el entorno de desarrollo integrado (IDE) de Oracle JDeveloper.
Jul Por lo tanto, es una herramienta entre plataformas. La herramienta se ejecuta en plataformas
Windows, Linux y Mac OS (sistema operativo) X.
La conectividad por defecto a la base de datos se realiza a travs del controlador Java Database
Connectivity (JDBC) Thin y, por lo tanto, no es necesario el directorio raz de Oracle. SQL
Developer no necesita un instalador y simplemente necesita descomprimir los archivos descargados.
Con SQL Developer, los usuarios se pueden conectar a Oracle Databases 9.2.0.1 y versiones
posteriores y a todas las ediciones de Oracle Database, incluida Express Edition.
Nota
Para versiones de Oracle Database anteriores a Oracle Database 11g Versin 2, tendr que descargar
e instalar SQL Developer. SQL Developer 1.5 se puede descargar gratuitamente desde el siguiente
enlace:
http://www.oracle.com/technology/products/database/sql_developer/index.html.
Para obtener ms instrucciones sobre cmo instalar SQL Developer, consulte el sitio web en:
http://download.oracle.com/docs/cd/E12151_01/index.htm

Oracle Database: Conceptos Fundamentales de SQL I C-4


Interfaz de SQL Developer 1.5
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Debe definir una e


conexin para empezar
c e ns
a utilizar SQL Developer le li
a b
para la ejecucin de
consultas SQL en un s fer
esquema de base de - t r an
datos. no n
a
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Interfaz de SQL Developer 1.5
o
ord
La interfaz de SQL Developer 1.5 contiene tres separadores de navegacin principales, de izquierda a
C
io derecha:
Jul Separador Connections: si utiliza este separador, puede examinar los objetos y usuarios de la
base de datos a los que tiene acceso.
Separador Files: identificado mediante el icono de carpeta Files, este separador permite
acceder a los archivos desde la mquina local sin tener que utilizar el men File > Open.
Separador Reports: identificado mediante el icono Reports, este separador permite ejecutar
los informes predefinidos o crear y aplicar sus propios informes.
Navegacin General y Uso
SQL Developer utiliza la parte izquierda de la navegacin para buscar y seleccionar objetos y la parte
derecha para mostrar informacin sobre los objetos seleccionados. Tambin puede personalizar
muchos aspectos de la apariencia y del comportamiento de SQL Developer mediante la definicin de
preferencias.
Nota: debe definir al menos una conexin para conectarse a un esquema de base de datos y emitir
consultas SQL o ejecutar procedimientos/funciones.

Oracle Database: Conceptos Fundamentales de SQL I C-5


Interfaz de SQL Developer 1.5 (continuacin)
Mens
Los siguientes mens contienen entradas estndar, adems de entradas de funciones especificas de
SQL Developer.
View: contiene opciones que afectan a lo que se muestra en la interfaz de SQL Developer.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Navigate: contiene opciones para acceder a los paneles y ejecutar los subprogramas.
Run: contiene las opciones Run File y Execution Profile, que son relevantes en la seleccin de
una funcin o un procedimiento, adems de las opciones de depuracin.
Source: contiene opciones para utilizarlas al editar funciones y procedimientos.
Versioning: proporciona soporte integrado para los siguientes sistemas de control de versiones
y orgenes: CVS (Concurrent Versions System) y Subversion.
Migration: contiene opciones relacionadas con la migracin de bases de datos de terceros a
Oracle.
nse
Tools: llama a las herramientas de SQL Developer, como SQL*Plus, Preferences y SQL li c e
Worksheet. b le
fer a
Nota: el men Run tambin contiene opciones relevantes para la seleccin de una funcin o un
ans
n - t r
procedimiento para depuracin. Son las mismas opciones que las del men Debug de la
versin 1.2.
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I C-6


Creacin de una Conexin a la Base Datos
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Debe tener al menos una conexin a la base de datos


para utilizar SQL Developer.
Puede crear y probar conexiones para:
Varias bases de datos
Varios esquemas
SQL Developer importa automticamente las conexiones nse
definidas en el archivo tnsnames.ora al sistema. li c e
a b le
Puede exportar conexiones a un archivo Extensiblefer
Markup Language (XML). a n s
n -t r
Cada conexin a la base de datos adicional o
n creada se
a
muestra en la jerarqua del navegador
) has ide d econexiones.
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o
l i o
a ( ju to
r d ob una Conexin a la Base Datos
Creacin de
Unaoconexin es un objeto de SQL Developer que especifica la informacin necesaria para
C
io conectarse a una base de datos concreta como usuario especfico de dicha base de datos. Para utilizar
Jul SQL Developer, debe tener al menos una conexin a la base de datos que puede ser existente, creada
o importada.
Puede crear y probar conexiones para varias bases de datos y esquemas.
Por defecto, el archivo tnsnames.ora est ubicado en el directorio
$ORACLE_HOME/network/admin, pero tambin puede estar en el directorio especificado por la
variable de entorno TNS_ADMIN o el valor de registro. Al iniciar SQL Developer, cuando se muestra
el cuadro de dilogo Database Connections, SQL Developer importa automticamente las conexiones
definidas en el archivo tnsnames.ora al sistema.
Nota: en los sistemas Windows, si existe el archivo tnsnames.ora, pero SQL Developer no est
utilizando sus conexiones, defina TNS_ADMIN como una variable de entorno del sistema.
Puede exportar conexiones a un archivo XML para poder volver a utilizarlas.
Puede crear conexiones adicionales como usuarios diferentes a la misma base de datos o conectarse a
diferentes bases de datos.

Oracle Database: Conceptos Fundamentales de SQL I C-7


Creacin de una Conexin a la Base Datos
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

1 2

3 nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Creacin de una Conexin a la Base Datos (continuacin)
o
ord
Para crear una conexin a la base de datos, realice los siguientes pasos:
C
io 1. En la pgina con separadores Connections, haga clic con el botn derecho del mouse en
Jul Connections y seleccione New Connection.
2. En la ventana New/Select Database Connection, introduzca el nombre de la conexin.
Introduzca el nombre de usuario y la contrasea del esquema al que desea conectarse.
a) En la lista desplegable Role, puede seleccionar default o SYSDBA. (Debe seleccionar
SYSDBA para el usuario sys o cualquier usuario con privilegios de administrador de la
base de datos).
b) Puede seleccionar el tipo de conexin como:
Basic: en este tipo, introduzca el nombre del host y el SID de la base de datos a la que
desea conectarse. El puerto ya est definido en 1521. Tambin puede introducir el
nombre del servicio directamente si utiliza una conexin a la base de datos remota.
TNS: puede seleccionar cualquiera de los alias de base de datos importados del archivo
tnsnames.ora.
LDAP: puede consultar los servicios de base de datos en Oracle Internet Directory, que
es un componente de Oracle Identity Management.
Advanced: puede definir una URL de Java Database Connectivity (JDBC) URL
personalizada para conectarse a la base de datos.

Oracle Database: Conceptos Fundamentales de SQL I C-8


Creacin de una Conexin a la Base Datos (continuacin)
c) Haga clic en Test para asegurarse de que la conexin se ha definido correctamente.
d) Haga clic en Connect.
Si activa la casilla de control Save Password, la contrasea se guarda en un archivo XML. De
este modo, cuando cierre la conexin a SQL Developer y la vuelva a abrir, no se le pedir la
contrasea.
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

3. La conexin se agrega al navegador de conexiones. Puede ampliar la conexin para ver los
objetos de base de datos y las definiciones de objetos (por ejemplo, dependencias, detalles,
estadsticas, etc.).
Nota: en la misma ventana New/Select Database Connection, puede definir conexiones a orgenes de
datos no Oracle mediante los separadores Access, MySQL y SQL Server. Sin embargo, se trata de
conexiones de slo lectura que permiten examinar los objetos y datos de dicho origen de datos.
nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I C-9


Examen de Objetos de Bases de Datos
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Utilizar el navegador de conexiones para:


Examinar los objetos de un esquema de base de datos
Revisar las definiciones de objetos de forma rpida

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Examen de Objetos de Bases de Datos
o
ord
Una vez creada la conexin a la base de datos, puede utilizar el navegador de conexiones para
C
io examinar los objetos de un esquema de base de datos entre los que se incluyen tablas, vistas, ndices,
Jul paquetes, procedimientos, disparadores y tipos.
SQL Developer utiliza la parte izquierda de la navegacin para buscar y seleccionar objetos y la parte
derecha para mostrar la informacin sobre los objetos seleccionados. Tambin puede personalizar
muchos aspectos de la apariencia de SQL Developer mediante la definicin de preferencias.
Puede ver la definicin de los objetos desglosados en separadores de informacin que se transfieren
al diccionario de datos. Por ejemplo, si selecciona una tabla en el navegador, se muestran los detalles
sobre las columnas, restricciones, permisos, estadsticas, disparadores, etc., en una pgina con
separadores fciles de leer.
Si desea ver la definicin de la tabla EMPLOYEES como se muestra en la diapositiva, realice los
siguientes pasos:
1. Ample el nodo Connections en el navegador de conexiones.
2. Ample Tables.
3. Haga clic en EMPLOYEES. Por defecto, est seleccionado el separador Columns. Se muestra la
descripcin de las columnas de la tabla. Mediante el separador Data, puede ver los datos de la
tabla e introducir las nuevas filas, datos de actualizacin y confirmar estos cambios en la base
de datos.

Oracle Database: Conceptos Fundamentales de SQL I C-10


Visualizacin de la Estructura de la Tabla

Utilizar el comando DESCRIBE para mostrar la estructura de


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

una tabla:

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Visualizacin de la Estructura de la Tabla
o
ord
En SQL Developer, tambin puede visualizar la estructura de una tabla mediante el comando
C
io DESCRIBE. El resultado del comando es una visualizacin de los nombres de columna y tipos de
Jul dato, as como una indicacin de si una columna debe contener datos.

Oracle Database: Conceptos Fundamentales de SQL I C-11


Examen de Archivos
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Utilizar el navegador de archivos para explorar el sistema de


archivos y abrir archivos del sistema.

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Examen de Objetos de Bases de Datos
o
ord
Puede utilizar el navegador de archivos para examinar y abrir archivos del sistema.
C
io Para ver el navegador de archivos, haga clic en el separador Files o seleccione View > Files.
Jul Para ver el contenido de un archivo, haga clic dos veces en un nombre de archivo para mostrar
su contenido en el rea de la hoja de trabajo de SQL.

Oracle Database: Conceptos Fundamentales de SQL I C-12


Creacin de un Objeto de Esquema

SQL Developer soporta la creacin de cualquier objeto de


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

esquema mediante:
Ejecucin de una sentencia SQL en SQL Worksheet
Uso del men contextual
Editar los objetos mediante un cuadro de dilogo de edicin
o con uno de los muchos mens sensibles al contexto.
e n se
Ver el lenguaje de definicin de datos (DDL) para los
l e lic
f e rab de
ajustes, como la creacin de un nuevo objeto o la edicin
un objeto de esquema existente. ns tra
n -
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Creacin de un Objeto de Esquema
o
ord
SQL Developer soporta la creacin de cualquier objeto de esquema mediante la ejecucin de una
C
io sentencia SQL en la hoja de trabajo de SQL. Por otro lado, puede crear objetos mediante los mens
Jul contextuales. Cuando se crea, puede editar los objetos con un cuadro de dilogo de edicin o con uno
de los muchos mens sensibles al contexto.
Una vez que se han creado los nuevos objetos o se han editado los existentes, el DDL de estos ajustes
estar disponible para la revisin. Una opcin Export DDL est disponible si desea crear el DDL
completo para uno o ms objetos en el esquema.
La diapositiva muestra cmo crear una tabla mediante el men contextual. Para abrir un cuadro de
dilogo para la creacin de una nueva tabla, haga clic con el botn derecho del mouse en Tables y
seleccione New Table. Los cuadros de dilogo para la creacin y edicin de objetos de la base de
datos tienen varios separadores, cada uno de ellos contiene un agrupamiento lgico de propiedades
para dicho tipo de objeto.

Oracle Database: Conceptos Fundamentales de SQL I C-13


Creacin de una Nueva Tabla: Ejemplo
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Creacin de una Nueva Tabla: Ejemplo
o
ord
En el cuadro de dilogo Create Table, si no activa la casilla de control Advanced, puede crear una
C
io tabla rpidamente mediante la especificacin de columnas y algunas funciones utilizadas con
Jul frecuencia.
Si activa la casilla de control Advanced, el cuadro de dilogo Create Table cambia a otro con varias
opciones, en las que puede especificar un juego ampliado de funciones mientras crea la tabla.
En el ejemplo de la diapositiva se muestra cmo crear la tabla DEPENDENTS mediante la activacin
de la casilla de control Advanced.
Para crear una nueva tabla, realice los siguientes pasos:
1. En el navegador de conexiones, haga clic con el botn derecho del mouse en Tables.
2. Seleccione Create TABLE.
3. En el cuadro de dilogo Create Table, seleccione Advanced.
4. Especifique la informacin de columna.
5. Haga clic en OK.
Aunque no es necesario, tambin debe especificar una clave primaria con el separador Primary Key
en el cuadro de dilogo. En ocasiones, puede que desee editar la tabla que ha creado; para ello, haga
clic con el botn derecho del mouse en la tabla del navegador de conexiones y seleccione Edit.

Oracle Database: Conceptos Fundamentales de SQL I C-14


Uso de la Hoja de Trabajo de SQL

Utilizar la hoja de trabajo de SQL para introducir y ejecutar


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

sentencias SQL, PL/SQL y SQL *Plus.


Especificar las acciones que se pueden procesar mediante
la conexin a la base de datos asociada a la hoja de trabajo.

nse
li c e
b le
fer a
an s
t r
O hacer clic en el icono
n -
no
Seleccionar SQL Worksheet Open SQL Worksheet.
en el men Tools. a
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Uso de la Hoja de Trabajo de SQL
o
ord
Al conectarse a una base de datos, automticamente se abre una ventana de hoja de trabajo de SQL
C
io para dicha conexin. Puede utilizar la hoja de trabajo de SQL para introducir y ejecutar sentencias
Jul SQL, PL/SQL y SQL *Plus. SQL Worksheet soporta sentencias SQL*Plus hasta un determinado
grado. Las sentencias SQL*Plus no soportadas por la hoja de trabajo de SQL se ignoran y no se
transfieren a la base de datos.
Puede especificar las acciones que se pueden procesar mediante la conexin a la base de datos
asociada a la hoja de trabajo, como:
Creacin de una tabla
Insercin de datos
Creacin y edicin de un disparador
Seleccin de datos de tablas
Guardado de datos seleccionados en un archivo
Para visualizar una hoja de trabajo de SQL, utilice una de las siguientes opciones:
Seleccione Tools > SQL Worksheet.
Haga clic en el icono Open SQL Worksheet.

Oracle Database: Conceptos Fundamentales de SQL I C-15


Uso de la Hoja de Trabajo de SQL
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

2 4 6 8

nse
1 3 5 7 9 li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Uso de la Hoja de Trabajo de SQL (continuacin)
o
ord
Puede que desee utilizar teclas de acceso directo o iconos para realizar determinadas tareas como la
C
io ejecucin de una sentencia SQL o de un script y la visualizacin del historial de sentencias SQL
Jul ejecutadas. Puede utilizar la barra de herramientas de la hoja de trabajo de SQL que contiene iconos
para realizar las siguientes tareas:
1. Execute Statement: ejecuta la sentencia en la que est ubicado el cursor del cuadro Enter SQL
Statement. Puede utilizar variables de enlace en las sentencias SQL pero no variables de
sustitucin.
2. Run Script: ejecuta todas las sentencias en el cuadro Enter SQL Statement mediante Script
Runner. Puede utilizar variables de sustitucin en las sentencias SQL pero no variables de
enlace.
3. Commit: escribe cualquier cambio realizado en la base de datos y finaliza la transaccin.
4. Rollback: desecha cualquier cambio realizado en la base de datos, sin escribirlos en la base de
datos y finaliza la transaccin.
5. Cancel: para la ejecucin de cualquier sentencia que se est ejecutando actualmente.
6. SQL History: muestra un recuadro de dilogo con informacin sobre las sentencias SQL
ejecutadas.
7. Execute Explain Plan: genera la ejecucin del plan, que puede ver haciendo clic en el
separador Explain.
8. Autotrace: genera informacin de rastreo sobre la sentencia.
9. Clear: borra la sentencia o sentencias del recuadro Enter SQL Statement.

Oracle Database: Conceptos Fundamentales de SQL I C-16


Uso de la Hoja de Trabajo de SQL
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Introducir
sentencias SQL.

nse
li c e
a b le
s f er
Los resultados se
n
tramuestran aqu.

n on-
s a
) a
h ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o
l i o
a (ju to
d o b
Uso de la Hoja de Trabajo de SQL (continuacin)
o r
Al conectarse a una base de datos, automticamente se abre una ventana de hoja de trabajo de SQL
io C
para dicha conexin. Puede utilizar la hoja de trabajo de SQL para introducir y ejecutar sentencias
Jul SQL, PL/SQL y SQL *Plus. Todos los comandos SQL y PL/SQL estn soportados conforme se
transfieren directamente desde la hoja de trabajo de SQL a Oracle Database. La hoja de trabajo de
SQL debe interpretar los comandos SQL*Plus utilizados en SQL Developer antes de transferirlos a la
base de datos.
La hoja de trabajo de SQL soporta actualmente varios comandos SQL*Plus. Los comandos que no
soporta la hoja de trabajo de SQL se ignoran y no se envan a Oracle Database. A travs de la hoja de
trabajo de SQL, puede ejecutar sentencias SQL y algunos de los comandos SQL*Plus.
Puede mostrar una hoja de trabajo de SQL mediante cualquiera de las siguientes opciones:
Seleccione Tools > SQL Worksheet.
Haga clic en el icono Open SQL Worksheet.

Oracle Database: Conceptos Fundamentales de SQL I C-17


Ejecucin de Sentencias SQL
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Uso del recuadro Enter SQL Statement para introducir una o


varias sentencias SQL.

F9 F5
nse
li c e
F5
b le
F9 fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Ejecucin de Sentencias SQL
o
ord
En el ejemplo de la diapositiva se muestra la diferencia entre la salida de la misma consulta cuando
C
io se utiliza la tecla [F9] o Execute Statement y cuando se utiliza [F5] o Run Script.
Jul

Oracle Database: Conceptos Fundamentales de SQL I C-18


Guardado de Scripts SQL
Hacer clic en el icono Save
1 para guardar la sentencia
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SQL en un archivo.

Identificar una ubicacin,


nse
2 e
3 El contenido del archivo introducir un nombre de
li c
guardado es visible y se l e
archivo y hacer clic en Save.
b
puede editar en la ventana
fer a
de la hoja de trabajo de SQL.
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Guardado de Scripts SQL
o
ord
Puede guardar las sentencias SQL desde la hoja de trabajo de SQL en un archivo de texto. Para
C
io guardar el contenido del cuadro Enter SQL Statement, realice los siguientes pasos:
Jul 1. Haga clic en el icono Save o utilice la opcin de men File > Save.
2. En el cuadro de dilogo Save, introduzca un nombre de archivo y la ubicacin en la que desea
guardarlo.
3. Haga clic en Save.
Despus de guardar el contenido de un archivo, en la ventana Enter SQL Statement se muestra una
pgina con separadores del contenido del archivo. Puede tener varios archivos abiertos al mismo
tiempo. Cada archivo se muestra como una pgina con separadores.
Script Pathing
Puede seleccionar una ruta de acceso por defecto para buscar y guardar scripts. En Tools >
Preferences > Database > Worksheet Parameters, introduzca un valor en el campo Select default
path to look for scripts.

Oracle Database: Conceptos Fundamentales de SQL I C-19


Ejecucin de Archivos de Script Guardados:
Mtodo 1
1. Utilizar el separador Files para buscar el
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

archivo de script que desea abrir.


2. Hacer clic dos veces en el script para mostrar
el cdigo en la hoja de trabajo de SQL.
1

Para ejecutar el cdigo, 2


hacer clic en: Seleccionar una
Execute Script (F9) o 3 conexin de la lista
e
Run Script (F5) desplegable.
c e ns
l e li
a b
s fer
- t r an
no n
a
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Ejecucin de Archivos de Script Guardados: Mtodo 1
o
ord
Para abrir un archivo de script y mostrar el cdigo en el rea de la hoja de trabajo de SQL, realice los
C
io siguientes pasos:
Jul 1. En el navegador de archivos, seleccione (o navegue hasta) el archivo de script que desea abrir.
2. Haga clic dos veces para abrir. El cdigo del archivo de script se muestra en el rea de la hoja
de trabajo de SQL.
3. Seleccione una conexin de la lista desplegable de conexiones.
4. Para ejecutar el cdigo, haga clic en el icono Run Script (F5) de la barra de herramientas de la
hoja de trabajo de SQL. Si no ha seleccionado una conexin de la lista desplegable de
conexiones, aparecer un cuadro de dilogo de conexiones. Seleccione la conexin que desea
utilizar para la ejecucin del script.
Tambin puede realizar las siguientes acciones:
1. Seleccione File > Open. Aparece un cuadro de dilogo Open.
2. En el cuadro de dilogo Open, seleccione (o navegue hasta) el archivo de script que desea abrir.

Oracle Database: Conceptos Fundamentales de SQL I C-20


Ejecucin de Archivos de Script Guardados: Mtodo 1 (continuacin)
3. Haga clic en Open. El cdigo del archivo de script se muestra en el rea de la hoja de trabajo de
SQL.
4. Seleccione una conexin de la lista desplegable de conexiones.
5. Para ejecutar el cdigo, haga clic en el icono Run Script (F5) de la barra de herramientas de la
hoja de trabajo de SQL. Si no ha seleccionado una conexin de la lista desplegable de
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

conexiones, aparecer un cuadro de dilogo de conexiones. Seleccione la conexin que desea


utilizar para la ejecucin del script.

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
o b a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I C-21


Ejecucin de Archivos de Script Guardados:
Mtodo 2
Utilice el comando @
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

seguido de la ubicacin y el
nombre del archivo que
desea ejecutar y haga clic
en el icono Run Script.

nse
li c e
La salida del script se b le
muestra en la pgina
fer a
con separadores Script
an s
Output.
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Ejecucin de Archivos de Script Guardados: Mtodo 2
o
ord
Para guardar un script SQL, realice los siguientes pasos:
C
io 1. Utilice el comando @, seguido de la ubicacin y el nombre del archivo que desea ejecutar en la
Jul ventana Enter SQL Statement.
2. Haga clic en el icono Run Script.
El resultado de la ejecucin del archivo se muestra en la pgina con separadores Script Output.
Tambin puede guardar la salida del script haciendo clic en el icono Save de la pgina con
separadores Script Output. Aparece el cuadro de dilogo File Save donde puede identificar un
nombre y una ubicacin para el archivo.

Oracle Database: Conceptos Fundamentales de SQL I C-22


Formato del Cdigo SQL

Antes de la Operacin
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

de Formateo

nse
li c e
b le
fer a
ans
n - t r
a no
Despus de la Operacin
) has ide
de Formateo
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o
l i o
a ( ju to
Formato del
r d ob Cdigo SQL
o que desee dar formato al sangrado, espaciado, uso de maysculas y separacin de lneas del
Puede
C
J ulio cdigo SQL. SQL Developer dispone de una funcin para dar formato a cdigo SQL.
Para dar formato al cdigo SQL, haga clic con el botn derecho del mouse en el rea de la sentencia
y seleccione Format SQL.
En el ejemplo de la diapositiva, antes de dar formato, las palabras clave del cdigo SQL no estn en
mayscula y la sentencia no est sangrada correctamente. Despus de dar formato, el cdigo SQL
mejora el aspecto con las palabras clave en mayscula y la sentencia sangrada correctamente.

Oracle Database: Conceptos Fundamentales de SQL I C-23


Uso de Fragmentos
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Los fragmentos son fragmentos de cdigo que puede ser


simplemente sintaxis o ejemplos.
Al colocar el cursor aqu, se
muestra la ventana Snippets. En
la lista desplegable, puede
seleccionar la categora de
funciones que desee.

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Uso de Fragmentos
o
ord
Es posible que desee utilizar determinados fragmentos de cdigo al utilizar la hoja de trabajo de SQL
C
io o al crear o editar un procedimiento o una funcin de PL/SQL. SQL Developer dispone de la funcin
Jul denominada Snippets. Los fragmentos son fragmentos de cdigo, como funciones SQL, indicaciones
del optimizador y otras tcnicas de programacin de PL/SQL. Puede arrastrar fragmentos a la
ventana Editor.
Para visualizar los fragmentos, seleccione View > Snippets.
Aparece la ventana Snippets a la derecha. Puede utilizar la lista desplegable para seleccionar un
grupo. En el margen de la ventana derecha se encuentra un botn Snippets, para poder acceder a la
ventana Snippets si se oculta.

Oracle Database: Conceptos Fundamentales de SQL I C-24


Uso de Fragmentos: Ejemplo
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Insercin de un
fragmento

nse
li c e
b le
Edicin del
fer a
fragmento
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Uso de Fragmentos: Ejemplo
o
ord
Para insertar un fragmento en el cdigo en la hoja de trabajo de SQL o en otro procedimiento o
C
io funcin PL/SQL, arrastre el fragmento desde la ventana Snippets hasta el lugar deseado del cdigo.
Jul A continuacin, puede editar la sintaxis para que la funcin SQL sea vlida en el contexto actual.
Para ver una descripcin breve de una funcin SQL en una ayuda de burbuja, coloque el cursor sobre
el nombre de la funcin.
En el ejemplo de la diapositiva se muestra que CONCAT(char1, char2) se arrastra desde el
grupo Character Functions a la ventana Snippets. A continuacin, se edita la sintaxis de la funcin
CONCAT y el resto de la sentencia se agrega como se describe a continuacin:
SELECT CONCAT(first_name, last_name)
FROM employees;

Oracle Database: Conceptos Fundamentales de SQL I C-25


Depuracin de Procedimientos y Funciones
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Utilizar SQL Developer para depurar funciones y


procedimientos PL/SQL.
Utilizar la opcin Compile for Debug para realizar una
compilacin PL/SQL para que se pueda depurar el
procedimiento.
Utilizar las opciones del men
nse
Debug para definir puntos de li c e
divisin y realizar tareas a b le
Step Into y Step Over. s f er
n tra
n -
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Depuracin de Procedimientos y Funciones
o
ord
En SQL Developer, puede depurar procedimiento y funciones PL/SQL. Con las opciones del men
C
io Debug, puede realizar la siguientes tareas de depuracin:
Jul Find Execution Point va al siguiente punto de ejecucin.
Resume contina con la ejecucin.
Step Over omite el siguiente mtodo y va a la siguiente sentencia despus del mtodo.
Step Into va a la primera sentencia del siguiente mtodo.
Step Out deja el mtodo actual y va a la siguiente sentencia.
Step to End of Method va a la ltima sentencia del mtodo actual.
Pause para la ejecucin pero no sale, lo que permite reanudar la ejecucin.
Terminate para y sale de la ejecucin. No puede reanudar la ejecucin desde este punto; en su
lugar, para iniciar la ejecucin o depuracin desde comienzo de la funcin o del procedimiento,
haga clic en el icono Run o Debug de la barra de herramientas del separador Source.
Garbage Collection elimina los objetos no vlidos de la cach en favor de objetos a los que se
accede con mayor frecuencia y ms vlidos.
Estas opciones tambin estn disponibles como iconos en la barra de herramientas de depuracin.

Oracle Database: Conceptos Fundamentales de SQL I C-26


Informes de Bases de Datos

SQL Developer proporciona un nmero predefinido de informes


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

sobre la base de datos y sus objetos.

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Informes de Bases de Datos
o
ord
SQL Developer proporciona diferentes informes sobre la base de datos y sus objetos. Estos informes
C
io se pueden agrupar en las siguientes categoras:
Jul Informes About Your Database
Informes Database Administration
Informes Table
Informes PL/SQL
Informes Security
Informes XML
Informes Jobs
Informes Streams
Informes All Objects
Informes Data Dictionary
Informes User Defined
Para visualizar los informes, haga clic en el separador Reports situado a la izquierda de la ventana.
Los informes individuales se muestran en los paneles con separadores situados a la derecha de la
ventana y para cada informe puede seleccionar (en una lista desplegable) la conexin a la base de
datos para la que desea mostrar el informe. Para los informes sobre objetos, slo se muestran aquellos
objetos que sean visibles para el usuario de la base de datos asociado a la conexin a la base de datos
seleccionada y las filas ordenadas por propietario. Tambin puede crear sus propios informes
definidos por el usuario.
Oracle Database: Conceptos Fundamentales de SQL I C-27
Creacin de un Informe Definido por el Usuario

Crear y guardar informes definidos por el usuario para un uso


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

repetido.

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
c om G u
Organizar
a i l t
informes
e n en carpetas.
otm Stu d
@ h issus filiales. Todos los derechos reservados.
0 4 t h
l i o ct use
Copyright 2010, Oracle y/o

u to
b a (j
Creacin de un Informe Definido por el Usuario
o
ord
Los informes definidos por el usuario son informes creados por los usuarios de SQL Developer. Para
C
io crear un informe definido por el usuario, realice los siguientes pasos:
Jul 1. Haga clic con el botn derecho del mouse en el nodo User Defined Reports en Reports y
seleccione Add Report.
2. En el cuadro Create Report Dialog, especifique el nombre del informe y la consulta SQL para
recuperar del informe. A continuacin, haga clic en Apply.
En el ejemplo de la diapositiva, se especifica el nombre del informe como emp_sal. Se proporciona
una descripcin opcional que indica que el informe contiene los detalles de los empleados con un
salario salary >= 10000. La sentencia SQL completa para la recuperacin de la informacin
que se mostrar en el informe definido por el usuario se especifica en el cuadro SQL. Tambin puede
incluir una ayuda de burbuja opcional que se muestre al colocar el cursor brevemente sobre el
nombre del informe en la pantalla del navegador Reports.
Puede organizar los informes definidos por el usuario en carpetas y puede crear una jerarqua de
carpetas y subcarpetas. Para crear una carpeta para los informes definidos por el usuario, haga clic
con el botn derecho del mouse en el nodo User Defined Reports o en cualquier nombre de carpeta
de dicho nodo y seleccione Add Folder. La informacin sobre los informes definidos por el usuario,
incluidas las carpetas de dichos informes, se almacena en un archivo denominado
UserReports.xml en el directorio de informacin especfica del usuario.

Oracle Database: Conceptos Fundamentales de SQL I C-28


Motores de Bsqueda y Herramientas Externas
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Accesos directos a herramientas


utilizadas con mayor frecuencia
1

nse
2
li c e
b le
fer a
an s
Enlaces a motores de n - t r
bsqueda y foros de a no
discusin conocidos
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Motores de Bsqueda y Herramientas Externas
o
ord
Para mejorar la productividad de los desarrolladores de SQL, SQL Developer ha agregado enlaces
C
io rpidos a motores de bsqueda y foros de discusin conocidos, como AskTom, Google, etc. Adems,
Jul dispone de iconos de acceso directo a algunas de las herramientas ms utilizadas, como el Bloc de
notas, Microsoft Word y Dreamweaver.
Puede agregar herramientas externas a la lista de herramientas existentes o incluso suprimir accesos
directos a las herramientas que no utilice habitualmente. Para ello, realice los siguientes pasos:
1. En el men Tools, seleccione External Tools.
2. En el cuadro de dilogo External Tools, seleccione New para agregar nuevas herramientas.
Seleccione Delete para eliminar cualquier herramienta de la lista.

Oracle Database: Conceptos Fundamentales de SQL I C-29


Definicin de Preferencias
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Personalizar la interfaz y el entorno de SQL Developer.


En el men Tools, seleccione Preferences.

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Definicin de Preferencias
o
ord
Puede personalizar diferentes aspectos de la interfaz y el entorno de SQL Developer mediante la
C
io modificacin de las preferencias de SQL Developer segn sus preferencias y necesidades. Para
Jul modificar las preferencias de SQL Developer, seleccione Tools y, a continuacin, Preferences.
Las preferencias se agrupan en las siguientes categoras:
Environment
Accelerators (accesos directos del teclado)
Code Editors
Database
Debugger
Documentation
Extensions
File Types
Migration
PL/SQL Compilers
PL/SQL Debugger

Oracle Database: Conceptos Fundamentales de SQL I C-30


Restablecimiento del Diseo de SQL Developer
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Restablecimiento del Diseo de SQL Developer
o
ord
Al trabajar con SQL Developer, si desaparece el navegador de conexiones o no puede encajar la
C
io ventana Log en su lugar original, realice los siguientes pasos para solucionar el problema:
Jul 1. Salga de SQL Developer.
2. Abra una ventana de terminal y utilice el comando de bsqueda para buscar la ubicacin de
windowinglayout.xml.
3. Vaya al directorio que contenga el archivo windowinglayout.xml y suprmalo.
4. Reinicie SQL Developer.

Oracle Database: Conceptos Fundamentales de SQL I C-31


Resumen
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

En este apndice, debe haber aprendido cmo utilizar SQL


Developer para realizar las siguientes acciones:
Examinar, crear y editar objetos de bases de datos
Ejecutar sentencias SQL y scripts en la hoja de trabajo de
SQL
Crear y guardar informes personalizados nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
Resumen
o b
ord
SQL Developer es una herramienta grfica gratuita para simplificar las tareas de desarrollo de la base
C
io de datos. Con SQL Developer, puede examinar, crear y editar objetos de bases de datos. Puede
Jul utilizar SQL Worksheet para ejecutar archivos de comandos y sentencias SQL. SQL Developer
permite crear y guardar su propio juego especial de informes para un uso repetido.

Oracle Database: Conceptos Fundamentales de SQL I C-32


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Uso de SQL*Plus

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
ob
C ord
io
Jul
Objetivos
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Al finalizar este apndice, debera estar capacitado para lo


siguiente:
Conectarse a SQL*Plus
Editar comandos SQL
Formatear la salida con comandos SQL*Plus
Interactuar con scripts nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
Objetivos
ob
ord
Puede que desee crear sentencias SELECT que se puedan utilizar repetidamente. En este apndice
C
io tambin se aborda el uso de comandos SQL*Plus para ejecutar sentencias SQL. Aprender cmo
Jul formatear la salida mediante comandos SQL*Plus, editar comandos SQL y guardar scripts en
SQL*Plus.

Oracle Database: Conceptos Fundamentales de SQL I D-2


Interaccin de SQL y SQL*Plus
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Sentencias SQL
Servidor
SQL*Plus

nse
Resultados de consultas
li c e
b le
fer a
Buffer
an s
n - t r
a no
Scripts ) h
as de
SQL c o m Gui
a il ent
o t m tud
@ h is S
t 04 2010,seOraclethy/o sus filiales. Todos los derechos reservados.
Copyright
c
( j ulio to u
b
SQL y SQL*Plus
o a
ord
SQL es un lenguaje de comandos que se utiliza para la comunicacin con el servidor de Oracle desde
C
io cualquier herramienta o aplicacin. Oracle SQL contiene muchas extensiones. Al introducir una
Jul sentencia SQL, sta se almacena en una parte de la memoria denominada buffer SQL y permanece
all hasta que introduzca una nueva sentencia SQL. SQL*Plus es una herramienta de Oracle que
reconoce y enva sentencias SQL en Oracle9i Server para su ejecucin. Contiene su propio lenguaje
de comandos.
Funciones de SQL
Las pueden utilizar una gran variedad de usuarios, incluidos aqullos con poca o ninguna
experiencia
.Es un lenguaje que no es de procedimientos.
Reduce la cantidad de tiempo necesario para crear y mantener sistemas.
Es un lenguaje como el ingls.
Funciones de SQL*Plus
Acepta la entrada ad hoc de sentencias.
Acepta la entrada de SQL de los archivos.
Proporciona un editor de lneas para modificar sentencias SQL.
Controla los valores de entorno.
Formatea resultados de consulta en informes bsicos.
Accede a bases de datos locales y remotas.
Oracle Database: Conceptos Fundamentales de SQL I D-3
Sentencias SQL frente a Comandos SQL*Plus

SQL SQL*Plus
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Un lenguaje Un entorno
Estndar de ANSI Propiedad de Oracle
Las palabras clave no Las palabras clave se
se pueden abreviar. pueden abreviar.
Las sentencias manipulan Los comandos no
definiciones de tablas permiten la manipulacin icen
se
y datos en la base de datos. l
de valores en la basebdeel
ra
datos. sfe n
n - tra
o n
a
Sentencias Buffer has ide
Comandos
) Buffer
SQL SQL m
co nt G SQL*Plus u SQL*Plus
i l
o t ma tude
@ h is S
t 04 2010,seOraclethy/o sus filiales. Todos los derechos reservados.
Copyright
c
( j ulio to u
b
SQL y SQL*Plus
o a (continuacin)
En o d
larsiguiente tabla compara SQL y SQL*Plus:
io C
Jul SQL SQL*Plus
Lenguaje para la comunicacin con el Reconoce las sentencias SQL y las enva al
servidor de Oracle para acceder a los datos. servidor.
Se basa en SQL del estndar ANSI Interfaz propiedad de Oracle para ejecutar
(American National Standards Institute). sentencias SQL.
Manipula la definiciones de tablas y datos en No permite la manipulacin de valores en la
la base de datos. base de datos.
Se introduce en el buffer SQL en una o ms Se introduce en una lnea al mismo tiempo y
lneas. no se almacena en el buffer SQL.
No tiene ningn carcter de continuacin. Utiliza un guin () como carcter de
continuacin si el comando es ms largo que
una lnea.
No se puede abreviar. Se puede abreviar.
Utiliza un carcter de terminacin para No necesita caracteres de terminacin;
ejecutar comandos inmediatamente. ejecuta los comandos inmediatamente.
Utiliza funciones para realizar algunas tareas Utiliza comandos para formatear datos.
de formato.
Oracle Database: Conceptos Fundamentales de SQL I D-4
Visin General de SQL*Plus
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Conectarse a SQL*Plus.
Describir la estructura de la tabla.
Editar la sentencia SQL.
Ejecutar SQL desde SQL*Plus.
Guardar sentencias SQL en archivos y agregar sentencias
SQL a los archivos. nse
li c e
Ejecutar archivos guardados.
a b le
r
sfe
Cargar comandos del archivo en el buffer para la edicin.
n
n - tra
n o
a
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
SQL*Plus
o b
ord
SQL*Plus es un entorno en el que puede:
C
io Ejecutar sentencias SQL para recuperar, modificar, agregar y eliminar datos de la base de datos.
Jul Formatear, realizar clculos, almacenar e imprimir resultados de consulta en forma de informes.
Crear scripts para almacenar sentencias SQL para un uso repetido en el futuro.
Los comandos SQL*Plus se pueden dividir en las siguientes categoras:

Categora Objetivo
Entorno Afectar al comportamiento general de sentencias SQL para la sesin.
Formato Formatear resultados de consulta.
Manipulacin de Guardar, cargar y ejecutar archivos de comandos.
archivos
Ejecucin Enviar sentencias SQL del buffer SQL al servidor de Oracle.
Edicin Modificar sentencias SQL en el buffer.
Interaccin Crear y transferir variables a la sentencia SQL, imprimir valores de
variables y mensajes en la pantalla.
Otros Conectarse a la base de datos, manipular el entorno SQL*Plus y
mostrar definiciones de columnas.

Oracle Database: Conceptos Fundamentales de SQL I D-5


Conexin a SQL*Plus
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
sqlplus [username[/password[@database]]]
b le
fer a
an s
n - t r
a no
) has ide 2
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Conexin a SQL*Plus
o
ord
La forma de llamar a SQL*Plus depender del tipo de sistema operativo en que est ejecutando
C
io Oracle Database.
Jul Para conectarse desde un entorno Linux, realice los siguientes pasos:
1. Haga clic con el botn derecho del mouse en el escritorio de Linux y seleccione un terminal.
2. Introduzca el comando sqlplus que se muestra en la diapositiva.
3. Introduzca el nombre de usuario, la contrasea y el nombre de la base de datos.
En la sintaxis:
username Nombre de usuario de la base de datos.
password Contrasea de la base de datos (la contrasea ser visible si la introduce aqu).
@database Cadena de conexin de la base de datos.
Nota: para asegurarse de la integridad de la contrasea, no la introduzca en la peticin de datos del
sistema operativo. En su lugar, introduzca slo el nombre de usuario. Introduzca la contrasea en la
peticin de datos de la contrasea.

Oracle Database: Conceptos Fundamentales de SQL I D-6


Visualizacin de la Estructura de la Tabla

Utilizar el comando SQL*Plus DESCRIBE para mostrar la


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

estructura de una tabla:

DESC[RIBE] tablename

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Visualizacin de la Estructura de la Tabla
o
ord
En SQL*Plus, puede mostrar la estructura de una tabla mediante el comando DESCRIBE. El
C
io resultado del comando es una visualizacin de los nombres de columna y tipos de dato, as como una
Jul indicacin de si una columna debe contener datos.
En la sintaxis:
tablename Nombre de cualquier tabla existente, vista o sinnimo al que puede acceder
el usuario.
Para describir la tabla DEPARTMENTS, utilice este comando:
SQL> DESCRIBE DEPARTMENTS
Name Null? Type
----------------------- -------- ---------------

DEPARTMENT_ID NOT NULL NUMBER(4)


DEPARTMENT_NAME NOT NULL VARCHAR2(30)
MANAGER_ID NUMBER(6)
LOCATION_ID NUMBER(4)

Oracle Database: Conceptos Fundamentales de SQL I D-7


Visualizacin de la Estructura de la Tabla
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

DESCRIBE departments

Name Null? Type nse


----------------------- -------- ------------ li c e
DEPARTMENT_ID NOT NULL NUMBER(4) b le
DEPARTMENT_NAME NOT NULL VARCHAR2(30) fer a
an s
MANAGER_ID NUMBER(6)
n - t r
LOCATION_ID NUMBER(4)
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Visualizacin de la Estructura de Tabla (continuacin)
o
ord
En el ejemplo de la diapositiva se muestra la informacin sobre la estructura de la tabla
C
io DEPARTMENTS. En el resultado:
Jul Null?: especifica si una columna debe contener datos (NOT NULL indica que una columna debe
contener datos).
Type: muestra el tipo de dato de una columna.

Oracle Database: Conceptos Fundamentales de SQL I D-8


Comandos de Edicin SQL*Plus


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

A[PPEND] text
C[HANGE] / old / new
C[HANGE] / text /
CL[EAR] BUFF[ER]
DEL
nse
DEL n e
li c
DEL m n b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Comandos de Edicin SQL*Plus
o
ord
Los comandos SQL*Plus se introducen en una lnea al mismo tiempo y no se almacenan en el buffer
C
io SQL.
Jul Comando Descripcin
A[PPEND] text Agrega texto al final de la lnea actual.
C[HANGE] / old / new Cambia el texto antiguo por el nuevo en la lnea
actual.
C[HANGE] / text / Suprime el texto de la lnea actual.
CL[EAR] BUFF[ER] Suprime todas las lneas del buffer SQL.
DEL Suprime la lnea actual.
DEL n Suprime la lnea n.
DEL m n Suprime de las lneas m hasta la n, inclusive.
Instrucciones
Si pulsa Intro antes de que haya terminado la ejecucin de un comando, SQL*Plus le solicitar
un nmero de lnea.
Termine el buffer SQL introduciendo uno de los caracteres de terminacin (punto y coma o
barra) o pulsando [Intro] dos veces. Aparecer la peticin de datos SQL.

Oracle Database: Conceptos Fundamentales de SQL I D-9


Comandos de Edicin SQL*Plus


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

I[NPUT]
I[NPUT] text
L[IST]
L[IST] n
L[IST] m n
nse
R[UN] e
li c
n b le
fer a
n text
an s
0 text n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Comandos de Edicin SQL*Plus (continuacin)
o
C ord
Comando Descripcin
io
Jul I[NPUT]
I[NPUT] text
Inserta un nmero indefinido de lneas.
Inserta una lnea que consta de texto.
L[IST] Muestra todas las lneas en el buffer SQL.
L[IST] n Muestra una lnea (especificada por n).
L[IST] m n Muestra un rango de lneas (m a n), inclusive.
R[UN] Muestra y ejecuta la sentencia SQL actual en el buffer.
n Especifica la lnea para crear la lnea actual.
n text Sustituye la lnea n con texto.
0 text Inserta una lnea delante de la lnea 1.
Nota: puede introducir slo un comando SQL*Plus para cada peticin de datos SQL. Los comandos
SQL*Plus no se almacenan en el buffer. Para que un comando SQL*Plus contine en la siguiente
lnea, finalice la primera lnea con un guin (-).

Oracle Database: Conceptos Fundamentales de SQL I D-10


Uso de LIST, n y APPEND
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

LIST
1 SELECT last_name
2* FROM employees

1
1* SELECT last_name
nse
li c e
b le
fer a
A , job_id
ans
1* SELECT last_name, job_id
n - t r
a no
LIST ) has ide
1 SELECT last_name, job_id
l c om t Gu
2* FROM employees
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o
l i o
a (yjuAPPENDto
Uso de LIST,
d o b n
r
o Utilice el comando L[IST] para mostrar el contenido del buffer SQL. El asterisco (*) situado
io C junto a la lnea 2 en el buffer indica que la lnea 2 es la lnea actual. Cualquier edicin que
Jul realice se aplica a la lnea actual.
Introduzca el nmero (n) de la lnea que desea editar para cambiar el nmero de la lnea actual.
Se muestra la nueva lnea actual.
Utilice el comando A[PPEND] para agregar texto a la lnea actual. Se muestra la lnea recin
editada. Verifique el nuevo contenido del buffer mediante el comando LIST.
Nota: muchos de los comandos SQL*Plus, incluidos LIST y APPEND, se pueden abreviar slo con
su primera letra. LIST se puede abreviar con L; APPEND se puede abreviar con A.

Oracle Database: Conceptos Fundamentales de SQL I D-11


Uso del Comando CHANGE
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

LIST
1* SELECT * from employees

c/employees/departments nse
1* SELECT * from departments li c e
b le
fer a
an s
n - t r
LIST a no
1* SELECT * from departments
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Uso del Comando CHANGE
o
ord
Utilice L[IST] para mostrar el contenido del buffer.
C
io Utilice el comando C[HANGE] para modificar el contenido de la lnea actual del buffer SQL.
Jul En este caso, sustituya la tabla employees por la tabla departments. Se muestra la nueva
lnea actual.
Utilice el comando L[IST] para verificar el nuevo contenido del buffer.

Oracle Database: Conceptos Fundamentales de SQL I D-12


Comandos de Archivos SQL*Plus


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SAVE filename
GET filename
START filename
@ filename
EDIT filename
nse
SPOOL filename e
li c
EXIT b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Comandos de Archivos SQL*Plus
o
ord
Las sentencias SQL se comunican con el servidor de Oracle. Los comandos SQL*Plus controlan el
C
io entorno, formatean los resultados de la consulta y gestionan archivos. Puede utilizar los comandos
Jul descritos en la siguiente tabla:
Comando Descripcin
SAV[E] filename [.ext] Guarda el contenido actual del buffer SQL en un archivo.
[REP[LACE]APP[END]] Utilice APPEND para agregar a un archivo existente; utilice
REPLACE para sobrescribir un archivo existente. La extensin
por defecto es .sql.
GET filename [.ext] Escribe el contenido de un archivo guardado anteriormente en
el buffer SQL. La extensin por defecto del nombre de archivo
es .sql.
STA[RT] filename [.ext] Ejecuta el archivo de comandos guardado anteriormente.
@ filename Ejecuta un archivo de comandos guardado anteriormente (igual
que START).
ED[IT] Llama al editor y guarda el contenido del buffer en un archivo
denominado afiedt.buf.
ED[IT] [filename[.ext]] Llama al editor para editar el contenido de un archivo guardado.
SPO[OL] [filename[.ext]| Almacena los resultados de la consulta en un archivo. OFF
OFF|OUT] cierra el archivo de spool. OUT cierra el archivo de spool y
enva los resultados del archivo a la impresora.
EXIT Sale de SQL*Plus.

Oracle Database: Conceptos Fundamentales de SQL I D-13


Uso de los Comandos SAVE, START
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

LIST
1 SELECT last_name, manager_id, department_id
2* FROM employees

SAVE my_query
Created file my_query
nse
li c e
START my_query b le
fer a
LAST_NAME MANAGER_ID DEPARTMENT_ID an s
------------------------- ---------- ------------- n - t r
King 90 a no
Kochhar 100 90
) has ide
...
l c om t Gu
107 rows selected.
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Uso de los Comandos SAVE, START y EDIT
o
C ord
SAVE
l i o Utilice el comando SAVE para almacenar el contenido actual del buffer en un archivo. De esta forma,
Ju podr almacenar los scripts utilizados con frecuencia para utilizarlos en el futuro.
START
Utilice el comando START para ejecutar un script en SQL*Plus. Adems, tambin puede utilizar el
smbolo @ para ejecutar un script.
@my_query

Oracle Database: Conceptos Fundamentales de SQL I D-14


Comando SERVEROUTPUT

Utilizar el comando SET SERVEROUT[PUT] para controlar


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

si se debe mostrar la salida de los procedimientos


almacenados o bloques PL/SQL en SQL*Plus.
El lmite de longitud de la lnea DBMS_OUTPUT ha
aumentado de 255 a 32767 bytes.
El tamao por defecto es ahora ilimitado.
nse
Los recursos no se asignan previamente si se define li c e
SERVEROUTPUT. a b le
s f er
Ya que no afecta al rendimiento, utilice UNLIMITED
- t r an a
on
menos que desee conservar la memorianfsica.
s a
a
h ide
SET SERVEROUT[PUT] {ON | OFF} [SIZE ){n | UNL[IMITED]}]
[FOR[MAT] {WRA[PPED] | WOR[D_WRAPPED]
l c om t Gu| TRU[NCATED]}]
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o
l i o
a (ju to
r d ob
Comando SERVEROUTPUT
La o
mayora de los programas PL/SQL realizan entradas y salidas mediante sentencias SQL para
C
io almacenar datos en las tablas de las bases de datos o consultar dichas tablas. Las dems
Jul entradas/salidas PL/SQL se realizan a travs de API, que interactan con otros programas. Por
ejemplo, el paquete DBMS_OUTPUT tiene procedimientos, como PUT_LINE. Para ver el resultado
fuera de PL/SQL, se necesita otro programa como SQL*Plus, para leer y visualizar los datos
transferidos a DBMS_OUTPUT.
SQL*Plus no muestra los datos de DBMS_OUTPUT a menos que antes emita el comando SQL*Plus
SET SERVEROUTPUT ON siguiente:
SET SERVEROUTPUT ON
Nota
SIZE define el nmero de bytes de la salida que se pueden almacenar en buffer en el servidor
de Oracle Database. El valor por defecto es UNLIMITED. n no puede ser menor que 2.000 o
mayor que 1.000.000.
Para obtener ms informacin sobre SERVEROUTPUT, consulte Oracle Database PL/SQL
User's Guide and Reference 11g (Gua del Usuario y Referencia de PL/SQL de Oracle
Database 11g).

Oracle Database: Conceptos Fundamentales de SQL I D-15


Uso del Comando SQL*Plus SPOOL
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SPO[OL] [file_name[.ext] [CRE[ATE] | REP[LACE] |


APP[END]] | OFF | OUT]

Opcin Descripcin

file_name[.ext] Enva la salida al nombre de archivo especificado.

CRE[ATE] Crea un nuevo archivo con el nombre especificado.


nse
li c e
REP[LACE] Sustituye el contenido de un archivo existente. Si el
b l e
archivo no existe, REPLACE crea el archivo.
fer a
an s
APP[END]
especificado. n - t r
Agrega el contenido del buffer al final del archivo

a no
OFF
has ide
Para el envo de resultados.
)
OUT Para el envo c omde datos G yuenva el archivo a la
l
ai estndar
impresora
t
en (por defecto) de la computadora.
o t m t u d
h s S
t 0 4@
Copyright
e t hy/oi sus filiales. Todos los derechos reservados.
2010, Oracle

u l i oc o us
a (j SQL*Plus t
o b
Uso del Comando SPOOL
ord SPOOL almacena los resultados de la consulta en un archivo o enva el archivo a una
El comando
C
io impresora. Se ha mejorado el comando SPOOL. Ahora puede adjuntar a (o sustituir) un archivo
Jul existente, cuando antes slo poda utilizar SPOOL para crear (y sustituir) un archivo. REPLACE es el
valor por defecto.
Para enviar la salida generada por los comandos en un script sin mostrar la salida en la pantalla,
utilice SET TERMOUT OFF. SET TERMOUT OFF no afecta a la salida de los comandos que se
ejecutan interactivamente.
Debe utilizar comillas con los nombres de archivo que contengan espacios en blanco. Para crear un
archivo HTML vlido mediante los comandos SPOOL APPEND, debe utilizar PROMPT o un
comando para crear la cabecera y el pie de pgina de la pgina HTML. El comando SPOOL
APPEND no analiza las etiquetas HTML. SET SQLPLUSCOMPAT[IBILITY] en 9.2 o anterior
para desactivar los parmetros CREATE, APPEND y SAVE.

Oracle Database: Conceptos Fundamentales de SQL I D-16


Uso del Comando AUTOTRACE
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Muestra un informe despus de la ejecucin correcta de


sentencias DML de SQL, como SELECT, INSERT, UPDATE
o DELETE.
El informe puede incluir ahora estadsticas de ejecucin y
la ruta de acceso de ejecucin de la consulta.
nse
SET AUTOT[RACE] {ON | OFF | TRACE[ONLY]} [EXP[LAIN]] li c e
b le
[STAT[ISTICS]]
fer a
an s
n - t r
SET AUTOTRACE ON
-- The AUTOTRACE report includes both the optimizer a no
-- execution path and the SQL statement execution ) has ide
-- statistics
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Uso del Comando AUTOTRACE
o
ord
EXPLAIN muestra la ruta de acceso de ejecucin de consulta mediante la ejecucin de EXPLAIN
C
io PLAN. STATISTICS muestra estadsticas de sentencias SQL. El formato del informe AUTOTRACE
Jul puede variar en funcin de la versin del servidor al que est conectado y la configuracin del
servidor. El paquete DBMS_XPLAN proporciona una forma fcil de mostrar la salida del comando
EXPLAIN PLAN en varios formatos predefinidos.
Nota
Para obtener ms informacin sobre el paquete y los subprogramas, consulte Oracle Database
PL/SQL Packages and Types Reference 11g (Referencia sobre Paquetes y Tipos PL/SQL de
Oracle Database 11g).
Para obtener ms informacin sobre EXPLAIN PLAN, consulte Oracle Database SQL
Reference 11g (Referencia sobre SQL de Oracle Database 11g).
Para obtener ms informacin sobre las estadsticas de planes de ejecucin, consulte
Oracle Database Performance Tuning Guide 11g (Gua de Ajuste del Rendimiento de
Oracle Database 11g).

Oracle Database: Conceptos Fundamentales de SQL I D-17


Resumen
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

En este apndice, debe haber aprendido cmo utilizar


SQL*Plus como un entorno para realizar las siguientes
acciones:
Ejecutar sentencias SQL
Editar sentencias SQL
Formatear la salida nse
li c e
Interactuar con scripts le
a b
s fer
- t r an
no n
a
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
Resumen
ob
ord
SQL*Plus es un entorno de ejecucin que puede utilizar para enviar comandos SQL al servidor de la
C
io base datos para editar y guardar los comandos SQL. Puede ejecutar los comandos desde la peticin
Jul de datos SQL o desde un archivo de script.

Oracle Database: Conceptos Fundamentales de SQL I D-18


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Uso de JDeveloper

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
ob
C ord
io
Jul
Objetivos
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Al finalizar este apndice, debera estar capacitado para lo


siguiente:
Mostrar las funciones clave de Oracle JDeveloper
Crear una conexin a base de datos en JDeveloper
Gestionar objetos de base de datos en JDeveloper
Utilizar JDeveloper para ejecutar comandos SQL nse
li c e
Crear y ejecutar unidades de programa PL/SQL b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
Objetivos
r d ob
EnC o apndice, se presentar JDeveloper. Aprender cmo utilizar JDeveloper para las tareas de
este
io
Jul desarrollo de la base de datos.

Oracle Database: Conceptos Fundamentales de SQL I E-2


Oracle JDeveloper
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Oracle JDeveloper
o
ord
Oracle JDeveloper es un entorno de desarrollo de integracin (IDE) para desarrollar y desplegar
C
io aplicaciones Java y servicios web. Soporta cada etapa del ciclo de vida de desarrollo de software
Jul (SDLC), del modelado al despliegue. Tiene funciones que permiten utilizar los ltimos estndares de
la industria para Java, XML y SQL y desarrollar una aplicacin.
Oracle JDeveloper 11g inicia un nuevo enfoque al desarrollo J2EE con funciones que permiten un
desarrollo visual y declarativo. Este enfoque innovador hace que el desarrollo J2EE sea sencillo y
eficaz.

Oracle Database: Conceptos Fundamentales de SQL I E-3


Database Navigator
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Database Navigator
o
ord
Con Oracle JDeveloper, puede almacenar la informacin necesaria para conectarse a la base de datos
C
io en un objeto denominado conexin. Una conexin se almacena como parte de los valores de IDE y
Jul se puede exportar e importar para compartirla fcilmente entre grupos de usuarios. Una conexin
tiene diferentes fines, desde el examen de la base de datos y la creacin de aplicaciones hasta el
despliegue.

Oracle Database: Conceptos Fundamentales de SQL I E-4


Creacin de Conexin
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Haga clic en el icono


1 New Connection en
Database Navigator.

2 En la ventana Create Database nse


Connection, introduzca el li c e
usuario, la contrasea y el SID.
b le
fer a
an s
n - t r
3 Haga clic en Test Connection.
no
a
) has ide
l c om t Gu
t m ai 4 deHaga n clic en OK.
h o S t u
4@ t s
hy/oi sus filiales. Todos los derechos reservados.
t 0
Copyright
e
2010, Oracle

u l i oc o us
b a (j
Creacin de Conexin
o
t
ord
Una conexin es un objeto que especifica la informacin necesaria para conectarse a una base de
C
io datos concreta como usuario especfico de dicha base de datos. Puede crear y probar conexiones para
Jul varias bases de datos y esquemas.
Para crear una conexin a la base de datos, realice los siguientes pasos:
1. Haga clic en el icono New Connection en Database Navigator.
2. En la ventana Create Database Connection, introduzca el nombre de la conexin. Introduzca el
nombre de usuario y la contrasea del esquema al que desea conectarse. Introduzca el SID de la
base de datos a la que desea conectarse.
3. Haga clic en Test para asegurarse de que la conexin se ha definido correctamente.
4. Haga clic en OK.

Oracle Database: Conceptos Fundamentales de SQL I E-5


Examen de Objetos de Bases de Datos
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Utilizar el navegador de la base de datos para:


Examinar los objetos de un esquema de base de datos
Revisar las definiciones de objetos de forma rpida

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Examen de Objetos de Bases de Datos
o
ord
Una vez creada la conexin a la base de datos, puede utilizar el navegador de la base de datos para
C
io examinar los objetos de un esquema de base de datos entre los que se incluyen tablas, vistas, ndices,
Jul paquetes, procedimientos, disparadores y tipos.
Puede ver la definicin de los objetos desglosados en separadores de informacin que se transfieren
al diccionario de datos. Por ejemplo, si selecciona una tabla en el navegador, se muestran los detalles
sobre las columnas, restricciones, permisos, estadsticas, disparadores, etc., en un navegador de la
base de datos fcil de leer.

Oracle Database: Conceptos Fundamentales de SQL I E-6


Ejecucin de Sentencias SQL
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

2
nse
li c e
b le
fer a
an s
3 n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Ejecucin de Sentencias SQL
o
ord
Para ejecutar una sentencia SQL, realice los siguientes pasos:
C
io
Jul
1. Haga clic en el icono Open SQL Worksheet.
2. Seleccione la conexin.
3. Ejecute el comando SQL haciendo clic en:
1. El botn Execute statement o pulsando F9. La salida es la siguiente:

2. El botn Run Script o pulsando F5. La salida es la siguiente:

Oracle Database: Conceptos Fundamentales de SQL I E-7


Creacin de Unidades de Programa
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

2
nse
li c e
b le
fer a
1
an s
n - t r
a no
) has ide
l c om t Gu 3

t m ai den Esqueleto de la Funcin


h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Creacin de Unidades de Programa
o
ord
Para crear una unidad de programa PL/SQL, realice los siguientes pasos:
C
io 1. Seleccione View > Database Navigator. Seleccione y ample una conexin de base de datos.
Jul Haga clic con el botn derecho del mouse en una carpeta que corresponda al tipo de objeto
(Procedures, Packages, Functions). Seleccione New [Procedures|Packages|Functions].
2. Introduzca un nombre vlido para la funcin, el paquete o el procedimiento y haga clic en OK.
3. Se crea una estructura bsica que se abre en la ventana Code Editor. A continuacin, puede
editar el subprograma para que se ajuste a sus necesidades.

Oracle Database: Conceptos Fundamentales de SQL I E-8


Compilacin
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Compilacin con Errores nse


li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
Compilacin
t m ai sindeErrores n
h o S t u
4@ t s
hy/oi sus filiales. Todos los derechos reservados.
t 0
Copyright
e
2010, Oracle

u l i oc o us
Compilacin
o b a (j t
ord
Despus de editar la definicin de esqueleto, debe compilar la unidad de programa. Haga clic con el
C
io botn derecho del mouse en el objeto PL/SQL que necesita compilar en Connection Navigator y, a
Jul continuacin, seleccione Compile. Tambin puede pulsar [Ctrl] + [Shift] + [F9] para compilar.

Oracle Database: Conceptos Fundamentales de SQL I E-9


Ejecucin de una Unidad de Programa
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Ejecucin de una Unidad de Programa
o
ord
Para ejecutar la unidad de programa, haga clic con el botn derecho del mouse en el objeto y haga
C
io clic en Run. Aparece el cuadro de dilogo Run PL/SQL. Puede que tenga que cambiar los valores
Jul NULL por valores razonables que se transfieren a la unidad de programa. Despus de cambiar los
valores, haga clic en OK. La salida se mostrar en la ventana Message-Log.

Oracle Database: Conceptos Fundamentales de SQL I E-10


Borrado de una Unidad de Programa
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
an s
1
n - t r
a no
) has ide 2

l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Borrado de una Unidad de Programa
o
ord
Para borrar una unidad de programa, haga clic con el botn derecho del mouse en el objeto y
C
io seleccione Drop. Aparece el cuadro de dilogo Drop Confirmation; haga clic en Apply. El objeto se
Jul borra de la base de datos.

Oracle Database: Conceptos Fundamentales de SQL I E-11


Ventana Structure
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Ventana Structure
o
ord
La ventana Structure ofrece una vista estructural de los datos del documento seleccionados
C
io actualmente en la ventana activa de las ventanas que proporcionan estructura: navegadores, editores,
Jul visores y el inspector de propiedades.
Haga clic en la ventana View > Structure para ver la ventana Structure.
En la ventana Structure, puede ver los datos del documento de distintas formas. Las estructuras
disponibles estn basadas en el tipo de documento. Para un archivo Java, puede ver la estructura del
cdigo, la estructura de la interfaz de usuario o los datos de modelo de interfaz de usuario. Para un
archivo XML, puede ver la estructura XML, la estructura del diseo o los datos de modelo de
interfaz de usuario.
La ventana Structure es dinmica y realiza siempre un seguimiento de la seleccin actual de la
ventana activa (a menos que congele el contenido de la ventana en una vista concreta), ya que est
relacionada con el editor que est actualmente activo. Cuando la seleccin actual es un nodo del
navegador, se asume el editor por defecto. Para cambiar la vista en la estructura de la seleccin
actual, haga clic en un separador de estructura distinto.

Oracle Database: Conceptos Fundamentales de SQL I E-12


Ventana del Editor
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Ventana del Editor
o
ord
Al hacer doble clic en el nombre de una unidad de programa, se abre en la ventana del editor. Puede
C
io ver todos los archivos de proyectos en una nica ventana del editor, abrir varias vistas del mismo
Jul archivo o abrir varias vistas de diferentes archivos.
Los separadores situados en la parte superior de la ventana del editor son los separadores del
documento. Al hacer clic en un separador del documento, dicho documento se enfoca y se coloca en
primer plano en la ventana del editor actual.
Los separadores situados en la parte inferior de la ventana del editor para un archivo concreto son los
separadores del editor. Al seleccionar un separador del editor, el archivo se abre en ese editor.

Oracle Database: Conceptos Fundamentales de SQL I E-13


Navegador de Aplicaciones
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Navegador de Aplicaciones
o
ord
El navegador de aplicaciones proporciona una vista lgica de la aplicacin y de los datos que
C
io contiene. Adems proporciona una infraestructura a la que las distintas extensiones pueden
Jul conectarse y utilizar para organizar los datos y mens de forma abstracta y consistente. Aunque el
navegador de aplicaciones puede contener archivos individuales (como archivos de origen Java), est
diseado para consolidar datos complejos. Los tipos de dato complejos, como los objetos de
entidades, diagramas UML, EJB o servicios web aparecen en el navegador como nodos nicos. Los
archivos raw que componen estos nodos abstractos aparecen en la ventana Structure.

Oracle Database: Conceptos Fundamentales de SQL I E-14


Despliegue de Procedimientos Java Almacenados
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Antes de desplegar procedimientos Java almacenados, realice


los siguientes pasos:
1. Cree una conexin a la base de datos.
2. Cree un perfil de despliegue.
3. Despliegue los objetos.
nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
1 2om
c G u 3
i l n t
o t ma tude
@ h is S
t 04 2010,seOraclethy/o sus filiales. Todos los derechos reservados.
Copyright
c
( j ulio to u
b a
Despliegue de Procedimientos Java Almacenados
o
ord
Cree un perfil de despliegue para los procedimientos Java almacenados y, a continuacin, despliegue
C
io las clases y, si lo desea, cualquier mtodo esttico pblico en JDeveloper con los valores del perfil.
Jul El despliegue en la base de datos utiliza la informacin proporcionada en Deployment Profile Wizard
y dos utilidades de Oracle Database:
loadjava carga la clase Java que contiene los procedimientos almacenados en Oracle
Database.
publish genera los envoltorios especficos de llamada PL/SQL para los mtodos estticos
pblicos cargados. La publicacin permite que se llame a los mtodos Java como funciones o
procedimientos PL/SQL.

Oracle Database: Conceptos Fundamentales de SQL I E-15


Publicacin de Java en PL/SQL
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
an s
n - t r
a no
) has i2de
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Publicacin de Java en PL/SQL
o
ord
La diapositiva muestra el cdigo Java y cmo publicar el cdigo Java en un procedimiento PL/SQL.
C
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I E-16


Cmo Puedo Obtener ms Informacin sobre
JDeveloper 11g?
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Tema Direccin web


Pgina del Producto
Oracle JDeveloper http://www.oracle.com/technology/products/jdev/index.html
Tutoriales de Oracle
JDeveloper 11g http://www.oracle.com/technology/obe/obe11jdev/11/index.html
Documentacin de los nse
Productos Oracle http://www.oracle.com/technology/documentation/jdev.html li c e
JDeveloper 11g
b le
Foro de Discusin de
http://forums.oracle.com/forums/forum.jspa?forumID=83 f er a
Oracle JDeveloper 11g
an s
- t r
n on
s a
) a
h ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
o b
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I E-17


Resumen
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

En este apndice, debe haber aprendido a realizar lo siguiente:


Mostrar las funciones clave de Oracle JDeveloper
Crear una conexin a base de datos en JDeveloper
Gestionar objetos de base de datos en JDeveloper
Utilizar JDeveloper para ejecutar comandos SQL
nse
Crear y ejecutar unidades de programa PL/SQL c e
le li
a b
s fer
- t r an
no n
a
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
ob
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I E-18


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Sintaxis de Unin en Oracle

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
ob
C ord
io
Jul
Objetivos
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Al finalizar este apndice, debera estar capacitado para lo


siguiente:
Escribir sentencias SELECT para acceder a datos de ms
de una tabla mediante uniones igualitarias y no igualitarias
Unir una tabla consigo misma mediante autounin
Ver datos que normalmente no cumplen una condicin de nse
unin mediante uniones externas li c e
a b le
Generar un producto cartesiano de todas las filas defeuna r o
s
ms tablas tran
n on-
s a
) a
h ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o
l i o
a (ju to
Objetivos
d o b
o r
Esta leccin explica cmo obtener datos de ms de una tabla. Una unin se utiliza para ver
io C
informacin de varias tablas. Por lo tanto, puede unir tablas para ver informacin de ms de una
Jul tabla.
Nota: para obtener ms informacin sobre las uniones, consulte la seccin sobre consultas y
subconsultas SQL: uniones en Oracle Database SQL Language Reference 11g, Release 1 (11.1)
(Referencia sobre Lenguaje SQL de Oracle Database 11g, Versin 1 (11.1)).

Oracle Database: Conceptos Fundamentales de SQL I F-2


Obtencin de Datos de Varias Tablas
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

EMPLOYEES DEPARTMENTS

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide

l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Obtencin de Datos de Varias Tablas
o
ord
A veces, necesita utilizar datos de ms de una tabla. En el ejemplo de la diapositiva, el informe
C
io muestra datos de dos tablas independientes:
Jul La tabla EMPLOYEES contiene los ID de empleado.
Las tablas EMPLOYEES y DEPARTMENTS contienen los ID de departamento.
La tabla DEPARTMENTS contiene los nombres de departamento.
Para producir el informe, necesita enlazar las tablas EMPLOYEES y DEPARTMENTS y acceder a los
datos de ambas.

Oracle Database: Conceptos Fundamentales de SQL I F-3


Productos Cartesianos
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Un producto cartesiano se forma cuando:


Se omite una condicin de unin
Una condicin de unin no es vlida
Todas las filas de la primera tabla se unen a todas las filas
de la segunda tabla
Para evitar un producto cartesiano, incluya siempre una
nse
condicin de unin vlida en una clusula WHERE. li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Productos Cartesianos
o
ord
Cuando una condicin de unin no es vlida o se omite completamente, el resultado es un producto
C
io cartesiano, en el que se muestran todas las combinaciones de filas. Es decir, todas las filas de la
Jul primera tabla se unen a todas las filas de la segunda tabla.
Un producto cartesiano tiende a generar un gran nmero de filas y el resultado es poco til. Por lo
tanto, debe incluir siempre una condicin de unin vlida a menos que tenga necesidades especficas
de combinar todas las filas de todas las tablas.
Sin embargo, los productos cartesianos son tiles para algunas pruebas para las que necesite generar
un gran nmero de filas para simular una cantidad razonable de datos.

Oracle Database: Conceptos Fundamentales de SQL I F-4


Generacin de un Producto Cartesiano
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

EMPLOYEES (20 filas) DEPARTMENTS (8 filas)

nse
li c e
b le
fer a
Producto cartesiano:
an s
20 x 8 = 160 filas n - t r
a no
) has ide

l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Generacin de un Producto Cartesiano
o
ord
Se genera un producto cartesiano si se omite una condicin de unin. En el ejemplo de la diapositiva
C
io se muestra el apellido del empleado y el nombre del departamento de las tablas EMPLOYEES y
Jul DEPARTMENTS, respectivamente. Ya que no se ha especificado ninguna condicin de unin, todas
las filas (20 filas) de la tabla EMPLOYEES se unen con todas las filas (8 filas) de la tabla
DEPARTMENTS, por lo que se generan 160 filas en la salida.
SELECT last_name, department_name dept_name
FROM employees, departments;

Oracle Database: Conceptos Fundamentales de SQL I F-5


Tipos de Uniones Propiedad de Oracle
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Unin igualitaria
Unin no igualitaria
Unin externa
Autounin

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Tipos de Uniones
o
ord
Para unir tablas, puede utilizar la sintaxis de unin de Oracle.
C
io
Jul Nota: antes de la versin de Oracle9i , la sintaxis de unin era propietaria. La sintaxis de unin
compatible con SQL:1999 no ofrece ninguna ventaja en el rendimiento respecto a la sintaxis de
unin propietaria de Oracle.
Oracle no tiene una sintaxis equivalente para soportar FULL OUTER JOIN de la sintaxis de unin
compatible con SQL:1999.

Oracle Database: Conceptos Fundamentales de SQL I F-6


Unin de Tablas mediante la Sintaxis de Oracle
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Utilizar una unin para consultar datos de ms de una tabla:

SELECT table1.column, table2.column


FROM table1, table2
WHERE table1.column1 = table2.column2;

nse
Escribir la condicin de unin en la clusula WHERE. c e
le li
Incluya el nombre de tabla como prefijo en el nombre de a b
columna cuando aparezca el mismo nombre de columna s f er
en ms de una tabla. - t r an
n no
a
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Unin de Tablas mediante la Sintaxis de Oracle
o
ord
Cuando se necesitan datos de ms de una tabla en la base de datos, se utiliza una condicin de unin.
C
io Las filas de una tabla se pueden unir a las de otra de acuerdo con los valores comunes que existen en
Jul columnas correspondientes (es decir, stas suelen ser columnas de clave primaria y de clave ajena).
Para visualizar datos de dos o ms tablas relacionadas, escriba una condicin de unin simple en la
clusula WHERE.
En la sintaxis:
table1.column Indica la tabla y la columna desde las que se recuperan los datos
table1.column1 = Es la condicin que une (o relaciona) las tablas
table2.column2
Instrucciones
Cuando escriba una sentencia SELECT para unir tablas, anteponga el nombre de la tabla al de
columna para mejorar la claridad y el acceso a la base de datos.
Si aparece el mismo nombre de columna en ms de una tabla, el nombre de columna debe tener
como prefijo el nombre de tabla.
Para unir n tablas, necesita un mnimo de n-1 condiciones de unin. Por ejemplo, para unir
cuatro tablas, es necesario un mnimo de tres uniones. Esta regla puede que no se aplique si la
tabla tiene una clave primaria concatenada, en cuyo caso es necesario ms de una columna para
identificar de forma nica cada fila.

Oracle Database: Conceptos Fundamentales de SQL I F-7


Cualificacin de Nombres de Columna Ambiguos
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Utilizar prefijos de tabla para cualificar los nombres de


columna que estn en varias tablas.
Utilizar prefijos de tabla para mejorar el rendimiento.
Utilizar alias de tabla, en lugar de prefijos de nombre de
tabla completos.
Los alias de tabla proporcionan un nombre ms corto de nse
una tabla. li c e
Mantiene el cdigo SQL ms pequeo, utiliza menos era
ble
memoria n s f
a - tr
Utilizar alias de columna para distinguir columnas no n que
tienen nombres idnticos, pero que a
sresiden en diferentes
) h a e
tablas.
o m u id
a ilc ent G
o t m tud
@ h is S
t 04 2010,seOraclethy/o sus filiales. Todos los derechos reservados.
Copyright
c
( j ulio to u
Cualificacin
o b ade Nombres de Columna Ambiguos
Al o rddos o ms tablas, debe cualificar los nombres de las columnas con el nombre de la tabla para
unir
C
io evitar ambigedad. Sin los prefijos de tabla, la columna DEPARTMENT_ID de la lista SELECT
Jul puede provenir de la tabla DEPARTMENTS o de la tabla EMPLOYEES. Por lo tanto, es necesario
agregar el prefijo de tabla para ejecutar la consulta. Si no existen nombres de columna comunes entre
las dos tablas, no es necesario cualificar las columnas. Sin embargo, el uso del prefijo de tabla mejora
el rendimiento, ya que indica al servidor de Oracle dnde encontrar exactamente las columnas.
La cualificacin de nombres de columna con nombres de tabla puede llevar bastante tiempo,
especialmente si los nombres de tabla son largos. Puede utilizar los alias de tabla, en lugar de los
nombres de tabla. Igual que un alias de columna proporciona otro nombre a una columna, un alias de
tabla proporciona otro nombre a una tabla. Los alias de tabla ayudan a mantener el cdigo SQL ms
pequeo y, por lo tanto, hay menos uso de memoria.
El nombre de tabla se especifica por completo, seguido de un espacio y del alias de tabla. Por
ejemplo, a la tabla EMPLOYEES se le puede proporcionar el alias e y a la tabla DEPARTMENTS el
alias d.
Instrucciones
Los alias de tabla pueden tener hasta 30 caracteres de longitud, pero los alias ms cortos son
mejores que los largos.
Si se utiliza un alias de tabla para un nombre de tabla determinado en la clusula FROM, el alias
de tabla se deber sustituir por el nombre de tabla mediante la sentencia SELECT.
Los alias de tabla deben ser significativos.
El alias de tabla es vlido slo para la sentencia actual SELECT.
Oracle Database: Conceptos Fundamentales de SQL I F-8
Uniones igualitarias

EMPLOYEES DEPARTMENTS
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
Clave primaria - t r
n on
Clave ajena s a
) a
h ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o
l i o
a (ju to
d o b
Uniones igualitarias
o r
Para determinar el nombre de departamento de un empleado, compare el valor de la columna
io C
DEPARTMENT_ID en la tabla EMPLOYEES con los valores de DEPARTMENT_ID de la tabla
Jul DEPARTMENTS. La relacin entre las tablas EMPLOYEES y DEPARTMENTS es una unin
igualitaria; es decir, los valores de la columna DEPARTMENT_ID de ambas tablas deben ser iguales.
A menudo, este tipo de unin implica complementos de clave primaria y ajena.
Nota: las uniones igualitarias tambin se denominan uniones simples o uniones internas.

Oracle Database: Conceptos Fundamentales de SQL I F-9


Recuperacin de Registros con Uniones
Igualitarias
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT e.employee_id, e.last_name, e.department_id,


d.department_id, d.location_id
FROM employees e, departments d
WHERE e.department_id = d.department_id;

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu

t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o
l i o
a ( ju to
r d ob de Registros con Uniones Igualitarias
Recuperacin
En o
el ejemplo de la diapositiva:
C
J ulio La clusula SELECT especifica los nombres de columna que se van a recuperar:
- El apellido de empleado, nmero de empleado y nmero de departamento, que son
columnas de la tabla EMPLOYEES
- El nmero de departamento, nombre de departamento e ID de ubicacin, que son
columnas de la tabla DEPARTMENTS
La clusula FROM especifica las dos tablas a las que la base de datos debe acceder:
- Tabla EMPLOYEES
- Tabla DEPARTMENTS
La clusula WHERE especifica cmo se van a unir las tablas:
e.department_id = d.department_id
Debido a que la columna DEPARTMENT_ID es comn a las dos tablas, debe tener como prefijo el
alias de tabla para evitar la ambigedad. Otras columnas que no estn presentes en las tablas no es
necesario que se cualifiquen segn el alias de tabla, pero es recomendable para obtener un mejor
rendimiento.
Nota: al utilizar el icono Execute Statement para ejecutar la consulta, SQL Developer agrega el
sufijo _1 para diferenciar entre los dos DEPARTMENT_ID.

Oracle Database: Conceptos Fundamentales de SQL I F-10


Recuperacin de Registros con Uniones
Igualitarias: Ejemplo
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT d.department_id, d.department_name,


d.location_id, l.city
FROM departments d, locations l
WHERE d.location_id = l.location_id;

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Recuperacin de Registros con Uniones Igualitarias: Ejemplo
o
ord
En el ejemplo de la diapositiva, la tabla LOCATIONS est unida a la tabla DEPARTMENTS mediante
C
io la columna LOCATION_ID, que es la nica con el mismo nombre en ambas. Los alias de tabla se
Jul utilizar para cualificar las columnas y evitar ambigedades.

Oracle Database: Conceptos Fundamentales de SQL I F-11


Condiciones de Bsqueda Adicionales
Mediante el Operador AND
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT d.department_id, d.department_name, l.city


FROM departments d, locations l
WHERE d.location_id = l.location_id
AND d.department_id IN (20, 50);

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Condiciones de Bsqueda Adicionales mediante el Operador AND
o
ord
Adems de la unin, puede tener diferentes criterios para la clusula WHERE para restringir las filas
C
io bajo consideracin para una o ms tablas en la unin. El siguiente ejemplo de la diapositiva limita las
Jul filas de salida a las que tienen un ID de departamento igual a 20 o a 50:
Por ejemplo, para mostrar el nmero y nombre de departamento del empleado Matos, necesita una
condicin adicional en la clusula WHERE.
SELECT e.last_name, e.department_id,
d.department_name
FROM employees e, departments d
WHERE e.department_id = d.department_id
AND last_name = 'Matos';

Oracle Database: Conceptos Fundamentales de SQL I F-12


Unin de Ms de Dos Tablas
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

EMPLOYEES DEPARTMENTS LOCATIONS

nse
li c e
b l e
fer a
ans
n - t r
a no
Para unir n tablas, necesita
) hasun imnimo
d e de n1
condiciones de unin. om PortdeG
cmnimo u para unir tres tablas
ejemplo,
se necesitan iun
a l e n dos uniones.
otm Stu d
@ h issus filiales. Todos los derechos reservados.
0 4 t h
l i o ct use
Copyright 2010, Oracle y/o

u to
b a (j
Unin de Ms de Dos Tablas
o
ord
Puede que a veces necesite unir ms de dos tablas. Por ejemplo, para mostrar el apellido, el nombre
C
io de departamento y la ciudad de cada empleado, tiene que unir las tablas EMPLOYEES,
Jul DEPARTMENTS y LOCATIONS.
SELECT e.last_name, d.department_name, l.city
FROM employees e, departments d, locations l
WHERE e.department_id = d.department_id
AND d.location_id = l.location_id;

Oracle Database: Conceptos Fundamentales de SQL I F-13


Uniones no Igualitarias
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

EMPLOYEES JOB_GRADES

nse
li c e
b le
fer a
JOB_GRADES define el rango de valores an s
de LOWEST_SAL y HIGHEST_SAL de cada n - t r
no
GRADE_LEVEL. Por lo tanto, la columna
a
has ide
GRADE_LEVEL se puede utilizar para
)
l c om t Gu
asignar grados a cada empleado.

t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Uniones no Igualitarias
o
ord
Una unin no igualitaria es una condicin de unin que contiene algn operador diferente del
C
io operador de igualdad.
Jul La relacin entre la tabla EMPLOYEES y JOB_GRADES es un ejemplo de unin no igualitaria. Los
rangos de la columna SALARY en la tabla EMPLOYEES entre los valores en las columnas
LOWEST_SAL y HIGHEST_SAL de la tabla JOB_GRADES. Por lo tanto, se pueden agregar grados
a cada empleado segn el salario. La relacin se obtiene mediante un operador distinto del de
igualdad (=).

Oracle Database: Conceptos Fundamentales de SQL I F-14


Recuperacin de Registros con
Uniones no Igualitarias
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT e.last_name, e.salary, j.grade_level


FROM employees e, job_grades j
WHERE e.salary
BETWEEN j.lowest_sal AND j.highest_sal;

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
c o m Gu
a i l
d e nt
h otm Stu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o
l i o
a ( ju to
r d ob de Registros con Uniones no Igualitarias
Recuperacin
La o
diapositiva del ejemplo crea una unin no igualitaria para evaluar el grado de salario de un
C
J ulio empleado. El salario debe estar entre cualquier par de los rangos de salario bajos y altos.
Es importante tener en cuenta que todos los empleados aparecern slo una vez al ejecutar esta
consulta. No se repite ningn empleado en la lista. Existen dos motivos por los que se produce este
hecho:
Ninguna de las filas de la tabla de grados de cargo contiene grados que se solapen. Es decir, el
valor de salario de un empleado slo puede oscilar entre los valores de salario bajo y alto de
una de las filas de la tabla de grados de salario.
Todos los salarios de los empleados oscilan entre los lmites proporcionados por la tabla de
grados de cargo. Es decir, ningn empleado gana menos que el valor ms bajo de la columna
LOWEST_SAL o ms que el valor ms alto de la columna HIGHEST_SAL.
Nota: se pueden utilizar otras condiciones (como <= y >=), pero BETWEEN es la ms simple.
Recuerde especificar primero el valor bajo y, a continuacin, el alto, al utilizar BETWEEN. El
servidor Oracle convierte la condicin BETWEEN en un par de condiciones AND. Por lo tanto, el uso
de BETWEEN no proporciona ninguna ventaja, se recomienda slo para la simplicidad lgica.
En el ejemplo de la diapositiva se han especificado los alias de tabla por motivos de rendimiento, no
por una posible ambigedad.

Oracle Database: Conceptos Fundamentales de SQL I F-15


Devolucin de Registros sin Coincidencia Directa
con las Uniones Externas
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

DEPARTMENTS EMPLOYEES

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
No
c m ningn
ohay G u empleado en el
l
ai departamento en t 190.
o t m t u d
@ h is S
t 04 2010,seOraclethy/o sus filiales. Todos los derechos reservados.
Copyright
c
( j ulio to u
b a
Devolucin de Registros sin Coincidencia Directa con las Uniones Externas
o
ord
Si una fila no cumple una condicin de unin, la fila no aparece en el resultado de consultas. Por
C
io ejemplo, en la condicin de unin igualitaria de las tablas EMPLOYEES y DEPARTMENTS, el ID de
Jul departamento 190 no aparece porque no hay ningn empleado con ese ID de departamento registrado
en la tabla EMPLOYEES. Igualmente, hay un empleado cuyo DEPARTMENT_ID se ha definido en
NULL, por lo que esta fila tampoco aparecer en los resultados de la consulta de una unin
igualitaria. Para volver al registro de departamento que no tiene ningn empleado o volver al registro
de empleado que no pertenece a ningn departamento, puede utilizar la unin externa.

Oracle Database: Conceptos Fundamentales de SQL I F-16


Uniones Externas: Sintaxis
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Utilice una unin externa para ver las filas que no cumplen
la condicin de unin.
El operador de unin externa es el signo ms (+).

SELECT table1.column, table2.column


FROM table1, table2
WHERE table1.column(+) = table2.column; nse
li c e
b le
SELECT table1.column, table2.column fer a
an s
FROM table1, table2
n - t r
WHERE table1.column = table2.column(+);
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Uniones Externas: Sintaxis
o
ord
Si se utiliza un operador de unin externa en la condicin de unin, se pueden devolver las filas que
C
io faltan. El operador es un signo ms entre parntesis (+) y se coloca en el lado de la unin que
Jul carece de informacin. El operador crea una o ms filas nulas, a las que se pueden unir una o ms
filas de la tabla con informacin.
En la sintaxis:
table1.column = Es la condicin que une (o relaciona) las tablas.
table2.column (+) Es el smbolo de unin externa, que se puede colocar en cualquier lado
de la condicin de la clusula WHERE pero no en ambos lados (coloque
el smbolo de unin externa seguido del nombre de columna en la tabla
sin filas coincidentes).

Oracle Database: Conceptos Fundamentales de SQL I F-17


Uso de Uniones Externas
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT e.last_name, e.department_id, d.department_name


FROM employees e, departments d
WHERE e.department_id(+) = d.department_id ;

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o
l i o
a ( ju to
r d ob Externas
Uso de Uniones
En o
el ejemplo de la diapositiva se muestran los apellidos de los empleados e ID y nombres de
C
J ulio departamento. El departamento Contracting no tiene ningn empleado. El valor vaco no se muestra
en la salida.
Restricciones de Unin Externa
La unin externa slo puede aparecer a un lado de la expresin, el lado al que le falta
informacin. Devuelve aquellas filas, de una tabla, que no tienen coincidencia directa en la otra
tabla.
Una condicin que incluya una unin externa no puede utilizar el operador IN ni se puede
enlazar a otra condicin con el operador OR.
Nota: Oracle no tiene una sintaxis equivalente para soportar FULL OUTER JOIN de la sintaxis de
unin compatible con SQL:1999.

Oracle Database: Conceptos Fundamentales de SQL I F-18


Unin Externa: Otro Ejemplo
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT e.last_name, e.department_id, d.department_name


FROM employees e, departments d
WHERE e.department_id = d.department_id(+) ;

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Unin Externa: Otro Ejemplo
o
ord
La consulta del ejemplo de la diapositiva recupera todas las filas de la tabla EMPLOYEES, incluso si
C
io no hay coincidencia en la tabla DEPARTMENTS.
Jul

Oracle Database: Conceptos Fundamentales de SQL I F-19


Unin de una Tabla consigo Misma
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

EMPLOYEES (WORKER) EMPLOYEES (MANAGER)

nse
li c e
b le
fer a
an s

n - t r
a no
) has ide
MANAGER_ID en la tabla
c om WORKER G u es igual a
EMPLOYEE_ID l
ai endlaetabla t
n MANAGER.
o t m t u
h s S
t 0 4@
Copyright
e t hy/oi sus filiales. Todos los derechos reservados.
2010, Oracle

u l i oc o us
b a (j
Unin de una Tabla consigo Misma
o
t
ord
Puede que a veces necesite unir una tabla consigo misma. Para buscar el nombre de cada gestor del
C
io empleado, necesita unir la tabla EMPLOYEES consigo misma o realizar una autounin. Por ejemplo,
Jul para buscar el nombre del gestor de Lorentz, necesita:
Buscar a Lorentz en la tabla EMPLOYEES buscando en la columna LAST_NAME.
Busque el nmero de gestor de Lorentz consultando la columna MANAGER_ID. El nmero de
gestor de Lorentz es 103.
Busque el nombre del supervisor con un EMPLOYEE_ID de 103 consultando la
columnaLAST_NAME. El nmero de empleado de Hunold es 103, por lo que Hunold en el
gestor de Lorentz.
Durante este proceso, busca dos veces en la tabla. La primera vez, cuando consulta la tabla para
buscar a Lorentz en la columna LAST_NAME y el valor de MANAGER_ID de 103. La segunda vez,
cuando busca en la columna EMPLOYEE_ID para buscar 103 y en la columna LAST_NAME para
buscar a Hunold.

Oracle Database: Conceptos Fundamentales de SQL I F-20


Autounin: Ejemplo
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

SELECT worker.last_name || ' works for '


|| manager.last_name
FROM employees worker, employees manager
WHERE worker.manager_id = manager.employee_id ;

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu

t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o
l i o
a ( ju to
Autounin:bEjemplo
o rdo de la diapositiva une la tabla EMPLOYEES consigo misma. Para simular dos tablas en la
El ejemplo
i o C FROM, existen dos alias, llamados worker y manager, para la misma tabla EMPLOYEES.
clusula
J ul
En este ejemplo, la clusula WHERE contiene la unin que significa donde el nmero de gestor de un
trabajador coincide con el nmero de empleado del gestor .

Oracle Database: Conceptos Fundamentales de SQL I F-21


Resumen
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

En este apndice debe haber aprendido a utilizar uniones para


mostrar los datos de varias tablas utilizando:

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
Resumen
o b
ord
Hay varios modos de unir tablas.
C
io
Jul Tipos de Uniones
Uniones igualitarias
Uniones no igualitarias
Uniones externas
Autouniones
Productos Cartesianos
Un producto cartesiano da como resultado una visualizacin de todas las combinaciones de filas.
Para ello debe omitir la clusula WHERE.
Alias de Tabla
Los alias de tabla aceleran el acceso a la base de datos.
Los alias pueden ayudar a mantener el cdigo SQL ms pequeo utilizando de esta forma
menos memoria.

Oracle Database: Conceptos Fundamentales de SQL I F-22


Prctica F: Visin General
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

En esta prctica se abordan los siguientes temas:


Unin de tablas con una unin igualitaria
Realizacin de uniones externas y autouniones
Adicin de condiciones

nse
li c e
b le
fer a
an s
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
4 @ t h issus filiales. Todos los derechos reservados.
0
ct use
Copyright 2010, Oracle y/o

u l i o
a (j to
b
Prctica F: Visin General
o
ord
Esta prctica est destinada a proporcionarle experiencia prctica en la extraccin de datos desde ms
C
io de una tabla utilizando sintaxis de unin en Oracle.
Jul

Oracle Database: Conceptos Fundamentales de SQL I F-23


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Jul
Cio
ord
o
b
a (j
u l i o
0 4
to
h
ct use
o t m
@ this
l
S
c
tu
)
ai den
om t Gu
a
has ide
n no
- t r an
s
fer a b l
eli c e ns
e
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

Jul
Cio
ord
o
b
a (j
u l i o
0 4
to
h
ct use
o t m
@ this
l
S
c
tu
)
ai den
om t Gu
a
has ide
n no
- t r an
s
fer a b
ndice

elil
c e ns
e
A
alias 1-5, 1-9, 1-17, 1-18, 1-20, 1-21, 1-29, 2-5, 2-6, 2-8,
2-23, 2-24, 2-38, 4-25, 5-14, 5-27, 6-7, 6-14, 6-16, 6-24, 6-36,
8-28, 10-34, 11-8, 11-10, 11-12, C-8, F-8, F-10, F-11, F-15, F-21,
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

F-22
ALL 2-36, 5-6, 7-3, 7-5, 7-9, 7-16, 7-17, 7-19, 7-21, 7-22,
8-3, 8-4, 8-5, 8-6, 8-7, 8-12, 8-16, 8-17, 8-18, 8-21, 8-24,
8-27, 8-29, 8-30
AND 2-3, 2-8, 2-10, 2-15, 2-16, 2-18, 2-19, 2-20, 2-21, 2-22,
2-26, 2-34, 2-38, 6-18, 6-24, 7-11, 7-18, 7-19, 9-44, F-12, F-13,
nse
F-15
li c e
ANY 7-3, 7-5, 7-9, 7-16, 7-17, 7-18, 7-19, 7-21, 7-22, 10-39, b le
fer a
11-20, 11-32, 11-39
an s
atributos i-22, i-23, i-24
n - t r
autounin 6-2, 6-20, 6-21, F-2, F-20 a no
AVG 5-3, 5-5, 5-7, 5-8, 5-12, 5-15, 5-25, 5-28
) has ide
B
l c om t Gu
i 2-20,
a2-19, en2-22, 2-26,
BETWEEN 2-3, 2-8, 2-10, 2-12, 2-18,
o t m t u d
h s S
t 0 4@ e thi
2-34, 2-37, 2-38, 6-24, F-15
C
u l i oc o us
(j 4-10, 4-23,
CASE 3-7,a4-3, t 4-27, 4-32, 4-36, 4-37, 4-38, 4-39,
b
o 4-44, 4-45, 5-6
o rd4-40,
io CCHECK 9-8, 10-3, 10-7, 10-12, 10-16, 10-17, 10-28, 10-29, 10-32, 10-35,
Jul 10-38, 11-8, 11-9, 11-17
clusula 1-5, 1-7, 1-11, 1-20, 1-24, 2-3, 2-4, 2-5, 2-6,
2-7, 2-8, 2-9, 2-11, 2-15, 2-19, 2-22, 2-23, 2-24, 2-25, 2-26,
2-27, 2-28, 2-31, 2-32, 2-34, 2-37, 2-38, 2-39, 3-12, 3-17, 4-38,
4-39, 5-2, 5-9, 5-13, 5-14, 5-15, 5-16, 5-18, 5-19, 5-20, 5-21,
5-22, 5-23, 5-26, 5-27, 5-28, 5-29, 6-6, 6-7, 6-9, 6-10, 6-11,
6-14, 6-15, 6-16, 6-17, 6-18, 6-21, 6-34, 6-36, 7-2, 7-5, 7-13,
7-14, 7-15, 7-23, 7-25, 8-3, 8-5, 8-6, 8-7, 8-12, 8-13, 8-15,
8-17, 8-18, 8-21, 8-24, 8-27, 8-28, 8-29, 8-30, 9-6, 9-7, 9-8,
9-12, 9-15, 9-16, 9-17, 9-22, 9-43, 9-44, 9-47, 10-14, 10-33, 10-39,
11-12, 11-14, 11-15, 11-16, 11-17, 11-25, 11-28, 11-38, F-4, F-7, F-8,
F-10, F-12, F-17, F-21, F-22

Oracle Database: Conceptos Fundamentales de SQL I ndice-2


C
COALESCE 3-7, 4-3, 4-10, 4-23, 4-27, 4-28, 4-33, 4-34, 4-35,
4-36, 4-44, 5-6
comando 1-8, 1-26, 1-27, 2-27, 2-28, 2-29, 2-33, 2-35, 2-36,
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

4-22, 9-8, 9-31, 9-32, 9-43, 10-11, 10-34, 10-37, 11-9, 11-13, 11-39,
C-11, C-22, C-31, D-6, D-7, D-9, D-10, D-11, D-12, D-14, D-15,
D-16, D-17, E-7
condiciones 1-23, 2-3, 2-8, 2-11, 2-12, 2-14, 2-15, 2-16, 2-19,
2-21, 2-22, 2-26, 2-27, 2-34, 2-38, 6-15, 6-18, 6-24, 6-37, 7-5,
7-7, 7-11, 7-22, 9-27, 10-28, 11-15, F-7, F-13, F-15, F-23
nse
consulta i-30, 1-4, 1-8, 1-17, 1-18, 1-24, 2-2, 2-5, 2-23,
li c e
2-25, 2-27, 2-31, 2-33, 3-6, 3-26, 3-33, 4-21, 4-35, 5-15, 6-7, b le
fer a
6-14, 6-16, 6-20, 6-24, 6-28, 6-29, 6-30, 7-4, 7-5, 7-6, 7-11,
an s
-
7-12, 7-13, 7-14, 7-15, 7-17, 7-22, 7-24, 7-25, 7-26, 8-5, 8-6,
n t r
no
8-13, 8-17, 8-19, 8-20, 8-22, 8-25, 8-26, 8-28, 8-29, 8-30, 9-23,
a
has ide
9-33, 9-44, 9-47, 10-28, 10-42, 11-8, 11-29, 11-36, 11-37, 11-38, C-18,
)
l c om t Gu
C-28, D-3, D-5, D-13, D-16, D-17, F-8, F-10, F-15, F-16, F-19,
F-20
t m ai den
h o S
COUNT 5-3, 5-5, 5-9, 5-12, 5-19, 5-25, 5-28
tu
0 4 @ this
CURRENT_DATE 3-24, 9-9
l i o ct use
u to
a (j
CURRVAL 10-10, 10-28, 11-3, 11-22, 11-27, 11-28, 11-29, 11-33, 11-40
D
r d ob
C o i-17
DBMS
io
Jul DECODE 3-7, 4-3, 4-10, 4-23, 4-27, 4-36, 4-37, 4-39, 4-40, 4-41,
4-42, 4-44, 4-45, 5-6
DEFAULT 10-3, 10-7, 10-8, 10-10, 10-11, 10-12, 10-16, 10-19, 10-32,
10-35, 10-38, 11-28
DELETE i-31, 9-3, 9-13, 9-19, 9-21, 9-22, 9-23, 9-24, 9-25, 9-29,
9-35, 9-36, 9-37, 9-39, 9-40, 9-42, 9-46, 9-47, 10-27, 10-31, 11-7,
11-19, 11-28, D-17
DESCRIBE 1-3, 1-10, 1-16, 1-19, 1-25, 1-26, 1-27, 8-9, 8-10,
9-7, 9-8, 10-11, 10-34, 11-9, 11-13, B-4, B-5, B-6, B-7, B-8,
B-9, B-10, C-11, D-7, D-8
DISTINCT 1-3, 1-5, 1-10, 1-16, 1-19, 1-24, 1-25, 1-29, 2-5,
2-38, 5-3, 5-6, 5-10, 5-12, 5-25, 11-14, 11-15, 11-16, 11-28

Oracle Database: Conceptos Fundamentales de SQL I ndice-3


D
DUAL 3-17, 3-18, 3-24, 3-32
E
esquema i-2, i-4, i-34, i-40, 10-2, 10-5, 10-6, 10-9, 10-29,
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

10-41, 11-35, 11-42, C-3, C-5, C-8, C-10, C-13, E-5, E-6
expresin 1-5, 1-11, 1-12, 1-13, 1-15, 1-20, 1-29, 2-3, 2-8,
2-19, 2-22, 2-23, 2-26, 2-34, 3-6, 3-13, 3-17, 3-18, 3-31, 4-5,
4-6, 4-25, 4-29, 4-30, 4-31, 4-32, 4-33, 4-37, 4-38, 4-39, 4-40,
4-44, 5-9, 5-19, 10-10, 10-34, 11-13, 11-28, 11-38, F-18
F nse
fecha i-22, 1-9, 1-11, 1-20, 1-21, 2-7, 2-24, 2-31, 3-2, 3-3, li c e
b le
3-7, 3-8, 3-15, 3-17, 3-18, 3-20, 3-21, 3-22, 3-23, 3-24, 3-25,
fer a
3-26, 3-27, 3-28, 3-29, 3-30, 3-32, 3-33, 4-5, 4-11, 4-14, 4-16, ans
n - t r
4-20, 4-21, 4-22, 4-25, 4-29, 4-43, 4-44, 5-8, 8-8, 9-7, 9-9,
9-10, 10-11, 10-13, 10-15 a no
) has ide
funciones i-2, i-4, i-9, i-10, i-11, i-13, i-16, i-39, 2-5,
l c om t Gu
2-7, 3-2, 3-4, 3-5, 3-6, 3-7, 3-9, 3-10, 3-11, 3-13, 3-16,
t m ai den
h o S tu
3-17, 3-18, 3-24, 3-28, 3-30, 3-31, 3-32, 3-33, 4-2, 4-4, 4-7,

0 4 @ this
4-9, 4-20, 4-24, 4-28, 4-44, 4-45, 5-2, 5-3, 5-4, 5-5, 5-6,
o ct use
5-7, 5-8, 5-11, 5-12, 5-13, 5-14, 5-15, 5-19, 5-20, 5-22, 5-25,
l i
u to
a (j
5-26, 5-27, 5-28, 5-29, 7-2, 7-25, 8-25, 9-9, 10-10, 10-18, 10-28,
ob 11-13, C-2, C-6, C-14, C-24, C-26, E-2, E-3, E-15, E-18
o r d11-7,

io Cfuncin 3-4, 3-6, 3-7, 3-12, 3-17, 3-18, 3-19, 3-23, 3-24,
Jul 3-26, 3-29, 3-32, 4-11, 4-17, 4-20, 4-25, 4-26, 4-29, 4-30, 4-31,
4-32, 4-33, 4-34, 4-37, 4-39, 4-40, 4-42, 4-43, 4-44, 4-45, 5-3,
5-6, 5-9, 5-11, 5-12, 5-14, 5-15, 5-16, 5-18, 5-19, 5-22, 5-23,
5-25, 5-27, 7-12, 8-25, 9-9, 9-10, 9-12, 10-10, 10-33, 11-13, C-6,
C-23, C-24, C-25, C-26, D-17, E-8
H
HAVING 5-2, 5-3, 5-12, 5-20, 5-21, 5-22, 5-23, 5-24, 5-25, 5-28,
5-29, 7-3, 7-5, 7-9, 7-13, 7-16, 7-21, 7-25, 11-28
I
icono 1-6, 1-8, 2-36, 6-16, 9-4, 10-10, 10-42, 11-8, C-5, C-15,
C-17, C-19, C-20, C-21, C-22, C-26, E-5, E-7, F-10

Oracle Database: Conceptos Fundamentales de SQL I ndice-4


I
IN 2-3, 2-11, 2-18, 2-19, 2-20, 2-22, 2-26, 2-34, 2-37, 2-38,
4-31, 6-10, 7-5, 7-14, 7-16, 7-17, 7-18, 7-19, 7-22, 7-23, 7-25,
9-22, 9-35, F-12, F-18
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

INSERT i-31, 3-23, 9-3, 9-6, 9-7, 9-8, 9-9, 9-10, 9-11, 9-12,
9-13, 9-19, 9-25, 9-29, 9-30, 9-35, 9-39, 9-40, 9-42, 9-47, 10-8,
10-10, 10-11, 10-19, 10-22, 10-24, 10-25, 11-7, 11-17, 11-28, 11-29, D-17
INTERSECT 8-3, 8-4, 8-5, 8-7, 8-12, 8-18, 8-19, 8-20, 8-21,
8-24, 8-27, 8-30, 8-31
J
nse
Java i-12, C-4, C-8, E-3, E-12, E-14, E-15, E-16 li c e
b le
L
fer a
LENGTH 3-9, 3-10, 3-13, 3-14, 3-32 ans
n - t r
LIKE 2-3, 2-8, 2-12, 2-13, 2-16, 2-17, 2-18, 2-19, 2-20, 2-22,
2-26, 2-34, 2-37, 2-38, 3-30, 5-7, 5-24, 9-12, 9-23a no
) has ide
literal 1-14, 1-21, 1-22, 1-23, 3-13, 4-11, 4-31, 4-32, 4-38,
8-26, 10-10 l c om t Gu
t m ai den
LPAD 3-9, 3-13
h o S tu
M
0 4 @ this
MAX 5-3, 5-5, 5-7,l i o ct 5-12,us5-25,
5-8,
e 5-28
u 5-8, 5-12,
(j5-7, to 5-25, 5-28, 7-12
a
MIN 5-3, 5-5,
ob8-3, 8-4, 8-5, 8-7, 8-12, 8-18, 8-21, 8-22, 8-23, 8-24,
r
MINUS
o d
io C 8-27, 8-30, 8-31
Jul MOD 3-16, 3-19, 3-32
N
NEXTVAL 10-10, 10-28, 11-3, 11-22, 11-27, 11-28, 11-33, 11-40
nomenclatura 10-3, 10-5, 10-7, 10-12, 10-16, 10-18, 10-32, 10-35, 10-38
NOT 1-14, 1-26, 1-27, 2-3, 2-14, 2-15, 2-18, 2-19, 2-20, 2-22,
2-26, 2-34, 2-38, 5-24, 7-19, 7-20, 7-22, 7-23, 9-8, 10-3, 10-7,
10-12, 10-16, 10-17, 10-19, 10-20, 10-21, 10-22, 10-23, 10-26, 10-29, 10-32,
10-33, 10-35, 10-38, 11-16, D-7, D-8

Oracle Database: Conceptos Fundamentales de SQL I ndice-5


N
NULL 1-3, 1-10, 1-14, 1-16, 1-19, 1-20, 1-25, 1-26, 1-27, 2-3,
2-8, 2-14, 2-18, 2-19, 2-20, 2-22, 2-26, 2-34, 2-37, 2-38, 4-32,
4-38, 4-39, 5-3, 5-12, 5-18, 5-25, 7-23, 8-13, 9-8, 9-9, 9-16,
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

9-35, 10-3, 10-7, 10-10, 10-12, 10-16, 10-17, 10-19, 10-20, 10-21, 10-22,
10-23, 10-25, 10-26, 10-27, 10-29, 10-32, 10-33, 10-35, 10-38, 11-16, D-7,
D-8, E-10, F-16
NULLIF 3-7, 4-3, 4-10, 4-23, 4-27, 4-28, 4-32, 4-36, 4-44
NVL2 3-7, 4-3, 4-10, 4-23, 4-27, 4-28, 4-31, 4-36, 4-44, 5-6
NVL 3-7, 4-3, 4-10, 4-23, 4-27, 4-28, 4-29, 4-30, 4-33, 4-36,
nse
4-44, 5-6, 5-11
li c e
b le
O
fer a
OLTP i-11, i-16
ans
ON 2-36, 6-3, 6-5, 6-6, 6-8, 6-15, 6-16, 6-17, 6-18, 6-19, n - t r
a no
6-21, 6-22, 6-24, 6-25, 6-27, 6-28, 6-29, 6-30, 6-31, 9-31, 10-27,
11-13, 11-37, D-15, D-17 ) has ide
c om t Gu
opcin i-24, 2-13, 9-31, 10-10, 10-33, 11-8, 11-9, 11-12, 11-18, 11-25,
l
m ai den
11-26, 11-31, 11-32, C-13, C-19, C-26
t
h o S tu
0 4 @ this
operador 1-3, 1-10, 1-12, 1-16, 1-19, 1-20, 1-23, 1-25, 2-5,

l i o ct use
2-10, 2-11, 2-12, 2-14, 2-18, 4-30, 6-23, 7-3, 7-7, 7-9, 7-10,
u to
o b a (j
7-14, 7-16, 7-17, 7-18, 7-19, 7-20, 7-21, 7-22, 7-25, 8-2, 8-4,
8-5, 8-6, 8-13, 8-14, 8-16, 8-17, 8-19, 8-22, 8-25, 8-26, 8-29,
C ord
8-30, 8-31, F-14, F-17, F-18
io
Jul OR 2-3, 2-11, 2-15, 2-17, 2-19, 2-20, 2-21, 2-22, 2-26, 2-34,
2-38, 11-8, 11-9, 11-10, 11-12, 11-13, 11-17, 11-19, F-18
ORDBMS i-2, i-39
orden i-27, 1-7, 1-13, 2-2, 2-11, 2-20, 2-23, 2-24, 2-25, 2-33,
2-39, 5-15, 5-18, 5-27, 5-28, 8-2, 8-4, 8-5, 8-6, 8-13, 8-15,
8-19, 8-28, 9-7, 9-8, 11-12
ordenacin 2-23, 2-24, 2-25
P
pseudocolumnas 10-28, 11-27, 11-28

Oracle Database: Conceptos Fundamentales de SQL I ndice-6


Q
q 1-23
R
RDBMS i-2, i-18, i-25, i-27, i-39, 9-43
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

REFERENCES 10-26, 10-27, 10-29


REPLACE 3-9, 3-13, 11-8, 11-9, 11-10, 11-12, 11-13, 11-17, 11-19,
D-16
restricciones i-16, i-39, 1-14, 6-10, 9-4, 9-8, 9-24, 10-2,
10-3, 10-7, 10-12, 10-14, 10-16, 10-17, 10-18, 10-19, 10-20, 10-21, 10-22,
10-23, 10-26, 10-28, 10-30, 10-32, 10-33, 10-35, 10-38, 10-40, 10-41, 11-17,
nse
11-39, C-10, E-6 li c e
b le
restriccin 1-26, 2-4, 9-4, 9-8, 9-20, 9-24, 10-17, 10-18, 10-19,
fer a
ans
10-20, 10-21, 10-22, 10-23, 10-24, 10-25, 10-26, 10-27, 10-28, 10-30, 10-31,
n - t r
10-33, 11-8, 11-9, 11-17, 11-19, 11-21, 11-34, 11-36, 11-38, 11-44
ROUND 3-16, 3-17, 3-18, 3-28, 3-30, 3-32, 4-26 a no
RPAD 3-9, 3-13 ) has ide
S l c om t Gu
t m ai 11-23, d en11-24, 11-25, 11-30,
secuencias 2-24, 10-9, 11-2, 11-3,
h o 11-22,
S t u
11-31, 11-33, 11-39, 4@ s
hi 11-45, 11-46
11-40, 11-42,
t
t 0 e
seleccin C-6, E-12
u l i oc o us
a (j t
b
o rdo
io C
Jul

Oracle Database: Conceptos Fundamentales de SQL I ndice-7


S
SELECT i-4, i-5, i-30, i-31, 1-1, 1-2, 1-3, 1-4, 1-5, 1-6,
1-7, 1-9, 1-10, 1-12, 1-13, 1-14, 1-15, 1-16, 1-17, 1-18, 1-19,
1-20, 1-21, 1-22, 1-23, 1-24, 1-25, 1-28, 1-29, 1-30, 2-5, 2-6,
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

2-7, 2-9, 2-10, 2-11, 2-12, 2-13, 2-14, 2-16, 2-17, 2-18, 2-21,
2-23, 2-24, 2-25, 2-28, 2-29, 2-31, 2-32, 2-33, 2-35, 2-36, 2-38,
2-39, 3-2, 3-6, 3-11, 3-12, 3-14, 3-17, 3-18, 3-19, 3-21, 3-24,
3-26, 3-29, 3-30, 4-2, 4-11, 4-16, 4-19, 4-21, 4-22, 4-25, 4-26,
4-30, 4-31, 4-32, 4-34, 4-35, 4-39, 4-41, 4-42, 4-44, 5-6, 5-7,
5-8, 5-9, 5-10, 5-11, 5-14, 5-15, 5-16, 5-17, 5-18, 5-19, 5-20,
nse
5-22, 5-23, 5-24, 5-26, 5-27, 5-28, 6-2, 6-6, 6-7, 6-10, 6-13,
li c e
6-14, 6-16, 6-17, 6-18, 6-21, 6-24, 6-28, 6-29, 6-30, 6-34, 7-2, b le
fer a
7-5, 7-6, 7-8, 7-10, 7-11, 7-12, 7-13, 7-14, 7-15, 7-17, 7-18,
ans
-
7-19, 7-20, 7-22, 7-23, 7-25, 7-26, 8-3, 8-5, 8-6, 8-7, 8-10,
n t r
no
8-11, 8-12, 8-13, 8-14, 8-15, 8-17, 8-18, 8-19, 8-20, 8-21, 8-22,
a
has ide
8-23, 8-24, 8-25, 8-26, 8-27, 8-28, 8-29, 8-30, 9-3, 9-9, 9-12,
)
l c om t Gu
9-13, 9-16, 9-17, 9-18, 9-19, 9-22, 9-23, 9-25, 9-33, 9-37, 9-39,

t m ai den
9-40, 9-41, 9-42, 9-43, 9-44, 9-45, 9-47, 10-9, 10-33, 10-34, 10-37,
h o S tu
10-42, 11-5, 11-8, 11-9, 11-10, 11-11, 11-12, 11-13, 11-17, 11-19, 11-28,
0 4 @ this
l i o ct use
11-29, B-4, B-5, B-6, B-7, B-8, B-9, B-10, C-25, D-2, D-11,
u to
a (j
D-12, D-14, D-17, F-2, F-5, F-7, F-8, F-10, F-11, F-12, F-13,
b
F-15, F-17, F-18, F-19, F-21
o
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I ndice-8


S
sentencia i-4, i-30, 1-2, 1-3, 1-4, 1-5, 1-6, 1-7, 1-8,
1-10, 1-11, 1-12, 1-16, 1-18, 1-19, 1-21, 1-22, 1-25, 1-29, 2-6,
2-10, 2-12, 2-13, 2-14, 2-21, 2-23, 2-27, 2-28, 2-29, 2-30, 2-31,
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

2-32, 2-35, 2-36, 2-38, 3-12, 3-14, 4-2, 4-16, 4-25, 4-37, 4-38,
4-39, 4-40, 4-41, 4-44, 5-9, 5-15, 5-16, 5-17, 5-18, 5-19, 5-20,
5-28, 6-7, 6-14, 6-15, 7-2, 7-5, 7-8, 7-10, 7-11, 7-13, 7-14,
7-15, 7-22, 7-25, 8-4, 8-5, 8-6, 8-20, 8-22, 8-26, 8-28, 8-30,
9-2, 9-3, 9-4, 9-6, 9-8, 9-11, 9-12, 9-13, 9-15, 9-16, 9-17,
9-19, 9-21, 9-22, 9-24, 9-25, 9-26, 9-27, 9-29, 9-30, 9-31, 9-33,
nse
9-34, 9-35, 9-36, 9-37, 9-38, 9-39, 9-40, 9-41, 9-42, 9-43, 9-44,
li c e
9-47, 10-8, 10-10, 10-11, 10-19, 10-29, 10-31, 10-33, 10-36, 10-37, 10-39, b le
fer a
s
10-41, 10-42, 11-5, 11-6, 11-8, 11-10, 11-13, 11-20, 11-25, 11-28, 11-29,
an
- t r
11-30, 11-31, 11-32, 11-37, 11-39, 11-43, C-13, C-16, C-19, C-23, C-25,
n
C-26, C-28, D-3, D-5, E-7, F-7, F-8 a no
has ide
sinnimo i-24, 1-24, 1-26, 7-18, 11-2, 11-42, 11-43, 11-46, D-7
)
l c om t Gu
subconsulta 7-3, 7-4, 7-5, 7-7, 7-9, 7-10, 7-11, 7-12, 7-13,

t m ai den
7-14, 7-15, 7-16, 7-17, 7-18, 7-19, 7-20, 7-21, 7-22, 7-23, 7-24,
h o S tu
7-25, 9-12, 9-15, 9-23, 10-3, 10-7, 10-12, 10-14, 10-33, 10-35, 10-38,
0 4 @ this
l i o ct use
10-41, 11-8, 11-9, 11-10, 11-12, 11-28
u to
a (j
SUBSTR 3-9, 3-10, 3-13, 3-32, 4-25
b
SYSDATE 3-23, 3-24, 3-26, 3-29, 3-30, 3-32, 9-9, 10-10, 10-11,
o
C ord 10-28
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I ndice-9


T
tabla i-19, i-20, i-25, i-27, i-28, i-30, i-34, 1-4, 1-5, 1-6,
1-7, 1-12, 1-14, 1-24, 1-26, 1-27, 1-29, 2-7, 2-9, 2-10, 2-11,
2-12, 2-16, 2-17, 2-18, 2-20, 2-24, 2-25, 2-28, 2-32, 3-12, 3-17,
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

3-22, 3-23, 3-24, 3-32, 4-32, 5-2, 5-4, 5-5, 5-9, 5-10, 5-11,
5-13, 5-14, 5-15, 5-17, 5-18, 6-2, 6-4, 6-6, 6-7, 6-10, 6-12,
6-14, 6-16, 6-20, 6-21, 6-23, 6-24, 6-26, 6-27, 6-28, 6-29, 6-30,
6-32, 6-33, 6-34, 6-36, 6-37, 7-5, 7-20, 8-8, 8-20, 8-23, 8-25,
8-26, 9-2, 9-3, 9-4, 9-5, 9-6, 9-7, 9-9, 9-10, 9-11, 9-12,
9-13, 9-14, 9-15, 9-16, 9-18, 9-19, 9-20, 9-21, 9-22, 9-23, 9-24,
nse
9-25, 9-35, 9-37, 9-39, 9-41, 9-42, 9-43, 9-44, 9-47, 9-48, 10-2,
li c e
10-3, 10-4, 10-5, 10-7, 10-8, 10-9, 10-10, 10-11, 10-12, 10-13, 10-14, b le
fer a
s
10-17, 10-18, 10-19, 10-20, 10-21, 10-22, 10-23, 10-24, 10-25, 10-26, 10-27,
an
- t r
10-28, 10-29, 10-30, 10-31, 10-33, 10-34, 10-35, 10-36, 10-37, 10-38, 10-39,
n
no
10-40, 10-41, 10-42, 11-5, 11-6, 11-7, 11-11, 11-16, 11-26, 11-29, 11-30,
a
has ide
11-35, 11-36, 11-37, 11-38, 11-39, 11-41, 11-42, 11-43, 11-44, C-10, C-11,
)
l c om t Gu
C-13, C-14, C-15, D-4, D-5, D-7, D-8, D-12, D-13, E-6, F-2,

t m ai den
F-3, F-4, F-5, F-7, F-8, F-9, F-10, F-11, F-14, F-15, F-16,
h o S tu
F-17, F-18, F-19, F-20, F-21, F-22, F-23
0 4 @ this
l i o ct use
TO_CHAR 4-2, 4-3, 4-7, 4-8, 4-9, 4-10, 4-11, 4-16, 4-17,
u to
a (j
4-18, 4-19, 4-22, 4-23, 4-26, 4-27, 4-34, 4-36, 4-44, 4-45, 8-25
b
TO_DATE 4-2, 4-3, 4-7, 4-8, 4-9, 4-10, 4-20, 4-21, 4-22,
o
C ord 4-23, 4-27, 4-36, 4-44, 4-45, 9-10
io
Jul TO_NUMBER 4-2, 4-3, 4-7, 4-8, 4-9, 4-10, 4-20, 4-21, 4-23,
4-27, 4-36, 4-43, 4-44
transacciones i-11, 9-2, 9-3, 9-4, 9-13, 9-19, 9-25, 9-26,
9-29, 9-38, 9-39, 9-42, 9-48, 10-39
TRIM 3-9, 3-10, 3-13
TRUNC 3-16, 3-18, 3-28, 3-30, 3-32
U
UNION 8-3, 8-5, 8-6, 8-7, 8-12, 8-13, 8-14, 8-15, 8-16, 8-17,
8-18, 8-21, 8-24, 8-25, 8-26, 8-27, 8-28, 8-29, 8-30, 8-31
UNIQUE 1-24, 10-3, 10-7, 10-12, 10-16, 10-17, 10-22, 10-23, 10-29, 10-32,
10-35, 10-38, 11-36, 11-37, 11-44

Oracle Database: Conceptos Fundamentales de SQL I ndice-10


U
UPDATE i-31, 9-3, 9-13, 9-15, 9-16, 9-17, 9-18, 9-19, 9-25, 9-29,
9-30, 9-35, 9-39, 9-40, 9-41, 9-42, 9-43, 9-44, 9-45, 9-47, 10-30,
10-37, 11-7, 11-17, 11-28, D-17
Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

USING 6-3, 6-5, 6-6, 6-8, 6-11, 6-13, 6-14, 6-17, 6-19, 6-22,
6-25, 6-27, 6-31, 9-44
V
VARIANCE 5-5, 5-8, 5-28
VERIFY 2-3, 2-19, 2-22, 2-26, 2-34, 2-36
vistas 10-9, 10-11, 10-39, 11-2, 11-3, 11-4, 11-5, 11-6, 11-7, 11-14,
nse
11-17, 11-20, 11-21, 11-22, 11-33, 11-39, 11-40, 11-42, 11-45, C-10, E-6, li c e
b le
E-13
fer a
W ans
n - t r
WHERE 2-3, 2-4, 2-5, 2-6, 2-7, 2-8, 2-9, 2-10, 2-11, 2-12,
a no
2-13, 2-14, 2-15, 2-16, 2-17, 2-18, 2-19, 2-21, 2-22, 2-23, 2-26,
) has ide
2-27, 2-28, 2-29, 2-31, 2-32, 2-34, 2-35, 2-36, 2-37, 2-38, 2-39,
l c om t Gu
3-6, 3-12, 3-14, 3-19, 3-21, 3-26, 3-29, 3-30, 4-11, 4-19, 4-21,
t m ai den
h o S tu
4-22, 4-25, 4-31, 4-42, 5-6, 5-7, 5-9, 5-14, 5-15, 5-18, 5-20,

0 4 @ this
5-21, 5-22, 5-24, 5-27, 5-28, 6-10, 6-14, 6-15, 6-18, 6-36, 7-2,
o ct use
7-5, 7-6, 7-10, 7-11, 7-12, 7-13, 7-14, 7-15, 7-17, 7-18, 7-19,
l i
u to
a (j
7-20, 7-22, 7-23, 7-25, 8-5, 9-9, 9-12, 9-15, 9-16, 9-17, 9-18,
ob 9-22, 9-23, 9-35, 9-37, 9-41, 9-43, 9-44, 9-45, 10-30, 10-31,
o r d9-21,

io C 10-34, 11-9, 11-10, 11-12, 11-17, 11-19, 11-38, F-4, F-7, F-10, F-11,
Jul F-12, F-13, F-15, F-17, F-18, F-19, F-21, F-22
X
XML i-9, i-14, i-39, C-7, C-9, C-27, E-3, E-12

Oracle Database: Conceptos Fundamentales de SQL I ndice-11


Unauthorized reproduction or distribution prohibited Copyright 2011, Oracle and/or its affiliates

nse
li c e
b le
fer a
ans
n - t r
a no
) has ide
l c om t Gu
t m ai den
h o S tu
0 4 @ this
l i o ct use
u to
ob a (j
C ord
io
Jul

Oracle Database: Conceptos Fundamentales de SQL I ndice-12

Você também pode gostar