Está en la página 1de 254

Oracle Database: Conceptos

Fundamentales de SQL I

m y
Volumen II • Guía del Alumno
d e
c a
e A
c l
r a
O ly
l & On
D64258CS10

n a e
Edición 1.0
Enero de 2010

t e r U s
D73591

I n
c l e
r a
O
Autores Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

Salome Clement Renuncia


Brian Pottle Este documento contiene información 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 formación de Oracle. Este documento no
podrá ser modificado ni alterado en modo alguno. Salvo que la legislación de
Revisores Técnicos copyright lo considere un uso legítimo, 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 autorización expresa
Clair Bennett por parte de Oracle.
Zarko Cesljas
Yanti Chang La información 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 Restricción de Derechos
Pedro Neves
Manish Pawar Si esta documentación se entrega al Gobierno de los EE. UU. o a cualquier entidad
Surya Rekha que la utilice en nombre del Gobierno de los EE. UU., se aplicará la siguiente
Helen Robertson disposición:
Lauran Serhal
U.S. GOVERNMENT RIGHTS
Hilda Simon The U.S. Government’s rights to use, modify, reproduce, release, perform, display, or
Tulika Srivastava disclose these training materials are restricted by the terms of the applicable Oracle
license agreement and/or the applicable U.S. Government contract.
Redactor
Amitha Narayan
Aviso de Marca Registrada

Oracle es una marca comercial registrada de Oracle Corporation y/o sus filiales.
Todos los demás nombres pueden ser marcas comerciales de sus respectivos
m y
Diseñador Gráfico
Rajiv Chandrabhanu
propietarios.

d e
Publicador
c a
Jobi Varghese

e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Contenido

I Introducción
Objetivos I-2
Agenda I-3
Objetivos del Curso I-4
Agenda I-5
Apéndices Utilizados en el Curso I-7
Agenda I-8
Oracle Database 11g: Áreas de Atención I-9
Oracle Database 11g I-10
Oracle Fusion Middleware I-12
Oracle Enterprise Manager Grid Control I-13
Oracle BI Publisher I-14
Agenda I-15

Almacenamiento de Datos en Diferentes Medios Físicos I-17


m y
Sistema de Gestión de Bases de Datos Relacionales y Relacionales de Objetos I-16

Concepto de Base de Datos Relacional I-18


d e
Definición de una Base de Datos Relacional I-19
Modelos de Datos I-20
c a
Modelo de Relación de Entidades I-21

e
Convenciones de Modelado de Relación de Entidades I-23 A
c
Relación de Varias Tablas I-25 l
Agenda I-29 r a
Terminología de Bases de Datos Relacionales I-27

O ly
Uso de SQL para Consultar Base de Datos I-30
Sentencias SQL I-31

l & On
Entornos de Desarrollo para SQL I-32
Agenda I-33
n a e
t e r U s
Esquema Human Resources(HR) I-34
Tablas Utilizadas en el Curso I-35

I n
Agenda I-36

c l e
Documentación de Oracle Database I-37
Recursos Adicionales I-38

r a Resumen I-39
Práctica I: Visión General I-40

O
iii
1 Recuperación de Datos Mediante la Sentencia SQL SELECT
Objetivos 1-2
Agenda 1-3
Capacidades de las Sentencias SQL SELECT 1-4
Sentencia SELECT Básica 1-5
Selección de Todas las Columnas 1-6
Selección de Columnas Concretas 1-7
Escritura de Sentencias SQL 1-8
Valores por Defecto de Cabeceras de Columna 1-9
Agenda 1-10
Expresiones Aritméticas 1-11
Uso de Operadores Aritméticos 1-12
Prioridad de Operadores 1-13
Definición de Valor Nulo 1-14
Valores Nulos en Expresiones Aritméticas 1-15
Agenda 1-16
Definición de Alias de Columna 1-17
Uso de Alias de Columna 1-18
Agenda 1-19
Operador de Concatenación 1-20
m y
Cadenas de Caracteres Literales 1-21
d e
Uso de Cadenas de Caracteres Literales 1-22
Operador de Comillas (q) Alternativo 1-23
ca
Filas Duplicadas 1-24
Agenda 1-25
e A
c l
Visualización de la Estructura de la Tabla 1-26
Uso del Comando DESCRIBE 1-27
Prueba 1-28 r a
Resumen 1-29
O ly
& On
Práctica 1: Visión General 1-30

l
2
n a e
Restricción y Ordenación de Datos
Objetivos 2-2
Agenda 2-3
t e r U s
I n
Limitación de Filas con una Selección 2-4

l e
Limitación de las Filas Seleccionadas 2-5
Uso de la Cláusula WHERE 2-6
c
r aFechas y Cadenas de Caracteres 2-7
Operadores de Comparación 2-8

O Uso de Operadores de Comparación 2-9

iv
Uso de Condiciones de Rango mediante el Operador BETWEEN 2-10
Condición de Miembro mediante el Operador IN 2-11
Coincidencia de Patrones mediante el Operador LIKE 2-12
Combinación de Caracteres Comodín 2-13
Uso de las Condiciones NULL 2-14
Definición de Condiciones mediante los Operadores Lógicos 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
Agenda 2-22
Uso de la Cláusula ORDER BY 2-23
Ordenación 2-24
Agenda 2-26
Variables de Sustitución 2-27
Uso de la Variable de Sustitución de Un Solo Ampersand 2-29
Valores de Fecha y Carácter con Variables de Sustitución 2-31
Especificación de Nombres de Columna, Expresiones y Texto 2-32
Uso de Variables de Sustitución de Dos Ampersands 2-33
m y
Agenda 2-34
d e
Uso del Comando DEFINE 2-35
Uso del Comando VERIFY 2-36
c a
Prueba 2-37

e A
Resumen 2-38

c
Práctica 2: Visión General 2-39l
r a
3
O ly
Uso de Funciones de Una Sola Fila para Personalizar la Salida
Objetivos 3-2
Agenda 3-3
l & On
Funciones SQL 3-4

n a e
Dos Tipos de Funciones SQL 3-5

e r s
Funciones de Una Sola Fila 3-6
Agenda 3-8
t U
I n
Funciones de Carácter 3-9

c l e
Funciones de Conversión de Caracteres 3-11
Using Case-Conversion Functions 3-12

r a Uso de Funciones de Conversión de Caracteres 3-12


Funciones de Manipulación de Caracteres 3-13
O Uso de las Funciones de Manipulación de Caracteres 3-14

v
Agenda 3-15
Funciones Numéricas 3-16
Uso de la Función ROUND 3-17
Uso de la Función TRUNC 3-18
Uso de la Función MOD 3-19
Agenda 3-20
Trabajo con Fechas 3-21
Formato de Fecha RR 3-22
Uso de la Función SYSDATE 3-24
Operadores Aritméticos con Fechas 3-25
Uso de Operadores Aritméticos con Fechas 3-26
Agenda 3-27
Funciones de Manipulación de Fecha 3-28
Uso de las Funciones de Fecha 3-29
Uso de las Funciones ROUND y TRUNC con Fechas 3-30
Prueba 3-31
Resumen 3-32
Práctica 3: Visión General 3-33

4 Uso de Funciones de Conversión y Expresiones Condicionales


m y
Objetivos 4-2
d e
Agenda 4-3
Funciones de Conversión 4-4
c a
Conversión Implícita del Tipo de Dato 4-5

e A
Agenda 4-10
c l
Conversión Explícita del Tipo de Dato 4-7

r a
Uso de la Función TO_CHAR con Fechas 4-11
Elementos del Modelo de Formato de Fecha 4-12
O ly
Uso de la Función TO_CHAR con Fechas 4-16

& On
Uso de la Función TO_CHAR con Números 4-17
l
n a e
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

t e r U
Funciones de Anidación 4-24
s
I n
Funciones de Anidación: Ejemplo 1 4-25

l e
Funciones de Anidación: Ejemplo 2 4-26

c
Agenda 4-27

r aFunciones Generales 4-28


Función NVL 4-29
O Uso de la Función NVL 4-30

vi
Uso de la Función NVL2 4-31
Uso de la Función NULLIF 4-32
Uso de la Función COALESCE 4-33
Agenda 4-36
Expresiones Condicionales 4-37
Expresión CASE 4-38
Uso de la Expresión CASE 4-39
Función DECODE 4-40
Uso de la Función DECODE 4-41
Prueba 4-43
Resumen 4-44
Práctica 4: Visión General 4-45

5 Informes de Datos Agregados con Funciones de Grupo


Objetivos 5-2
Agenda 5-3
¿Qué Son las Funciones de Grupo? 5-4
Tipos de Funciones de Grupo 5-5
Funciones de Grupo: Sintaxis 5-6
Uso de las Funciones AVG y SUM 5-7
m y
Uso de Funciones MIN y MAX 5-8
d e
Uso de la Función COUNT 5-9
Uso de la Palabra Clave DISTINCT 5-10
c a
Funciones de Grupo y Valores Nulos 5-11

e A
Agenda 5-12

c l
Creación de Grupos de Datos 5-13

r a
Creación de Grupos de Datos: Sintaxis de la Cláusula GROUP BY 5-14

O ly
Uso de la Cláusula GROUP BY 5-15
Agrupación de Más de Una Columna 5-17

l & On
Uso de la Cláusula GROUP BY en Varias Columnas 5-18

a e
Consultas No Válidas Realizadas con las Funciones de Grupo 5-19

n
t e r
Restricción de Resultados de Grupo 5-21
s
Restricción de Resultados de Grupo con la Cláusula HAVING 5-22
U
I n
Uso de la Cláusula HAVING 5-23
Agenda 5-25

c l e
Anidamiento de Funciones de Grupo 5-26
Prueba 5-27

r a Resumen 5-28

O Práctica 5: Visión General 5-29

vii
6 Visualización de Datos de Varias Tablas Utilizando Uniones
Objetivos 6-2
Agenda 6-3
Obtención de Datos de Varias Tablas 6-4
Tipos de Uniones 6-5
Unión de Tablas mediante la Sintaxis SQL:1999 6-6
Cualificación de Nombres de Columna Ambiguos 6-7
Agenda 6-8
Creación de Uniones Naturales 6-9
Recuperación de Registros con Uniones Naturales 6-10
Creación de Uniones con la Cláusula USING 6-11
Unión de Nombres de Columna 6-12
Recuperación de Registros con la Cláusula USING 6-13
Uso de Alias de Tabla con la Cláusula USING 6-14
Creación de Uniones con la Cláusula ON 6-15
Recuperación de Registros con la Cláusula ON 6-16
Creación de Uniones en 3 Direcciones con la Cláusula ON 6-17
Aplicación de Condiciones Adicionales a una Unión 6-18
Agenda 6-19
Unión de una Tabla consigo Misma 6-20
m y
Autouniones que Utilizan la Cláusula ON 6-21
d e
Agenda 6-22
Uniones no igualitarias 6-23
c a
Recuperación de Registros con Uniones no Igualitarias 6-24

e A
Agenda 6-25

c l
Devolución de Registros sin Coincidencia Directa con las uniones OUTER 6-26

r a
Uniones INNER frente a Uniones OUTER 6-27
LEFT OUTER JOIN 6-28
RIGHT OUTER JOIN 6-29 O ly
FULL OUTER JOIN 6-30
l & On
Agenda 6-31

n a e
t e r
Productos Cartesianos 6-32
s
Generación de un Producto Cartesiano 6-33
U
Prueba 6-35
I n
Creación de Uniones Cruzadas 6-34

l e
Resumen 6-36

c
Práctica 6: Visión General 6-37

r a
O
viii
7 Uso de Subconsultas para Solucionar Consultas
Objetivos 7-2
Agenda 7-3
Uso de una Subconsulta para Solucionar Problemas 7-4
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
Ejecución de Subconsultas de una Sola Fila 7-11
Uso de Funciones de Grupo en una Subconsulta 7-12
Cláusula HAVING con Subconsultas 7-13
¿Qué Parte de esta Sentencia Es Incorrecta? 7-14
La Consulta Interna No Devuelve Ningún Resultado 7-15
Agenda 7-16
Subconsultas de Varias Filas 7-17
Uso del Operador ANY en Subconsultas de Varias Filas 7-18
Uso del Operador ALL en Subconsultas de Varias Filas 7-19
Uso del Operador EXISTS 7-20
m y
Agenda 7-21
d e
Valores Nulos en una Subconsulta 7-22
Prueba 7-24
c a
Resumen 7-25
Práctica 7: Visión General 7-26
e A
c l
8
a
Uso de los Operadores de Definición
Objetivos 8-2 r
Agenda 8-3
O ly
l & On
Operadores de Definición 8-4
Instrucciones de los Operadores de Definición 8-5

n a e
Servidor de Oracle y Operadores de Definición 8-6
Agenda 8-7

t e r U s
Tablas Utilizadas en esta Lección 8-8

I n
Agenda 8-12
Operador UNION 8-13

c l e
Uso del Operador UNION 8-14

r a Operador UNION ALL 8-16


Uso del Operador UNION ALL 8-17

O Agenda 8-18

ix
Operador INTERSECT 8-19
Uso del Operador INTERSECT 8-20
Agenda 8-21
Operador MINUS 8-22
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 Cláusula ORDER BY en Operaciones de Definición 8-28
Prueba 8-29
Resumen 8-30
Práctica 8: Visión General 8-31

9 Manipulación de Datos
Objetivos 9-2
Agenda 9-3
Lenguaje de Manipulación de Datos 9-4
Adición de una Nueva Fila a una Tabla 9-5
Sintaxis de las Sentencias INSERT 9-6
m y
Inserción de Filas 9-7
d e
Inserción de Filas con Valores Nulos 9-8
Inserción de Valores Especiales 9-9
ca
Inserción de Valores de Fecha y Hora Específicos 9-10

e A
Creación de un Script 9-11
Copia de Filas de Otra Tabla 9-12
c l
Agenda 9-13
r a
O ly
Cambio de Datos en la Tabla 9-14
Sintaxis de Sentencias UPDATE 9-15

& On
Actualización de Filas en una Tabla 9-16
l
n a e
Actualización de Dos Columnas con una Subconsulta 9-17
Actualización de Filas Basada en Otra Tabla 9-18
Agenda 9-19

t e r U s
Eliminación de Filas de Tablas 9-20

I n
Sentencia DELETE 9-21

c l e
Supresión de Filas de Tablas 9-22
Supresión de Filas Basada en Otra Tabla 9-23

r aSentencia TRUNCATE 9-24


Agenda 9-25
O 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 Explícitas 9-29
Rollback de los Cambios de un Marcador 9-30
Procesamiento de Transacciones Implícitas 9-31
Estado de los Datos antes de COMMIT o ROLLBACK 9-33
Estado de los Datos después de COMMIT 9-34
Confirmación de Datos 9-35
Estado de los Datos después de ROLLBACK 9-36
Estado de los Datos después de ROLLBACK: Ejemplo 9-37
Rollback a Nivel de Sentencias 9-38
Agenda 9-39
Consistencia de Lectura 9-40
Implementación de Consistencia de Lectura 9-41
Agenda 9-42
Cláusula FOR UPDATE en una Sentencia SELECT 9-43
Cláusula FOR UPDATE: Ejemplos 9-44
Prueba 9-46
Resumen 9-47
Práctica 9: Visión General 9-48
m y
d e
10 Uso de Sentencias DDL para Crear y Gestionar Tablas
Objetivos 10-2
ca
Agenda 10-3

e A
Objetos de Base de Datos 10-4
Reglas de Nomenclatura 10-5
c l
Agenda 10-7
r
Sentencia CREATE TABLE 10-8
a
O ly
Referencia a Tablas de Otro Usuario 10-9
Opción DEFAULT 10-10
l & On
Agenda 10-12
n a e
Creación de Tablas 10-11

e r
Tipos de Dato 10-13

t U s
Tipos de Dato de Fecha y Hora 10-15

I n
Agenda 10-16

c l e
Inclusión de Restricciones 10-17
Instrucciones de Restricción 10-18

r a Definición de Restricciones 10-19


Restricción NOT NULL 10-21
O Restricción UNIQUE 10-22

xi
Restricción PRIMARY KEY 10-24
Restricción FOREIGN KEY: Palabras Clave 10-27
Restricción CHECK 10-28
Sentencia CREATE TABLE: Ejemplo 10-29
Violación de Restricciones 10-30
Agenda 10-32
Creación de una Tabla mediante una Subconsulta 10-33
Agenda 10-35
Sentencia ALTER TABLE 10-36
Tablas de Sólo Lectura 10-37
Agenda 10-38
Borrado de una Tabla 10-39
Prueba 10-40
Resumen 10-41
Práctica 10: Visión General 10-42

11 Creación de Otros Objetos de Esquema


Objetivos 11-2
Agenda 11-3
Objetos de Base de Datos 11-4
m y
¿Qué es una Vista? 11-5
d e
Ventajas de las Vistas 11-6
Vistas Simples y Complejas 11-7
ca
Creación de Vistas 11-8

e
Recuperación de Datos de una Vista 11-11 A
Modificación de Vistas 11-12
c l
r a
Creación de Vistas Complejas 11-13
Reglas para Realizar Operaciones DML en una Vista 11-14
O ly
Uso de la Cláusula WITH CHECK OPTION 11-17

l
Eliminación de Vistas 11-20 & On
Denegación de Operaciones DML 11-18

n a e
Práctica 11: Visión General de la Parte 1 11-21
Agenda 11-22
Secuencias 11-23
t e r U s
I n
Sentencia CREATE SEQUENCE: Sintaxis 11-25

c l e
Creación de Secuencias 11-26
Pseudocolumnas NEXTVAL y CURRVAL 11-27

r a
Uso de una Secuencia 11-29
Almacenamiento en Caché de los Valores de Secuencia 11-30

O Modificación de una Secuencia 11-31

xii
Instrucciones para Modificar una Secuencia 11-32
Agenda 11-33
Índices 11-34
¿Cómo se Crean los Índices? 11-36
Creación de Índices 11-37
Instrucciones de Creación de Índices 11-38
Eliminación de Índices 11-39
Agenda 11-40
Sinónimos 11-41
Creación de un Sinónimo para un Objeto 11-42
Creación y Eliminación de Sinónimos 11-43
Prueba 11-44
Resumen 11-45
Práctica 11: Visión General de la Parte 2 11-46

Apéndice A: Prácticas y Soluciones

Apéndice AP: Prácticas y Soluciones adicionales

Apéndice B: Descripciones de las Tablas


m y
Apéndice C: Uso de SQL Developer
d e
Objetivos C-2
c a
¿Qué es Oracle SQL Developer? C-3
Especificaciones de SQL Developer C-4
e A
l
Interfaz de SQL Developer 1.5 C-5
c
r a
Creación de una Conexión a la Base Datos C-7
Examen de Objetos de Bases de Datos C-10

O ly
Visualización de la Estructura de la Tabla C-11
Examen de Archivos C-12

l & On
Creación de un Objeto de Esquema C-13

a e
Creación de una Nueva Tabla: Ejemplo C-14
n
t e r U s
Uso de la Hoja de Trabajo de SQL C-15
Ejecución de Sentencias SQL C-18

I n
Guardado de Scripts SQL C-19
Ejecución de Archivos de Script Guardados: Método 1 C-20

c l e
Ejecución de Archivos de Script Guardados: Método 2 C-22
Formato del Código SQL C-23

r a Uso de Fragmentos C-24

O Uso de Fragmentos: Ejemplo C-25


Depuración de Procedimientos y Funciones C-26

xiii
Informes de Bases de Datos C-27
Creación de un Informe Definido por el Usuario C-28
Motores de Búsqueda y Herramientas Externas C-29
Definición de Preferencias C-30
Restablecimiento del Diseño de SQL Developer C-31
Resumen C-32

Apéndice D: Uso de SQL*Plus


Objetivos D-2
Interacción de SQL y SQL*Plus D-3
Sentencias SQL frente a Comandos SQL*Plus D-4
Visión General de SQL*Plus D-5
Conexión a SQL*Plus D-6
Visualización de la Estructura de la Tabla D-7
Comandos de Edición SQL*Plus D-9
Uso de LIST, n y APPEND D-11
Uso del Comando CHANGE D-12
Comandos de Archivos SQL*Plus D-13
Using the SAVE, START Commands D-14
Comando SERVEROUTPUT D-15
m y
Uso del Comando SQL*Plus SPOOL D-16
d e
Uso del Comando AUTOTRACE D-17
Resumen D-18
ca
e A
Apéndice E: Uso de JDeveloper
Objetivos E-2
c l
Oracle JDeveloper E-3
Database Navigator E-4 r a
Creación de Conexión E-5 O ly
l & On
Examen de Objetos de Bases de Datos E-6
Ejecución de Sentencias SQL E-7

n a e
Creación de Unidades de Programa E-8
Compilación E-9

t e r U s
Ejecución de una Unidad de Programa E-10

I n
Borrado de una Unidad de Programa E-11

c l e
Ventana Structure E-12
Ventana del Editor E-13

r a
Navegador de Aplicaciones E-14
Despliegue de Procedimientos Java Almacenados E-15

O Publicación de Java en PL/SQL E-16

xiv
¿Cómo Puedo Obtener más Información sobre JDeveloper 11g? E-17
Resumen E-18

Apéndice F: Sintaxis de Unión en Oracle


Objetivos F-2
Obtención de Datos de Varias Tablas F-3
Productos Cartesianos F-4
Generación de un Producto Cartesiano F-5
Tipos de Uniones Propiedad de Oracle F-6
Unión de Tablas mediante la Sintaxis de Oracle F-7
Cualificación de Nombres de Columna Ambiguos F-8
Uniones igualitarias F-9
Recuperación de Registros con Uniones Igualitarias F-10
Recuperación de Registros con Uniones Igualitarias: Ejemplo F-11
Condiciones de Búsqueda Adicionales Mediante el Operador AND F-12
Unión de Más de Dos Tablas F-13
Uniones no Igualitarias F-14
Recuperación de Registros con Uniones no Igualitarias F-15

Uniones Externas: Sintaxis F-17


m y
Devolución de Registros sin Coincidencia Directa con las Uniones Externas F-16

Uso de Uniones Externas F-18


Unión Externa: Otro Ejemplo F-19
d e
Unión de una Tabla consigo Misma F-20
c a
Autounión: Ejemplo F-21
Resumen F-22
e A
Práctica F: Visión General F-23
c l
Índice
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
xv
m y
d e
ca
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Apéndice A
Prácticas y Soluciones

m y
d e
ca
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Tabla de Contenido
Prácticas para la Lección I ........................................................................................................ 3
Práctica I-1: Introducción ............................................................................................... 4
Soluciones a la Práctica I-1: Introducción ...................................................................... 5
Prácticas de la Lección 1......................................................................................................... 11
Práctica 1-1: Recuperación de Datos mediante la Sentencia SQL SELECT ................ 12
Soluciones a la Práctica 1-1: Recuperación de Datos mediante la Sentencia SQL
SELECT ........................................................................................................................ 16
Prácticas de la Lección 2......................................................................................................... 19
Práctica 2-1: Restricción y Ordenación de Datos ......................................................... 20
Soluciones a la Práctica 2-1: Restricción y Ordenación de Datos ................................ 24
Prácticas de la Lección 3......................................................................................................... 27
Práctica 3-1: Uso de Funciones de Una Sola Fila para Personalizar la Salida ............. 28
Soluciones a la Práctica 3-1: Uso de Funciones de Una Sola Fila para
Personalizar la Salida.................................................................................................... 32
Prácticas de la Lección 4......................................................................................................... 35
Práctica 4-1: Uso de Funciones de Conversión y Expresiones Condicionales............. 36
Soluciones a la Práctica 4-1: Uso de Funciones de Conversión y Expresiones
Condicionales................................................................................................................ 39
Prácticas de la Lección 5......................................................................................................... 41
Práctica 5-1: Informes de Datos Agregados con Funciones de Grupo ......................... 42
Soluciones a la Práctica 5-1: Informes de Datos Agregados con Funciones de
y
Grupo ............................................................................................................................ 45
Prácticas de la Lección 6......................................................................................................... 48
m
Práctica 6-1: Visualización de Datos de Varias Tablas Utilizando Uniones ................ 49
Soluciones a la Práctica 6-1: Visualización de Datos de Varias Tablas Utilizando
d e
c a
Uniones ......................................................................................................................... 52
Prácticas de la Lección 7......................................................................................................... 54
Práctica 7-1: Uso de Subconsultas para Solucionar Consultas..................................... 55

e
Soluciones a la Práctica 7-1: Uso de Subconsultas para Solucionar Consultas............ 57 A
l
Prácticas de la Lección 8......................................................................................................... 59
c
r a
Práctica 8-1: Uso de los Operadores de Definición ...................................................... 60
Soluciones a la Práctica 8-1: Uso de los Operadores de Definición............................. 62

O ly
Prácticas de la Lección 9......................................................................................................... 64
Práctica 9-1: Manipulación de Datos............................................................................ 65

l & On
Soluciones a la Práctica 9-1: Manipulación de Datos................................................... 69
Prácticas de la Lección 10....................................................................................................... 73
a e
Práctica 10-1: Uso de Sentencias DDL para Crear y Gestionar Tablas........................ 74
n
e r
Soluciones a la Práctica 10-1: Uso de Sentencias DDL para Crear y Gestionar
s
Tablas............................................................................................................................ 76
t U
Prácticas de la Lección 11....................................................................................................... 79

I n
Práctica 11-1: Creación de Otros Objetos de Esquema ................................................ 80
Soluciones a la Práctica 11-1: Creación de Otros Objetos de Esquema ....................... 82

l e
Prácticas del Apéndice F......................................................................................................... 84

c
Práctica F-1: Sintaxis de Unión en Oracle.................................................................... 85

r a Soluciones a las Prácticas F-1: Sintaxis de Unión en Oracle........................................ 88

O
Oracle Database: Conceptos Fundamentales de SQL I A-2
Prácticas para la Lección I
En esta práctica, realizará las siguientes tareas:
• Iniciar Oracle SQL Developer y crear una nueva conexión 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.

Observe la siguiente ubicación de los archivos de los ejercicios prácticos:


\home\oracle\labs\sql1\labs
Si se le pide que guarde algún archivo de los ejercicios prácticos, guárdelo en esta
ubicación.

En las prácticas, puede que haya ejercicios que estén precedidos por las frases “Si tiene
tiempo” o “Si desea superarse a sí mismo”. Realice estos ejercicios sólo si ha terminado
el resto de ejercicios en el tiempo asignado y si desea poner a prueba sus habilidades.

Realice las prácticas despacio y de forma precisa. Puede experimentar guardando y


ejecutando los archivos de comandos. Si tiene alguna duda en cualquier momento,
pregunte a su instructor.

Nota
1) Todas las prácticas escritas utilizan Oracle SQL Developer como entorno de
desarrollo. Aunque se recomienda utilizar Oracle SQL Developer, también puede usar
m y
SQL*Plus, disponible en este curso.

d e
variar con respecto a la que se muestra en las capturas de pantalla.
c a
2) Para cualquier consulta, la secuencia de filas recuperadas de la base de datos puede

e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-3
Práctica I-1: Introducción
Ésta es la primera de varias prácticas de este curso. Las soluciones (si las necesita) están
al final de esta práctica. Las prácticas están destinadas a abarcar la mayoría de los temas
que se presentan en la lección correspondiente.

Inicio de Oracle SQL Developer


1) Inicie Oracle SQL Developer mediante el icono del escritorio de SQL Developer.
Creación de Nuevas Conexiones a la Base de Datos de Oracle SQL Developer
2) Para crear una nueva conexión a la base de datos, en el navegador de conexiones,
haga clic con el botón derecho del mouse en Connections. Seleccione New
Connection en el menú. Aparece el cuadro de diálogo New/Select Database
Connection.
3) Cree una conexión a la base de datos con la siguiente información:
a) Connection Name: myconnection
b) Username: ora1
c) Password: ora1
d) Hostname: localhost
e) Port: 1521
f) SID: ORCL
m y
Asegúrese de activar la casilla de control Save Password.
d e
Prueba y Conexión mediante la Conexión a la Base de Datos de Oracle SQL
c a
Developer

e A
4) Pruebe la nueva conexión.

c l
5) Si el estado es Success, conéctese a la base de datos mediante esta nueva conexión.

r a
Examen de Tablas en el Navegador de Conexiones

O ly
6) En el navegador de conexiones, visualice los objetos disponibles en el nodo Tables.

COUNTRIES
l & On
Verifique que las siguientes tablas están presentes:

DEPARTMENTS
n a e
EMPLOYEES
JOB_GRADES
JOB_HISTORY
t e r U s
JOBS
LOCATIONS I n
l e
REGIONS

c
7) Examine la estructura de la tabla EMPLOYEES.

r a
8) Visualice los datos de la tabla DEPARTMENTS.

O
Oracle Database: Conceptos Fundamentales de SQL I A-4
Soluciones a la Práctica I-1: Introducción
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.

Aparece la interfaz de SQL Developer.

m y
d e
c a
e A
c l
r a
Creación de Nuevas Conexiones a la Base de Datos de Oracle SQL Developer
O ly
2) Para crear una nueva conexión a la base de datos, en el navegador de conexiones,
& On
haga clic con el botón derecho del mouse en Connections y seleccione New
l
Connection en el menú.

n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-5
Soluciones a la Práctica I-1: Introducción (continuación)
Aparece el cuadro de diálogo New/Select Database Connection.

3) Cree una conexión a la base de datos con la siguiente información:


a) Connection Name: myconnection
b) Username: ora1
m y
c) Password: ora1
d e
d) Hostname: localhost
e) Port: 1521 c a
f) SID: ORCL
e A
c l
Asegúrese de activar la casilla de control Save Password.

r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-6
Soluciones a la Práctica I-1: Introducción (continuación)

Prueba y Conexión mediante la Conexión a la Base de Datos de Oracle SQL


Developer
4) Pruebe la nueva conexión.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
5) Si el estado es Success, conéctese a la base de datos mediante esta nueva conexión.

I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-7
Soluciones a la Práctica I-1: Introducción (continuación)

Al crear una conexión, automáticamente se abre una hoja de trabajo de SQL para
dicha conexión.

m y
d e
c a
e A
c l
r a
O ly
l & On
a e
Examen de Tablas en el Navegador de Conexiones

n
t e r s
6) En el navegador de conexiones, visualice los objetos disponibles en el nodo Tables.
Verifique que las siguientes tablas están presentes:
U
COUNTRIES
DEPARTMENTS
I n
c l e
EMPLOYEES
JOB_GRADES

r aJOB_HISTORY
JOBS
LOCATIONS
O REGIONS

Oracle Database: Conceptos Fundamentales de SQL I A-8


Soluciones a la Práctica I-1: Introducción (continuación)

7) Examine la estructura de la tabla EMPLOYEES.

m y
d e
c a
e A
c l
r a
O ly
l & On
a e
8) Visualice los datos de la tabla DEPARTMENTS.
n
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-9
Soluciones a la Práctica I-1: Introducción (continuación)

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-10
Prácticas de la Lección 1
En esta práctica, escribirá consultas simples SELECT. Las consultas tratan la mayoría de
las operaciones y cláusulas SELECT que ha aprendido en esta lección.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-11
Práctica 1-1: Recuperación de Datos mediante la Sentencia SQL
SELECT
Parte 1

Ponga a prueba sus conocimientos:


1) La siguiente sentencia SELECT se ejecuta correctamente:
SELECT last_name, job_id, salary AS Sal
FROM employees;

Verdadero/Falso

2) La siguiente sentencia SELECT se ejecuta correctamente:


SELECT *
FROM job_grades;

Verdadero/Falso

3) En la siguiente sentencia hay cuatro errores de codificación. ¿Puede identificarlos?

m y
SELECT
sal x 12
employee_id, last_name
ANNUAL SALARY
d e
FROM employees;

c a
Parte 2
e A
l
Tenga en cuenta los siguientes puntos antes de iniciar las prácticas:
c

a
Guarde todos los archivos de los ejercicios prácticos en la siguiente ubicación:
r
/home/oracle/labs/sql1/labs
• O ly
Introduzca las sentencias SQL en una hoja de trabajo de SQL. Para guardar un

l & On
script en SQL Developer, asegúrese de que la hoja de trabajo de SQL necesaria
está activa y, a continuación, en el menú File, seleccione Save As para guardar la
a e
sentencia SQL como un script lab_<lessonno>_<stepno>.sql. Cuando esté
n
t e r
modificando un script existente, asegúrese de que utiliza Save As para guardarlo
s
con un nombre de archivo diferente.
U

n
Para ejecutar una consulta, haga clic en el icono Execute Statement en la hoja de
I
trabajo de SQL. Como alternativa, puede pulsar [F9]. Para sentencias DML y


c l e
DDL, utilice el icono Run Script o pulse [F5].
Una vez ejecutada la consulta, asegúrese de que no introduce la siguiente consulta

r a en la misma hoja de trabajo. Abra una hoja de trabajo nueva.

O Se le ha contratado como programador de SQL para Acme Corporation. Su primera tarea


es crear algunos informes según los datos de las tablas de recursos humanos.

Oracle Database: Conceptos Fundamentales de SQL I A-12


Práctica 1-1: Recuperación de Datos mediante la Sentencia SQL
SELECT (continuación)
4) Su primera tarea es determinar la estructura de la tabla DEPARTMENTS y su contenido.

5) Determine la estructura de la tabla EMPLOYEES.

m y
d e
c a
e A
c l
r a
O ly
l & On
El departamento de recursos humanos desea que una consulta muestre el apellido, ID

n a e
de cargo, fecha de contratación e ID de empleado de cada empleado, con el ID de
empleado en primer lugar. Proporcione un alias STARTDATE para la columna

t e r U s
HIRE_DATE. Guarde la sentencia SQL en un archivo con el nombre
lab_01_05.sql para distribuirlo al departamento de recursos humanos.

I n
6) Pruebe la consulta en el archivo lab_01_05.sql para asegurarse de que se ejecuta

c l e
correctamente.
Nota: una vez ejecutada la consulta, asegúrese de que no introduce la siguiente

r aconsulta en la misma hoja de trabajo. Abra una hoja de trabajo nueva.

O
Oracle Database: Conceptos Fundamentales de SQL I A-13
Práctica 1-1: Recuperación de Datos mediante la Sentencia SQL
SELECT (continuación)

7) El departamento de recursos humanos desea una consulta para mostrar todos los ID
de cargo únicos de la tabla EMPLOYEES.

m y
d e
c a
e A
Parte 3
c l
r a
Si tiene tiempo, realice los siguientes ejercicios:

O ly
8) El departamento de recursos humanos desea cabeceras de columna más descriptivas

l & On
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

a e
#, Employee, Job y Hire Date, respectivamente. A continuación, vuelva a ejecutar

n
la consulta.

t e r U s
I n
c l e
r a
O …

Oracle Database: Conceptos Fundamentales de SQL I A-14


Práctica 1-1: Recuperación de Datos mediante la Sentencia SQL
SELECT (continuación)

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.

Si desea superarse a sí mismo, complete el siguiente ejercicio:


m y
d e
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 título THE_OUTPUT.

c a
e A
c l
r a
O ly

l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-15
Soluciones a la Práctica 1-1: Recuperación de Datos mediante la
Sentencia SQL SELECT
Parte 1

Ponga a prueba sus conocimientos:


1) La siguiente sentencia SELECT se ejecuta correctamente:
SELECT last_name, job_id, salary AS Sal
FROM employees;

Verdadero/Falso

2) La siguiente sentencia SELECT se ejecuta correctamente:


SELECT *
FROM job_grades;

Verdadero/Falso

3) En la siguiente sentencia hay cuatro errores de codificación. ¿Puede identificarlos?


m y
SELECT
sal x 12
employee_id, last_name
ANNUAL SALARY
d e
FROM employees;

c a
ƒ
A
La tabla EMPLOYEES no contiene ninguna columna denominada sal. La
columna se denomina SALARY.
e
ƒ
c l
El operador de multiplicación es *, no x, como se muestra en la línea 2.

ƒ r a
El alias ANNUAL SALARY no puede incluir espacios. El alias debe ser
O ly
ANNUAL_SALARY o se deben incluir entre comillas dobles.

ƒ
l & On
Falta una coma tras la columna LAST_NAME.
Parte 2
n a e
t e r U s
Se le ha contratado como programador de SQL para Acme Corporation. Su primera tarea
es crear algunos informes según los datos de las tablas de recursos humanos.

I n
4) Su primera tarea es determinar la estructura de la tabla DEPARTMENTS y su contenido.

c l e
a. Para determinar la estructura de la tabla DEPARTMENTS:

ra
DESCRIBE departments

O
Oracle Database: Conceptos Fundamentales de SQL I A-16
Soluciones a la Práctica 1-1: Recuperación de Datos mediante
la Sentencia SQL SELECT (continuación)
b. Para ver los datos que contiene la tabla DEPARTMENTS:
SELECT *
FROM departments;

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 contratación 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.
SELECT employee_id, last_name, job_id, hire_date StartDate
FROM employees;

6) Pruebe la consulta en el archivo lab_01_05.sql para asegurarse de que se ejecuta


correctamente.
SELECT employee_id, last_name, job_id, hire_date StartDate
FROM employees;
7) El departamento de recursos humanos desea una consulta para mostrar todos los ID
m y
de cargo únicos de la tabla EMPLOYEES.
d e
SELECT DISTINCT job_id
FROM employees;
c a
e A
Parte 3

c l
r a
Si tiene tiempo, realice los siguientes ejercicios:
8) El departamento de recursos humanos desea cabeceras de columna más descriptivas
O ly
para su informe sobre empleados. Copie la sentencia de lab_01_05.sql en una

l & On
nueva hoja de trabajo de SQL. Asigne a las cabeceras de columna los nombres Emp
#, Employee, Job y Hire Date, respectivamente. A continuación, vuelva a ejecutar
la consulta.

n a e
t e r s
SELECT employee_id "Emp #", last_name "Employee",
job_id "Job", hire_date "Hire Date"
U
FROM
n
employees;

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

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

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

r aand Title.

O SELECT last_name||', '||job_id "Employee and Title"


FROM employees;

Oracle Database: Conceptos Fundamentales de SQL I A-17


Soluciones a la Práctica 1-1: Recuperación de Datos mediante
la Sentencia SQL SELECT (continuación)
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 título THE_OUTPUT.
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;

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-18
Prácticas de la Lección 2
En esta práctica se crean más informes, incluyendo sentencias que utilizan las cláusulas
WHERE y ORDER BY. Puede hacer que las sentencias SQL sean más reutilizables y
genéricas incluyendo la sustitución con ampersand.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-19
Práctica 2-1: Restricción y Ordenación 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 más de
12.000 dólares. Guarde la sentencia SQL como un archivo denominado
lab_02_01.sql. Ejecute la consulta.

2) Abra una hoja de trabajo de SQL nueva. Cree un informe que muestre el apellido y el
número de departamento para el número de empleado 176. Ejecute la consulta.

3) El departamento de recursos humanos necesita encontrar los empleados con salarios


tanto altos como bajos. Modifique lab_02_01.sql para mostrar el apellido y el
m y
e
salario de cualquier empleado cuyo salario no esté entre 5.000 y 12.000 dólares.
d
Guarde la sentencia SQL como lab_02_03.sql.

c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
4) Cree un informe para mostrar el apellido, ID de cargo y fecha de contratación de los

c l e
empleados cuyos apellidos sean Matos y Taylor. Ordene la consulta en orden
ascendente por fecha de contratación.

r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-20
Práctica 2-1: Restricción y Ordenación de Datos (continuación)
5) Muestre el apellido y el ID de departamento de todos los empleados de los
departamentos 20 o 50 en orden alfabético ascendente por nombre.

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 dólares y están 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.

m y
d e
7) El departamento de recursos humanos necesita un informe que muestre el apellido y

a
la fecha de contratación de todos los empleados contratados durante el año 1994.

c
e A
c l
r a
8) Cree un informe para mostrar el apellido y el puesto de todos los empleados que no
tienen un supervisor.
O ly
l & On
n a e
e r s
9) Cree un informe para mostrar el apellido, salario y comisión de todos los empleados que
t U
I n
perciben comisiones. Ordene los datos en orden descendente de salario y comisiones.
Utilice la posición numérica de la columna en la cláusula ORDER BY.

c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-21
Práctica 2-1: Restricción y Ordenación de Datos (continuación)
10) Los miembros del departamento de recursos humanos desean tener más flexibilidad
con las consultas que está creando. Les gustaría tener un informe que muestre el
apellido y el salario de los empleados que ganen más de una cantidad especificada por
el usuario después 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
siguientes resultados:

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:
manager_id = 103, ordenado por last_name:

m y
manager_id = 201, ordenado por salary:
d e
c a
e A
l
manager_id = 124, ordenado por employee_id:

c
r a
O ly
l & On
n a e
t e r U s
Si tiene tiempo, realice los siguientes ejercicios:
12) Muestre todos los apellidos de los empleados cuya tercera letra sea una "a".

I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-22
Práctica 2-1: Restricción y Ordenación de Datos (continuación)
13) Muestre los apellidos de los empleados que tengan una "a" y una "e" en su apellido.

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 dólares.

15) Modifique el archivo lab_02_06.sql para mostrar el apellido, salario y comisión


de todos los empleados cuya comisión 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.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-23
Soluciones a la Práctica 2-1: Restricción y Ordenación 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 más de
12.000 dólares. Guarde la sentencia SQL como un archivo denominado
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
número de departamento para el número de empleado 176.
SELECT last_name, department_id
FROM employees
WHERE employee_id = 176;
3) El departamento de recursos humanos necesita encontrar los empleados con salarios
tanto altos como bajos. Modifique lab_02_01.sql para mostrar el apellido y el
salario de todos los empleados cuyo salario no esté entre 5.000 y 12.000 dólares.
Guarde la sentencia SQL como lab_02_03.sql.
SELECT
FROM
WHERE
last_name, salary
employees
salary NOT BETWEEN 5000 AND 12000;
m y
d e
4) Cree un informe para mostrar el apellido, ID de cargo y fecha de contratación de los

ascendente por fecha de contratación.


c a
empleados cuyos apellidos sean Matos y Taylor. Ordene la consulta en orden

SELECT
FROM
last_name, job_id, hire_date
employees
e A
WHERE
l
last_name IN ('Matos', 'Taylor')
ORDER BY hire_date;
c
r a
5) Muestre el apellido y el ID de departamento de todos los empleados de los

SELECT O ly
departamentos 20 o 50 en orden alfabético ascendente por nombre.
last_name, department_id
FROM
WHERE
employees
l & On
department_id IN (20, 50)
ORDER BY last_name ASC;
n a e
t e r U s
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 dólares y están en el departamento 20 o

I n
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

c l e
lab_02_06.sql.
SELECT last_name "Employee", salary "Monthly Salary"

r aFROM
WHERE
employees
salary BETWEEN 5000 AND 12000

O AND department_id IN (20, 50);

Oracle Database: Conceptos Fundamentales de SQL I A-24


Soluciones a la Práctica 2-1: Restricción y Ordenación de Datos
(continuación)
7) El departamento de recursos humanos necesita un informe que muestre el apellido y
la fecha de contratación de todos los empleados contratados durante el año 1994.
SELECT last_name, hire_date
FROM employees
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;

9) Cree un informe para mostrar el apellido, salario y comisión de todos los empleados
que perciben comisiones. Ordene los datos en orden descendente de salario y
comisiones. Utilice la posición numérica de la columna en la cláusula ORDER BY.
SELECT last_name, salary, commission_pct
FROM employees
WHERE commission_pct IS NOT NULL
ORDER BY 2 DESC, 3 DESC;
10) Los miembros del departamento de recursos humanos desean tener más flexibilidad
con las consultas que está creando. Les gustaría tener un informe que muestre el
m y
d e
apellido y el salario de los empleados que ganen más de una cantidad especificada por
el usuario después de una solicitud. (Puede utilizar la consulta creada en el ejercicio
práctico 1 y modificarla). Guarde esta consulta en un archivo denominado
lab_02_10.sql.
c a
SELECT last_name, salary

e A
FROM
WHERE
employees
salary > &sal_amt;
c l
r a
Introduzca 12000 cuando se le solicite un valor en un cuadro de diálogo. Haga clic
en OK.
O ly
l & On
n a e
t e r U s
I n
l e
11) El departamento de recursos humanos desea ejecutar informes basados en un
c
r a 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

O 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 Práctica 2-1: Restricción y Ordenación de Datos
(continuación)
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
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
FROM employees
WHERE last_name LIKE '__a%';

13) Muestre los apellidos de los empleados que tengan una "a" y una "e" en su apellido.
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%'
AND last_name LIKE '%e%';

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


m y
d e
14) Muestre el apellido, cargo y salario de todos los empleados que sean vendedores u
oficinistas en el departamento de stock y cuyo salario no sea igual que 2.500, 3.500 o
7.000 dólares.
SELECT last_name, job_id, salary c a
FROM employees

e A
WHERE
AND
c l
job_id IN ('SA_REP', 'ST_CLERK')
salary NOT IN (2500, 3500, 7000);

r a
15) Modifique el archivo lab_02_06.sql para mostrar el apellido, salario y comisión
de todos los empleados cuya comisión sea del 20%. Vuelva a guardar
O ly
lab_02_06.sql como lab_02_15.sql. Vuelva a ejecutar la sentencia en el
archivo lab_02_15.sql.
l & On
SELECT
a e
last_name "Employee", salary "Monthly Salary",

n
commission_pct
FROM
WHERE
t e r
employees

U s
commission_pct = .20;

I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-26
Prácticas de la Lección 3
Esta práctica proporciona una variedad de ejercicios que utilizan diferentes funciones que
están disponibles para tipos de dato de carácter, de número y de fecha.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-27
Práctica 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.
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 número de


empleado, apellido, salario y salario aumentado en un 15,5% (expresado como
número entero) para cada empleado. Etiquete la columna como New Salary. Guarde
la sentencia SQL en un archivo denominado lab_03_02.sql.
3) Ejecute la consulta en el archivo lab_03_02.sql.

m y

d e
c a
A
4) Modifique la consulta lab_03_02.sql para agregar una columna que reste el
e
c l
salario antiguo del nuevo. Etiquete la columna como Increase. Guarde el contenido
del archivo como lab_03_04.sql. Ejecute la consulta revisada.

r a
O ly
l & On
n a e

t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-28
Práctica 3-1: Uso de Funciones de Una Sola Fila para
Personalizar la Salida (continuación)
5) Escriba una consulta que muestre el apellido (con la primera letra en mayúsculas y el
resto en minúsculas) 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.

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
mayúscula) cuando se le solicita que introduzca una letra, la salida debe mostrar a
todos los empleados cuyos apellidos empiecen por la letra "H".

Modifique la consulta de forma que la mayúscula/minúscula de la letra introducida no


afecte a la salida. La letra introducida debe estar en mayúscula antes de que la procese
la consulta SELECT.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
6) El departamento de recursos humanos desea buscar la duración del contrato de cada

I n
empleado. Para cada empleado, muestre el apellido y calcule el número de meses
entre el día de hoy y la fecha de contratación del empleado. Etiquete la columna como

l e
MONTHS_WORKED. Ordene los resultados por el número de meses durante los que ha

c
trabajado. Redondee el número de meses hasta el número entero más cercano.

r aNota: debido a que esta consulta depende de la fecha de ejecución, los valores de la

O columna MONTHS_WORKED serán diferentes.

Oracle Database: Conceptos Fundamentales de SQL I A-29


Práctica 3-1: Uso de Funciones de Una Sola Fila para
Personalizar la Salida (continuación)

Si tiene tiempo, realice los siguientes ejercicios:


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 símbolo $. Etiquete la columna como SALARY.

m y
d e

c a
e A
c l
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

r a
significa mil dólares. Ordene los datos en orden descendente de salarios. Etiquete la
columna como EMPLOYEES_AND_THEIR_SALARIES.
O ly
l & On
n a e
t e r U s

I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-30
Práctica 3-1: Uso de Funciones de Una Sola Fila para
Personalizar la Salida (continuación)
9) Cree una consulta para mostrar el apellido y el número de semanas durante las que
han trabajado todos los empleados del departamento 90. Etiquete la columna de
número de semanas como TENURE. Trunque el valor del número de semana en 0
decimales. Muestre los registros en orden descendente de antigüedad del empleado.
Nota: el valor TENURE variará ya que depende de la fecha de ejecución de la
consulta.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-31
Soluciones a la Práctica 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.
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 número de


empleado, apellido, salario y salario aumentado en un 15,5% (expresado como
número entero) para cada empleado. Etiquete la columna como New Salary.
Guarde la sentencia SQL en un archivo denominado lab_03_02.sql.
SELECT employee_id, last_name, salary,
ROUND(salary * 1.155, 0) "New Salary"
FROM employees;

3) Ejecute la consulta en el archivo lab_03_02.sql.


SELECT employee_id, last_name, salary,

FROM
ROUND(salary * 1.155, 0) "New Salary"
employees;
m y
4) Modifique la consulta lab_03_02.sql para agregar una columna que reste el
salario antiguo del nuevo. Etiquete la columna como Increase. Guarde el
d e
contenido del archivo como lab_03_04.sql. Ejecute la consulta revisada.
c a
SELECT employee_id, last_name, salary,
ROUND(salary * 1.155, 0) "New Salary",
e A
FROM employees;
c l
ROUND(salary * 1.155, 0) - salary "Increase"

r a
5) Escriba una consulta que muestre el apellido (con la primera letra en mayúsculas y el

O ly
resto en minúsculas) 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
& On
adecuada. Ordene los resultados por el apellido de los empleados.
l
SELECT
a e
INITCAP(last_name) "Name",

n
LENGTH(last_name) "Length"
FROM
WHERE
employees

t e r U s
last_name LIKE 'J%'
OR
OR
I n
last_name LIKE 'M%'
last_name LIKE 'A%'

c l e
ORDER BY last_name ;

r aVuelva 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 mayúscula)

O 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 Práctica 3-1: Uso de Funciones de Una Sola Fila
para Personalizar la Salida (continuación)
SELECT INITCAP(last_name) "Name",
LENGTH(last_name) "Length"
FROM employees
WHERE last_name LIKE '&start_letter%'
ORDER BY last_name;

Modifique la consulta de forma que la mayúscula/minúscula de la letra introducida no


afecte a la salida. La letra introducida debe estar en mayúscula antes de que la procese
la consulta SELECT.
SELECT INITCAP(last_name) "Name",
LENGTH(last_name) "Length"
FROM employees
WHERE last_name LIKE UPPER('&start_letter%' )
ORDER BY last_name;

6) El departamento de recursos humanos desea buscar la duración del contrato de cada


empleado. Para cada empleado, muestre el apellido y calcule el número de meses
entre el día de hoy y la fecha de contratación del empleado. Etiquete la columna como
MONTHS_WORKED. Ordene los resultados por el número de meses durante los que ha
trabajado. Redondee el número de meses hasta el número entero más cercano.

Nota: debido a que esta consulta depende de la fecha de ejecución, los valores de la
columna MONTHS_WORKED serán diferentes.
m y
SELECT last_name, ROUND(MONTHS_BETWEEN(
d e
FROM
SYSDATE, hire_date)) MONTHS_WORKED
employees
ORDER BY months_worked; c a
e A
c l
Si tiene tiempo, realice los siguientes ejercicios:
7) Cree una consulta para mostrar el apellido y el salario de todos los empleados.

r a
Formatee el salario para que tenga 15 caracteres de longitud y tenga un relleno hacia
la izquierda con el símbolo $. Etiquete la columna como SALARY.
O ly
SELECT last_name,

l & On
LPAD(salary, 15, '$') SALARY
FROM employees;

n a e
e r
8) Cree una consulta que muestre los primeros ocho caracteres de los apellidos de los
s
empleados y que indique las cantidades de sus salarios con asteriscos. Cada asterisco
t U
significa mil dólares. Ordene los datos en orden descendente de salarios. Etiquete la

I n
columna como EMPLOYEES_AND_THEIR_SALARIES.

l e
SELECT rpad(last_name, 8)||' '||

c rpad(' ', salary/1000+1, '*')

r aFROM employees
EMPLOYEES_AND_THEIR_SALARIES

O ORDER BY salary DESC;

Oracle Database: Conceptos Fundamentales de SQL I A-33


Soluciones a la Práctica 3-1: Uso de Funciones de Una Sola Fila
para Personalizar la Salida (continuación)
9) Cree una consulta para mostrar el apellido y el número de semanas durante las que
han trabajado todos los empleados del departamento 90. Etiquete la columna de
número de semanas como TENURE. Trunque el valor del número de semana en 0
decimales. Muestre los registros en orden descendente de antigüedad del empleado.
Nota: el valor TENURE variará ya que depende de la fecha de ejecución de la
consulta.

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


FROM employees
WHERE department_id = 90
ORDER BY TENURE DESC

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-34
Prácticas de la Lección 4
Esta práctica 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 evalúan desde la función más profunda hasta la
función menos profunda.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-35
Práctica 4-1: Uso de Funciones de Conversión 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.

2) Muestre el apellido, fecha de contratación y fecha de revisión de salario de cada


empleado, que es el primer lunes después de seis meses de contrato. Etiquete la
columna como REVIEW. Formatee las fechas para que aparezcan en un formato
similar a “Lunes treinta y uno de julio de 2000”.

m y
d e
c a
e A

c l
r a
O ly
3) Muestre el apellido, fecha de contratación y día de la semana en el que empezó a

l & On
trabajar el empleado. Etiquete la columna como DAY. Ordene los resultados por el día
de la semana, empezando por el lunes.

n a e
t e r U s
I n
c l e
Ora …

Oracle Database: Conceptos Fundamentales de SQL I A-36


Práctica 4-1: Uso de Funciones de Conversión y Expresiones
Condicionales (continuación)
4) Cree una consulta que muestre los apellidos y comisiones de los empleados. Si un
empleado no obtiene ninguna comisión, indique "No Commission". Etiquete la
columna como COMM.

Si tiene tiempo, realice los siguientes ejercicios:


5) Con la función DECODE, escriba una consulta que muestre el grado de todos los
empleados según el valor de la columna JOB_ID, utilizando los siguientes datos:
m y
Cargo
AD_PRES
Grado
A
d e
ST_MAN
IT_PROG
B
C
c a
SA_REP
ST_CLERK
D
E
e A
None of the above 0
c l
r a
O ly
l & On
n a e

t e r U s
I n

c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-37
Práctica 4-1: Uso de Funciones de Conversión y Expresiones
Condicionales (continuación)
6) Vuelva a escribir la sentencia del ejercicio anterior utilizando la sintaxis CASE.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-38
Soluciones a la Práctica 4-1: Uso de Funciones de Conversión 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.
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 contratación y fecha de revisión de salario de cada


empleado, que es el primer lunes después de seis meses de contrato. Etiquete la
columna como REVIEW. Formatee las fechas para que aparezcan en un formato
similar a “Lunes treinta y uno de julio de 2000”.
SELECT last_name, hire_date,
TO_CHAR(NEXT_DAY(ADD_MONTHS(hire_date, 6),'MONDAY'),
'fmDay, "the" Ddspth "of" Month, YYYY') REVIEW
FROM employees;
3) Muestre el apellido, fecha de contratación y día de la semana en el que empezó a
trabajar el empleado. Etiquete la columna como DAY. Ordene los resultados por el día
m y
de la semana, empezando por el lunes.
d e
SELECT last_name, hire_date,
TO_CHAR(hire_date, 'DAY') DAY
c a
FROM employees
ORDER BY TO_CHAR(hire_date - 1, 'd');

e A
l
4) Cree una consulta que muestre los apellidos y comisiones de los empleados. Si un
c
columna como COMM.
r a
empleado no obtiene ninguna comisión, indique "No Commission". Etiquete la

SELECT last_name,
O ly
FROM employees;
l & On
NVL(TO_CHAR(commission_pct), 'No Commission') COMM

n a e
t e r s
5) Con la función DECODE, escriba una consulta que muestre el grado de todos los
empleados según el valor de la columna JOB_ID, utilizando los siguientes datos:
U
Cargo
I n Grado

l e
AD_PRES
ST_MAN

c
IT_PROG
A
B
C

r a SA_REP
ST_CLERK
D
E

O None of the above 0

Oracle Database: Conceptos Fundamentales de SQL I A-39


Soluciones a la Práctica 4-1: Uso de Funciones de Conversión y
Expresiones Condicionales (continuación)
SELECT job_id, decode (job_id,
'ST_CLERK', 'E',
'SA_REP', 'D',
'IT_PROG', 'C',
'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'
WHEN 'IT_PROG' THEN 'C'
WHEN 'ST_MAN' THEN 'B'
WHEN 'AD_PRES' THEN 'A'
ELSE '0' END GRADE
FROM employees;

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-40
Prácticas de la Lección 5
Al finalizar esta práctica, debe estar familiarizado con el uso de funciones de grupo y la
selección de grupos de datos.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-41
Práctica 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.
Verdadero/Falso
2) Las funciones de grupo incluyen valores nulos en los cálculos.
Verdadero/Falso
3) La cláusula WHERE restringe las filas antes de incluirlas en un cálculo de grupo.
Verdadero/Falso

El departamento de recursos humanos necesita los siguientes informes:


4) Encontrar el valor más alto, el valor más bajo, la suma y la media del salario de todos
los empleados. Etiquete las columnas como Maximum, Minimum, Sum y Average,
respectivamente. Redondee los resultados al número entero más cercano. Guarde la
sentencia SQL como lab_05_04.sql. Ejecute la consulta.

5) Modifique la consulta del archivo lab_05_04.sql para mostrar el valor mínimo, el


valor máximo, la suma y la media del salario de cada tipo de cargo. Vuelva a guardar
m y
lab_05_04.sql como lab_05_05.sql. Ejecute la sentencia en el archivo
d e
lab_05_05.sql.

c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-42
Práctica 5-1: Informes de Datos Agregados con Funciones de
Grupo (continuación)
6) Escriba una consulta para mostrar el número de personas con el mismo cargo.

Generalice la consulta para preguntar al usuario del departamento de recursos


humanos cuál es su puesto. Guarde el script en un archivo denominado
lab_05_06.sql. Ejecute la consulta. Introduzca IT_PROG cuando se le solicite.

m y
Number of Managers.
d e
7) Determine el número de gestores sin enumerarlos en una lista. Etiquete la columna

c a
Indicación: utilice la columna MANAGER_ID para determinar el número de gestores.

e A
c l
8) Busque la diferencia entre los salarios más altos y más bajos. Etiquete la columna
como DIFFERENCE.
r a
O ly
l & On
Si tiene tiempo, realice los siguientes ejercicios:

n a e
9) Cree un informe para mostrar el número de gestor y el salario del empleado con

t e r U s
menor sueldo de ese gestor. Excluya a cualquier trabajador del que desconozca su
gestor. Excluya cualquier grupo en el que el salario mínimo sea 6.000 dólares o

n
menos. Ordene la salida en orden descendente de salarios.
I
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-43
Práctica 5-1: Informes de Datos Agregados con Funciones de
Grupo (continuación)
Si desea superarse a sí mismo, complete los siguientes ejercicios:
10) Cree una consulta para mostrar el número total de empleados y, de ese total, el
número de empleados contratados en 1995, 1996, 1997 y 1998. Cree las cabeceras de
columna adecuadas.

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

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-44
Soluciones a la Práctica 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.
Verdadero/Falso
2) Las funciones de grupo incluyen valores nulos en los cálculos.
Verdadero/Falso
3) La cláusula WHERE restringe las filas antes de incluirlas en un cálculo de grupo.
Verdadero/Falso

El departamento de recursos humanos necesita los siguientes informes:


4) Encontrar el valor más alto, el valor más bajo, la suma y la media del salario de todos
los empleados. Etiquete las columnas como Maximum, Minimum, Sum y Average,
respectivamente. Redondee los resultados al número entero más cercano. Guarde la
sentencia SQL como lab_05_04.sql. Ejecute la consulta.
SELECT ROUND(MAX(salary),0) "Maximum",
ROUND(MIN(salary),0) "Minimum",
ROUND(SUM(salary),0) "Sum",

FROM
ROUND(AVG(salary),0)
employees;
"Average"

m y
5) Modifique la consulta del archivo lab_05_04.sql para mostrar el valor mínimo,

d e
el valor máximo, la suma y la media del salario de cada tipo de cargo. Vuelva a
guardar lab_05_04.sql como lab_05_05.sql. Ejecute la sentencia en el
archivo lab_05_05.sql.
c a
SELECT job_id, ROUND(MAX(salary),0)

e
"Maximum", A
ROUND(MIN(salary),0)

c
ROUND(SUM(salary),0) l "Minimum",
"Sum",

FROM employees
r a
ROUND(AVG(salary),0) "Average"

GROUP BY job_id;
O ly
SELECT job_id, COUNT(*)
l & On
6) Escriba una consulta para mostrar el número de personas con el mismo cargo.

FROM employees
n a e
GROUP BY job_id;

t e r U s
Generalice la consulta para preguntar al usuario del departamento de recursos

I n
humanos cuál 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

l e
haga clic en OK.

c
SELECT job_id, COUNT(*)

r aFROM employees
WHERE job_id = '&job_title'
O GROUP BY job_id;

Oracle Database: Conceptos Fundamentales de SQL I A-45


Soluciones a la Práctica 5-1: Informes de Datos Agregados con
Funciones de Grupo (continuación)
7) Determine el número de gestores sin enumerarlos en una lista. Etiquete la columna
como Number of Managers.
Indicación: utilice la columna MANAGER_ID para determinar el número de gestores.
SELECT COUNT(DISTINCT manager_id) "Number of Managers"
FROM employees;

8) Busque la diferencia entre los salarios más altos y más bajos. Etiquete la columna
como DIFFERENCE.
SELECT MAX(salary) - MIN(salary) DIFFERENCE
FROM employees;

Si tiene tiempo, realice los siguientes ejercicios:


9) Cree un informe para mostrar el número 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 mínimo sea 6.000 dólares o
menos. Ordene la salida en orden descendente de salarios.
SELECT manager_id, MIN(salary)
FROM employees
WHERE
GROUP BY
HAVING
manager_id IS NOT NULL
manager_id
MIN(salary) > 6000
m y
ORDER BY MIN(salary) DESC;

d e
Si desea superarse a sí mismo, complete los siguientes ejercicios:
c a
A
10) Cree una consulta que muestre el número total de empleados y, de ese total, el
número de empleados contratados en 1995, 1996, 1997 y 1998. Cree las cabeceras de
e
columna adecuadas.
c l
SELECT COUNT(*) total,

r a
SUM(DECODE(TO_CHAR(hire_date,
'YYYY'),1995,1,0))"1995",
O ly
SUM(DECODE(TO_CHAR(hire_date,
'YYYY'),1996,1,0))"1996",

l & On
SUM(DECODE(TO_CHAR(hire_date,
'YYYY'),1997,1,0))"1997",

n a e
SUM(DECODE(TO_CHAR(hire_date, 'YYYY'),1998,1,0))"1998"
FROM employees;

t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-46
Soluciones a la Práctica 5-1: Informes de Datos Agregados con
Funciones de Grupo (continuación)
11) Cree una consulta de matriz para mostrar el cargo, el salario de ese cargo según el
número 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",
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;

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-47
Prácticas de la Lección 6
Esta práctica está destinada a proporcionarle experiencia en la extracción de datos desde
más de una tabla utilizando uniones compatibles con SQL:1999.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-48
Práctica 6-1: Visualización 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 ubicación, dirección, ciudad, estado o provincia y país en la salida.
Utilice NATURAL JOIN para producir los resultados.

2) El departamento de recursos humanos necesita un informe sólo de los empleados con


los departamentos correspondientes. Escriba una consulta para mostrar el apellido,
número y nombre de departamento de estos empleados.

m y

d e
c a
A
3) El departamento de recursos humanos necesita un informe de todos los empleados de

e
empleados que trabajan en Toronto.
c l
Toronto. Muestre el apellido, cargo, número y nombre de departamento de todos los

r a
O ly
& On
4) Cree un informe para mostrar el apellido y número de empleado junto con el apellido
l
n a e
y número de gestor del empleado. Etiquete las columnas como Employee, Emp#,
Manager y Mgr#, respectivamente. Guarde la sentencia SQL como

t e r U s
lab_06_04.sql. Ejecute la consulta.

I n
c l e
r a
O …

Oracle Database: Conceptos Fundamentales de SQL I A-49


Práctica 6-1: Visualización de Datos de Varias Tablas Utilizando
Uniones (continuación)

5) Modifique lab_06_04.sql para mostrar todos los empleados, incluido King, que no
tienen gestor. Ordene los resultados por número de empleado. Guarde la sentencia
SQL como lab_06_05.sql. Ejecute la consulta en el archivo lab_06_05.sql.

6) Cree un informe del departamento de recursos humanos que muestre los apellidos y
números 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.
m y
d e
c a
e A
c l

r a
O ly
l & On
7) El departamento de recursos humanos necesita un informe sobre los salarios y grados
a e
de cargo. Para familiarizarse con la tabla JOB_GRADES, en primer lugar, muestre la
n
t e r s
estructura de la tabla JOB_GRADES. A continuación, cree una consulta que muestre el
apellido, cargo, nombre de departamento, salario y grado de todos los empleados.
U
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-50
Práctica 6-1: Visualización de Datos de Varias Tablas Utilizando
Uniones (continuación)

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


8) El departamento de recursos humanos desea determinar los nombres de todos los
empleados contratados después de Davies. Cree una consulta para mostrar el nombre
y la fecha de contratación de cualquier empleado contratado después del empleado
Davies.

m y
d e
c a
e A
c l
9) El departamento de recursos humanos necesita buscar el nombre y la fecha de
contratación de todos los empleados contratados antes que sus gestores, junto con el

r a
nombre y fecha de contratación del gestor. Guarde el script en un archivo
denominado lab_06_09.sql.
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-51
Soluciones a la Práctica 6-1: Visualización 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 ubicación, dirección, ciudad, estado o provincia y país en la salida.
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, número y nombre de departamento de
todos los empleados.
SELECT last_name, department_id, department_name
FROM employees
JOIN departments
USING (department_id);
3) El departamento de recursos humanos necesita un informe de todos los empleados de
Toronto. Muestre el apellido, cargo, número y nombre de departamento de todos los
empleados que trabajan en Toronto.
SELECT e.last_name, e.job_id, e.department_id,
m y
d.department_name
FROM employees e JOIN departments d
d e
ON
JOIN
(e.department_id = d.department_id)
locations l
c a
ON (d.location_id = l.location_id)
WHERE LOWER(l.city) = 'toronto';

e A
c l
4) Cree un informe para mostrar el apellido y número de empleado junto con el apellido
y número de gestor de sus gestores. Etiquete las columnas como Employee, Emp#,

r a
Manager y Mgr#, respectivamente. Guarde la sentencia SQL como
lab_06_04.sql. Ejecute la consulta.
O ly
l & On
SELECT w.last_name "Employee", w.employee_id "EMP#",
m.last_name "Manager", m.employee_id "Mgr#"
FROM
ON
n a e
employees w join employees m
(w.manager_id = m.employee_id);

e r s
5) Modifique lab_06_04.sql para mostrar todos los empleados, incluido King, que no

t U
tienen gestor. Ordene los resultados por número de empleado. Guarde la sentencia

I n
SQL como lab_06_05.sql. Ejecute la consulta en el archivo lab_06_05.sql.

c l e
SELECT w.last_name "Employee", w.employee_id "EMP#",
m.last_name "Manager", m.employee_id "Mgr#"

r aFROM
LEFT
ON
employees w
OUTER JOIN employees m
(w.manager_id = m.employee_id)
O ORDER BY 2;

Oracle Database: Conceptos Fundamentales de SQL I A-52


Soluciones a la Práctica 6-1: Visualización de Datos de Varias
Tablas Utilizando Uniones (continuación)
6) Cree un informe del departamento de recursos humanos que muestre los apellidos y
números 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.
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


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

SELECT e.last_name, e.job_id, d.department_name,


e.salary, j.grade_level
FROM employees e JOIN departments d
ON
JOIN
(e.department_id = d.department_id)
job_grades j
m y
ON (e.salary BETWEEN j.lowest_sal AND j.highest_sal);

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


d e
c a
8) El departamento de recursos humanos desea determinar los nombres de todos los

A
empleados contratados después de Davies. Cree una consulta para mostrar el nombre
y la fecha de contratación de cualquier empleado contratado después del empleado
e
Davies.
c l
SELECT
FROM
r a
e.last_name, e.hire_date
employees e JOIN employees davies
ON
WHERE O ly
(davies.last_name = 'Davies')
davies.hire_date < e.hire_date;

l & On
9) El departamento de recursos humanos necesita buscar el nombre y la fecha de

n a e
contratación de todos los empleados contratados antes que sus gestores, junto con el
nombre y fecha de contratación del gestor. Guarde el script en un archivo

t e r
denominado lab_06_09.sql.

U s
FROM
I n
SELECT w.last_name, w.hire_date, m.last_name, m.hire_date
employees w JOIN employees m
ON

c l
WHEREe(w.manager_id = m.employee_id)
w.hire_date < m.hire_date;

r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-53
Prácticas de la Lección 7
En esta práctica escribirá consultas complejas utilizando sentencias SELECT anidadas.
Para las preguntas de la práctica, puede crear la consulta interna primero. Antes de
codificar la consulta externa, asegúrese de que la consulta interna se ejecuta y produce los
datos que anticipe.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-54
Práctica 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 continuación, la consulta muestra el apellido y la fecha de
contratación de cualquier empleado en el mismo departamento del empleado cuyo
nombre se proporciona (excepto ese empleado). Por ejemplo, si el usuario introduce
Zlotkey, se buscarán todos los empleados que trabajen con Zlotkey (excepto Zlotkey).

2) Cree un informe que muestre el número de empleado, apellido y salario de todos los
empleados que ganan más del salario medio. Ordene los resultados en orden
ascendente de salario.

m y
d e
c a
e A
c l
r a
O ly
3) Escriba una consulta que muestre el número de empleado y el apellido de todos los

l & On
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.
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-55
Práctica 7-1: Uso de Subconsultas para Solucionar Consultas
(continuación)
4) El departamento de recursos humanos necesita un informe que muestre el apellido,
número de departamento e ID de cargo de todos los empleados cuyo ID de ubicación
de departamento sea 1700.

Modifique la consulta para que se solicite al usuario un ID de ubicación. Guarde estos


datos en un archivo denominado lab_07_04.sql.
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.

m y
d e
6) Cree un informe para el departamento de recursos humanos que muestre el número de
a
departamento, apellido e ID de cargo de cada empleado del departamento Executive.
c
e A
c l
r a
7) Cree un informe que muestre una lista de todos los empleados cuyo salario sea mayor

O ly
que el salario de los empleados del departamento 60.

l & On
Si tiene tiempo, realice el siguiente ejercicio:
8) Modifique la consulta del archivo lab_07_03.sql para mostrar el número de
a e
empleado, apellido y salario de todos los empleados que ganan más del salario medio
n
t e r s
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
U
n
sentencia en el archivo lab_07_08.sql.
I
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-56
Soluciones a la Práctica 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 continuación, la consulta muestra el apellido y la fecha de
contratación de cualquier empleado en el mismo departamento del empleado cuyo
nombre se proporciona (excepto ese empleado). Por ejemplo, si el usuario introduce
Zlotkey, se buscarán todos los empleados que trabajen con Zlotkey (excepto
Zlotkey).
UNDEFINE Enter_name

SELECT last_name, hire_date


FROM employees
WHERE department_id = (SELECT department_id
FROM employees
WHERE last_name = '&&Enter_name')
AND last_name <> '&Enter_name';
2) Cree un informe que muestre el número de empleado, apellido y salario de todos los
empleados que ganan más del salario medio. Ordene los resultados en orden
ascendente de salario.
SELECT employee_id, last_name, salary
FROM employees
WHERE salary > (SELECT AVG(salary)
m y
ORDER BY salary;
FROM employees)

d e
c a
3) Escriba una consulta que muestre el número de empleado y el apellido de todos los

A
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.
e
Ejecute la consulta.
c l
SELECT employee_id, last_name
FROM employees
r a
FROMO ly
WHERE department_id IN (SELECT department_id
employees

& On
WHERE last_name like '%u%');

l
n a e
4) El departamento de recursos humanos necesita un informe que muestre el apellido,
número de departamento e ID de cargo de todos los empleados cuyo ID de ubicación

t e r
de departamento sea 1700.

U s
FROM
I n
SELECT last_name, department_id, job_id
employees

c e
WHERE department_id IN (SELECT department_id

l FROM departments
WHERE location_id = 1700);

r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-57
Soluciones a la Práctica 7-1: Uso de Subconsultas para
Solucionar Consultas (continuación)
Modifique la consulta para que se solicite al usuario un ID de ubicación. Guarde estos
datos en un archivo denominado lab_07_04.sql.
SELECT last_name, department_id, job_id
FROM employees
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
FROM employees
WHERE manager_id = (SELECT employee_id
FROM employees
WHERE last_name = 'King');
6) Cree un informe para el departamento de recursos humanos que muestre el número de
departamento, apellido e ID de cargo de cada empleado del departamento Executive.
SELECT department_id, last_name, job_id
FROM employees
WHERE department_id IN (SELECT department_id
FROM departments
m y
'Executive');
WHERE department_name =

d e
que el salario de los empleados del departamento 60.
c a
7) Cree un informe que muestre una lista de todos los empleados cuyo salario sea mayor

SELECT last_name FROM employees

e A
WHERE salary > ANY (SELECT salary
FROM employees
c l
r a
WHERE department_id=60);
Si tiene tiempo, realice el siguiente ejercicio:
O ly
8) Modifique la consulta del archivo lab_07_03.sql para mostrar el número de

l & On
empleado, apellido y salario de todos los empleados que ganan más del salario medio
y que trabajan en un departamento con cualquier empleado cuyo apellido contiene
a e
una "u". Vuelva a guardar lab_07_03.sql como lab_07_08.sql. Ejecute la
n
t e r U s
sentencia en el archivo lab_07_08.sql.
SELECT employee_id, last_name, salary
FROM
I n
employees
WHERE department_id IN (SELECT department_id

c l e FROM employees
WHERE last_name like '%u%')

r aAND salary > (SELECT AVG(salary)


FROM employees);

O
Oracle Database: Conceptos Fundamentales de SQL I A-58
Prácticas de la Lección 8
En esta práctica escribirá consultas utilizando los operadores de definición.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-59
Práctica 8-1: Uso de los Operadores de Definición
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 definición para
crear este informe.

2) El departamento de recursos humanos necesita una lista de países que no tienen


ningún departamento. Muestre el ID de país y el nombre de los países. Utilice los
operadores de definición para crear este informe.

3) Cree una lista de cargos para los departamentos 10, 50 y 20, en ese orden. Muestre los
ID de cargo y departamento mediante los operadores de definición.
m y
d e
c a
e A
c l
4) Cree un informe que muestre los ID de empleado y de cargo de los empleados que

r a
actualmente tienen un puesto que es el mismo que tenían cuando fueron contratados

O ly
(es decir, han cambiado de cargo pero ahora han vuelto a su puesto original).

l & On
n a e
t
especificaciones:
e r U s
5) El departamento de recursos humanos necesita un informe con las siguientes


I n
ID de departamento y apellido de todos los empleados de la tabla EMPLOYEES,
independientemente de si pertenecen o no a un departamento.

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

r a DEPARTMENTS, independientemente de si hay o no empleados trabajando en


dichos departamentos.

O Para ello, escriba una consulta compuesta.

Oracle Database: Conceptos Fundamentales de SQL I A-60


Práctica 8-1: Uso de los Operadores de Definición
(continuación)

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-61
Soluciones a la Práctica 8-1: Uso de los Operadores de
Definición
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 definición para
crear este informe.
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 países que no tienen
ningún departamento. Muestre el ID de país y el nombre de los países. Utilice los
operadores de definición para crear este informe.
SELECT country_id,country_name
FROM countries
MINUS
SELECT l.country_id,c.country_name
FROM locations l JOIN countries c
ON (l.country_id = c.country_id)
JOIN departments d
ON d.location_id=l.location_id;
m y
d e
3) Cree una lista de cargos para los departamentos 10, 50 y 20, en ese orden. Muestre los
ID de cargo y departamento mediante los operadores de definición.
SELECT distinct job_id, department_id
c a
FROM employees
WHERE department_id = 10
e A
UNION ALL
c l
SELECT DISTINCT job_id, department_id
FROM employees
WHERE department_id = 50 r a
UNION ALL
O ly
FROM employees
l & On
SELECT DISTINCT job_id, department_id

WHERE department_id = 20

n a e
e r
4) Cree un informe que muestre los ID de empleado y de cargo de los empleados que
s
actualmente tienen un puesto que es el mismo que tenían cuando fueron contratados
t U
(es decir, han cambiado de cargo pero ahora han vuelto a su puesto original).
SELECT
I n
employee_id,job_id

c l
FROM
e
INTERSECT
employees

r aSELECT
FROM
employee_id,job_id
job_history;

O
Oracle Database: Conceptos Fundamentales de SQL I A-62
Soluciones a la Práctica 8-1: Uso de los Operadores de
Definición (continuación)
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.
SELECT last_name,department_id,TO_CHAR(null)
FROM employees
UNION
SELECT TO_CHAR(null),department_id,department_name
FROM departments;

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-63
Prácticas de la Lección 9
En esta práctica, 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.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-64
Práctica 9-1: Manipulación 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
la consulta. De esta forma, ve los mensajes de comentarios en la página con separadores
Script Output. Para consultas SELECT, siga utilizando el icono Execute Statement o pulse
[F9] para obtener la salida con formato en la página 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 práctica.
2) Describa la estructura de la tabla MY_EMPLOYEE para identificar los nombres de las
columnas.

m y
d e
c a
ID LAST_NAME FIRST_NAME

e
USERID
A SALARY

1 Patel
c
Ralph l rpatel 895

r a
2 Dancs
O ly
Betty bdancs 860

3 Biri
l & On
Ben bbiri 1100

n a e
4 Newman

t e r U s Chad cnewman 750

5
I n
Ropeburn Audrey aropebur 1550

c l e
3) Cree una sentencia INSERT para agregar la primera fila de datos a la tabla

r aMY_EMPLOYEE a partir de los siguientes datos de ejemplo. No muestre la lista de


columnas en la cláusula INSERT. No introduzca aún todas las filas.
O
Oracle Database: Conceptos Fundamentales de SQL I A-65
Práctica 9-1: Manipulación de Datos (continuación)
4) Rellene la tabla MY_EMPLOYEE con la segunda fila de datos de ejemplo de la lista
anterior. En esta ocasión, muestre explícitamente la lista de columnas en la cláusula
INSERT.
5) Confirme la adición a la tabla.

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.
7) Rellene la tabla con las dos siguientes filas de ejemplo mostradas en el paso 3
mediante la ejecución de la sentencia INSERT en el script que ha creado.
8) Confirme las adiciones a la tabla.

m y
9) Convierta las adiciones de datos en permanentes.
d e
Actualice y suprima datos de la tabla MY_EMPLOYEE.
c a
10) Cambie el apellido del empleado 3 a Drexler.
e A
c l
11) Cambie el salario a 1.000 dólares para todos los empleados con un salario inferior a
900.

r a
12) Verifique los cambios en la tabla.
O ly
l & On
n a e
t e r U s
I n
13) Suprima Betty Dancs de la tabla MY_EMPLOYEE.

l e
14) Confirme los cambios en la tabla.
c
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-66
Práctica 9-1: Manipulación de Datos (continuación)

15) Confirme todos los cambios pendientes.

Controle la transacción 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 adición a la tabla.

18) Marque un punto intermedio en el procesamiento de la transacción.


19) Suprima todas las filas de la tabla MY_EMPLOYEE.
20) Confirme que la tabla está vacía.
m y
22) Confirme que la nueva fila esté intacta.
d e
21) Deseche la operación DELETE más reciente sin desechar la operación INSERT anterior.

c a
e A
c l
r a
23) Convierta la adición de datos en permanente.
O ly
Si tiene tiempo, realice el siguiente ejercicio:

l & On
24) Modifique el script lab_09_06.sql de forma que USERID se genere

n a e
automáticamente concatenando la primera letra del primer nombre y de los primeros
siete caracteres del apellido. El USERID generado debe estar en minúscula. Por lo

t e r
denominado lab_09_24.sql.
U s
tanto, no se debe solicitar el script para el USERID. Guarde este script en un archivo

I n
c l
ID

6
e LAST_NAME

Anthony
FIRST_NAME

Mark
USERID

manthony
SALARY

1230

r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-67
Práctica 9-1: Manipulación de Datos (continuación)
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.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-68
Soluciones a la Práctica 9-1: Manipulación 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 práctica.
a) En el menú File, seleccione Open. En el cuadro de diálogo 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 creación
de la tabla se ha realizado correctamente en la página con separadores Script
Output.
2) Describa la estructura de la tabla MY_EMPLOYEE para identificar los nombres de las
columnas.
DESCRIBE my_employee

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 cláusula INSERT.

ID LAST_NAME FIRST_NAME USERID SALARY


m y
d e
1 Patel Ralph rpatel

c a895

2 Dancs Betty

e
bdancs
A 860

3 Biri Ben
c l bbiri 1100

r a
4 Newman
O ly
Chad cnewman 750

5 Ropeburn
l & On
Audrey aropebur 1550

n a e
t e r
INSERT INTO my_employee
U s
n
VALUES (1, 'Patel', 'Ralph', 'rpatel', 895);
I
e
4) Rellene la tabla MY_EMPLOYEE con la segunda fila de datos de ejemplo de la lista
l
anterior. En esta ocasión, muestre explícitamente la lista de columnas en la cláusula
c
INSERT.

r aINSERT INTO my_employee (id, last_name, first_name,

O userid, salary)

Oracle Database: Conceptos Fundamentales de SQL I A-69


Soluciones a la Práctica 9-1: Manipulación de Datos
(continuación)
VALUES (2, 'Dancs', 'Betty', 'bdancs', 860);

5) Confirme las adiciones a la tabla.


SELECT *
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',
'&p_userid', &p_salary);

7) Rellene la tabla con las dos siguientes filas de ejemplo mostradas en el paso 3
mediante la ejecución de la sentencia INSERT en el script que ha creado.
INSERT INTO my_employee
VALUES (&p_id, '&p_last_name', '&p_first_name',
'&p_userid', &p_salary);

8) Confirme las adiciones a la tabla.


SELECT *
m y
FROM my_employee;

d e
9) Convierta las adiciones de datos en permanentes.
COMMIT;
c a
e A
c l
Actualice y suprima datos de la tabla MY_EMPLOYEE.

r a
10) Cambie el apellido del empleado 3 a Drexler.
UPDATE
SET
my_employee
O ly
last_name = 'Drexler'
WHERE id = 3;
l & On
a e
11) Cambie el salario a 1.000 dólares para todos los empleados con un salario inferior a 900.

n
UPDATE
SET
t e r
my_employee
salary = 1000
U s
WHERE
n
salary < 900;

I
12) Verifique los cambios en la tabla.

c l e
SELECT *

r aFROM my_employee;

13) Suprima Betty Dancs de la tabla MY_EMPLOYEE.


O DELETE

Oracle Database: Conceptos Fundamentales de SQL I A-70


Soluciones a la Práctica 9-1: Manipulación de Datos
(continuación)
FROM my_employee
WHERE last_name = 'Dancs';
14) Confirme los cambios en la tabla.
SELECT *
FROM my_employee;

15) Confirme todos los cambios pendientes.


COMMIT;

Controle la transacción 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.
INSERT INTO my_employee
VALUES (&p_id, '&p_last_name', '&p_first_name',
'&p_userid', &p_salary);

17) Confirme la adición a la tabla.


SELECT *
FROM my_employee;

18) Marque un punto intermedio en el procesamiento de la transacción.


m y
SAVEPOINT step_17;
d e
19) Suprima todas las filas de la tabla MY_EMPLOYEE.
c a
DELETE
FROM my_employee;

e A
20) Confirme que la tabla está vacía.
c l
SELECT *
FROM my_employee; r a
O ly
21) Deseche la operación DELETE más reciente sin desechar la operación INSERT
anterior.
l & On
ROLLBACK TO step_17;

n a e
SELECT *
t e r U s
22) Confirme que la nueva fila esté intacta.

FROM
I n
my_employee;

c l e
23) Convierta la adición de datos en permanente.
COMMIT;

r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-71
Soluciones a la Práctica 9-1: Manipulación de Datos
(continuación)
Si tiene tiempo, realice el siguiente ejercicio:
24) Modifique el script lab_09_06.sql de forma que USERID se genere
automáticamente concatenando la primera letra del primer nombre y de los primeros
siete caracteres del apellido. El USERID generado debe estar en minúscula. Por lo
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) ||
substr('&p_last_name', 1, 7)), &p_salary);
SET VERIFY ON
SET ECHO ON
UNDEFINE p_first_name
UNDEFINE p_last_name

25) Ejecute el script lab_09_24.sql para insertar el siguiente registro:

ID LAST_NAME FIRST_NAME USERID SALARY

6 Anthony Mark manthony 1230


m y
26) Confirme que se ha agregado la nueva fila con el USERID correcto.
d e
SELECT *
FROM my_employee
c a
WHERE ID='6';

e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-72
Prácticas de la Lección 10
Cree nuevas tablas mediante la sentencia CREATE TABLE. Confirme que la nueva tabla
se ha agregado a la base de datos. También aprenderá a definir el estado de una tabla
como READ ONLY y, a continuación, revertir a READ/WRITE.
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 página 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 página con separadores Results.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-73
Práctica 10-1: Uso de Sentencias DDL para Crear y Gestionar
Tablas
Column Name ID NAME
Key Type Primary key
Nulls/Unique
FK Table
FK Column
Data type NUMBER VARCHAR2
Length 7 25

1) Cree la tabla DEPT según el siguiente gráfico de instancias de tabla. Guarde la


sentencia en un script denominado lab_10_01.sql y, a continuación, ejecute el
script para crear la tabla. Confirme que se ha creado la tabla.

m y
que necesite.
d e
2) Rellene la tabla DEPT con datos de la tabla DEPARTMENTS. Incluya sólo las columnas

c a
3) Cree la tabla EMP según el siguiente gráfico de instancias de tabla. Guarde la
sentencia en un script denominado lab_10_03.sql y, a continuación, ejecute el
script para crear la tabla. Confirme que se ha creado la tabla.

e A
Column Name ID
c l
LAST_NAME FIRST_NAME DEPT_ID
Key Type
Nulls/Unique r a
FK Table O ly DEPT
FK Column
l & On ID
Data type NUMBER

n a e VARCHAR2 VARCHAR2 NUMBER


Length

t
7

e r U s 25 25 7

I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-74
Práctica 10-1: Uso de Sentencias DDL para Crear y Gestionar
Tablas (continuación)
4) Cree la tabla EMPLOYEES2 según la estructura de la tabla EMPLOYEES. Incluya sólo
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.
5) Modifique el estado de la tabla EMPLOYEES2 a sólo lectura. Tenga en cuenta que esta
opción está soportada en Oracle Database 11g.

ID FIRST_NAME LAST_NAME SALARY DEPT_ID


34 Grant Marcie 5678 10

6) Intente insertar la siguiente fila en la tabla EMPLOYEES2:


Aparecerá el siguiente mensaje de error:

m y
d e
c a
e A
7) Revierta la tabla EMPLOYEES2 al estado de lectura/escritura. Ahora, vuelva a intentar
insertar la misma fila. Tenga en cuenta que esta opción está soportada en Oracle
Database 11g.
c l
a
Deben aparecer los siguientes mensajes:
r
O ly
l
8) Borre la tabla EMPLOYEES2. & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-75
Soluciones a la Práctica 10-1: Uso de Sentencias DDL para Crear
y Gestionar Tablas

Column Name ID NAME


Key Type Primary key
Nulls/Unique
FK Table
FK Column
Data type NUMBER VARCHAR2
Length 7 25

1) Cree la tabla DEPT según el siguiente gráfico de instancias de tabla. Guarde la


sentencia en un script denominado lab_10_01.sql y, a continuación, ejecute el
script para crear la tabla. Confirme que se ha creado la tabla.
CREATE TABLE dept
(id NUMBER(7)CONSTRAINT department_id_pk PRIMARY KEY,
name VARCHAR2(25));

m y
Para confirmar que se ha creado la tabla y visualizar su estructura, ejecute el siguiente
comando:

d e
DESCRIBE dept

c a
2) Rellene la tabla DEPT con datos de la tabla DEPARTMENTS. Incluya sólo aquellas
columnas que necesite.

e A
INSERT INTO dept

c
SELECT department_id, department_namel
FROM departments;
r a
O ly
3) Cree la tabla EMP según el siguiente gráfico de instancias de tabla. Guarde la
sentencia en un script denominado lab_10_03.sql y, a continuación, ejecute el
& On
script para crear la tabla. Confirme que se ha creado la tabla.
l
Column Name ID
n a e LAST_NAME FIRST_NAME DEPT_ID
Key Type
Nulls/Unique
t e r U s
FK Table
I n DEPT

c l e
FK Column
Data type NUMBER VARCHAR2 VARCHAR2
ID
NUMBER

r a Length 7 25 25 7

O
Oracle Database: Conceptos Fundamentales de SQL I A-76
Soluciones a la Práctica 10-1: Uso de Sentencias DDL para Crear
y Gestionar Tablas (continuación)

CREATE TABLE emp


(id NUMBER(7),
last_name VARCHAR2(25),
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 según la estructura de la tabla EMPLOYEES. Incluya sólo


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.
CREATE TABLE employees2 AS
SELECT employee_id id, first_name, last_name, salary,
department_id dept_id
FROM employees;

5) Modifique el estado de la tabla EMPLOYEES2 a sólo lectura.


m y
ALTER TABLE employees2 READ ONLY

d e
6) Intente insertar la siguiente fila en la tabla EMPLOYEES2.
ID FIRST_NAME LAST_NAME SALARY DEPT_ID
c a
34 Grant Marcie
e
5678 10 A
c l
r a
Aparecerá el mensaje de error “Update operation not allowed on table”. Por lo tanto,

O ly
no se le permitirá insertar ninguna fila en la tabla porque se ha asignado un estado de
sólo lectura.
INSERT INTO employees2
l & On
a e
VALUES (34, 'Grant','Marcie',5678,10)

n
t e r
insertar la misma fila.
U s
7) Revierta la tabla EMPLOYEES2 al estado de lectura/escritura. Ahora, vuelva a intentar

I n
Ahora, debido a que a la tabla se le ha asignado un estado READ WRITE, podrá
insertar una fila en la tabla.

c l e
ALTER TABLE employees2 READ WRITE

Ora INSERT INTO employees2


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

Oracle Database: Conceptos Fundamentales de SQL I A-77


Soluciones a la Práctica 10-1: Uso de Sentencias DDL para Crear
y Gestionar Tablas (continuación)
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 continuación, ejecute el
comando DROP TABLE. Se borrará la tabla EMPLOYEES2.
DROP TABLE employees2;

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-78
Prácticas de la Lección 11
La Parte 1 de la práctica de esta lección ofrece varios ejercicios de creación, uso y
eliminación de vistas. Complete las preguntas de la 1 a la 6 de esta lección.
La Parte 2 de la práctica de esta lección ofrece varios ejercicios de creación y uso de una
secuencia, un índice y un sinónimo. Complete las preguntas de la 7 a la 10 de esta
lección.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-79
Práctica 11-1: Creación 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
números y los apellidos de los empleados y en los números 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.

3) Con la vista EMPLOYEES_VU, escriba una consulta para el departamento de recursos


humanos para visualizar todos los nombres de empleados y números de departamento.

m y
d e
c a
e A

c l
r a
O ly
l & On
4) El departamento 50 necesita acceso a los datos de los empleados. Cree una vista con
el nombre DEPT50 que contenga los números y apellidos de los empleados y los
a e
números de departamento de todos los empleados del departamento 50. Se le ha
n
t e r s
pedido que etiquete las columnas de la vista como EMPNO, EMPLOYEE y DEPTNO. Por
motivos de seguridad, no permita la reasignación de un empleado a otro departamento
U
I n
a través de la vista.
5) Visualice la estructura y el contenido de la vista DEPT50.

c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-80
Práctica 11-1: Creación de Otros Objetos de Esquema
(continuación)

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
tabla DEPT. La secuencia debe empezar en 200 y tener un valor máximo de 1.000.
Aplique incrementos de 10 a la secuencia. Asigne a la secuencia el nombre
DEPT_ID_SEQ.
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. Asegúrese de utilizar la secuencia que
ha creado para la columna ID. Agregue dos departamentos: Education y
Administration. Confirme las adiciones. Ejecute los comandos del script.
9) Cree un índice no único en la columna NAME de la tabla DEPT.
m y
10) Cree un sinónimo para la tabla EMPLOYEES. Llámelo EMP.

d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-81
Soluciones a la Práctica 11-1: Creación 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
números y los apellidos de los empleados y en los números 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.
SELECT *
FROM employees_vu;
3) Con la vista EMPLOYEES_VU, escriba una consulta para el departamento de recursos
humanos para visualizar todos los nombres de empleados y números de
departamento.
SELECT employee, department_id
FROM employees_vu;
4) El departamento 50 necesita acceso a los datos de los empleados. Cree una vista con
el nombre DEPT50 que contenga los números y apellidos de los empleados y los
m y
d e
números de departamento de todos los empleados del departamento 50. Se le ha
solicitado que etiquete las columnas de la vista como EMPNO, EMPLOYEE y DEPTNO.

departamento a través de la vista.


c a
Por motivos de seguridad, no permita la reasignación de un empleado a otro

CREATE VIEW dept50 AS

e A
SELECT
l
employee_id empno, last_name employee,
department_id deptno
c
FROM
WHERE
employees
department_id = 50
r a
O ly
WITH CHECK OPTION CONSTRAINT emp_dept_50;
5) Visualice la estructura y el contenido de la vista DEPT50.
DESCRIBE dept50
l & On
SELECT *
n a e
FROM dept50;

t e r U s
6) Pruebe la vista. Intente reasignar Matos al departamento 80.
UPDATE
I n
dept50
SET

c l
WHEREe deptno = 80
employee = 'Matos';

Ora El error se debe a que la vista DEPT50 se ha creado con la restricción 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 Práctica 11-1: Creación de Otros Objetos de
Esquema (continuación)
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 máximo de 1.000.
Aplique incrementos de 10 a la secuencia. Asigne a la secuencia el nombre
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. Asegúrese de utilizar la secuencia que
ha creado para la columna ID. Agregue dos departamentos: Education y
Administration. Confirme las adiciones. Ejecute los comandos del script.
INSERT INTO dept
VALUES (dept_id_seq.nextval, 'Education');

INSERT INTO dept


VALUES (dept_id_seq.nextval, 'Administration');

9) Cree un índice no único en la columna NAME de la tabla DEPT.

m y
CREATE INDEX dept_name_idx ON dept (name);

10) Cree un sinónimo para la tabla EMPLOYEES. Llámelo EMP.


d e
CREATE SYNONYM emp FOR EMPLOYEES;
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-83
Prácticas del Apéndice F
Esta práctica está destinada a proporcionarle experiencia práctica en la extracción de
datos desde más de una tabla utilizando sintaxis de unión en Oracle.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-84
Práctica F-1: Sintaxis de Unión 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 ubicación, dirección, ciudad, estado o provincia y país en la salida.
Ejecute la consulta.

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


Escriba una consulta para mostrar el apellido, número y nombre de departamento de
todos los empleados. Ejecute la consulta.


m y
d e
c a
3) El departamento de recursos humanos necesita un informe de todos los empleados de

empleados que trabajan en Toronto.


e A
Toronto. Muestre el apellido, cargo, número y nombre de departamento de todos los

c l
r a
O ly
4) Cree un informe para mostrar el apellido y número de empleado junto con el apellido

l & On
y número de gestor de sus gestores. Etiquete las columnas como Employee, Emp#,
Manager y Mgr#, respectivamente. Guarde la sentencia SQL como lab_f_04.sql.

n a e
t e r U s
I n
c l e
Ora …

Oracle Database: Conceptos Fundamentales de SQL I A-85


Práctica F-1: Sintaxis de Unión en Oracle (continuación)
5) Modifique lab_f_04.sql para mostrar todos los empleados, incluido King, que no
tienen gestor. Ordene los resultados por número de empleado. Guarde la sentencia
SQL como lab_f_05.sql. Ejecute la consulta en el archivo lab_f_05.sql.

6) Cree un informe del departamento de recursos humanos que muestre los apellidos y
números 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.

m y
d e
c a

e A
c l
r a
O ly
7) El departamento de recursos humanos necesita un informe sobre los salarios y grados

l & On
de cargo. Para familiarizarse con la tabla JOB_GRADES, en primer lugar, muestre la
estructura de la tabla JOB_GRADES. A continuación, cree una consulta que muestre el

n a e
apellido, cargo, nombre de departamento, salario y grado de todos los empleados.

t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-86
Práctica F-1: Sintaxis de Unión en Oracle (continuación)

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


8) El departamento de recursos humanos desea determinar los nombres de todos los
empleados contratados después de Davies. Cree una consulta para mostrar el
nombre y la fecha de contratación de cualquier empleado contratado después del
empleado Davies.

m y
d e
c a
e A
c l
9) El departamento de recursos humanos necesita buscar el nombre y la fecha de

r a
contratación de todos los empleados contratados antes que sus gestores, junto con el
nombre y fecha de contratación del gestor. Guarde el script en un archivo
denominado lab_f_09.sql.
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-87
Soluciones a las Prácticas F-1: Sintaxis de Unión 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 ubicación, dirección, ciudad, estado o provincia y país en la salida.
Ejecute la consulta.
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, número y nombre de departamento de
todos los empleados. Ejecute la consulta.
SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id = d.department_id;
3) El departamento de recursos humanos necesita un informe de todos los empleados de
Toronto. Muestre el apellido, cargo, número y nombre de departamento de todos los
empleados que trabajan en Toronto.
SELECT e.last_name, e.job_id, e.department_id,
d.department_name
FROM employees e, departments d , locations l
m y
WHERE e.department_id = d.department_id
AND d.location_id = l.location_id
d e
AND LOWER(l.city) = 'toronto';
c a
A
4) Cree un informe para mostrar el apellido y número de empleado junto con el apellido
del gestor del empleado y el número de gestor. Etiquete las columnas como
e
como lab_f_04.sql.
c l
Employee, Emp#, Manager y Mgr#, respectivamente. Guarde la sentencia SQL

r a
SELECT w.last_name "Employee", w.employee_id "EMP#",

FROM O ly
m.last_name "Manager", m.employee_id "Mgr#"
employees w , employees m
& On
WHERE w.manager_id = m.employee_id;
l
a e
5) Modifique lab_f_04.sql para mostrar todos los empleados, incluido King, que no
n
t e r
tienen gestor. Ordene los resultados por número de empleado. Guarde la sentencia
s
SQL como lab_f_05.sql. Ejecute la consulta en el archivo lab_f_05.sql.
U
I n
SELECT w.last_name "Employee", w.employee_id "EMP#",
m.last_name "Manager", m.employee_id "Mgr#"
FROM

c l e employees w, employees m
WHERE w.manager_id = m.employee_id (+);

r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-88
Soluciones a las Prácticas F-1: Sintaxis de Unión en Oracle
(continuación)
6) Cree un informe del departamento de recursos humanos que muestre los apellidos y
números 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.
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


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

SELECT e.last_name, e.job_id, d.department_name,


e.salary, j.grade_level
FROM employees e, departments d, job_grades j
WHERE e.department_id = d.department_id
AND e.salary BETWEEN j.lowest_sal AND j.highest_sal;
m y
Si desea superarse a sí mismo, complete los siguientes ejercicios:
d e
c a
8) El departamento de recursos humanos desea determinar los nombre de todos los
empleados contratados después de Davies. Cree una consulta para mostrar el
A
nombre y la fecha de contratación de cualquier empleado contratado después de

e
Davies.

c l
SELECT
FROM
r a
e.last_name, e.hire_date
employees e , employees davies
WHERE
AND
O ly
davies.last_name = 'Davies'
davies.hire_date < e.hire_date;

l & On
9) El departamento de recursos humanos necesita buscar el nombre y la fecha de

n a e
contratación de todos los empleados contratados antes que sus gestores, junto con el
nombre y fecha de contratación del gestor. Etiquete las columnas como Employee,

t e r U s
Emp Hired, Manager y Mgr Hired, respectivamente. Guarde el script en un
archivo denominado lab_f_09.sql.
SELECT
I n
w.last_name, w.hire_date, m.last_name, m.hire_date
FROM

l
WHERE

c
AND
e employees w , employees m
w.manager_id = m.employee_id
w.hire_date < m.hire_date;

r a
O
Oracle Database: Conceptos Fundamentales de SQL I A-89
m y
d e
ca
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Apéndice AP
Prácticas y Soluciones adicionales

m y
d e
ca
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Tabla de Contenido
Prácticas Adicionales .......................................................................................................... 3
Práctica 1-1 ..................................................................................................................... 4
Soluciones a la Práctica 1-1 .......................................................................................... 12
Caso Práctico .................................................................................................................... 17
Práctica 2-1 ................................................................................................................... 19
Soluciones a la Práctica 2-1 .......................................................................................... 27

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-2
Prácticas Adicionales

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-3
Práctica 1-1
Estos ejercicios se pueden utilizar como práctica adicional después de tratar los siguientes
temas: sentencia SQL SELECT básica, comandos de SQL Developer básicos y funciones
SQL.
1) El departamento de recursos humanos necesita obtener los datos de todos los
oficinistas que se contrataron después del año 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 comisión de dichos
empleados. Ordene los datos por salario en orden descendente.

3) Por motivos de presupuesto, el departamento de recursos humanos necesita un


informe de los aumentos programados. El informe debe mostrar a los empleados que
no perciben comisiones, pero que tienen un aumento del 10% del salario (redondee
los salarios).
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-4
Práctica 1-1 (continuación)
4) Cree un informe de los empleados y la duración de los contratos. Muestre los
apellidos de todos los empleados junto con el número de años y de meses completos
que han estado contratados. Ordene el informe según la duración de las
contrataciones. El empleado que haya estado contratado durante más tiempo
aparecerá al principio de la lista.

m y
d e
c a
e A
l
5) Muestre los empleados cuyo apellido empiece por las letras "J", "K", "L" o "M".
c
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-5
Práctica 1-1 (continuación)
6) Cree un informe que muestre todos los empleados e indique con las palabras Yes o No
si perciben comisiones. Utilice la expresión DECODE en la consulta.

m y
d e
c a
e A
Estos ejercicios se pueden utilizar como práctica adicional después de tratar los siguientes
temas: sentencia SQL SELECT básica, comandos de SQL Developer básicos, funciones
SQL, uniones y funciones de grupo.
c l
r a
7) Cree un informe que muestre el nombre de departamento, el ID de ubicación, el
nombre, el cargo y el salario de los empleados que trabajan en una ubicación
O ly
concreta. Solicite al usuario la ubicación. Por ejemplo, si el usuario introduce 1800,

& On
se obtienen los siguientes resultados:

l
n a e
t e r U s
I n
8) Busque el número de empleados cuyo apellido termine con la letra "n". Cree dos
soluciones posibles.

c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-6
Práctica 1-1 (continuación)
9) Cree un informe que muestre el nombre, la ubicación y el número de empleados de
cada departamento. Asegúrese de que el informe sólo incluye los departamentos sin
empleados.

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.

11) Cree un informe que muestre los cargos de los departamentos Administration y
m y
Executive. Muestre también el número de empleados de dichos cargos. Muestre el
cargo con el mayor número de empleados en primer lugar.
d e
c a
e A
c l
r a
Estos ejercicios se pueden utilizar como práctica adicional después de tratar los siguientes
temas: sentencias SQL SELECT básicas, comandos de SQL Developer básicos, funciones

O ly
SQL, uniones, funciones de grupo y subconsultas.

(antes del 16 del mes).


l & On
12) Muestre todos los empleados que se hayan contratado en la primera mitad del mes

n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-7
Práctica 1-1 (continuación)
13) Cree un informe que muestre lo siguiente para todos los empleados: apellido, salario
y salario expresado en términos de miles de dólares.

m y
d e
c a
14) Muestre todos los empleados cuyo gestor tenga un salario superior a 15.000 dólares.

gestor y grado de salario del gestor.


e A
Muestre los siguientes datos: nombre del empleado, nombre del gestor, salario del

c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-8
Práctica 1-1 (continuación)
15) Muestre el número de departamento, nombre, número de empleados y salario medio
de todos los departamentos, junto con los nombres, salarios y cargos de los
empleados que trabajan en cada departamento.

16) Cree un informe que muestre el número de departamento y el salario más bajo del
m y
departamento con el salario medio más alto.
d e
c a
A
17) Cree un informe que muestre los departamentos en los que no haya ningún vendedor.
e
en la salida.
c l
Incluya el número y nombre de departamento, así como el ID de gestor y la ubicación

r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-9
Práctica 1-1 (continuación)
18) Cree los siguientes informes estadísticos para el departamento de recursos humanos:
incluya el número y nombre de departamento, así como el número de empleados que
trabajan en cada departamento que:
a) Contrate menos de tres empleados:

b) Tenga el mayor número de empleados:

c) Tenga el menor número de empleados:

19) Cree un informe que muestre el número de empleado, el apellido, el salario, el


número de departamento y el salario medio del departamento para todos los
empleados.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-10
Práctica 1-1 (continuación)
20) Muestre todos los empleados que se hayan contratado el día de la semana en que se
contratara el mayor número de empleados.

21) Cree una visión general de los aniversarios según la fecha de contratación de los
empleados. Ordene los aniversarios en orden ascendente.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-11
Soluciones a la Práctica 1-1
Estos ejercicios se pueden utilizar como práctica adicional después de tratar los siguientes
temas: sentencia SQL SELECT básica, comandos de SQL Developer básicos y funciones
SQL.
1) El departamento de recursos humanos necesita obtener los datos de todos los
oficinistas que se contrataron después del año 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 comisión de dichos
empleados. Ordene los datos por salario en orden descendente.
SELECT last_name, job_id, salary, commission_pct
FROM employees
WHERE commission_pct IS NOT NULL
ORDER BY salary DESC;
3) Por motivos de presupuesto, el departamento de recursos humanos necesita un
informe de los aumentos programados. El informe debe mostrar a los empleados que
no perciben comisiones pero que tienen un aumento del 10% del salario (redondee los
salarios).
m y
SELECT 'The salary of '||last_name||' after a 10% raise is '
d e
FROM
|| ROUND(salary*1.10) "New salary"
employees
c a
WHERE commission_pct IS NULL;

e A
4) Cree un informe de los empleados y la duración de los contratos. Muestre los

c l
apellidos de todos los empleados junto con el número de años y de meses completos

r a
que han estado contratados. Ordene el informe según la duración de las
contrataciones. El empleado que haya estado contratado durante más tiempo

O ly
aparecerá al principio de la lista.
SELECT last_name,

l & On
TRUNC(MONTHS_BETWEEN(SYSDATE, hire_date) / 12) YEARS,

MONTHS
n a e
TRUNC(MOD(MONTHS_BETWEEN(SYSDATE, hire_date), 12))

FROM employees

t e r U s
ORDER BY years DESC, MONTHS desc;

I n
5) Muestre los empleados cuyo apellido empiece por las letras "J", "K", "L" o "M".

c l
FROM e
SELECT last_name
employees

r aWHERE SUBSTR(last_name, 1,1) IN ('J', 'K', 'L', 'M');

O
Oracle Database: Conceptos Fundamentales de SQL I AP-12
Soluciones a la Práctica 1-1 (continuación)
6) Cree un informe que muestre todos los empleados e indique con las palabras Yes o No
si perciben comisiones. Utilice la expresión DECODE en la consulta.
SELECT last_name, salary,
decode(commission_pct, NULL, 'No', 'Yes') commission
FROM employees;

Estos ejercicios se pueden utilizar como práctica adicional después de tratar los siguientes
temas: sentencia SQL SELECT básica, comandos de SQL Developer básicos, funciones
SQL, uniones y funciones de grupo.
7) Cree un informe que muestre el nombre de departamento, el ID de ubicación, el
nombre, el cargo y el salario de los empleados que trabajan en una ubicación
concreta. Solicite al usuario la ubicación.
a) Introduzca 1800 para location_id cuando se le solicite.
SELECT d.department_name, d.location_id, e.last_name,
e.job_id, e.salary
FROM employees e, departments d
WHERE e.department_id = d.department_id
AND d.location_id = &location_id;

8) Busque el número de empleados cuyo apellido termine con la letra "n". Cree dos
soluciones posibles.
m y
SELECT COUNT(*)
d e
FROM
WHERE
employees
last_name LIKE '%n';
c a
--or
SELECT COUNT(*)
e A
FROM
WHERE
employees

c l
SUBSTR(last_name, -1) = 'n';

r a
9) Cree un informe que muestre el nombre, la ubicación y el número de empleados de

O ly
cada departamento. Asegúrese de que el informe sólo incluye los departamentos sin
empleados.

l & On
SELECT d.department_id, d.department_name,

FROM
d.location_id,

n a e
COUNT(e.employee_id)
employees e RIGHT OUTER JOIN departments d
ON

t e r U s
e.department_id = d.department_id
GROUP BY d.department_id, d.department_name, d.location_id;

I n
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

l e
dichos departamentos.
c
r aSELECT DISTINCT job_id
FROM employees

O WHERE department_id IN (10, 20);

Oracle Database: Conceptos Fundamentales de SQL I AP-13


Soluciones a la Práctica 1-1 (continuación)
11) Cree un informe que muestre los cargos de los departamentos Administration y
Executive. Muestre también el número de empleados de dichos cargos. Muestre el
cargo con el mayor número de empleados en primer lugar.
SELECT e.job_id, count(e.job_id) FREQUENCY
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 práctica adicional después de tratar los siguientes
temas: sentencias SQL SELECT básicas, comandos de SQL Developer básicos, 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).
SELECT last_name, hire_date
FROM employees
WHERE TO_CHAR(hire_date, 'DD') < 16;
13) Cree un informe que muestre lo siguiente para todos los empleados: apellido, salario
y salario expresado en términos de miles de dólares.
m y
SELECT last_name, salary, TRUNC(salary, -3)/1000
FROM employees;
d e
Thousands

c a
14) Muestre todos los empleados cuyo gestor tenga un salario superior a 15.000 dólares.

gestor y grado de salario del gestor.


e A
Muestre los siguientes datos: nombre del empleado, nombre del gestor, salario del

c l
SELECT e.last_name, m.last_name manager, m.salary,
j.grade_level
FROM
r a
employees e JOIN employees m
ON
JOIN O ly
e.manager_id = m.employee_id
job_grades j
ON
AND m.salary > 15000;
l & On
m.salary BETWEEN j.lowest_sal AND j.highest_sal

n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-14
Soluciones a la Práctica 1-1 (continuación)
15) Muestre el número de departamento, nombre, número 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,
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,
e2.salary,
e2.job_id
ORDER BY d.department_id, employees;

16) Cree un informe que muestre el número de departamento y el salario más bajo del
departamento con el salario medio más alto.
SELECT department_id, MIN(salary)
FROM employees
GROUP BY department_id
HAVING AVG(salary) = (SELECT MAX(AVG(salary))
m y
FROM employees
GROUP BY department_id);
d e
c a
17) Cree un informe que muestre los departamentos en los que no haya ningún vendedor.

A
Incluya el número y nombre de departamento, así como la ubicación, en la salida.

e
SELECT *
FROM departments
c l
r a
WHERE department_id NOT IN(SELECT department_id
FROM employees

O ly
WHERE job_id = 'SA_REP'
AND department_id IS NOT NULL);

l & On
18) Cree los siguientes informes estadísticos para el departamento de recursos humanos:

n a e
incluya el número y nombre de departamento, así como el número de empleados que
trabajan en cada departamento que:

e r s
a) Contrate menos de tres empleados:
t U
I n
SELECT d.department_id, d.department_name, COUNT(*)
FROM departments d JOIN employees e
ON

c l e d.department_id = e.department_id
GROUP BY d.department_id, d.department_name

r aHAVING COUNT(*) < 3;

O
Oracle Database: Conceptos Fundamentales de SQL I AP-15
Soluciones a la Práctica 1-1 (continuación)
b) Tenga el mayor número 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
HAVING COUNT(*) = (SELECT MAX(COUNT(*))
FROM employees
GROUP BY department_id);

c) Tenga el menor número 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
HAVING COUNT(*) = (SELECT MIN(COUNT(*))
FROM employees
GROUP BY department_id);
19) Cree un informe que muestre el número de empleado, el apellido, el salario, el
número de departamento y el salario medio del departamento para todos los
empleados.
SELECT e.employee_id, e.last_name, e.department_id, e.salary,
m y
AVG(s.salary)
FROM employees e JOIN employees s
d e
ON e.department_id = s.department_id
GROUP BY e.employee_id, e.last_name, e.department_id,
c a
e.salary;

e A
20) Muestre todos los empleados que se hayan contratado el día de la semana en que se
l
contratara el mayor número de empleados.
c
r a
SELECT last_name, TO_CHAR(hire_date, 'DAY') day
FROM employees

O ly
WHERE TO_CHAR(hire_date, 'Day') =
(SELECT TO_CHAR(hire_date, 'Day')
FROM employees
l & On
GROUP BY TO_CHAR(hire_date, 'Day')
a e
HAVING COUNT(*) = (SELECT MAX(COUNT(*))
n
'Day')));
t e r U
FROM
s employees
GROUP BY TO_CHAR(hire_date,

I n
21) Cree una visión general de los aniversarios según la fecha de contratación de los

c l e
empleados. Ordene los aniversarios en orden ascendente.
SELECT last_name, TO_CHAR(hire_date, 'Month DD') BIRTHDAY

r aFROM employees
ORDER BY TO_CHAR(hire_date, 'DDD');

O
Oracle Database: Conceptos Fundamentales de SQL I AP-16
Caso Práctico
En este caso práctico, creará un juego de tablas de base de datos para una aplicación de
vídeo. Después de crear las tablas, inserte, actualice y suprima registros de una base de
datos de videoclub y genere un informe. La base de datos sólo contiene las tablas
esenciales.
A continuación, se muestra un diagrama de las entidades y los atributos de una aplicación
de vídeo:

TITLE
de #* id
RESERVATION * title
#* res date el asunto * description
de o rating
configurado o category
para o release date

disponible
como

responsable
de
una copia

m y
MEMBER
TITLE_COPY
#* id
d e
#* id
* last name
* status
c a
o first name
e A el asunto de
o address
o city de
c l
responsable
realizado en
o phone
* join date r a RENTAL
O ly creado #* book date

l & On para o act ret date


o exp ret date

n a e
e r s
Nota: si desea crear las tablas, puede ejecutar los comandos del script buildtab.sql en
t U
I n
SQL Developer. Si desea borrar las tablas, puede ejecutar los comandos del script
dropvid.sql en SQL Developer. A continuación, puede ejecutar los comandos del

c l e
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.

r a • Si utiliza el script buildtab.sql para crear las tablas, empiece en el paso 4.

O
Oracle Database: Conceptos Fundamentales de SQL I AP-17
• Si utiliza el script dropvid.sql para eliminar las tablas de vídeos, empiece en el
paso 1.
• Si utiliza el script buildvid.sql para crear y rellenar las tablas, empiece en el
paso 6(b).

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-18
Práctica 2-1
1) Cree las tablas según el siguiente gráfico de instancias de tabla. Seleccione los tipos
de dato adecuados y asegúrese de agregar restricciones de integridad.
a) Nombre de la tabla: MEMBER
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
Data NUMBER VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 DATE
Type
Length 10 25 25 100 30 15

b) Nombre de la tabla: TITLE

Column_
Name
TITLE_ID TITLE DESCRIPTION RATING CATEGORY
y
RELEASE_
DATE
m
Key
Type
PK

d e
Null/
Unique
NN,U NN NN
c a
Check

e
G, PG, R,
NC17, NR A
DRAMA,
COMEDY,

c l ACTION,
CHILD,

r a SCIFI,
DOCUMEN

Data Type NUMBER VARCHAR2O ly VARCHAR2 VARCHAR2


TARY
VARCHAR2 DATE

Length 10
l
60 & On 400 4 20

n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-19
Práctica 2-1 (continuación)

c) Nombre de la tabla: TITLE_COPY


Column COPY_ID TITLE_ID STATUS
Name
Key PK PK,FK
Type
Null/ NN,U NN,U NN
Unique
Check AVAILABLE,
DESTROYED,
RENTED,
RESERVED
FK Ref TITLE
Table
FK Ref TITLE_ID
Col
Data NUMBER NUMBER VARCHAR2
Type
Length 10 10 15

d) Nombre de la tabla: RENTAL


m y
Column BOOK_ MEMBER_ COPY_ ACT_RET_ EXP_RET_
d e TITLE_
Name
Key
DATE
PK
ID
PK,FK1
ID
PK,FK2
DATE DATE

c a ID
PK,FK2
Type
Default System
e A
System Date
Value
FK Ref
Date
MEMBER
c l TITLE_
+ 2 days
TITLE_
Table
FK Ref r a
MEMBER_I
COPY
COPY_
COPY
TITLE_ID
Col D
O ly ID
Data
Type
DATE

l & On
NUMBER NUMBER DATE DATE NUMBER

Length

n a e
10 10 10

t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-20
Práctica 2-1 (continuación)
e) Nombre de la tabla: RESERVATION

Column RES_ MEMBER_ TITLE_


Name DATE ID ID
Key PK PK,FK1 PK,FK2
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
Length 10 10

2) Verifique que las tablas se han creado correctamente comprobando en el navegador


de conexiones de SQL Developer.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-21
Práctica 2-1 (continuación)
3) Cree secuencias para identificar de forma única cada fila de las tablas MEMBER y TITLE.
a) Número 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) Número de título para la tabla TITLE: empezar por 92; no permitir
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.

m y
d e
c a
e A
c l
r a
4) Agregue datos a las tablas. Cree un script para cada juego de datos que desee agregar.

O ly
a) Agregue los títulos de las películas a la tabla TITLE. Escriba un script para

l & On
introducir la información sobre las películas. Guarde las sentencias en un script
denominado lab_apcs_4a.sql. Utilice las secuencias para identificar de forma

n a e
única cada título. Introduzca las fechas de versión en formato DD-MES-AAAA.
Recuerde que las comillas simples se deben gestionar de forma especial en los

t e r U s
campos de caracteres. Verifique las adiciones.

I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-22
Práctica 2-1 (continuación)

Title Description Rating Category Release_date


Willie and All of Willie’s friends G CHILD 05-OCT-1995
Christmas Too make a Christmas list for
Santa, but Willie has yet
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
in this classic.
My Day Off With a little luck and a lot PG COMEDY 12-JUL-1995
of ingenuity, a teenager
skips school for a day in
New York.
Miracles on Ice A six-year-old has doubts PG DRAMA 12-SEP-1995
about Santa Claus, but she
discovers that miracles

Soda Gang
really do exist.
After discovering a cache NR ACTION 01-JUN-1995
m y
of drugs, a young couple
find themselves pitted
d e
against a vicious gang.
b) Agregue datos a la tabla MEMBER. Guarde las sentencias insert en un script
c a
e
utilizar la secuencia para agregar los números de miembro. A
denominado lab_apcs_4b.sql. Ejecute los comandos del script. Asegúrese de

First_
c l
Name
Carmen
Last_Name
Velasquez r a
Address
283 King
City
Seattle
Phone
206-899-
Join_Date
08-MAR-

O ly
Street 6666 1990
LaDoris Ngao

l & On 5 Modrany Bratislava 586-355-


8882
08-MAR-
1990
Midori Nagayama

n a e 68 Via
Centrale
Sao Paolo 254-852-
5764
17-JUN-
1991
Mark

t e r U s
Quick-to-See 6921 King
Way
Lagos 63-559-7777 07-APR-1990

Audry
I n Ropeburn 86 Chu Street Hong Kong 41-559-87 18-JAN-
1991

c l
Molly
e Urguhart 3035 Laurier Quebec 418-542-
9988
18-JAN-
1991

r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-23
Práctica 2-1 (continuación)
c) Agregue las siguientes copias de películas a la tabla TITLE_COPY:
Nota: tenga a mano los números de TITLE_ID para este ejercicio.
Title Copy_Id Status Title Copy_Id

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

2 AVAILABLE 2

3 RENTED 3

Miracles on Ice 1 AVAILABLE Miracles on Ice 1

Soda Gang 1 AVAILABLE Soda Gang 1

d) Agregue los siguientes alquileres a la tabla RENTAL:


m y
e
Nota: el número de título puede ser diferente en función del número de secuencia.
d
Title_ Id Copy_
Id
Member_Id
Book_date
c a
Exp_Ret_Date
92 1 101

e
3 days ago
A
1 day ago

93 2 101

c l 1 day ago 1 day from now

95 3 102
r a 2 days ago Today

97 1
O ly
106 4 days ago 2 days ago

l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-24
Práctica 2-1 (continuación)
5) Cree una vista con el nombre TITLE_AVAIL para mostrar los títulos de las películas,
la disponibilidad de cada copia y la fecha de devolución esperada si está alquilada.
Consulte todas las filas de la vista. Ordene los resultados por título.
Nota: los resultados pueden ser diferentes.

6) Realice cambios en los datos de las tablas.


a) Agregue un nuevo título. La película es “Interstellar Wars”, que tiene la categoría
PG y está clasificada como una película de ciencia ficción. La fecha de la versión
es 07-JUL-77. La descripción es “Futuristic interstellar action movie. Can the
rebels save the humans from the evil empire?” Asegúrese de agregar un registro
de copia de título para dos copias.
m y
b) Introduzca dos reservas. Una reserva es para Carmen Velasquez, que desea
d
alquilar “Interstellar Wars”. La otra es para Mark Quick-to-See, que deseae
alquilar “Soda Gang”.
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-25
Práctica 2-1 (continuación)
7) Realice una modificación 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 vídeo. Verifique las modificaciones.

Title Price
Willie and Christmas Too 25
Alien Again 35
The Glob 35
My Day Off 35
Miracles on Ice 30
Soda Gang
Interstellar Wars
35
29
m y
b) Cree un script con el nombre lab_apcs_7b.sql que contenga sentencias de
d e
actualización para actualizar cada vídeo con un precio según la lista
proporcionada. Ejecute los comandos del script.
c a
Nota: tenga a mano los números de TITLE_ID para este ejercicio.

e A
c l
8) Cree un informe que contenga el historial de alquiler de vídeos de cada cliente.
Asegúrese de incluir el nombre del cliente, la película alquilada, las fechas de alquiler

r a
y la duración de los alquileres. Calcule el número total de alquileres de todos los
clientes para el período de informe. Guarde los comandos generados por el informe
en un script lab_apcs_8.sql. O ly
l & On
Nota: los resultados pueden ser diferentes.

n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-26
Soluciones a la Práctica 2-1
1) Cree las tablas según el siguiente gráfico de instancias de tabla. Seleccione los tipos
de dato adecuados y asegúrese de agregar restricciones de integridad.
a) Nombre de la tabla: MEMBER
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 VARCHAR2(30),
phone VARCHAR2(15),
join_date DATE DEFAULT SYSDATE
CONSTRAINT member_join_date_nn NOT NULL);

b) Nombre de la tabla: TITLE


CREATE TABLE title
(title_id NUMBER(10)
CONSTRAINT title_title_id_pk PRIMARY KEY,
title VARCHAR2(60)
CONSTRAINT title_title_nn NOT NULL,
description VARCHAR2(400)
m y
CONSTRAINT title_description_nn NOT NULL,
rating VARCHAR2(4)
d e
CONSTRAINT title_rating_ck CHECK
(rating IN ('G', 'PG', 'R', 'NC17', 'NR')),
c a
category VARCHAR2(20)
CONSTRAINT title_category_ck CHECK

e A
c l
(category IN ('DRAMA', 'COMEDY', 'ACTION',
'CHILD', 'SCIFI', 'DOCUMENTARY')),
release_date DATE);
r a
O ly
c) Nombre de la tabla: TITLE_COPY
CREATE TABLE title_copy
(copy_id
l & On
NUMBER(10),
title_id
a e
NUMBER(10)

n
CONSTRAINT title_copy_title_if_fk REFERENCES
title(title_id),
status
t e r s
VARCHAR2(15)
U
CONSTRAINT title_copy_status_nn NOT NULL

I n
CONSTRAINT title_copy_status_ck CHECK (status IN
('AVAILABLE', 'DESTROYED','RENTED', 'RESERVED')),

c l e CONSTRAINT title_copy_copy_id_title_id_pk
PRIMARY KEY (copy_id, title_id));

r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-27
Soluciones a la Práctica 2-1 (continuación)
d) Nombre de la tabla: RENTAL
CREATE TABLE rental
(book_date DATE DEFAULT SYSDATE,
member_id NUMBER(10)
CONSTRAINT rental_member_id_fk REFERENCES
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
FOREIGN KEY (copy_id, title_id)
REFERENCES title_copy(copy_id, title_id));

e) Nombre de la tabla: RESERVATION


CREATE TABLE reservation
(res_date DATE,
member_id NUMBER(10)
CONSTRAINT reservation_member_id REFERENCES
member(member_id),
title_id NUMBER(10)
CONSTRAINT reservation_title_id REFERENCES
m y
title(title_id),
CONSTRAINT reservation_resdate_mem_tit_pk PRIMARY KEY
d e
(res_date, member_id, title_id));

c a
de conexiones de SQL Developer.
e A
2) Verifique que las tablas se han creado correctamente comprobando en el navegador

l
a) En el navegador de conexiones, amplíe Connections > myconnection > Tables.
c
TITLE. r a
3) Cree secuencias para identificar de forma única cada fila de las tablas MEMBER y

O ly
a) Número de miembro para la tabla MEMBER: empezar por 101; no permitir

secuencia.
l & On
almacenamiento en caché de los valores. Asigne el nombre MEMBER_ID_SEQ a la

n a e
CREATE SEQUENCE member_id_seq
START WITH 101
NOCACHE;
t e r U s
I n
b) Número de título para la tabla TITLE: empezar por 92; no permitir

c l e
almacenamiento en caché de los valores. Asigne el nombre TITLE_ID_SEQ a la
secuencia.

Ora CREATE SEQUENCE title_id_seq


START WITH 92
NOCACHE;

Oracle Database: Conceptos Fundamentales de SQL I AP-28


Soluciones a la Práctica 2-1 (continuación)
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, amplíe Sequences.
4) Agregue datos a las tablas. Cree un script para cada juego de datos que desee agregar.
a) Agregue los títulos de las películas a la tabla TITLE. Escriba un script para
introducir la información sobre las películas. Guarde las sentencias en un script
denominado lab_apcs_4a.sql. Utilice las secuencias para identificar de forma
única cada título. Introduzca las fechas de versión en formato DD-MES-AAAA.
Recuerde que las comillas simples se deben gestionar de forma especial en los
campos de caracteres. Verifique las adiciones.
INSERT INTO title(title_id, title, description, rating,
category, release_date)
VALUES (title_id_seq.NEXTVAL, 'Willie and Christmas Too',
'All of Willie''s friends make a Christmas list for
Santa, but Willie has yet to add his own wish list.',
'G', 'CHILD', TO_DATE('05-OCT-1995','DD-MON-YYYY'))
/
INSERT INTO title(title_id , title, description, rating,

VALUES
category, release_date)
(title_id_seq.NEXTVAL, 'Alien Again', 'Yet another
installment of science fiction history. Can the
m y
heroine save the planet from the alien life form?',
'R', 'SCIFI', TO_DATE( '19-MAY-1995','DD-MON-YYYY'))
d e
/
INSERT INTO title(title_id, title, description, rating,
c a
VALUES
category, release_date)
(title_id_seq.NEXTVAL, 'The Glob', 'A meteor crashes
e A
c l
near a small American town and unleashes carnivorous
goo in this classic.', 'NR', 'SCIFI',

/
r a
TO_DATE( '12-AUG-1995','DD-MON-YYYY'))

O ly
INSERT INTO title(title_id, title, description, rating,
category, release_date)
VALUES
& On
(title_id_seq.NEXTVAL, 'My Day Off', 'With a little
l
luck and a lot ingenuity, a teenager skips school
for
n a e
/
r s
a day in New York.', 'PG', 'COMEDY',

e
TO_DATE( '12-JUL-1995','DD-MON-YYYY'))

t U
I n
INSERT INTO title(title_id, title, description, rating,
category, release_date)

c l e
VALUES (title_id_seq.NEXTVAL, 'Miracles on Ice', 'A six-
year-old has doubts about Santa Claus, but she discovers

r athat miracles really do exist.', 'PG', 'DRAMA',


TO_DATE('12-SEP-1995','DD-MON-YYYY'))

O /

Oracle Database: Conceptos Fundamentales de SQL I AP-29


Soluciones a la Práctica 2-1 (continuación)

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-
JUN-1995','DD-MON-YYYY'))
/
COMMIT
/
SELECT title
FROM title;

b) Agregue datos a la tabla MEMBER. Inserte las sentencias en un script denominado


lab_apcs_4b.sql. Ejecute los comandos del script. Asegúrese de utilizar la
secuencia para agregar los números de miembro.
SET VERIFY OFF
INSERT INTO member(member_id, first_name, last_name,
address, city, phone, join_date)
VALUES (member_id_seq.NEXTVAL, 'Carmen', 'Velasquez',
'283 King Street', 'Seattle', '206-899-6666',
TO_DATE('08-MAR-1990',
'DD-MM-YYYY'))
m y
/

d e
INSERT INTO member(member_id, first_name, last_name,
address, city, phone, join_date)
c a
VALUES (member_id_seq.NEXTVAL, 'LaDoris', 'Ngao',
'5 Modrany', 'Bratislava', '586-355-8882',

e A
TO_DATE('08-MAR-1990',
'DD-MM-YYYY'))
c l
/

r a
O ly
INSERT INTO member(member_id, first_name, last_name,
address, city, phone, join_date)

l & On
VALUES (member_id_seq.NEXTVAL, 'Midori', 'Nagayama',
'68 Via Centrale', 'Sao Paolo', '254-852-5764',
TO_DATE('17-JUN-1991',

n
'DD-MM-YYYY')) a e
/

t e r U s
I n
INSERT INTO member(member_id, first_name, last_name,
address, city, phone, join_date)

c e
VALUES (member_id_seq.NEXTVAL, 'Mark', 'Quick-to-See',
l '6921 King Way', 'Lagos', '63-559-7777', TO_DATE('07-
APR-1990',

r a
/
'DD-MM-YYYY'))

O
Oracle Database: Conceptos Fundamentales de SQL I AP-30
Soluciones a la Práctica 2-1 (continuación)

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',
'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'));
/

COMMIT
SET VERIFY ON

c) Agregue las siguientes copias de películas a la tabla TITLE_COPY:


Nota: tenga a mano los números de TITLE_ID para este ejercicio.
INSERT
VALUES
INTO title_copy(copy_id, title_id, status)
(1, 92, 'AVAILABLE')
m y
/
INSERT INTO title_copy(copy_id, title_id, status)
d e
VALUES
/
INSERT
(1, 93, 'AVAILABLE')

INTO title_copy(copy_id, title_id, status) c a


VALUES
/
(2, 93, 'RENTED')

e A
INSERT
c l
INTO title_copy(copy_id, title_id, status)
VALUES
/
INSERT
(1, 94, 'AVAILABLE')

r a
INTO title_copy(copy_id, title_id, status)
VALUES
O ly
(1, 95, 'AVAILABLE')
/
INSERT
l & On
INTO title_copy(copy_id, title_id,status)
VALUES
/ a e
(2, 95, 'AVAILABLE')

n
INSERT
VALUES
t e r U
(3, 95, 'RENTED')s
INTO title_copy(copy_id, title_id,status)

/
INSERT
I n
INTO title_copy(copy_id, title_id,status)

c l e
VALUES

INSERT
(1, 96, 'AVAILABLE')

INTO title_copy(copy_id, title_id,status)

r a
VALUES
/
(1, 97, 'AVAILABLE')

O
Oracle Database: Conceptos Fundamentales de SQL I AP-31
Soluciones a la Práctica 2-1 (continuación)
d) Agregue los siguientes alquileres a la tabla RENTAL:
Nota: el número de título puede ser diferente en función del número de secuencia.
INSERT INTO rental(title_id, copy_id, member_id,
book_date, exp_ret_date, act_ret_date)
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)
/
INSERT INTO rental(title_id, copy_id, member_id,
book_date, exp_ret_date,act_ret_date)
VALUES (97, 1, 106, sysdate-4, sysdate-2, sysdate-2)
/
COMMIT
/

5) Cree una vista con el nombre TITLE_AVAIL para mostrar los títulos de las películas,
la disponibilidad de cada copia y la fecha de devolución esperada si está alquilada.
Consulte todas las filas de la vista. Ordene los resultados por título.
m y
Nota: los resultados pueden ser diferentes.
d e
CREATE VIEW title_avail AS
SELECT t.title, c.copy_id, c.status, r.exp_ret_date
c a
FROM
ON
title t JOIN title_copy c
t.title_id = c.title_id
e A
FULL OUTER JOIN rental r
ON c.copy_id = r.copy_id
c l
AND
r a
c.title_id = r.title_id;

SELECT *
O ly
FROM title_avail
ORDER BY title, copy_id;
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-32
Soluciones a la Práctica 2-1 (continuación)
6) Realice cambios en los datos de las tablas.
a) Agregue un nuevo título. La película es “Interstellar Wars”, que tiene la categoría
PG y está clasificada como una película de ciencia ficción. La fecha de la versión
es 07-JUL-77. La descripción es “Futuristic interstellar action movie. Can the
rebels save the humans from the evil empire?” Asegúrese de agregar un registro
de copia de título 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')
/
INSERT INTO title_copy (copy_id, title_id, status)
VALUES (1, 98, 'AVAILABLE')
/
INSERT INTO title_copy (copy_id, title_id, status)
VALUES (2, 98, 'AVAILABLE')
/
b) Introduzca dos reservas. Una reserva es para Carmen Velasquez, que desea
alquilar “Interstellar Wars”. La otra es para Mark Quick-to-See, que desea
alquilar “Soda Gang”.
m y
INSERT
VALUES
INTO reservation (res_date, member_id, title_id)
(SYSDATE, 101, 98)
d e
/
INSERT INTO reservation (res_date, member_id, title_id)
c a
VALUES
/
(SYSDATE, 104, 97)

e A
c l
7) Realice una modificación en una de las tablas.

r a
a) Ejecute el script lab_apcs_7a.sql ubicado en la carpeta

O ly
/home/oracle/labs/sql1/labs, para agregar una columna PRICE a la tabla
TITLE para registrar el precio de venta del vídeo. Verifique las modificaciones.
ALTER TABLE title
l & On
ADD (price NUMBER(8,2));

n a e
DESCRIBE title

t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-33
Soluciones a la Práctica 2-1 (continuación)
b) Cree un script con el nombre lab_apcs_7b.sql que contenga sentencias de
actualización para actualizar cada vídeo con un precio según la lista
proporcionada. Ejecute los comandos del script.
Nota: tenga a mano los números de TITLE_ID para este ejercicio.
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 vídeos de cada cliente.


Asegúrese de incluir el nombre del cliente, la película alquilada, las fechas de alquiler
y la duración de los alquileres. Calcule el número total de alquileres de todos los
clientes para el período de informe. Guarde los comandos generados por el informe
en un script lab_apcs_8.sql.
Nota: los resultados pueden ser diferentes.
SELECT m.first_name||' '||m.last_name MEMBER, t.title,
r.book_date, r.act_ret_date - r.book_date DURATION
FROM member m
JOIN rental r
m y
ON r.member_id = m.member_id
JOIN title t
d e
ON r.title_id = t.title_id
ORDER BY member;
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I AP-34
Descripciones de las Tablas

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Descripción de Esquema
Descripción General
Los esquemas de ejemplo de Oracle Database ilustran una compañía de ejemplo que opera en todo el
mundo para surtir pedidos de varios productos distintos. La compañía tiene tres divisiones:
• Human Resources: realiza un seguimiento de la información sobre los empleados y las
instalaciones.
• Order Entry: realiza un seguimiento de los inventarios y las ventas de productos a través de
distintos canales.
• Sales History: realiza un seguimiento de los datos estadísticos 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 prácticas
está en el esquema de Human Resources (HR).
Todos los scripts necesarios para crear los esquemas de ejemplo están en la carpeta
$ORACLE_HOME/demo/schema/.
Human Resources (HR)
Se trata del esquema que se utiliza en este curso. En los registros de recursos humanos (HR), cada
empleado tiene un número de identificación, una dirección de correo electrónico, un código de
identificación de cargo, un salario y un gestor. Algunos empleados ganan comisiones además de su
salario.
La compañía también registra información sobre cargos dentro de la organización. Cada cargo
m y
d e
dispone de un código de identificación, un puesto y un rango de salario máximo y mínimo para el
cargo. Algunos empleados llevan bastante tiempo en la compañía y han desempeñado distintos

el número de identificación del cargo y el departamento.


c a
trabajos en ella. Cuando se reasigna un empleado, se registran la duración del trabajo del empleado,

A
La compañía de ejemplo se extiende por distintas regiones, por lo que registra la ubicación de sus

e
c l
almacenes y departamentos. Cada empleado está asignado a un departamento y cada departamento se
identifica mediante un número de departamento único o una abreviatura. Cada departamento está

r a
asociado a una ubicación y cada ubicación tiene una dirección completa que incluye el nombre de la
calle, el código postal, la ciudad, el estado o la provincia y el código de país.
O ly
En las ubicaciones de los departamentos y almacenes, la compañía registra detalles como el nombre

& On
de país, el símbolo y nombre de divisa y la región en la que está ubicado geográficamente el país.
l
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I B-2
Diagrama de Relación de Entidades de HR

HR DEPARTMENTS
department_id
LOCATIONS
location_id
department_name street_address
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
department_id country_id
email
country_name
phone_number
region_id
hire_date
job_id
JOBS salary
job_id commission_pct
job_title manager_id
min_salary department_id REGIONS
max_salary region_id
region_name

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I B-3
Descripciones de las Tablas de Human Resources (HR)
DESCRIBE countries

SELECT * FROM countries;

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I B-4
Descripciones de las Tablas de Human Resources (HR) (continuación)
DESCRIBE departments

SELECT * FROM departments;

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I B-5
Descripciones de las Tablas de Human Resources (HR) (continuación)
DESCRIBE employees

SELECT * FROM employees;

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I B-6
Descripciones de las Tablas de Human Resources (HR) (continuación)
DESCRIBE job_history

SELECT * FROM job_history

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I B-7
Descripciones de las Tablas de Human Resources (HR) (continuación)
DESCRIBE jobs

SELECT * FROM jobs

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I B-8
Descripciones de las Tablas de Human Resources (HR) (continuación)
DESCRIBE locations

SELECT * FROM locations

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I B-9
Descripciones de las Tablas de Human Resources (HR) (continuación)
DESCRIBE regions

SELECT * FROM regions

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I B-10
Uso de SQL Developer

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Objetivos

Al finalizar este apéndice, debería estar capacitado para lo


siguiente:
• Mostrar las funciones clave de Oracle SQL Developer
• Identificar las opciones de menú de Oracle SQL Developer
• Crear una conexión a la base de datos
• Gestionar objetos de bases de datos
• Utilizar la hoja de trabajo de SQL
• Guardar y ejecutar scripts SQL
• Crear y guardar informes

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Objetivos

e A
c l
En este apéndice, se ofrece una introducción a la herramienta gráfica SQL Developer. Aprenderá
cómo utilizar SQL Developer para las tareas de desarrollo de la base de datos. Aprenderá cómo

r a
utilizar la hoja de trabajo de SQL para ejecutar sentencias y scripts SQL.

O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I C-2
¿Qué es Oracle SQL Developer?

• Oracle SQL Developer es una herramienta gráfica 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 autenticación estándar
de Oracle Database.

SQL Developer
m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
¿Qué es Oracle SQL Developer?

e A
c l
Oracle SQL Developer es una herramienta gráfica gratuita diseñada para mejorar la productividad y
simplificar el desarrollo de las tareas diarias de la base de datos. Con sólo unos clics, puede crear y

r a
depurar fácilmente los procedimientos almacenados, probar sentencias SQL y visualizar los planes del
optimizador.
O ly
SQL Developer, la herramienta visual para el desarrollo de la base de datos, simplifica las siguientes
tareas:

l & On
• Examen y gestión de objetos de la base de datos

a e
• Ejecución de sentencias y scripts SQL
n
• Creación de informes
t e r
• Edición y depuración de sentencias PL/SQL

U s
Puede conectarse a cualquier esquema de Oracle Database de destino mediante la autenticación estándar

I n
de Oracle Database. Una vez conectado, puede realizar operaciones en los objetos de la base de datos.

e
SQL Developer versión 1.2 está estrechamente integrado con Developer Migration Workbench, que
l
proporciona a los usuarios un punto único para examinar los objetos y datos de base de datos en bases
c
de datos de terceros y migrar desde estas bases de datos a Oracle. También se puede conectar a los

r a
esquemas para las bases de datos de terceros (no de Oracle) seleccionadas, como MySQL, Microsoft

O
SQL Server y Microsoft Access, y ver los metadatos y datos de estas bases de datos.
Además, 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

• Incluido con Oracle Database 11g Versión 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 versión 9.2.0.1 y
posteriores
• Descarga gratuita desde el siguiente enlace:
– http://www.oracle.com/technology/products/database/
sql_developer/index.html

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Especificaciones de SQL Developer

e A
c l
Oracle SQL Developer 1.5 se incluye con Oracle Database 11g Versión 2. SQL Developer está
desarrollado en Java aprovechando el entorno de desarrollo integrado (IDE) de Oracle JDeveloper.

r a
Por lo tanto, es una herramienta entre plataformas. La herramienta se ejecuta en plataformas
Windows, Linux y Mac OS (sistema operativo) X.
O ly
La conectividad por defecto a la base de datos se realiza a través del controlador Java Database
& On
Connectivity (JDBC) Thin y, por lo tanto, no es necesario el directorio raíz de Oracle. SQL
l
n a e
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

Nota
t e r U s
posteriores y a todas las ediciones de Oracle Database, incluida Express Edition.

I n
Para versiones de Oracle Database anteriores a Oracle Database 11g Versión 2, tendrá que descargar

enlace:
c l e
e instalar SQL Developer. SQL Developer 1.5 se puede descargar gratuitamente desde el siguiente

r a
http://www.oracle.com/technology/products/database/sql_developer/index.html.
Para obtener más instrucciones sobre cómo instalar SQL Developer, consulte el sitio web en:

O 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

Debe definir una


conexión para empezar
a utilizar SQL Developer
para la ejecución de
consultas SQL en un
esquema de base de
datos.

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Interfaz de SQL Developer 1.5

e A
derecha:
c l
La interfaz de SQL Developer 1.5 contiene tres separadores de navegación principales, de izquierda a

r a
• Separador Connections: si utiliza este separador, puede examinar los objetos y usuarios de la
base de datos a los que tiene acceso.
O ly
• Separador Files: identificado mediante el icono de carpeta Files, este separador permite

l & On
acceder a los archivos desde la máquina local sin tener que utilizar el menú File > Open.
• Separador Reports: identificado mediante el icono Reports, este separador permite ejecutar
a e
los informes predefinidos o crear y aplicar sus propios informes.
n
Navegación General y Uso

t e r U s
SQL Developer utiliza la parte izquierda de la navegación para buscar y seleccionar objetos y la parte

I n
derecha para mostrar información sobre los objetos seleccionados. También puede personalizar
muchos aspectos de la apariencia y del comportamiento de SQL Developer mediante la definición de

l
preferencias.
c e
Nota: debe definir al menos una conexión para conectarse a un esquema de base de datos y emitir

r a
consultas SQL o ejecutar procedimientos/funciones.

O
Oracle Database: Conceptos Fundamentales de SQL I C-5
Interfaz de SQL Developer 1.5 (continuación)
Menús
Los siguientes menús contienen entradas estándar, además de entradas de funciones especificas de
SQL Developer.
• View: contiene opciones que afectan a lo que se muestra en la interfaz de SQL Developer.
• 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 selección de
una función o un procedimiento, además de las opciones de depuración.
• Source: contiene opciones para utilizarlas al editar funciones y procedimientos.
• Versioning: proporciona soporte integrado para los siguientes sistemas de control de versiones
y orígenes: CVS (Concurrent Versions System) y Subversion.
• Migration: contiene opciones relacionadas con la migración de bases de datos de terceros a
Oracle.
• Tools: llama a las herramientas de SQL Developer, como SQL*Plus, Preferences y SQL
Worksheet.
Nota: el menú Run también contiene opciones relevantes para la selección de una función o un
procedimiento para depuración. Son las mismas opciones que las del menú Debug de la
versión 1.2.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I C-6
Creación de una Conexión a la Base Datos

• Debe tener al menos una conexión a la base de datos


para utilizar SQL Developer.
• Puede crear y probar conexiones para:
– Varias bases de datos
– Varios esquemas
• SQL Developer importa automáticamente las conexiones
definidas en el archivo tnsnames.ora al sistema.
• Puede exportar conexiones a un archivo Extensible
Markup Language (XML).
• Cada conexión a la base de datos adicional creada se
muestra en la jerarquía del navegador de conexiones.

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Creación de una Conexión a la Base Datos

e A
c l
Una conexión es un objeto de SQL Developer que especifica la información necesaria para
conectarse a una base de datos concreta como usuario específico de dicha base de datos. Para utilizar

r a
SQL Developer, debe tener al menos una conexión a la base de datos que puede ser existente, creada
o importada.
O ly
Puede crear y probar conexiones para varias bases de datos y esquemas.

l & On
Por defecto, el archivo tnsnames.ora está ubicado en el directorio

n a e
$ORACLE_HOME/network/admin, pero también 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

t e r U s
el cuadro de diálogo Database Connections, SQL Developer importa automáticamente las conexiones
definidas en el archivo tnsnames.ora al sistema.

I n
Nota: en los sistemas Windows, si existe el archivo tnsnames.ora, pero SQL Developer no está

c l e
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.

r a
Puede crear conexiones adicionales como usuarios diferentes a la misma base de datos o conectarse a
diferentes bases de datos.
O
Oracle Database: Conceptos Fundamentales de SQL I C-7
Creación de una Conexión a la Base Datos

1 2

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Creación de una Conexión a la Base Datos (continuación)

e A
c l
Para crear una conexión a la base de datos, realice los siguientes pasos:
1. En la página con separadores Connections, haga clic con el botón derecho del mouse en

r a
Connections y seleccione New Connection.
2. En la ventana New/Select Database Connection, introduzca el nombre de la conexión.
O ly
Introduzca el nombre de usuario y la contraseña del esquema al que desea conectarse.

l & On
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).
n a e
t e r s
b) Puede seleccionar el tipo de conexión como:
Basic: en este tipo, introduzca el nombre del host y el SID de la base de datos a la que
U
I n
desea conectarse. El puerto ya está definido en 1521. También puede introducir el
nombre del servicio directamente si utiliza una conexión a la base de datos remota.

c l e
TNS: puede seleccionar cualquiera de los alias de base de datos importados del archivo
tnsnames.ora.

r a LDAP: puede consultar los servicios de base de datos en Oracle Internet Directory, que
es un componente de Oracle Identity Management.

O 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


Creación de una Conexión a la Base Datos (continuación)
c) Haga clic en Test para asegurarse de que la conexión se ha definido correctamente.
d) Haga clic en Connect.
Si activa la casilla de control Save Password, la contraseña se guarda en un archivo XML. De
este modo, cuando cierre la conexión a SQL Developer y la vuelva a abrir, no se le pedirá la
contraseña.
3. La conexión se agrega al navegador de conexiones. Puede ampliar la conexión para ver los
objetos de base de datos y las definiciones de objetos (por ejemplo, dependencias, detalles,
estadísticas, etc.).
Nota: en la misma ventana New/Select Database Connection, puede definir conexiones a orígenes de
datos no Oracle mediante los separadores Access, MySQL y SQL Server. Sin embargo, se trata de
conexiones de sólo lectura que permiten examinar los objetos y datos de dicho origen de datos.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I C-9
Examen de Objetos de Bases de Datos

Utilizar el navegador de conexiones para:


• Examinar los objetos de un esquema de base de datos
• Revisar las definiciones de objetos de forma rápida

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Examen de Objetos de Bases de Datos

e A
c l
Una vez creada la conexión a la base de datos, puede utilizar el navegador de conexiones para
examinar los objetos de un esquema de base de datos entre los que se incluyen tablas, vistas, índices,

r a
paquetes, procedimientos, disparadores y tipos.

O ly
SQL Developer utiliza la parte izquierda de la navegación para buscar y seleccionar objetos y la parte
derecha para mostrar la información sobre los objetos seleccionados. También puede personalizar

l & On
muchos aspectos de la apariencia de SQL Developer mediante la definición de preferencias.
Puede ver la definición de los objetos desglosados en separadores de información que se transfieren

n a e
al diccionario de datos. Por ejemplo, si selecciona una tabla en el navegador, se muestran los detalles

t e
separadores fáciles de leer. r U s
sobre las columnas, restricciones, permisos, estadísticas, disparadores, etc., en una página con

siguientes pasos: I n
Si desea ver la definición de la tabla EMPLOYEES como se muestra en la diapositiva, realice los

l e
1. Amplíe el nodo Connections en el navegador de conexiones.

c
2. Amplíe Tables.

r a
3. Haga clic en EMPLOYEES. Por defecto, está seleccionado el separador Columns. Se muestra la
descripción de las columnas de la tabla. Mediante el separador Data, puede ver los datos de la
O tabla e introducir las nuevas filas, datos de actualización y confirmar estos cambios en la base
de datos.

Oracle Database: Conceptos Fundamentales de SQL I C-10


Visualización de la Estructura de la Tabla

Utilizar el comando DESCRIBE para mostrar la estructura de


una tabla:

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Visualización de la Estructura de la Tabla

e A
c l
En SQL Developer, también puede visualizar la estructura de una tabla mediante el comando
DESCRIBE. El resultado del comando es una visualización de los nombres de columna y tipos de

r a
dato, así como una indicación de si una columna debe contener datos.

O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I C-11
Examen de Archivos

Utilizar el navegador de archivos para explorar el sistema de


archivos y abrir archivos del sistema.

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Examen de Objetos de Bases de Datos

e A
c l
Puede utilizar el navegador de archivos para examinar y abrir archivos del sistema.
• Para ver el navegador de archivos, haga clic en el separador Files o seleccione View > Files.

r a
• 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.
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I C-12
Creación de un Objeto de Esquema

• SQL Developer soporta la creación de cualquier objeto de


esquema mediante:
– Ejecución de una sentencia SQL en SQL Worksheet
– Uso del menú contextual
• Editar los objetos mediante un cuadro de diálogo de edición
o con uno de los muchos menús sensibles al contexto.
• Ver el lenguaje de definición de datos (DDL) para los
ajustes, como la creación de un nuevo objeto o la edición de
un objeto de esquema existente.

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Creación de un Objeto de Esquema

e A
c l
SQL Developer soporta la creación de cualquier objeto de esquema mediante la ejecución de una
sentencia SQL en la hoja de trabajo de SQL. Por otro lado, puede crear objetos mediante los menús

r a
contextuales. Cuando se crea, puede editar los objetos con un cuadro de diálogo de edición o con uno
de los muchos menús sensibles al contexto.
O ly
Una vez que se han creado los nuevos objetos o se han editado los existentes, el DDL de estos ajustes
& On
estará disponible para la revisión. Una opción Export DDL está disponible si desea crear el DDL
l
n a e
completo para uno o más objetos en el esquema.
La diapositiva muestra cómo crear una tabla mediante el menú contextual. Para abrir un cuadro de

t e r U s
diálogo para la creación de una nueva tabla, haga clic con el botón derecho del mouse en Tables y
seleccione New Table. Los cuadros de diálogo para la creación y edición de objetos de la base de

I n
datos tienen varios separadores, cada uno de ellos contiene un agrupamiento lógico de propiedades
para dicho tipo de objeto.

c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I C-13
Creación de una Nueva Tabla: Ejemplo

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Creación de una Nueva Tabla: Ejemplo

e A
c l
En el cuadro de diálogo Create Table, si no activa la casilla de control Advanced, puede crear una
tabla rápidamente mediante la especificación de columnas y algunas funciones utilizadas con
frecuencia.
r a
O ly
Si activa la casilla de control Advanced, el cuadro de diálogo Create Table cambia a otro con varias
opciones, en las que puede especificar un juego ampliado de funciones mientras crea la tabla.

l & On
En el ejemplo de la diapositiva se muestra cómo crear la tabla DEPENDENTS mediante la activación

a e
de la casilla de control Advanced.

n
e r
Para crear una nueva tabla, realice los siguientes pasos:
s
1. En el navegador de conexiones, haga clic con el botón derecho del mouse en Tables.
t
2. Seleccione Create TABLE.
U
I n
3. En el cuadro de diálogo Create Table, seleccione Advanced.

l e
4. Especifique la información de columna.
5. Haga clic en OK.
c
r a
Aunque no es necesario, también debe especificar una clave primaria con el separador Primary Key
en el cuadro de diálogo. En ocasiones, puede que desee editar la tabla que ha creado; para ello, haga

Oclic con el botón 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


sentencias SQL, PL/SQL y SQL *Plus.
• Especificar las acciones que se pueden procesar mediante
la conexión a la base de datos asociada a la hoja de trabajo.

O hacer clic en el icono


Seleccionar SQL Worksheet Open SQL Worksheet.
en el menú Tools.

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Uso de la Hoja de Trabajo de SQL

e A
c l
Al conectarse a una base de datos, automáticamente se abre una ventana de hoja de trabajo de SQL
para dicha conexión. Puede utilizar la hoja de trabajo de SQL para introducir y ejecutar sentencias

r a
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. O ly
& On
Puede especificar las acciones que se pueden procesar mediante la conexión a la base de datos
l
• Creación de una tabla
n a e
asociada a la hoja de trabajo, como:

• Inserción de datos

t e r U s
• Creación y edición de un disparador

I n
• Selección de datos de tablas
• Guardado de datos seleccionados en un archivo

l e
Para visualizar una hoja de trabajo de SQL, utilice una de las siguientes opciones:
c
• Seleccione Tools > SQL Worksheet.

r a
• Haga clic en el icono Open SQL Worksheet.

O
Oracle Database: Conceptos Fundamentales de SQL I C-15
Uso de la Hoja de Trabajo de SQL

2 4 6 8

1 3 5 7 9

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Uso de la Hoja de Trabajo de SQL (continuación)

e A
c l
Puede que desee utilizar teclas de acceso directo o iconos para realizar determinadas tareas como la
ejecución de una sentencia SQL o de un script y la visualización del historial de sentencias SQL

r a
ejecutadas. Puede utilizar la barra de herramientas de la hoja de trabajo de SQL que contiene iconos
para realizar las siguientes tareas:
O ly
1. Execute Statement: ejecuta la sentencia en la que está ubicado el cursor del cuadro Enter SQL

sustitución.
l & On
Statement. Puede utilizar variables de enlace en las sentencias SQL pero no variables de

n a e
2. Run Script: ejecuta todas las sentencias en el cuadro Enter SQL Statement mediante Script
Runner. Puede utilizar variables de sustitución en las sentencias SQL pero no variables de
enlace.

t e r U s
3. Commit: escribe cualquier cambio realizado en la base de datos y finaliza la transacción.

I n
4. Rollback: desecha cualquier cambio realizado en la base de datos, sin escribirlos en la base de
datos y finaliza la transacción.

l e
5. Cancel: para la ejecución de cualquier sentencia que se esté ejecutando actualmente.

c
6. SQL History: muestra un recuadro de diálogo con información sobre las sentencias SQL

r a ejecutadas.
7. Execute Explain Plan: genera la ejecución del plan, que puede ver haciendo clic en el
O separador Explain.
8. Autotrace: genera información 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

Introducir
sentencias SQL.

Los resultados se
muestran aquí.

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Uso de la Hoja de Trabajo de SQL (continuación)

e A
c l
Al conectarse a una base de datos, automáticamente se abre una ventana de hoja de trabajo de SQL
para dicha conexión. Puede utilizar la hoja de trabajo de SQL para introducir y ejecutar sentencias

r a
SQL, PL/SQL y SQL *Plus. Todos los comandos SQL y PL/SQL están soportados conforme se
transfieren directamente desde la hoja de trabajo de SQL a Oracle Database. La hoja de trabajo de
O ly
SQL debe interpretar los comandos SQL*Plus utilizados en SQL Developer antes de transferirlos a la
base de datos.
l & On
n a e
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 envían a Oracle Database. A través de la hoja de

t e r U s
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:

I n
• Seleccione Tools > SQL Worksheet.
• Haga clic en el icono Open SQL Worksheet.

c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I C-17
Ejecución de Sentencias SQL

Uso del recuadro Enter SQL Statement para introducir una o


varias sentencias SQL.

F9 F5

F5
F9

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Ejecución de Sentencias SQL

e A
c l
En el ejemplo de la diapositiva se muestra la diferencia entre la salida de la misma consulta cuando
se utiliza la tecla [F9] o Execute Statement y cuando se utiliza [F5] o Run Script.

r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I C-18
Guardado de Scripts SQL
Hacer clic en el icono Save
1 para guardar la sentencia
SQL en un archivo.

Identificar una ubicación,


El contenido del archivo
2 introducir un nombre de
3 guardado es visible y se archivo y hacer clic en Save.
puede editar en la ventana
de la hoja de trabajo de SQL.

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Guardado de Scripts SQL

e A
c l
Puede guardar las sentencias SQL desde la hoja de trabajo de SQL en un archivo de texto. Para
guardar el contenido del cuadro Enter SQL Statement, realice los siguientes pasos:

r a
1. Haga clic en el icono Save o utilice la opción de menú File > Save.
2. En el cuadro de diálogo Save, introduzca un nombre de archivo y la ubicación en la que desea
guardarlo. O ly
3. Haga clic en Save.
l & On
n a e
Después de guardar el contenido de un archivo, en la ventana Enter SQL Statement se muestra una
página con separadores del contenido del archivo. Puede tener varios archivos abiertos al mismo

Script Pathing
t e r U s
tiempo. Cada archivo se muestra como una página con separadores.

I n
Puede seleccionar una ruta de acceso por defecto para buscar y guardar scripts. En Tools >

l e
Preferences > Database > Worksheet Parameters, introduzca un valor en el campo “Select default
path to look for scripts”.
c
r a
O
Oracle Database: Conceptos Fundamentales de SQL I C-19
Ejecución de Archivos de Script Guardados:
Método 1
1. Utilizar el separador Files para buscar el
archivo de script que desea abrir.
2. Hacer clic dos veces en el script para mostrar
el código en la hoja de trabajo de SQL.
1

Para ejecutar el código, 2


hacer clic en: Seleccionar una
• Execute Script (F9) o 3 conexión de la lista
• Run Script (F5) desplegable.

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Ejecución de Archivos de Script Guardados: Método 1

e A
siguientes pasos:
c l
Para abrir un archivo de script y mostrar el código en el área de la hoja de trabajo de SQL, realice los

r a
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 código del archivo de script se muestra en el área de la hoja
de trabajo de SQL. O ly
l & On
3. Seleccione una conexión de la lista desplegable de conexiones.
4. Para ejecutar el código, haga clic en el icono Run Script (F5) de la barra de herramientas de la
a e
hoja de trabajo de SQL. Si no ha seleccionado una conexión de la lista desplegable de
n
t e r s
conexiones, aparecerá un cuadro de diálogo de conexiones. Seleccione la conexión que desea
utilizar para la ejecución del script.
U
I n
También puede realizar las siguientes acciones:
1. Seleccione File > Open. Aparece un cuadro de diálogo Open.

l e
2. En el cuadro de diálogo Open, seleccione (o navegue hasta) el archivo de script que desea abrir.

c
r a
O
Oracle Database: Conceptos Fundamentales de SQL I C-20
Ejecución de Archivos de Script Guardados: Método 1 (continuación)
3. Haga clic en Open. El código del archivo de script se muestra en el área de la hoja de trabajo de
SQL.
4. Seleccione una conexión de la lista desplegable de conexiones.
5. Para ejecutar el código, 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 conexión de la lista desplegable de
conexiones, aparecerá un cuadro de diálogo de conexiones. Seleccione la conexión que desea
utilizar para la ejecución del script.

m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I C-21
Ejecución de Archivos de Script Guardados:
Método 2
Utilice el comando @
seguido de la ubicación y el
nombre del archivo que
desea ejecutar y haga clic
en el icono Run Script.

La salida del script se


muestra en la página
con separadores Script
Output.

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Ejecución de Archivos de Script Guardados: Método 2

e A
c l
Para guardar un script SQL, realice los siguientes pasos:
1. Utilice el comando @, seguido de la ubicación y el nombre del archivo que desea ejecutar en la
ventana Enter SQL Statement.
2. Haga clic en el icono Run Script. r a
O ly
El resultado de la ejecución del archivo se muestra en la página con separadores Script Output.
& On
También puede guardar la salida del script haciendo clic en el icono Save de la página con
l
n a e
separadores Script Output. Aparece el cuadro de diálogo File Save donde puede identificar un
nombre y una ubicación para el archivo.

t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I C-22
Formato del Código SQL

Antes de la Operación
de Formateo

Después de la Operación
de Formateo

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Formato del Código SQL

e A
c l
Puede que desee dar formato al sangrado, espaciado, uso de mayúsculas y separación de líneas del
código SQL. SQL Developer dispone de una función para dar formato a código SQL.

r a
Para dar formato al código SQL, haga clic con el botón derecho del mouse en el área de la sentencia
y seleccione Format SQL.
O ly
En el ejemplo de la diapositiva, antes de dar formato, las palabras clave del código SQL no están en

l & On
mayúscula y la sentencia no está sangrada correctamente. Después de dar formato, el código SQL

a e
mejora el aspecto con las palabras clave en mayúscula y la sentencia sangrada correctamente.

n
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I C-23
Uso de Fragmentos

Los fragmentos son fragmentos de código que puede ser


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

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Uso de Fragmentos

e A
c l
Es posible que desee utilizar determinados fragmentos de código al utilizar la hoja de trabajo de SQL
o al crear o editar un procedimiento o una función de PL/SQL. SQL Developer dispone de la función

r a
denominada Snippets. Los fragmentos son fragmentos de código, como funciones SQL, indicaciones
del optimizador y otras técnicas de programación de PL/SQL. Puede arrastrar fragmentos a la
ventana Editor. O ly
& On
Para visualizar los fragmentos, seleccione View > Snippets.
l
n a e
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 botón Snippets, para poder acceder a la

t e r
ventana Snippets si se oculta.

U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I C-24
Uso de Fragmentos: Ejemplo

Inserción de un
fragmento

Edición del
fragmento

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Uso de Fragmentos: Ejemplo

e A
c l
Para insertar un fragmento en el código en la hoja de trabajo de SQL o en otro procedimiento o
función PL/SQL, arrastre el fragmento desde la ventana Snippets hasta el lugar deseado del código.

r a
A continuación, puede editar la sintaxis para que la función SQL sea válida en el contexto actual.
Para ver una descripción breve de una función SQL en una ayuda de burbuja, coloque el cursor sobre
el nombre de la función. O ly
& On
En el ejemplo de la diapositiva se muestra que CONCAT(char1, char2) se arrastra desde el
l
n a e
grupo Character Functions a la ventana Snippets. A continuación, se edita la sintaxis de la función
CONCAT y el resto de la sentencia se agrega como se describe a continuación:

t e
FROM employees;r U s
SELECT CONCAT(first_name, last_name)

I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I C-25
Depuración de Procedimientos y Funciones

• Utilizar SQL Developer para depurar funciones y


procedimientos PL/SQL.
• Utilizar la opción Compile for Debug para realizar una
compilación PL/SQL para que se pueda depurar el
procedimiento.
• Utilizar las opciones del menú
Debug para definir puntos de
división y realizar tareas
Step Into y Step Over.

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Depuración de Procedimientos y Funciones

e A
c l
En SQL Developer, puede depurar procedimiento y funciones PL/SQL. Con las opciones del menú
Debug, puede realizar la siguientes tareas de depuración:

r a
• Find Execution Point va al siguiente punto de ejecución.
• Resume continúa con la ejecución.
O ly
• Step Over omite el siguiente método y va a la siguiente sentencia después del método.

l & On
• Step Into va a la primera sentencia del siguiente método.
• Step Out deja el método actual y va a la siguiente sentencia.
a e
• Step to End of Method va a la última sentencia del método actual.
n
t e r s
• Pause para la ejecución pero no sale, lo que permite reanudar la ejecución.
• Terminate para y sale de la ejecución. No puede reanudar la ejecución desde este punto; en su
U
I n
lugar, para iniciar la ejecución o depuración desde comienzo de la función o del procedimiento,
haga clic en el icono Run o Debug de la barra de herramientas del separador Source.

c l e
• Garbage Collection elimina los objetos no válidos de la caché en favor de objetos a los que se
accede con mayor frecuencia y más válidos.

r a
Estas opciones también están disponibles como iconos en la barra de herramientas de depuración.

O
Oracle Database: Conceptos Fundamentales de SQL I C-26
Informes de Bases de Datos

SQL Developer proporciona un número predefinido de informes


sobre la base de datos y sus objetos.

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Informes de Bases de Datos

e A
c l
SQL Developer proporciona diferentes informes sobre la base de datos y sus objetos. Estos informes
se pueden agrupar en las siguientes categorías:
• Informes About Your Database
• Informes Database Administration r a
• Informes Table
O ly
• Informes PL/SQL
• Informes Security
l & On
• Informes XML
n a e
• Informes Jobs
• Informes Streams
• Informes All Objects
t e r U s
I n
• Informes Data Dictionary

c l e
• Informes User Defined
Para visualizar los informes, haga clic en el separador Reports situado a la izquierda de la ventana.

r a
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 conexión a la base de

O datos para la que desea mostrar el informe. Para los informes sobre objetos, sólo se muestran aquellos
objetos que sean visibles para el usuario de la base de datos asociado a la conexión a la base de datos
seleccionada y las filas ordenadas por propietario. También puede crear sus propios informes
definidos por el usuario.
Oracle Database: Conceptos Fundamentales de SQL I C-27
Creación de un Informe Definido por el Usuario

Crear y guardar informes definidos por el usuario para un uso


repetido.

Organizar informes en carpetas.


m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Creación de un Informe Definido por el Usuario

e A
c l
Los informes definidos por el usuario son informes creados por los usuarios de SQL Developer. Para
crear un informe definido por el usuario, realice los siguientes pasos:

r a
1. Haga clic con el botón derecho del mouse en el nodo User Defined Reports en Reports y
seleccione Add Report.
O ly
2. En el cuadro Create Report Dialog, especifique el nombre del informe y la consulta SQL para

l & On
recuperar del informe. A continuación, haga clic en Apply.
En el ejemplo de la diapositiva, se especifica el nombre del informe como emp_sal. Se proporciona

n a e
una descripción opcional que indica que el informe contiene los detalles de los empleados con un

t e r U s
salario salary >= 10000. La sentencia SQL completa para la recuperación de la información
que se mostrará en el informe definido por el usuario se especifica en el cuadro SQL. También puede

I n
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.

l e
Puede organizar los informes definidos por el usuario en carpetas y puede crear una jerarquía de
c
carpetas y subcarpetas. Para crear una carpeta para los informes definidos por el usuario, haga clic

r a
con el botón derecho del mouse en el nodo User Defined Reports o en cualquier nombre de carpeta

Ode dicho nodo y seleccione Add Folder. La información 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 información específica del usuario.

Oracle Database: Conceptos Fundamentales de SQL I C-28


Motores de Búsqueda y Herramientas Externas

Accesos directos a herramientas


utilizadas con mayor frecuencia
1

Enlaces a motores de
búsqueda y foros de
discusión conocidos

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Motores de Búsqueda y Herramientas Externas

e A
c l
Para mejorar la productividad de los desarrolladores de SQL, SQL Developer ha agregado enlaces
rápidos a motores de búsqueda y foros de discusión conocidos, como AskTom, Google, etc. Además,

r a
dispone de iconos de acceso directo a algunas de las herramientas más utilizadas, como el Bloc de
notas, Microsoft Word y Dreamweaver.
O ly
Puede agregar herramientas externas a la lista de herramientas existentes o incluso suprimir accesos
& On
directos a las herramientas que no utilice habitualmente. Para ello, realice los siguientes pasos:
l
n a e
1. En el menú Tools, seleccione External Tools.
2. En el cuadro de diálogo External Tools, seleccione New para agregar nuevas herramientas.

t e r U s
Seleccione Delete para eliminar cualquier herramienta de la lista.

I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I C-29
Definición de Preferencias

• Personalizar la interfaz y el entorno de SQL Developer.


• En el menú Tools, seleccione Preferences.

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Definición de Preferencias

e A
c l
Puede personalizar diferentes aspectos de la interfaz y el entorno de SQL Developer mediante la
modificación de las preferencias de SQL Developer según sus preferencias y necesidades. Para

r a
modificar las preferencias de SQL Developer, seleccione Tools y, a continuación, Preferences.

O ly
Las preferencias se agrupan en las siguientes categorías:
• Environment
& On
• Accelerators (accesos directos del teclado)
l
• Code Editors
• Database
n a e
• Debugger
• Documentation
t e r U s
• Extensions
• File Types I n
• Migration

c l e
• PL/SQL Compilers

r a
• PL/SQL Debugger

O
Oracle Database: Conceptos Fundamentales de SQL I C-30
Restablecimiento del Diseño de SQL Developer

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Restablecimiento del Diseño de SQL Developer

e A
c l
Al trabajar con SQL Developer, si desaparece el navegador de conexiones o no puede encajar la
ventana Log en su lugar original, realice los siguientes pasos para solucionar el problema:
1. Salga de SQL Developer.
r a
2. Abra una ventana de terminal y utilice el comando de búsqueda para buscar la ubicación de
windowinglayout.xml. O ly
4. Reinicie SQL Developer.
l & On
3. Vaya al directorio que contenga el archivo windowinglayout.xml y suprímalo.

n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I C-31
Resumen

En este apéndice, debe haber aprendido cómo 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

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Resumen

e A
c l
SQL Developer es una herramienta gráfica gratuita para simplificar las tareas de desarrollo de la base
de datos. Con SQL Developer, puede examinar, crear y editar objetos de bases de datos. Puede

r a
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.
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I C-32
Uso de SQL*Plus

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Objetivos

Al finalizar este apéndice, debería estar capacitado para lo


siguiente:
• Conectarse a SQL*Plus
• Editar comandos SQL
• Formatear la salida con comandos SQL*Plus
• Interactuar con scripts

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Objetivos

e A
c l
Puede que desee crear sentencias SELECT que se puedan utilizar repetidamente. En este apéndice
también se aborda el uso de comandos SQL*Plus para ejecutar sentencias SQL. Aprenderá cómo

r a
formatear la salida mediante comandos SQL*Plus, editar comandos SQL y guardar scripts en
SQL*Plus.
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I D-2
Interacción de SQL y SQL*Plus

Sentencias SQL
Servidor
SQL*Plus

Resultados de consultas

Buffer

Scripts
SQL
m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
SQL y SQL*Plus

e A
c l
SQL es un lenguaje de comandos que se utiliza para la comunicación con el servidor de Oracle desde
cualquier herramienta o aplicación. Oracle SQL contiene muchas extensiones. Al introducir una

r a
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
O ly
reconoce y envía sentencias SQL en Oracle9i Server para su ejecución. Contiene su propio lenguaje
de comandos.
l & On
Funciones de SQL

n a e
• Las pueden utilizar una gran variedad de usuarios, incluidos aquéllos con poca o ninguna
experiencia

t e r U s
• .Es un lenguaje que no es de procedimientos.

I n
• Reduce la cantidad de tiempo necesario para crear y mantener sistemas.
• Es un lenguaje como el inglés.

l e
Funciones de SQL*Plus
c
• Acepta la entrada ad hoc de sentencias.

r a
• Acepta la entrada de SQL de los archivos.

O • Proporciona un editor de líneas para modificar sentencias SQL.


• Controla los valores de entorno.
• Formatea resultados de consulta en informes básicos.
• 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
• Un lenguaje • Un entorno
• Estándar 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 manipulación
y datos en la base de datos. de valores en la base de
datos.

Sentencias Buffer Comandos Buffer


SQL SQL SQL*Plus SQL*Plus

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
SQL y SQL*Plus (continuación)

e A
l
En la siguiente tabla compara SQL y SQL*Plus:
c
SQL
r
Lenguaje para la comunicación con ela SQL*Plus
Reconoce las sentencias SQL y las envía al
O ly
servidor de Oracle para acceder a los datos. servidor.

l & On
Se basa en SQL del estándar ANSI
(American National Standards Institute).
Interfaz propiedad de Oracle para ejecutar
sentencias SQL.

n a e
Manipula la definiciones de tablas y datos en No permite la manipulación de valores en la
la base de datos.

t e r U s
Se introduce en el buffer SQL en una o más
base de datos.
Se introduce en una línea al mismo tiempo y
líneas.
I n
No tiene ningún carácter de continuación.
no se almacena en el buffer SQL.
Utiliza un guión (–) como carácter de

c l e continuación si el comando es más largo que


una línea.

r aNo se puede abreviar. Se puede abreviar.

O Utiliza un carácter de terminación para


ejecutar comandos inmediatamente.
No necesita caracteres de terminación;
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
Visión General de SQL*Plus

• 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.
• Ejecutar archivos guardados.
• Cargar comandos del archivo en el buffer para la edición.

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
SQL*Plus

e A
SQL*Plus es un entorno en el que puede:
c l
• Ejecutar sentencias SQL para recuperar, modificar, agregar y eliminar datos de la base de datos.

r a
• Formatear, realizar cálculos, almacenar e imprimir resultados de consulta en forma de informes.
• Crear scripts para almacenar sentencias SQL para un uso repetido en el futuro.
O ly
Los comandos SQL*Plus se pueden dividir en las siguientes categorías:

Categoría Objetivo
l & On
Entorno
n a e
Afectar al comportamiento general de sentencias SQL para la sesión.
Formato
Manipulación de
t e r U s
Formatear resultados de consulta.
Guardar, cargar y ejecutar archivos de comandos.
archivos
Ejecución I nEnviar sentencias SQL del buffer SQL al servidor de Oracle.
Edición

c l e
Interacción
Modificar sentencias SQL en el buffer.
Crear y transferir variables a la sentencia SQL, imprimir valores de

r a Otros
variables y mensajes en la pantalla.
Conectarse a la base de datos, manipular el entorno SQL*Plus y
O mostrar definiciones de columnas.

Oracle Database: Conceptos Fundamentales de SQL I D-5


Conexión a SQL*Plus

sqlplus [username[/password[@database]]]

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Conexión a SQL*Plus

e A
Oracle Database.
c l
La forma de llamar a SQL*Plus dependerá del tipo de sistema operativo en que esté ejecutando

r a
Para conectarse desde un entorno Linux, realice los siguientes pasos:

O ly
1. Haga clic con el botón derecho del mouse en el escritorio de Linux y seleccione un terminal.
2. Introduzca el comando sqlplus que se muestra en la diapositiva.
& On
3. Introduzca el nombre de usuario, la contraseña y el nombre de la base de datos.
l
En la sintaxis:

n a e
username Nombre de usuario de la base de datos.

t e r U s
password Contraseña de la base de datos (la contraseña será visible si la introduce aquí).
@database Cadena de conexión de la base de datos.

I n
Nota: para asegurarse de la integridad de la contraseña, no la introduzca en la petición de datos del

l e
sistema operativo. En su lugar, introduzca sólo el nombre de usuario. Introduzca la contraseña en la
petición de datos de la contraseña.
c
r a
O
Oracle Database: Conceptos Fundamentales de SQL I D-6
Visualización de la Estructura de la Tabla

Utilizar el comando SQL*Plus DESCRIBE para mostrar la


estructura de una tabla:

DESC[RIBE] tablename

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Visualización de la Estructura de la Tabla

e A
c l
En SQL*Plus, puede mostrar la estructura de una tabla mediante el comando DESCRIBE. El
resultado del comando es una visualización de los nombres de columna y tipos de dato, así como una

r a
indicación de si una columna debe contener datos.
En la sintaxis:
O ly
tablename Nombre de cualquier tabla existente, vista o sinónimo al que puede acceder
el usuario.
l & On
a e
Para describir la tabla DEPARTMENTS, utilice este comando:

n
Name

t e r
SQL> DESCRIBE DEPARTMENTS

U s Null? Type
----------------------- -------- ---------------

I n
DEPARTMENT_ID NOT NULL NUMBER(4)

c l e
DEPARTMENT_NAME
MANAGER_ID
NOT NULL VARCHAR2(30)
NUMBER(6)

r a LOCATION_ID NUMBER(4)

O
Oracle Database: Conceptos Fundamentales de SQL I D-7
Visualización de la Estructura de la Tabla

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)

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Visualización de la Estructura de Tabla (continuación)

e A
DEPARTMENTS. En el resultado:
c l
En el ejemplo de la diapositiva se muestra la información sobre la estructura de la tabla

r a
Null?: especifica si una columna debe contener datos (NOT NULL indica que una columna debe
contener datos).
O ly
Type: muestra el tipo de dato de una columna.

l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I D-8
Comandos de Edición SQL*Plus

• A[PPEND] text
• C[HANGE] / old / new
• C[HANGE] / text /
• CL[EAR] BUFF[ER]
• DEL
• DEL n
• DEL m n

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Comandos de Edición SQL*Plus

e A
SQL.
c l
Los comandos SQL*Plus se introducen en una línea al mismo tiempo y no se almacenan en el buffer

Comando
r a Descripción
A[PPEND] text
C[HANGE] / old / new O ly Agrega texto al final de la línea actual.
Cambia el texto antiguo por el nuevo en la línea

C[HANGE] / text /
l & On actual.
Suprime el texto de la línea actual.
CL[EAR] BUFF[ER]
n a e Suprime todas las líneas del buffer SQL.
DEL
DEL n
t e r U s Suprime la línea actual.
Suprime la línea n.
DEL m n
I n Suprime de las líneas m hasta la n, inclusive.
Instrucciones

c l e
• Si pulsa Intro antes de que haya terminado la ejecución de un comando, SQL*Plus le solicitará

r a un número de línea.
• Termine el buffer SQL introduciendo uno de los caracteres de terminación (punto y coma o

O barra) o pulsando [Intro] dos veces. Aparecerá la petición de datos SQL.

Oracle Database: Conceptos Fundamentales de SQL I D-9


Comandos de Edición SQL*Plus

• I[NPUT]
• I[NPUT] text
• L[IST]
• L[IST] n
• L[IST] m n
• R[UN]
• n
• n text
• 0 text

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Comandos de Edición SQL*Plus (continuación)

e A
Comando Descripción
c l
I[NPUT]
I[NPUT] text
r a
Inserta un número indefinido de líneas.
Inserta una línea que consta de texto.
L[IST]
O ly
Muestra todas las líneas en el buffer SQL.
L[IST] n
L[IST] m n
l & On
Muestra una línea (especificada por n).
Muestra un rango de líneas (m a n), inclusive.
R[UN]

n a e
Muestra y ejecuta la sentencia SQL actual en el buffer.
n
n text
t e r s
Especifica la línea para crear la línea actual.
Sustituye la línea n con texto.
U
0 text

I n Inserta una línea delante de la línea 1.


Nota: puede introducir sólo un comando SQL*Plus para cada petición de datos SQL. Los comandos

l e
SQL*Plus no se almacenan en el buffer. Para que un comando SQL*Plus continúe en la siguiente

c
línea, finalice la primera línea con un guión (-).

r a
O
Oracle Database: Conceptos Fundamentales de SQL I D-10
Uso de LIST, n y APPEND

LIST
1 SELECT last_name
2* FROM employees

1
1* SELECT last_name

A , job_id
1* SELECT last_name, job_id

LIST
1 SELECT last_name, job_id
2* FROM employees
m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Uso de LIST, n y APPEND

e A
c l
• Utilice el comando L[IST] para mostrar el contenido del buffer SQL. El asterisco (*) situado
junto a la línea 2 en el buffer indica que la línea 2 es la línea actual. Cualquier edición que

r a
realice se aplica a la línea actual.
• Introduzca el número (n) de la línea que desea editar para cambiar el número de la línea actual.
O ly
Se muestra la nueva línea actual.

l & On
• Utilice el comando A[PPEND] para agregar texto a la línea actual. Se muestra la línea recién
editada. Verifique el nuevo contenido del buffer mediante el comando LIST.

n a e
Nota: muchos de los comandos SQL*Plus, incluidos LIST y APPEND, se pueden abreviar sólo con

t e r U s
su primera letra. LIST se puede abreviar con L; APPEND se puede abreviar con A.

I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I D-11
Uso del Comando CHANGE

LIST
1* SELECT * from employees

c/employees/departments
1* SELECT * from departments

LIST
1* SELECT * from departments

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Uso del Comando CHANGE

e A
c l
• Utilice L[IST] para mostrar el contenido del buffer.
• Utilice el comando C[HANGE] para modificar el contenido de la línea actual del buffer SQL.

r a
En este caso, sustituya la tabla employees por la tabla departments. Se muestra la nueva
línea actual.
O ly
• Utilice el comando L[IST] para verificar el nuevo contenido del buffer.

l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I D-12
Comandos de Archivos SQL*Plus

• SAVE filename
• GET filename
• START filename
• @ filename
• EDIT filename
• SPOOL filename
• EXIT

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Comandos de Archivos SQL*Plus

e A
c l
Las sentencias SQL se comunican con el servidor de Oracle. Los comandos SQL*Plus controlan el
entorno, formatean los resultados de la consulta y gestionan archivos. Puede utilizar los comandos
descritos en la siguiente tabla:
Comando r a Descripción
SAV[E] filename [.ext] O ly Guarda el contenido actual del buffer SQL en un archivo.
[REP[LACE]APP[END]]

l & On Utilice APPEND para agregar a un archivo existente; utilice


REPLACE para sobrescribir un archivo existente. La extensión

GET filename [.ext]


n a e por defecto es .sql.
Escribe el contenido de un archivo guardado anteriormente en

t e r U s el buffer SQL. La extensión por defecto del nombre de archivo


es .sql.

@ filename
I n
STA[RT] filename [.ext] Ejecuta el archivo de comandos guardado anteriormente.
Ejecuta un archivo de comandos guardado anteriormente (igual

ED[IT]
c l e que START).
Llama al editor y guarda el contenido del buffer en un archivo
denominado afiedt.buf.

r a ED[IT] [filename[.ext]] Llama al editor para editar el contenido de un archivo guardado.

O 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
envía 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

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

SAVE my_query
Created file my_query

START my_query

LAST_NAME MANAGER_ID DEPARTMENT_ID


------------------------- ---------- -------------
King 90
Kochhar 100 90
...
107 rows selected.
m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Uso de los Comandos SAVE, START y EDIT

e A
SAVE

c l
Utilice el comando SAVE para almacenar el contenido actual del buffer en un archivo. De esta forma,

r a
podrá almacenar los scripts utilizados con frecuencia para utilizarlos en el futuro.
START
O ly
l
símbolo @ para ejecutar un script.& On
Utilice el comando START para ejecutar un script en SQL*Plus. Además, también puede utilizar el

@my_query

n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I D-14
Comando SERVEROUTPUT

• Utilizar el comando SET SERVEROUT[PUT] para controlar


si se debe mostrar la salida de los procedimientos
almacenados o bloques PL/SQL en SQL*Plus.
• El límite de longitud de la línea DBMS_OUTPUT ha
aumentado de 255 a 32767 bytes.
• El tamaño por defecto es ahora ilimitado.
• Los recursos no se asignan previamente si se define
SERVEROUTPUT.
• Ya que no afecta al rendimiento, utilice UNLIMITED a
menos que desee conservar la memoria física.

SET SERVEROUT[PUT] {ON | OFF} [SIZE {n | UNL[IMITED]}]


[FOR[MAT] {WRA[PPED] | WOR[D_WRAPPED] | TRU[NCATED]}]

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Comando SERVEROUTPUT

e A
c l
La mayoría de los programas PL/SQL realizan entradas y salidas mediante sentencias SQL para
almacenar datos en las tablas de las bases de datos o consultar dichas tablas. Las demás

r a
entradas/salidas PL/SQL se realizan a través de API, que interactúan con otros programas. Por
ejemplo, el paquete DBMS_OUTPUT tiene procedimientos, como PUT_LINE. Para ver el resultado
O ly
fuera de PL/SQL, se necesita otro programa como SQL*Plus, para leer y visualizar los datos
transferidos a DBMS_OUTPUT.
l & On
SQL*Plus no muestra los datos de DBMS_OUTPUT a menos que antes emita el comando SQL*Plus

n
SET SERVEROUTPUT ON siguiente: a e
Nota
t e r
SET SERVEROUTPUT ON

U s
I n
• SIZE define el número 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

l e
mayor que 1.000.000.
c
• Para obtener más información sobre SERVEROUTPUT, consulte Oracle Database PL/SQL

r a User's Guide and Reference 11g (Guía del Usuario y Referencia de PL/SQL de Oracle

O Database 11g).

Oracle Database: Conceptos Fundamentales de SQL I D-15


Uso del Comando SQL*Plus SPOOL

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


APP[END]] | OFF | OUT]

Opción Descripción

file_name[.ext] Envía la salida al nombre de archivo especificado.

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

REP[LACE] Sustituye el contenido de un archivo existente. Si el


archivo no existe, REPLACE crea el archivo.

APP[END] Agrega el contenido del buffer al final del archivo


especificado.

OFF Para el envío de resultados.

OUT Para el envío de datos y envía el archivo a la


impresora estándar (por defecto) de la computadora.
m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Uso del Comando SQL*Plus SPOOL

e A
c l
El comando SPOOL almacena los resultados de la consulta en un archivo o envía el archivo a una
impresora. Se ha mejorado el comando SPOOL. Ahora puede adjuntar a (o sustituir) un archivo

r a
existente, cuando antes sólo podía utilizar SPOOL para crear (y sustituir) un archivo. REPLACE es el
valor por defecto.
O ly
Para enviar la salida generada por los comandos en un script sin mostrar la salida en la pantalla,
& On
utilice SET TERMOUT OFF. SET TERMOUT OFF no afecta a la salida de los comandos que se
l
ejecutan interactivamente.

n a e
Debe utilizar comillas con los nombres de archivo que contengan espacios en blanco. Para crear un

t e r U s
archivo HTML válido mediante los comandos SPOOL APPEND, debe utilizar PROMPT o un
comando para crear la cabecera y el pie de página de la página HTML. El comando SPOOL

I n
APPEND no analiza las etiquetas HTML. SET SQLPLUSCOMPAT[IBILITY] en 9.2 o anterior
para desactivar los parámetros CREATE, APPEND y SAVE.

c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I D-16
Uso del Comando AUTOTRACE

• Muestra un informe después de la ejecución correcta de


sentencias DML de SQL, como SELECT, INSERT, UPDATE
o DELETE.
• El informe puede incluir ahora estadísticas de ejecución y
la ruta de acceso de ejecución de la consulta.

SET AUTOT[RACE] {ON | OFF | TRACE[ONLY]} [EXP[LAIN]]


[STAT[ISTICS]]

SET AUTOTRACE ON
-- The AUTOTRACE report includes both the optimizer
-- execution path and the SQL statement execution
-- statistics

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Uso del Comando AUTOTRACE

e A
c l
EXPLAIN muestra la ruta de acceso de ejecución de consulta mediante la ejecución de EXPLAIN
PLAN. STATISTICS muestra estadísticas de sentencias SQL. El formato del informe AUTOTRACE

r a
puede variar en función de la versión del servidor al que está conectado y la configuración del
servidor. El paquete DBMS_XPLAN proporciona una forma fácil de mostrar la salida del comando
O ly
EXPLAIN PLAN en varios formatos predefinidos.
Nota
l & On
n a e
• Para obtener más información 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).

t e r U s
• Para obtener más información sobre EXPLAIN PLAN, consulte Oracle Database SQL

I n
Reference 11g (Referencia sobre SQL de Oracle Database 11g).
• Para obtener más información sobre las estadísticas de planes de ejecución, consulte

l e
Oracle Database Performance Tuning Guide 11g (Guía de Ajuste del Rendimiento de

c
Oracle Database 11g).

r a
O
Oracle Database: Conceptos Fundamentales de SQL I D-17
Resumen

En este apéndice, debe haber aprendido cómo utilizar


SQL*Plus como un entorno para realizar las siguientes
acciones:
• Ejecutar sentencias SQL
• Editar sentencias SQL
• Formatear la salida
• Interactuar con scripts

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Resumen

e A
c l
SQL*Plus es un entorno de ejecución que puede utilizar para enviar comandos SQL al servidor de la
base datos para editar y guardar los comandos SQL. Puede ejecutar los comandos desde la petición

r a
de datos SQL o desde un archivo de script.

O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I D-18
Uso de JDeveloper

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Objetivos

Al finalizar este apéndice, debería estar capacitado para lo


siguiente:
• Mostrar las funciones clave de Oracle JDeveloper
• Crear una conexión a base de datos en JDeveloper
• Gestionar objetos de base de datos en JDeveloper
• Utilizar JDeveloper para ejecutar comandos SQL
• Crear y ejecutar unidades de programa PL/SQL

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Objetivos

e A
desarrollo de la base de datos. c l
En este apéndice, se presentará JDeveloper. Aprenderá cómo utilizar JDeveloper para las tareas de

r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I E-2
Oracle JDeveloper

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Oracle JDeveloper

e A
c l
Oracle JDeveloper es un entorno de desarrollo de integración (IDE) para desarrollar y desplegar
aplicaciones Java y servicios web. Soporta cada etapa del ciclo de vida de desarrollo de software

r a
(SDLC), del modelado al despliegue. Tiene funciones que permiten utilizar los últimos estándares de
la industria para Java, XML y SQL y desarrollar una aplicación.
O ly
Oracle JDeveloper 11g inicia un nuevo enfoque al desarrollo J2EE con funciones que permiten un
& On
desarrollo visual y declarativo. Este enfoque innovador hace que el desarrollo J2EE sea sencillo y
l
eficaz.

n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I E-3
Database Navigator

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Database Navigator

e A
c l
Con Oracle JDeveloper, puede almacenar la información necesaria para conectarse a la base de datos
en un objeto denominado “conexión”. Una conexión se almacena como parte de los valores de IDE y

r a
se puede exportar e importar para compartirla fácilmente entre grupos de usuarios. Una conexión
tiene diferentes fines, desde el examen de la base de datos y la creación de aplicaciones hasta el
despliegue. O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I E-4
Creación de Conexión

Haga clic en el icono


1 New Connection en
Database Navigator.

2 En la ventana Create Database


Connection, introduzca el
usuario, la contraseña y el SID.

3 Haga clic en Test Connection.

4 Haga clic en OK.


m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Creación de Conexión

e A
c l
Una conexión es un objeto que especifica la información necesaria para conectarse a una base de
datos concreta como usuario específico de dicha base de datos. Puede crear y probar conexiones para
varias bases de datos y esquemas.
r a
O ly
Para crear una conexión a la base de datos, realice los siguientes pasos:
1. Haga clic en el icono New Connection en Database Navigator.
& On
2. En la ventana Create Database Connection, introduzca el nombre de la conexión. Introduzca el
l
n a e
nombre de usuario y la contraseña del esquema al que desea conectarse. Introduzca el SID de la
base de datos a la que desea conectarse.

4. Haga clic en OK.


t e r U s
3. Haga clic en Test para asegurarse de que la conexión se ha definido correctamente.

I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I E-5
Examen de Objetos de Bases de Datos

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 rápida

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Examen de Objetos de Bases de Datos

e A
c l
Una vez creada la conexión a la base de datos, puede utilizar el navegador de la base de datos para
examinar los objetos de un esquema de base de datos entre los que se incluyen tablas, vistas, índices,

r a
paquetes, procedimientos, disparadores y tipos.

O ly
Puede ver la definición de los objetos desglosados en separadores de información que se transfieren
al diccionario de datos. Por ejemplo, si selecciona una tabla en el navegador, se muestran los detalles
& On
sobre las columnas, restricciones, permisos, estadísticas, disparadores, etc., en un navegador de la
l
base de datos fácil de leer.

n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I E-6
Ejecución de Sentencias SQL

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Ejecución de Sentencias SQL

e A
c
1. Haga clic en el icono Open SQL Worksheet. l
Para ejecutar una sentencia SQL, realice los siguientes pasos:

2. Seleccione la conexión.
r a
O ly
3. Ejecute el comando SQL haciendo clic en:

& On
1. El botón Execute statement o pulsando F9. La salida es la siguiente:

l
n a e
t e r U s
I n
2. El botón Run Script o pulsando F5. La salida es la siguiente:

c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I E-7
Creación de Unidades de Programa

m y
Esqueleto de la Función

d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Creación de Unidades de Programa

e A
c l
Para crear una unidad de programa PL/SQL, realice los siguientes pasos:
1. Seleccione View > Database Navigator. Seleccione y amplíe una conexión de base de datos.

r a
Haga clic con el botón derecho del mouse en una carpeta que corresponda al tipo de objeto
(Procedures, Packages, Functions). Seleccione “New [Procedures|Packages|Functions]”.
O ly
2. Introduzca un nombre válido para la función, el paquete o el procedimiento y haga clic en OK.

l & On
3. Se crea una estructura básica que se abre en la ventana Code Editor. A continuación, puede
editar el subprograma para que se ajuste a sus necesidades.

n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I E-8
Compilación

Compilación con Errores

Compilación sin Errores


m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Compilación

e A
c l
Después de editar la definición de esqueleto, debe compilar la unidad de programa. Haga clic con el
botón derecho del mouse en el objeto PL/SQL que necesita compilar en Connection Navigator y, a

r a
continuación, seleccione Compile. También puede pulsar [Ctrl] + [Shift] + [F9] para compilar.

O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I E-9
Ejecución de una Unidad de Programa

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Ejecución de una Unidad de Programa

e A
c l
Para ejecutar la unidad de programa, haga clic con el botón derecho del mouse en el objeto y haga
clic en Run. Aparece el cuadro de diálogo Run PL/SQL. Puede que tenga que cambiar los valores

r a
NULL por valores razonables que se transfieren a la unidad de programa. Después de cambiar los
valores, haga clic en OK. La salida se mostrará en la ventana Message-Log.
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I E-10
Borrado de una Unidad de Programa

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Borrado de una Unidad de Programa

e A
c l
Para borrar una unidad de programa, haga clic con el botón derecho del mouse en el objeto y
seleccione Drop. Aparece el cuadro de diálogo Drop Confirmation; haga clic en Apply. El objeto se
borra de la base de datos.
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I E-11
Ventana Structure

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Ventana Structure

e A
c l
La ventana Structure ofrece una vista estructural de los datos del documento seleccionados
actualmente en la ventana activa de las ventanas que proporcionan estructura: navegadores, editores,
visores y el inspector de propiedades.
r a
O ly
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

l & On
disponibles están basadas en el tipo de documento. Para un archivo Java, puede ver la estructura del

n a e
código, 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 diseño o los datos de modelo de
interfaz de usuario.

t e r U s
La ventana Structure es dinámica y realiza siempre un seguimiento de la selección actual de la

I n
ventana activa (a menos que congele el contenido de la ventana en una vista concreta), ya que está

l e
relacionada con el editor que está actualmente activo. Cuando la selección actual es un nodo del
navegador, se asume el editor por defecto. Para cambiar la vista en la estructura de la selección
c
a
actual, haga clic en un separador de estructura distinto.

r
O
Oracle Database: Conceptos Fundamentales de SQL I E-12
Ventana del Editor

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Ventana del Editor

e A
c l
Al hacer doble clic en el nombre de una unidad de programa, se abre en la ventana del editor. Puede
ver todos los archivos de proyectos en una única ventana del editor, abrir varias vistas del mismo

r a
archivo o abrir varias vistas de diferentes archivos.

O ly
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
& On
primer plano en la ventana del editor actual.
l
n a e
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.

t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I E-13
Navegador de Aplicaciones

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Navegador de Aplicaciones

e A
c l
El navegador de aplicaciones proporciona una vista lógica de la aplicación y de los datos que
contiene. Además proporciona una infraestructura a la que las distintas extensiones pueden

r a
conectarse y utilizar para organizar los datos y menús de forma abstracta y consistente. Aunque el
navegador de aplicaciones puede contener archivos individuales (como archivos de origen Java), está
O ly
diseñado para consolidar datos complejos. Los tipos de dato complejos, como los objetos de

l & On
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.

n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I E-14
Despliegue de Procedimientos Java Almacenados

Antes de desplegar procedimientos Java almacenados, realice


los siguientes pasos:
1. Cree una conexión a la base de datos.
2. Cree un perfil de despliegue.
3. Despliegue los objetos.

1 2 3
m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Despliegue de Procedimientos Java Almacenados

e A
c l
Cree un perfil de despliegue para los procedimientos Java almacenados y, a continuación, despliegue
las clases y, si lo desea, cualquier método estático público en JDeveloper con los valores del perfil.

r a
El despliegue en la base de datos utiliza la información proporcionada en Deployment Profile Wizard
y dos utilidades de Oracle Database:
O ly
• loadjava carga la clase Java que contiene los procedimientos almacenados en Oracle
Database.
l & On
• publish genera los envoltorios específicos de llamada PL/SQL para los métodos estáticos

n a e
públicos cargados. La publicación permite que se llame a los métodos Java como funciones o
procedimientos PL/SQL.

t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I E-15
Publicación de Java en PL/SQL

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Publicación de Java en PL/SQL

e A
l
La diapositiva muestra el código Java y cómo publicar el código Java en un procedimiento PL/SQL.
c
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I E-16
¿Cómo Puedo Obtener más Información sobre
JDeveloper 11g?

Tema Dirección web


Página 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
Documentación de los
Productos Oracle http://www.oracle.com/technology/documentation/jdev.html
JDeveloper 11g
Foro de Discusión de
Oracle JDeveloper 11g http://forums.oracle.com/forums/forum.jspa?forumID=83

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I E-17
Resumen

En este apéndice, debe haber aprendido a realizar lo siguiente:


• Mostrar las funciones clave de Oracle JDeveloper
• Crear una conexión a base de datos en JDeveloper
• Gestionar objetos de base de datos en JDeveloper
• Utilizar JDeveloper para ejecutar comandos SQL
• Crear y ejecutar unidades de programa PL/SQL

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I E-18
Sintaxis de Unión en Oracle

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Objetivos

Al finalizar este apéndice, debería estar capacitado para lo


siguiente:
• Escribir sentencias SELECT para acceder a datos de más
de una tabla mediante uniones igualitarias y no igualitarias
• Unir una tabla consigo misma mediante autounión
• Ver datos que normalmente no cumplen una condición de
unión mediante uniones externas
• Generar un producto cartesiano de todas las filas de una o
más tablas

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Objetivos

e A
c l
Esta lección explica cómo obtener datos de más de una tabla. Una unión se utiliza para ver
información de varias tablas. Por lo tanto, puede unir tablas para ver información de más de una
tabla.
r a
O ly
Nota: para obtener más información sobre las uniones, consulte la sección sobre consultas y
subconsultas SQL: uniones en Oracle Database SQL Language Reference 11g, Release 1 (11.1)
& On
(Referencia sobre Lenguaje SQL de Oracle Database 11g, Versión 1 (11.1)).
l
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I F-2
Obtención de Datos de Varias Tablas

EMPLOYEES DEPARTMENTS


m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Obtención de Datos de Varias Tablas

e A
c
muestra datos de dos tablas independientes: l
A veces, necesita utilizar datos de más de una tabla. En el ejemplo de la diapositiva, el informe

r a
• La tabla EMPLOYEES contiene los ID de empleado.
• Las tablas EMPLOYEES y DEPARTMENTS contienen los ID de departamento.
O ly
• La tabla DEPARTMENTS contiene los nombres de departamento.

& On
Para producir el informe, necesita enlazar las tablas EMPLOYEES y DEPARTMENTS y acceder a los
l
datos de ambas.

n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I F-3
Productos Cartesianos

• Un producto cartesiano se forma cuando:


– Se omite una condición de unión
– Una condición de unión no es válida
– 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
condición de unión válida en una cláusula WHERE.

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Productos Cartesianos

e A
c l
Cuando una condición de unión no es válida o se omite completamente, el resultado es un producto
cartesiano, en el que se muestran todas las combinaciones de filas. Es decir, todas las filas de la

r a
primera tabla se unen a todas las filas de la segunda tabla.

O ly
Un producto cartesiano tiende a generar un gran número de filas y el resultado es poco útil. Por lo
tanto, debe incluir siempre una condición de unión válida a menos que tenga necesidades específicas
& On
de combinar todas las filas de todas las tablas.
l
n a e
Sin embargo, los productos cartesianos son útiles para algunas pruebas para las que necesite generar
un gran número de filas para simular una cantidad razonable de datos.

t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I F-4
Generación de un Producto Cartesiano

EMPLOYEES (20 filas) DEPARTMENTS (8 filas)

Producto cartesiano:
20 x 8 = 160 filas


m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Generación de un Producto Cartesiano

e A
c l
Se genera un producto cartesiano si se omite una condición de unión. En el ejemplo de la diapositiva
se muestra el apellido del empleado y el nombre del departamento de las tablas EMPLOYEES y

r a
DEPARTMENTS, respectivamente. Ya que no se ha especificado ninguna condición de unión, todas
las filas (20 filas) de la tabla EMPLOYEES se unen con todas las filas (8 filas) de la tabla
O ly
DEPARTMENTS, por lo que se generan 160 filas en la salida.

l & On
SELECT last_name, department_name dept_name
FROM employees, departments;

n a e
t e r U s
I n
c l e
r a …
O
Oracle Database: Conceptos Fundamentales de SQL I F-5
Tipos de Uniones Propiedad de Oracle

• Unión igualitaria
• Unión no igualitaria
• Unión externa
• Autounión

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Tipos de Uniones

e A
c l
Para unir tablas, puede utilizar la sintaxis de unión de Oracle.
Nota: antes de la versión de Oracle9i , la sintaxis de unión era propietaria. La sintaxis de unión

r a
compatible con SQL:1999 no ofrece ninguna ventaja en el rendimiento respecto a la sintaxis de
unión propietaria de Oracle.
O ly
Oracle no tiene una sintaxis equivalente para soportar FULL OUTER JOIN de la sintaxis de unión
compatible con SQL:1999.
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I F-6
Unión de Tablas mediante la Sintaxis de Oracle

Utilizar una unión para consultar datos de más de una tabla:

SELECT table1.column, table2.column


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

• Escribir la condición de unión en la cláusula WHERE.


• Incluya el nombre de tabla como prefijo en el nombre de
columna cuando aparezca el mismo nombre de columna
en más de una tabla.

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Unión de Tablas mediante la Sintaxis de Oracle

e A
c l
Cuando se necesitan datos de más de una tabla en la base de datos, se utiliza una condición de unión.
Las filas de una tabla se pueden unir a las de otra de acuerdo con los valores comunes que existen en

r a
columnas correspondientes (es decir, éstas suelen ser columnas de clave primaria y de clave ajena).

O ly
Para visualizar datos de dos o más tablas relacionadas, escriba una condición de unión simple en la
cláusula WHERE.
En la sintaxis:
l & On
table1.column

n a e
Indica la tabla y la columna desde las que se recuperan los datos
table1.column1 =
table2.column2
t e rEs la condición que une (o relaciona) las tablas

U s
Instrucciones
I n
• Cuando escriba una sentencia SELECT para unir tablas, anteponga el nombre de la tabla al de

l e
columna para mejorar la claridad y el acceso a la base de datos.

c
• Si aparece el mismo nombre de columna en más de una tabla, el nombre de columna debe tener

r a como prefijo el nombre de tabla.


• Para unir n tablas, necesita un mínimo de n-1 condiciones de unión. Por ejemplo, para unir

O cuatro tablas, es necesario un mínimo de tres uniones. Esta regla puede que no se aplique si la
tabla tiene una clave primaria concatenada, en cuyo caso es necesario más de una columna para
identificar de forma única cada fila.

Oracle Database: Conceptos Fundamentales de SQL I F-7


Cualificación de Nombres de Columna Ambiguos

• Utilizar prefijos de tabla para cualificar los nombres de


columna que están 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 más corto de
una tabla.
– Mantiene el código SQL más pequeño, utiliza menos
memoria
• Utilizar alias de columna para distinguir columnas que
tienen nombres idénticos, pero que residen en diferentes
tablas.

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Cualificación de Nombres de Columna Ambiguos

e A
c l
Al unir dos o más tablas, debe cualificar los nombres de las columnas con el nombre de la tabla para
evitar ambigüedad. Sin los prefijos de tabla, la columna DEPARTMENT_ID de la lista SELECT

r a
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
O ly
las dos tablas, no es necesario cualificar las columnas. Sin embargo, el uso del prefijo de tabla mejora

l & On
el rendimiento, ya que indica al servidor de Oracle dónde encontrar exactamente las columnas.
La cualificación de nombres de columna con nombres de tabla puede llevar bastante tiempo,

n a e
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

t e r U s
tabla proporciona otro nombre a una tabla. Los alias de tabla ayudan a mantener el código SQL más
pequeño y, por lo tanto, hay menos uso de memoria.

I n
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.
c
Instrucciones l e
r a
• Los alias de tabla pueden tener hasta 30 caracteres de longitud, pero los alias más cortos son
mejores que los largos.
O • Si se utiliza un alias de tabla para un nombre de tabla determinado en la cláusula 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 válido sólo para la sentencia actual SELECT.
Oracle Database: Conceptos Fundamentales de SQL I F-8
Uniones igualitarias

EMPLOYEES DEPARTMENTS


Clave primaria
Clave ajena

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Uniones igualitarias

e A
c l
Para determinar el nombre de departamento de un empleado, compare el valor de la columna
DEPARTMENT_ID en la tabla EMPLOYEES con los valores de DEPARTMENT_ID de la tabla

r a
DEPARTMENTS. La relación entre las tablas EMPLOYEES y DEPARTMENTS es una unión
igualitaria; es decir, los valores de la columna DEPARTMENT_ID de ambas tablas deben ser iguales.
O ly
A menudo, este tipo de unión implica complementos de clave primaria y ajena.

& On
Nota: las uniones igualitarias también se denominan uniones simples o uniones internas.
l
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I F-9
Recuperación de Registros con Uniones
Igualitarias

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;


m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Recuperación de Registros con Uniones Igualitarias

e A
En el ejemplo de la diapositiva:
c l
• La cláusula SELECT especifica los nombres de columna que se van a recuperar:

r a
- El apellido de empleado, número de empleado y número de departamento, que son
columnas de la tabla EMPLOYEES
O ly
- El número de departamento, nombre de departamento e ID de ubicación, que son

l & On
columnas de la tabla DEPARTMENTS
• La cláusula FROM especifica las dos tablas a las que la base de datos debe acceder:
- Tabla EMPLOYEES
n a e
- Tabla DEPARTMENTS

t e r s
• La cláusula WHERE especifica cómo se van a unir las tablas:
U
I n
e.department_id = d.department_id
Debido a que la columna DEPARTMENT_ID es común a las dos tablas, debe tener como prefijo el

l e
alias de tabla para evitar la ambigüedad. Otras columnas que no estén presentes en las tablas no es

c
necesario que se cualifiquen según el alias de tabla, pero es recomendable para obtener un mejor

r a
rendimiento.
Nota: al utilizar el icono Execute Statement para ejecutar la consulta, SQL Developer agrega el
Osufijo “_1” para diferenciar entre los dos DEPARTMENT_ID.

Oracle Database: Conceptos Fundamentales de SQL I F-10


Recuperación de Registros con Uniones
Igualitarias: Ejemplo

SELECT d.department_id, d.department_name,


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

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Recuperación de Registros con Uniones Igualitarias: Ejemplo

e A
c l
En el ejemplo de la diapositiva, la tabla LOCATIONS está unida a la tabla DEPARTMENTS mediante
la columna LOCATION_ID, que es la única con el mismo nombre en ambas. Los alias de tabla se

r a
utilizar para cualificar las columnas y evitar ambigüedades.

O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I F-11
Condiciones de Búsqueda Adicionales
Mediante el Operador AND

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);

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Condiciones de Búsqueda Adicionales mediante el Operador AND

e A
c l
Además de la unión, puede tener diferentes criterios para la cláusula WHERE para restringir las filas
bajo consideración para una o más tablas en la unión. El siguiente ejemplo de la diapositiva limita las

r a
filas de salida a las que tienen un ID de departamento igual a 20 o a 50:

O ly
Por ejemplo, para mostrar el número y nombre de departamento del empleado Matos, necesita una
condición adicional en la cláusula WHERE.

l & On
SELECT e.last_name, e.department_id,

FROM
d.department_name

n a e
employees e, departments d

AND
t r
last_name = 'Matos';
U s
WHERE e.department_id = d.department_id

e
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I F-12
Unión de Más de Dos Tablas

EMPLOYEES DEPARTMENTS LOCATIONS

Para unir n tablas, necesita un mínimo de n–1


condiciones de unión. Por ejemplo, para unir tres tablas
se necesitan un mínimo de dos uniones.
m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Unión de Más de Dos Tablas

e A
c l
Puede que a veces necesite unir más de dos tablas. Por ejemplo, para mostrar el apellido, el nombre
de departamento y la ciudad de cada empleado, tiene que unir las tablas EMPLOYEES,
DEPARTMENTS y LOCATIONS.
r a
SELECT
FROM O ly
e.last_name, d.department_name, l.city
employees e, departments d, locations l
WHERE
AND
l & On
e.department_id = d.department_id
d.location_id = l.location_id;

n a e
t e r U s
I n
c l e
r…a
O
Oracle Database: Conceptos Fundamentales de SQL I F-13
Uniones no Igualitarias

EMPLOYEES JOB_GRADES

JOB_GRADES define el rango de valores


de LOWEST_SAL y HIGHEST_SAL de cada
… GRADE_LEVEL. Por lo tanto, la columna
GRADE_LEVEL se puede utilizar para
asignar grados a cada empleado.

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Uniones no Igualitarias

e A
operador de igualdad.
c l
Una unión no igualitaria es una condición de unión que contiene algún operador diferente del

r a
La relación entre la tabla EMPLOYEES y JOB_GRADES es un ejemplo de unión no igualitaria. Los

O ly
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

igualdad (=). l & On


a cada empleado según el salario. La relación se obtiene mediante un operador distinto del de

n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I F-14
Recuperación de Registros con
Uniones no Igualitarias

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;


m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Recuperación de Registros 
con Uniones no Igualitarias

e A
c l
La diapositiva del ejemplo crea una unión no igualitaria para evaluar el grado de salario de un
empleado. El salario debe estar entre cualquier par de los rangos de salario bajos y altos.

r a
Es importante tener en cuenta que todos los empleados aparecerán sólo una vez al ejecutar esta

O ly
consulta. No se repite ningún empleado en la lista. Existen dos motivos por los que se produce este
hecho:

l & On
• 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 sólo puede oscilar entre los valores de salario bajo y alto de

n a e
una de las filas de la tabla de grados de salario.

t e r U s
• Todos los salarios de los empleados oscilan entre los límites proporcionados por la tabla de
grados de cargo. Es decir, ningún empleado gana menos que el valor más bajo de la columna

I n
LOWEST_SAL o más que el valor más alto de la columna HIGHEST_SAL.
Nota: se pueden utilizar otras condiciones (como <= y >=), pero BETWEEN es la más simple.

l e
Recuerde especificar primero el valor bajo y, a continuación, el alto, al utilizar BETWEEN. El

c
servidor Oracle convierte la condición BETWEEN en un par de condiciones AND. Por lo tanto, el uso

r a
de BETWEEN no proporciona ninguna ventaja, se recomienda sólo para la simplicidad lógica.

OEn el ejemplo de la diapositiva se han especificado los alias de tabla por motivos de rendimiento, no
por una posible ambigüedad.

Oracle Database: Conceptos Fundamentales de SQL I F-15


Devolución de Registros sin Coincidencia Directa
con las Uniones Externas

DEPARTMENTS EMPLOYEES

No hay ningún empleado en el


departamento 190.
m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Devolución de Registros sin Coincidencia Directa con las Uniones Externas

e A
c l
Si una fila no cumple una condición de unión, la fila no aparece en el resultado de consultas. Por
ejemplo, en la condición de unión igualitaria de las tablas EMPLOYEES y DEPARTMENTS, el ID de

r a
departamento 190 no aparece porque no hay ningún empleado con ese ID de departamento registrado
en la tabla EMPLOYEES. Igualmente, hay un empleado cuyo DEPARTMENT_ID se ha definido en
O ly
NULL, por lo que esta fila tampoco aparecerá en los resultados de la consulta de una unión

l & On
igualitaria. Para volver al registro de departamento que no tiene ningún empleado o volver al registro
de empleado que no pertenece a ningún departamento, puede utilizar la unión externa.

n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I F-16
Uniones Externas: Sintaxis

• Utilice una unión externa para ver las filas que no cumplen
la condición de unión.
• El operador de unión externa es el signo más (+).

SELECT table1.column, table2.column


FROM table1, table2
WHERE table1.column(+) = table2.column;

SELECT table1.column, table2.column


FROM table1, table2
WHERE table1.column = table2.column(+);

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Uniones Externas: Sintaxis

e A
c l
Si se utiliza un operador de unión externa en la condición de unión, se pueden devolver las filas que
faltan. El operador es un signo más entre paréntesis (+) y se coloca en el “lado” de la unión que

r a
carece de información. El operador crea una o más filas nulas, a las que se pueden unir una o más
filas de la tabla con información.
En la sintaxis: O ly
table1.column =
l & On
Es la condición que une (o relaciona) las tablas.

n a e
table2.column (+) Es el símbolo de unión externa, que se puede colocar en cualquier lado
de la condición de la cláusula WHERE pero no en ambos lados (coloque

t e r s
el símbolo de unión externa seguido del nombre de columna en la tabla
U
sin filas coincidentes).

I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I F-17
Uso de Uniones Externas

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


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

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Uso de Uniones Externas

e A
c l
En el ejemplo de la diapositiva se muestran los apellidos de los empleados e ID y nombres de
departamento. El departamento Contracting no tiene ningún empleado. El valor vacío no se muestra
en la salida.
r a
Restricciones de Unión Externa
O ly
• La unión externa sólo puede aparecer a un lado de la expresión, el lado al que le falta

l & On
información. Devuelve aquellas filas, de una tabla, que no tienen coincidencia directa en la otra
tabla.

n a e
• Una condición que incluya una unión externa no puede utilizar el operador IN ni se puede

t e r U s
enlazar a otra condición con el operador OR.
Nota: Oracle no tiene una sintaxis equivalente para soportar FULL OUTER JOIN de la sintaxis de

I n
unión compatible con SQL:1999.

c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I F-18
Unión Externa: Otro Ejemplo

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


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

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Unión Externa: Otro Ejemplo

e A
c
no hay coincidencia en la tabla DEPARTMENTS.l
La consulta del ejemplo de la diapositiva recupera todas las filas de la tabla EMPLOYEES, incluso si

r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I F-19
Unión de una Tabla consigo Misma

EMPLOYEES (WORKER) EMPLOYEES (MANAGER)

… …

MANAGER_ID en la tabla WORKER es igual a


EMPLOYEE_ID en la tabla MANAGER.
m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Unión de una Tabla consigo Misma

e A
c l
Puede que a veces necesite unir una tabla consigo misma. Para buscar el nombre de cada gestor del
empleado, necesita unir la tabla EMPLOYEES consigo misma o realizar una autounión. Por ejemplo,

r a
para buscar el nombre del gestor de Lorentz, necesita:
• Buscar a Lorentz en la tabla EMPLOYEES buscando en la columna LAST_NAME.
O ly
• Busque el número de gestor de Lorentz consultando la columna MANAGER_ID. El número de
gestor de Lorentz es 103.
l & On
• Busque el nombre del supervisor con un EMPLOYEE_ID de 103 consultando la
a e
columnaLAST_NAME. El número de empleado de Hunold es 103, por lo que Hunold en el
n
gestor de Lorentz.

t e r U s
Durante este proceso, busca dos veces en la tabla. La primera vez, cuando consulta la tabla para

I n
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

l e
buscar a Hunold.

c
r a
O
Oracle Database: Conceptos Fundamentales de SQL I F-20
Autounión: Ejemplo

SELECT worker.last_name || ' works for '


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


m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Autounión: Ejemplo

e A
c l
El ejemplo de la diapositiva une la tabla EMPLOYEES consigo misma. Para simular dos tablas en la
cláusula FROM, existen dos alias, llamados worker y manager, para la misma tabla EMPLOYEES.

r a
En este ejemplo, la cláusula WHERE contiene la unión que significa “donde el número de gestor de un

O ly
trabajador coincide con el número de empleado del gestor ”.

l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I F-21
Resumen

En este apéndice debe haber aprendido a utilizar uniones para


mostrar los datos de varias tablas utilizando:

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Resumen

e A
Hay varios modos de unir tablas.
Tipos de Uniones c l
• Uniones igualitarias
r a
• Uniones no igualitarias
• Uniones externas O ly
• Autouniones
l & On
Productos Cartesianos

n a e
t e r
Un producto cartesiano da como resultado una visualización de todas las combinaciones de filas.
s
Para ello debe omitir la cláusula WHERE.
U
Alias de Tabla
I n
• Los alias de tabla aceleran el acceso a la base de datos.

l e
• Los alias pueden ayudar a mantener el código SQL más pequeño utilizando de esta forma

c
menos memoria.

r a
O
Oracle Database: Conceptos Fundamentales de SQL I F-22
Práctica F: Visión General

En esta práctica se abordan los siguientes temas:


• Unión de tablas con una unión igualitaria
• Realización de uniones externas y autouniones
• Adición de condiciones

m y
d e
Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados.

c a
Práctica F: Visión General

e A
c l
Esta práctica está destinada a proporcionarle experiencia práctica en la extracción de datos desde más
de una tabla utilizando sintaxis de unión en Oracle.

r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I F-23
m y
d e
ca
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Índice

m y
d e
ca
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
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,
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,
F-15
ANY 7-3, 7-5, 7-9, 7-16, 7-17, 7-18, 7-19, 7-21, 7-22, 10-39,
11-20, 11-32, 11-39
atributos i-22, i-23, i-24
autounión 6-2, 6-20, 6-21, F-2, F-20
AVG 5-3, 5-5, 5-7, 5-8, 5-12, 5-15, 5-25, 5-28
B
BETWEEN 2-3, 2-8, 2-10, 2-12, 2-18, 2-19, 2-20, 2-22, 2-26,
m y
2-34, 2-37, 2-38, 6-24, F-15
d e
C
c a
CASE 3-7, 4-3, 4-10, 4-23, 4-27, 4-32, 4-36, 4-37, 4-38, 4-39,
4-40, 4-44, 4-45, 5-6
e A
c l
CHECK 9-8, 10-3, 10-7, 10-12, 10-16, 10-17, 10-28, 10-29, 10-32, 10-35,
10-38, 11-8, 11-9, 11-17
r a
O ly
cláusula 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,

l & On
2-27, 2-28, 2-31, 2-32, 2-34, 2-37, 2-38, 2-39, 3-12, 3-17, 4-38,

a e
4-39, 5-2, 5-9, 5-13, 5-14, 5-15, 5-16, 5-18, 5-19, 5-20, 5-21,
n
t e r U s
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,

I n
7-14, 7-15, 7-23, 7-25, 8-3, 8-5, 8-6, 8-7, 8-12, 8-13, 8-15,

c l e
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,

r a 11-12, 11-14, 11-15, 11-16, 11-17, 11-25, 11-28, 11-38, F-4, F-7, F-8,

O 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,
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
consulta i-30, 1-4, 1-8, 1-17, 1-18, 1-24, 2-2, 2-5, 2-23,
2-25, 2-27, 2-31, 2-33, 3-6, 3-26, 3-33, 4-21, 4-35, 5-15, 6-7,
6-14, 6-16, 6-20, 6-24, 6-28, 6-29, 6-30, 7-4, 7-5, 7-6, 7-11,
7-12, 7-13, 7-14, 7-15, 7-17, 7-22, 7-24, 7-25, 7-26, 8-5, 8-6,
8-13, 8-17, 8-19, 8-20, 8-22, 8-25, 8-26, 8-28, 8-29, 8-30, 9-23,
9-33, 9-44, 9-47, 10-28, 10-42, 11-8, 11-29, 11-36, 11-37, 11-38, C-18,
C-28, D-3, D-5, D-13, D-16, D-17, F-8, F-10, F-15, F-16, F-19,
F-20
m y
COUNT 5-3, 5-5, 5-9, 5-12, 5-19, 5-25, 5-28
d e
CURRENT_DATE 3-24, 9-9
c
CURRVAL 10-10, 10-28, 11-3, 11-22, 11-27, 11-28, 11-29, 11-33, 11-40
a
D
e A
DBMS i-17
c l
4-42, 4-44, 4-45, 5-6 r a
DECODE 3-7, 4-3, 4-10, 4-23, 4-27, 4-36, 4-37, 4-39, 4-40, 4-41,

O ly
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
l & On
a e
DELETE i-31, 9-3, 9-13, 9-19, 9-21, 9-22, 9-23, 9-24, 9-25, 9-29,
n
t
11-19, 11-28, D-17
e r U s
9-35, 9-36, 9-37, 9-39, 9-40, 9-42, 9-46, 9-47, 10-27, 10-31, 11-7,

I n
DESCRIBE 1-3, 1-10, 1-16, 1-19, 1-25, 1-26, 1-27, 8-9, 8-10,

c l e
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

r a
DISTINCT 1-3, 1-5, 1-10, 1-16, 1-19, 1-24, 1-25, 1-29, 2-5,

O 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,
10-41, 11-35, 11-42, C-3, C-5, C-8, C-10, C-13, E-5, E-6
expresión 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
fecha i-22, 1-9, 1-11, 1-20, 1-21, 2-7, 2-24, 2-31, 3-2, 3-3,
3-7, 3-8, 3-15, 3-17, 3-18, 3-20, 3-21, 3-22, 3-23, 3-24, 3-25,
3-26, 3-27, 3-28, 3-29, 3-30, 3-32, 3-33, 4-5, 4-11, 4-14, 4-16,
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
funciones i-2, i-4, i-9, i-10, i-11, i-13, i-16, i-39, 2-5,
2-7, 3-2, 3-4, 3-5, 3-6, 3-7, 3-9, 3-10, 3-11, 3-13, 3-16,
m y
3-17, 3-18, 3-24, 3-28, 3-30, 3-31, 3-32, 3-33, 4-2, 4-4, 4-7,
4-9, 4-20, 4-24, 4-28, 4-44, 4-45, 5-2, 5-3, 5-4, 5-5, 5-6,
d e
5-7, 5-8, 5-11, 5-12, 5-13, 5-14, 5-15, 5-19, 5-20, 5-22, 5-25,
c a
e
11-7, 11-13, C-2, C-6, C-14, C-24, C-26, E-2, E-3, E-15, E-18 A
5-26, 5-27, 5-28, 5-29, 7-2, 7-25, 8-25, 9-9, 10-10, 10-18, 10-28,

c l
función 3-4, 3-6, 3-7, 3-12, 3-17, 3-18, 3-19, 3-23, 3-24,

r a
3-26, 3-29, 3-32, 4-11, 4-17, 4-20, 4-25, 4-26, 4-29, 4-30, 4-31,

O ly
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,

l & On
5-25, 5-27, 7-12, 8-25, 9-9, 9-10, 9-12, 10-10, 10-33, 11-13, C-6,

a e
C-23, C-24, C-25, C-26, D-17, E-8
n
H

t e r U s
HAVING 5-2, 5-3, 5-12, 5-20, 5-21, 5-22, 5-23, 5-24, 5-25, 5-28,

I n
5-29, 7-3, 7-5, 7-9, 7-13, 7-16, 7-21, 7-25, 11-28
I
c l e
r a
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

O
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
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
Java i-12, C-4, C-8, E-3, E-12, E-14, E-15, E-16
L
LENGTH 3-9, 3-10, 3-13, 3-14, 3-32
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-23
literal 1-14, 1-21, 1-22, 1-23, 3-13, 4-11, 4-31, 4-32, 4-38,
8-26, 10-10
m y
M
LPAD 3-9, 3-13

d e
MAX 5-3, 5-5, 5-7, 5-8, 5-12, 5-25, 5-28
c a
MIN 5-3, 5-5, 5-7, 5-8, 5-12, 5-25, 5-28, 7-12

e A
8-27, 8-30, 8-31
c l
MINUS 8-3, 8-4, 8-5, 8-7, 8-12, 8-18, 8-21, 8-22, 8-23, 8-24,

MOD 3-16, 3-19, 3-32


r a
N
O ly
l & On
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

n a e
NOT 1-14, 1-26, 1-27, 2-3, 2-14, 2-15, 2-18, 2-19, 2-20, 2-22,

e r s
2-26, 2-34, 2-38, 5-24, 7-19, 7-20, 7-22, 7-23, 9-8, 10-3, 10-7,
t U
I n
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

c l e
r a
O
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,
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,
4-44, 5-6, 5-11
O
OLTP i-11, i-16
ON 2-36, 6-3, 6-5, 6-6, 6-8, 6-15, 6-16, 6-17, 6-18, 6-19,
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
opción i-24, 2-13, 9-31, 10-10, 10-33, 11-8, 11-9, 11-12, 11-18, 11-25,
11-26, 11-31, 11-32, C-13, C-19, C-26
m y
operador 1-3, 1-10, 1-12, 1-16, 1-19, 1-20, 1-23, 1-25, 2-5,
d e
2-10, 2-11, 2-12, 2-14, 2-18, 4-30, 6-23, 7-3, 7-7, 7-9, 7-10,
c a
A
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,
e
8-30, 8-31, F-14, F-17, F-18
c l
r a
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 O ly
l & On
orden i-27, 1-7, 1-13, 2-2, 2-11, 2-20, 2-23, 2-24, 2-25, 2-33,

a e
2-39, 5-15, 5-18, 5-27, 5-28, 8-2, 8-4, 8-5, 8-6, 8-13, 8-15,
n
t e
ordenación 2-23, 2-24, 2-25r
8-19, 8-28, 9-7, 9-8, 11-12

U s
P
I n
c l e
pseudocolumnas 10-28, 11-27, 11-28

r a
O
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
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,
11-39, C-10, E-6
restricción 1-26, 2-4, 9-4, 9-8, 9-20, 9-24, 10-17, 10-18, 10-19,
10-20, 10-21, 10-22, 10-23, 10-24, 10-25, 10-26, 10-27, 10-28, 10-30, 10-31,
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
RPAD 3-9, 3-13
S
m y
secuencias 2-24, 10-9, 11-2, 11-3, 11-22, 11-23, 11-24, 11-25, 11-30,
11-31, 11-33, 11-39, 11-40, 11-42, 11-45, 11-46
d e
selección C-6, E-12
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
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,
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,
5-22, 5-23, 5-24, 5-26, 5-27, 5-28, 6-2, 6-6, 6-7, 6-10, 6-13,
6-14, 6-16, 6-17, 6-18, 6-21, 6-24, 6-28, 6-29, 6-30, 6-34, 7-2,
7-5, 7-6, 7-8, 7-10, 7-11, 7-12, 7-13, 7-14, 7-15, 7-17, 7-18,
7-19, 7-20, 7-22, 7-23, 7-25, 7-26, 8-3, 8-5, 8-6, 8-7, 8-10,
8-11, 8-12, 8-13, 8-14, 8-15, 8-17, 8-18, 8-19, 8-20, 8-21, 8-22,
8-23, 8-24, 8-25, 8-26, 8-27, 8-28, 8-29, 8-30, 9-3, 9-9, 9-12,
9-13, 9-16, 9-17, 9-18, 9-19, 9-22, 9-23, 9-25, 9-33, 9-37, 9-39,
9-40, 9-41, 9-42, 9-43, 9-44, 9-45, 9-47, 10-9, 10-33, 10-34, 10-37,
m y
d e
10-42, 11-5, 11-8, 11-9, 11-10, 11-11, 11-12, 11-13, 11-17, 11-19, 11-28,
11-29, B-4, B-5, B-6, B-7, B-8, B-9, B-10, C-25, D-2, D-11,
D-12, D-14, D-17, F-2, F-5, F-7, F-8, F-10, F-11, F-12, F-13,c a
F-15, F-17, F-18, F-19, F-21
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
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,
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,
9-34, 9-35, 9-36, 9-37, 9-38, 9-39, 9-40, 9-41, 9-42, 9-43, 9-44,
9-47, 10-8, 10-10, 10-11, 10-19, 10-29, 10-31, 10-33, 10-36, 10-37, 10-39,
10-41, 10-42, 11-5, 11-6, 11-8, 11-10, 11-13, 11-20, 11-25, 11-28, 11-29,
11-30, 11-31, 11-32, 11-37, 11-39, 11-43, C-13, C-16, C-19, C-23, C-25,
C-26, C-28, D-3, D-5, E-7, F-7, F-8
sinónimo i-24, 1-24, 1-26, 7-18, 11-2, 11-42, 11-43, 11-46, D-7
subconsulta 7-3, 7-4, 7-5, 7-7, 7-9, 7-10, 7-11, 7-12, 7-13,
7-14, 7-15, 7-16, 7-17, 7-18, 7-19, 7-20, 7-21, 7-22, 7-23, 7-24,
m y
d
7-25, 9-12, 9-15, 9-23, 10-3, 10-7, 10-12, 10-14, 10-33, 10-35, 10-38,e
10-41, 11-8, 11-9, 11-10, 11-12, 11-28
SUBSTR 3-9, 3-10, 3-13, 3-32, 4-25 c a
SYSDATE 3-23, 3-24, 3-26, 3-29, 3-30, 3-32, 9-9, 10-10, 10-11,
e A
10-28
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
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,
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,
9-25, 9-35, 9-37, 9-39, 9-41, 9-42, 9-43, 9-44, 9-47, 9-48, 10-2,
10-3, 10-4, 10-5, 10-7, 10-8, 10-9, 10-10, 10-11, 10-12, 10-13, 10-14,
10-17, 10-18, 10-19, 10-20, 10-21, 10-22, 10-23, 10-24, 10-25, 10-26, 10-27,
10-28, 10-29, 10-30, 10-31, 10-33, 10-34, 10-35, 10-36, 10-37, 10-38, 10-39,
10-40, 10-41, 10-42, 11-5, 11-6, 11-7, 11-11, 11-16, 11-26, 11-29, 11-30,
11-35, 11-36, 11-37, 11-38, 11-39, 11-41, 11-42, 11-43, 11-44, C-10, C-11,
C-13, C-14, C-15, D-4, D-5, D-7, D-8, D-12, D-13, E-6, F-2,
F-3, F-4, F-5, F-7, F-8, F-9, F-10, F-11, F-14, F-15, F-16,
m y
F-17, F-18, F-19, F-20, F-21, F-22, F-23
d e
TO_CHAR 4-2, 4-3, 4-7, 4-8, 4-9, 4-10, 4-11, 4-16, 4-17,
c
4-18, 4-19, 4-22, 4-23, 4-26, 4-27, 4-34, 4-36, 4-44, 4-45, 8-25
a
TO_DATE 4-2, 4-3, 4-7, 4-8, 4-9, 4-10, 4-20, 4-21, 4-22,
e A
4-23, 4-27, 4-36, 4-44, 4-45, 9-10
c l
4-27, 4-36, 4-43, 4-44 r a
TO_NUMBER 4-2, 4-3, 4-7, 4-8, 4-9, 4-10, 4-20, 4-21, 4-23,

O ly
transacciones i-11, 9-2, 9-3, 9-4, 9-13, 9-19, 9-25, 9-26,

& On
9-29, 9-38, 9-39, 9-42, 9-48, 10-39
l
TRIM 3-9, 3-10, 3-13

n a e
U
t e r
TRUNC 3-16, 3-18, 3-28, 3-30, 3-32

U s
I n
UNION 8-3, 8-5, 8-6, 8-7, 8-12, 8-13, 8-14, 8-15, 8-16, 8-17,

c l e
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,

r a 10-35, 10-38, 11-36, 11-37, 11-44

O
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
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,
11-17, 11-20, 11-21, 11-22, 11-33, 11-39, 11-40, 11-42, 11-45, C-10, E-6,
E-13
W
WHERE 2-3, 2-4, 2-5, 2-6, 2-7, 2-8, 2-9, 2-10, 2-11, 2-12,
2-13, 2-14, 2-15, 2-16, 2-17, 2-18, 2-19, 2-21, 2-22, 2-23, 2-26,
2-27, 2-28, 2-29, 2-31, 2-32, 2-34, 2-35, 2-36, 2-37, 2-38, 2-39,
3-6, 3-12, 3-14, 3-19, 3-21, 3-26, 3-29, 3-30, 4-11, 4-19, 4-21,
m y
4-22, 4-25, 4-31, 4-42, 5-6, 5-7, 5-9, 5-14, 5-15, 5-18, 5-20,
5-21, 5-22, 5-24, 5-27, 5-28, 6-10, 6-14, 6-15, 6-18, 6-36, 7-2,
d e
7-5, 7-6, 7-10, 7-11, 7-12, 7-13, 7-14, 7-15, 7-17, 7-18, 7-19,
c a
7-20, 7-22, 7-23, 7-25, 8-5, 9-9, 9-12, 9-15, 9-16, 9-17, 9-18,

e A
9-21, 9-22, 9-23, 9-35, 9-37, 9-41, 9-43, 9-44, 9-45, 10-30, 10-31,

c l
10-34, 11-9, 11-10, 11-12, 11-17, 11-19, 11-38, F-4, F-7, F-10, F-11,

r a
F-12, F-13, F-15, F-17, F-18, F-19, F-21, F-22
X
O ly
& On
XML i-9, i-14, i-39, C-7, C-9, C-27, E-3, E-12

l
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I Índice-11
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Conceptos Fundamentales de SQL I Índice-12

También podría gustarte