Manual.completo.oracle.9i

download Manual.completo.oracle.9i

If you can't read please download the document

Transcript of Manual.completo.oracle.9i

  • 1. SQL & PL/SQL Oracle 9i Elaborado por: Gustavo Coronel Febrero - 2005

2. ORACLE 9i SQL & PL/SQL Esta obra es de uso exclusivo del CEPS-UNI para el curso ORACLE 9i Nivel Inicial, esta prohibido su uso para otros fines. Derechos Reservados 2004 Eric Gustavo Coronel Castillo Primera Edicin 3. Presentacin Oracle es sin duda una de las mejores bases de datos que tenemos en el mercado, tiene muchas caractersticas que nos garantizan la seguridad e integridad de los datos; que las transacciones se efectuarn de manera correcta, sin causar inconsistencias; desarrollo en la capa de datos utilizando: procedimientos, funciones, desencadenantes, y paquetes; y el procesamiento de grandes volmenes de informacin estar tambin asegurada.Este manual esta compuesto por 12 lecciones, donde veremos de una manera prctica el lenguaje SQL y la programacin con PL/SQL, no pretende ser un texto de consulta terica, sino ms bien, una gua de prctica de laboratorio.Esta manual lo desarrolle para que sea usado exclusivamente en el curso ORACLE 9i Nivel Inicial que el CEPS-UNI ofrece en forma libre como parte de la carrera tcnica ORACLE DATABASE ADMINISTRATOR.Sera ingrato no mencionar los aportes de mis colegas Sergio Matsukawa, Ricardo Marcelo, Fortunato Veliz y Hugo Valencia, sin duda alguna que muchas de sus ideas y ejemplos estn plasmados en este manual.Como parte de mi esfuerzo por escribir mejores libros y manuales les agradecera me enven sus comentarios a mi correo: [email protected], me sera de mucha utilidad conocer sus opiniones para poder mejorar mis futuras publicaciones.Eric Gustavo Coronel Castillo 4. Contenido Leccin 01: Aspectos Generales de Oracle 9iIntroduccin ......................................................................................................................................... 2 Arquitectura de un servidor Oracle 9i .................................................................................................. 3 La instancia de Oracle ......................................................................................................................... 3 Conexin con una instancia de Oracle ................................................................................................ 6 Conceptos generales de almacenamiento......................................................................................... 11 Leccin 02: Esquemas Ejemplos de la Base de DatosEsquema de Base de Datos ................................................................................................................ 2 Esquema SCOTT ................................................................................................................................2 Esquema HR .......................................................................................................................................3 Consultar la Estructura de una Tabla .................................................................................................. 5 Consultar el Contenido de una Tabla ..................................................................................................5 Leccin 03: Sentencias SQL Select BsicasSQL Fundamentos............................................................................................................................... 2 Escribiendo Consultas Simples ........................................................................................................... 5 Otros Operadores .............................................................................................................................. 11 Ordenando Filas ................................................................................................................................ 13 Usando Expresiones.......................................................................................................................... 15 Leccin 04: Funciones Simples de FilaFunciones para Valores Nulos............................................................................................................. 2 Funciones para Caracteres ................................................................................................................. 3 Funciones Numricas .......................................................................................................................... 5 Funciones de Fecha ............................................................................................................................ 6 Funciones de Conversin .................................................................................................................... 8 Otras Funciones ................................................................................................................................ 11 Leccin 05: Totalizando Datos y Funciones de GrupoFunciones de Grupo ............................................................................................................................ 2 GROUP BY.......................................................................................................................................... 4 HAVING............................................................................................................................................... 5 Leccin 06: Consultas MultitablasQu es un Join? ................................................................................................................................ 2 Consultas Simples ............................................................................................................................... 2 Consultas Complejas........................................................................................................................... 3 Producto Cartesiano ............................................................................................................................ 7 Combinaciones Externas..................................................................................................................... 8 Otras Consultas Multitablas............................................................................................................... 11 Operadores de Conjuntos.................................................................................................................. 12I 5. Leccin 07: SubconsultasSubconsultas de Solo una Fila............................................................................................................2 Subconsultas de Mltiples Filas .......................................................................................................... 2 Subconsultas Correlacionadas............................................................................................................ 3 Subconsultas Escalares ......................................................................................................................3 Leccin 08: Modificando DatosInsertando Filas................................................................................................................................... 2 Modificando Datos............................................................................................................................... 5 Eliminando Filas .................................................................................................................................. 9 Transacciones ................................................................................................................................... 12 Leccin 09: Creacin de un Esquema de Base de DatosCaso a Desarrollar .............................................................................................................................. 2 Creacin del Usuario para el Esquema............................................................................................... 3 Creacin de Tablas ............................................................................................................................. 4 Restriccin Primary Key (PK) .............................................................................................................. 6 Restriccin Foreign Key (FK) .............................................................................................................. 8 Restriccin Default (Valores por Defecto) ......................................................................................... 10 Restriccin NOT NULL (Nulidad de una Columna) ........................................................................... 11 Restriccin Unique (Valores nicos)................................................................................................. 12 Restriccin Check (Reglas de Validacin) ........................................................................................ 13 Asignar Privilegios a Usuarios........................................................................................................... 14 Leccin 10: PL/SQL - FundamentosIntroduccin a PL/SQL ........................................................................................................................ 2 Tipos de Datos y Variables ................................................................................................................. 4 Estructuras de Control......................................................................................................................... 6 Bucles ............................................................................................................................................... 11 Otros Elementos de Programacin ................................................................................................... 15 Leccin 11: PL/SQL Trabajando con DatosRegistros ............................................................................................................................................. 2 SQL en PL/SQL................................................................................................................................... 4 Cursores............................................................................................................................................ 12 Leccin 12: PL/SQL Tpicos AdicionalesTratamiento de Errores ....................................................................................................................... 2 Procedimientos ................................................................................................................................... 8 Funciones............................................................................................................................................ 9 Parmetros........................................................................................................................................ 10 Paquetes ........................................................................................................................................... 12 Desencadenantes ............................................................................................................................. 14II 6. Oracle 9i Bsico PL/SQLLeccin 01 Aspectos Generales de Oracle 9i ContenidoIntroduccin................................................................................................................2 Qu es una base de datos? ...................................................................................................... 2 Qu es un DBMS? .................................................................................................................... 2 Tipos de bases de datos ............................................................................................................. 2 Arquitectura de un servidor Oracle 9i .........................................................................3 Esquema General ....................................................................................................................... 3 La instancia de Oracle................................................................................................3 Procesos de fondo ...................................................................................................................... 4 Area Global del Sistema (SGA)................................................................................................... 4 La base de datos ......................................................................................................................... 5 Estructuras Adicionales ............................................................................................................... 5 Conexin con una instancia de Oracle.......................................................................6 Verificacin de los servicios ........................................................................................................ 6 Esquema General ....................................................................................................................... 7 Conexin local utilizando SQL Plus............................................................................................. 8Vistas del Sistema ................................................................................................................. 9Comandos SQL/Plus ............................................................................................................. 9 Conexin remota utilizando SQL Plus ....................................................................................... 10 Conceptos generales de almacenamiento ...............................................................11 TableSpace ............................................................................................................................... 11 DataFile ..................................................................................................................................... 12 7. Leccin 01 CEPS - UNIAspectos Generales de Oracle 9i IntroduccinQu es una base de datos?Coleccin o depsito de datos integrados, almacenados en soporte secundario (no voltil) y con redundancia controlada. La estructura de la base de datos debe responder a las necesidades del mundo real, en cuanto a sus interrelaciones y restricciones. Qu es un DBMS?Es el software que contiene una coleccin ordenada y sincronizada de programas, procedimientos y lenguajes, que permiten gestionar una base de datos. Tipos de bases de datosDesde el punto de vista de organizacin lgica: a. Jerrquicas b. Relacinales (Oracle, SQL Server, DB2, Sybase, etc.) Desde el punto de vista de nmeros de usuarios: a. Mono usuarios b. Multiusuarios Eric Gustavo Coronel Castillo ([email protected]) Pg. 2 de 12 8. Leccin 01 CEPS - UNIAspectos Generales de Oracle 9i Arquitectura de un servidor Oracle 9iEsquema GeneralPor cada instancia de Oracle se tiene una sola base de datosEn un servidor se pueden crear varias instancias, pero se recomienda solo una, por que cada instancia consume muchos recursos. La instancia de Oracle Esta compuesta por procesos de fondo y un rea de memoria compartida denominada SYSTEM GLOBAL AREA (SGA). El SGA es utilizado para el intercambio de datos entre el servidor y las aplicaciones cliente. Una instancia de Oracle solo puede abrir una sola base de datos a la vez. Eric Gustavo Coronel Castillo ([email protected]) Pg. 3 de 12 9. Leccin 01 CEPS - UNIAspectos Generales de Oracle 9i Procesos de fondoPMON Process Monitor. Monitorea los procesos de los usuarios, en caso que la conexin falle.SMON System Monitor. Este proceso es el encargado de recuperar la instancia y abrir la basede datos, en caso que ocurra alguna falla.CKPT CheckPoint Process. Sintoniza las tareas de grabacin en la base de datos.DBWR Database Writer. Escribe los bloques de datos de la memoria a la base de datos.LGWR Log Writer. Graba los bloques del Redo Log del buffer a los archivos Redo Log File.Area Global del Sistema (SGA) Library Cache Almacena las sentencias SQL ms recientes en memoria.Database Dictionary Buffer para el diccionario de datos. Tablas, columnas, tipos, ndices. CacheDatabaseBuffer de la base de datos, contiene bloques de datos que han sido Buffer Cachecargados desde los Data File.Redo LogBloques de datos que han sido actualizados. Buffer Cache Eric Gustavo Coronel Castillo ([email protected]) Pg. 4 de 12 10. Leccin 01 CEPS - UNI Aspectos Generales de Oracle 9i La base de datos Control File Contiene informacin para mantener y controlar la integridad de la base dedatos.Data Files Son los archivos donde se almacenan los datos de las aplicaciones.Redo Log Files Almacena los cambios hechos en la base de datos con propsito de recuperarlosen caso de falla.Estructuras AdicionalesArchivo deContiene parmetros y valores que definen las caractersticas de la instancia y de Parmetrosla base de datos, por ejemplo contiene parmetros que dimensionan el SGA.Archivo deSe utiliza para validar al usuario que puede bajar y subir la instancia de Oracle. PasswordArchivosLos Archived Log Files son copias fuera de lnea de los archivos Redo Log Files Archivedque son necesarios para el proceso de Recovery en caso de falla del medio de Log Files almacenamiento. Eric Gustavo Coronel Castillo ([email protected]) Pg. 5 de 12 11. Leccin 01 CEPS - UNI Aspectos Generales de Oracle 9i Conexin con una instancia de OracleVerificacin de los serviciosDe la relacin de servicios creados durante la instalacin de Oracle, por ahora nos interesa bsicamente dos: El servicio relacionado con la instancia y la base de datos, cuyo nombre tiene la siguienteestructura: OracleServiceXXX, donde XXX representa el nombre de la instancia. Por ejemplo,si la instancia tiene por nombre SIDEGCC, el servicio sera OracleServiceSIDEGCC. El servicio relacionado con la disponibilidad del servidor para el acceso remoto, el nombre deeste servicio es: OracleOraHome92TNSListener. Estos dos servicios deben estar ejecutndose, y su verificacin se puede realizar en la venta de servicios, a la que accedemos desde el Panel de control / Herramientas administrativas. Eric Gustavo Coronel Castillo ([email protected]) Pg. 6 de 12 12. Leccin 01 CEPS - UNIAspectos Generales de Oracle 9i Esquema General Proceso Programa, aplicacin herramienta que usa el usuario para iniciar un proceso de Usuario usuario y establecer una conexin.Proceso Una ves que el proceso de usuario establece la conexin, un proceso servidor es Servidoriniciado, el cual manejar las peticiones del proceso usuario. Un proceso servidor puede ser dedicado, es decir solo atiende las peticiones de un solo proceso usuario, puede se compartido, con lo cual puede atender mltiples procesos usuarios.SesinUna sesin es una conexin especfica de un usuario a un servidor Oracle. Se inicia cuando el usuario es validado por el servidor Oracle. Finaliza cuando el usuario termina la sesin en forma normal (logout) aborta la sesin. Eric Gustavo Coronel Castillo ([email protected]) Pg. 7 de 12 13. Leccin 01 CEPS - UNI Aspectos Generales de Oracle 9i Conexin local utilizando SQL PlusSQL Plus es una herramienta que permite al usuario comunicarse con el servidor, para procesar comandos SQL PL/SQL, tiene la flexibilidad de poder realizar inicio y parada (shutdown) de la base de datos. En la ventana inicial de conexin debemos ingresar el usuario y su contrasea, por ejemplo podemos usar:Usuario Contraseasystemmanagerscott tiger La pantalla de bienvenida de SQL Plus mostrar los siguientes mensajes: En estos momentos estamos listos para trabajar, por ejemplo si queremos conectarnos como scout, el comando es el siguiente:SQL> connect scott/tiger Conectado.SQL> Eric Gustavo Coronel Castillo ([email protected]) Pg. 8 de 12 14. Leccin 01 CEPS - UNI Aspectos Generales de Oracle 9iVistas del SistemaTenemos algunas vistas que podemos consultar para verificar nuestro servidor: v$instance, v$database y v$sga. Para realizar las consultas a las vistas, ejecutamos los siguientes comandos:SQL> connect system/manager Conectado.SQL> select instance_name from v$instance;INSTANCE_NAME ---------------- sidegccSQL> select name from v$database;NAME --------- DBEGCCSQL> select * from v$sga;NAMEVALUE -------------------- ---------- Fixed Size 282576 Variable Size83886080 Database Buffers 33554432 Redo Buffers 532480Comandos SQL/PlusTambin contamos con comandos SQL/Plus, algunos de ellos son:RUN Vuelve a ejecutar la ltima instruccin ejecutada.EDITEdita la ltima instruccin ejecutada.START Ejecuta las instrucciones que se encuentran en un archivo.SPOOL Enva la sesin de trabajo a un archivo. Eric Gustavo Coronel Castillo ([email protected]) Pg. 9 de 12 15. Leccin 01 CEPS - UNIAspectos Generales de Oracle 9iConexin remota utilizando SQL PlusOracle tiene su herramienta de red que permite a las aplicaciones en general conectarse a servidores Oracle. El nombre inicial de esta herramienta fue SQL*Net, luego fue renombrada con el nombre Net8, y hoy da se le conoce como Oracle Net. Para que una aplicacin pueda conectarse remotamente a un servidor Oracle, es necesario que el Proceso Escucha se encuentre ejecutndose en el servidor, especficamente el servicio OracleOraHome92TNSListener. El esquema general de la conexin remota se puede apreciar en el siguiente grfico. El proceso se describe a continuacin: 1. El cliente establece una conexin al Proceso Escucha usando el protocolo configurado yenva un paquete CONNECT. 2. El proceso escucha comprueba que el SID est definido. Si es as, generar un nuevoproceso para ocuparse de la conexin. Una conexin se establece entre el proceso escuchay el nuevo proceso del servidor para pasarle la informacin del proceso de inicializacin.Luego la conexin es cerrada. 3. El proceso del servidor enva un paquete al cliente. 4. Un nuevo paquete CONNECT es enviado al proceso servidor dedicado. 5. El proceso de servidor dedicado acepta la conexin entrante y remite un mensaje deACEPTADO al nuevo al cliente. Eric Gustavo Coronel Castillo ([email protected]) Pg. 10 de 12 16. Leccin 01 CEPS - UNI Aspectos Generales de Oracle 9i Conceptos generales de almacenamientoTableSpaceUnidad lgica en que se divide una base de datos. Es posible consultar los tablespace utilizando los siguientes comandos:SQL> select * from v$tablespace 2 order by 1; TS# NAMEINC ---------- ---------------------------------0 SYSTEMYES1 UNDOTBS1YES2 TEMPYES3 CWMLITE YES4 DRSYS YES5 EXAMPLE YES6 INDXYES7 ODM YES8 TOOLS YES9 USERS YES 10 XDB YES11 rows selected.SQL> select tablespace_name from dba_tablespaces 2 order by 1;TABLESPACE_NAME ------------------------------ CWMLITE DRSYS EXAMPLE INDX ODM SYSTEM TEMP TOOLS UNDOTBS1 USERS XDB11 rows selected. Eric Gustavo Coronel Castillo ([email protected]) Pg. 11 de 12 17. Leccin 01 CEPS - UNI Aspectos Generales de Oracle 9i DataFileEs el archivo fsico donde se almacenas los datos.SQL> column file_name format a40SQL> select tablespace_name, file_name from dba_data_files 2 order by 1;TABLESPACE_NAMEFILE_NAME ------------------------------ ---------------------------------------- CWMLITEE:ORACLEORADATADBEGCCCWMLITE01.DBF DRSYSE:ORACLEORADATADBEGCCDRSYS01.DBF EXAMPLEE:ORACLEORADATADBEGCCEXAMPLE01.DBF INDX E:ORACLEORADATADBEGCCINDX01.DBF ODME:ORACLEORADATADBEGCCODM01.DBF SYSTEM E:ORACLEORADATADBEGCCSYSTEM01.DBF TOOLSE:ORACLEORADATADBEGCCTOOLS01.DBF UNDOTBS1 E:ORACLEORADATADBEGCCUNDOTBS01.DBF USERSE:ORACLEORADATADBEGCCUSERS01.DBF XDBE:ORACLEORADATADBEGCCXDB01.DBF10 rows selected. Eric Gustavo Coronel Castillo ([email protected])Pg. 12 de 12 18. Oracle 9i Bsico PL/SQLLeccin 02Esquemas Ejemplosde la Base de Datos Contenido Esquema de Base de Datos.......................................................................................2 Esquema SCOTT .......................................................................................................2 Esquema HR ..............................................................................................................3 Consultar la Estructura de una Tabla .........................................................................5 Consultar el Contenido de una Tabla .........................................................................5 19. Leccin 02 CEPS - UNIEsquemas Ejemplos de la Base de Datos Esquema de Base de DatosEl conjunto de objetos que tiene una cuenta de usuario se denomina esquema del usuario, por lo tanto el nombre del esquema ser tambin el nombre del usuario. Cuando creamos la base de datos de Oracle, por defecto crea dos esquemas de ejemplo, para poder realizar nuestras pruebas. Estos esquemas son los siguientes: SCOTTSe trata de un esquema muy bsico de recursos humanos, cuenta con tan solo 4tablas. HR Se trata tambin de un esquema de recursos humanos, pero este esquema cuentacon 7 tablas. Esquema SCOTTPara poder iniciar una sesin en el esquema de scout debemos utilizar los siguientes datos:UsuarioscottContrasea tiger Su esquema es el siguiente: Eric Gustavo Coronel Castillo ([email protected])Pg. 2 de 6 20. Leccin 02 CEPS - UNIEsquemas Ejemplos de la Base de DatosEl siguiente script permite consultar el catalogo de scott: Script 2.1SQL> connect scott/tiger Connected.SQL> select * from cat;TABLE_NAME TABLE_TYPE ------------------------------ ----------- BONUSTABLE DEPT TABLE EMPTABLE SALGRADE TABLE4 rows selected. Esquema HRSu esquema es el siguiente: Eric Gustavo Coronel Castillo ([email protected])Pg. 3 de 6 21. Leccin 02 CEPS - UNI Esquemas Ejemplos de la Base de DatosLa cuenta de usuario HR por defecto est bloqueada, as que lo primero que debemos hacer es desbloquearla, el script es el siguiente: Script 2.2SQL> connect system/manager Connected.SQL> alter user hr 2 identified by hr 3 account unlock;User altered. Ahora si podemos consultar el catalogo del esquema HR: Script 2.3SQL> connect hr/hr Connected.SQL> select * from cat;TABLE_NAME TABLE_TYPE ------------------------------ ----------- COUNTRIESTABLE DEPARTMENTSTABLE DEPARTMENTS_SEQSEQUENCE EMPLOYEESTABLE EMPLOYEES_SEQSEQUENCE EMP_DETAILS_VIEW VIEW JOBS TABLE JOB_HISTORYTABLE LOCATIONSTABLE LOCATIONS_SEQSEQUENCE REGIONSTABLE11 rows selected. Tambin podemos utilizar la siguiente consulta: Script 2.4SQL> select * from tab;TNAMETABTYPE CLUSTERID ------------------------------ ------- ---------- COUNTRIESTABLE DEPARTMENTSTABLE EMPLOYEESTABLE EMP_DETAILS_VIEW VIEW JOBS TABLE JOB_HISTORYTABLE LOCATIONSTABLE REGIONSTABLE8 rows selected. Eric Gustavo Coronel Castillo ([email protected])Pg. 4 de 6 22. Leccin 02 CEPS - UNIEsquemas Ejemplos de la Base de Datos Consultar la Estructura de una TablaSintaxisDESCRIBE Nombre_Tabla Como ejemplo ilustrativo consultemos la estructura de la tabla EMP del esquema SCOTT: Script 2.5SQL> connect scott/tiger Connected.SQL> describe empNameNull? Type----------------------------------------- ------------------------------------EMPNO NOT NULLNUMBER(4)ENAME VARCHAR2(10)JOB VARCHAR2(9)MGR NUMBER(4)HIREDATEDATESAL NUMBER(7,2)COMMNUMBER(7,2)DEPTNONUMBER(2) Consultar el Contenido de una TablaSintaxisSELECT * FROM Nombre_Tabla Como ejemplo ilustrativo consultemos el contenido de la tabla DEPT de SCOTT: Script 2.6SQL> select * from dept;DEPTNO DNAMELOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALESCHICAGO 40 OPERATIONS BOSTON Eric Gustavo Coronel Castillo ([email protected]) Pg. 5 de 6 23. Leccin 02 CEPS - UNIEsquemas Ejemplos de la Base de Datos Pgina en Blanco Eric Gustavo Coronel Castillo ([email protected])Pg. 6 de 6 24. Oracle 9i Bsico PL/SQL Leccin 03 Sentencias SQL SELECT BsicasContenido SQL Fundamentos .....................................................................................................2 Tipos de Datos de Oracle............................................................................................................ 3 Operadores y Literales ................................................................................................................ 3Operadores Aritmticos ......................................................................................................... 3Operador de Concatenacin.................................................................................................. 3Operadores de Conjuntos...................................................................................................... 4Precedencia de Operadores .................................................................................................. 4Literales ................................................................................................................................. 4 Escribiendo Consultas Simples ..................................................................................5 Usando la Sentencia SELECT .................................................................................................... 5Consulta del contenido de una Tabla .................................................................................... 5Seleccionando Columnas ...................................................................................................... 5Alias para Nombres de Columnas ......................................................................................... 6Asegurando Valores nicos .................................................................................................. 6La Tabla DUAL ...................................................................................................................... 7 Limitando las Filas....................................................................................................................... 7Operadores de Comparacin................................................................................................. 7Operadores Lgicos ............................................................................................................ 10 Otros Operadores.....................................................................................................11 IN y NOT IN............................................................................................................................... 11 BETWEEN................................................................................................................................. 11 EXISTS...................................................................................................................................... 12 IS NULL y IS NOT NULL ........................................................................................................... 12 LIKE........................................................................................................................................... 12 Ordenando Filas.......................................................................................................13 Ordenando Nulos ...................................................................................................................... 14 Usando Expresiones ................................................................................................15 La Expresin CASE................................................................................................................... 15Caso 1 ................................................................................................................................. 15Caso 2 ................................................................................................................................. 15 25. Leccin 03 CEPS - UNI Sentencias SQL SELECT Bsicas SQL Fundamentos Data Manipulation Language (DML) Usado para acceder, crear, modificar, o eliminar data en una estructura de base de datos existente. Data Definition Language (DDL) Usado para crear, modificar, o eliminar objetos de base de datos y sus privilegios. Transaction Control Las instrucciones de control de transacciones garantizan la consistencia de los datos, organizando las instrucciones SQL en transacciones lgicas, que se completan o fallan como una sola unidad. Session Control Estas instrucciones permiten controlar las propiedades de sesin de un usuario. La sesin se inicia desde el momento en que el usuario se conecta a la base de datos hasta el momento en que se desconecta. System Control Usadas para manejar las propiedades de la base de datos. Eric Gustavo Coronel Castillo ([email protected]) Pg. 2 de 16 26. Leccin 03 CEPS - UNISentencias SQL SELECT Bsicas Tipos de Datos de OracleCategoraTipos de DatosCharacterCHAR, NCHAR, VARCHAR2, NVARCHAR2Number NUMBERLong and raw LONG, LONG RAW, RAWDate and timeDATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIME STAMP WITHLOCAL TIME ZONE, INTERVAL YEAR TO MONTH, INTERVAL DAY TOSECONDLarge object CLOB, NCLOB, BCLOB, BFILERow ID ROWID, UROWID Operadores y LiteralesOperadores AritmticosOperadorPropsitoEjemplo + -Operadores unarios: Usado para representar datos positivos y-234.56 negativos. Para datos positivos, el + es opcional.+ Suma: Usado para sumar dos nmeros o expresiones.5+7 -Resta: Usado para encontrar la diferencia entre dos nmeros o56.8 - 18 expresiones. *Multiplicacin: Usado para multiplicar dos nmeros o expresiones.7 * 15 /Divisin: Usado para dividir un nmero o expresin con otro.8.67 / 3Operador de ConcatenacinDos barras verticales ( || ) son usadas como operador de concatenacin. La siguiente tabla muestra dos ejemplos. EjemploResultadoAlianza Lima || CampenAlianza LimaCampenAlianza Lima || Campen Alianza Lima Campen Eric Gustavo Coronel Castillo ([email protected]) Pg. 3 de 16 27. Leccin 03 CEPS - UNI Sentencias SQL SELECT BsicasOperadores de ConjuntosEstos Operadores son usados para combinar el resultado de dos consultas.Operador PropsitoUNIONRetorna todas las filas de cada consulta; no las filas duplicadas.UNION ALLRetorna todas las filas de cada consulta, incluyendo las filas duplicadas. no lasfilas duplicadasINTERSECTRetorna las filas distintas del resultado de cada consulta.MINUSRetorna las filas distintas que son retornadas por la primera consulta pero queno son retornadas por la segunda consulta.Precedencia de OperadoresPrecedenciaOperador Propsito 1- + Operadores unarios, negacin 2 * /Multiplicacin, divisin 3 + - || Suma, resta, concatenacinLiteralesSon valores que representan un valor fijo. Estos pueden ser de cuatro tipos diferentes:Texto CEPS-UNI Nos vemos en Peters, la tienda del chino El curso es Oracle, y lo dictan en CEPS-UNI 28-JUL-2006Entero 45 -345Nmero 25 -456.78 15E-15 Eric Gustavo Coronel Castillo ([email protected]) Pg. 4 de 16 28. Leccin 03 CEPS - UNISentencias SQL SELECT Bsicas Escribiendo Consultas SimplesUsando la Sentencia SELECTConsulta del contenido de una TablaScript 3.1 SQL> conn hr/hrConnected. SQL> select * from jobs; JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY---------- ----------------------------------- ---------- ----------AD_PRESPresident2000040000AD_VPAdministration Vice President1500030000AD_ASSTAdministration Assistant3000 6000FI_MGR Finance Manager 820016000FI_ACCOUNT Accountant4200 9000... ... ... ...... ... ... ...IT_PROGProgrammer400010000MK_MAN Marketing Manager 900015000MK_REP Marketing Representative4000 9000HR_REP Human Resources Representative4000 9000PR_REP Public Relations Representative 450010500 19 rows selected. Seleccionando ColumnasScript 3.2SQL> select job_title, min_salary from jobs; JOB_TITLE MIN_SALARY----------------------------------- ----------President20000Administration Vice President15000Administration Assistant3000Finance Manager 8200Accountant4200... ... ... ...... ... ... ...Programmer4000Marketing Manager 9000Marketing Representative4000Human Resources Representative4000Public Relations Representative 4500 19 rows selected. Eric Gustavo Coronel Castillo ([email protected]) Pg. 5 de 16 29. Leccin 03 CEPS - UNISentencias SQL SELECT BsicasAlias para Nombres de ColumnasScript 3.3 SQL> select job_title as Titulo,2 min_salary as "Salario Mnimo"3 from jobs; TITULOSalario Mnimo----------------------------------- --------------President20000Administration Vice President15000Administration Assistant3000Finance Manager 8200Accountant4200... ... ... ...... ... ... ...Programmer4000Marketing Manager 9000Marketing Representative4000Human Resources Representative4000Public Relations Representative 4500 19 rows selected. Asegurando Valores nicosScript 3.4 SQL> select distinct department_id from employees; DEPARTMENT_ID------------- 10 20 30 40 50 60 70 80 9010011012 rows selected. Eric Gustavo Coronel Castillo ([email protected])Pg. 6 de 16 30. Leccin 03 CEPS - UNISentencias SQL SELECT BsicasLa Tabla DUALScript 3.5 SQL> select sysdate, user from dual; SYSDATE USER-------- ------------------------------22/01/05 HR SQL> select 'Yo soy ' || user || ' Hoy es ' || sysdate2 from dual; 'YOSOY'||USER||'HOYES'||SYSDATE-----------------------------------------------------Yo soy HR Hoy es 22/01/05 Limitando las FilasOperadores de Comparacin Igualdad ( = ) Script 3.6 SQL>select first_name || ' ' || last_name,2 department_id3 from employees4 where department_id = 90; FIRST_NAME||''||LAST_NAMEDEPARTMENT_ID---------------------------------------------- -------------Steven King 90Neena Kochhar 90Lex De Haan 90 Diferente ( !=, , ^= ) Script 3.7 SQL>select first_name || ' ' || last_name,2 commission_pct3 from employees4 where commission_pct .35; FIRST_NAME||''||LAST_NAMECOMMISSION_PCT---------------------------------------------- --------------John Russell ,4Karen Partners ,3Alberto Errazuriz,3... ... ... ...... ... ... ...Jack Livingston,2Kimberely Grant ,15Charles Johnson,1 32 rows selected. Eric Gustavo Coronel Castillo ([email protected])Pg. 7 de 16 31. Leccin 03 CEPS - UNISentencias SQL SELECT BsicasMenor Que ( < ) Script 3.8 SQL> select first_name || ' ' || last_name,2commission_pct3from employees4where commission_pct < .15; FIRST_NAME||''||LAST_NAMECOMMISSION_PCT---------------------------------------------- --------------Mattea Marvins ,1David Lee,1Sundar Ande,1Amit Banda ,1Sundita Kumar,1Charles Johnson,1 6 rows selected. Mayor Que ( > ) Script 3.9 SQL> select first_name || ' ' || last_name,2commission_pct3from employees4where commission_pct > .35; FIRST_NAME||''||LAST_NAMECOMMISSION_PCT---------------------------------------------- --------------John Russell ,4 Menor Igual Que ( select first_name || ' ' || last_name,2commission_pct3from employees4where commission_pct = ) Script 3.11SQL>select first_name || ' ' || last_name, 2 commission_pct 3 from employees 4 where commission_pct >= .35;FIRST_NAME||''||LAST_NAMECOMMISSION_PCT ---------------------------------------------- -------------- John Russell ,4 Janette King,35 Patrick Sully ,35 Allan McEwen,35 ANY SOME Script 3.12SQL>select first_name || ' ' || last_name, 2 department_id 3 from employees 4 where department_id select first_name || ' ' || last_name, 2 department_id 3 from employees 4 where department_id >= ALL (80,90,100);FIRST_NAME||''||LAST_NAMEDEPARTMENT_ID ---------------------------------------------- ------------- Nancy Greenberg100 Daniel Faviet100 John Chen100 Ismael Sciarra 100 Jose Manuel Urman100 Luis Popp100 Shelley Higgins110 William Gietz1108 rows selected. Eric Gustavo Coronel Castillo ([email protected]) Pg. 9 de 16 33. Leccin 03 CEPS - UNISentencias SQL SELECT BsicasOperadores Lgicos NOT Script 3.14 SQL> select first_name, department_id2 from employees3 where not (department_id >= 30); FIRST_NAME DEPARTMENT_ID-------------------- -------------Jennifer10Michael 20Pat 20 AND Script 3.15 SQL> select first_name, salary2from employees3where last_name = 'Smith'4and salary > 7500; FIRST_NAME SALARY-------------------- ----------Lindsey8000 OR Script 3.16 SQL> select first_name, last_name2from employees3where first_name = 'Kelly'4or last_name = 'Smith'; FIRST_NAME LAST_NAME-------------------- -------------------------LindseySmithWilliamSmithKellyChung Eric Gustavo Coronel Castillo ([email protected]) Pg. 10 de 16 34. Leccin 03 CEPS - UNISentencias SQL SELECT Bsicas Otros OperadoresIN y NOT INScript 3.17 SQL> select first_name, last_name, department_id2 from employees3 where department_id in (10, 20, 90); FIRST_NAME LAST_NAME DEPARTMENT_ID-------------------- ------------------------- -------------Steven King 90NeenaKochhar90LexDe Haan90Jennifer Whalen 10MichaelHartstein20PatFay20 6 rows selected.SQL> select first_name, last_name, department_id2 from employees3 where department_id not in (10, 30, 40, 50, 60, 80,90, 110, 100); FIRST_NAME LAST_NAME DEPARTMENT_ID-------------------- ------------------------- -------------MichaelHartstein20PatFay20HermannBaer 70 BETWEENScript 3.18 SQL> select first_name, last_name, salary2 from employees3 where salary between 5000 and 6000; FIRST_NAME LAST_NAME SALARY-------------------- ------------------------- ----------BruceErnst 6000KevinMourgos 5800PatFay 6000 Eric Gustavo Coronel Castillo ([email protected])Pg. 11 de 16 35. Leccin 03 CEPS - UNISentencias SQL SELECT Bsicas EXISTS Script 3.19SQL> select first_name, last_name, department_id 2 from employees e 3 where exists (select 1 from departments d 4where d.department_id = e.department_id 5and d.department_name = 'Administration');FIRST_NAME LAST_NAME DEPARTMENT_ID -------------------- ------------------------- ------------- Jennifer Whalen 10 IS NULL y IS NOT NULL Script 3.20SQL> select last_name, department_id 2 from employees 3 where department_id is null;LAST_NAME DEPARTMENT_ID ------------------------- ------------- Grant LIKE Script 3.21SQL> select first_name, last_name 2from employees 3where first_name like 'Su%' 4and last_name not like 'S%';FIRST_NAME LAST_NAME -------------------- ------------------------- Sundar Ande SunditaKumar SusanMavris Eric Gustavo Coronel Castillo ([email protected])Pg. 12 de 16 36. Leccin 03 CEPS - UNISentencias SQL SELECT Bsicas Ordenando FilasScript 3.22 SQL> select first_name, last_name2from employees3where department_id = 904order by first_name; FIRST_NAME LAST_NAME-------------------- -------------------------LexDe HaanNeenaKochharSteven King SQL> select first_name || ' ' || last_name "Employee Name"2from employees3where department_id = 904order by last_name; Employee Name----------------------------------------------Lex De HaanSteven KingNeena KochharSQL> select first_name, hire_date, salary, manager_id mid2from employees3where department_id in (110,100)4order by mid asc, salary desc, hire_date; FIRST_NAME HIRE_DAT SALARYMID-------------------- -------- ---------- ----------Shelley07/06/9412000101Nancy17/08/9412000101Daniel 16/08/94 9000108John 28/09/97 8200108Jose Manuel07/03/98 7800108Ismael 30/09/97 7700108Luis 07/12/99 6900108William07/06/94 8300205 8 rows selected.SQL> select distinct 'Region ' || region_id2 from countries3 order by 'Region ' || region_id; 'REGION'||REGION_ID-----------------------------------------------Region 1Region 2Region 3Region 4 Eric Gustavo Coronel Castillo ([email protected]) Pg. 13 de 16 37. Leccin 03 CEPS - UNI Sentencias SQL SELECT Bsicas SQL> select first_name, hire_date, salary, manager_id mid2from employees3where department_id in (110,100)4order by 4, 2, 3; FIRST_NAME HIRE_DAT SALARYMID-------------------- -------- ---------- ----------Shelley07/06/9412000101Nancy17/08/9412000101Daniel 16/08/94 9000108John 28/09/97 8200108Ismael 30/09/97 7700108Jose Manuel07/03/98 7800108Luis 07/12/99 6900108William07/06/94 8300205 8 rows selected. Ordenando NulosScript 3.23 SQL> select last_name, commission_pct2from employees3where last_name like 'A%'4order by commission_pct asc; LAST_NAME COMMISSION_PCT------------------------- --------------Ande,1Abel,3AustinAtkinsonSQL> select last_name, commission_pct2from employees3where last_name like 'A%'4order by commission_pct asc nulls first; LAST_NAME COMMISSION_PCT------------------------- --------------AustinAtkinsonAnde,1Abel,3 Eric Gustavo Coronel Castillo ([email protected])Pg. 14 de 16 38. Leccin 03 CEPS - UNISentencias SQL SELECT Bsicas Usando ExpresionesLa Expresin CASECaso 1Formato CASE WHEN THEN WHEN THEN WHEN THEN . . .. . .[ELSE ]END Script 3.24 SQL> select country_name, region_id,2 case region_id3 when 1 then 'Europa'4 when 2 then 'America'5 when 3 then 'Asia'6 else 'Otro'7 end as continente8 from countries9 where country_name like 'I%'; COUNTRY_NAMEREGION_ID CONTINE---------------------------------------- ---------- -------Israel4 OtroIndia 3 AsiaItaly 1 Europa Caso 2Formato CASEWHEN THEN WHEN THEN WHEN THEN . . .. . .[ELSE ]END Eric Gustavo Coronel Castillo ([email protected]) Pg. 15 de 16 39. Leccin 03 CEPS - UNISentencias SQL SELECT BsicasScript 3.25 SQL> select first_name, department_id, salary,2 case3when salary < 6000 then 'Bajo'4when salary < 10000 then 'Regular'5when salary >= 10000 then 'Alto'6 end as Categora7from employees8where department_id conn scott/tigerConnected.SQL> select ename, sal, comm, (sal + comm) as neto2 from emp; ENAME SAL COMM NETO---------- ---------- ---------- ----------SMITH 800ALLEN1600300 1900WARD 1250500 1750JONES2975MARTIN 1250 1400 2650BLAKE2850CLARK2450SCOTT3000KING 5000TURNER 15000 1500ADAMS1100JAMES 950FORD 3000MILLER 1300 14 rows selected.SQL> select ename, sal, comm,2 sal + nvl(comm,0) as neto3 from emp; ENAME SAL COMM NETO---------- ---------- ---------- ----------SMITH 800 800ALLEN1600300 1900WARD 1250500 1750JONES29752975MARTIN 1250 1400 2650BLAKE28502850CLARK24502450SCOTT30003000KING 50005000TURNER 15000 1500ADAMS11001100JAMES 950 950FORD 30003000MILLER 13001300 14 rows selected. Eric Gustavo Coronel Castillo ([email protected]) Pg. 2 de 14 42. Leccin 04 CEPS - UNIFunciones Simples de Filas Funcin NVL2Remplaza un valor nulo por otro valor, si no es nulo tambin lo remplaza por otro valor diferente. Script 4.2SQL> select ename, sal, comm, 2 nvl2(comm, sal + comm, sal) as neto 3 from emp;ENAME SAL COMM NETO ---------- ---------- ---------- ---------- SMITH 800 800 ALLEN1600300 1900 WARD 1250500 1750 JONES29752975 MARTIN 1250 1400 2650 BLAKE28502850 CLARK24502450 SCOTT30003000 KING 50005000 TURNER 15000 1500 ADAMS11001100 JAMES 950 950 FORD 30003000 MILLER 1300130014 rows selected. Funciones para CaracteresFuncin Descripcin EjemploASCII Retorna el valor ASCII equivalente de unAscii('A') = 65 carcter.CHR Retorna el carcter determinado por elChr(65) = A valor ASCII equivalente.CONCATConcatena dos cadena; equivalente alconcat('Gustavo','Coronel') = operador ||.GustavoCoronelINITCAP Retorna la cadena con la primera letra de InitCaP('PACHERREZ') = Pacherrez cada palabra en mayscula.INSTR Busca la posicin de inicio de una cadena Instr('Mississippi','i') = 2 dentro de otra. Instr('Mississippi','s',5) = 6 Instr('Mississippi','i',3,2) = 8INSTRBSimilar a INSTR, pero cuenta bytes en lugar InstrB('Mississippi','i') = 2 de caracteres. InstrB('Mississippi','s',5) = 6 InstrB('Mississippi','i',3,2) = 8LENGTHRetorna la longitud de una cadena enLength('Oracle is Powerful') = 18 caracteres. Eric Gustavo Coronel Castillo ([email protected]) Pg. 3 de 14 43. Leccin 04 CEPS - UNI Funciones Simples de FilasFuncin Descripcin EjemploLENGTHB Retorna la longitud de una cadena en bytes. LengthB('Oracle is Powerful') = 18LOWER Convierte una cadena a minsculas.Lower('CHICLAYO') = chiclayoLPADAjustada a la derecha una cadena, LPad('56.78',8,'#') = ###56.78 rellenndola a la izquierda con otra cadena.LTRIM Elimina caracteres a la izquierda de unaLTrim(' Alianza') = Alianza cadena, por defecto espacios en blanco. LTrim('Mississippi','Mis') = ppiRPADAjustada a la izquierda una cadena, RPad('56.78',8,'#') = 56.78### rellenndola a la derecha con otra cadena.RTRIM Elimina caracteres a la derecha de unaRTrim('Real ') || 'Madrid' = RealMadrid cadena, por defecto espacios en blanco. RTrim('Mississippi','ip') = MississREPLACE Permite reemplaza parte de una cadena.Replace('PagDown','Down','Up') = PagUpSUBSTRPermite extraer parte de una cadena.SubStr('Trujillo',4,2) = jiSUBSTRB Similar a SUBSTR, pero la posicin se indicaSubStrB('Trujillo',4,2) = ji en bytes.SOUNDEX Retorna la representacin fontica de una Soundex('HOLA') = H400 cadena.TRANSLATE Reemplaza caracteres de una cadena porTranslate('Lorena','orn','unr') = Lunera otros caracteres.TRIMElimina espacios en blanco a ambos lados'Alianza' || Trim(' ES ') || 'Alianza' = de una cadena.AlianzaESAlianzaUPPER Convierte a maysculas una cadena. Upper('peru') = PERU Script 4.3 SQL> select initcap( first_name || ' ' || last_name)2 from employees3 where department_id = 30; INITCAP(FIRST_NAME||''||LAST_NAME)----------------------------------------------Den RaphaelyAlexander KhooShelli BaidaSigal TobiasGuy HimuroKaren Colmenares 6 rows selected. Eric Gustavo Coronel Castillo ([email protected])Pg. 4 de 14 44. Leccin 04 CEPS - UNI Funciones Simples de Filas Funciones NumricasFuncin DescripcinEjemploABS Retorna el valor absoluto de un valor. Abs(-5) = 5ACOSRetorna el arco coseno.ACos(-1) = 3.14159265ASINRetorna el arco seno.ASin(1) = 1.57079633ATANRetorna el arco tangente.ATan(0) = 0ATAN2 Retorna el arco tangente; tiene dos valores de ATan2(0,3.1415) = 0 entrada.BITANDRetorna el resultado de una comparacin a nivelBitAnd(3,9) = 1 de bits de nmeros.CEILRetorna el siguiente entero ms alto.Ceil(5.1) = 6COS Retorna el coseno de un ngulo.Cos(0) = 1COSHRetorna el coseno hiperblico. Cosh(1.4) = 2.15089847EXP Retorna la base del logaritmo natural elevado aExp(1) = 2.71828183 una potencia.FLOOR Retorna el siguiente entero ms pequeo. Floor(5.31) = 5LNRetorna el logaritmo natural.Ln(2.7) = 0.99325177LOG Retorna el logaritmo.Log(8,64) = 2MOD Retorna el residuo de una operacin de divisin. Mod(13,5) = 3POWER Retorna un nmero elevado a una potencia.Power(2,3) = 8ROUND Redondea un nmero.Round(5467,-2) = 5500Round(56.7834,2) = 56.78SIGNRetorna el indicador de signo de un nmero.Sign(-456) = -1SIN Retorna el seno de un ngulo.Sin(0) = 0SQRTRetorna el seno hiperblico. Sqrt(16) = 4TAN Retorna la tangente de un ngulo.Tan(0.785398165) = 1TANHRetorna la tangente hiperblica. Tanh(Acos(-1)) = 0.996272076TRUNC Trunca un nmero.Trunc(456.678,2) = 456.67Trunc(456.678,-1) = 450 Eric Gustavo Coronel Castillo ([email protected])Pg. 5 de 14 45. Leccin 04 CEPS - UNI Funciones Simples de Filas Funciones de FechaEstableciendo el Formato de FechaScript 4.4 SQL> alter session set nls_date_format='DD-Mon-YYYY HH24:MI:SS'; Session altered. Add_MonthsAdiciona un nmero de meses a una fecha. Script 4.5 SQL> select2 sysdate as Hoy,3 add_months(sysdate,3) as TresMesesDespues4 from dual; HOYTRESMESESDESPUES-------------------- --------------------26-Ene-2005 15:15:13 26-Abr-2005 15:15:13 Current_DateRetorna la fecha actual. Script 4.6 SQL> select current_date from dual; CURRENT_DATE--------------------26-Ene-2005 15:16:15 Eric Gustavo Coronel Castillo ([email protected]) Pg. 6 de 14 46. Leccin 04 CEPS - UNIFunciones Simples de Filas Current_TimestampRetorna la fecha y hora actual. Script 4.7 SQL> select current_timestamp from dual; CURRENT_TIMESTAMP---------------------------------------------------------------------------26/01/05 03:17:41,394000 PM -05:00 ExtractExtrae y retorna un componente de una expresin Date/Time. Script 4.8 SQL> select sysdate as Hoy, extract(year from sysdate) as Ao2 from dual; HOY AO-------------------- ----------26-Ene-2005 15:20:48 2005SQL> select sysdate as Hoy, extract(month from sysdate) as Mes2 from dual; HOY MES-------------------- ----------26-Ene-2005 15:21:381SQL> select sysdate as Hoy, extract(day from sysdate) as Da2 from dual; HOY DA-------------------- ----------26-Ene-2005 15:22:27 26 Last_DayRetorna el ltimo da del mes. Script 4.9SQL> select sysdate as Hoy,2 last_day(sysdate) as fin_del_mes,3 last_day(sysdate) + 1 as proxino_mes4 from dual; HOYFIN_DEL_MESPROXINO_MES-------------------- -------------------- --------------------26-Ene-2005 15:33:48 31-Ene-2005 15:33:48 01-Feb-2005 15:33:48 Eric Gustavo Coronel Castillo ([email protected])Pg. 7 de 14 47. Leccin 04 CEPS - UNI Funciones Simples de FilasMonth_Between Retorna el nmero de meses entre dos fechas.Script 4.10SQL> select months_between('19-Abr-2005','19-Dic-2004') 2 from dual;MONTHS_BETWEEN('19-ABR-2005','19-DIC-2004') ------------------------------------------- 4 SysDate Retorna la fecha y hora actual.Script 4.11SQL> select sysdate from dual;SYSDATE -------------------- 26-Ene-2005 15:57:42 Funciones de ConversinCast Convierte una expresin a un tipo de dato especifico.Script 4.12SQL> select cast(sysdate as varchar2(24)) from dual;CAST(SYSDATEASVARCHAR2(2 ------------------------ 26-Ene-2005 17:46:02 Eric Gustavo Coronel Castillo ([email protected]) Pg. 8 de 14 48. Leccin 04 CEPS - UNI Funciones Simples de Filas To_CharConvierte un dato tipo fecha nmero a una cadena con un formato especifico.Conversin de Datos Tipo FechaScript 4.13 SQL> select to_char(sysdate, 'Day, Month YYYY','NLS_DATE_LANGUAGE=English')2 from dual; TO_CHAR(SYSDATE,'DAY,MONT-------------------------Wednesday, January 2005SQL> select to_char(sysdate, 'Day, Month YYYY','NLS_DATE_LANGUAGE=Spanish')2 from dual; TO_CHAR(SYSDATE,'DAY,MONTH--------------------------Mircoles, Enero2005SQL> Select to_char(sysdate, 'Day, DD "de" MONTH "de" YYYY')2 from dual; TO_CHAR(SYSDATE,'DAY,DD"DE"MONTH"DE-----------------------------------Mircoles, 26 de ENEROde 2005 Conversin de Datos NumricosScript 4.14 SQL> select to_char(15.6789,'99,999.00')2 from dual; TO_CHAR(15---------- 15.68SQL> select to_char(45.78234,'00,000.00')2 from dual; TO_CHAR(45---------- 00,045.78SQL> select to_char(346.4567,'L99,999.00')2 from dual; TO_CHAR(346.4567,'L9--------------------S/346.46 Eric Gustavo Coronel Castillo ([email protected]) Pg. 9 de 14 49. Leccin 04 CEPS - UNI Funciones Simples de FilasTo_DateConvierte una cadena con una fecha a un dato de tipo fecha. Script 4.15 SQL> select to_date('15-01-2005','DD-MM-YYYY')2 from dual; TO_DATE('15-----------15-Ene-2005 To_NumberConvierte una cadena numrica a su respectivo valor numrico. Script 4.16 SQL> select to_number('15.45','999.99') from dual; TO_NUMBER('15.45','999.99')---------------------------15,45 Eric Gustavo Coronel Castillo ([email protected])Pg. 10 de 14 50. Leccin 04 CEPS - UNIFunciones Simples de Filas Otras FuncionesNULLIFCompara dos expresiones expr1 y expr2, si ambas son iguales retorna NULL, de lo contrario retorna exp1. expr1 no puede ser el literal NULL. Script 4.17 SQL> connect scott/tigerConnected.SQL> select ename, mgr, comm,2 NULLIF(comm,0) test1,3 NULLIF(0, comm) test2,4 NULLIF(mgr,comm) test35 from emp6 where empno in (7844,7839, 7654, 7369); ENAME MGR COMMTEST1TEST2TEST3---------- ---------- ---------- ---------- ---------- ----------SMITH79020 7902MARTIN 7698 1400 14000 7698KING 0TURNER 76980 7698 Eric Gustavo Coronel Castillo ([email protected]) Pg. 11 de 14 51. Leccin 04 CEPS - UNIFunciones Simples de Filas Sys_Connect_By_PathSYS_CONNECT_BY_PATH es vlido solamente en consultas jerrquicas. Devuelve la trayectoria de una columna desde el nodo raz, con los valores de la columna separados por un carcter para cada fila devuelta segn la condicin especificada en CONNECT BY. Script 4.18 SQL> connect hr/hrConnected.SQL> column path format a40SQL> select last_name, sys_connect_by_path(last_name, '/') Path2from employees3start with last_name = 'Kochhar'4connect by prior employee_id = manager_id; LAST_NAME PATH------------------------- ----------------------------------------Kochhar /KochharGreenberg /Kochhar/GreenbergFaviet/Kochhar/Greenberg/FavietChen/Kochhar/Greenberg/ChenSciarra /Kochhar/Greenberg/SciarraUrman /Kochhar/Greenberg/UrmanPopp/Kochhar/Greenberg/PoppWhalen/Kochhar/WhalenMavris/Kochhar/MavrisBaer/Kochhar/BaerHiggins /Kochhar/HigginsGietz /Kochhar/Higgins/Gietz 12 rows selected. Sys_ContextRetorna el parmetro asociado con un namespace. Script 4.19 SQL> select sys_context('USERENV','HOST') from dual; SYS_CONTEXT('USERENV','HOST')--------------------------------------------------------------------------------TECHSOFTEGCC Eric Gustavo Coronel Castillo ([email protected]) Pg. 12 de 14 52. Leccin 04 CEPS - UNIFunciones Simples de Filas UID Devuelve un nmero entero que identifique nicamente a cada usuario.Script 4.20SQL> select uid from dual; UID ---------- 46 User Retorna el nombre del usuario de la sesin actualScript 4.21SQL> select user from dual;USER ------------------------------ HR Eric Gustavo Coronel Castillo ([email protected]) Pg. 13 de 14 53. Leccin 04 CEPS - UNIFunciones Simples de Filas Pgina en Blanco Eric Gustavo Coronel Castillo ([email protected]) Pg. 14 de 14 54. Oracle 9i Bsico PL/SQL Leccin 05Totalizando Datos y Funciones de GrupoContenido Funciones de Grupo...................................................................................................2 AVG............................................................................................................................................. 2 COUNT........................................................................................................................................ 2 MAX............................................................................................................................................. 2 MIN.............................................................................................................................................. 3 SUM ............................................................................................................................................ 3 GROUP BY ................................................................................................................4 HAVING......................................................................................................................5 55. Leccin 05 CEPS - UNI Totalizando Datos y Funciones de Grupo Funciones de GrupoAVGObtiene el promedio de una columna o expresin. Se puede aplicar la clusula DISTINCT. Script 5.1 SQL> connect hr/hrConnected. SQL> select avg(salary) from employees2 where department_id = 30; AVG(SALARY)----------- 4150 COUNTCuenta las filas de una consulta. Se puede aplicar DISTINCT. Script 5.2 SQL> select count(*) from departments; COUNT(*)----------27SQL> select count(distinct department_id) from employees; COUNT(DISTINCTDEPARTMENT_ID)----------------------------11 MAXRetorna el mximo valor de una columna expresin. Script 5.3 SQL> select max(salary) from employees2 where department_id = 80; MAX(SALARY)-----------14000 Eric Gustavo Coronel Castillo ([email protected])Pg. 2 de 6 56. Leccin 05 CEPS - UNI Totalizando Datos y Funciones de GrupoMINRetorna el mnimo valor de una columna expresin. Script 5.4 SQL> select min(salary) from employees2 where department_id = 80; MIN(SALARY)----------- 6100 SUMRetorna la suma de los valores de una columna. Se puede aplicar DISTINCT. Script 5.5 SQL> select sum(salary) from employees2 where department_id = 80; SUM(SALARY)----------- 304500 Eric Gustavo Coronel Castillo ([email protected]) Pg. 3 de 6 57. Leccin 05 CEPS - UNITotalizando Datos y Funciones de Grupo GROUP BYSe utiliza para agrupar data en base a una ms columnas, para aplicar funciones de grupo. Script 5.6 Cantidad de empleados por departamento. SQL> select2 department_id as Departamento,3 count(*) as Empleados4 from employees5 group by department_id; DEPARTAMENTO EMPLEADOS------------ ----------10120230640150 4560570180 34903 1006 11021 12 rows selected. Script 5.7 Cantidad de empleados por puesto de trabajo en los departamentos 50 y 80. SQL>select2department_id as Departamento,3job_id as puesto,4count(*) as Empleados5 from employees6 where department_id in (50,80)7 group by department_id, job_id; DEPARTAMENTOPUESTOEMPLEADOS---------------------- ----------50ST_MAN550SH_CLERK 2050ST_CLERK 2080SA_MAN580SA_REP 29 Eric Gustavo Coronel Castillo ([email protected])Pg. 4 de 6 58. Leccin 05 CEPS - UNI Totalizando Datos y Funciones de GrupoScript 5.8 Cantidad de empleados que han ingresado por ao. SQL> select2 extract(year from hire_date) as ao,3 count(*) as empleados4 from employees5 group by extract(year from hire_date);AO EMPLEADOS---------- ----------198721989119901199111993119947199541996 101997 281998 231999 182000 11 12 rows selected. HAVINGPermite limitar mediante una condicin de grupo el resultado obtenido despus de aplicar GROUP BY, tal como se aprecia en el siguiente grfico. Eric Gustavo Coronel Castillo ([email protected])Pg. 5 de 6 59. Leccin 05 CEPS - UNI Totalizando Datos y Funciones de GrupoScript 5.9 Departamentos que tienen ms de 10 empleados. SQL> select department_id as Departamento,2count(*) as Empleados3from employees4group by department_id5having count(*) > 10; DEPARTAMENTO EMPLEADOS------------ ----------50 4580 34 Script 5.10 Los puestos de trabajo de los que solo hay un empleado en la empresa. SQL> select job_id as Puesto,2count(*) as Empleados3from employees4group by job_id5having count(*) = 1; PUESTOEMPLEADOS---------- ----------AC_ACCOUNT1AC_MGR1AD_ASST 1AD_PRES 1FI_MGR1HR_REP1MK_MAN1MK_REP1PR_REP1PU_MAN1 10 rows selected. Eric Gustavo Coronel Castillo ([email protected]) Pg. 6 de 6 60. Oracle 9i Bsico PL/SQL Leccin 06Consultas MultitablasEn esta leccin veremos como escribir sentencias SELECT para acceder a los datos de dos o ms tablas usando equality y non-equality joins (combinaciones por igualdad y por desigualdad). Visualizar datos que no se cumpliran normalmente con una condicin de join usando outer joins (uniones externas). Combinar (Join) una tabla consigo misma. Contenido Qu es un Join? .......................................................................................................2 Consultas Simples......................................................................................................2 Consultas Complejas .................................................................................................3 Uso de Alias ................................................................................................................................ 3 Usando Sintaxis ANSI ................................................................................................................. 4NATURAL JOIN..................................................................................................................... 4JOIN . . . USING .................................................................................................................... 5JOIN ... ON ............................................................................................................................ 6 Producto Cartesiano...................................................................................................7 Combinaciones Externas ...........................................................................................8 Usando Sintaxis ANSI ................................................................................................................. 8Left Outer Joins ..................................................................................................................... 8Right Outer Join..................................................................................................................... 9Full Outer Join ..................................................................................................................... 10 Otras Consultas Multitablas .....................................................................................11 Autoreferenciadas (Self-joins) ................................................................................................... 11 Consultas Basadas en Desigualdades (Nonequality Joins) ...................................................... 12 Operadores de Conjuntos ........................................................................................12 61. Leccin 06 CEPS - UNIConsultas Multitablas Qu es un Join?Un Join es usado para consultar datos desde ms de una tabla. Las filas se combinan (joined) relacionando valores comunes, tpicamente valores de primary key y foreign key. Mtodos de Join: Equijoin Non-equijoin Outer join Self join Consultas SimplesScript 6.1 Consultar los pases por regin. SQL> conn hr/hrConnected.SQL> select regions.region_id, region_name,2country_name3from regions, countries4where regions.region_id = countries.region_id;REGION_IDREGION_NAME COUNTRY_NAME----------------------------------- ---------------------------------------- 1EuropeUnited Kingdom 1EuropeNetherlands 1EuropeItaly 1EuropeFrance 1EuropeDenmark 1EuropeGermany 1EuropeSwitzerland 1EuropeBelgium 2AmericasUnited States of America 2AmericasMexico 2AmericasCanada 2AmericasBrazil 2AmericasArgentina 3AsiaSingapore 3AsiaJapan 3AsiaIndia 3AsiaHongKong 3AsiaChina 3AsiaAustralia 4Middle East and AfricaZimbabwe 4Middle East and AfricaZambia 4Middle East and AfricaNigeria 4Middle East and AfricaKuwait 4Middle East and AfricaIsrael 4Middle East and AfricaEgypt 25 rows selected. Eric Gustavo Coronel Castillo ([email protected]) Pg. 2 de 14 62. Leccin 06 CEPS - UNI Consultas MultitablasConsultas ComplejasScript 6.2 Consultar los departamentos que se encuentran fuera de EEUU, y su respectiva ciudad. SQL>select locations.location_id, city, department_name2 from locations, departments3 where (locations.location_id = departments.location_id)4 and (country_id != 'US'); LOCATION_IDCITY DEPARTMENT_NAME----------------------------------------- ------------------------------ 1800TorontoMarketing 2400London Human Resources 2700Munich Public Relations 2500Oxford Sales Uso de AliasLos alias simplifican la referencia a las columnas de las tablas que se utilizan en una consulta. Script 6.3 Consultar los pases de Asia. SQL>select r.region_id, r.region_name, c.country_name2 from regions r, countries c3 where (r.region_id = c.region_id)4 and (r.region_name = 'Asia');REGION_IDREGION_NAMECOUNTRY_NAME--------------------------------------------------------------------------- 3Asia Australia 3Asia China 3Asia HongKong 3Asia India 3Asia Japan 3Asia Singapore 6 rows selected. Eric Gustavo Coronel Castillo ([email protected])Pg. 3 de 14 63. Leccin 06 CEPS - UNI Consultas Multitablas Usando Sintaxis ANSI NATURAL [INNER] JOIN [INNER] JOIN USING () [INNER] JOIN ON NATURAL JOINSe combinas esta basada en todas las columnas con igual nombre entre ambas tablas. Script 6.4 No es necesario utilizar alias. SQL> select location_id, city, department_name2 from locations natural join departments;SQL> select location_id, city, department_name2 from departments natural join locations;El resultado en ambos casos es el mismo. LOCATION_ID CITY DEPARTMENT_NAME----------- ------------------------------ ------------------------------ 1700 SeattleAdministration 1800 TorontoMarketing 1700 SeattlePurchasing 2400 London Human Resources 1500 South San FranciscoShipping 1400 SouthlakeIT 2700 Munich Public Relations 2500 Oxford Sales 1700 SeattleExecutive 1700 SeattleFinance 1700 SeattleAccounting 1700 SeattleTreasury 1700 SeattleCorporate Tax 1700 SeattleControl And Credit 1700 SeattleShareholder Services 1700 SeattleBenefits 1700 SeattleManufacturing 1700 SeattleConstruction 1700 SeattleContracting 1700 SeattleOperations 1700 SeattleIT Support 1700 SeattleNOC 1700 SeattleIT Helpdesk 1700 SeattleGovernment Sales 1700 SeattleRetail Sales 1700 SeattleRecruiting 1700 SeattlePayroll 27 rows selected. Eric Gustavo Coronel Castillo ([email protected])Pg. 4 de 14 64. Leccin 06 CEPS - UNI Consultas MultitablasScript 6.5 Las columnas comunes solo se muestran una vez en el conjunto de resultado. SQL> select *2 from regions natural join countries3 where country_name like 'A%';REGION_IDREGION_NAMECO COUNTRY_NAME------------------------------------- ---------------------------------------- 2Americas AR Argentina 3Asia AU Australia SQL>select region_name, country_name, city2 from regions3 natural join countries4 natural join locations; REGION_NAMECOUNTRY_NAME CITY----------------------------------------------------------------Europe NetherlandsUtrechtEurope SwitzerlandBernEurope SwitzerlandGenevaEurope GermanyMunichEurope United Kingdom StretfordEurope United Kingdom OxfordEurope United Kingdom LondonEurope ItalyVeniceEurope ItalyRomaAmericas Mexico Mexico CityAmericas Brazil Sao PauloAmericas Canada WhitehorseAmericas Canada TorontoAmericas United States of America SeattleAmericas United States of America South BrunswickAmericas United States of America South San FranciscoAmericas United States of America SouthlakeAsia SingaporeSingaporeAsia AustraliaSydneyAsia IndiaBombayAsia ChinaBeijingAsia JapanHiroshimaAsia JapanTokyo 23 rows selected. JOIN . . . USINGPermite indicar las columnas a combinar entre dos tablas. Script 6.6 SQL> select location_id, city, department_name2 from locations join departments using (location_id)3 where city not like 'S%'; LOCATION_IDCITY DEPARTMENT_NAME------------------------------------------------------------------ 1800TorontoMarketing 2400London Human Resources 2700Munich Public Relations 2500Oxford Sales Eric Gustavo Coronel Castillo ([email protected])Pg. 5 de 14 65. Leccin 06 CEPS - UNIConsultas Multitablas SQL>select region_name, country_name, city2 from regions3 join countries using(region_id)4 join locations using(country_id)5 where country_id = 'US'; REGION_NAMECOUNTRY_NAMECITY---------------------------------------- -------------------------Americas United States of AmericaSouthlakeAmericas United States of AmericaSouth San FranciscoAmericas United States of AmericaSouth BrunswickAmericas United States of AmericaSeattle JOIN ... ONLa condicin que permite combinar ambas tablas se debe especificar en la clusula ON. Script 6.7 SQL>select region_name, country_name, city2 from regions r3 join countries c on (r.region_id=c.region_id)4 join locations l on (c.country_id=l.country_id)5 where country_id = 'US'; REGION_NAMECOUNTRY_NAMECITY---------------------------------------- -------------------------Americas United States of AmericaSouthlakeAmericas United States of AmericaSouth San FranciscoAmericas United States of AmericaSouth BrunswickAmericas United States of AmericaSeattle Eric Gustavo Coronel Castillo ([email protected]) Pg. 6 de 14 66. Leccin 06 CEPS - UNI Consultas Multitablas Producto CartesianoSi dos tablas en una consulta no tienen ninguna condicin de combinacin, entonces Oracle vuelve su producto cartesiano. Oracle combina cada fila de una tabla con cada fila de la otra tabla. Un producto cartesiano genera muchas filas y es siempre raramente til. Por ejemplo, el producto cartesiano de dos tablas, cada uno con 100 filas, tiene 10.000 filas. Script 6.8 SQL> select region_name, country_name2 from regions, countries; REGION_NAMECOUNTRY_NAME--------------------------------------------------Europe ArgentinaEurope AustraliaEurope BelgiumEurope BrazilEurope Canada. . .. . .Middle East and Africa NetherlandsMiddle East and Africa SingaporeMiddle East and Africa United KingdomMiddle East and Africa United States of AmericaMiddle East and Africa ZambiaMiddle East and Africa Zimbabwe 100 rows selected. Script 6.9 En este script utilizaremos la sintaxis ANSI, el resultado es el mismo obtenido en el Script 6.8. SQL> select region_name, country_name2 from regions cross join countries; Eric Gustavo Coronel Castillo ([email protected])Pg. 7 de 14 67. Leccin 06 CEPS - UNIConsultas Multitablas Combinaciones ExternasUna combinacin externa ampla el resultado de una combinacin simple. Una combinacin externa devuelve todas las filas que satisfagan la condicin de combinacin y tambin vuelve todos o parte de las filas de una tabla para la cual ninguna filas de la otra satisfagan la condicin de combinacin. Script 6.10 En este script se mostrar todos los pases de la tabla countries. SQL> select c.country_name, l.city2from countries c, locations l3where ( c.country_id = l.country_id (+) )4and ( c.country_name like 'A%' ); COUNTRY_NAMECITY------------------------- -------------------------ArgentinaAustralia Sydney Usando Sintaxis ANSILeft Outer JoinsScript 6.11 Todos estos ejemplos producen el mismo resultado, y muy similar al del Script 6.10. SQL> select c.country_name, l.city2 from countries c left outer join locations l3 on c.country_id = l.country_id;SQL> select country_name, city2 from countries natural left join locations;SQL> select country_name, city2 from countries left join locations3 using (country_id);SQL> select c.country_name, l.city2 from countries c, locations l3 where l.country_id (+) = c.country_id; Eric Gustavo Coronel Castillo ([email protected])Pg. 8 de 14 68. Leccin 06 CEPS - UNI Consultas MultitablasRight Outer JoinScript 6.12 Todos estos ejemplos dan el mismo resultado, e igual al del Script 6.11. SQL> select c.country_name, l.city2 from locations l right outer join countries c3 on l.country_id = c.country_id;SQL> select country_name, city2 from locations natural right outer join countries;SQL> select country_name, city2 from locations right outer join countries3 using ( country_id );SQL> select c.country_name, l.city2 from locations l, countries c3 where c.country_id = l.country_id (+); Eric Gustavo Coronel Castillo ([email protected])Pg. 9 de 14 69. Leccin 06 CEPS - UNIConsultas MultitablasFull Outer JoinScript 6.13 SQL> select e.employee_id, e.last_name, d.department_id, d.department_name2 from employees e full outer join departments d3 on e.department_id = d.department_id;SQL> select e.employee_id, e.last_name, d.department_id, d.department_name2from employees e, departments d3where e.department_id(+) = d.department_id4union5select e.employee_id, e.last_name, d.department_id, d.department_name6from employees e, departments d7where e.department_id = d.department_id(+); El resultado de estas dos consultas es el mismo, y se muestra a continuacin. EMPLOYEE_ID LAST_NAMEDEPARTMENT_ID DEPARTMENT_NAME----------- -------------------- ------------- --------------------200 Whalen10 Administration202 Fay 20 Marketing201 Hartstein 20 Marketing. . .. . .178 Grant220 NOC170 Manufacturing240 Government Sales210 IT Support160 Benefits150 Shareholder Services250 Retail Sales140 Control And Credit260 Recruiting200 Operations120 Treasury270 Payroll130 Corporate Tax180 Construction190 Contracting230 IT Helpdesk 123 rows selected. Eric Gustavo Coronel Castillo ([email protected]) Pg. 10 de 14 70. Leccin 06 CEPS - UNIConsultas Multitablas Otras Consultas MultitablasAutoreferenciadas (Self-joins)Script 6.14 SQL> select e.last_name Employee, m.last_name Manager2 from employees e, employees m3 where m.employee_id = e.manager_id;SQL> select e.last_name Employee, m.last_name Manager2 from employees e inner join employees m3 on m.employee_id = e.manager_id; Estas dos consultas muestran una lista de los empleados y sus respectivos jefes. EMPLOYEEMANAGER------------------------- -------------------------Hartstein KingZlotkey KingCambrault King. . .. . .AbelZlotkeyFay HartsteinGietz Higgins 106 rows selected. Eric Gustavo Coronel Castillo ([email protected])Pg. 11 de 14 71. Leccin 06 CEPS - UNIConsultas Multitablas Consultas Basadas en Desigualdades (Nonequality Joins)Script 6.15 SQL> connect scott/tigerConnected. SQL> select ename, sal, grade2 from emp, salgrade3 where sal between losal and hisal; ENAME SALGRADE---------- ---------- ----------SMITH 8001JAMES 9501ADAMS11001WARD 12502MARTIN 12502MILLER 13002TURNER 15003ALLEN16003CLARK24504BLAKE28504JONES29754SCOTT30004FORD 30004KING 50005 14 rows selected. Operadores de ConjuntosLa siguiente tabla describe los diferentes operadores de conjuntos.Operador DescripcinUNIONRetorna todas la filas nicas seleccionas por las consultas.UNION ALLRetorna todas las filas (incluidas las duplicadas) seleccionadas por lasconsultas.INTERSECTRetorna las filas seleccionadas por ambas consultas.MINUSRetorna las filas nicas seleccionadas por la primera consulta, pero que noson seleccionadas por la segunda consulta. Eric Gustavo Coronel Castillo ([email protected]) Pg. 12 de 14 72. Leccin 06 CEPS - UNIConsultas MultitablasScript 6.16 Consideremos las siguientes consultas. SQL> connect hr/hrConnected. SQL> alter session set nls_date_format='DD-Mon-YYYY'; Session altered. SQL> select last_name, hire_date2 from employees3 where department_id = 90; LAST_NAME HIRE_DATE------------------------- -----------King17-Jun-1987Kochhar 21-Sep-1989De Haan 13-Ene-1993 SQL> select last_name, hire_date2 from employees3 where last_name like 'K%'; LAST_NAME HIRE_DATE------------------------- -----------King17-Jun-1987Kochhar 21-Sep-1989Khoo18-May-1995Kaufling01-May-1995King30-Ene-1996Kumar 21-Abr-2000 6 rows selected. La operador UNION es usado para retornar las filas de ambas consultas pero sin considerar las duplicadas. SQL> select last_name, hire_date2from employees3where department_id = 904UNION5select last_name, hire_date6from employees7where last_name like 'K%'; LAST_NAME HIRE_DATE------------------------- -----------De Haan 13-Ene-1993Kaufling01-May-1995Khoo18-May-1995King17-Jun-1987King30-Ene-1996Kochhar 21-Sep-1989Kumar 21-Abr-2000 7 rows selected. Eric Gustavo Coronel Castillo ([email protected]) Pg. 13 de 14 73. Leccin 06 CEPS - UNIConsultas Multitablas Pgina en Blanco Eric Gustavo Coronel Castillo ([email protected])Pg. 14 de 14 74. Oracle 9i Bsico PL/SQLLeccin 07 SubconsultasContenido Subconsultas de Solo una Fila...................................................................................2 Subconsultas de Mltiples Filas .................................................................................2 Subconsultas Correlacionadas...................................................................................3 Subconsultas Escalares .............................................................................................3 Subconsulta Escalar en una Expresin CASE ............................................................................ 3 Subconsulta Escalar en la Clusula SELECT ............................................................................. 4 Subconsultas Escalares en las Clusulas SELECT y WHERE ................................................... 4 Subconsultas Escalares en la Clusula ORDER BY ................................................................... 5 Mltiples Columnas en una Subconsultas................................................................................... 6 75. Leccin 07 CEPS - UNI Subconsultas Subconsultas de Solo una FilaScript 7.1 SQL> connect hr/hrConnected. SQL> alter session set nls_date_format='DD-Mon-YYYY'; Session altered. SQL> select last_name, first_name, salary2 from employees3 where salary = (select max(salary) from employees); LAST_NAME FIRST_NAME SALARY------------------------- -------------------- ----------KingSteven24000 Subconsultas de Mltiples FilasScript 7.2 SQL> select last_name, first_name, department_id2 from employees3 where department_id in ( select department_id4from employees5where first_name = 'John' ); LAST_NAMEFIRST_NAME DEPARTMENT_ID--------------------------------------------- -------------Popp Luis 100UrmanJose Manuel100SciarraIsmael 100. . .. . .ErrazurizAlberto 80Partners Karen 80RussellJohn80 85 rows selected. Eric Gustavo Coronel Castillo ([email protected])Pg. 2 de 6 76. Leccin 07 CEPS - UNI Subconsultas Subconsultas CorrelacionadasScript 7.3 SQL> select department_id, last_name, salary2 from employees e13 where salary = ( select max(salary)4 from employees e25 where e1.department_id = e2.department_id ); DEPARTMENT_IDLAST_NAME SALARY-------------------------------------- ---------- 10Whalen4400 20Hartstein13000 30Raphaely 11000 40Mavris6500 50Fripp 8200 60Hunold9000 70Baer 10000 80Russell14000 90King 24000100Greenberg12000110Higgins12000 11 rows selected. Subconsultas EscalaresRetornan exactamente una columna y una sola fila. Subconsulta Escalar en una Expresin CASEScript 7.4 Esta consulta lista las ciudades, su cdigo de pas, y si es de la India no. SQL>select city, country_id,2 ( case3 when country_id in ( select country_id4 from countries5 where country_name = 'India' ) then 'Indian'6 else 'Non-Indian'7 end) as "India?"8 from locations9 where city like 'B%'; CITYCO India?-------------------------------- ----------Beijing CN Non-IndianBombayIN IndianBernCH Non-Indian Eric Gustavo Coronel Castillo ([email protected])Pg. 3 de 6 77. Leccin 07 CEPS - UNISubconsultas Subconsulta Escalar en la Clusula SELECTScript 7.5 SQL> select department_id, department_name,2 ( select max(salary) from employees e3 where e.department_id = d.department_id ) as "Salario Maximo"4 from departments d; DEPARTMENT_IDDEPARTMENT_NAMESalario Maximo------------------------------------------- -------------- 10Administration 4400 20Marketing 13000 30Purchasing11000 40Human Resources6500 50Shipping 8200 60IT 9000 70Public Relations10000 80Sales 14000 90Executive 24000100Finance 12000110Accounting12000 Subconsultas Escalares en las Clusulas SELECT y WHEREScript 7.6 El propsito de la siguiente consulta es buscar los nombres de los departamentos y el nombre de sus jefes para todos los departamentos que estn en Estados Unidos (United States of America) y Canad (Canada). SQL>select department_name, manager_id,2( Select last_name from employees e3 where e.employee_id = d.manager_id) as mgr_name4 from departments d5 where ( (select country_id from locations l6where d.location_id = l.location_id)7 in (select country_id from countries c8 where c.country_name = 'United States of America'9 or c.country_name = 'Canada') ) 10 and d.manager_id is not null; DEPARTMENT_NAMEMANAGER_ID MGR_NAME------------------------------ ---------- ----------------------Administration200 WhalenMarketing 201 HartsteinPurchasing114 RaphaelyShipping121 FrippIT103 HunoldExecutive 100 KingFinance 108 GreenbergAccounting205 Higgins 8 rows selected. Eric Gustavo Coronel Castillo ([email protected]) Pg. 4 de 6 78. Leccin 07 CEPS - UNI Subconsultas Subconsultas Escalares en la Clusula ORDER BYScript 7.7 La siguiente consulta ordena los nombres de las ciudades por sus respectivos nombres de pas. SQL>select country_id, city, state_province2 from locations l3 order by (select country_name4 from countries c5 where l.country_id = c.country_id); CO CITY STATE_PROVINCE-- ------------------------------ -------------------------AU Sydney New South WalesBR Sao PauloSao PauloCA TorontoOntarioCA Whitehorse YukonCN BeijingDE Munich BavariaIN Bombay MaharashtraIT RomaIT VeniceJP TokyoTokyo PrefectureJP HiroshimaMX Mexico CityDistrito Federal,NL UtrechtUtrechtSG SingaporeCH Geneva GeneveCH Bern BEUK LondonUK StretfordManchesterUK Oxford OxfordUS SouthlakeTexasUS South San FranciscoCaliforniaUS South BrunswickNew JerseyUS SeattleWashington 23 rows selected. Eric Gustavo Coronel Castillo ([email protected]) Pg. 5 de 6 79. Leccin 07 CEPS - UNISubconsultas Mltiples Columnas en una SubconsultasScript 7.8 Consideremos las siguientes tablas. StateCNT_Code ST_Code ST_Name1TXTEXAS1CACALIFORNIA91 TNTAMIL NADU1TNTENNESSE91 KLKERALACityCNT_Code ST_Code CTY_Code CTY_Name1TX1001 Dallas91 TN2243 Madras1CA8099 Los Angeles Se quiere listar todas las ciudades ubicadas en Texas. SQL> select cty_name2 from city3 where (cnt_code, st_code) in4 ( select cnt_codr, st_code5 from state6 where st_name = 'TEXAS' ); CTY_NAME--------------DALLAS Eric Gustavo Coronel Castillo ([email protected]) Pg. 6 de 6 80. Oracle 9i Bsico PL/SQLLeccin 08 Modificando DatosContenido Insertando Filas..........................................................................................................2 Inserciones una Sola Fila ............................................................................................................ 2 Insertando Filas con Valores Nulos ............................................................................................. 2 Insertando Valores Especiales .................................................................................................... 3 Insertando Valores Especficos de Fecha ................................................................................... 3 Usando & Sustitucin para el Ingreso de Valores ....................................................................... 3 Copiando Filas Desde Otra Tabla ............................................................................................... 4 Insertando en Mltiples Tablas.................................................................................................... 4 Modificando Datos......................................................................................................5 Actualizando una Columna de una Tabla.................................................................................... 5 Seleccionando las Filas a Actualizar ........................................................................................... 6 Actualizando Columnas con Subconsultas.................................................................................. 7 Actualizando Varias Columnas con una Subconsulta ................................................................. 7 Error de Integridad Referencial ................................................................................................... 8 Eliminando Filas .........................................................................................................9 Eliminar Todas la Filas de una Tabla .......................................................................................... 9 Seleccionando las Filas a Eliminar .............................................................................................. 9 Creando una tabla de prueba ................................................................................................ 9 Eliminando una sola fila ....................................................................................................... 10 Eliminando un grupo de filas................................................................................................ 10 Uso de Subconsultas................................................................................................................. 10 Error de Integridad Referencial ................................................................................................. 11 Truncando una Tabla ................................................................................................................ 11 Transacciones ..........................................................................................................12 Propiedades de una Transaccin.............................................................................................. 12Atomicidad ........................................................................................................................... 12Coherencia .......................................................................................................................... 12Aislamiento .......................................................................................................................... 12Durabilidad........................................................................................................................... 13 Operacin de Transacciones..................................................................................................... 13Inicio de una transaccin ..................................................................................................... 13Confirmacin de una transaccin ........................................................................................ 14Cancelar una transaccin .................................................................................................... 14 81. Leccin 08 CEPS - UNIModificando Datos Insertando FilasInserciones una Sola FilaScript 8.1 SQL> connect hr/hrConnected. SQL> insert into2 departments(department_id, department_name, manager_id, location_id)3 values(300, 'Departamento 300', 100, 1800); 1 row created. SQL> commit;Commit complete. Insertando Filas con Valores NulosScript 8.2 Mtodo Implcito: Se omiten las columnas que aceptan valores nulos. SQL> insert into2 departments(department_id, department_name)3 values(301, 'Departamento 301'); 1 row created. SQL> commit;Commit complete. Script 8.3 Mtodo Explicito: Especificamos la palabra clave NULL en las columnas donde queremos insertar un valor nulo. SQL> insert into departments2 values(302, 'Departamento 302', NULL, NULL); 1 row created. SQL> commit;Commit complete. Eric Gustavo Coronel Castillo ([email protected]) Pg. 2 de 14 82. Leccin 08 CEPS - UNIModificando Datos Insertando Valores EspecialesScript 8.4 SQL> insert into employees (employee_id,2 first_name, last_name,3 email, phone_number,4 hire_date, job_id, salary,5 commission_pct, manager_id,6 department_id)7 values(250,8 'Gustavo', 'Coronel',9 '[email protected]', '511.481.1070', 10 sysdate, 'FI_MGR', 14000, 11 NULL, 102, 100); 1 row created. SQL> commit;Commit complete. Insertando Valores Especficos de FechaScript 8.5 SQL> insert into employees2 values(251, 'Ricardo', 'Marcelo',3 '[email protected]', '511.555.4567',4 to_date('FEB 4, 2005', 'MON DD, YYYY'),5 'AC_ACCOUNT', 11000, NULL, 100, 30); 1 row created. SQL> commit;Commit complete. Usando & Sustitucin para el Ingreso de ValoresScript 8.6 SQL> insert into2 departments (department_id, department_name, location_id)3 values (&department_id,