fundacion_proydesad64258cs10_sg2-

Upload: walter2458257

Post on 02-Jun-2018

635 views

Category:

Documents


31 download

TRANSCRIPT

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    1/254

    Oracle Database: Conceptos

    Fundamentales de SQL I

    Volumen II Gua del Alumno

    D64258CS10

    Edicin 1.0

    Enero de 2010

    D73591

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    2/254

    Copyright 2010, Oracle y/o sus filiales. Todos los derechos reservados.

    Renuncia

    Este documento contiene informacin propiedad de Oracle Corporation y se

    encuentra protegido por las leyes de copyright, as como por otras leyes de

    propiedad intelectual. El usuario podr realizar copias o imprimir este documento

    para su uso exclusivo en los cursos de formacin de Oracle. Este documento no

    podr ser modificado ni alterado en modo alguno. Salvo que la legislacin de

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

    copiar, imprimir, mostrar, representar, reproducir, publicar, conceder licencias, enviar,transmitir ni distribuir este documento total ni parcialmente sin autorizacin expresa

    por parte de Oracle.

    La informacin contenida en este documento est sujeta a cambio sin previo aviso.

    Si detecta cualquier problema en el documento, le agradeceremos que nos lo

    comunique por escrito a: Oracle University, 500 Oracle Parkway, Redwood Shores,

    California 94065 USA. Oracle Corporation no garantiza que este documento est

    exento de errores.

    Aviso sobre Restriccin de Derechos

    Si esta documentacin se entrega al Gobierno de los EE. UU. o a cualquier entidad

    que la utilice en nombre del Gobierno de los EE. UU., se aplicar la siguiente

    disposicin:

    U.S. GOVERNMENT RIGHTSThe U.S. Governments rights to use, modify, reproduce, release, perform, display, or

    disclose these training materials are restricted by the terms of the applicable Oracle

    license agreement and/or the applicable U.S. Government contract.

    Aviso de Marca Registrada

    Oracle es una marca comercial registrada de Oracle Corporation y/o sus filiales.

    Todos los dems nombres pueden ser marcas comerciales de sus respectivos

    propietarios.

    Autores

    Salome Clement

    Brian Pottle

    Puja Singh

    Colaboradores y

    Revisores Tcnicos

    Anjulaponni Azhagulekshmi

    Clair Bennett

    Zarko Cesljas

    Yanti Chang

    Gerlinde Frenzen

    Steve Friedberg

    Joel Goodman

    Nancy Greenberg

    Pedro Neves

    Manish Pawar

    Surya Rekha

    Helen Robertson

    Lauran SerhalHilda Simon

    Tulika Srivastava

    Redactor

    Amitha Narayan

    Diseador Grfico

    Rajiv Chandrabhanu

    Publicador

    Jobi Varghese

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    3/254

    iii

    Contenido

    I Introduccin

    Objetivos I-2

    Agenda I-3

    Objetivos del Curso I-4

    Agenda I-5

    Apndices Utilizados en el Curso I-7

    Agenda I-8

    Oracle Database 11g: reas de Atencin I-9

    Oracle Database 11g I-10

    Oracle Fusion Middleware I-12Oracle Enterprise Manager Grid Control I-13

    Oracle BI Publisher I-14

    Agenda I-15

    Sistema de Gestin de Bases de Datos Relacionales y Relacionales de Objetos I-16

    Almacenamiento de Datos en Diferentes Medios Fsicos I-17

    Concepto de Base de Datos Relacional I-18

    Definicin de una Base de Datos Relacional I-19

    Modelos de Datos I-20

    Modelo de Relacin de Entidades I-21

    Convenciones de Modelado de Relacin de Entidades I-23Relacin de Varias Tablas I-25

    Terminologa de Bases de Datos Relacionales I-27

    Agenda I-29

    Uso de SQL para Consultar Base de Datos I-30

    Sentencias SQL I-31

    Entornos de Desarrollo para SQL I-32

    Agenda I-33

    Esquema Human Resources(HR) I-34

    Tablas Utilizadas en el Curso I-35Agenda I-36

    Documentacin de Oracle Database I-37

    Recursos Adicionales I-38

    Resumen I-39

    Prctica I: Visin General I-40

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    4/254

    iv

    1 Recuperacin de Datos Mediante la Sentencia SQL SELECT

    Objetivos 1-2

    Agenda 1-3

    Capacidades de las Sentencias SQL SELECT 1-4

    Sentencia SELECTBsica 1-5

    Seleccin de Todas las Columnas 1-6

    Seleccin de Columnas Concretas 1-7

    Escritura de Sentencias SQL 1-8

    Valores por Defecto de Cabeceras de Columna 1-9

    Agenda 1-10

    Expresiones Aritmticas 1-11

    Uso de Operadores Aritmticos 1-12

    Prioridad de Operadores 1-13

    Definicin de Valor Nulo 1-14

    Valores Nulos en Expresiones Aritmticas 1-15Agenda 1-16

    Definicin de Alias de Columna 1-17

    Uso de Alias de Columna 1-18

    Agenda 1-19

    Operador de Concatenacin 1-20

    Cadenas de Caracteres Literales 1-21

    Uso de Cadenas de Caracteres Literales 1-22

    Operador de Comillas (q) Alternativo 1-23

    Filas Duplicadas 1-24

    Agenda 1-25Visualizacin de la Estructura de la Tabla 1-26

    Uso del Comando DESCRIBE 1-27

    Prueba 1-28

    Resumen 1-29

    Prctica 1: Visin General 1-30

    2 Restriccin y Ordenacin de Datos

    Objetivos 2-2

    Agenda 2-3

    Limitacin de Filas con una Seleccin 2-4

    Limitacin de las Filas Seleccionadas 2-5

    Uso de la Clusula WHERE 2-6

    Fechas y Cadenas de Caracteres 2-7

    Operadores de Comparacin 2-8

    Uso de Operadores de Comparacin 2-9

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    5/254

    v

    Uso de Condiciones de Rango mediante el Operador BETWEEN 2-10

    Condicin de Miembro mediante el Operador IN 2-11

    Coincidencia de Patrones mediante el Operador LIKE 2-12

    Combinacin de Caracteres Comodn 2-13

    Uso de las Condiciones NULL 2-14

    Definicin de Condiciones mediante los Operadores Lgicos 2-15

    Uso del Operador AND 2-16

    Uso del Operador OR 2-17

    Uso del Operador NOT 2-18

    Agenda 2-19

    Reglas de Prioridad 2-20

    Agenda 2-22

    Uso de la Clusula ORDER BY 2-23

    Ordenacin 2-24

    Agenda 2-26Variables de Sustitucin 2-27

    Uso de la Variable de Sustitucin de Un Solo Ampersand 2-29

    Valores de Fecha y Carcter con Variables de Sustitucin 2-31

    Especificacin de Nombres de Columna, Expresiones y Texto 2-32

    Uso de Variables de Sustitucin de Dos Ampersands 2-33

    Agenda 2-34

    Uso del Comando DEFINE 2-35

    Uso del Comando VERIFY 2-36

    Prueba 2-37

    Resumen 2-38

    Prctica 2: Visin General 2-39

    3 Uso de Funciones de Una Sola Fila para Personalizar la Salida

    Objetivos 3-2

    Agenda 3-3

    Funciones SQL 3-4

    Dos Tipos de Funciones SQL 3-5

    Funciones de Una Sola Fila 3-6

    Agenda 3-8Funciones de Carcter 3-9

    Funciones de Conversin de Caracteres 3-11

    Using Case-Conversion Functions 3-12

    Uso de Funciones de Conversin de Caracteres 3-12

    Funciones de Manipulacin de Caracteres 3-13

    Uso de las Funciones de Manipulacin de Caracteres 3-14

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    6/254

    vi

    Agenda 3-15

    Funciones Numricas 3-16

    Uso de la Funcin ROUND 3-17

    Uso de la Funcin TRUNC 3-18

    Uso de la Funcin MOD 3-19

    Agenda 3-20

    Trabajo con Fechas 3-21

    Formato de Fecha RR 3-22

    Uso de la Funcin SYSDATE 3-24

    Operadores Aritmticos con Fechas 3-25

    Uso de Operadores Aritmticos con Fechas 3-26

    Agenda 3-27

    Funciones de Manipulacin de Fecha 3-28

    Uso de las Funciones de Fecha 3-29

    Uso de las Funciones ROUNDy TRUNCcon Fechas 3-30Prueba 3-31

    Resumen 3-32

    Prctica 3: Visin General 3-33

    4 Uso de Funciones de Conversin y Expresiones Condicionales

    Objetivos 4-2

    Agenda 4-3

    Funciones de Conversin 4-4

    Conversin Implcita del Tipo de Dato 4-5

    Conversin Explcita del Tipo de Dato 4-7Agenda 4-10

    Uso de la Funcin TO_CHARcon Fechas 4-11

    Elementos del Modelo de Formato de Fecha 4-12

    Uso de la Funcin TO_CHARcon Fechas 4-16

    Uso de la Funcin TO_CHARcon Nmeros 4-17

    Uso de Funciones TO_NUMBERy TO_DATE 4-20

    Uso de las Funciones TO_CHARy TO_DATEcon el Formato de Fecha RR 4-22

    Agenda 4-23

    Funciones de Anidacin 4-24Funciones de Anidacin: Ejemplo 1 4-25

    Funciones de Anidacin: Ejemplo 2 4-26

    Agenda 4-27

    Funciones Generales 4-28

    FuncinNVL 4-29

    Uso de la Funcin NVL 4-30

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    7/254

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    8/254

    viii

    6 Visualizacin de Datos de Varias Tablas Utilizando Uniones

    Objetivos 6-2

    Agenda 6-3

    Obtencin de Datos de Varias Tablas 6-4

    Tipos de Uniones 6-5

    Unin de Tablas mediante la Sintaxis SQL:1999 6-6Cualificacin de Nombres de Columna Ambiguos 6-7

    Agenda 6-8

    Creacin de Uniones Naturales 6-9

    Recuperacin de Registros con Uniones Naturales 6-10

    Creacin de Uniones con la Clusula USING 6-11

    Unin de Nombres de Columna 6-12

    Recuperacin de Registros con la Clusula USING 6-13

    Uso de Alias de Tabla con la Clusula USING 6-14

    Creacin de Uniones con la Clusula ON 6-15Recuperacin de Registros con la Clusula ON 6-16

    Creacin de Uniones en 3 Direcciones con la Clusula ON 6-17

    Aplicacin de Condiciones Adicionales a una Unin 6-18

    Agenda 6-19

    Unin de una Tabla consigo Misma 6-20

    Autouniones que Utilizan la Clusula ON 6-21

    Agenda 6-22

    Uniones no igualitarias 6-23

    Recuperacin de Registros con Uniones no Igualitarias 6-24

    Agenda 6-25

    Devolucin de Registros sin Coincidencia Directa con las uniones OUTER 6-26

    Uniones INNERfrente a Uniones OUTER 6-27

    LEFT OUTER JOIN 6-28

    RIGHT OUTER JOIN 6-29

    FULL OUTER JOIN 6-30

    Agenda 6-31

    Productos Cartesianos 6-32

    Generacin de un Producto Cartesiano 6-33

    Creacin de Uniones Cruzadas 6-34Prueba 6-35

    Resumen 6-36

    Prctica 6: Visin General 6-37

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    9/254

    ix

    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-6Instrucciones para el Uso de Subconsultas 7-7

    Tipos de Subconsultas 7-8

    Agenda 7-9

    Subconsultas de Una Sola Fila 7-10

    Ejecucin de Subconsultas de una Sola Fila 7-11

    Uso de Funciones de Grupo en una Subconsulta 7-12

    Clusula HAVINGcon Subconsultas 7-13

    Qu Parte de esta Sentencia Es Incorrecta? 7-14

    La Consulta Interna No Devuelve Ningn Resultado 7-15Agenda 7-16

    Subconsultas de Varias Filas 7-17

    Uso del Operador ANYen Subconsultas de Varias Filas 7-18

    Uso del Operador ALLen Subconsultas de Varias Filas 7-19

    Uso del Operador EXISTS 7-20

    Agenda 7-21

    Valores Nulos en una Subconsulta 7-22

    Prueba 7-24

    Resumen 7-25

    Prctica 7: Visin General 7-26

    8 Uso de los Operadores de Definicin

    Objetivos 8-2

    Agenda 8-3

    Operadores de Definicin 8-4

    Instrucciones de los Operadores de Definicin 8-5

    Servidor de Oracle y Operadores de Definicin 8-6

    Agenda 8-7

    Tablas Utilizadas en esta Leccin 8-8

    Agenda 8-12

    Operador UNION 8-13

    Uso del Operador UNION 8-14

    Operador UNION ALL 8-16

    Uso del Operador UNION ALL 8-17

    Agenda 8-18

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    10/254

    x

    OperadorINTERSECT 8-19

    Uso del Operador INTERSECT 8-20

    Agenda 8-21

    OperadorMINUS 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 Clusula ORDER BYen Operaciones de Definicin 8-28

    Prueba 8-29

    Resumen 8-30

    Prctica 8: Visin General 8-31

    9 Manipulacin de DatosObjetivos 9-2

    Agenda 9-3

    Lenguaje de Manipulacin de Datos 9-4

    Adicin de una Nueva Fila a una Tabla 9-5

    Sintaxis de las Sentencias INSERT 9-6

    Insercin de Filas 9-7

    Insercin de Filas con Valores Nulos 9-8

    Insercin de Valores Especiales 9-9

    Insercin de Valores de Fecha y Hora Especficos 9-10

    Creacin de un Script 9-11

    Copia de Filas de Otra Tabla 9-12

    Agenda 9-13

    Cambio de Datos en la Tabla 9-14

    Sintaxis de Sentencias UPDATE 9-15

    Actualizacin de Filas en una Tabla 9-16

    Actualizacin de Dos Columnas con una Subconsulta 9-17

    Actualizacin de Filas Basada en Otra Tabla 9-18

    Agenda 9-19

    Eliminacin de Filas de Tablas 9-20Sentencia DELETE 9-21

    Supresin de Filas de Tablas 9-22

    Supresin de Filas Basada en Otra Tabla 9-23

    SentenciaTRUNCATE 9-24

    Agenda 9-25

    Transacciones de Base de Datos 9-26

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    11/254

    xi

    Transacciones de la Base de Datos: Inicio y Fin 9-27

    Ventajas de las Sentencias COMMITy ROLLBACK 9-28

    Sentencias de Control de Transacciones Explcitas 9-29

    Rollback de los Cambios de un Marcador 9-30

    Procesamiento de Transacciones Implcitas 9-31

    Estado de los Datos antes de COMMITo ROLLBACK 9-33

    Estado de los Datos despus de COMMIT 9-34

    Confirmacin de Datos 9-35

    Estado de los Datos despus de ROLLBACK 9-36

    Estado de los Datos despus de ROLLBACK: Ejemplo 9-37

    Rollback a Nivel de Sentencias 9-38

    Agenda 9-39

    Consistencia de Lectura 9-40

    Implementacin de Consistencia de Lectura 9-41

    Agenda 9-42ClusulaFOR UPDATEen una Sentencia SELECT 9-43

    ClusulaFOR UPDATE: Ejemplos 9-44

    Prueba 9-46

    Resumen 9-47

    Prctica 9: Visin General 9-48

    10 Uso de Sentencias DDL para Crear y Gestionar Tablas

    Objetivos 10-2

    Agenda 10-3

    Objetos de Base de Datos 10-4

    Reglas de Nomenclatura 10-5

    Agenda 10-7

    SentenciaCREATE TABLE 10-8

    Referencia a Tablas de Otro Usuario 10-9

    OpcinDEFAULT 10-10

    Creacin de Tablas 10-11

    Agenda 10-12

    Tipos de Dato 10-13

    Tipos de Dato de Fecha y Hora 10-15Agenda 10-16

    Inclusin de Restricciones 10-17

    Instrucciones de Restriccin 10-18

    Definicin de Restricciones 10-19

    RestriccinNOT NULL 10-21

    RestriccinUNIQUE 10-22

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    12/254

    xii

    RestriccinPRIMARY KEY 10-24

    RestriccinFOREIGN KEY: Palabras Clave 10-27

    RestriccinCHECK 10-28

    SentenciaCREATE TABLE: Ejemplo 10-29

    Violacin de Restricciones 10-30

    Agenda 10-32

    Creacin de una Tabla mediante una Subconsulta 10-33

    Agenda 10-35

    SentenciaALTER TABLE 10-36

    Tablas de Slo Lectura 10-37

    Agenda 10-38

    Borrado de una Tabla 10-39

    Prueba 10-40

    Resumen 10-41

    Prctica 10: Visin General 10-42

    11 Creacin de Otros Objetos de Esquema

    Objetivos 11-2

    Agenda 11-3

    Objetos de Base de Datos 11-4

    Qu es una Vista? 11-5

    Ventajas de las Vistas 11-6

    Vistas Simples y Complejas 11-7

    Creacin de Vistas 11-8

    Recuperacin de Datos de una Vista 11-11Modificacin de Vistas 11-12

    Creacin de Vistas Complejas 11-13

    Reglas para Realizar Operaciones DML en una Vista 11-14

    Uso de la Clusula WITH CHECK OPTION 11-17

    Denegacin de Operaciones DML 11-18

    Eliminacin de Vistas 11-20

    Prctica 11: Visin General de la Parte 1 11-21

    Agenda 11-22

    Secuencias 11-23SentenciaCREATE SEQUENCE: Sintaxis 11-25

    Creacin de Secuencias 11-26

    PseudocolumnasNEXTVALy CURRVAL 11-27

    Uso de una Secuencia 11-29

    Almacenamiento en Cach de los Valores de Secuencia 11-30

    Modificacin de una Secuencia 11-31

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    13/254

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    14/254

    xiv

    Informes de Bases de Datos C-27

    Creacin de un Informe Definido por el Usuario C-28

    Motores de Bsqueda y Herramientas Externas C-29

    Definicin de Preferencias C-30

    Restablecimiento del Diseo de SQL Developer C-31

    Resumen C-32

    Apndice D: Uso de SQL*Plus

    Objetivos D-2

    Interaccin de SQL y SQL*Plus D-3

    Sentencias SQL frente a Comandos SQL*Plus D-4

    Visin General de SQL*Plus D-5

    Conexin a SQL*Plus D-6

    Visualizacin de la Estructura de la Tabla D-7

    Comandos de Edicin SQL*Plus D-9Uso de LIST, ny APPEND D-11

    Uso del Comando CHANGE D-12

    Comandos de Archivos SQL*Plus D-13

    Using the SAVE, STARTCommands D-14

    ComandoSERVEROUTPUT D-15

    Uso del Comando SQL*Plus SPOOL D-16

    Uso del Comando AUTOTRACE D-17

    Resumen D-18

    Apndice E: Uso de JDeveloperObjetivos E-2

    Oracle JDeveloper E-3

    Database Navigator E-4

    Creacin de Conexin E-5

    Examen de Objetos de Bases de Datos E-6

    Ejecucin de Sentencias SQL E-7

    Creacin de Unidades de Programa E-8

    Compilacin E-9

    Ejecucin de una Unidad de Programa E-10Borrado de una Unidad de Programa E-11

    Ventana Structure E-12

    Ventana del Editor E-13

    Navegador de Aplicaciones E-14

    Despliegue de Procedimientos Java Almacenados E-15

    Publicacin de Java en PL/SQL E-16

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    15/254

    xv

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

    Resumen E-18

    Apndice F: Sintaxis de Unin en Oracle

    Objetivos F-2

    Obtencin de Datos de Varias Tablas F-3Productos Cartesianos F-4

    Generacin de un Producto Cartesiano F-5

    Tipos de Uniones Propiedad de Oracle F-6

    Unin de Tablas mediante la Sintaxis de Oracle F-7

    Cualificacin de Nombres de Columna Ambiguos F-8

    Uniones igualitarias F-9

    Recuperacin de Registros con Uniones Igualitarias F-10

    Recuperacin de Registros con Uniones Igualitarias: Ejemplo F-11

    Condiciones de Bsqueda Adicionales Mediante el Operador AND F-12Unin de Ms de Dos Tablas F-13

    Uniones no Igualitarias F-14

    Recuperacin de Registros con Uniones no Igualitarias F-15

    Devolucin de Registros sin Coincidencia Directa con las Uniones Externas F-16

    Uniones Externas: Sintaxis F-17

    Uso de Uniones Externas F-18

    Unin Externa: Otro Ejemplo F-19

    Unin de una Tabla consigo Misma F-20

    Autounin: Ejemplo F-21

    Resumen F-22Prctica F: Visin General F-23

    ndice

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    16/254

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    17/254

    Apndice APrcticas y Soluciones

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    18/254

    Oracle Database: Conceptos Fundamentales de SQL I A-2

    Tabla de Contenido

    Prcticas para la Leccin I ........................................................................................................ 3Prctica I-1: Introduccin ............................................................................................... 4Soluciones a la Prctica I-1: Introduccin ...................................................................... 5

    Prcticas de la Leccin 1......................................................................................................... 11Prctica 1-1: Recuperacin de Datos mediante la Sentencia SQL

    SELECT................ 12

    Soluciones a la Prctica 1-1: Recuperacin de Datos mediante la Sentencia SQLSELECT ........................................................................................................................ 16

    Prcticas de la Leccin 2......................................................................................................... 19Prctica 2-1: Restriccin y Ordenacin de Datos ......................................................... 20Soluciones a la Prctica 2-1: Restriccin y Ordenacin de Datos................................ 24

    Prcticas de la Leccin 3......................................................................................................... 27Prctica 3-1: Uso de Funciones de Una Sola Fila para Personalizar la Salida ............. 28Soluciones a la Prctica 3-1: Uso de Funciones de Una Sola Fila paraPersonalizar la Salida.................................................................................................... 32

    Prcticas de la Leccin 4......................................................................................................... 35Prctica 4-1: Uso de Funciones de Conversin y Expresiones Condicionales............. 36

    Soluciones a la Prctica 4-1: Uso de Funciones de Conversin y ExpresionesCondicionales................................................................................................................ 39Prcticas de la Leccin 5......................................................................................................... 41

    Prctica 5-1: Informes de Datos Agregados con Funciones de Grupo......................... 42Soluciones a la Prctica 5-1: Informes de Datos Agregados con Funciones deGrupo ............................................................................................................................ 45

    Prcticas de la Leccin 6......................................................................................................... 48Prctica 6-1: Visualizacin de Datos de Varias Tablas Utilizando Uniones................ 49Soluciones a la Prctica 6-1: Visualizacin de Datos de Varias Tablas UtilizandoUniones ......................................................................................................................... 52

    Prcticas de la Leccin 7......................................................................................................... 54Prctica 7-1: Uso de Subconsultas para Solucionar Consultas..................................... 55Soluciones a la Prctica 7-1: Uso de Subconsultas para Solucionar Consultas............ 57

    Prcticas de la Leccin 8......................................................................................................... 59Prctica 8-1: Uso de los Operadores de Definicin...................................................... 60Soluciones a la Prctica 8-1: Uso de los Operadores de Definicin............................. 62

    Prcticas de la Leccin 9......................................................................................................... 64Prctica 9-1: Manipulacin de Datos............................................................................ 65Soluciones a la Prctica 9-1: Manipulacin de Datos................................................... 69

    Prcticas de la Leccin 10....................................................................................................... 73Prctica 10-1: Uso de Sentencias DDL para Crear y Gestionar Tablas........................ 74Soluciones a la Prctica 10-1: Uso de Sentencias DDL para Crear y GestionarTablas............................................................................................................................ 76

    Prcticas de la Leccin 11....................................................................................................... 79Prctica 11-1: Creacin de Otros Objetos de Esquema ................................................ 80Soluciones a la Prctica 11-1: Creacin de Otros Objetos de Esquema ....................... 82

    Prcticas del Apndice F......................................................................................................... 84Prctica F-1: Sintaxis de Unin en Oracle.................................................................... 85Soluciones a las Prcticas F-1: Sintaxis de Unin en Oracle........................................ 88

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    19/254

    Oracle Database: Conceptos Fundamentales de SQL I A-3

    Prcticas para la Leccin I

    En esta prctica, realizar las siguientes tareas:

    Iniciar Oracle SQL Developer y crear una nueva conexin a la cuenta ora1. Utilizar Oracle SQL Developer para examinar objetos de datos en la cuenta ora1.

    La cuenta ora1contiene las tablas de esquema HR.

    Observe la siguiente ubicacin de los archivos de los ejercicios prcticos:\home\oracle\labs\sql1\labs

    Si se le pide que guarde algn archivo de los ejercicios prcticos, gurdelo en estaubicacin.

    En las prcticas, puede que haya ejercicios que estn precedidos por las frases Si tienetiempo o Si desea superarse a s mismo. Realice estos ejercicios slo si ha terminadoel resto de ejercicios en el tiempo asignado y si desea poner a prueba sus habilidades.

    Realice las prcticas 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 prcticas escritas utilizan Oracle SQL Developer como entorno dedesarrollo. Aunque se recomienda utilizar Oracle SQL Developer, tambin puede usarSQL*Plus, disponible en este curso.

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

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    20/254

    Oracle Database: Conceptos Fundamentales de SQL I A-4

    Prctica I-1: Introduccin

    sta es la primera de varias prcticas de este curso. Las soluciones (si las necesita) estnal final de esta prctica. Las prcticas estn destinadas a abarcar la mayora de los temasque se presentan en la leccin correspondiente.

    Inicio de Oracle SQL Developer

    1) Inicie Oracle SQL Developer mediante el icono del escritorio de SQL Developer.

    Creacin de Nuevas Conexiones a la Base de Datos de Oracle SQL Developer

    2) Para crear una nueva conexin a la base de datos, en el navegador de conexiones,haga clic con el botn derecho del mouse en Connections. Seleccione NewConnection en el men. Aparece el cuadro de dilogo New/Select DatabaseConnection.

    3) Cree una conexin a la base de datos con la siguiente informacin:

    a) Connection Name: myconnection

    b)

    Username: ora1c) Password: ora1

    d) Hostname: localhost

    e) Port: 1521

    f) SID: ORCL

    Asegrese de activar la casilla de control Save Password.

    Prueba y Conexin mediante la Conexin a la Base de Datos de Oracle SQL

    Developer

    4)

    Pruebe la nueva conexin.

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

    Examen de Tablas en el Navegador de Conexiones

    6) En el navegador de conexiones, visualice los objetos disponibles en el nodo Tables.Verifique que las siguientes tablas estn presentes:

    COUNTRIESDEPARTMENTSEMPLOYEESJOB_GRADES

    JOB_HISTORYJOBSLOCATIONSREGIONS

    7)

    Examine la estructura de la tabla EMPLOYEES.

    8) Visualice los datos de la tabla DEPARTMENTS.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    21/254

    Oracle Database: Conceptos Fundamentales de SQL I A-5

    Soluciones a la Prctica I-1: Introduccin

    Inicio de Oracle SQL Developer

    1) Inicie Oracle SQL Developer mediante el icono del escritorio de SQL Developer.

    a) Haga doble clic en el icono del escritorio de SQL Developer.

    Aparece la interfaz de SQL Developer.

    Creacin de Nuevas Conexiones a la Base de Datos de Oracle SQL Developer

    2) Para crear una nueva conexin a la base de datos, en el navegador de conexiones,haga clic con el botn derecho del mouse en Connections y seleccione NewConnection en el men.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    22/254

    Soluciones a la Prctica I-1: Introduccin (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-6

    Aparece el cuadro de dilogo New/Select Database Connection.

    3) Cree una conexin a la base de datos con la siguiente informacin:

    a) Connection Name: myconnection

    b) Username: ora1

    c) Password: ora1

    d) Hostname: localhost

    e)

    Port: 1521

    f)

    SID: ORCLAsegrese de activar la casilla de control Save Password.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    23/254

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    24/254

    Soluciones a la Prctica I-1: Introduccin (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-8

    Al crear una conexin, automticamente se abre una hoja de trabajo de SQL paradicha conexin.

    Examen de Tablas en el Navegador de Conexiones

    6) En el navegador de conexiones, visualice los objetos disponibles en el nodo Tables.Verifique que las siguientes tablas estn presentes:

    COUNTRIESDEPARTMENTSEMPLOYEESJOB_GRADESJOB_HISTORYJOBSLOCATIONSREGIONS

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    25/254

    Soluciones a la Prctica I-1: Introduccin (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-9

    7) Examine la estructura de la tabla EMPLOYEES.

    8)

    Visualice los datos de la tabla DEPARTMENTS.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    26/254

    Soluciones a la Prctica I-1: Introduccin (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-10

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    27/254

    Oracle Database: Conceptos Fundamentales de SQL I A-11

    Prcticas de la Leccin 1

    En esta prctica, escribir consultas simples SELECT. Las consultas tratan la mayora delas operaciones y clusulas SELECTque ha aprendido en esta leccin.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    28/254

    Oracle Database: Conceptos Fundamentales de SQL I A-12

    Prctica 1-1: Recuperacin de Datos mediante la Sentencia SQLSELECT

    Parte 1

    Ponga a prueba sus conocimientos:

    1)

    La siguiente sentencia SELECTse ejecuta correctamente:SELECT last_name, job_id, salary AS SalFROM employees;

    Verdadero/Falso

    2) La siguiente sentencia SELECTse ejecuta correctamente:

    SELECT *FROM job_grades;

    Verdadero/Falso

    3) En la siguiente sentencia hay cuatro errores de codificacin. Puede identificarlos?

    SELECT employee_id, last_namesal x 12 ANNUAL SALARYFROM employees;

    Parte 2Tenga en cuenta los siguientes puntos antes de iniciar las prcticas:

    Guarde todos los archivos de los ejercicios prcticos en la siguiente ubicacin:/home/oracle/labs/sql1/labs

    Introduzca las sentencias SQL en una hoja de trabajo de SQL. Para guardar unscript en SQL Developer, asegrese de que la hoja de trabajo de SQL necesariaest activa y, a continuacin, en el men File, seleccione Save As para guardar lasentencia SQL como un script lab__.sql. Cuando estmodificando un script existente, asegrese de que utiliza Save As para guardarlocon un nombre de archivo diferente.

    Para ejecutar una consulta, haga clic en el icono Execute Statement en la hoja detrabajo de SQL. Como alternativa, puede pulsar [F9]. Para sentencias DML yDDL, utilice el icono Run Script o pulse [F5].

    Una vez ejecutada la consulta, asegrese de que no introduce la siguiente consulta

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

    Se le ha contratado como programador de SQL para Acme Corporation. Su primera tareaes crear algunos informes segn los datos de las tablas de recursos humanos.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    29/254

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

    Oracle Database: Conceptos Fundamentales de SQL I A-13

    4) Su primera tarea es determinar la estructura de la tabla DEPARTMENTSy su contenido.

    5) Determine la estructura de la tabla EMPLOYEES.

    El departamento de recursos humanos desea que una consulta muestre el apellido, IDde cargo, fecha de contratacin e ID de empleado de cada empleado, con el ID deempleado en primer lugar. Proporcione un alias STARTDATEpara la columnaHIRE_DATE. Guarde la sentencia SQL en un archivo con el nombre

    lab_01_05.sqlpara distribuirlo al departamento de recursos humanos.6)

    Pruebe la consulta en el archivo lab_01_05.sqlpara asegurarse de que se ejecutacorrectamente.

    Nota:una vez ejecutada la consulta, asegrese de que no introduce la siguienteconsulta en la misma hoja de trabajo. Abra una hoja de trabajo nueva.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    30/254

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

    Oracle Database: Conceptos Fundamentales de SQL I A-14

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

    Parte 3

    Si tiene tiempo, realice los siguientes ejercicios:

    8) El departamento de recursos humanos desea cabeceras de columna ms descriptivaspara su informe sobre empleados. Copie la sentencia de lab_01_05.sqlen unanueva hoja de trabajo de SQL. Asigne a las cabeceras de columna los nombres Emp#, Employee, Joby Hire Date, respectivamente. A continuacin, vuelva a ejecutarla consulta.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    31/254

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

    Oracle Database: Conceptos Fundamentales de SQL I A-15

    9) El departamento de recursos humanos ha solicitado un informe de todos losempleados 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 Employeeand Title.

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

    10)Para familiarizarse con los datos de la tabla EMPLOYEES, cree una consulta paramostrar todos los datos de dicha tabla. Separe cada salida de la columna por unacoma. Asigne a la columna el ttulo THE_OUTPUT.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    32/254

    Oracle Database: Conceptos Fundamentales de SQL I A-16

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

    Parte 1

    Ponga a prueba sus conocimientos:

    1)

    La siguiente sentencia SELECTse ejecuta correctamente:SELECT last_name, job_id, salary AS SalFROM employees;

    Verdadero/Falso

    2) La siguiente sentencia SELECTse ejecuta correctamente:

    SELECT *FROM job_grades;

    Verdadero/Falso

    3) En la siguiente sentencia hay cuatro errores de codificacin. Puede identificarlos?

    SELECT employee_id, last_namesal x 12 ANNUAL SALARYFROM employees;

    La tabla EMPLOYEESno contiene ninguna columna denominada sal. La

    columna se denomina SALARY.

    El operador de multiplicacin es *, no x, como se muestra en la lnea 2.

    El aliasANNUAL SALARYno puede incluir espacios. El alias debe ser

    ANNUAL_SALARYo se deben incluir entre comillas dobles.

    Falta una coma tras la columna LAST_NAME.

    Parte 2

    Se le ha contratado como programador de SQL para Acme Corporation. Su primera tareaes crear algunos informes segn los datos de las tablas de recursos humanos.

    4) Su primera tarea es determinar la estructura de la tabla DEPARTMENTSy su contenido.

    a. Para determinar la estructura de la tabla DEPARTMENTS:

    DESCRIBE departments

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    33/254

    Soluciones a la Prctica 1-1: Recuperacin de Datosmediante

    la Sentencia SQL SELECT (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-17

    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, IDde cargo, fecha de contratacin e ID de empleado de cada empleado, con el ID deempleado en primer lugar. Proporcione un alias STARTDATEpara la columnaHIRE_DATE. Guarde la sentencia SQL en un archivo con el nombrelab_01_05.sqlpara distribuirlo al departamento de recursos humanos.

    SELECT employee_id, last_name, job_id, hire_date StartDateFROM employees;

    6)

    Pruebe la consulta en el archivo lab_01_05.sqlpara asegurarse de que se ejecutacorrectamente.

    SELECT employee_id, last_name, job_id, hire_date StartDateFROM employees;

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

    SELECT DISTINCT job_idFROM employees;

    Parte 3

    Si tiene tiempo, realice los siguientes ejercicios:

    8) El departamento de recursos humanos desea cabeceras de columna ms descriptivaspara su informe sobre empleados. Copie la sentencia de lab_01_05.sqlen unanueva hoja de trabajo de SQL. Asigne a las cabeceras de columna los nombres Emp#, Employee, Joby Hire Date, respectivamente. A continuacin, vuelva a ejecutarla consulta.

    SELECT employee_id "Emp #", last_name "Employee",job_id "Job", hire_date "Hire Date"

    FROM employees;

    9)

    El departamento de recursos humanos ha solicitado un informe de todos losempleados 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 Employeeand Title.

    SELECT last_name||', '||job_id "Employee and Title"FROM employees;

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    34/254

    Soluciones a la Prctica 1-1: Recuperacin de Datosmediante

    la Sentencia SQL SELECT (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-18

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

    10)

    Para familiarizarse con los datos de la tabla EMPLOYEES, cree una consulta paramostrar todos los datos de dicha tabla. Separe cada salida de la columna por unacoma. Asigne a la columna el ttulo THE_OUTPUT.

    SELECT employee_id || ',' || first_name || ',' || last_name|| ',' || email || ',' || phone_number || ','|| job_id|| ',' || manager_id || ',' || hire_date || ','|| salary || ',' || commission_pct || ',' ||

    department_idTHE_OUTPUT

    FROM employees;

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    35/254

    Oracle Database: Conceptos Fundamentales de SQL I A-19

    Prcticas de la Leccin 2

    En esta prctica se crean ms informes, incluyendo sentencias que utilizan las clusulasWHEREy ORDERBY. Puede hacer que las sentencias SQL sean ms reutilizables ygenricas incluyendo la sustitucin con ampersand.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    36/254

    Oracle Database: Conceptos Fundamentales de SQL I A-20

    Prctica 2-1: Restriccin y Ordenacin de Datos

    El departamento de recursos humanos necesita su ayuda para crear algunas consultas.

    1) Debido a problemas presupuestarios, el departamento de recursos humanos necesitaun informe que muestre el apellido y el salario de los empleados que ganan ms de12.000 dlares. Guarde la sentencia SQL como un archivo denominadolab_02_01.sql. Ejecute la consulta.

    2)

    Abra una hoja de trabajo de SQL nueva. Cree un informe que muestre el apellido y elnmero de departamento para el nmero de empleado 176. Ejecute la consulta.

    3) El departamento de recursos humanos necesita encontrar los empleados con salariostanto altos como bajos. Modifique lab_02_01.sqlpara mostrar el apellido y elsalario de cualquier empleado cuyo salario no est entre 5.000 y 12.000 dlares.Guarde la sentencia SQL como lab_02_03.sql.

    4) Cree un informe para mostrar el apellido, ID de cargo y fecha de contratacin de losempleados cuyos apellidos sean Matos y Taylor. Ordene la consulta en ordenascendente por fecha de contratacin.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    37/254

    Prctica 2-1: Restriccin y Ordenacin de Datos (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-21

    5) Muestre el apellido y el ID de departamento de todos los empleados de losdepartamentos 20 o 50 en orden alfabtico ascendente por nombre.

    6) Modifique el archivo lab_02_03.sqlpara mostrar el apellido y el salario de losempleados que ganan entre 5.000 y 12.000 dlares y estn en el departamento 20 o50. Etiquete las columnas Employeey Monthly Salary, respectivamente. Vuelvaa guardar lab_02_03.sqlcomo lab_02_06.sql. Ejecute la sentencia en el

    archivo lab_02_06.sql.

    7) El departamento de recursos humanos necesita un informe que muestre el apellido yla fecha de contratacin de todos los empleados contratados durante el ao 1994.

    8) Cree un informe para mostrar el apellido y el puesto de todos los empleados que notienen un supervisor.

    9) Cree un informe para mostrar el apellido, salario y comisin de todos los empleados que

    perciben comisiones. Ordene los datos en orden descendente de salario y comisiones.Utilice la posicin numrica de la columna en la clusula ORDER BY.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    38/254

    Prctica 2-1: Restriccin y Ordenacin de Datos (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-22

    10)Los miembros del departamento de recursos humanos desean tener ms flexibilidadcon las consultas que est creando. Les gustara tener un informe que muestre elapellido y el salario de los empleados que ganen ms de una cantidad especificada porel usuario despus de una solicitud. Guarde esta consulta en un archivo denominadolab_02_10.sql. Si introduce 12000 cuando se le solicite, el informe mostrar lossiguientes resultados:

    11)El departamento de recursos humanos desea ejecutar informes basados en unsupervisor. Cree una consulta que solicite al usuario un ID de supervisor y genere elID de empleado, apellido, salario y departamento de los empleados de ese supervisor.

    El departamento de recursos humanos desea ordenar el informe en una columnaseleccionada. Puede probar los datos con los siguientes valores:manager_id = 103, ordenado por last_name:

    manager_id = 201, ordenado por salary:

    manager_id = 124, ordenado por employee_id:

    Si tiene tiempo, realice los siguientes ejercicios:

    12)

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

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    39/254

    Prctica 2-1: Restriccin y Ordenacin de Datos (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-23

    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 uoficinistas en el departamento de stock y cuyos salarios no sean iguales que 2.500,3.500 7.000 dlares.

    15)Modifique el archivo lab_02_06.sqlpara mostrar el apellido, salario y comisinde todos los empleados cuya comisin sea del 20%. Vuelva a guardarlab_02_06.sqlcomo lab_02_15.sql. Vuelva a ejecutar la sentencia en elarchivo lab_02_15.sql.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    40/254

    Oracle Database: Conceptos Fundamentales de SQL I A-24

    Soluciones a la Prctica 2-1: Restriccin y Ordenacin de Datos

    El departamento de recursos humanos necesita su ayuda para crear algunas consultas.

    1) Debido a problemas presupuestarios, el departamento de recursos humanos necesitaun informe que muestre el apellido y el salario de los empleados que ganan ms de12.000 dlares. Guarde la sentencia SQL como un archivo denominado

    lab_02_01.sql. Ejecute la consulta.SELECT last_name, salaryFROM employeesWHERE salary > 12000;

    2) Abra una hoja de trabajo de SQL nueva. Cree un informe que muestre el apellido y elnmero de departamento para el nmero de empleado 176.

    SELECT last_name, department_idFROM employeesWHERE employee_id = 176;

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

    tanto altos como bajos. Modifique lab_02_01.sqlpara mostrar el apellido y elsalario de todos los empleados cuyo salario no est entre 5.000 y 12.000 dlares.Guarde la sentencia SQL como lab_02_03.sql.

    SELECT last_name, salaryFROM employeesWHERE salary NOT BETWEEN 5000 AND 12000;

    4) Cree un informe para mostrar el apellido, ID de cargo y fecha de contratacin de losempleados cuyos apellidos sean Matos y Taylor. Ordene la consulta en ordenascendente por fecha de contratacin.

    SELECT last_name, job_id, hire_date

    FROM employeesWHERE last_name IN ('Matos', 'Taylor')ORDER BY hire_date;

    5) Muestre el apellido y el ID de departamento de todos los empleados de losdepartamentos 20 o 50 en orden alfabtico ascendente por nombre.

    SELECT last_name, department_idFROM employeesWHERE department_id IN (20, 50)ORDER BY last_name ASC;

    6) Modifique el archivo lab_02_03.sqlpara mostrar el apellido y el salario de losempleados que ganan entre 5.000 y 12.000 dlares y estn en el departamento 20 o50. Etiquete las columnas Employee y Monthly Salary, respectivamente. Vuelva aguardar lab_02_03.sqlcomo lab_02_06.sql. Ejecute la sentencia en el archivolab_02_06.sql.

    SELECT last_name "Employee", salary "Monthly Salary"FROM employeesWHERE salary BETWEEN 5000 AND 12000AND department_id IN (20, 50);

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    41/254

    Soluciones a la Prctica 2-1: Restriccin y Ordenacin de Datos(continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-25

    7)

    El departamento de recursos humanos necesita un informe que muestre el apellido yla fecha de contratacin de todos los empleados contratados durante el ao 1994.

    SELECT last_name, hire_dateFROM employees

    WHERE hire_date LIKE '%94';

    8) Cree un informe para mostrar el apellido y el puesto de todos los empleados que notienen un supervisor.

    SELECT last_name, job_idFROM employeesWHERE manager_id IS NULL;

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

    SELECT last_name, salary, commission_pctFROM employeesWHERE commission_pct IS NOT NULLORDER BY 2 DESC, 3 DESC;

    10)

    Los miembros del departamento de recursos humanos desean tener ms flexibilidadcon las consultas que est creando. Les gustara tener un informe que muestre elapellido y el salario de los empleados que ganen ms de una cantidad especificada porel usuario despus de una solicitud. (Puede utilizar la consulta creada en el ejercicioprctico 1 y modificarla). Guarde esta consulta en un archivo denominadolab_02_10.sql.

    SELECT last_name, salaryFROM employeesWHERE salary > &sal_amt;

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

    11)

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

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    42/254

    Soluciones a la Prctica 2-1: Restriccin y Ordenacin de Datos(continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-26

    manager _id = 103, ordenado por last_namemanager_id = 201, ordenado por salarymanager_id = 124, ordenado por employee_idSELECT employee_id, last_name, salary, department_idFROM employeesWHERE manager_id = &mgr_numORDER 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_nameFROM employeesWHERE last_name LIKE '__a%';

    13)Muestre los apellidos de los empleados que tengan una "a" y una "e" en su apellido.

    SELECT last_nameFROM employeesWHERE last_name LIKE '%a%'AND last_name LIKE '%e%';

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

    14)Muestre el apellido, cargo y salario de todos los empleados que sean vendedores uoficinistas en el departamento de stock y cuyo salario no sea igual que 2.500, 3.500 o7.000 dlares.

    SELECT last_name, job_id, salaryFROM employeesWHERE job_id IN ('SA_REP', 'ST_CLERK')AND salary NOT IN (2500, 3500, 7000);

    15)Modifique el archivo lab_02_06.sqlpara mostrar el apellido, salario y comisinde todos los empleados cuya comisin sea del 20%. Vuelva a guardarlab_02_06.sqlcomo lab_02_15.sql. Vuelva a ejecutar la sentencia en elarchivo lab_02_15.sql.

    SELECT last_name "Employee", salary "Monthly Salary",commission_pct

    FROM employeesWHERE commission_pct = .20;

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    43/254

    Oracle Database: Conceptos Fundamentales de SQL I A-27

    Prcticas de la Leccin 3

    Esta prctica proporciona una variedad de ejercicios que utilizan diferentes funciones queestn disponibles para tipos de dato de carcter, de nmero y de fecha.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    44/254

    Oracle Database: Conceptos Fundamentales de SQL I A-28

    Prctica 3-1: Uso de Funciones de Una Sola Fila paraPersonalizar la Salida

    1) Escriba una consulta para mostrar la fecha del sistema. Etiquete la columna comoDate.

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

    2) El departamento de recursos humanos necesita un informe que muestre el nmero deempleado, apellido, salario y salario aumentado en un 15,5% (expresado comonmero entero) para cada empleado. Etiquete la columna como New Salary. Guardela sentencia SQL en un archivo denominado lab_03_02.sql.

    3)

    Ejecute la consulta en el archivo lab_03_02.sql.

    4)

    Modifique la consulta lab_03_02.sqlpara agregar una columna que reste elsalario antiguo del nuevo. Etiquete la columna como Increase. Guarde el contenidodel archivo como lab_03_04.sql. Ejecute la consulta revisada.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    45/254

    Prctica 3-1: Uso de Funciones de Una Sola Fila paraPersonalizar la Salida (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-29

    5)

    Escriba una consulta que muestre el apellido (con la primera letra en maysculas y elresto en minsculas) y la longitud del apellido de todos los empleados cuyos nombresempiecen por las letras "J", "A" o "M". Proporcione a cada columna una etiquetaadecuada. Ordene los resultados por el apellido de los empleados.

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

    Modifique la consulta de forma que la mayscula/minscula de la letra introducida noafecte a la salida. La letra introducida debe estar en mayscula antes de que la procesela consulta SELECT.

    6)

    El departamento de recursos humanos desea buscar la duracin del contrato de cadaempleado. Para cada empleado, muestre el apellido y calcule el nmero de mesesentre el da de hoy y la fecha de contratacin del empleado. Etiquete la columna comoMONTHS_WORKED. Ordene los resultados por el nmero de meses durante los que hatrabajado. Redondee el nmero de meses hasta el nmero entero ms cercano.

    Nota:debido a que esta consulta depende de la fecha de ejecucin, los valores de lacolumna MONTHS_WORKEDsern diferentes.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    46/254

    Prctica 3-1: Uso de Funciones de Una Sola Fila paraPersonalizar la Salida (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-30

    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 smbolo $. Etiquete la columna como SALARY.

    8) Cree una consulta que muestre los primeros ocho caracteres de los apellidos de losempleados y que indique las cantidades de sus salarios con asteriscos. Cada asteriscosignifica mil dlares. Ordene los datos en orden descendente de salarios. Etiquete lacolumna como EMPLOYEES_AND_THEIR_SALARIES.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    47/254

    Prctica 3-1: Uso de Funciones de Una Sola Fila paraPersonalizar la Salida (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-31

    9)

    Cree una consulta para mostrar el apellido y el nmero de semanas durante las quehan trabajado todos los empleados del departamento 90. Etiquete la columna denmero de semanas como TENURE. Trunque el valor del nmero de semana en 0decimales. Muestre los registros en orden descendente de antigedad del empleado.

    Nota:el valor TENUREvariar ya que depende de la fecha de ejecucin de laconsulta.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    48/254

    Oracle Database: Conceptos Fundamentales de SQL I A-32

    Soluciones a la Prctica 3-1: Uso de Funciones de Una Sola Filapara Personalizar la Salida

    1) Escriba una consulta para mostrar la fecha del sistema. Etiquete la columna comoDate.

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

    SELECT sysdate "Date"FROM dual;

    2) El departamento de recursos humanos necesita un informe que muestre el nmero deempleado, apellido, salario y salario aumentado en un 15,5% (expresado comonmero entero) para cada empleado. Etiquete la columna como NewSalary.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,ROUND(salary * 1.155, 0) "New Salary"

    FROM employees;

    4) Modifique la consulta lab_03_02.sqlpara agregar una columna que reste elsalario antiguo del nuevo. Etiquete la columna como Increase. Guarde elcontenido del archivo como lab_03_04.sql. Ejecute la consulta revisada.

    SELECT employee_id, last_name, salary,

    ROUND(salary * 1.155, 0) "New Salary",ROUND(salary * 1.155, 0) - salary "Increase"

    FROM employees;

    5) Escriba una consulta que muestre el apellido (con la primera letra en maysculas y elresto en minsculas) y la longitud del apellido de todos los empleados cuyos nombresempiecen por las letras "J", "A" o "M". Proporcione a cada columna una etiquetaadecuada. Ordene los resultados por el apellido de los empleados.

    SELECT INITCAP(last_name) "Name",LENGTH(last_name) "Length"

    FROM employeesWHERE last_name LIKE 'J%'OR last_name LIKE 'M%'OR last_name LIKE 'A%'ORDER BY last_name ;

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

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    49/254

    Soluciones a la Prctica 3-1: Uso de Funciones de Una Sola Filapara Personalizar la Salida (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-33

    SELECT INITCAP(last_name) "Name",LENGTH(last_name) "Length"

    FROM employeesWHERE last_name LIKE '&start_letter%'ORDER BY last_name;

    Modifique la consulta de forma que la mayscula/minscula de la letra introducida noafecte a la salida. La letra introducida debe estar en mayscula antes de que la procesela consulta SELECT.

    SELECT INITCAP(last_name) "Name",LENGTH(last_name) "Length"FROM employeesWHERE last_name LIKE UPPER('&start_letter%' )ORDER BY last_name;

    6) El departamento de recursos humanos desea buscar la duracin del contrato de cadaempleado. Para cada empleado, muestre el apellido y calcule el nmero de mesesentre el da de hoy y la fecha de contratacin del empleado. Etiquete la columna comoMONTHS_WORKED. Ordene los resultados por el nmero de meses durante los que hatrabajado. Redondee el nmero de meses hasta el nmero entero ms cercano.

    Nota:debido a que esta consulta depende de la fecha de ejecucin, los valores de lacolumna MONTHS_WORKEDsern diferentes.

    SELECT last_name, ROUND(MONTHS_BETWEEN(SYSDATE, hire_date)) MONTHS_WORKED

    FROM employeesORDER BY months_worked;

    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 haciala izquierda con el smbolo $. Etiquete la columna como SALARY.

    SELECT last_name,LPAD(salary, 15, '$') SALARY

    FROM employees;

    8) Cree una consulta que muestre los primeros ocho caracteres de los apellidos de losempleados y que indique las cantidades de sus salarios con asteriscos. Cada asterisco

    significa mil dlares. Ordene los datos en orden descendente de salarios. Etiquete lacolumna como EMPLOYEES_AND_THEIR_SALARIES.

    SELECT rpad(last_name, 8)||' '||rpad(' ', salary/1000+1, '*')

    EMPLOYEES_AND_THEIR_SALARIESFROM employeesORDER BY salary DESC;

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    50/254

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    51/254

    Oracle Database: Conceptos Fundamentales de SQL I A-35

    Prcticas de la Leccin 4

    Esta prctica proporciona una variedad de ejercicios que utilizan las funciones TO_CHARy TO_DATEy expresiones condicionales como DECODEy CASE. Recuerde que para lasfunciones anidadas, los resultados se evalan desde la funcin ms profunda hasta lafuncin menos profunda.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    52/254

    Oracle Database: Conceptos Fundamentales de SQL I A-36

    Prctica 4-1: Uso de Funciones de Conversin y ExpresionesCondicionales

    1) Cree un informe que produzca los siguientes resultados para cada empleado:earns monthly but wants . Etiquete la columna como Dream Salaries.

    2) Muestre el apellido, fecha de contratacin y fecha de revisin de salario de cadaempleado, que es el primer lunes despus de seis meses de contrato. Etiquete lacolumna como REVIEW. Formatee las fechas para que aparezcan en un formatosimilar a Lunes treinta y uno de julio de 2000.

    3) Muestre el apellido, fecha de contratacin y da de la semana en el que empez atrabajar el empleado. Etiquete la columna como DAY. Ordene los resultados por el dade la semana, empezando por el lunes.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    53/254

    Prctica 4-1: Uso de Funciones de Conversin y ExpresionesCondicionales (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-37

    4)

    Cree una consulta que muestre los apellidos y comisiones de los empleados. Si unempleado no obtiene ninguna comisin, indique "No Commission". Etiquete lacolumna como COMM.

    Si tiene tiempo, realice los siguientes ejercicios:

    5) Con la funcin DECODE, escriba una consulta que muestre el grado de todos losempleados segn el valor de la columna JOB_ID, utilizando los siguientes datos:

    Cargo GradoAD_PRES AST_MAN BIT_PROG CSA_REP D

    ST_CLERK ENone of the above 0

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    54/254

    Prctica 4-1: Uso de Funciones de Conversin y ExpresionesCondicionales (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-38

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

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    55/254

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    56/254

    Soluciones a la Prctica 4-1: Uso de Funciones de Conversin yExpresiones Condicionales (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-40

    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_idWHEN '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;

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    57/254

    Oracle Database: Conceptos Fundamentales de SQL I A-41

    Prcticas de la Leccin 5

    Al finalizar esta prctica, debe estar familiarizado con el uso de funciones de grupo y laseleccin de grupos de datos.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    58/254

    Oracle Database: Conceptos Fundamentales de SQL I A-42

    Prctica 5-1: Informes de Datos Agregados con Funciones deGrupo

    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 clculos.Verdadero/Falso

    3)

    La clusula WHERErestringe las filas antes de incluirlas en un clculo de grupo.Verdadero/Falso

    El departamento de recursos humanos necesita los siguientes informes:

    4) Encontrar el valor ms alto, el valor ms bajo, la suma y la media del salario de todoslos empleados. Etiquete las columnas como Maximum, Minimum, Sumy Average,

    respectivamente. Redondee los resultados al nmero entero ms cercano. Guarde lasentencia SQL como lab_05_04.sql. Ejecute la consulta.

    5) Modifique la consulta del archivo lab_05_04.sqlpara mostrar el valor mnimo, elvalor mximo, la suma y la media del salario de cada tipo de cargo. Vuelva a guardarlab_05_04.sqlcomo lab_05_05.sql. Ejecute la sentencia en el archivolab_05_05.sql.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    59/254

    Prctica 5-1: Informes de Datos Agregados con Funciones deGrupo (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-43

    6)

    Escriba una consulta para mostrar el nmero de personas con el mismo cargo.

    Generalice la consulta para preguntar al usuario del departamento de recursoshumanos cul es su puesto. Guarde el script en un archivo denominadolab_05_06.sql. Ejecute la consulta. Introduzca IT_PROGcuando se le solicite.

    7) Determine el nmero de gestores sin enumerarlos en una lista. Etiquete la columnaNumber of Managers.Indicacin:utilice la columna MANAGER_IDpara determinar el nmero de gestores.

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

    Si tiene tiempo, realice los siguientes ejercicios:

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

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    60/254

    Prctica 5-1: Informes de Datos Agregados con Funciones deGrupo (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-44

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

    10)

    Cree una consulta para mostrar el nmero total de empleados y, de ese total, elnmero de empleados contratados en 1995, 1996, 1997 y 1998. Cree las cabeceras decolumna adecuadas.

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

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    61/254

    Oracle Database: Conceptos Fundamentales de SQL I A-45

    Soluciones a la Prctica 5-1: Informes de Datos Agregados conFunciones 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 clculos.Verdadero/Falso

    3)

    La clusula WHERErestringe las filas antes de incluirlas en un clculo de grupo.Verdadero/Falso

    El departamento de recursos humanos necesita los siguientes informes:

    4) Encontrar el valor ms alto, el valor ms bajo, la suma y la media del salario de todoslos empleados. Etiquete las columnas como Maximum, Minimum, Sumy Average,respectivamente. Redondee los resultados al nmero entero ms cercano. Guarde lasentencia 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",ROUND(AVG(salary),0) "Average"

    FROM employees;

    5) Modifique la consulta del archivo lab_05_04.sqlpara mostrar el valor mnimo,el valor mximo, la suma y la media del salario de cada tipo de cargo. Vuelva aguardar lab_05_04.sqlcomo lab_05_05.sql. Ejecute la sentencia en elarchivo lab_05_05.sql.

    SELECT job_id, ROUND(MAX(salary),0) "Maximum",ROUND(MIN(salary),0) "Minimum",ROUND(SUM(salary),0) "Sum",ROUND(AVG(salary),0) "Average"

    FROM employeesGROUP BY job_id;

    6) Escriba una consulta para mostrar el nmero de personas con el mismo cargo.

    SELECT job_id, COUNT(*)FROM employeesGROUP BY job_id;

    Generalice la consulta para preguntar al usuario del departamento de recursoshumanos cul es su puesto. Guarde el script en un archivo denominadolab_05_06.sql. Ejecute la consulta. Introduzca IT_PROGcuando se le solicite yhaga clic en OK.

    SELECT job_id, COUNT(*)FROM employeesWHERE job_id = '&job_title'GROUP BY job_id;

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    62/254

    Soluciones a la Prctica 5-1: Informes de Datos Agregados conFunciones de Grupo (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-46

    7)

    Determine el nmero de gestores sin enumerarlos en una lista. Etiquete la columnacomo NumberofManagers.Indicacin: utilice la columna MANAGER_IDpara determinar el nmero de gestores.

    SELECT COUNT(DISTINCT manager_id) "Number of Managers"

    FROM employees;

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

    SELECT MAX(salary) - MIN(salary) DIFFERENCEFROM employees;

    Si tiene tiempo, realice los siguientes ejercicios:

    9)

    Cree un informe para mostrar el nmero de gestor y el salario del empleado conmenor sueldo de ese gestor. Excluya a cualquier trabajador del que desconozca sugestor. Excluya cualquier grupo en el que el salario mnimo sea 6.000 dlares omenos. Ordene la salida en orden descendente de salarios.

    SELECT manager_id, MIN(salary)FROM employeesWHERE manager_id IS NOT NULLGROUP BY manager_idHAVING MIN(salary) > 6000ORDER BY MIN(salary) DESC;

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

    10)Cree una consulta que muestre el nmero total de empleados y, de ese total, el

    nmero de empleados contratados en 1995, 1996, 1997 y 1998. Cree las cabeceras decolumna adecuadas.

    SELECT COUNT(*) total,SUM(DECODE(TO_CHAR(hire_date,

    'YYYY'),1995,1,0))"1995",SUM(DECODE(TO_CHAR(hire_date,

    'YYYY'),1996,1,0))"1996",SUM(DECODE(TO_CHAR(hire_date,

    'YYYY'),1997,1,0))"1997",SUM(DECODE(TO_CHAR(hire_date, 'YYYY'),1998,1,0))"1998"

    FROM employees;

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    63/254

    Soluciones a la Prctica 5-1: Informes de Datos Agregados conFunciones de Grupo (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-47

    11)

    Cree una consulta de matriz para mostrar el cargo, el salario de ese cargo segn elnmero de departamento y el salario total del cargo para los departamentos 20, 50, 80y 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 employeesGROUP BY job_id;

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    64/254

    Oracle Database: Conceptos Fundamentales de SQL I A-48

    Prcticas de la Leccin 6

    Esta prctica est destinada a proporcionarle experiencia en la extraccin de datos desdems de una tabla utilizando uniones compatibles con SQL:1999.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    65/254

    Oracle Database: Conceptos Fundamentales de SQL I A-49

    Prctica 6-1: Visualizacin de Datos de Varias Tablas UtilizandoUniones

    1) Escriba una consulta para que el departamento de recursos humanos genere lasdirecciones de todos los departamentos. Utilice las tablas LOCATIONSy COUNTRIES.Muestre el ID de ubicacin, direccin, ciudad, estado o provincia y pas en la salida.

    Utilice NATURAL JOINpara producir los resultados.

    2) El departamento de recursos humanos necesita un informe slo de los empleados conlos departamentos correspondientes. Escriba una consulta para mostrar el apellido,nmero y nombre de departamento de estos empleados.

    3) El departamento de recursos humanos necesita un informe de todos los empleados deToronto. Muestre el apellido, cargo, nmero y nombre de departamento de todos losempleados que trabajan en Toronto.

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

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    66/254

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    67/254

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

    Oracle Database: Conceptos Fundamentales de SQL I A-51

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

    8) El departamento de recursos humanos desea determinar los nombres de todos losempleados contratados despus de Davies. Cree una consulta para mostrar el nombrey la fecha de contratacin de cualquier empleado contratado despus del empleado

    Davies.

    9) El departamento de recursos humanos necesita buscar el nombre y la fecha decontratacin de todos los empleados contratados antes que sus gestores, junto con elnombre y fecha de contratacin del gestor. Guarde el script en un archivodenominado lab_06_09.sql.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    68/254

    Oracle Database: Conceptos Fundamentales de SQL I A-52

    Soluciones a la Prctica 6-1: Visualizacin de Datos de VariasTablas Utilizando Uniones

    1) Escriba una consulta para que el departamento de recursos humanos genere lasdirecciones de todos los departamentos. Utilice las tablas LOCATIONSy COUNTRIES.Muestre el ID de ubicacin, direccin, ciudad, estado o provincia y pas en la salida.Utilice NATURAL JOINpara producir los resultados.

    SELECT location_id, street_address, city, state_province,country_nameFROM locationsNATURAL JOIN countries;

    2) El departamento de recursos humanos necesita un informe de todos los empleados.Escriba una consulta para mostrar el apellido, nmero y nombre de departamento detodos los empleados.

    SELECT last_name, department_id, department_nameFROM employeesJOIN departments

    USING (department_id);

    3) El departamento de recursos humanos necesita un informe de todos los empleados deToronto. Muestre el apellido, cargo, nmero y nombre de departamento de todos losempleados que trabajan en Toronto.

    SELECT e.last_name, e.job_id, e.department_id,d.department_nameFROM employees e JOIN departments dON (e.department_id = d.department_id)JOIN locations lON (d.location_id = l.location_id)WHERE LOWER(l.city) = 'toronto';

    4)

    Cree un informe para mostrar el apellido y nmero de empleado junto con el apellidoy nmero de gestor de sus gestores. Etiquete las columnas como Employee, Emp#,Managery Mgr#, respectivamente. Guarde la sentencia SQL comolab_06_04.sql. Ejecute la consulta.

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

    FROM employees w join employees mON (w.manager_id = m.employee_id);

    5) Modifique lab_06_04.sqlpara mostrar todos los empleados, incluido King, que no

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

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

    FROM employees wLEFT OUTER JOIN employees mON (w.manager_id = m.employee_id)ORDER BY 2;

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    69/254

    Soluciones a la Prctica 6-1: Visualizacin de Datos de VariasTablas Utilizando Uniones (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-53

    6)

    Cree un informe del departamento de recursos humanos que muestre los apellidos ynmeros de empleado y todos los empleados que trabajen en el mismo departamentocomo 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 cON (e.department_id = c.department_id)WHERE e.employee_id c.employee_idORDER BY e.department_id, e.last_name, c.last_name;

    7) El departamento de recursos humanos necesita un informe sobre los salarios y gradosde cargo. Para familiarizarse con la tabla JOB_GRADES, en primer lugar, muestre laestructura de la tabla JOB_GRADES. A continuacin, cree una consulta que muestre elapellido, 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 dON (e.department_id = d.department_id)JOIN job_grades jON (e.salary BETWEEN j.lowest_sal AND j.highest_sal);

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

    8) El departamento de recursos humanos desea determinar los nombres de todos losempleados contratados despus de Davies. Cree una consulta para mostrar el nombre

    y la fecha de contratacin de cualquier empleado contratado despus del empleadoDavies.

    SELECT e.last_name, e.hire_dateFROM employees e JOIN employees daviesON (davies.last_name = 'Davies')WHERE davies.hire_date < e.hire_date;

    9) El departamento de recursos humanos necesita buscar el nombre y la fecha decontratacin de todos los empleados contratados antes que sus gestores, junto con elnombre y fecha de contratacin del gestor. Guarde el script en un archivodenominado lab_06_09.sql.

    SELECT w.last_name, w.hire_date, m.last_name, m.hire_dateFROM employees w JOIN employees mON (w.manager_id = m.employee_id)WHERE w.hire_date < m.hire_date;

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    70/254

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    71/254

    Oracle Database: Conceptos Fundamentales de SQL I A-55

    Prctica 7-1: Uso de Subconsultas para Solucionar Consultas

    1) El departamento de recursos humanos necesita una consulta que solicite al usuario elapellido de un empleado. A continuacin, la consulta muestra el apellido y la fecha decontratacin de cualquier empleado en el mismo departamento del empleado cuyonombre se proporciona (excepto ese empleado). Por ejemplo, si el usuario introduceZlotkey, se buscarn todos los empleados que trabajen con Zlotkey (excepto Zlotkey).

    2)

    Cree un informe que muestre el nmero de empleado, apellido y salario de todos losempleados que ganan ms del salario medio. Ordene los resultados en ordenascendente de salario.

    3) Escriba una consulta que muestre el nmero de empleado y el apellido de todos losempleados que trabajan en un departamento con un empleado cuyo apellido contieneuna "u". Guarde la sentencia SQL en un archivo denominado lab_07_03.sql.Ejecute la consulta.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    72/254

    Prctica 7-1: Uso de Subconsultas para Solucionar Consultas(continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-56

    4)

    El departamento de recursos humanos necesita un informe que muestre el apellido,nmero de departamento e ID de cargo de todos los empleados cuyo ID de ubicacinde departamento sea 1700.

    Modifique la consulta para que se solicite al usuario un ID de ubicacin. Guarde estosdatos en un archivo denominado lab_07_04.sql.

    5) Cree un informe para el departamento de recursos humanos que muestre el apellido yel salario de cada empleado que realice informes para King.

    6) Cree un informe para el departamento de recursos humanos que muestre el nmero dedepartamento, apellido e ID de cargo de cada empleado del departamento Executive.

    7) Cree un informe que muestre una lista de todos los empleados cuyo salario sea mayorque el salario de los empleados del departamento 60.

    Si tiene tiempo, realice el siguiente ejercicio:

    8) Modifique la consulta del archivo lab_07_03.sqlpara mostrar el nmero deempleado, apellido y salario de todos los empleados que ganan ms del salario medioy que trabajan en un departamento con cualquier empleado cuyo apellido contieneuna "u". Vuelva a guardar lab_07_03.sqlcomo lab_07_08.sql. Ejecute la

    sentencia en el archivo lab_07_08.sql.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    73/254

    Oracle Database: Conceptos Fundamentales de SQL I A-57

    Soluciones a la Prctica 7-1: Uso de Subconsultas paraSolucionar Consultas

    1) El departamento de recursos humanos necesita una consulta que solicite al usuario elapellido de un empleado. A continuacin, la consulta muestra el apellido y la fecha decontratacin de cualquier empleado en el mismo departamento del empleado cuyo

    nombre se proporciona (excepto ese empleado). Por ejemplo, si el usuario introduceZlotkey, se buscarn todos los empleados que trabajen con Zlotkey (exceptoZlotkey).

    UNDEFINE Enter_name

    SELECT last_name, hire_dateFROM employeesWHERE department_id = (SELECT department_id

    FROM employeesWHERE last_name = '&&Enter_name')

    AND last_name '&Enter_name';

    2)

    Cree un informe que muestre el nmero de empleado, apellido y salario de todos losempleados que ganan ms del salario medio. Ordene los resultados en ordenascendente de salario.

    SELECT employee_id, last_name, salaryFROM employeesWHERE salary > (SELECT AVG(salary)

    FROM employees)ORDER BY salary;

    3) Escriba una consulta que muestre el nmero de empleado y el apellido de todos losempleados 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.

    SELECT employee_id, last_nameFROM employeesWHERE department_id IN (SELECT department_id

    FROM employeesWHERE last_name like '%u%');

    4) El departamento de recursos humanos necesita un informe que muestre el apellido,nmero de departamento e ID de cargo de todos los empleados cuyo ID de ubicacinde departamento sea 1700.

    SELECT last_name, department_id, job_idFROM employeesWHERE department_id IN (SELECT department_id

    FROM departmentsWHERE location_id = 1700);

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    74/254

    Soluciones a la Prctica 7-1: Uso de Subconsultas paraSolucionar Consultas (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-58

    Modifique la consulta para que se solicite al usuario un ID de ubicacin. Guarde estosdatos en un archivo denominado lab_07_04.sql.

    SELECT last_name, department_id, job_idFROM employees

    WHERE department_id IN (SELECT department_idFROM departmentsWHERE location_id =

    &Enter_location);

    5) Cree un informe para el departamento de recursos humanos que muestre el apellido yel salario de cada empleado que realice informes para King.

    SELECT last_name, salaryFROM employeesWHERE manager_id = (SELECT employee_id

    FROM employeesWHERE last_name = 'King');

    6)

    Cree un informe para el departamento de recursos humanos que muestre el nmero dedepartamento, apellido e ID de cargo de cada empleado del departamento Executive.

    SELECT department_id, last_name, job_idFROM employeesWHERE department_id IN (SELECT department_id

    FROM departmentsWHERE department_name =

    'Executive');

    7) Cree un informe que muestre una lista de todos los empleados cuyo salario sea mayorque el salario de los empleados del departamento 60.

    SELECT last_name FROM employeesWHERE salary > ANY (SELECT salaryFROM employeesWHERE department_id=60);

    Si tiene tiempo, realice el siguiente ejercicio:

    8)

    Modifique la consulta del archivo lab_07_03.sqlpara mostrar el nmero deempleado, apellido y salario de todos los empleados que ganan ms del salario medioy que trabajan en un departamento con cualquier empleado cuyo apellido contieneuna "u". Vuelva a guardar lab_07_03.sqlcomo lab_07_08.sql. Ejecute lasentencia en el archivo lab_07_08.sql.

    SELECT employee_id, last_name, salaryFROM employeesWHERE department_id IN (SELECT department_id

    FROM employeesWHERE last_name like '%u%')

    AND salary > (SELECT AVG(salary)FROM employees);

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    75/254

    Oracle Database: Conceptos Fundamentales de SQL I A-59

    Prcticas de la Leccin 8

    En esta prctica escribir consultas utilizando los operadores de definicin.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    76/254

    Oracle Database: Conceptos Fundamentales de SQL I A-60

    Prctica 8-1: Uso de los Operadores de Definicin

    1)

    El departamento de recursos humanos necesita una lista de ID de departamento queno contienen el ID de cargo ST_CLERK. Utilice los operadores de definicin paracrear este informe.

    2)

    El departamento de recursos humanos necesita una lista de pases que no tienenningn departamento. Muestre el ID de pas y el nombre de los pases. Utilice losoperadores de definicin para crear este informe.

    3) Cree una lista de cargos para los departamentos 10, 50 y 20, en ese orden. Muestre losID de cargo y departamento mediante los operadores de definicin.

    4) Cree un informe que muestre los ID de empleado y de cargo de los empleados queactualmente tienen un puesto que es el mismo que tenan cuando fueron contratados(es decir, han cambiado de cargo pero ahora han vuelto a su puesto original).

    5)

    El departamento de recursos humanos necesita un informe con las siguientesespecificaciones:

    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 tablaDEPARTMENTS, independientemente de si hay o no empleados trabajando endichos departamentos.

    Para ello, escriba una consulta compuesta.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    77/254

    Prctica 8-1: Uso de los Operadores de Definicin(continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-61

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    78/254

    Oracle Database: Conceptos Fundamentales de SQL I A-62

    Soluciones a la Prctica 8-1: Uso de los Operadores deDefinicin

    1) El departamento de recursos humanos necesita una lista de ID de departamento queno contienen el ID de cargo ST_CLERK. Utilice los operadores de definicin paracrear este informe.

    SELECT department_idFROM departmentsMINUSSELECT department_idFROM employeesWHERE job_id = 'ST_CLERK'

    2) El departamento de recursos humanos necesita una lista de pases que no tienenningn departamento. Muestre el ID de pas y el nombre de los pases. Utilice losoperadores de definicin para crear este informe.

    SELECT country_id,country_name

    FROM countriesMINUSSELECT l.country_id,c.country_nameFROM locations l JOIN countries cON (l.country_id = c.country_id)JOIN departments dON d.location_id=l.location_id;

    3) Cree una lista de cargos para los departamentos 10, 50 y 20, en ese orden. Muestre losID de cargo y departamento mediante los operadores de definicin.

    SELECT distinct job_id, department_idFROM employees

    WHERE department_id = 10UNION ALLSELECT DISTINCT job_id, department_idFROM employeesWHERE department_id = 50UNION ALLSELECT DISTINCT job_id, department_idFROM employeesWHERE department_id = 20

    4) Cree un informe que muestre los ID de empleado y de cargo de los empleados queactualmente tienen un puesto que es el mismo que tenan cuando fueron contratados

    (es decir, han cambiado de cargo pero ahora han vuelto a su puesto original).SELECT employee_id,job_idFROM employeesINTERSECTSELECT employee_id,job_idFROM job_history;

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    79/254

    Soluciones a la Prctica 8-1: Uso de los Operadores deDefinicin (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-63

    5)

    El departamento de recursos humanos necesita un informe con las siguientesespecificaciones:

    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 tablaDEPARTMENTS, independientemente de si hay o no empleados trabajando endichos departamentos.

    Para ello, escriba una consulta compuesta.

    SELECT last_name,department_id,TO_CHAR(null)FROM employeesUNIONSELECT TO_CHAR(null),department_id,department_nameFROM departments;

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    80/254

    Oracle Database: Conceptos Fundamentales de SQL I A-64

    Prcticas de la Leccin 9

    En esta prctica, agregar filas a la tabla MY_EMPLOYEE, actualizar y suprimir datos dela tabla y controlar las transacciones. Ejecute un script para crear la tablaMY_EMPLOYEE.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    81/254

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    82/254

    Prctica 9-1: Manipulacin de Datos (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-66

    4) Rellene la tabla MY_EMPLOYEEcon la segunda fila de datos de ejemplo de la listaanterior. En esta ocasin, muestre explcitamente la lista de columnas en la clusulaINSERT.

    5)

    Confirme la adicin a la tabla.

    6)

    Escriba una sentencia INSERT en un archivo de script reutilizable para cargar lasfilas restantes en la tabla MY_EMPLOYEE. El script se debe solicitar para todas lascolumnas (ID, LAST_NAME, FIRST_NAME, USERIDy SALARY). Guarde este script enun archivo lab_09_06.sql.

    7) Rellene la tabla con las dos siguientes filas de ejemplo mostradas en el paso 3mediante la ejecucin de la sentencia INSERTen el script que ha creado.

    8) Confirme las adiciones a la tabla.

    9) Convierta las adiciones de datos en permanentes.

    Actualice y suprima datos de la tablaMY_EMPLOYEE.

    10)

    Cambie el apellido del empleado 3 a Drexler.11)

    Cambie el salario a 1.000 dlares para todos los empleados con un salario inferior a900.

    12)Verifique los cambios en la tabla.

    13)Suprima Betty Dancs de la tabla MY_EMPLOYEE.

    14)Confirme los cambios en la tabla.

  • 8/9/2019 FUNDACION_PROYDESAD64258CS10_sg2-

    83/254

    Prctica 9-1: Manipulacin de Datos (continuacin)

    Oracle Database: Conceptos Fundamentales de SQL I A-67

    15)Confirme todos los cambios pendientes.

    Controle la transaccin de datos a la tablaMY_EMPLOYEE.

    16)Rellene la tabla con la ltima fila de datos de ejemplo mostrada en el paso 3 mediantelas sentencias del script que ha creado en el paso 6. Ejecute las sentencias en el script.

    17)

    Confirme la adicin a la tabla.

    18)Marque un punto intermedio en el procesamiento de la transaccin.

    19)Suprima todas las filas de la tabla MY_EMPLOYEE.

    20)Confirme que la tabla est vaca.

    21)Deseche la operacin DELETEms reciente sin desechar