SQL Fundam1 Ora Iberia Completo

546
Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I Presentación Electrónica D17108CS10 Producción 1.1 Junio de 2004 D39507 ®

Transcript of SQL Fundam1 Ora Iberia Completo

  • Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I

    Presentacin Electrnica

    D17108CS10 Produccin 1.1 Junio de 2004 D39507

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Esta documentacin contiene informacin propiedad de Oracle Corporation; se suministra bajo los trminos de un contrato de licencia que contiene restricciones de uso y de revelacin y est tambin protegida por la legislacin de derechos de autor. Queda prohibida la ingeniera reversa del software. Si esta documentacin se entrega a una agencia del Ministerio de Defensa del Gobierno de EE.UU., se aplicar la siguiente advertencia de Restricted Rights:

    Restricted Rights Legend

    Use, duplication or disclosure by the Government is subject to restrictions for commercial computer software and shall be deemed to be Restricted Rights software under Federal law, as set forth in subparagraph (c)(1)(ii) of DFARS 252.227-7013, Rights in Technical Data and Computer Software (October 1988).

    Este material ni ninguna parte del mismo podr ser reproducido en cualquier forma o a travs de cualquier medio sin el expreso consentimiento por escrito de Oracle Corporation. La reproduccin es una violacin de la ley de derechos de autor y puede tener consecuencias penales o civiles.

    Si esta documentacin se entrega a una agencia del Gobierno de EE.UU. no perteneciente al Ministerio de Defensa, se aplicar la advertencia de "Restricted Rights" definida en FAR 52.227-14, Rights in Data-General, incluido Alternate III (junio de 1987).

    La informacin contenida en este documento est sujeta a cambio sin previo aviso. Si detecta cualquier problema en la documentacin, le agradeceremos lo comunique por escrito a Education Products, Oracle Corporation, 500 Oracle Parkway, Box SB-6, Redwood Shores, CA 94065. Oracle Corporation no garantiza que este documento est exento de errores.

    Todas las referencias a Oracle y a productos Oracle son marcas comerciales o marcas comerciales registradas de Oracle Corporation.

    Todos los dems nombres de compaas y productos mencionados se utilizan a los exclusivos fines de su identificacin y pueden ser marcas comerciales de sus respectivos propietarios.

    Autor

    NancyGreenberg

    ColaboradoresTcnicosyRevisoresWayne Abbott Christian Bauwens Perry Benson Brian Boxx Zarko Cesljas Dairy Chan Laszlo Czinkoczki Marjolein Dekkers Matthew Gregory Stefan Grenstad Joel Goodman Rosita Hanoman Sushma Jagannath Angelika Krupp Christopher Lawless Marcelo Manzano Isabelle Marchand Malika Marghadi Valli Pataballa Elspeth Payne Ligia Jasmin Robayo Bryan Roberts Helen Robertson Lata Shivaprasad John Soltani Priya Vennapusa Ken Woolfe

    Editor

    NitaBrozowski

  • Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I

    Volumen I Gua del Alumno

    D17108CS10

    Edicin 1.0

    Junio de 2004

    D39504

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Esta documentacin contiene informacin propiedad de Oracle Corporation; se suministra bajo los trminos de un contrato de licencia que contiene restricciones de uso y de revelacin y est tambin protegida por la legislacin de derechos de autor. Queda prohibida la ingeniera reversa del software. Si esta documentacin se entrega a una agencia del Ministerio de Defensa del Gobierno de EE.UU., se aplicar la siguiente advertencia de Restricted Rights:

    Restricted Rights Legend

    Use, duplication or disclosure by the Government is subject to restrictions for commercial computer software and shall be deemed to be Restricted Rights software under Federal law, as set forth in subparagraph (c)(1)(ii) of DFARS 252.227-7013, Rights in Technical Data and Computer Software (October 1988).

    Este material ni ninguna parte del mismo podr ser reproducido en cualquier forma o a travs de cualquier medio sin el expreso consentimiento por escrito de Oracle Corporation. La reproduccin es una violacin de la ley de derechos de autor y puede tener consecuencias penales o civiles.

    Si esta documentacin se entrega a una agencia del Gobierno de EE.UU. no perteneciente al Ministerio de Defensa, se aplicar la advertencia de "Restricted Rights" definida en FAR 52.227-14, Rights in Data-General, incluido Alternate III (junio de 1987).

    La informacin contenida en este documento est sujeta a cambio sin previo aviso. Si detecta cualquier problema en la documentacin, le agradeceremos lo comunique por escrito a Education Products, Oracle Corporation, 500 Oracle Parkway, Redwood Shores, CA 94065. Oracle Corporation no garantiza que este documento est exento de errores.

    Toda referencia a Oracle y a los Productos de Oracle constituyen marcas comerciales o marcas comerciales registradas de Oracle Corporation.

    Todos los dems nombres de compaas y productos mencionados se utilizan a los exclusivos fines de su identificacin y pueden ser marcas comerciales de sus respectivos propietarios.

    Autor

    NancyGreenberg

    ColaboradoresTcnicosyRevisores

    Wayne Abbott Christian Bauwens Perry Benson Brian Boxx Zarko Cesljas Dairy Chan Laszlo Czinkoczki Marjolein Dekkers Matthew Gregory Stefan Grenstad Joel Goodman Rosita Hanoman Sushma Jagannath Angelika Krupp Christopher Lawless Marcelo Manzano Isabelle Marchand Malika Marghadi Valli Pataballa Elspeth Payne Ligia Jasmin Robayo Bryan Roberts Helen Robertson Lata Shivaprasad John Soltani Priya Vennapusa Ken Woolfe

    Editor

    NitaK.Brozowski

  • Prefacio

    Introduccin Objetivos de la Leccin I-2 Objetivos del Curso I-3 Oracle10g I-4 Base de Datos Oracle 10g I-6 Oracle Application Server 10g I-7 Oracle Enterprise Manager 10g Grid Control I-8 Sistemas de Gestin de Bases de Datos Relacionales y Relacionales de Objetos I-9 Plataforma para Internet de Oracle I-10 Ciclo de Vida de Desarrollo del Sistema I-11 Almacenamiento de Datos en Medios Diferentes I-13 Concepto de Base de Datos Relacional I-14 Definicin de una Base de Datos Relacional I-15 Modelos de Datos I-16 Modelo de Relacin de Entidades I-17 Convencin de Modelado de Relacin de Entidades I-19 Relacin de Varias Tablas I-21 Terminologa de Bases de Datos Relacionales I-23 Propiedades de las Bases de Datos Relacionales I-25 Comunicacin con un RDBMS mediante SQL I-26 Sistema de Gestin de Bases de Datos Relacionales de Oracle I-27 Sentencias SQL I-28 Tablas Utilizadas en el Curso I-29 Resumen I-30

    1 Recuperacin de Datos mediante la Sentencia SELECT de SQL Objetivos 1-2 Capacidades de las Sentencias SELECT de SQL 1-3 Sentencia SELECT Bsica 1-4 Seleccin de Todas las Columnas 1-5 Seleccin de Columnas Especficas 1-6 Escritura de Sentencias SQL 1-7 Valores por Defecto de Cabeceras de Columna 1-8 Expresiones Aritmticas 1-9 Uso de Operadores Aritmticos 1-10 Prioridad de Operadores 1-11 Definicin de un Valor Nulo 1-12 Valores Nulos en Expresiones Aritmticas 1-13 Definicin de un Alias de Columna 1-14 Uso de Alias de Columnas 1-15 Operador de Concatenacin 1-16 Cadenas de Literales 1-17 Uso de Cadenas de Literales 1-18 Operador de Comillas (q) Alternativo 1-19 Filas Duplicadas 1-20 Interaccin de SQL e iSQL*Plus 1-21 Sentencias SQL frente a Comandos de iSQL*Plus 1-22 Visin General de iSQL*Plus 1-23

    Contenido

    iii

  • Conexin a iSQL*Plus 1-24 Entorno iSQL*Plus 1-25 Visualizacin de la Estructura de Tablas 1-26 Interaccin con Archivos de Comandos 1-28 Pgina History de iSQL*Plus 1-32 Definicin de Preferencias de iSQL*Plus 1-34 Definicin de la Preferencia de Ubicacin de Salida 1-35 Resumen 1-36 Prctica 1: Visin General 1-37

    2 Restriccin y Ordenacin de Datos Objetivos 2-2 Limitacin de Filas mediante una Seleccin 2-3 Limitacin de las Filas que se Seleccionan 2-4 Uso de la Clusula WHERE 2-5 Cadenas de Caracteres y Fechas 2-6 Condiciones de Comparacin 2-7 Uso de Condiciones de Comparacin 2-8 Uso de la Condicin BETWEEN 2-9 Uso de la Condicin IN 2-10 Uso de la Condicin LIKE 2-11 Uso de la Condicin NULL 2-13 Condiciones Lgicas 2-14 Uso del Operador AND 2-15 Uso del Operador OR 2-16 Uso del Operador NOT 2-17 Reglas de Prioridad 2-18 Uso de la Clusula ORDER BY 2-20 Ordenacin 2-21 Variables de Sustitucin 2-22 Uso de la Variable de Sustitucin & 2-24 Valores de Carcter y de Fecha con Variables de Sustitucin 2-26 Especificacin de Nombres de Columna, Expresiones y Texto 2-27 Uso de la Variable de Sustitucin && 2-24 Uso del Comando DEFINE de iSQL*Plus 2-29 Uso del Comando VERIFY 2-30 Resumen 2-31 Prctica 2: Visin General 2-32

    3 Uso de Funciones de una Sola Fila para Personalizar la Salida Objetivos 3-2 Funciones SQL 3-3 Dos Tipos de Funciones SQL 3-4 Funciones de una Sola Fila 3-5 Funciones de Carcter 3-7 Funciones de Manipulacin de Maysculas/Minsculas 3-9 Uso de Funciones de Manipulacin de Maysculas/Minsculas 3-10 Funciones de Manipulacin de Caracteres 3-11 Uso de Funciones de Manipulacin de Caracteres 3-12Funciones Numricas 3-13

    iv

  • Uso de la Funcin ROUND 3-14 Uso de la Funcin TRUNC 3-15 Uso de la Funcin MOD 3-16 Trabajo con Fechas 3-17 Aritmtica con Fechas 3-20 Uso de Operadores Aritmticos con Fechas 3-21 Funciones de Fecha 3-22 Uso de Funciones de Fecha 3-23 Prctica 3: Visin General de la Parte 1 3-25 Funciones de Conversin 3-26 Conversin de Tipos de Datos Implcita 3-27 Conversin de Tipos de Datos Explcita 3-29 Uso de la Funcin TO_CHAR con Fechas 3-32 Elementos del Modelo de Formato de Fecha 3-33 Uso de la Funcin TO_CHAR con Fechas 3-37 Uso de la Funcin TO_CHAR con Nmeros 3-38 Uso de las Funciones TO_NUMBER y TO_DATE 3-41 Formato de Fecha RR 3-43 Ejemplo de Formato de Fecha RR 3-44 Anidamiento de Funciones 3-45 Funciones Generales 3-47 Funcin NVL 3-48 Uso de la Funcin NVL 3-49 Uso de la Funcin NVL2 3-50 Uso de la Funcin NULLIF 3-51 Uso de la Funcin COALESCE 3-52 Expresiones Condicionales 3-54 Expresin CASE 3-55 Uso de la Expresin CASE 3-56 Funcin DECODE 3-57 Uso de la Funcin DECODE 3-58 Resumen 3-60 Prctica 3: Visin General de la Parte 2 3-61

    4 Informacin sobre Datos Agregados mediante las Funciones de Grupo Objetivos 4-2 Qu son las Funciones de Grupo? 4-3 Tipos de Funciones de Grupo 4-4 Funciones de Grupo: Sintaxis 4-5 Uso de las Funciones AVG y SUM 4-6 Uso de las Funciones MIN y MAX 4-7 Uso de la Funcin COUNT 4-8 Uso de la Palabra Clave DISTINCT 4-9 Funciones de Grupo y Valores Nulos 4-10 Creacin de Grupos de Datos 4-11 Creacin de Grupos de Datos: Sintaxis de la Clusula GROUP BY 4-12 Uso de la Clusula GROUP BY 4-13 Agrupacin por Ms de Una Columna 4-15 Uso de la Clusula GROUP BY en Varias Columnas 4-16 Consultas Ilegales mediante Funciones de Grupo 4-17Restriccin de Resultados de Grupos 4-19

    v

  • Restriccin de Resultados de Grupos con la Clusula HAVING 4-20 Uso de la Clusula HAVING 4-21 Anidamiento de Funciones de Grupo 4-23 Resumen 4-24 Prctica 4: Visin General 4-25

    5 Visualizacin de Datos de Varias Tablas Objetivos 5-2 Obtencin de Datos de Varias Tablas 5-3 Tipos de Uniones 5-4 Unin de Tablas mediante la Sintaxis SQL:1999 5-5 Creacin de Uniones Naturales 5-6 Recuperacin de Registros con Uniones Naturales 5-7 Creacin de Uniones con la Clusula USING 5-8 Unin de Nombres de Columnas 5-9 Recuperacin de Registros con la Clusula USING 5-10 Cualificacin de Nombres de Columna Ambiguos 5-11 Uso de Alias de Tabla 5-12 Creacin de Uniones con la Clusula ON 5-13 Recuperacin de Registros con la Clusula ON 5-14 Autouniones mediante la Clusula ON 5-15 Aplicacin de Condiciones Adicionales a una Unin 5-17 Creacin de Uniones en Tres Sentidos con la Clusula ON 5-18 Uniones No Igualitarias 5-19 Recuperacin de Registros con Uniones No Igualitarias 5-20 Uniones Externas 5-21 Uniones INNER frente a OUTER 5-22 LEFT OUTER JOIN 5-23 RIGHT OUTER JOIN 5-24 FULL OUTER JOIN 5-25 Productos Cartesianos 5-26 Generacin de un Producto Cartesiano 5-27 Creacin de Uniones Cruzadas 5-28 Resumen 5-29 Prctica 5: Visin General 5-30

    6 Uso de Subconsultas para Resolver Consultas Objetivos 6-2 Uso de Subconsultas para Resolver Problemas 6-3 Sintaxis de Subconsultas 6-4 Uso de Subconsultas 6-5 Instrucciones para el Uso de Subconsultas 6-6 Tipos de Subconsultas 6-7 Subconsultas de una Sola Fila 6-8 Ejecucin de Subconsultas de una Sola Fila 6-9 Uso de Funciones de Grupo en una Subconsulta 6-10 La Clusula HAVING con Subconsultas 6-11 Qu Problema Hay en Esta Sentencia? 6-12 Devolver Filas Esta Sentencia? 6-13 Subconsultas de Varias Filas 6-14 Uso del Operador ANY en Subconsultas de Varias Filas 6-15

    vi

  • Uso del Operador ALL en Subconsultas de Varias Filas 6-16 Valores Nulos en una Subconsulta 6-17 Resumen 6-19 Prctica 6: Visin General 6-20

    7 Uso de Operadores SET Objetivos 7-2 Operadores SET 7-3 Tablas Utilizadas en Esta Leccin 7-4 Operador UNION 7-8 Uso del Operador UNION 7-9 Operador UNION ALL 7-11 Uso del Operador UNION ALL 7-12 Operador INTERSECT 7-13 Uso del Operador INTERSECT 7-14 Operador MINUS 7-15 Instrucciones para los Operadores SET 7-17 Oracle Server y los Operadores SET 7-18 Correspondencia de Sentencias 7-19 Correspondencia de la Sentencia: Ejemplo 7-20 Control del Orden de Filas 7-21 Resumen 7-23 Prctica 7: Visin General 7-24

    8 Manipulacin de Datos Objetivos 8-2 Lenguaje de Manipulacin de Datos 8-3 Adicin de una Nueva Fila a una Tabla 8-4 Sintaxis de la Sentencia INSERT 8-5 Insercin de Nuevas Filas 8-6 Insercin de Filas con Valores Nulos 8-7 Insercin de Valores Especiales 8-8 Insercin de Valores de Fecha Especficos 8-9 Creacin de un Archivo de Comandos 8-10 Copia de Filas de Otra Tabla 8-11 Cambio de Datos en una Tabla 8-12 Sintaxis de la Sentencia UPDATE 8-13 Actualizacin de las Filas de una Tabla 8-14 Actualizacin de Dos Columnas con una Subconsulta 8-15 Actualizacin de Filas Basndose en Otra Tabla 8-16 Eliminacin de una Fila de una Tabla 8-17 Sentencia DELETE 8-18 Supresin de Filas de una Tabla 8-19 Supresin de Filas Basndose en Otra Tabla 8-20 Sentencia TRUNCATE 8-21 Uso de Subconsultas en una Sentencia INSERT 8-22 Transacciones de la Base de Datos 8-24 Ventajas de las Sentencias COMMIT y ROLLBACK 8-26

    vii

  • Control de Transacciones 8-27 Rollback de Cambios hasta un Marcador 8-28 Procesamiento de Transacciones Implcito 8-29 Estado de los Datos antes de COMMIT o ROLLBACK 8-31 Estado de los Datos despus de COMMIT 8-32 Validacin de Datos 8-33 Estado de los Datos despus de ROLLBACK 8-34 Rollback de Nivel de Sentencia 8-36 Consistencia de Lectura 8-37 Implementacin de la Consistencia de Lectura 8-38 Resumen 8-39 Prctica 8: Visin General 8-40

    9 Uso de Sentencias DDL para Crear y Gestionar Tablas Objetivos 9-2 Objetos de Base de Datos 9-3 Reglas de Nomenclatura 9-4 La Sentencia CREATE TABLE 9-5 Referencia a Tablas de Otro Usuario 9-6 Opcin DEFAULT 9-7 Creacin de Tablas 9-8 Tipos de Datos 9-9 Tipos de Datos de Fecha/Hora 9-11 Tipo de Datos INTERVAL DAY TO SECOND 9-16 Inclusin de Restricciones 9-17 Instrucciones de Restricciones 9-18 Definicin de Restricciones 9-19 Restriccin NOT NULL 9-21 Restriccin UNIQUE 9-22 Restriccin PRIMARY KEY 9-24 Restriccin FOREIGN KEY 9-25 Restriccin FOREIGN KEY: Palabras Clave 9-27 Restriccin CHECK 9-28 CREATE TABLE: Ejemplo 9-29 Violacin de Restricciones 9-30 Creacin de Tablas mediante una Subconsulta 9-32 Sentencia ALTER TABLE 9-34 Borrado de un Tabla 9-35 Resumen 9-36 Prctica 9: Visin General 9-37

    10 Creacin de Otros Objetos de Esquema Objetivos 10-2 Objetos de Base de Datos 10-3 Qu Es una Vista? 10-4 Ventajas de las Vistas 10-5 Vistas Simples y Vistas Complejas 10-6 Creacin de Vistas 10-7 Recuperacin de Datos de una Vista 10-10 Modificacin de Vistas 10-11 Creacin de Vistas Complejas 10-12

    viii

  • Reglas para Realizar Operaciones DML en Vistas 10-13 Uso de la Clusula WITH CHECK OPTION 10-16 Denegacin de Operaciones DML 10-17 Eliminacin de Vistas 10-19 Prctica 10: Visin General de la Parte 1 10-20 Secuencias 10-21 Sentencia CREATE SEQUENCE: Sintaxis 10-23 Creacin de Secuencias 10-24 Pseudocolumnas NEXTVAL y CURRVAL 10-25 Uso de Secuencias 10-27 Cach de Valores de Secuencia 10-28 Modificacin de Secuencias 10-28 Instrucciones para Modificar una Secuencia 10-30 ndices 10-31 Cmo se Crean los ndices? 10-33 Creacin de ndices 10-34 Instrucciones para la Creacin de ndices 10-35 Eliminacin de ndices 10-36 Sinnimos 10-37 Creacin y Eliminacin de Sinnimos 10-39 Resumen 10-40 Prctica 10: Visin General de la Parte 2 10-41

    11 Gestin de Objetos con Vistas de Diccionario de Datos Objetivos 11-2 El Diccionario de Datos 11-3 Estructura de los Diccionarios de Datos 11-4 Uso de las Vistas de Diccionario 11-6 Vista USER_OBJECTS 11-7 Informacin de Tabla 11-9 Informacin de Columna 11-10 Informacin de Restriccin 11-12 Informacin de Vista 11-15 Informacin de Secuencia 11-16 Informacin de Sinnimos 11-18 Adicin de Comentarios a Tablas 11-19 Resumen 11-20 Prctica 11: Visin General 11-21

    ix

  • x

    A Soluciones a las Prcticas

    B Datos y Descripciones de Tablas

    C Sintaxis de Unin en Oracle

    D Uso de SQL*Plus

    ndice

    Prcticas Adicionales

    Prcticas Adicionales: Datos y Descripciones de Tablas

    Prcticas Adicionales: Soluciones

  • Prefacio

  • Prefacio-3

    Perfil Antes de Empezar este Curso

    Antes de comenzar este curso, debe saber utilizar una GUI (Interfaz Grfica de Usuario). El requisito es que est familiarizado con los conceptos y las tcnicas del procesamiento de datos.

    Organizacin de Este Curso Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I es un curso dirigido por un instructor que ofrece clases tericas y ejercicios prcticos. Las demostraciones en lnea y las sesiones prcticas por escrito sirven para reforzar los conceptos y las habilidades que se presentan en l.

  • Prefacio-4

    Publicaciones Relacionadas Publicaciones Oracle

    Ttulo Nmero de Referencia

    Oracle Database Reference 10g Release 1 (10.1) B10755-01 Oracle Database SQL Reference 10g Release 1 (10.1) B10759-01 Oracle Database Concepts 10g Release 1 (10.1) B10743-01 Oracle Database Application Developer's Guide - Fundamentals

    10g Release 1 (10.1) B10795-01 SQL*Plus User's Guide and Reference B12170-01

    Publicaciones Adicionales Boletines de versin de sistema Guas de usuario y de instalacin Archivos read.me Artculos de IOUG (International Oracle Users Group) Oracle Magazine

  • Prefacio-5

    Convenciones Tipogrficas A continuacin se incluyen dos listas de las convenciones tipogrficas que se utilizan especficamente en el texto o en el cdigo.

    Convenciones Tipogrficas del Texto Convencin Objeto o Trmino Ejemplo

    Maysculas Comandos, Utilice el comando SELECT para verfunciones, la informacin almacenada en la nombres de columna, columna LAST_NAME de la tabla.nombres de tabla, EMPLOYEESobjetos PL/SQL,esquemas

    Minsculas, Nombres de archivo, donde: role es el nombre del rol que cursiva variables de sintaxis, se va a crear.

    nombres de usuario,contraseas

    Mayscula inicial Disparadores y Asigne un disparador When-Validate-nombres de botones Item al bloque ORD.

    Haga clic en Cancelar.

    Cursiva Libros, nombres de Si desea ms informacin acerca delcursos y tema, consulte Oracle SQLmanuales, y palabras Reference Manual.o frases a las que se quiere dar nfasis No guarde los cambios en la base

    de datos.

    Comillas Ttulo de mdulos de Este tema se trata en la Leccin 3,lecciones que se Trabajo con Objetos.nombran en el curso

  • Prefacio-6

    Convenciones Tipogrficas (continuacin)

    Convenciones Tipogrficas del Cdigo Convencin Objeto o Trmino Ejemplo

    Maysculas Comandos, SELECT employee_idfunciones FROM employees;

    Minsculas, Variables de la sintaxis CREATE ROLE role;cursiva

    Mayscula Disparadores de Form module: ORDinicial pantallas Trigger level: S_ITEM.QUANTITY

    itemTrigger name: When-Validate-Item. . .

    Minsculas Nombres de columna, . . .nombres de tabla, OG_ACTIVATE_LAYERnombres de archivo, (OG_GET_LAYER ('prod_pie_layer'))objetos PL/SQL . . .

    SELECT last_nameFROM employees;

    Negrita El texto que CREATE USER scottdebe escribir IDENTIFIED BY tiger; el usuario

  • ICopyright 2004, Oracle. Todos los derechos reservados.

    Introduccin

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Objetivos de la Leccin

    Al finalizar esta leccin, debera estar capacitado para: Mostrar las funciones de Oracle10g Analizar los aspectos tericos y fsicos de una base

    de datos relacional Describir la implementacin de Oracle de RDBMS y

    ORDBMS Comprender los objetivos del curso

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Objetivos del Curso

    Al finalizar este curso, debera estar capacitado para: Identificar los componentes estructurales principales

    de la Base de Datos Oracle 10g Recuperar datos de fila y de columna de las tablas

    con la sentencia SELECT Crear informes de datos ordenados y restringidos Utilizar funciones SQL para generar y recuperar

    datos personalizados Ejecutar sentencias DML (lenguaje de manipulacin

    de datos) para actualizar datos en la Base de Datos Oracle 10g

    Obtener metadatos consultando las vistas de diccionario

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Oracle10g

    Modelo dedesarrollo

    simple

    Juegos deconocimientos

    comunes

    Fiabilidad Gestinunificada

    Escalabilidad Unproveedor

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Oracle10g

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Base de Datos Oracle 10g

    Multimedia

    Datos relacionales de objetos

    Mensajes

    Documentos

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Oracle Application Server 10g

    Marco de desarrollo de aplicaciones

    Servidor de aplicaciones

    Anlisis de negocio

    Portales

    Integracin

    Aplicaciones transaccionales

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Oracle Enterprise Manager 10g Grid Control

    Provisionamiento de software Control de nivel de servicio de aplicaciones

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Sistemas de Gestin de Bases deDatos Relacionales y Relacionales de Objetos

    Modelo relacional y modelo relacional de objetos Tipos de datos y objetos definidos por el usuario Totalmente compatible con bases de datos

    relacionales Soporte de multimedia y objetos grandes Funciones de servidor de base de datos de alta

    calidad

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Plataforma para Internet de Oracle G

    esti

    n de

    l sis

    tem

    a

    SQL

    PL/SQL

    Java

    Cualquierexplorador

    Cualquiercliente FTP

    Cualquiercliente de correo

    Clientes

    Herram

    ientas de desarrollo

    Servicios de red

    Bases de datos Servidores deaplicaciones

    Aplicaciones de Internet

    Lgica de presentaciny de negocios

    Lgica de negociosy datos

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Ciclo de Vida de Desarrollo del Sistema

    Estrategiay

    anlisisDiseo

    Creaciny

    documentacin

    Transicin

    Produccin

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Ciclo de Vida de Desarrollo del Sistema

    Estrategiay

    anlisisDiseo

    Creaciny

    documentacin

    Transicin

    Produccin

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Almacenamiento de Datos en Medios Diferentes

    Hoja de clculo electrnica

    Armario de archivado

    Base de datos

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Concepto de Base de Datos Relacional

    El Dr. E. F. Codd propuso el modelo relacional para sistemas de bases de datos en 1970.

    Es la base de RDBMS (Sistema de gestin de bases de datos relacionales).

    El modelo relacional consta de: Recopilacin de objetos o relaciones Juego de operadores para actuar sobre las relaciones Integridad de datos para precisin y consistencia

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Definicin de una Base de Datos Relacional

    Una base de datos relacional es una recopilacin de relaciones o tablas bidimensionales.

    Oracle Server

    Nombre de tabla: EMPLOYEES Nombre de tabla: DEPARTMENTS

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Modelos de Datos

    Modelo delsistema en la

    mente del cliente

    Modelo de entidaddel modelo del

    cliente

    Tablas en disco

    OracleServer

    Modelo de tabladel modelo de entidad

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Cree un diagrama de relaciones de entidades a partir de descripciones o especificaciones de negocio:

    Supuesto ... Asignar uno o ms empleados a un

    departamento... ... Algunos departamentos no tienen an empleados

    asignados...

    Modelo de Relacin de Entidades

    EMPLOYEE #* nmero * nombre o cargo

    DEPARTMENT #* nmero * nombre o ubicacin

    asignado a

    compuesto por

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Convenciones del Modelo de Relacin de Entidades

    Entidad Nombre nico, singular Maysculas Recuadro editable Sinnimo entre parntesis

    UID (Identificador nico)Principal marcado con # Secundario marcado con (#)

    EMPLOYEE #* nmero * nombre o cargo

    DEPARTMENT #* nmero * nombre o ubicacin

    Atributo Nombre singular Minsculas Obligatorio marcado con * Opcional marcado con o

    compuesto por

    asignado a

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Convenciones del Modelo de Relacin de Entidades

    UID (Identificador nico) Principal marcado con # Secundario marcado con (#)

    Atributo Nombre singular Minsculas Obligatorio marcado con * Opcional marcado con o

    EMPLOYEE #* nmero * nombre o cargo

    asignado a DEPARTMENT #* nmero * nombre o ubicacin compuesto por

    Entidad Nombre nico, singular Maysculas Recuadro editable Sinnimo entre parntesis

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Relacin de Varias Tablas

    Cada fila de datos de una tabla se identifica de manera nica mediante una PK (clave primaria).

    Los datos de varias tablas se pueden relacionar lgicamente mediante FK (claves ajenas).

    Nombre de tabla: EMPLOYEES Nombre de tabla: DEPARTMENTS

    Clave primaria Clave primariaClave ajena

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Terminologa de Bases de Datos Relacionales

    1

    23 4

    6

    5

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Propiedades de Bases de Datos Relacionales

    Base de datos relacional: Se puede acceder a ella y se puede modificar

    ejecutando sentencias de SQL (lenguaje estructurado de consulta)

    Contiene una recopilacin de tablas sin punteros fsicos

    Utiliza un juego de operadores

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Comunicacin con un RDBMSmediante SQL

    Se introduce la sentencia SQL. La sentencia se enva a Oracle Server.

    OracleServer

    SELECT department_name FROM departments;

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Sistema de Gestin de Bases de Datos Relacionales de Oracle

    Tablas de usuario Diccionariode datos

    Oracleserver

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Sentencias SQL SELECTINSERTUPDATEDELETEMERGECREATEALTERDROPRENAMETRUNCATECOMMENTCOMMIT ROLLBACK SAVEPOINT GRANT REVOKE

    DML (Lenguaje de Manipulacin de Datos)

    DDL (Lenguaje de Definicin de Datos)

    Control de transacciones

    DCL (Lenguaje de Control de Datos)

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Tablas Utilizadas en el Curso

    EMPLOYEES

    DEPARTMENTS JOB_GRADES

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Resumen

    Base de Datos Oracle 10g es la base de datos para grid computing.

    La base de datos se basa en el sistema de gestin de bases de datos relacionales.

    Las bases de datos relacionales estn formadas por relaciones, se gestionan mediante operaciones relacionales y las rigen restricciones de integridad de datos.

    Con Oracle Server, puede almacenar y gestionar informacin mediante el lenguaje SQL y el motor PL/SQL.

  • 1Copyright 2004, Oracle. Todos los derechos reservados.

    Recuperacin de Datos mediante la Sentencia SELECT de SQL

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Objetivos

    Al finalizar esta leccin, debera estar capacitado para: Enumerar las capacidades de las sentencias

    SELECT de SQL Ejecutar una sentencia SELECT bsica Diferenciar entre sentencias SQL y comandos de

    iSQL*Plus

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Capacidades de las Sentencias SELECT de SQL

    SeleccinProyeccin

    Tabla 1 Tabla 2

    Tabla 1Tabla 1

    Unin

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Sentencia SELECT Bsica

    SELECT identifica las columnas que se van a mostrar FROM identifica la tabla que contiene esas columnas

    SELECT *|{[DISTINCT] column|expression [alias],...} FROM table;

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Seleccin de Todas las Columnas

    SELECT * FROM departments;

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Seleccin de Columnas Especficas

    SELECT department_id, location_id FROM departments;

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Escritura de Sentencias SQL

    Las sentencias SQL no son sensibles a maysculas/minsculas.

    Las sentencias SQL pueden estar en una o ms lneas. Las palabras clave no se pueden abreviar o dividir entre

    lneas. Las clusulas se sitan normalmente en lneas

    separadas. Se utilizan sangrados para mejorar la legibilidad. En iSQL*Plus, opcionalmente, las sentencias SQL

    pueden terminar en punto y coma (;). Los puntos y comas son obligatorios si ejecuta varias sentencias SQL.

    En SQL*plus, es obligatorio que todas las sentencias SQL terminen en punto y coma (;).

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Valores por Defecto de Cabeceras de Columnas

    iSQL*Plus: Alineacin de cabecera por defecto: centrada Visualizacin de cabecera por defecto: maysculas

    SQL*Plus: Las cabeceras de las columnas CHARACTER y DATE

    estn alineadas a la izquierda Las cabeceras de columnas NUMBER estn alineadas

    a la derecha Visualizacin de cabecera por defecto: maysculas

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Expresiones Aritmticas

    Cree expresiones con datos numricos y de fecha utilizando operadores aritmticos.

    Multiplicacin *Divisin/

    Resta-Suma+DescripcinOperador

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, salary, salary + 300 FROM employees;

    Uso de Operadores Aritmticos

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, salary, 12*salary+100 FROM employees;

    Prioridad de Operadores

    SELECT last_name, salary, 12*(salary+100) FROM employees;

    1

    2

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Definicin de un Valor Nulo

    Un valor nulo es aquel que no est disponible, no est asignado, es desconocido o no es aplicable.

    Un valor nulo no es lo mismo que un cero o un espacio en blanco.

    SELECT last_name, job_id, salary, commission_pct FROM employees;

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, 12*salary*commission_pct FROM employees;

    Valores Nulos en Expresiones Aritmticas

    Las expresiones aritmticas que contienen un valor nulo se evalan como nulas.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Definicin de un Alias de Columna

    Un alias de columna: Cambia el nombre de una cabecera de columna Es til para los clculos Sigue inmediatamente al nombre de columna

    (puede haber tambin una palabra clave AS opcional entre el nombre de columna y el alias)

    Requiere comillas dobles si contiene espacios o caracteres especiales, o si es sensible a maysculas/minsculas

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Uso de Alias de Columna

    SELECT last_name "Name" , salary*12 "Annual Salary" FROM employees;

    SELECT last_name AS name, commission_pct comm FROM employees;

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Operador de Concatenacin

    Un operador de concatenacin: Enlaza columnas o cadenas de caracteres con

    otras columnas Se representa mediante dos barras verticales (||) Crea una columna resultante que es una expresin

    de carcter SELECT last_name||job_id AS "Employees" FROM employees;

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Cadenas de Literales

    Un literal es un carcter, un nmero o una fecha que se ha incluido en la sentencia SELECT.

    Los valores de literales de caracteres y fecha deben ir entre comillas simples.

    Las cadenas de literales se incluyen en cadafila devuelta.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Uso de Cadenas de Literales

    SELECT last_name ||' is a '||job_id AS "Employee Details" FROM employees;

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Operador de Comillas (q) Alternativo

    Especifique su propio delimitador de comillas Puede seleccionar cualquier delimitador Aumentar la legibilidad y la facilidad de usoSELECT department_name || q'[, it's assigned Manager Id: ]' || manager_id AS "Department and Manager" FROM departments;

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Filas Duplicadas

    La visualizacin por defecto de las consultas es todas las filas, incluidas las filas duplicadas. SELECT department_id FROM employees;

    SELECT DISTINCT department_id FROM employees;

    1

    2

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Interaccin de SQL e iSQL*Plus

    Sentencias SQL

    Resultados dela consulta

    Comandos deiSQL*Plus

    ClienteInforme con formato

    Exploradorde Internet

    Oracleserver

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Sentencias SQL frente a Comandos de iSQL*Plus

    SentenciasSQL

    SQL Un lenguaje Estndar ANSI Las palabras clave no

    se pueden abreviar Las sentencias

    manipulan datos y definiciones de tablas en la base de datos

    iSQL*Plus Un entorno Propietario de Oracle Las palabras clave se pueden

    abreviar Los comandos no permiten la

    manipulacin de valores en la base de datos

    Se ejecuta en un explorador Se carga centralmente; no es

    necesaria su implementacin en cada mquina

    Comandosde SQL*Plus

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Visin General de iSQL*Plus

    Despus de conectarse a iSQL*Plus, puede: Describir estructuras de tablas Introducir, ejecutar y editar sentencias SQL Guardar o agregar sentencias SQL a archivos Ejecutar o editar sentencias almacenadas en

    archivos de comandos guardados

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Conexin a iSQL*Plus

    Desde el entorno del explorador:

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Entorno iSQL*Plus

    6

    3 4 5

    1

    2

    8 9

    7

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Visualizacin de la Estructura de Tablas

    Utilice el comando de iSQL*Plus DESCRIBE para mostrar la estructura de una tabla:

    DESC[RIBE] tablename

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Visualizacin de la Estructura de Tablas

    DESCRIBE employees

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Interaccin con Archivos de Comandos

    SELECT last_name, hire_date, salary FROM employees; 1

    2

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Interaccin con Archivos de Comandos

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Interaccin con Archivos de Comandos

    1

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Interaccin con Archivos de Comandos

    23

    D:\TEMP\emp_data.sql

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Pgina History de iSQL*Plus

    1

    2

    3

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Pgina History de iSQL*Plus

    3

    4

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Definicin de Preferencias de iSQL*Plus

    23

    1

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Definicin de la Preferencia de Ubicacin de Salida

    1

    2

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Resumen

    En esta leccin ha aprendido a: Escribir una sentencia SELECT que:

    Devuelva todas las filas y columnas de una tabla Devuelva columnas especificadas de una tabla Utilice alias de columna para mostrar ms cabeceras

    de columnas descriptivas Utilice el entorno iSQL*Plus para escribir, guardar y

    ejecutar sentencias SQL y comandos de iSQL*Plus

    SELECT *|{[DISTINCT] column|expression [alias],...} FROM table;

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Prctica 1: Visin General

    Esta prctica cubre los temas siguientes: Seleccin de todos los datos de diferentes tablas Descripcin de la estructura de tablas Realizacin de clculos aritmticos y especificacin

    de nmeros de columna Uso de iSQL*Plus

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • 2Copyright 2004, Oracle. Todos los derechos reservados.

    Restriccin y Ordenacin de Datos

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Objetivos

    Al finalizar esta leccin, debera estar capacitado para: Limitar las filas recuperadas por una consulta Ordenar las filas recuperadas por una consulta Utilizar la sustitucin ampersand en iSQL*Plus

    para restringir y ordenar la salida en el tiempo de ejecucin

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Limitacin de Filas mediante una Seleccin

    recuperar todoslos empleados del departamento 90

    EMPLOYEES

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Limitacin de las Filas que se Seleccionan

    Restrinja las filas que se devuelven mediante la clusula WHERE:

    La clusula WHERE sigue a la clusula FROM.

    SELECT *|{[DISTINCT] column|expression [alias],...} FROM table [WHERE condition(s)];

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT employee_id, last_name, job_id, department_id FROM employees WHERE department_id = 90 ;

    Uso de la Clusula WHERE

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, job_id, department_id FROM employees WHERE last_name = 'Whalen' ;

    Cadenas de Caracteres y Fechas

    Las cadenas de caracteres y los valores de fecha van entre comillas simples.

    Los valores de caracteres son sensibles a maysculas/minsculas y los valores de fecha son sensible al formato.

    El formato de fecha por defecto es DD-MON-RR.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Condiciones de Comparacin

    Distinto de Entre dos valores (ambos inclusive) BETWEEN

    ...AND... Se corresponde con cualquier valor de una lista IN(set)

    Se corresponde con un patrn de caracteres LIKE Es un valor nulo IS NULL

    Menor que < Menor o igual que = Mayor que > Igual que = Significado Operador

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, salary FROM employees WHERE salary

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, salary FROM employees WHERE salary BETWEEN 2500 AND 3500 ;

    Uso de la Condicin BETWEEN

    Utilice la condicin BETWEEN para mostrar filas basadas en un rango de valores:

    Lmite inferior Lmite superior

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT employee_id, last_name, salary, manager_id FROM employees WHERE manager_id IN (100, 101, 201);

    Uso de la Condicin IN

    Utilice la condicin IN de miembro para comprobar los valores incluidos en una lista:

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT first_name FROM employees WHERE first_name LIKE 'S%' ;

    Uso de la Condicin LIKE

    Utilice la condicin LIKE para realizar bsquedas con comodines de valores vlidos de cadenas de bsqueda.

    Las condiciones de bsqueda pueden contener literales de nmeros o caracteres: % denota cero o muchos caracteres. _ denota un carcter.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Puede combinar caracteres que se correspondan con un patrn:

    Puede utilizar el identificador ESCAPE para buscar los smbolos % y _ reales.

    SELECT last_name FROM employees WHERE last_name LIKE '_o%' ;

    Uso de la Condicin LIKE

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, manager_id FROM employees WHERE manager_id IS NULL ;

    Uso de las Condiciones NULL

    Compruebe si hay valores nulos con el operador IS NULL.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Condiciones Lgicas

    Devuelve TRUE si la condicin siguiente es falsa

    NOT

    Devuelve TRUE si alguna de las condiciones componentes es verdadera

    OR

    Devuelve TRUE si ambas condiciones componentes son verdaderas

    AND Significado Operador

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary >=10000 AND job_id LIKE '%MAN%' ;

    Uso del Operador AND

    AND requiere que ambas condiciones sean verdaderas:

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary >= 10000 OR job_id LIKE '%MAN%' ;

    Uso del Operador OR

    OR requiere que una de las condiciones sea verdadera:

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, job_id FROM employees WHERE job_id NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP') ;

    Uso del Operador NOT

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Reglas de Prioridad

    Puede utilizar parntesis para sustituir las reglas de prioridad.

    Distinto de 6 Condicin lgica NOT 7 Condicin lgica AND 8 Condicin lgica OR 9

    IS [NOT] NULL, LIKE, [NOT] IN 4 [NOT] BETWEEN 5

    Condiciones de comparacin 3 Operador de concatenacin 2 Operadores aritmticos 1 Significado Operador

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, job_id, salary FROM employees WHERE job_id = 'SA_REP' OR job_id = 'AD_PRES' AND salary > 15000;

    Reglas de Prioridad

    SELECT last_name, job_id, salary FROM employees WHERE (job_id = 'SA_REP' OR job_id = 'AD_PRES') AND salary > 15000;

    1

    2

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Uso de la Clusula ORDER BY Para ordenar las filas recuperadas, utilice la

    clusula ORDER BY: ASC: orden ascendente, por defecto DESC: orden descendente

    La clusula ORDER BY se coloca al final de la sentencia SELECT:

    SELECT last_name, job_id, department_id, hire_date FROM employees ORDER BY hire_date ;

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Ordenacin

    Ordenacin en orden descendente:

    Ordenacin por alias de columna:

    Ordenacin por varias columnas:

    SELECT last_name, job_id, department_id, hire_date FROM employees ORDER BY hire_date DESC; 1

    SELECT employee_id, last_name, salary*12 annsal FROM employees ORDER BY annsal ; 2

    SELECT last_name, department_id, salary FROM employees ORDER BY department_id, salary DESC;

    3

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Variables de Sustitucin

    ... salary = ?

    ... department_id = ?

    ... last_name = ? ...

    Deseo consultar diferentes

    valores.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Variables de Sustitucin

    Utilice las variables de sustitucin de iSQL*Plus para: Almacenar valores temporalmente con las

    sustituciones de ampersand simple (&) y ampersand doble (&&)

    Utilice variables de sustitucin para complementar: Condiciones WHERE Clusulas ORDER BY Expresiones de columna Nombres de tablas Sentencias SELECT completas

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT employee_id, last_name, salary, department_id FROM employees WHERE employee_id = &employee_num ;

    Uso de la Variable de Sustitucin &

    Utilice una variable con un ampersand (&) como prefijo para pedir un valor al usuario:

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Uso de la Variable de Sustitucin &

    101

    12

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, department_id, salary*12 FROM employees WHERE job_id = '&job_title' ;

    Valores de Carcter y de Fecha con Variables de Sustitucin

    Utilice comillas simples para los valores de fecha y de carcter:

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Especificacin de Nombres de Columna, Expresiones y Texto

    SELECT employee_id, last_name, job_id,&column_name FROM employees WHERE &condition ORDER BY &order_column ;

    salary

    salary > 15000

    last_name

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT employee_id, last_name, job_id, &&column_name FROM employees ORDER BY &column_name ;

    Uso de la Variable de Sustitucin &&

    Utilice el ampersand doble (&&) si desea volver a utilizar el valor de variable sin pedir al usuario que realice una accin cada vez:

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Uso del Comando DEFINE de iSQL*Plus

    Utilice el comando DEFINE de iSQL*Plus para crear y asignar un valor a una variable.

    Utilice el comando UNDEFINE de iSQL*Plus para eliminar una variable.

    DEFINE employee_num = 200 SELECT employee_id, last_name, salary, department_id FROM employees WHERE employee_id = &employee_num ; UNDEFINE employee_num

  • Copyright 2004, Oracle. Todos los derechos reservados.

    old 3: WHERE employee_id = &employee_num new 3: WHERE employee_id = 200

    SET VERIFY ON SELECT employee_id, last_name, salary, department_id FROM employees WHERE employee_id = &employee_num;

    Uso del Comando VERIFY

    Utilice el comando VERIFY para alternar la visualizacin de la variable de sustitucin, tanto antes como despus de que iSQL*Plus reemplace con valores las variables de sustitucin:

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT *|{[DISTINCT] column|expression [alias],...} FROM table [WHERE condition(s)] [ORDER BY {column, expr, alias} [ASC|DESC]] ;

    Resumen

    En esta leccin ha aprendido a: Utilizar la clusula WHERE para restringir filas de salida:

    Utilizar las condiciones de comparacin Utilizar las condiciones BETWEEN, IN, LIKE y NULL Aplicar los operadores AND, OR y NOT

    Utilizar la clusula ORDER BY para ordenar filas de salida:

    Utilizar la sustitucin ampersand en iSQL*Plus para restringir y ordenar la salida en el tiempo de ejecucin

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Prctica 2: Visin General

    Esta prctica cubre los temas siguientes: Seleccin de datos y cambio del orden de las filas

    que se muestran Restriccin de filas mediante la clusula WHERE Ordenacin de filas mediante la clusula ORDER BY Uso de variables de sustitucin para agregar

    flexibilidad a las sentencias SELECT de SQL

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • 3Copyright 2004, Oracle. Todos los derechos reservados.

    Uso de Funciones de Una Sola Filapara Personalizar la Salida

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Objetivos

    Al finalizar esta leccin, debera estar capacitado para: Describir varios tipos de funciones que hay

    disponibles en SQL Utilizar funciones de carcter, numricas y de

    fecha en sentencias SELECT Describir el uso de las funciones de conversin

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Funciones SQL

    Funcin

    Entrada

    arg 1

    arg 2

    arg n

    La funcin realiza una accin

    Salida

    Valorresultante

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Dos Tipos de Funciones SQL

    Funciones deuna sola fila

    Funciones devarias filas

    Devuelven un resultadopor fila

    Devuelven un resultadopor juego de filas

    Funciones

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Funciones de una Sola Fila

    Las funciones de una sola fila: Manipulan elementos de datos Aceptan argumentos y devuelven un valor Actan en cada fila que se devuelve Devuelven un resultado por fila Pueden modificar el tipo de datos Se pueden anidar Aceptan argumentos que pueden ser una columna

    o una expresin

    function_name [(arg1, arg2,...)]

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Funciones de una Sola Fila

    De conversin

    De carcter

    Numricas

    De fecha

    Generales Funciones deuna sola fila

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Funciones de Carcter

    Funcionesde carcter

    LOWERUPPERINITCAP

    CONCATSUBSTRLENGTHINSTRLPAD | RPADTRIMREPLACE

    Funciones de manipulacinde maysculas/minsculas

    Funciones de manipulacinde caracteres

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Funcionesde carcter

    LOWERUPPERINITCAP

    CONCATSUBSTRLENGTHINSTRLPAD | RPADTRIMREPLACE

    Funciones de manipulacinde maysculas/minsculas

    Funciones de manipulacinde caracteres

    Funciones de Carcter

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Funciones de Manipulacin de Maysculas/Minsculas

    Estas funciones convierten en maysculas y minsculas las cadenas de caracteres:

    sql course LOWER('SQL Course')

    Sql Course INITCAP('SQL Course') SQL COURSE UPPER('SQL Course')

    Resultado Funcin

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT employee_id, last_name, department_id FROM employees WHERE LOWER(last_name) = 'higgins';

    Uso de Funciones de Manipulacin de Maysculas/Minsculas

    Muestre el nmero de empleado, nombre y nmero de departamento del empleado Higgins:

    SELECT employee_id, last_name, department_id FROM employees WHERE last_name = 'higgins'; no rows selected

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Funciones de Manipulacin de Caracteres

    Estas funciones manipulan cadenas de caracteres:

    BLACK and BLUEREPLACE('JACK and JUE','J','BL')

    10LENGTH('HelloWorld')6INSTR('HelloWorld', 'W')*****24000LPAD(salary,10,'*')24000*****RPAD(salary, 10, '*')

    HelloWorldCONCAT('Hello', 'World')

    elloWorldTRIM('H' FROM 'HelloWorld')

    HelloSUBSTR('HelloWorld',1,5)

    ResultadoFuncin

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT employee_id, CONCAT(first_name, last_name) NAME, job_id, LENGTH (last_name), INSTR(last_name, 'a') "Contains 'a'?" FROM employees WHERE SUBSTR(job_id, 4) = 'REP';

    Uso de Funciones de Manipulacin de Caracteres

    2

    31 2

    1

    3

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Funciones Numricas

    ROUND: Redondea el valor al decimal especificado TRUNC: Trunca el valor al decimal especificado MOD: Devuelve el resto de la divisin

    100MOD(1600, 300)

    45.93ROUND(45.926, 2)45.92TRUNC(45.926, 2)

    ResultadoFuncin

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT ROUND(45.923,2), ROUND(45.923,0), ROUND(45.923,-1) FROM DUAL;

    Uso de la Funcin ROUND

    DUAL es una tabla ficticia que puede utilizar para ver losresultados de funciones y clculos.

    3

    31 2

    1 2

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Uso de la Funcin TRUNC

    SELECT ROUND(45.923,2), ROUND(45.923), ROUND(45.923,-1) FROM DUAL;

    3

    31 2

    1 2

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, salary, MOD(salary, 5000) FROM employees WHERE job_id = 'SA_REP';

    Uso de la Funcin MOD

    Para todos los empleados con cargo de representante de ventas, calcule el resto del salario una vez dividido por 5.000.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, hire_date FROM employees WHERE hire_date < '01-FEB-88';WHERE hire_date < '01-FEB-88';

    Trabajo con Fechas

    La base de datos Oracle almacena fechas en un formato numrico interno: siglo, ao, mes, da, horas, minutos y segundos.

    El formato de visualizacin de fecha por defecto esDD-MON-RR. Le permite especificar fechas del siglo XXI en el

    siglo XX especificando slo los dos ltimos dgitos del ao

    Le permite almacenar fechas del siglo XX en elsiglo XXI de la misma manera

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Trabajo con Fechas

    SYSDATE es una funcin que devuelve: Fecha Hora

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Aritmtica de Fechas

    Sume o reste un nmero a una fecha para obtener un valor de fecha resultante.

    Reste dos fechas para calcular el nmero de das entre dichas fechas.

    Sume horas a una fecha dividiendo el nmero de horas entre 24.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS FROM employees WHERE department_id = 90 ;

    Uso de Operadores Aritmticoscon Fechas

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Funciones de Fecha

    Da siguiente a la fecha especificadaNEXT_DAYltimo da del mesLAST_DAYRedondea la fechaROUNDTrunca la fechaTRUNC

    Nmero de meses entre dos fechasMONTHS_BETWEENAgrega meses de calendario a una fechaADD_MONTHS

    ResultadoFuncin

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Uso de Funciones de Fecha

    '08-SEP-95'NEXT_DAY ('01-SEP-95','FRIDAY')'28-FEB-95'LAST_DAY ('01-FEB-95')

    19.6774194MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')

    '11-JUL-94'ADD_MONTHS ('11-JAN-94',6)

    ResultadoFuncin

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Uso de Funciones de Fecha

    Supongamos que SYSDATE = '25-JUL-03':

    01-JUL-03TRUNC(SYSDATE ,'MONTH')01-JAN-03TRUNC(SYSDATE ,'YEAR')

    01-AUG-03ROUND(SYSDATE,'MONTH')01-JAN-04ROUND(SYSDATE ,'YEAR')

    ResultadoFuncin

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Prctica 3: Visin General de la Parte 1

    Esta prctica cubre los temas siguientes: Escritura de una consulta que muestre la fecha

    actual Creacin de consultas que requieren el uno de

    funciones numricas, de carcter y de fecha Realizacin de clculos de aos y meses de

    servicio de un empleado

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Funciones de Conversin

    Conversin de tiposde datos implcita

    Conversin de tiposde datos explcita

    Conversin detipos de datos

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Conversin de Tipos de Datos Implcita

    Para las asignaciones, Oracle Server puede convertir automticamente:

    VARCHAR2NUMBERVARCHAR2DATE

    NUMBERVARCHAR2 o CHARDATEVARCHAR2 o CHAR

    ADe

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Conversin de Tipos de Datos Implcita

    Para la evaluacin de expresiones, Oracle Server puede convertir automticamente:

    NUMBERVARCHAR2 o CHARDATEVARCHAR2 o CHAR

    ADe

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Conversin de Tipos de Datos Explcita

    NUMBER CHARACTER

    TO_CHAR

    TO_NUMBER

    DATE

    TO_CHAR

    TO_DATE

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Conversin de Tipos de Datos Explcita

    NUMBER CHARACTER

    TO_CHAR

    TO_NUMBER

    DATE

    TO_CHAR

    TO_DATE

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Conversin de Tipos de Datos Explcita

    NUMBER CHARACTER

    TO_CHAR

    TO_NUMBER

    DATE

    TO_CHAR

    TO_DATE

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Uso de la Funcin TO_CHAR con Fechas

    El modelo de formato: Debe ir entre comillas simples Es sensible a maysculas/minsculas Puede incluir cualquier elemento de formato de

    fecha vlido Tiene un elemento fm para eliminar espacios en

    blanco de relleno o suprimir ceros iniciales Est separado del valor de fecha por una coma

    TO_CHAR(date, 'format_model')

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Elementos del Modelo de Formato de Fecha

    Abreviatura de tres letras del da de la semanaDYNombre completo del da de la semanaDAY

    Valor de dos dgitos para el mesMMNombre completo del mesMONTHAbreviatura de tres letras del mesMON

    Da del mes con nmerosDD

    Ao completo con nmerosYYYYNombre completo de ao con letras (en ingls)YEAR

    ResultadoElemento

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Elementos del Modelo de Formato de Fecha

    Los elementos horarios formatean la parte de hora de la fecha:

    Agregue cadenas de caracteres ponindolas entre comillas dobles:

    Utilice sufijos para escribir el nombre completo de los nmeros:

    DD "of" MONTH 12 of OCTOBER

    ddspth fourteenth

    HH24:MI:SS AM 15:45:32 PM

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, TO_CHAR(hire_date, 'fmDD Month YYYY') AS HIREDATE FROM employees;

    Uso de la Funcin TO_CHAR con Fechas

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Uso de la Funcin TO_CHAR con Nmeros

    stos son algunos de los elementos de formato que se pueden utilizar con la funcin TO_CHAR para mostrar un valor numrico como carcter:

    Imprime un punto decimal.Imprime una coma como indicador de miles,

    Coloca un signo de dlar flotante$Utiliza el smbolo de divisa local flotanteL

    Representa un nmero9Muestra ceros0

    ResultadoElemento

    TO_CHAR(number, 'format_model') ddspth

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT TO_CHAR(salary, '$99,999.00') SALARY FROM employees WHERE last_name = 'Ernst';

    Uso de la Funcin TO_CHAR con Nmeros

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Uso de las Funciones TO_NUMBER y TO_DATE

    Convierta una cadena de caracteres en formato numrico mediante la funcin TO_NUMBER:

    Convierta una cadena de caracteres en formato de fecha mediante la funcin TO_DATE:

    Estas funciones tienen un modificador fx. Este modificador especifica la correspondencia exacta del argumento de carcter y el modelo de formato de fecha de una funcin TO_DATE.

    TO_NUMBER(char[, 'format_model'])

    TO_DATE(char[, 'format_model'])

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Uso de las Funciones TO_NUMBER y TO_DATE

    Convierta una cadena de caracteres en formato numrico mediante la funcin TO_NUMBER:

    Convierta una cadena de caracteres en formato de fecha mediante la funcin TO_DATE:

    Estas funciones tienen un modificador fx. Este modificador especifica la correspondencia exacta del argumento de carcter y el modelo de formato de fecha de una funcin TO_DATE

    TO_NUMBER(char[, 'format_model'])

    TO_DATE(char[, 'format_model'])

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Formato de Fecha RR

    Ao Actual1995199520012001

    Fecha Especificada27-OCT-9527-OCT-1727-OCT-1727-OCT-95

    Formato RR1995201720171995

    Formato YY1995191720172095

    Si los dos dgitos del aoactual son:

    049

    049 5099

    5099

    La fecha devuelta est en el siglo actualLa fecha devuelta est en el siglo posterior al actual

    La fecha devuelta est en el siglo anterior al actualLa fecha devuelta est en el siglo actual

    Si los dos dgitos especificados del ao son:

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Ejemplo de Formato de Fecha RR

    Para encontrar empleados contratados antes de 1990, utilice el formato RR, que produce los mismos resultados si el comando se ejecuta en 1999 o ahora:

    SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-YYYY') FROM employees WHERE hire_date < TO_DATE('01-Jan-90','DD-Mon-RR');

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Anidamiento de Funciones

    Las funciones de una sola fila se pueden anidar hasta cualquier nivel.

    Las funciones anidadas se evalan desde el nivel ms profundo al menos profundo.

    F3(F2(F1(col,arg1),arg2),arg3)Paso1=Resultado1

    Paso2=Resultado2

    Paso3=Resultado3

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, UPPER(CONCAT(SUBSTR (LAST_NAME, 1, 8), '_US')) FROM employees WHERE department_id = 60;

    Anidamiento de Funciones

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Funciones Generales

    Estas funciones pueden utilizar cualquier tipo de datos y estn relacionadas con el uso de valores nulos: NVL (expr1, expr2) NVL2 (expr1, expr2, expr3) NULLIF (expr1, expr2) COALESCE (expr1, expr2, ..., exprn)

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Funcin NVL

    Convierte un valor nulo en un valor real: Los tipos de datos que se pueden utilizar son

    fecha, carcter y numrico. Los tipos de datos deben corresponder:

    NVL(commission_pct,0) NVL(hire_date,'01-JAN-97') NVL(job_id,'No Job Yet')

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, salary, NVL(commission_pct, 0), (salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL FROM employees;

    Uso de la Funcin NVL

    1

    1 2

    2

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, salary, commission_pct, NVL2(commission_pct, 'SAL+COMM', 'SAL') income FROM employees WHERE department_id IN (50, 80);

    Uso de la Funcin NVL2

    1 2

    21

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT first_name, LENGTH(first_name) "expr1", last_name, LENGTH(last_name) "expr2", NULLIF(LENGTH(first_name), LENGTH(last_name)) result FROM employees;

    Uso de la Funcin NULLIF

    1

    23

    1 2 3

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Uso de la Funcin COALESCE

    La ventaja de la funcin COALESCE sobre la funcin NVL es que la primera puede tomar varios valores alternativos.

    Si la primera expresin no es nula, la funcin COALESCE devuelve esa expresin; en caso contrario, realiza una fusin (COALESCE) de las expresiones restantes.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, COALESCE(manager_id,commission_pct, -1) comm FROM employees ORDER BY commission_pct;

    Uso de la Funcin COALESCE

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Expresiones Condicionales

    Permiten utilizar la lgica IF-THEN-ELSE dentro de una sentencia SQL

    Puede usar dos mtodos: Expresin CASE Funcin DECODE

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Expresin CASE

    Facilita las consultas condicionales realizando el trabajo de una sentencia IF-THEN-ELSE:

    CASE expr WHEN comparison_expr1 THEN return_expr1 [WHEN comparison_expr2 THEN return_expr2 WHEN comparison_exprn THEN return_exprn ELSE else_expr]END

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, job_id, salary CASE job_id WHEN 'IT_PROG' THEN 1.10*salary WHEN 'ST_CLERK' THEN 1.15*salary WHEN 'SA_REP' THEN 1.20*salary ELSE salary END "REVISED_SALARY" FROM employees;

    Uso de la Expresin CASE

    Facilita las consultas condicionales realizando el trabajo de una sentencia IF-THEN-ELSE:

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Funcin DECODE

    Facilita las consultas condicionales realizando el trabajo de una expresin CASE o de una sentenciaIF-THEN-ELSE:DECODE(col|expression, search1, result1 [, search2, result2,...,] [, default])

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, job_id, salary DECODE(job_id, 'IT_PROG', 1.10*salary, 'ST_CLERK', 1.15*salary, 'SA_REP', 1.20*salary, salary) REVISED_SALARY FROM employees;

    Uso de la Funcin DECODE

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, salary, DECODE (TRUNC(salary/2000, 0), 0, 0.00, 1, 0.09, 2, 0.20, 3, 0.30, 4, 0.40, 5, 0.42, 6, 0.44, 0.45) TAX_RATE FROM employees WHERE department_id = 80;

    Uso de la Funcin DECODE

    Muestre la tasa de impuestos aplicable para cada empleado del departamento 80:

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Resumen

    En esta leccin ha aprendido a: Realizar clculos en datos mediante funciones Modificar elementos de datos individuales

    mediante funciones Manipular la salida para grupos de filas mediante

    funciones Modificar formatos de fecha para su visualizacin

    mediante funciones Convertir tipos de datos de columnas mediante

    funciones Utilizar funciones NVL Utilizar la lgica IF-THEN-ELSE

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Prctica 3: Visin General de la Parte 2

    Esta prctica cubre los temas siguientes: Creacin de consultas que requieren el uno de

    funciones numricas, de carcter y de fecha Uso de concatenacin con funciones Escritura de consultas sensibles a

    maysculas/minsculas para probar la utilidad de las funciones de carcter

    Realizacin de clculos de aos y meses de servicio de un empleado

    Determinacin de la fecha de revisin para un empleado

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • 4Copyright 2004, Oracle. Todos los derechos reservados.

    Informacin sobre Datos Agregadosmediante las Funciones de Grupo

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Objetivos

    Al finalizar esta leccin, debera estar capacitado para: Identificar las funciones de grupo disponibles Describir el uso de las funciones de grupo Agrupar datos mediante la clusula GROUP BY Incluir o excluir filas agrupadas utilizando la

    clusula HAVING

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Qu son las Funciones de Grupo?

    Las funciones de grupo operan en juegos de filas para dar un resultado por grupo.

    EMPLOYEES

    Salario mximo en la tabla EMPLOYEES

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Tipos de Funciones de Grupo

    AVG COUNT MAX MIN STDDEV SUM VARIANCE

    Funcionesde grupo

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT [column,] group_function(column), ... FROM table [WHERE condition][GROUP BY column] [ORDER BY column];

    Funciones de Grupo: Sintaxis

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT AVG(salary), MAX(salary), MIN(salary), SUM(salary) FROM employees WHERE job_id LIKE '%REP%';

    Uso de las Funciones AVG y SUM

    Puede utilizar AVG y SUM para datos numricos.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT MIN(hire_date), MAX(hire_date) FROM employees;

    Uso de las Funciones MIN y MAX

    Puede utilizar MIN y MAX para tipos de datos numricos, de carcter y de fecha.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    COUNT(*) devuelve el nmero de filas en una tabla:

    COUNT(expr) devuelve el nmero de filas con valores no nulos para expr: SELECT COUNT(commission_pct) FROM employees WHERE department_id = 80;

    SELECT COUNT(*) FROM employees WHERE department_id = 50;

    Uso de la Funcin COUNT

    1

    2

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT COUNT(DISTINCT department_id) FROM employees;

    Uso de la Palabra Clave DISTINCT

    COUNT(DISTINCT expr) devuelve el nmero de valores no nulos distintos de expr.

    Para mostrar el nmero de valores de departamento distintos en la tabla EMPLOYEES:

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Las funciones de grupo ignoran los valores nulos en la columna:

    La funcin NVL fuerza a las funciones de grupo a incluir valores nulos:

    SELECT AVG(commission_pct) FROM employees;

    SELECT AVG(NVL(commission_pct, 0)) FROM employees;

    Funciones de Grupo y Valores Nulos

    1

    2

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Creacin de Grupos de Datos

    EMPLOYEES

    4400

    9500

    3500

    6400

    10033

    Salario mediode la tablaEMPLOYEESpara cadadepartamento

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Puede dividir las filas de una tabla en grupos ms pequeos mediante la clusula GROUP BY.

    Creacin de Grupos de Datos:Sintaxis de la Clusula GROUP BY

    SELECT column, group_function(column) FROM table [WHERE condition] [GROUP BY group_by_expression] [ORDER BY column];

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT department_id, AVG(salary) FROM employees GROUP BY department_id ;

    Uso de la Clusula GROUP BY

    Todas las columnas de la lista SELECT que no sean funciones de grupo se deben incluir en la clusula GROUP BY.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    La columna GROUP BY no tiene que estar en la lista SELECT. SELECT AVG(salary) FROM employees GROUP BY department_id ;

    Uso de la Clusula GROUP BY

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Agrupacin por Ms de Una Columna

    EMPLOYEES

    Sume lossalarios de

    la tablaEMPLOYEES para

    cada puesto,agrupados pordepartamento

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT department_id dept_id, job_id, SUM(salary) FROM employees GROUP BY department_id, job_id;

    Uso de la Clusula GROUP BY en Varias Columnas

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Consultas Ilegales que Utilizan Funciones de Grupo

    Cualquier columna o expresin de la lista SELECT que no sea una funcin de agregacin se debe incluir en la clusula GROUP BY: SELECT department_id, COUNT(last_name) FROM employees;

    SELECT department_id, COUNT(last_name) * ERROR at line 1: ORA-00937: not a single-group group function

    Falta una columna en la clusula GROUP BY

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Consultas Ilegales que Utilizan Funciones de Grupo

    No puede utilizar la clusula WHERE para restringir grupos. Utilice la clusula HAVING para restringir grupos. No puede utilizar funciones de grupo en la clusula WHERE. SELECT department_id, AVG(salary) FROM employees WHERE AVG(salary) > 8000 GROUP BY department_id ; WHERE AVG(salary) > 8000 * ERROR at line 3: ORA-00934: group function is not allowed here

    No se puede utilizar la clusula WHERE para restringir grupos

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Restriccin de Resultados de Grupos

    EMPLOYEES

    Salariomximo por

    departamentocuando essuperior a

    10.000 dlares

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT column, group_function FROM table [WHERE condition] [GROUP BY group_by_expression] [HAVING group_condition] [ORDER BY column];

    Restriccin de Resultados de Gruposcon la Clusula HAVING

    Si se utiliza la clusula HAVING, Oracle Server restringe los grupos as:1. Se agrupan las filas. 2. Se aplica la funcin de grupo. 3. Se muestran los grupos que satisfacen la clusula

    HAVING.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT department_id, MAX(salary) FROM employees GROUP BY department_id HAVING MAX(salary)>10000 ;

    Uso de la Clusula HAVING

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT job_id, SUM(salary) PAYROLL FROM employees WHERE job_id NOT LIKE '%REP%' GROUP BY job_id HAVING SUM(salary) > 13000 ORDER BY SUM(salary);

    Uso de la Clusula HAVING

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT MAX(AVG(salary)) FROM employees GROUP BY department_id ;

    Anidamiento de Funciones de Grupo

    Muestre al salario medio mximo:

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT column, group_function FROM table [WHERE condition] [GROUP BY group_by_expression] [HAVING group_condition] [ORDER BY column];

    Resumen

    En esta leccin ha aprendido a: Utilizar las funciones de grupo COUNT, MAX, MIN y AVG Escribir consultas que utilicen la clusula GROUP BY Escribir consultas que utilicen la clusula HAVING

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Prctica 4: Visin General

    Esta prctica cubre los temas siguientes: Escritura de consultas que utilicen las funciones de

    grupo Agrupacin por filas para obtener ms de un resultado Restriccin de grupos mediante la clusula HAVING

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • 5Copyright 2004, Oracle. Todos los derechos reservados.

    Visualizacin de Datos de Varias Tablas

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Objetivos

    Al finalizar esta leccin, debera estar capacitado para: Escribir sentencias SELECT para acceder a datos

    de ms de una tabla mediante las uniones igualitarias y no igualitarias

    Unir una tabla a s misma mediante una autounin Ver datos que generalmente no cumplen una

    condicin de unin utilizando uniones externas Generar un producto cartesiano de todas las filas

    de dos o ms tablas

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Obtencin de Datos de Varias Tablas

    EMPLOYEES DEPARTMENTS

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Tipos de Uniones

    Las uniones compatibles con el estndar SQL:1999 son: Uniones cruzadas Uniones naturales Clusula USING Uniones externas completas (o de dos lados) Condiciones de unin arbitrarias para uniones

    externas

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Unin de Tablas mediante la Sintaxis SQL:1999

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

    SELECT table1.column, table2.column FROM table1 [NATURAL JOIN table2] | [JOIN table2 USING (column_name)] | [JOIN table2 ON (table1.column_name = table2.column_name)]| [LEFT|RIGHT|FULL OUTER JOIN table2 ON (table1.column_name = table2.column_name)]| [CROSS JOIN table2];

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Creacin de Uniones Naturales

    La clusula NATURAL JOIN se basa en todas las columnas de las dos tablas que tienen el mismo nombre.

    Selecciona filas de las dos tablas que tienen valores iguales en todas las columnas correspondientes.

    Si las columnas que tienen los mismos nombres tienen tipos de datos diferentes, se devuelve un error.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT department_id, department_name, location_id, city FROM departments NATURAL JOIN locations ;

    Recuperacin de Registros con Uniones Naturales

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Creacin de Uniones con la Clusula USING

    Si hay varias columnas que tienen los mismos nombres pero los tipos de datos no se corresponden, la clusula NATURAL JOIN se puede modificar mediante la clusula USING para especificar las columnas que se deben utilizar para una unin igualitaria.

    Utilice la clusula USING para asignar slo una columna cuando corresponde a ms de una columna.

    No utilice un alias o un nombre de tabla en las columnas a las que se hace referencia.

    Las clusulas NATURAL JOIN y USING se excluyen mutuamente.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Unin de Nombres de Columna

    EMPLOYEES DEPARTMENTS

    Clave ajena Clave primaria

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT employees.employee_id, employees.last_name, departments.location_id, department_id FROM employees JOIN departments USING (department_id) ;

    Recuperacin de Registros con la Clusula USING

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Cualificacin de Nombres de Columna Ambiguos

    Utilice prefijos de tabla para cualificar nombres de columna que estn en varias tablas.

    Utilice prefijos de tabla para mejorar el rendimiento. Utilice alias de columna para distinguir columnas

    que tengan nombres idnticos pero que residan en tablas diferentes.

    No utilice alias en columnas que estn identificadas en la clusula USING y que se muestren en cualquier otra parte de la sentencia SQL.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT e.employee_id, e.last_name, d.location_id, department_id FROM employees e JOIN departments d USING (department_id);

    Uso de Alias de Tabla

    Utilice alias de tabla para simplificar las consultas. Utilice alias de tabla para mejorar el rendimiento.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Creacin de Uniones con la Clusula ON

    La condicin de unin para la unin natural es bsicamente una unin igualitaria de todas las columnas con el mismo nombre.

    Utilice la clusula ON para especificar condiciones arbitrarias o para especificar las columnas que se unirn.

    La condicin de unin se separa de otras condiciones de bsqueda.

    La clusula ON facilita la comprensin del cdigo.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_id FROM employees e JOIN departments d ON (e.department_id = d.department_id);

    Recuperacin de Registros con la Clusula ON

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Autouniones mediante la Clusula ON

    MANAGER_ID en la tabla WORKER es igual que EMPLOYEE_ID en la tabla MANAGER.

    EMPLOYEES (WORKER) EMPLOYEES (MANAGER)

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Autouniones mediante la Clusula ON

    SELECT e.last_name emp, m.last_name mgr FROM employees e JOIN employees m ON (e.manager_id = m.employee_id);

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_id FROM employees e JOIN departments d ON (e.department_id = d.department_id) AND e.manager_id = 149 ;

    Aplicacin de Condiciones Adicionales a una Unin

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT employee_id, city, department_name FROM employees e JOIN departments d ON d.department_id = e.department_id JOIN locations l ON d.location_id = l.location_id;

    Creacin de Uniones en Tres Sentidos con la Clusula ON

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Uniones No Igualitarias

    EMPLOYEES JOB_GRADES

    El salario de la tablaEMPLOYEES debe estarentre el salario ms bajoy el ms alto de la tablaJOB_GRADES.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT e.last_name, e.salary, j.grade_level FROM employees e JOIN job_grades j ON e.salary BETWEEN j.lowest_sal AND j.highest_sal;

    Recuperacin de Registros con Uniones No Igualitarias

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Uniones Externas

    EMPLOYEESDEPARTMENTS

    No hay empleados en el departamento 190.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Uniones INNER frente a OUTER

    En SQL:1999, la unin de dos tablas que devuelve slo filas con correspondencia se denomina unin interna.

    Una unin entre dos tablas que devuelve los resultados de la unin interna y las filas sin correspondencia de las tablas a la izquierda (o derecha) se denomina unin externa izquierda (o derecha).

    Una unin entre dos tablas que devuelve los resultados de la unin interna y los resultados de una unin izquierda y derecha es una unin externa completa.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT e.last_name, e.department_id, d.department_name FROM employees e LEFT OUTER JOIN departments d ON (e.department_id = d.department_id) ;

    LEFT OUTER JOIN

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT e.last_name, e.department_id, d.department_name FROM employees e RIGHT OUTER JOIN departments d ON (e.department_id = d.department_id) ;

    RIGHT OUTER JOIN

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT e.last_name, d.department_id, d.department_name FROM employees e FULL OUTER JOIN departments d ON (e.department_id = d.department_id) ;

    FULL OUTER JOIN

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Productos Cartesianos

    Se forma un producto cartesiano cuando: Se omite una condicin de unin Una condicin de unin no es vlida Todas las filas de la primera tabla se unen a todas

    las filas de la segunda tabla Para evitar un producto cartesiano, incluya

    siempre una condicin de unin vlida.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Generacin de Productos Cartesianos

    Producto cartesiano: 20 x 8 = 160 filas

    EMPLOYEES (20 filas) DEPARTMENTS (8 filas)

  • Copyright 2004, Oracle. Todos los derechos reservados.

    SELECT last_name, department_name FROM employees CROSS JOIN departments ;

    Creacin de Uniones Cruzadas

    La clusula CROSS JOIN genera el producto combinado de dos tablas.

    Tambin se denomina un producto cartesiano entre las dos tablas.

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Resumen

    En esta leccin, ha aprendido a utilizar uniones para mostrar datos de varias tablas mediante: Uniones igualitarias Uniones no igualitarias Uniones externas Autouniones Uniones cruzadas Uniones naturales Uniones externas completas (o de dos lados)

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Prctica 5: Visin General

    Esta prctica cubre los temas siguientes: Unin de tablas mediante una unin igualitaria Realizacin de uniones externas y autouniones Agregacin de condiciones

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • Copyright 2004, Oracle. Todos los derechos reservados.

  • 6Copyright 2004, Oracle. Todos los derechos reservados.

    Uso de Subconsultas para Resolver Consultas

  • Copyright 2004, Oracle. Todos los derechos reservados.

    Objetivos

    Al finalizar esta leccin, debera estar capacitado para: Definir subconsultas Describir los tipos de problemas que pueden

    resolver las sub