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 #3a
Lenguaje estructurado de Consulta SQL
Bsico
Contenido
Objetivos .................................................................................................................................. 1
Introduccin ............................................................................................................................. 1
Desarrollo. ................................................................................................................................ 2
Esquemas a utilizar en la gua ................................................................................................. 2
Definicin .......................................................................................................................... 2
Esquemas .......................................................................................................................... 2
Conexiones........................................................................................................................ 3
Ejercicio 1 Consultar Catalogos ............................................................................................... 4
Ejercicio 2: Consultar la Estructura de una Tabla...................................................................... 6
Ejercicio 3: Consultar el Contenido de una Tabla...................................................................... 6
Fundamentos de SQL................................................................................................................. 7
Consultas Simples.....................................................................................................................10
Ejercicio 4: Mostrar registros de la Tabla Jobs en HR ...........................................................10
Ejercicio 5: Mostrar los atributos job_title y min_salary de la Tabla Jobs en HR ....................10
Ejercicio 6: Mostrar los atributos job_title y min_salary de la Tabla Jobs en HR, renombrando
las columnas con los nombres Titulo y Salario Minimo. .......................................................11
Ejercicio 7: Mostrar codigos de departamento(sin repeticiones) que existen en la table
Employees de HR ..............................................................................................................11
Ejercicio 8: Extraer Datos de la Tabla DUAL .........................................................................12
Ejercicio 9: Ejercicios de Limitacin las Filas(where)............................................................12
Consultas con Operadores Lgicos ............................................................................................16
Consultas con Otros Operadores(IN, NOT IN ) ..........................................................................17
Consultas con Ordenamiento de Filas ........................................................................................19
Consultas con Expresiones Condicionales(CASE).........................................................................21
Anexo. .....................................................................................................................................24
Universidad de El Salvador BAD-115 Gua de Laboratorio #3
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 correctamente la clusula where para restringir las filas a mostrar, con expresiones
simples y complejas.
Hacer ajustes en las consultas que utilizan valores nulos.
Introduccin
En esta de laboratorio se utilizaran los esquemas Scott y HR para realizar
operaciones bsicas de consulta con SQL, ejecutando instrucciones en SQLDeveloper
conectado a los esquemas antes mencionados.
Se detallaran fundamentos de consultas en SQL que incluyen definiciones de elementos
bsicos, Operadores Aritmticos, de concatenacin, de conjunto, precedencia der
operadores, literales, etc.
Se utilizaran operadores lgicos y relacionales, ordenamiento de filas, valores
condicionales dentro de un atributo (CASE) y otras operaciones especiales como
concatenacin y manejo de valores nulos en consultas.
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 #3
Desarrollo.
Esquemas a utilizar en la gua
Definicin
El 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 [Link] creamos la base
de datos de Oracle, por defecto crea dos esquemas de ejemplo, para poder realizar nuestras
pruebas.
Esquemas
Estos esquemas son los siguientes:
HR Se trata de un esquema de recursos humanos, cuenta con 7 tablas.
SCOTT Se trata de un esquema muy bsico de recursos humanos, cuenta con tan solo 4
tablas.
Esquema HR
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 #3
Esquema SCOTT
Conexiones
Realice las conexiones para los esquemas Scott y HR con los parmetros que se muestran:
HR
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 #3
SCOTT
Si ya los haba hecho, haga caso omiso de este apartado. Si tiene instalada la versin express de
Oracle, consulte el Anexo.
Ejercicio 1 Consultar Catalogos
a) Consultar el catlogo de scott
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 #3
b) Consultar el catlogo de HR
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 #3
Ejercicio 2: Consultar la Estructura de una Tabla
Sintaxis DESCRIBE Nombre_Tabla
Como ejemplo ilustrativo consultemos la estructura de la tabla EMP del esquema SCOTT:
Ejercicio 3: Consultar el Contenido de una Tabla
Sintaxis SELECT * FROM Nombre_Tabla
Como ejemplo ilustrativo consultemos e contenido de la tabla DEPT de SCOTT:
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 #3
Fundamentos de SQL
Definiciones
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.
Tipos de Datos de Oracle
Categora Tipos de Datos
Character CHAR, NCHAR, VARCHAR2, NVARCHAR2
Number NUMBER
Long and raw LONG, LONG RAW, RAW
Date and time DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIME STAMP WITH LOCAL TIME
ZONE, INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND
Large object CLOB, NCLOB, BCLOB, BFILE
Row ID ROWID, UROWID
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 #3
Operadores y Literales
Operadores Aritmticos
Operador Propsito Ejemplo
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 o
- 56.8-18
expresiones.
Multiplicacin: Usado para multiplicar dos nmeros o
* 7*5
expresiones.
/ Divisin: Usado para dividir un nmero o expresin con otro. 8.67/3
Operador de Concatenacin
Dos barras verticales ( || ) son usadas como operador de concatenacin. La siguiente
tabla muestra dos ejemplos.
Ejemplo Resultado
Alianza Lima || Campen Alianza LimaCampen
Alianza Lima || Campen Alianza Lima Campen
Operadores de Conjuntos
Estos Operadores son usados para combinar el resultado de dos consultas.
Operador Propsito
UNION Retorna todas las filas de cada consulta; no las filas duplicadas.
Retorna todas las filas de cada consulta, incluyendo las filas duplicadas.
UNION ALL
no las filas duplicadas
INTERSECT Retorna las filas distintas del resultado de cada consulta.
MINUS Retorna las filas distintas que son retornadas por la primera consulta pero
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 #3
que no son retornadas por la segunda consulta.
Precedencia de Operadores
Precedencia Operador Propsito
1 -+ Operadores unarios, negacin
2 */ Multiplicacin, divisin
3 + - || Suma, resta, concatenacin
Literales
Son valores que representan un valor fijo. Estos pueden ser de cuatro tipos diferentes:
CEPS-UNI
Nos vemos en Peters, la tienda del chino
Texto
El curso es Oracle, y lo dictan en CEPS-UNI
28-JUL-2006
45
Entero
-345
25
Nmero -456.78
15E-15
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 #3
Consultas Simples
Usando la Sentencia SELECT
Consulta del contenido de una Tabla
Nota: Las siguientes consultas se realizaran sobre el esquema HR a no ser que se indique lo
contrario
Ejercicio 4: Mostrar registros de la Tabla Jobs en HR
Seleccionando Columnas
Ejercicio 5: Mostrar los atributos job_title y min_salary de la Tabla Jobs en HR
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 #3
Alias para Nombres de Columnas
Ejercicio 6: Mostrar los atributos job_title y min_salary de la Tabla Jobs en HR,
renombrando las columnas con los nombres Titulo y Salario Minimo.
Nota: pruebe este mismo comando, suprimiendo la palabra AS
Asegurando Valores nicos
Ejercicio 7: Mostrar codigos de departamento(sin repeticiones) que existen en la table
Employees de HR
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 #3
La Tabla DUAL
Ejercicio 8: Extraer Datos de la Tabla DUAL
La fecha del sistema
Mostrar el usuario con el que se ha entrado y la fecha del sistema
Ejercicio 9: Ejercicios de Limitacin las Filas(where)
Operadores de Comparacin
Igualdad ( = )
a) Mostrar nombre, apellido y codigo de departamento de los empleados del
departamento 90.
Script: select first_name || ' ' || last_name, department_i d from employees where department_i d = 90;
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 #3
Diferente ( !=, <>, ^= )
b) Mostrar nombre, apellido y porcentaje de comission de los empleados que no
tienen comission de 0.35.
Script : select first_name || ' ' || last_name, commission_pct from employees where commission_pct
<> .35;
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 #3
Menor Que ( < )
c) Mostrar nombre, apellido y porcentaje de comission de los empleados que tienen
comission de menos del 15% ( 0.15).
Script : select first_name || ' ' || last_name, commission_pct from employees where commission_pct <
.15;
Mayor Que ( > )
d) Mostrar nombre, apellido y porcentaje de comission de los empleados que tienen
comission de mas del 35% ( 0.35).
Script : select first_name || ' ' || last_name, commission_pct from employees where commission_pct >
.35;
Menor Igual Que ( <= )
e) Mostrar nombre, apellido y porcentaje de comission de los empleados que tienen
comission de menos del 15% incluido este ( 0.15), .
Script : select first_name || ' ' || last_name, commission_pct from employees where commission_pct
<= .15;
Mayor Igual Que ( >= )
f) Mostrar nombre, apellido y porcentaje de comission de los empleados que tienen
comission de mas del 35% incluido este( 0.35).
Script : select first_name || ' ' || last_name, commission_pct from employees where commission_pct
>= .35;
ANY SOME
g) Mostrar nombre, apellido y codigo de departamento de los empleados que trabajan
en alguno de los departamentos que son menores o iguales a 10,15,20,o 25.
Script: select first_name || ' ' || last_name, department_i d from employees where department_i d <=
ANY (10,15,20,25);
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 #3
ALL
h) Mostrar nombre, apellido y codigo de departamento de los empleados que trabajan
en los departamentos de numeracion mayor a 80, 90 y 100.
Script: select first_name || ' ' || last_name, department_i d from employees where department_i d >=
ALL (80,90,100);
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 #3
Consultas con Operadores Lgicos
NOT
i) Mostrar nombre y codigo de departamento de los empleados que trabajan en los
departamentos que en los que su numeracion no es mayor o igual a 30.
Script select first_name, department_id from employees where not (department_i d >= 30);
AND
j) Mostrar nombre y salario de los empleados que se apellidan Smith y ganan mas
de 75000.
Script: select first_name, salary from employees where last_name = 'Smith' and salary > 7500;
OR
k) Mostrar nombre y apellico de los empleados con nombre Kelly o su apellido es
Smith
Script: select first_name, last_name from employees where first_name = 'Kelly' or last_name =
'Smith';
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 #3
Consultas con Otros Operadores(IN, NOT IN )
IN y NOT IN
l) Mostrar nombre y codigo de departamento de los empleados que trabajan en los
departamentos 10,20 o 90.
Script: select first_name, last_name, department_i d from employees where department_id in (10, 20,
90);
m) Mostrar nombre y codigo de departamento de los empleados que no trabajan en
los departamentos 10,30,40,50,60,80,90,100 y 110.
Script: select first_name, last_name, department_id from employees where department_i d not in (10,
30, 40, 50, 60, 80,90, 100,110);
BETWEEN
n) Mostrar nombre, apellido y salario de los empleados que ganan entre 5000 y
6000.
Script: select first_name, last_name, salary from employees where salary between 5000 and 6000;
EXISTS
o) Mostrar nombre, apellido y codigo de departamento de los empleados que
trabajan en el departemento llamado Administracion.
Script: select first_name, last_name, department_i d from employees e where exists (select 1 from
departments d where d.department_i d = e.department_i d and d.department_name =
'Administration');
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 #3
IS NULL y IS NOT NULL
p) Mostrar nombre, apellido y codigo de departamento de los empleados que no
tienen un departamento asignado(department=nulo).
Script: select first_name,last_name, department_i d from employees where department_i d is null;
LIKE
q) Mostrar nombre, apellido y codigo de departamento de los empleados cuyos
nombres empiezan con la palabra Su y sus apellidos empiezan con S.
Script: select first_name, last_name from employees where first_name like 'Su% ' and last_name not
like 'S% ';
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 #3
Consultas con Ordenamiento de Filas
a) Mostrar nombre, apellido y codigo de departamento de los empleados del
departamento 90 ordenados por nombre.
Script: select first_name, last_name from employees where department_i d = 90 order by first_name;
b) Mostrar nombre, apellido y codigo de departamento de los empleados del
departamento 90 ordenados por apellido.
Script: select first_name || ' ' || last_name "Employee Name" from employees where department_i d =
90 order by last_name;
c) Mostrar nombre, apellido, fecha de ingreso a la empresa y codigo de
managers(MID) de los empleados que estan en los departamentos 110,100
ordenados por mid ascendentemente, salario descendentemente, y fecha de
ingreso a la empresa ascendentemente.
Script: select first_name, hire_date, salary, manager_id mid from employees where department_i d in
(110,100) order by mid asc, salary desc, hire_date;
d) Mostrar las distintas regiones de los paises ordenadas por su codigo.
Script: select distinct 'Region ' || region_id from countries order by 'Region ' || region_id;
e) Mostrar nombre, apellido, fecha de ingreso a la empresa y codigo de
managers(MID) de los empleados que estan en los departamentos 110,100
ordenados por codigo de managers(MID), apellido y fecha de ingreso a la
empresa.
Script: select first_name, hire_date, salary, manager_id mid from employees where department_i d in
(110,100) order by 4, 2, 3;
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 #3
Ordenando con registros Nulos
f) Mostrar el apellido y el porcentaje de commission de los empleados cuyo apellido
empieza con A ordenado por el porcentaje de comision.
Script: select last_name, commission_pct from employees where last_name like 'A% ' order by
commission_pct asc;
g) Mostrar el apellido y el porcentaje de commission de los empleados cuyo apellido
empieza con A ordenado por el porcentaje de comision considerando los valores
nulos como los primeros en ser ordenados.
Script: select last_name, commission_pct from employees where last_name like 'A% 'order by
commission_pct asc nulls first;
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 #3
Consultas con Expresiones Condicionales(CASE)
La Expresin CASE
Caso 1
Formato
CASE <expresin>
WHEN <Valor1> THEN <Valor de Retorno 1>
WHEN <Valor2> THEN <Valor de Retorno 2>
WHEN <Valor3> THEN <Valor de Retorno 3>
.. .
[ELSE <Valor de Retorno>]
END
h) Mostrar el nombre del pais y codigo de region estableciendo que si es de la
Region 1 pertenece a Europa, 2 a America, 3 a Asia y si no esta en los tres casos
anteriores sera otro continente, hagalo solo para los paises en los que su nombre
empiece con la letra I.
Script: select country_name, region_id, case region_id when 1 then 'Europa' when 2 then 'America'
when 3 then 'Asia' else 'Otro' end as continente from countries where country_name like 'I% ';
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 #3
Caso 2
Formato
CASE
WHEN <Condicin1> THEN <Valor de Retorno 1>
WHEN <Condicin2> THEN <Valor de Retorno 2>
WHEN <Condicin3> THEN <Valor de Retorno 3>
.. .
[ELSE <Valor de Retorno>]
END
i) Mostrar el nombre, codigo de departamento y salario de los empleados
especificando que es bajo si es menor a 6000, regular si esta entre 6000 y es
menor de 10000 y Alto si es mayor o igual a 10000 en una columna llamada
categoria para los empleados que estan en los departamentos con identificador
menores o iguales a 30.
Script: select first_name, department_i d, salary, case
when salary < 6000 then 'Bajo'
when salary < 10000 then 'Regular'
when salary >= 10000 then 'Alto'
end as Categora
from employees
where department_i d <= 30
order by first_name;
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 #3
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 #3
Anexo.
Este anexo ha sido hecho para que se pueda desarrollar las guas de Oracle sobre los esquemas HR
y SCOTT para la base de datos xe (Express Edition)
1. Re activar el usuario hr
2. Crear usuario Scott
Conctese al usuario administrador, y dentro de este digite los comandos que se le muestran
Cierre la conexin al administrador y haga una conexin nueva a Scott con los parmetros
siguientes:
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 #3
3. Crear el Esquema e introducirle los Datos al esquema Scott
a) Conctese al usuario Scott y pegue el script de creacin de Base de Datos
(01_Creacion_Scott_Oracle) luego presione el icono de ejecutar script.
b) Siempre en el usuario Scott, Borre el script anterior y pegue el script de insercin de
datos (01_ScriptDatos_Scott_Oracle) luego presione el icono de ejecutar script.
Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
25