1. UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRION
FACULTAD DE INGENIERIA INDUSTRIAL,
SISTEMAS E INFORMATICA
ESCUELA ACADEMICO PROFESIONAL DE
INGENIERIA INFORMATICA
CURSO
BASE DE DATOS II
ORACLE 11g - IMPLEMENTACION
SEPARATA Nº 01
INSTALACION – CONSULTAS BASICAS
DOCENTE
ING. CIP EDWIN IVAN FARRO PACIFICO
HUACHO-LIMA
PERU
2. Universidad Nacional José Faustino Sánchez Carrión
Mg Ing Edwin Iván Farro Pacífico Pag. 2
SQL*PLUS
Concepto
Es una herramienta sencilla herramienta de desarrollo de PL/SQL que permite al usuario
ingresar instrucciones SQL y bloques PL/SQL de forma interactiva mediante una línea de
comandos. Dichas instrucciones se envían a la base de datos directamente, y los resultados se
devuelven en pantalla.
Es un entorno en modo texto y no contiene un motor de PL/SQL local.
Las instrucciones de SQL*Plus no son sensibles a la diferencia entre mayúsculas y minúsculas.
Iniciar SQL*Plus
Comenzaremos realizando la conexión a la base de datos mediante Inicio/Programas/Oracle-
OraHome92/Application Development/Sql Plus. Se obtiene la pantalla Conectar en cuyo campo
Usuario tecleamos scott y en cuyo campo Clave digite tiger. Al presionar Acetar produce la
conexión con la instancia ORACLE de la base de datos, que era la instancia creada por defecto
cuando se realizó la instalación.
3. Universidad Nacional José Faustino Sánchez Carrión
Mg Ing Edwin Iván Farro Pacífico Pag. 3
Base de datos oracle
LENGUANE DE MANIPULACION DE DATOS
Comando SELECT
El comando se utiliza en ORACLE 9i para seleccionar información de la base de datos como un
conjunto de registros.
Sintaxis:
SELECT [predicado] campo1 [As alias],campo2 [As alias],campo3 [As alias],...
FROM expresión
WHERE
[GROUP BY...]
[HAVING...]
[ORDER BY...]
Predicado Uno de los siguientes predicados: ALL, DISTINCT, DISTINCT ROW o
TOP. Puede utilizar el predicado para limitar el número de registros
devueltos.
* Especifica que se seleccionan todos los campos de la tabla o tablas
especificadas.
Tabla El nombre de la tabla que contiene los campos de la que se van a
seleccionar los registros.
campo1,campo2,...:
campo1,campo2,… Los nombres de los campos que contienen los datos que desea recuperar.
Si incluye más de un campo, estos se recuperan en el orden enumerado.
Alias1, alias2 Los nombres que se van a utilizar como encabezados de columnas en vez
de los nombres de columnas originales en la tabla.
expresiónTabla El nombre de la tabla o tablas que contienen los datos que desea
recuperar
4. Universidad Nacional José Faustino Sánchez Carrión
Mg Ing Edwin Iván Farro Pacífico Pag. 4
baseDatosExterna El nombre de la base de datos que contiene las tablas en expresiónTabla
si no están en la base de datos activa.
Ejercicio 01
Mediante una sentencia de tipo SELECT presentar todas las tablas de la base de datos instalada
por defecto en Oracle 9i para el usuario scott.
SQL> select TABLE_NAME from user_tables;
TABLE_NAME
------------------------------
Ejercicio
Mostrar la estructura de cada tabla mostrada.
SQL> DESC bonus;
Nombre ¿Nulo? Tipo
----------------------------------------- -------- ----------------------------
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
SAL NUMBER
COMM NUMBER
SQL> DESC dept;
Nombre ¿Nulo? Tipo
----------------------------------------- -------- ----------------------------
DEPTNO NOT NULL NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)
SQL> DESC emp;
Nombre ¿Nulo? Tipo
----------------------------------------- -------- ----------------------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
5. Universidad Nacional José Faustino Sánchez Carrión
Mg Ing Edwin Iván Farro Pacífico Pag. 5
SQL> DESC salgrade;
Nombre ¿Nulo? Tipo
----------------------------------------- -------- ----------------------------
GRADE NUMBER
LOSAL NUMBER
HISAL NUMBER
Ejercicio
Mostrar el contenido de cada tabla
SQL> SELECT * FROM dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
Forma 1
SQL>SELECT * FROM dept;
Forma 2
SQL>SELECT deptno,dname,loc FROM dep.;
Cláusula DISTINCT
Muestra los valores únicos de una columna, es decir valores no repetidos.
Ejercicio
Mostrar todos los cargos diferentes de la tabla emp.
SQL>SELECT DISTINCT job FROM emp;
Definición de cabeceras.
Ejercicio
Mostrar todos los cargos distintos que existen en la tabla dept poniéndole el alias de Cargos.
SQL>SELECT DISTINCT JOB Cargos FROM emp;
6. Universidad Nacional José Faustino Sánchez Carrión
Mg Ing Edwin Iván Farro Pacífico Pag. 6
Cláusula WHERE
Es utilizada para establecer una o más condiciones.
Operadores de comparación
= Igual a
!= ,<>,^= Diferente
> Mayor que
>= Mayor o igual a
< Menor que
<= Menor o igual a
BEETWEEN a AND b Entre a y b
IN Igual a cualquier elemento de la lista
IS NULL Es un valor nulo
LIKE Busca un patrón de caracteres
Ejercicio
Mostrar el nombre del empleado, el cargo y el salario de todos los empleados que no sean
analistas.
SQL> SELECT ename,job FROM emp
2 WHERE job<>'ANALYST';
Valores Nulos (NULL)
Un valor nulo significa “Valor desconocido u omitido”. No significa cero ni blanco. Muchas
expresiones tomarán el valor de NULL si uno de os operandos lo es.
Ejercicio
Mostrar todos los empleados cuya comisión es nula.
SQL> SELECT ename,comm FROM emp
2 WHERE comm IS NULL;
Ejercicio
Mostrar nombre, cargo, salario, comisión, salario+comisión
SQL> SELECT ename,job,sal,comm,sal+comm "Salario + Comm"
2 FROM emp;
Función NVL
Sintaxis:
NVL(Expr1,Expr2)
Propósito
Si el valor de Expr1 es NULL, LA FUNCIÓN DEVUELVE Expr2; si no, devuelve Expr1.
7. Universidad Nacional José Faustino Sánchez Carrión
Mg Ing Edwin Iván Farro Pacífico Pag. 7
Ejemplo
Mostrar nombre, cargo, salario, comisión, salario+comisión de todos los empleados que trabajan
en el departamento 30. Si la comisión es nula mostrar 0.
select ename,job,sal,nvl(comm,0),sal+nvl(COMM,0),deptno
from emp
where deptno=30
Caracteres comodines
Son utilizados con el operador LIKE; y son los siguientes:
% : Reemplaza a un conjunto de caracteres en cualquier posición de una cadena
_ : Reemplaza a un solo carácter en una posición específica de una cadena.
Ejemplo
Mostrar todos los empleados cuyo nombre empiece con J.
SQL> SELECT ename FROM emp
2 WHERE ename LIKE 'J%';
Ejemplo
Mostrar todos los empleados cuya tercera letra de su nombre sea la R.
SQL> SELECT ename FROM emp
2 WHERE ename LIKE '__R%';
Expresiones Lógicas
Con la cláusula WHERE se pueden seleccionar filas de una tabla con más de una condición de
búsqueda. Estas condiciones de búsqueda se pueden unir por medio de expresiones lógicas:
AND y OR.
Ejemplo:
Mostrar el nombre, cargo y el salario de todos los Gerentes o Vendedores cuyo sueldo este entre
2000 y 3000.
SELECT ename,job,sal
FROM emp
WHERE job='MANAGER' OR JOB='SALESMAN'
AND sal BETWEEN 2000 AND 3000
Cláusula ORDER BY
Permite Ordenar:
Ascendentemente
Descendentemenete
Por múltiples columnas
Por la posición de las columnas
8. Universidad Nacional José Faustino Sánchez Carrión
Mg Ing Edwin Iván Farro Pacífico Pag. 8
Ejemplo (Ascendente)
Mostrar el nombre, el cargo y el salario de todos los empleados que trabajen en e departamento
20 ordenados ascendentemente por salario.
SQL> SELECT ename,job,sal FROM emp
2 WHERE deptno=20
3 ORDER BY sal;
Ejemplo (Descendente)
Mostrar el nombre, cargo y el salario de todos los empelados que trabajen en el departamento 10
ordenados descendentemente por salario.
SQL> SELECT ename,job,sal FROM emp
2 WHERE deptno=10
3 ORDER BY sal;
Ejemplo (Por múltiples columnas)
Mostrar el nombre, el cargo y el salario de todos los empleados; ordenando el resultado
ascendentemente por cargo, si existe mas de un empleado con el mismo cargo ordenarlos de
forma descendente por salario.
SQL> SELECT ename,job,sal
2 FROM emp
Ejemplo (Por la posición de las columnas)
Mostrar el nombre del empleado, el cargo y el salario de todos los empleados del departamento
20 ordenados ascendentemente por salario.
SQL> SELECT ename,job,sal
2 FROM emp
3 WHERE deptno=20
4 ORDER BY 3;
FUNCIONES DE CARACTER
Nombre Descripción
UPPER Convierte texto a mayúscula
LOWER Convierte texto a minúscula
INITCAP Primera letra a mayúscula y luego a minúscula
CONCAT Une dos o más campos
SUBSTR Extrae caracteres de una cadena
LENGHT Devuelve la longitud de una cadena
INSTR Busca un carácter y devuelve su posición
LPAD Convierte un número a carácter, le dan un tamaño y lo llena con un carácter que se
indique.
RPAD Realiza lo mismo por la derecha
TRIM Borra espacios en blanco
9. Universidad Nacional José Faustino Sánchez Carrión
Mg Ing Edwin Iván Farro Pacífico Pag. 9
Ejercicio
Listar los nombres de los empleados en minúscula
SELECT LOWER(ename)
FROM emp
Ejercicio
Listar los nombres de los empleados con la primera letra en mayúscula
SELECT INITCAP(ename)
FROM emp;
Ejercicio
Listar juntos el cargo y nombre del empleado
SELECT CONCAT(ename,job)
FROM emp
Ó
Listar juntos el cargo y nombre del empleado, con un espacio entre ambos campos
SELECT CONCAT(ename,job)
FROM emp
Ejercicio
Devolver la longitud de cada nombre de la tabla empleado
SELECT LENGTH(ename)
FROM EMP;
Ejercicio
Devolver la posición de la letra A de cada nombre.
SQL> SELECT INSTR(ename,'A')
2 FROM emp;
Ejercicio
SQL> SELECT LPAD(sal,20,'_')
2 FROM emp;
Ejercicio
SELECT LENGTH(ename)
FROM emp
Ejercicio
SQL> SELECT TRIM('A' FROM ename)
2 FROM emp;
10. Universidad Nacional José Faustino Sánchez Carrión
Mg Ing Edwin Iván Farro Pacífico Pag. 10
FUNCIONES NUMERICAS
ROUND
Ejercicio
SQL>SELECT ROUND(45.926,2) FROM dual;
TRUNC
Ejercicio
SQL>SELECT TRUNC(45.926,2) FROM dual;
MOD
Ejercicio
SQL>SELECT MOD(10,3) FROM dual;
CEIL
Siguiente número entero
Ejercicio
SQL>SELECT CEIL(10.4) FROM dual;
FLOOR
Al número entero anterior
Ejercicio
SQL>SELECT FLOOR(10.4) FROM dual;
POWER
Potencia
Ejercicio
SQL> SQL> SELECT POWER(2,3) FROM dual;
FUNCIONES DE FECHA
Ejercicio
Visualizar la el nombre y fecha del 23/05/87
SQL> select ename,hiredate
2 from emp
3 where hiredate='23/05/87';
Ejercicio
Mostrar fecha del sistema.
SQL> select sysdate from dual;
Ejercicio
Sumar 90 días a la fecha de hoy.
SQL> SELECT sysdate+90 FROM dual;
Ejercicio
11. Universidad Nacional José Faustino Sánchez Carrión
Mg Ing Edwin Iván Farro Pacífico Pag. 11
Cuantas semanas pasaron desde el 01/01/2005 hasta hoy
SQL> select months_between(sysdate,'01/01/05')
2 from dual;
Ejercicio
Imprimir el día siguiente
SQL> select last_day('29/04/05')
2 from dual;
Ejercicio
Imprimir la próxima fecha a 6 meses de la actual
SQL> select add_months('30/04/05',6)
2 from dual;
Ejemplo
Imprimir el campo fecha en formato de fecha larga
SQL> select hiredate,to_char(hiredate,'day dd month yyyy') as Fecha
2 from emp;
Para imprimir los dígitos con formato de moneda, debe ser convertido a texto y tener en cuenta
lo siguiente;
Elemento Descripción
9 Número
0 Obliga a mostrar un cero
$ Coloca un sigo de dólar flotante
L Símbolo de moneda por defecto
. Imprime un decimal
, Imprime separador de miles
Ejemplo
Imprimir el campo sal con prefijote $
SQL> select sal,to_char(sal,'$999,999.00')
2 from emp;
CASE
Ejemplo
Imprimir el sueldo de cada empleado con las siguientes modificaciones :
President 30
Manager 25
Clerk 20
Salesman 15
12. Universidad Nacional José Faustino Sánchez Carrión
Mg Ing Edwin Iván Farro Pacífico Pag. 12
SQL> select ename,job,case job
2 when 'president' then sal*1.3
3 when 'manager' then sal*1.25
4 when 'clerk' then sal*1.2
5 when 'salesman' then sal*1.15
6 else
7 sal*1.1
8 end as "Nuevo sueldo"
9 from emp;
DECODE
Ejemplo
Repetir el ejercicio anterior usando DECODE
SQL> select ename,job,
2 decode (job,
3 'president',sal*1.3,
4 'manager',sal*1.25,
5 'clerk', sal*1.2,
6 'salesman',sal*1.15,
7 sal*1.1) as "Nuevo Sueldo"
8 from emp;
DICCIONARIO DE DATOS
El diccionario de datos es un conjunto de tablas y vistas que contiene información descriptiva
sobre las tablas, privilegios de acceso y otras características de la base de datos.
Las tablas del diccionario de datos se crean por el archivo sql.bsq mientras se crea la base de
datos. Es la fuente central de información tanto paa el servidor ORACLE como para los
administradores y usuarios de la misma. Se ctualiza por el sevidor ORACLE, siempre que un
comando DDL es ejecutado.
El diccionario de datos está localizado en el tablespace SYSTEM del que es propietario el
usuario SYS.
Tablas del diccionario más frecuentemente usadas por los usuarios:
USER_CATALOG Tablas, vistas, sinónimos y secuencias pertenecientes al usuario.
USER_CONSTRINTS Información sobre los constraints en las Tablas de usuario.
USER_INDEXES Información sobre los índices de los Usuarios.
USER_SEQUENCES Información de los secuencias del usuario.
USER_SYNONIMOUS Información de los sinónimos del usuario.
USER_TABLES Información de las tablas del usuario.
USER_USERS Información sobre el usuario actual.
USER_VIEWS Información sobre las vistas del usuario.
ALL_TABLES Información de todas las tablas accesibles al usuario.
Ejemplo
Mostrar todas las tablas del usuario.
SQL> SELECT table_name FROM user_tables;
13. Universidad Nacional José Faustino Sánchez Carrión
Mg Ing Edwin Iván Farro Pacífico Pag. 13
Edición del Buffer
El contenido del buffer puede editarse no solamente con el editor sino también con comandos de
SQL *PLUS.
Ejemplo
Mostrar el nombre, el cargo y el salario de los empleados del departamento 20.
SQL> SELECT ename,job,sal
2 FROM emp
3 WHERE depto=20;
WHERE depto=20
*
ERROR en línea 3:
ORA-00904: "DEPTO": identificador no válido
Colocamos el puntero del buffer en la línea donde ocurrió el error para corregirlo.
SQL> 3 WHERE deptno=20
SQL> /
Ejemplo
Cambie el salario por la comisión
SQL> 1
1* SELECT ename,job,sal
SQL> c/sal/comm
1* SELECT ename,job,comm
SQL> /
Ejemplo
Añada la columna del manager a la línea actual con el comando APPEND
SQL> 1
1* SELECT ename,job,comm
SQL> A,mgr
1* SELECT ename,job,comm,mgr
SQL> /
Ejemplo
Borre la línea 3 utilizando el commando DEL
SQL>3
3* WHERE deptno=20
SQL>DEL
SQL>/
VARIABLES EN SQL*PLUS
En SQL*PLUS se pueden definir variables utilizables fuera del propio programa. Una variable en
SQL*Plus puede asimilarse a una columna de una tabla con una sóla fila de datos. Las variables,
14. Universidad Nacional José Faustino Sánchez Carrión
Mg Ing Edwin Iván Farro Pacífico Pag. 14
igual que las columnas de bases de las tablas, tienen asignado un tipo de dato (numérico,
carácter,….y contienen datos. Las variables se definen utilizando el comando DEFINE, mediante
la sintaxis:
DEFINE nombre_de_la_variable=’valor_de_la_variable”
Las variables definidas previamente pueden utilizarse en la ejecución de consultas precediendo
el nombre de la variable del signo & y encerrándolo entre comillas simples.
Ejemplo
Visualizar los empleados del departamento 30
SQL> select ename,job,deptno
2 from emp
3 where deptno='&v';
Variables de sustitución
Visualizar el promedio de los sueldos más altos y más bajos de la tabla nivel salarial de los
empleados (salgrade) utilizando variables de sustitución.
SQL> select avg(&alto) "Prom. sueldos altos",
2 avg(&bajo) "Prom. sueldos bajos"
3 from salgrade;
Si se desea que las variables almacenen el valor una sóla vez deben estar precedido del doble
signos && y antes de ejecutar eliminarlas con indefine nombre_variable.
SQL>undefine alto;
SQL>undefine bajo;
SQL> select avg(&&alto) "Prom. sueldos altos",
2 avg(&&bajo) "Prom. sueldos bajos"
3 from salgrade;