Professional Documents
Culture Documents
INTRODUCCIÓN A
ORACLE SQL Y PL/SQL
Volumen
1
Versión 2.1
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
CONTENIDO
1. PREFACIO 5
1.1. PRE-REQUISITOS 5
1.2. OBJETIVOS DEL CURSO 5
1.3. DURACIÓN DEL CURSO 5
1.4. CONTENIDO DEL CURSO 5
1.5. AUDIENCIA 9
3. CONSULTA DE DATOS 14
PAGINA 2
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
5. FUNCIONES 31
PAGINA 3
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
8. CONSULTAS ANIDADAS 48
PAGINA 4
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
1. PREFACIO
1.1. PRE-REQUISITOS
El alumno debe tener familiaridad con los siguientes conceptos:
Volumen 1
TEMA OBJETIVO
Introducción Repaso de los conceptos de las bases de
datos relacionales, descripción de los tipos de
comando SQL y de algunas herramientas
Oracle en las que se utiliza.
Consulta de Datos Para extraer información de la base de datos
se utiliza el comando SELECT del Lenguaje de
Consulta Estructurado (SQL).
Usted aprenderá a crear instrucciones de
PAGINA 5
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
PAGINA 6
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Volumen 2
TEMA OBJETIVO
Especificación de Variables en el Tiempo de Usted aprenderá cómo crear un archivo de
Ejecución comandos que contenga una cláusula de
WHERE para restringir las filas desplegadas.
Para cambiar la condición cada vez que el
archivo de comando se ejecute, usted utilizará
variables.
Revisión de Modelo de datos y Diseño de Antes de iniciar la construcción de tablas se
Base de Datos hace en esta lección un repaso de los
conceptos relacionados con el modelo de
datos y el diseño de la base de datos.
Creación de Tablas Usted creará tablas. Usted además creará
restricciones de integridad, las cuales sirven
para limitar lo que se puede o no hacer con los
datos.
Diccionario de Datos de Oracle El diccionario de datos de Oracle es uno de
los más importantes componentes del servidor
de Oracle. Este consiste un grupo de tablas y
vistas que proveen una referencia de solo
lectura de la base de datos.
Manipulación de Datos Una vez que sus tablas han sido creadas,
usted aprenderá a agregarles nuevas filas,
hacer cambios a las filas en la tabla o
borrarlas usando los comandos de
manipulación de datos. Esta lección cubre el
uso de los comandos de SQL para hacer
cambios a los datos. Es posible agrupar varias
de estos comandos en una transacción, misma
que puede ser ejecutada o cancelada como
una sola operación.
PAGINA 7
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Volumen 3
TEMA OBJETIVO
Alteración de Tablas y Restricciones Después haber creado sus tablas, usted
puede necesitar cambiar su estructura. Esta
lección se mostrará cómo puede usted corregir
la estructura de las tablas así como agregar o
quitar restricciones.
Creación de Secuencias Varias aplicaciones requieren del uso de
números únicos como valores de las llaves
primarias. Usted puede escribir código en su
aplicación para este efecto o utilizar
secuencias manejadas por el propio servidor
automáticamente.
Creación de Vistas En esta lección usted verá como pueden ser
usadas las vistas para presentar información a
los usuarios en varias formas distintas.
Creación de Indices Si usted quiere mejorar la ejecución de
algunas consultas, usted debe considerar la
creación de un índice. Usted puede también
usar los índices para reforzar la singularidad
de una columna o de una combinación de
columnas.
Control de Acceso de los Usuarios Esta lección describe el sistema de seguridad
del servidor de Oracle. Usando los comandos
cubiertos en esta lección, usted puede
controlar el acceso a objetos específicos de la
base de datos y agregar nuevos usuarios con
diferentes niveles de privilegios de acceso.
Usted puede dar nombres alternativos para los
objetos usando el comando CREATE
SYNONYM.
PAGINA 8
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Volumen 4
TEMA OBJETIVO
Revisión de PL/SQL Lección de revisión de cómo crear y usar las
unidades de programa de PL/SQL y
subprogramas.
Bases del Constructor de Procedimientos Una característica clave de la programación de
procedimientos es la habilidad de crear y
revisar su código de manera rápida y fácil.
Programación Modulada con La modularidad le permite descomponer su
Subprogramas código en unidades bien definidas y
manejables. Cada una de estas unidades en
PL/SQL tiene dos tipos de subprogramas
llamados procedimientos y funciones. Usted
aprenderá la estructura de los subprogramas y
como invocarlos.
Desarrollo de un Bloque Simple de PL/SQL Creará un bloque simple de PL/SQL después
de estudiar todos los elementos que
componen un bloque.
Interacción con Oracle Accesará la base de datos y las transacciones
de control a través de las instrucciones de
SQL en PL/SQL.
Uso de las Estructuras de Control Controle el flujo de un bloque de PL/SQL
usando instrucciones condicionales y ciclos
(loops).
Procesamiento de Consultas con Cursores Use la instrucción de SELECT de filas
Explícitos. múltiples dentro de PL/SQL par procesar
muchas filas. Declare y controle cursores
explícitos, los cuales son usados en loops,
incluyendo el cursor FOR.
Manejo de errores Cuando usted ejecuta el código de PL/SQL,
usted puede encontrar errores. Los errores
causan que el bloque de PL/SQL se detenga
con una excepción. Usted puede detectar la
excepción y hacer que su programa realice
una operación determinada al tener un error.
1.5. AUDIENCIA
Administradores de Base de Datos
Analistas de Sistemas
Diseñadores/Desarrolladores
PAGINA 9
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
1
Cada fila de información en una tabla es únicamente identificada por una llave primaria (PK)
Usted puede lógicamente relacionar información de varias tablas usando llaves foráneas
(FK).
PAGINA 10
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Concepto Descripción
Tabla Una tabla es la estructura básica de almacenamiento de una Base de Datos
Relacional, consiste en uno o más columnas y cero o más filas.
Fila Una fila es la combinación de los valores de las columnas en una tabla; por
ejemplo, la información acerca de un departamento en la tabla V_DEPT. Una
fila es comúnmente llamada registro.
Columna Una columna representa un tipo de datos en una tabla. Esta es descrita con
un nombre y contiene información de un tamaño y tipo específico.
Campo En la intersección de una fila y una columna, se encuentra un campo. El
campo puede contener información. Si no hay información en el campo, se
dice que tiene un valor nulo (NULL).
Llave Una llave primaria es la columna o grupo de columnas que únicamente
Primaria identifican cada fila en la tabla; por ejemplo el número de un departamento.
Esta debe contener un valor.
Llave Una llave foránea es la columna o grupo de columnas que hacen referencia a
Foránea una llave primaria en la misma tabla o en otra. Estas se crean para reforzar las
reglas de diseño de la base de datos.
Notas:
Objeto Descripción
Tabla Unidad básica de almacenamiento compuesta de filas y columnas.
Vista Lógicamente representa subconjuntos de información de una o más
tablas.
Secuencia Genera los valores de la llave primaria.
Indice Estructura formada en base a algunas de las columnas de una tabla que
permite mejorar el desempeño de las consultas.
Sinónimo Nombre alterno de un objeto.
Unidad de Procedimientos, funciones o paquetes de SQL y PL/SQL agrupados.
programa
PAGINA 11
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Los comandos de SQL, SQL *Plus, y PL/SQL son usados para accesar y manipular datos
almacenados en una base de datos de Oracle.
Herramienta Descripción
PAGINA 12
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Existen muchos comandos disponibles en SQL. La siguiente tabla describe algunos de los
comandos estudiados en este curso:
Comando Descripción
SELECT Recupera información de la base de datos. Es el comando más
usado.
INSERT Son los comandos que sirven, respectivamente, para agregar nuevos
UPDATE registros, cambiar registros existentes y borrar registros no deseados
DELETE de las tablas de la base de datos. A este conjunto de comandos se le
conoce como el Lenguaje de Manipulación de Datos (Data
Manipulation Language ó DML).
CREATE Comandos para definir, cambiar, y quitar estructuras de datos. Este
ALTER segundo conjunto de comandos es comúnmente conocido como el
DROP Lenguaje de Definición de Datos (Data Definition Language ó DDL).
RENAME
TRUNCATE
COMMIT Comandos de control de cambios hechos por el DML. Permiten
ROLLBACK agrupar los cambios a los datos en transacciones lógicas.
SAVEPOINT
GRANT Comandos para otorgar o quitar privilegios de acceso a la base de
REVOKE datos y a la estructura de datos que ésta contiene. El conjunto de
comandos es comúnmente conocido como el Lenguaje de Control de
Datos (Data Control Language ó DCL).
PAGINA 13
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
3. CONSULTA DE DATOS
Sintaxis
Una cláusula de SELECT que especifique las columnas que serán desplegadas.
Una cláusula de FROM que especifique la tabla que contiene las columnas listadas en la
cláusula del SELECT.
SQL> SELECT *
2 FROM s_dept;
PAGINA 14
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
ID NAME REGION_ID
------ ------------------- ---------
10 Finance 1
31 Sales 1
32 Sales 2
33 Sales 3
34 Sales 4
35 Sales 5
41 Operations 1
42 Operations 2
43 Operations 3
44 Operations 4
45 Operations 5
50 Administrtion 1
12 rows selected
Ejemplo :
Desplegar todos los números de departamento, apellidos de los empleados y los números de
los administradores en la tabla S_EMP.
PAGINA 15
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Una expresión aritmética puede contener nombre de columnas, valores numéricos constantes,
y los operadores aritméticos.
Estos son los operadores aritméticos disponibles en SQL. Se puede utilizar operadores
aritméticos en cualquier cláusula de una instrucción de SQL, excepto en la cláusula FROM.
Operadores Descripción
+ Suma
- Resta
* Multiplicación
/ División
Ejemplo :
PAGINA 16
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Se especifica el alias después de la columna en la lista del SELECT usando un espacio como
separador. Como default, los encabezados de los alias serán desplegados en mayúsculas y no
podrán contener espacios en blanco, a menos que el alias esté encerrado entre comillas (“ “).
Ejemplo :
Nota: Se puede incluir la palabra AS antes del nombre del alias para cumplir con los
estándares de ANSI SQL 92.
Ejemplo :
Desplegar los nombres completos de los empleados con el encabezado Empleados.
PAGINA 17
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
3.5. CONSTANTES
Una constante puede ser cualquier caracter, expresión o número que se incluya en la lista del
SELECT, que no sea el nombre de una columna o un alias. Estas constantes son utilizadas
por cada registro devuelto. Las constantes son tratadas como columnas en la lista del
SELECT.
Las constantes de tipo fecha y caracter deben ser encerrados entre comillas sencillas (‘’), no
así los números.
Ejemplo :
Desplegar los nombres completos de los empleados y sus títulos con el encabezado
Empleados, se debe estar seguro de agregar la puntuación.
Si a un registro le falta información en una columna en particular, se dice que tiene valor Nulo.
Un valor nulo es: un valor que no está disponible, no ha sido asignado, es desconocido o no
es aplicable. En la columna COMMISSION_PCT, usted puede notar que sólo los Vendedores
obtienen comisión. Los otros empleados no están autorizados para obtener comisión, un valor
nulo representa ese hecho.
Las columnas de cualquier tipo de información pueden contener valores nulos, a menos que
las columnas hayan sido definidas explícitamente como no nulas (NOT NULL) o sean parte de
la llave primaria (PRIMARY KEY) de la tabla a la que pertenecen.
PAGINA 18
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Sintaxis
Donde : expr1 es el valor fuente o la expresión que puede contener el valor nulo.
Nota : La función NVL se puede usar para convertir cualquier tipo de datos, pero el valor
obtenido será siempre del mismo tipo que la expresión expr1.
3.7.1. DISTINCT
Para eliminar registros duplicadas en el resultado, se incluye la función DISTINCT en la
cláusula del SELECT inmediatamente después del comando SELECT.
Ejemplo :
Desplegar sin repetir todos los nombres de los departamentos de la tabla S_DEPT.
NAME
-------------------
Finance
Sales
Operations
Administrtion
4 rows selected
PAGINA 19
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Ejemplo :
La forma de invocar SQL *Plus depende del tipo de sistema operativo o del ambiente de
ventanas en que se esté trabajando.
Log on
Password
******
Host String:
hp9000
OK Cancel
PAGINA 20
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Una vez que se ha entrado exitosamente a SQL *Plus, verá el siguiente mensaje :
SQL>
En SQL *Plus se puede desplegar la estructura de una tabla utilizando la orden DESCRIBE. El
resultado de la orden es los nombres de las columnas, sus tipos de dato, y si la columna debe
forzosamente o no contener datos.
DESC[RIBE] tabla
Ejemplo :
PAGINA 21
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Notas :
Si se presiona [RETURN] antes de completar un comando, SQL *Plus iniciará otra línea
numerada.
Para marcar el final de una instrucción SQL capture uno de los caracteres de terminación
(punto y coma o diagonal invertida), o presione [RETURN] dos veces. Al hacerlo volverá a
aparecer el prompt de SQL.
Comando Descripción
A[PPEND] text Agrega texto al final de la línea actual.
C[HANGE]/old/new/ Cambia el texto viejo a nuevo en la línea actual.
C[HANGE]/text/ Borra el texto de la línea actual.
CL[EAR] BUFF[ER] Borra todas las líneas del buffer de SQL
DEL Borra la línea actual.
DEL n Borra la línea n
DEL m n Borra un rango de líneas (de la m a la n).
I[NPUT] Inserta un numero indefinido de líneas.
I[NPUT] text Inserta una línea de texto.
L[IST] Lista todas las líneas del buffer de SQL.
L[IST] n Despliega la línea n
L[IST] m, n Despliega de la línea m a la línea n
R[UN], / Despliega y ejecuta el comando actual de SQL en el buffer.
n Especifica la línea que será la línea actual.
n texto Reemplaza la línea n con el texto especificado.
0 texto Inserta el texto antes de la línea número 1.
PAGINA 22
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Comandos de Archivos
Comando Descripción
SAV[E] archivo[.ext] Guarda el contenido actual del buffer de SQL a un archivo.
[REP[lace] lAPP[END]] Utilice APPEND para agregarlo a un archivo existente. La
extensión de default del archivo es .sql.
GET archivo[.ext] Escribe el contenido de un archivo previamente guardado en el
buffer de SQL. La extensión de default del archivo es .sql.
STA[RT] archivo[.ext] Corre un archivo de comando previamente almacenado.
@ archivo Corre un archivo de comando previamente almacenado (igual
que START)
EDIT Llama al editor y guarda el contenido del buffer a un archivo
llamado afiedt.buf.
ED[IT] [archivo[.ext]] Llama al editor para editar el contenido de un archivo guardado.
SPO[OL] [archivo[.ext]l Almacena los resultados de la consulta en un archivo, OFF
OFFlOUT] cierra el archivo. OUT cierra el archivo y lo envía al sistema de
impresión.
EXIT Cierra SQL *Plus.
Nota : Usted puede cambiar el editor de texto que se abre cambiando el valor la variable
EDITOR utilizando el comando DEFINE.
PAGINA 23
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Sintaxis
SELECT expr
FROM tabla
[ORDER BY {columna, expr} [ASC DESC]];
Los valores numéricos son desplegados con el valor más bajo primero, por ejemplo 1-999.
Las fechas se despliegan con la fecha más temprana al principio, 01-enero-1992 antes de
01-enero-1998.
Los valores en caracteres en orden alfabético, por ejemplo A primero y la Z al final.
En Oracle, los valores nulos se despliegan al final en una secuencia ascendente y al
principio en una secuencia descendente.
PAGINA 24
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Ejemplo :
Usted puede restringir las filas obtenidas por la consulta usando la cláusula WHERE. Una
cláusula de WHERE contiene una condición que debe cumplirse, y que se especifica
inmediatamente después de la cláusula FROM.
Sintaxis
SELECT expr
FROM tabla
[WHERE condicion(es)]
[ORDER BY expr];
PAGINA 25
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Operador Significado
= Igual que
> Mayor que
>= Mayor que o igual que
< Menor que
<= Menor que o igual que
Existen cuatro operadores de SQL que operan con cualquier tipo de datos:
Operador Significado
BETWEEN…AND… Entre dos valores (inclusive)
IN (lista) Que el valor se encuentre dentro de la lista.
LIKE Comparar una cadena contra una cadena modelo.
IS NULL Es un valor nulo.
Operador Significado
AND Si el resultado de ambas condiciones es VERDADERO, entonces el
resultado es VERDADERO.
OR Si el resultado de cualquiera de las condiciones es VERDADERO,
entonces el resultado es VERDADERO
NOT Regresa el valor opuesto.
En ocasiones se requiere encontrar aquellos registros que NO cumplen con una determinada
condición. Para hacerlo utilice los operadores de comparación de SQL con una expresión de
negación.
PAGINA 26
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Operadores Descripción
<> Diferente que (todos los sistemas operativos)
NOTcolnomnbre = Diferente que
NOTcolnombre > No mayor que
Operador Descripción
NOT BETWEEN…AND… No se encuentra entre los dos valores especificados
NOT IN (list) No se encuentra dentro de la lista valores especificada.
NOT LIKE La comparación con la cadena modelo no es satisfactoria.
IS NOT NULL No es un valor nulo.
Ejemplo :
Desplegar el nombre, apellido y la fecha de inicio de los empleados cuya fecha de inicio esté
entre mayo 9 de 1991 y junio 17 de 1991 además.
PAGINA 27
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
4.6.2. Operador IN
Para verificar que el valor se encuentre dentro de una lista use el operador IN.
Ejemplo:
Símbolo Descripción
% Representa cualquier secuencia de cero o más caracteres
- Representa cualquier carácter.
Ejemplo:
Desplegar aquellos empleados cuyos apellidos empiecen con “M”:
SQL>SELECT last_name
2 FROM s_emp
3 WHERE last_name LIKE ’M%’;
PAGINA 28
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Usted tal vez tenga que especificar criterios complejos combinando varias condiciones de
búsqueda. Los operadores AND y OR pueden ser usados para combinar expresiones lógicas.
En los dos siguientes ejemplos, las condiciones son las mismas, pero el operador es diferente.
Observe cómo el resultado cambia drásticamente.
Ejemplo 1 :
Desplegar el apellido, salario, número de departamento, y el título para todos los empleados
de mostrador del departamento 41.
Ejemplo 2 :
Despliegue el apellido, salario, número de departamento, y el título para todos los empleados
de mostrador o que estén en el departamento 41.
Nota : OR es una cláusula menos restrictiva, en consecuencia se obtendrán más filas como
respuesta.
PAGINA 29
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Usted puede combinar los operadores AND y OR en la misma expresión lógica. Los resultados
de todas las condiciones se combinan en el orden determinado por la precedencia de los
operadores. Si se usan operadores de igual precedencia uno junto a otro, éstos son evaluados
de izquierda a derecha.
Cada operador AND es ejecutado antes de que un OR sea ejecutado, y tiene un antecedente
más alto.
Reglas de Precedencia
Orden de evaluación
1 Todos los operadores de comparación
(=, <>, >, >=, <, >=, IN, LIKE, IS NULL, BETWEEN)
2 AND
3 OR
Nota : Cuando se usa una expresión negativa los operadores de comparación se evalúan
primero.
PAGINA 30
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
5. FUNCIONES
Sintaxis
PAGINA 31
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Función Propósito
LOWER (columna l expresión) Convierte valores de caracteres alfabéticos a minúsculas
UPPER (columna l expresión) Convierte valores de caracteres alfabéticos a mayúsculas
INITCAP (columna l expresión) Convierte en mayúscula la primera letra de cada palabra y en
minúsculas el resto de las letras.
CONCAT (columna l expresión) Concatena el primer valor con el segundo. Es el equivalente
(columna2 l expresión2) al operador de concatenación ().
SUBSTR (columna l Devuelve una cadena compuesta por n caracteres extraídos
expresión,m[,n]) a partir desde la posición m. Si m es negativo, la cuenta se
hace a partir del final de la cadena.
LENGTH (columna l expresión) Devuelve el número de caracteres en la cadena.
NVL (columna l expresión1, Convierte el primer valor, si es nulo, al segundo valor.
columna l expresión2)
Función Propósito
ROUND (columna l Redondea la columna, expresión o valor a n posiciones
expresión[,n]) decimales. Si n es negativo, los números a la izquierda del
punto decimal se redondean.
TRUNC (columna l expresión Trunca la columna o el valor a n posiciones decimales, o si n
[,n]) es omitida, a ningún espacio decimal. Si n es negativo, los
números a la izquierda del punto decimal son truncados a
cero.
MOD (m,n) Trae el sobrante de la división de m entre n.
PAGINA 32
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Siglos
Años
Meses
Días
Horas
Minutos
Segundos
El formato por omisión que se despliega para cualquier fecha es DD-MES-AA. Las fechas
válidas en Oracle están entre el 1º de Enero de 4712 A.C y el 31 de Diciembre de 4712 D.C.
5.4.2. SYSDATE
SYSDATE es una función de fecha que trae la fecha actual y la hora. Usted puede usar
SYSDATE de la misma manera en la que usa cualquier otro nombre de columna. Por ejemplo,
usted puede desplegar la fecha actual seleccionando SYSDATE de una tabla. Es habitual
seleccionar SYSDATE de una tabla muestra llamada DUAL.
5.4.3. DUAL
La tabla DUAL es propiedad del usuario SYS y puede ser utilizada por todos los usuarios. Esta
contiene una columna, DUMMY, y una fila con el valor “X”, La tabla DUAL es útil cuando usted
quiere traer un valor una sola vez, por ejemplo, el valor de una constante, pseudo-columna, o
expresión que no se deriva de una tabla con información del usuario.
Ejemplo :
PAGINA 33
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Ejemplo :
Para los empleados del departamento 43, desplegar el apellido y número de semanas desde
que fueron contratados.
PAGINA 34
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Función Propósito
MONTHS_BETWEEN (fecha1, Encuentra el número de meses entre la fecha1 y la
fecha2) fecha2. El resultado puede ser positivo o negativo. Si la
fecha1 es anterior a la fecha2, el resultado es positivo. Si
la fecha1 es más reciente que la fecha2 el resultado es
negativo. La parte del resultado que no está expresada
en enteros representa una parte del mes.
ADD_MONTHS (fecha,n) Agrega n número de meses a una fecha, n debe ser un
entero y puede ser negativo.
NEXT_DAY (fecha, ‘char’) Encuentra la fecha del día de la semana ‘char’ que sigue
a la fecha especificada. Char puede ser un número que
representa un día de la semana o una cadena de
caracteres.
LAST_DAY (fecha) Encuentra la fecha del último día del mes en el que se
encuentre la fecha especificada.
ROUND (fecha[,’fmt’]) Encuentra la fecha del día que corresponde a redondear
en el período especificado por el segundo parámetro fmt.
Ver tabla siguiente.
TRUNC (fecha[,’fmt’]) Encuentra la fecha del día que corresponde a truncar en
el período especificado por el segundo parámetro fmt.
Ver tabla siguiente.
Nota : Esta lista es un subconjunto de las funciones de fecha disponibles. Los formatos se
verán más adelante en este capítulo. Ejemplos de modelos de formatos son meses o años.
PAGINA 35
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Función Propósito
TO_CHAR (número l fecha,[ ‘fmt’ ]) Convierte un valor numérico o fecha a una
cadena de caracteres VARCHAR2 con modelo
de formato fmt.
TO_NUMBER (char) Convierte una cadena de caracteres que
contiene dígitos a un número.
TO_DATE (char,[‘fmt’]) Convierte una cadena de caracteres que
representa una fecha a un valor de fecha de
acuerdo con el fmt especificado. Si fmt es
omitido, el formato será DD-MES-AA
Elemento Descripción
SCC ó CC Siglo. El prefijo S coloca un – en fechas AC.
Años en fechas YYYY ó SYYYY Año. El prefijo S coloca un – en fechas AC.
YYY ó YY ó Y Ultimos 3,2 ó 1 dígito(s) del año
Y,YYY Año con coma en la posición indicada.
IYYY, IYY, IY, I 4, 3, 2 ó 1 dígitos del año basados en estándar de ISO.
SYEAR ó YEAR Año deletreado; S prefijos AC fecha con -.
BC ó AD Indicador BC/AD
B.C. ó A.D. Indicador BC/AD con periodos
Q Cuarto de año
MM Mes, valor de 2 dígitos.
MONTH Nombre del mes relleno con espacios en blanco de un
largo de 9 caracteres.
MON Nombre del mes abreviado con tres letras.
RM Mes con numeración romana.
WW ó W Semana, del año o mes.
DDD ó DD ó D Día del año, mes o semana.
DAY Nombre del día relleno con espacios en blanco de un
largo de 9 caracteres.
DY Nombre del día; abreviado con tres letras.
J Fecha juliana; número de días desde el 31 de diciembre
4713 BC.
PAGINA 36
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Use los formatos listados en las siguientes tablas para desplegar la información de la hora.
Elemento Descripción
AM ó PM Indicador meridiano.
A.M. ó P.M. Indicador meridiano con puntos.
HH ó HH12 ó HH24 Hora del día u hora (1-12) u hora (0-23)
MI Minutos (0-59)
SS Segundos (0-59)
SSSSS Segundos después de media noche (0-86399)
Elemento Descripción
/., Estos símbolos son incluidos tal cual en el resultado.
“ de el año de ” Las cadenas entre comillas son incluidas tal cual en el resultado.
El prefijo FM suprime los espacios en blanco en los nombres de los meses y los días, dejando
un resultado de longitud variable.. Este además suprime los ceros que se encuentren al
principio de las cantidades. Si el prefijo es incluido una segunda vez dentro de la cadena
entonces se vuelven a incluir espacios en blanco.
Sufijos Descripción
TH Números ordinales (por ejemplo, DDTH por
4TH).
SP Números expresados en forma de palabras
(por ejemplo, DDSP por FOUR)
SPTH ó THSP Número ordinales expresados en forma de
palabras (por ejemplo, DDSPTH por FOURTH)
PAGINA 37
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
El formato de fecha RR es similar al elemento YY, pero este permite especificar diferentes
siglos. Usted puede usar el elemento de formato de fecha RR en lugar de YY, de esta manera
el siglo del valor de respuesta variará de acuerdo con los dos dígitos especificados del año y
los últimos dos dígitos del año en curso (cincuenta años hacia adelante y cincuenta años hacia
atrás a partir de la fecha actual).
PAGINA 38
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Ejemplo :
De todos los vicepresidentes desplegar el apellido en mayúsculas y una parte del nombre de
su departamento como una sola columna.
PAGINA 39
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Cuando la información de más de una tabla de la base de datos es requerida, se usa una
condición de unión (join). Las filas de una tabla pueden ser unidas a las filas de otra tabla de
acuerdo con valores comunes existentes en las filas correspondientes, es decir las llaves
primarias y foráneas.
Equijoin
Non-equijoin
Outer join
Self join
Set operators
Sintaxis
PAGINA 40
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Ejemplo :
Desplegar el número de departamento y el número de región de todos los departamentos.
Ejemplo :
Desplegar el nombre del cliente, el número de región, y el nombre de la región de todos los
clientes. Proporcione el alias de las columnas, y use el alias de la tabla para acortar las
referencias de la tabla.
PAGINA 41
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Ejemplo :
Con el usuario SCOTT crear un NON EQUI-JOIN para consultar el rango de salario de los
empleados. El salario debe estar entre el valor inferior y el superior del rango de sueldo.
Sintaxis
PAGINA 42
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Ejemplo :
Si en el siguiente ejemplo se hiciera un inner-join (quitando el ‘(+)’) el resultado sería una lista
con 14 registros debido a que hay un cliente sin representante de venta. Con el outer-join se
dispone de manera virtual de un registro NULO en la tabla S_EMP para poderlo relacionar con
la tabla de S_CUSTOMER y como resultado se obtiene una lista con 15 registros.
S_EMP
S_CUSTOMER
INNER
JOIN
OUTER
JOIN
N N N
PAGINA 43
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Para simular la existencia de dos tablas en la cláusula de FROM, el ejemplo contiene un alias
para la misma tabla, S_EMP. Este es un ejemplo de las convenciones validas de
nombramiento.
En este ejemplo, la cláusula de WHERE contiene la unión que significa “donde el número del
jefe de los trabajadores es igual a la clave de empleado del jefe”.
Ejemplo :
PAGINA 44
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
A diferencia de las funciones a nivel registro, las funciones de grupo sirven para obtener un
solo resultado (fila) por cada subconjunto de grupos de registros. Estos subconjuntos de
grupos de registros se forman dividiendo una tabla en grupos basados en una columna o
expresión.
Función Descripción
AVG (DISTINCT|ALL|n) Valor promedio de n. Se ignoran los valores nulos.
COUNT(DISTINCT|ALL|expr|*) Número de registros donde expr contiene un valor no nulo.
MAX (DISTINCT|ALL|expr) Valor máximo de expr.
MIN (DISTINCT|ALL|expr) Valor mínimo de expr.
STDDEV(DISTINCT|ALL|n) Desviación estándar de n. Se ignoran los valores nulos.
SUM(DISTINCT|ALL|n) Sumatoria de los valores de n. Se ignoran los valores nulos.
VARIANCE(DISTINCT|ALL|n) Varianza de n. Se ignoran los valores nulos.
Sintaxis
SELECT expr
FROM tabla
[WHERE condicion(es)]
[GROUP BY expresión_de_agrupamiento]
[ORDER BY expr];
PAGINA 45
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Ejemplo :
Sintaxis
SELECT expr
FROM tabla
[WHERE condicion(es)]
[GROUP BY expresión_de_agrupamiento]
[HAVING condición]
[ORDER BY expr];
GROUP BY HAVING
WHERE
PAGINA 46
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
8. CONSULTAS ANIDADAS
PAGINA 47
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Las consultas anidadas permiten que la cláusula WHERE de una consulta se base en el
resultado de OTRA CONSULTA.
Sintaxis
SELECT expr
FROM tabla
WHERE expr operador
( SELECT expr
FROM tabla );
Ejemplo 1 :
Generar la lista de los empleados que trabajan en la región 1 (en 2 pasos). Primero se
determinan los departamentos en la región 1 y después se determinan los empleados en
dichos departamentos, debido a que la región no es un dato de la tabla de empleados:
SQL> SELECT id
2 FROM s_dept
3 WHERE region_id = 1;
ID
------
10
31
41
50
4 rows selected
SQL> SELECT id
2 FROM s_emp
3 WHERE dept_id IN (10,31,41,50);
Ejemplo 2 :
PAGINA 48
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Ejemplo 3:
Ejemplo 4:
PAGINA 49
INTRODUCCIÓN A ORACLE SQL Y PL/SQL
Ejemplo 5:
Generar la lista de los empleados con base en condiciones de s_emp y posiblemente otras
tablas:
PAGINA 50