Вы находитесь на странице: 1из 27

U N I V E R S I D A D D E E L S A LVA D O R

FA C U LTA D D E I N G E N I E R I A Y A R Q U I T E C T U R A Ciclo

ESCUELA DE INGENIE RI A DE SISTEMAS


I
I N F O R M AT I C O S

Base de Datos BAD115


Catedrticos: Ing. Elmer Arturo Carballo Ruiz MSc.
Ing. Csar Augusto Gonzlez Rodrguez MAF.

Gua de Laboratorio #4a


Lenguaje estructurado de Consulta SQL
Bsico
Contenido
Objetivos .................................................................................................................................. 1
Introduccin ............................................................................................................................. 1
Desarrollo. ................................................................................................................................ 2
Funciones de Nulos, Caracteres, Numricas y de Fecha de conversin y otras ............................... 2
Funciones para Valores Nulos ................................................................................................ 2
Funciones para Caracteres ..................................................................................................... 4
Funciones Numricas............................................................................................................. 6
Funciones de Fecha ............................................................................................................... 8
Funciones de Conversin ......................................................................................................12
Otras Funciones....................................................................................................................16
Totalizando Datos y Funciones de Grupo ...................................................................................19
Funciones de Grupo..............................................................................................................19
GROUP BY ............................................................................................................................21
HAVING................................................................................................................................24
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

Objetivos
Que el estudiante sea capaz de:

Realizar las operaciones bsicas de consulta en SQL sobre Oracle utilizando una sola tabla.
Comprender los conceptos fundamentales referentes a consultas en SQL.
Utilizar funciones para manejo de valores nulos, cadenas de caracteres, numricas, de
fecha, de conversin y otras.
Utilizar las formas de consulta con totalizacin y funciones de grupo.

Introduccin

En esta de laboratorio se utilizaran los esquemas Scott y HR para realizar consultas


en SQL, utilizando funciones de manejo de nulos, cadenas de caracteres, numricas, de
fecha, de conversin y otras, ejecutando instrucciones en SQLDeveloper conectado a los
esquemas antes mencionados. Adems de incorporar las funcionalidades de totalizacin y
agrupacin de registros.

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
1
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

Desarrollo.

Funciones de Nulos, Caracteres, Numricas y de Fecha de


conversin y otras
Funciones para Valores Nulos

a) En el esquema Scott, muestre nombre, salario, comisin y la sumatoria de salario +


comisin bajo el nombre neto.

Script: select ename, sal, comm, (sal + comm) as neto from emp;

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
2
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

Funcin NVL

Remplaza un valor nulo por otro valor.

Repita la consulta anterior(a), remplazando el valor nulo de comisin con cero.


Script: select ename, sal, nvl(comm,0), sal + nvl(comm,0) as neto from emp;

Funcin NVL2

Remplaza un valor nulo por otro valor, si no es nulo tambin lo remplaza por otro valor
diferente.

Repita la consulta anterior(a), remplazando el valor de salario neto(neto) por la suma de


salario + comisin cuando exista la comisin o el valor de salario si no existe la comisin.
Script: select ename, sal, comm, nvl2(comm, sal + comm, sal) as neto

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
3
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

Funciones para Caracteres


Funcin Descripcin Ejemplo

ASCII Retorna el valor ASCII equivalente Ascii('A') = 65


de un carcter.
CHR Retorna el carcter determinado Chr(65) = A
por el valor ASCII equivalente.
CONCAT Concatena dos cadena; concat('Gustavo','Coronel') =
equivalente al operador ||. GustavoCoronel
INITCAP Retorna la cadena con la primera InitCaP('PACHERREZ') =
letra de cada palabra en Pacherrez
mayscula.
Funcin Descripcin Ejemplo

INSTR Busca la posicin de inicio de una Instr('Mississippi','i') = 2


cadena dentro de otra. Instr('Mississippi','s',5) = 6
Instr('Mississippi','i',3,2) = 8

INSTRB Similar a INSTR, pero cuenta InstrB('Mississippi','i') = 2


bytes en lugar de caracteres. InstrB('Mississippi','s',5) = 6
InstrB('Mississippi','i',3,2) = 8

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
4
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

LENGTH Retorna la longitud de una cadena Length('Oracle is Powerful') =


en caracteres. 18
Retorna la longitud de una cadena LengthB('Oracle is Powerful')
LENGTHB
en bytes. = 18
Convierte una cadena a
LOWER Lower('CHICLAYO') = chiclayo
minsculas.
LPAD Ajustada a la derecha una LPad('56.78',8,'#') = ###56.78
cadena, rellenndola a la
izquierda con otra cadena.
LTRIM Elimina caracteres a la izquierda
LTrim(' Alianza') = Alianza
de una cadena, por defecto
LTrim('Mississippi','Mis') = ppi
espacios en blanco.
RPAD Ajustada a la izquierda una RPad('56.78',8,'#') = 56.78###
cadena, rellenndola a la derecha
con otra cadena.
RTRIM Elimina caracteres a la derecha RTrim('Real ') || 'Madrid' =
de una cadena, por defecto RealMadrid
espacios en blanco. RTrim('Mississippi','ip') =
Mississ
Permite reemplaza parte de una Replace('PagDown','Down','Up')
REPLACE
cadena. = PagUp
Permite extraer parte de una
SUBSTR SubStr('Trujillo',4,2) = ji
cadena.
SUBSTRB Similar a SUBSTR, pero la posicin SubStrB('Trujillo',4,2) = ji
se indica en bytes.
SOUNDEX Retorna la representacin Soundex('HOLA') = H400
fontica de una cadena.
TRANSLATE Reemplaza caracteres de una Translate('Lorena','orn','unr') =
cadena por otros caracteres. Lunera
TRIM Elimina espacios en blanco a 'Alianza' || Trim(' ES ') ||
ambos lados de una cadena. 'Alianza' = AlianzaESAlianza
Convierte a maysculas una
UPPER Upper('peru') = PERU
cadena.

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
5
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

b) Desplegar el nombre y el apellido separados con un espacio en blanco de los empleados


del departamento nmero 30 con el formato de inicial en Maysculas.

Script: select initcap( first_name || ' ' || last_name) from employees where department_i d = 30;

Funciones Numricas
Funcin Descripcin Ejemplo

ABS Retorna el valor absoluto de un valor. Abs(-5) = 5

ACOS Retorna el arco coseno. ACos(-1) = 3.14159265

ASIN Retorna el arco seno. ASin(1) = 1.57079633

ATAN Retorna el arco tangente. ATan(0) = 0

Retorna el arco tangente; tiene dos valores


ATAN2 ATan2(0,3.1415) = 0
de entrada.
Retorna el resultado de una comparacin a
BITAND BitAnd(3,9) = 1
nivel de bits de nmeros.
CEIL Retorna el siguiente entero ms alto. Ceil(5.1) = 6

COS Retorna el coseno de un ngulo. Cos(0) = 1

COSH Retorna el coseno hiperblico. Cosh(1.4) = 2.15089847

Retorna la base del logaritmo natural


EXP Exp(1) = 2.71828183
elevado a una potencia.
FLOOR Retorna el siguiente entero ms pequeo. Floor(5.31) = 5

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
6
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

LN Retorna el logaritmo natural. Ln(2.7) = 0.99325177

LOG Retorna el logaritmo. Log(8,64) = 2


Retorna el residuo de una operacin de
MOD Mod(13,5) = 3
divisin.
Retorna un nmero elevado a una
POWER Power(2,3) = 8
potencia.
Round(5467,-2) = 5500
ROUND Redondea un nmero.
Round(56.7834,2) = 56.78

Funcin Descripcin Ejemplo


Retorna el indicador de signo de un
SIGN Sign(-456) = -1
nmero.
SIN Retorna el seno de un ngulo. Sin(0) = 0

SQRT Retorna el seno hiperblico. Sqrt(16) = 4

TAN Retorna la tangente de un ngulo. Tan(0.785398165) = 1

TANH Retorna la tangente hiperblica. Tanh(Acos(-1)) = 0.996272076

Trunc(456.678,2) = 456.67
TRUNC Trunca un nmero.
Trunc(456.678,-1) = 450

c) Desplegar el nombre y el apellido separados con un espacio en blanco y el salario diario sin
decimales de los empleados del departamento nmero 30 .

Script: select initcap( first_name || ' ' || last_name), trunc(salary/30) from employees where
department_id = 30;

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
7
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

Funciones de Fecha
Establecer el Formato de Fecha

Add_Months

Adiciona un nmero de meses a una fecha.

d) Con el formato establecido muestre el dia de hoy y cual ser la fecha dentro de 3 meses.

Script: select sysdate as Hoy, add_months(sysdate,3) as TresMesesDespues from dual;

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
8
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

Current_Date

Retorna la fecha actual.


Script: select current_date from dual;

Current_Timestamp

Retorna la fecha y hora actual.


Script: select current_timestamp from dual;

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
9
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

Extract

Extrae y retorna un componente de una expresin Date/Time.


Extraer el ao:
Script: select sysdate as Hoy, extract(year from sysdate) as Ao2 from dual;

Extraer el mes:
Script: select sysdate as Hoy, extract(month from sysdate) as Mes2 from dual;

Extraer el dia:
Script: select sysdate as Hoy, extract(day from sysdate) as Da2 from dual;

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
10
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

Last_Day

Retorna el ltimo da del mes.


e) Muestre el dia de hoy, el ultimo dia del mes y el primer dia del siguiente mes

Script: select sysdate as Hoy, last_day(sysdate) as fin_del_mes, last_day(sysdate) + 1 as proxino_mes


from dual;

Month_Between

Retorna el nmero de meses entre dos fechas.

f) Muestre cuantos meses hay entre el 19 de abril de 2005 y el 19 de


diciembre de 2004.
Script: select months_between('19-Abr-2005','19-Dic-2004') from dual;

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
11
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

SysDate

Retorna la fecha y hora actual.


Script: select sysdate from dual;

Funciones de Conversin

Cast

Convierte una expresin a un tipo de dato especfico.


Script: select cast(sysdate as varchar2(24)) from dual;

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
12
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

To_Char

Convierte un dato tipo fecha nmero a una cadena con un formato especifico.

Conversin de Datos Tipo Fecha


Script: select to_char(sysdate, 'Day, Month YYYY',' NLS_DATE_LANGUAGE=English') from dual;

Script: select to_char(sysdate, 'Day, Month YYYY',' NLS_DATE_LANGUAGE=S panish') from dual;

Script: Select to_char(sysdate, 'Day, DD "de" MONTH "de" YYYY') from dual;

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
13
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

Conversin de Datos Numricos


Script: select to_char(15.6789,'99,999.00') from dual;

Script: select to_char(45.78234,'00,000.00') from dual;

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
14
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

Script: select to_char(346.4567,'L99,999.00') from dual;

To_Date

Convierte una cadena con una fecha a un dato de tipo fecha.


Script: select to_date('15-01-2005','DD-MM-YYYY') from dual;

To_Number

Convierte una cadena numrica a su respectivo valor numrico.


Script: select to_number('15.45','999.99') from dual;

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
15
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

Otras Funciones

NULLIF

Compara dos expresiones expr1 y expr2, si ambas son iguales retorna NULL, de lo
contrario retorna exp1. expr1 no puede ser el literal NULL.
Script: select ename, mgr, comm, NULLIF(comm,0) test1, NULLIF(0, comm) test2,
NULLIF(mgr,comm) test3 from emp where empno in (7844,7839, 7654, 7369);

Sys_Connect_By_Path

SYS_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.
Script1: column path format a40
Script2:select last_name, sys_connect_by_path(last_name, '/') Path from employees start with
last_name = 'Kochhar' connect by prior employee_id = manager_id;

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
16
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

Sys_Context

Retorna el parmetro asociado con un namespace.


Script: select sys_context('USERENV',' HOST') from dual;

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
17
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

UID

Devuelve un nmero entero que identifique nicamente a cada usuario.


Script: select id from dual;

User

Retorna el nombre del usuario de la sesin actual


Script: select user from dual;

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
18
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

Totalizando Datos y Funciones de Grupo


Funciones de Grupo
AVG

Obtiene el promedio de una columna o expresin. Se puede aplicar la clusula DISTINCT.

Script: select avg(salary) from employees where department_id = 30;

COUNT

Cuenta las filas de una consulta. Se puede aplicar DISTINCT.

Script : select count(*) from departments;

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
19
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

Script(Con Distinct): select count(distinct department_i d) from employees;

MAX

Retorna el mximo valor de una columna expresin.

a) Muestre el salario maximo de los empleados del departamento numero 80

Script: select max(salary) from employees where department_i d = 80;

MIN

Retorna el mnimo valor de una columna expresin.

b) Muestre el salario minimo de los empleados del departamento numero 80

Script: select min(salary) from employees where department_i d = 80;

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
20
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

SUM

Retorna la suma de los valores de una columna. Se puede aplicar DISTINCT.

Script: select sum(salary) from employees where department_i d = 80;

GROUP BY
Se utiliza para agrupar data en base a una ms columnas, para aplicar funciones de
grupo.

Mostrar los nmeros de departamentos y la cantidad de empleados con que cuentan

Script: select department_i d as Departamento, count(*) as Empleados from employees group by


department_id;

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
21
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

Mostrar la cantidad de empleados por puesto de trabajo en los departamentos 50 y 80.

Script: select department_i d as Departamento, job_id as puesto, count(*) as Empleados from


employees where department_i d in (50,80) group by department_i d, job_id;

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
22
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

Mostrar la c antidad de empleados que han ingresado por ao.

Script: select extract(year from hire_date) as ao, count(*) as empleados from employees group by
extract(year from hire_date);

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
23
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

HAVING

Permite limitar mediante una condicin de grupo el resultado obtenido despus de aplicar
GROUP BY, tal como se aprecia en el siguiente grfico.

Mostrar los Departamentos que tienen ms de 10 empleados.

Script: select department_i d as Departamento, count(*) as Empleados from employees group by


department_id having count(*) > 10;

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
24
Universidad de El Salvador BAD-115 Gua de Laboratorio #4

Mostrar los puestos de trabajo de los que solo hay un empleado en la empresa.

Script: select job_id as Puesto, count(*) as Empleados from employees group by job_id having
count(*) = 1;

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
25

Вам также может понравиться