Está en la página 1de 84

Introduccin a Oracle SQL-Plus

Introduccin a Oracle
SQL-Plus
Introduccin a Oracle SQL-Plus

INDICE DE CONTENIDO

ACCESO Y VISUALIZACIN DE DATOS .......................................................................................4


EL MODELO RELACIONAL ..............................................................................................................4
VISIN GENERAL DE SQL................................................................................................................6
SQL CONTRA SQL*PLUS ..................................................................................................................6
Comandos SQL......................................................................................................................................6
Use los comandos de SQL*Plus para:....................................................................................................6
VISIN GENERAL DEL INICIO DE UNA SESIN SQL.................................................................7
ACCESO A LA AYUDA ......................................................................................................................8
VISTAZO DE LA SENTENCIA SELECT...........................................................................................8
SELECCIN DE COLUMNAS ............................................................................................................9
SELECCIN DE FILAS .....................................................................................................................12
VER EL DICCIONARIO DE DATOS................................................................................................20
Nombre de tabla ...................................................................................................................................20
Descripcin...........................................................................................................................................20
EDICIN DEL BUFFER DE SQL-PLUS ..........................................................................................21
LABORATORIO 1-1...........................................................................................................................24
EJECUCIN DE OPERACIONES SOBRE TIPOS DE DATOS Y FUNCIONES ...........................25
VISTAZO A LOS VALORES Y FUNCIONES NUMRICOS.........................................................25
REFERENCIA DE LOS VALORES Y FUNCIONES NUMRICOS...............................................25
VISTAZO A LOS VALORES Y FUNCIONES DE FECHA .............................................................30
REFERENCIA DE LOS VALORES Y FUNCIONES DE FECHA ...................................................30
REFERENCIA DE LOS VALORES Y FUNCIONES DE CARACTERES ......................................34
VISIN GENERAL DE ALGUNAS FUNCIONES ADICIONALES ...............................................37
REFERENCIA DE ALGUNAS FUNCIONES ADICIONALES .......................................................38
LABORATORIO 2-1...........................................................................................................................38
VISTAZO A LAS FUNCIONES DE GRUPO....................................................................................40
LABORATORIO 2-2...........................................................................................................................45
OBTENIENDO DATOS DE MULTIPLES TABLAS........................................................................46
CARACTERSTICAS DEL JOIN .......................................................................................................46
TIPOS DE JOIN...................................................................................................................................47
EQUIJOIN............................................................................................................................................47
OUTER JOIN.......................................................................................................................................48
SEF-JOINS ..........................................................................................................................................49
NON-EQUIJOINS ...............................................................................................................................50
OPERADORES DE CONJUNTO .......................................................................................................51
EL OPERADOR UNION ....................................................................................................................51
EL OPERADOR INTERSECCIN (INTERSECT) ...........................................................................52
EL OPERADOR MENOS (MINUS)...................................................................................................52
LABORATORIO 3-1...........................................................................................................................53
VISIN GENERAL DE LA CREACIN DE TABLAS....................................................................56
CREACIN DE TABLAS ..................................................................................................................57
RESTRICCIONES ...............................................................................................................................57
MODIFICACIN DE TABLAS .........................................................................................................59
Borrar la tabla original.........................................................................................................................61
Introduccin a Oracle SQL-Plus

CREACIN DE VISTAS ....................................................................................................................63


VISTAZO AL ACCESO DE TABLAS Y VISTAS ............................................................................66
UN VISTAZO A LA CONCESIN DE ACCESO A TABLAS Y VISTAS .....................................67
VISIN GENERAL DE LOS SINNIMOS ......................................................................................68
CREACIN DE SINNIMOS............................................................................................................69
LABORATORIO 4-1...........................................................................................................................70
VISIN GENERAL SOBRE LOS NDICES .....................................................................................71
CREACIN DE NDICES ..................................................................................................................71
CREACIN DE GENERADORES DE SECUENCIA.......................................................................74
LABORATORIO 5-1...........................................................................................................................75
INSERCIN DE FILAS ......................................................................................................................76
ACTUALIZACIN DE FILAS...........................................................................................................77
ELIMINACIN DE FILAS.................................................................................................................79
UN VISTAZO AL PROCESAMIENTO DE TRANSACCIONES ....................................................80
PROCESAMIENTO DE TRANSACCIONES....................................................................................81
LABORATORIO 6-1...........................................................................................................................84
Introduccin a Oracle SQL-Plus

ACCESO Y VISUALIZACIN DE DATOS

EL MODELO RELACIONAL

En un sistema de bases de datos relacional, la informacin se organiza en forma de tablas.

Tabla EMP

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


7369 SMITH RECEPCIONISTA 7902 17/12/1995 800 20
7499 ALLEN VENDEDOR 7698 20/02/1996 1600 300 30
7521 WARD VENDEDOR 7698 22/02/1996 1250 500 30
7566 JONES GERENTE 7839 02/04/1996 2975 20
7654 MARTIN VENDEDOR 7698 28/07/1996 1250 1400 30
7698 BLAKE GERENTE 7839 31/05/1996 2850 30
7782 CLARK GERENTE 7839 09/06/1996 2450 10
7788 SCOTT ANALISTA 7566 09/12/1997 3000 20
7839 KING PRESIDENTE 17/11/1996 5000 10
7844 TURNER VENDEDOR 7698 08/11/1996 1500 0 30
7876 ADAMS RECEPCIONISTA 7788 12/01/1998 1100 20
7900 JAMES RECEPCIONISTA 7698 03/12/1996 950 30
7902 FORD ANALISTA 7566 03/12/1996 3000 20
7934 MILLER RECEPCIONISTA 7782 23/01/1998 1300 10

Notas rpidas:
q Las categoras de informacin se listan en la parte de arriba de cada tabla
q Los casos individuales se listan al lado izquierdo
q En esta forma, usted puede visualizar, entender y usar esta informacin inmediatamente

Cada columna contiene un tipo de informacin. Cada fila est compuesta de columnas que contienen
un nico valor.

Ejemplo:

La columna SAL en la fila del empleado SMITH tiene el valor de 800

Acceso y Visualizacin de Datos 4


Introduccin a Oracle SQL-Plus

FILAS COLUMNAS

Tabla EMP

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


7369 SMITH RECEPCIONISTA 7902 17/12/1995 800 20
7499 ALLEN VENDEDOR 7698 20/02/1996 1600 300 30
7521 WARD VENDEDOR 7698 22/02/1996 1250 500 30
7566 JONES GERENTE 7839 02/04/1996 2975 20
7654 MARTIN VENDEDOR 7698 28/07/1996 1250 1400 30
7698 BLAKE GERENTE 7839 31/05/1996 2850 30
7782 CLARK GERENTE 7839 09/06/1996 2450 10
7788 SCOTT ANALISTA 7566 09/12/1997 3000 20
7839 KING PRESIDENTE 17/11/1996 5000 10
7844 TURNER VENDEDOR 7698 08/11/1996 1500 0 30
7876 ADAMS RECEPCIONISTA 7788 12/01/1998 1100 20
7900 JAMES RECEPCIONISTA 7698 03/12/1996 950 30
7902 FORD ANALISTA 7566 03/12/1996 3000 20
7934 MILLER RECEPCIONISTA 7782 23/01/1998 1300 10

La informacin en una tabla puede relacionarse con la informacin que se encuentra en otra.

Tabla DEPT

DEPTNO DNAME LOC


10 FINANZAS NEW YORK
20 INVESTIGACIN DALLAS
30 VENTAS CHICAGO
40 OPERACIONES BOSTON

Tabla EMP

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


7369 SMITH RECEPCIONISTA 7902 17/12/1995 800 20
7499 ALLEN VENDEDOR 7698 20/02/1996 1600 300 30
7521 WARD VENDEDOR 7698 22/02/1996 1250 500 30
7566 JONES GERENTE 7839 02/04/1996 2975 20
7654 MARTIN VENDEDOR 7698 28/07/1996 1250 1400 30
7698 BLAKE GERENTE 7839 31/05/1996 2850 30
7782 CLARK GERENTE 7839 09/06/1996 2450 10
7788 SCOTT ANALISTA 7566 09/12/1997 3000 20
7839 KING PRESIDENTE 17/11/1996 5000 10
7844 TURNER VENDEDOR 7698 08/11/1996 1500 0 30
7876 ADAMS RECEPCIONISTA 7788 12/01/1998 1100 20
7900 JAMES RECEPCIONISTA 7698 03/12/1996 950 30
7902 FORD ANALISTA 7566 03/12/1996 3000 20
7934 MILLER RECEPCIONISTA 7782 23/01/1998 1300 10

Acceso y Visualizacin de Datos 5


Introduccin a Oracle SQL-Plus

VISIN GENERAL DE SQL

SQL-Plus es una herramienta diseada para usar con ORACLE, la cual extiende las capacidades del
estndar ANSI-SQL

SQL CONTRA SQL*PLUS

SQL Es un lenguaje que consiste en comandos para guardar, recuperar, mantener y


regular el acceso a una base de datos

SQL*Plus Es una aplicacin que reconoce y ejecuta comandos SQL y comandos


especializados de SQL*Plus que pueden personalizar reportes, proveer facilidades
de ayuda y edicin, as como mantener variables del sistema.

Con SQL se puede manipular y recuperar datos, as como crear y modificar la estructura de los datos.
Funciones de los comandos SQL
q Consultas
q Manipulacin de datos
q Definicin de datos
q Control de los datos

Comandos SQL
ALTER DROP REVOKE
AUDIT GRANT ROLLBACK
COMMENT INSERT SELECT
COMMIT LOCK UPDATE
CREATE NO AUDIT VALIDATE
DELETE RENAME

Escriba comandos SQL*Plus para manipular comandos SQL


Use los comandos de SQL*Plus para:
q Entrar, editar, guardar, recuperar y correr comandos SQL
q Formatear, guardar, imprimir y realizar clculos sobre los resultados de una consulta en forma
de reportes
q Listar la definicin de las columnas de cualquier tabla
q Acceder y copiar datos entre bases de datos SQL
q Enviar y aceptar mensajes de un usuario final

Acceso y Visualizacin de Datos 6


Introduccin a Oracle SQL-Plus

Comandos de SQL-Plus
@ (ejecutar) COPY QUIT / (ejecutar ltimo)
DESCRIBE REMARK ACCEPT DISCONNECT
RUN APPEND EDIT SAVE
BREAK EXIT SET BTITLE
GET SHOW CHANGE HELP
SPOOL CLEAR HOST SQLPLUS
COLUMN INPUT START COMPUTE
LIST TIMING CONNECT NEWPAGE
TTITLE UNDEFINE

VISIN GENERAL DEL INICIO DE UNA SESIN SQL

El primer paso para abrir una sesin SQL es acceder a SQL-Plus

a) Interfaz Grafica

b) Desde la lnea de Comando

SQL> connect [username[/password[@database]]]

username = nombre de usuario


password = clave de acceso
@database = alias de la base de datos

c) Cierre de sesin:

SQL> exit <ENTER>

Acceso y Visualizacin de Datos 7


Introduccin a Oracle SQL-Plus

ACCESO A LA AYUDA
Acceso al sistema de ayuda en lnea, siempre y cuando el administrador de la base de datos la ha
cargado y habilitado.

Ejemplos:
Listado de todos los comandos SQL-Plus

SQL> HELP TOPICS <ENTER>

VISTAZO DE LA SENTENCIA SELECT


Tabla DEPT

DEPTNO DNAME LOC


10 FINANZAS NEW YORK
20 INVESTIGACIN DALLAS
30 VENTAS CHICAGO
40 OPERACIONES BOSTON

Tabla EMP

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


7369 SMITH RECEPCIONISTA 7902 17/12/1995 800 20
7499 ALLEN VENDEDOR 7698 20/02/1996 1600 300 30
7521 WARD VENDEDOR 7698 22/02/1996 1250 500 30
7566 JONES GERENTE 7839 02/04/1996 2975 20
7654 MARTIN VENDEDOR 7698 28/07/1996 1250 1400 30
7698 BLAKE GERENTE 7839 31/05/1996 2850 30
7782 CLARK GERENTE 7839 09/06/1996 2450 10
7788 SCOTT ANALISTA 7566 09/12/1997 3000 20
7839 KING PRESIDENTE 17/11/1996 5000 10
7844 TURNER VENDEDOR 7698 08/11/1996 1500 0 30
7876 ADAMS RECEPCIONISTA 7788 12/01/1998 1100 20
7900 JAMES RECEPCIONISTA 7698 03/12/1996 950 30
7902 FORD ANALISTA 7566 03/12/1996 3000 20
7934 MILLER RECEPCIONISTA 7782 23/01/1998 1300 10

Acceso y Visualizacin de Datos 8


Introduccin a Oracle SQL-Plus

Seleccionar informacin de una base de datos, es decir, hacer consultas, es una de las operaciones ms
comunes que se realizan sobre una base de datos.

Items de un RDBMS que pueden incluirse en una sentencia SELECT


q Columnas
q Expresiones
q Constantes

Requerimientos mnimos para ejecutar una sentencia SELECT


q El comando SELECT (indica que se va a consultar)
q La palabra FROM (indica donde se va a realizar la consulta)

SELECCIN DE COLUMNAS

Existen dos maneras distintas de visualizar todas las columnas de una tabla:
q Digitando todos los nombres de columna separados por comas y la tabla donde esas columnas
estn definidas, o
q Digitar un asterisco y el nombre de la tabla donde estn definidas las columnas
Sintaxis:

SELECT nombre_columna [, nombre_columna ...]


FROM nombre_tabla

SELECT *
FROM nombre_tabla

Ejemplo:
Visualizar todas las columnas de informacin acerca de cada departamento. (LAB1)

SQL> SELECT * FROM dept;

DEPTNO DNAME LOC


--------------- --------------- ------------------
10 FINANZAS NEW YORK
20 INVESTIGACION DALLAS
30 VENTAS CHICAGO
40 OPERACIONES BOSTON
Acceso y Visualizacin de Datos 9
4 rows selected.
Introduccin a Oracle SQL-Plus

Se puede utilizar el comando DESCRIBE para visualizar los nombres de columnas de una tabla.

Ejemplo:

Visualizar la estructura de la tabla DEPT: LAB2

SQL> DESCRIBE dept;

Name NULL? Type


--------------- --------------- ------------------
DEPTNO NOT NULL NUMBER(2)
DNAME CHAR(14)
LOC CHAR(13)

Para visualizar una columna especfica, entre el nombre de la columna en la clusula SELECT y la
tabla en la que est definida en la clusula FROM.
Ejemplo de columna nica:
Visualizar los nombres de todos los departamentos: LAB3

SQL> SELECT dname FROM dept;

DNAME
------------------------------
FINANZAS
INVESTIGACIN
VENTAS
OPERACIONES

4 rows selected.

Ejemplo de mltiples columnas:


Visualizar el nombre y nmero de todos los departamentos. LAB4

SQL> SELECT dname, deptno FROM dept;

DNAME DEPTNO
------------------------------ ---------------------
FINANZAS 10
INVESTIGACIN 20
VENTAS 30
OPERACIONES 40
Acceso y Visualizacin de Datos 10
4 rows selected.
Introduccin a Oracle SQL-Plus

Con SQL se pueden quitar las filas duplicadas antes que los datos sean devueltos por la sentencia
SELECT con la clusula DISTINCT.
Sintaxis - SELECT usando la clusula DISTINCT
SELECT DISTINCT nombre_columna [, nombre_columna ...]
FROM nombre_tabla

Ejemplo:
Visualizar cada cargo de la tabla EMP de forma nica. LAB5

SQL> SELECT DISTINCT job FROM emp;

JOB
------------------------------
ANALISTA
RECEPCIONISTA
GERENTE
PRESIDENTE
VENDEDOR

5 rows selected.

Con SQL se pueden definir alias para los nombres de columnas en una sentencia SELECT.
Ejemplo:
Visualizar cada cargo de la tabla EMP de forma nica y con el nombre de JOB LIST. LAB6

SQL> SELECT DISTINCT job JOB LIST FROM EMP;

JOB LIST
------------------------------
ANALISTA
RECEPCIONISTA
GERENTE
PRESIDENTE
VENDEDOR

5 rows selected.

Acceso y Visualizacin de Datos 11


Introduccin a Oracle SQL-Plus

Nota rpida:
q Solo se puede hacer referencia a los alias de columna en la clusula SELECT de una consulta.
SELECCIN DE FILAS

Para seleccionar filas especficas de una tabla, use la clusula WHERE para especificar una condicin.

SINTAXIS DE LA SENTENCIA SELECT

SELECT ...
FROM ...
WHERE ...

Componentes de la condicin de bsqueda de la clusula WHERE


q Nombre de columna o expresin o constante.
q Operador de comparacin
q Expresin o nombre de columna o constante

Notas rpidas:
q Las constantes de cadena y de fecha deben encerrarse entre comillas simples.
q Las constantes de carcter son sensibles a maysculas y minsculas y las constantes de fecha
deben estar en el formato DD-MM-YY

Acceso y Visualizacin de Datos 12


Introduccin a Oracle SQL-Plus

Operadores de comparacin

= Igual a

!= <> ^= Diferente de

> Mayor que


>= Mayor o igual que

< Menor que


<= Menor o igual que
BETWEEN... AND Entre dos valores

IN (lista) Igual que algn miembro de


la lista
IS NULL Es un valor nulo

LIKE Concuerda con un patrn de


caracteres
Seleccin de filas basados en criterios de igualdad o desigualdad usando los operadores
=, <>, >=, <=, >, <.
Ejemplo:
Seleccionar el nmero, nombre y salario de los empleados en el departamento 30. LAB7

SQL> SELECT empno, ename, sal FROM emp WHERE deptno = 30;

EMPNO ENAME SAL


------------ ------------- -------------
7499 ALLEN 1600
7521 WARD 1250
7654 MARTIN 1250
7698 BLAKE 2850
7844 TURNER 1500
7900 JAMES 950

6 rows selected.

Acceso y Visualizacin de Datos 13


Introduccin a Oracle SQL-Plus

Mostrar el nombre, cargo y salario de todos los empleados, excepto los gerentes. LAB8

SQL> SELECT ename, job, sal FROM emp WHERE job <> MANAGER;

ENAME JOB SAL


------------ ----------------- -------------
SMITH CLERK 800
ALLEN SALESMAN 1600
WARD SALESMAN 1250
MARTIN SALESMAN 1250
SCOTT ANALYST 3000
KING PRESIDENT 5000
TURNER SALESMAN 1500
ADAMS CLERK 1100
JAMES CLERK 950
FORD ANALYST 3000
MILLER CLERK 1300

11 rows selected.

Seleccin basada en un rango de valores usando el operador BETWEEN ... AND.


Ejemplo:

Seleccionar el nmero, cargo y nmero de departamento de todos los empleados contratados entre
Enero 1 de 1982 y Enero 1 de 1983. LAB9

SQL> SELECT ename, job, deptno, hiredate FROM emp


WHERE hiredate BETWEEN '01/01/1982' AND '01/01/1983';

ENAME JOB DEPTNO HIREDATE


---------- - -------- - --------- ----------
MILLER CLERK 10 23/01/1982

1 row selected.

Seleccin de filas basndose en la coincidencia con valores dentro de una lista, usando el operador IN.

Acceso y Visualizacin de Datos 14


Introduccin a Oracle SQL-Plus

Ejemplo:

Seleccionar el nombre, cargo y nmero de departamento de todos los empleados que son recepcionistas
y analistas: LAB10

SQL> SELECT ename, job, deptno FROM emp WHERE job IN (CLERK, ANALYST);

ENAME JOB DEPTNO


------------ ----------------- -------------
SMITH CLERK 20
SCOTT ANALYST 20
ADAMS CLERK 20
JAMES CLERK 30
FORD ANALYST 20
MILLER CLERK 10

6 rows selected.

Seleccin de filas basndose en la coincidencia con un patrn de caracteres usando comodines con el
operador LIKE:

Comodines:
q %: Coincidencia con cualquier cantidad de caracteres.
q _ : Coincidencia con un caracter.

Ejemplos:

Seleccionar el nombre, cargo, nmero de departamento y fecha de contratacin para los empleados
cuyo apellido empiece con la letra mayscula M. LAB11

SQL> SELECT ename, job, deptno, hiredate FROM emp


WHERE ename LIKE M%;

ENAME JOB DEPTNO HIREDATE


------------ ----------------- ------------- ---------------
MARTIN SALESMAN 30 28-SEP-81
MILLER CLERK 10 23-JAN-82
Acceso y Visualizacin de Datos 15
2 rows selected.
Introduccin a Oracle SQL-Plus

Seleccionar el nombre, cargo, nmero de departamento y fecha de contratacin para los empleados
cuyo apellido empiece con la letra mayscula J seguido de dos caracteres y que termine con ES.
LAB12

SQL> SELECT ename, job, deptno, hiredate FROM emp


WHERE ename LIKE J__ES;

ENAME JOB DEPTNO HIREDATE


------------ ----------------- ------------- ---------------
JONES MANAGER 20 02-APR-81
JAMES CLERK 30 03-DEC-81

2 rows selected.

Use el operador NOT para hacer una condicin negativa junto con los operadores:
q NOT BETWEEN ... AND ...
q NOT IN (lista)
q IS NOT NULL
q NOT LIKE

Conecte operadores lgicos con expresiones lgicas complejas.

Expresiones lgicas
q AND
q OR

Cuando una condicin contiene ms de una expresin, el RDBMS evala cada expresin. Luego los
resultados de cada condicin se unen teniendo en cuenta la precedencia de los operadores de conexin.

Igual precedencia: =, <>, <, <=, >, >=, IN, LIKE, IS NULL, BETWEEN AND
Luego los operadores lgicos se evalan en el siguiente orden:
q NOT
q AND
q OR

Acceso y Visualizacin de Datos 16


Introduccin a Oracle SQL-Plus

Ejemplo:

Seleccionar el nombre, cargo y salario de los gerentes que ganen ms de $1500, al igual que el de todos
los vendedores: LAB13

SQL> SELECT ename, job, sal FROM emp


WHERE sal >= 1500 AND job = MANAGER OR job = SALESMAN;

ENAME JOB SAL


------------ ----------------- -------------
ALLEN SALESMAN 1600
WARD SALESMAN 1250
JONES MANAGER 2975
MARTIN SALESMAN 1250
BLAKE MANAGER 2850
CLARK MANAGER 2450
TURNER SALESMAN 1500

7 rows selected.

Seleccionar el nombre, cargo y salario de los gerentes y vendedores que ganen $1500 o ms: LAB14

SQL> SELECT ename, job, sal FROM emp


WHERE sal >= 1500 AND (job = MANAGER OR job = SALESMAN);

ENAME JOB SAL


------------ ----------------- -------------
ALLEN SALESMAN 1600
JONES MANAGER 2975
BLAKE MANAGER 2850
CLARK MANAGER 2450
TURNER SALESMAN 1500

5 rows selected.

Acceso y Visualizacin de Datos 17


Introduccin a Oracle SQL-Plus

SALIDAS ORDENADAS DE UNA CONSULTA

SINTAXIS DE LA SENTENCIA SELECT

SELECT ...
FROM ...
WHERE ...
ORDER BY

ORDER BY puede ordenar:


q En orden ascendente.
q En modo descendente.
q Por mltiples columnas
q Por la posicin de la columna.

Ejemplos

Ordenamiento ascendente: Mostrar el salario, cargo y nombre de los empleados del departamento 10
en orden ascendente, por salario: LAB15

SQL> SELECT sal, job, ename FROM emp


WHERE deptno = 10
ORDER BY sal;

SAL JOB ENAME


------------ ----------------- -------------
1300 CLERK MILLER
2450 MANAGER CLARK
5000 PRESIDENT KING

3 rows selected.
Acceso y Visualizacin de Datos 18
Introduccin a Oracle SQL-Plus

Ordenamiento descendente: Mostrar el salario, cargo y nombre de los empleados del departamento 10
en orden descendente por salario: LAB16

SQL> SELECT sal, job, ename FROM emp


WHERE deptno = 10
ORDER BY sal DESC;

SAL JOB ENAME


------------ ----------------- -------------
5000 PRESIDENT KING
2450 MANAGER CLARK
1300 CLERK MILLER

3 rows selected.

Ordenamiento por mltiples columnas: Mostrar el nombre, cargo y salario de los empleados en el
departamento 30. Ordene los resultados por cargo. Si hay ms de un empleado con el mismo cargo,
ordnelos por salario en orden descendente y finalmente por apellido. LAB17

SQL> SELECT ename, job, sal FROM emp


WHERE deptno = 30
ORDER BY job, sal DESC, ename;

SAL JOB ENAME


------------ ----------------- -------------
JAMES CLERK 950
BLAKE MANAGER 2850
ALLEN SALESMAN 1600
TURNER SALESMAN 1500
MARTIN SALESMAN 1250
WARD SALESMAN 1250

6 rows selected.

Acceso y Visualizacin de Datos 19


Introduccin a Oracle SQL-Plus

Ordenamiento por posicin de columna: Muestre el nombre, salario y cargo de los empleados del
departamento 10 en orden ascendente por salario: LAB18

SQL> SELECT ename, sal, job FROM emp


WHERE deptno = 10
ORDER BY 2;

ENAME SAL JOB


------------ ------------ -----------------
MILLER 1300 CLERK
CLARK 2450 MANAGER
KING 5000 PRESIDENT

3 rows selected.

VER EL DICCIONARIO DE DATOS

El diccionario de datos es un conjunto de tablas y vistas que contiene informacin descriptiva acerca de
las tablas, privilegios de acceso de los usuarios, y dems caractersticas de la base de datos.

Tablas de usuario que se consultan frecuentemente en el diccionario de datos


Nombre de tabla Descripcin
user_catalog Tablas, vistas, sinnimos, secuencias y otros objetos de propiedad del
usuario
user_constraints Informacin acerca de las restricciones en las tablas del usuario
user_indexes Descripcin de los ndices del usuario
user_sequences Descripcin de las secuencias del usuario
user_synonyms Descripcin de los sinnimos del usuario
user_tables Descripcin de las tablas del usuario
user_users Informacin acerca del usuario actual
user_views Informacin acerca de las vistas del usuario
all_tables Descripcin de todas las tablas accesibles por el usuario

Acceso y Visualizacin de Datos 20


Introduccin a Oracle SQL-Plus

Ejemplos

USER_TABLES: Mostrar una columna del diccionario de datos user_tables: LAB19

SQL> SELECT table_name FROM user_tables;

TABLE_NAME
--------------------
DEPT
EMP
SALGRADE

3 rows selected.

EDICIN DEL BUFFER DE SQL-PLUS

La edicin del buffer de SQL-Plus se realiza con comandos de SQL-Plus:


Comando Descripcin
A[PPEND] Adiciona texto especfico a la lnea actual en el buffer
C[HANGE] Cambia la primera ocurrencia de un texto especfico en la lnea actual del buffer
por una cadena especificada. Ejemplo: C / ENP / EMP
CL[EAR] BUFFER Borra el contenido del buffer
o
CLE[AR] BUFFER
DEL Borra el contenido de la lnea actual del buffer
I[NPUT] Adiciona una o ms lneas de texto despus de la lnea actual del buffer.
Presione <ENTER> en una lnea en blanco para salir del modo INPUT
L[IST] Lista todas las lneas del buffer
L[IST] n Lista la lnea nmero n del buffer
R[UN] Muestra y ejecuta el contenido del buffer
/ Ejecuta el contenido del buffer
n Fija el puntero del buffer en la lnea n
n <cadena de texto> Cambia el contenido de la lnea n por la cadena de texto especificada

Acceso y Visualizacin de Datos 21


Introduccin a Oracle SQL-Plus

Nota rpida
q Un asterisco (*) aparecer al lado del nmero de lnea actual del buffer

Ejemplos:

Reescribir la lnea 2 cuando ocurre un error: LAB20

SQL> SELECT ename, job, sal


FRO emp
WHERE deptno = 30;
ERROR at line 2:
ORA-00923: FROM keyword not found where expected

SQL> 2 FROM emp


SQL> /

ENAME JOB SAL


------------- ---------------- -------------
ALLEN SALESMAN 1600
WARD SALESMAN 1250
MARTIN SALESMAN 1250
BLAKE MANAGER 2850
TURNER SALESMAN 1500
JAMES CLERK 950

6 rows selected.

Fijar el puntero del buffer en la lnea 1. Cambiar SAL por DEPTNO:

SQL> 1
1* SELECT ename, job, sal
SQL> C / sal / deptno
1* SELECT ename, job, deptno
SQL> /

Acceso y Visualizacin de Datos 22


Introduccin a Oracle SQL-Plus

ENAME JOB DEPTNO


------------- ---------------- -------------
ALLEN SALESMAN 30
WARD SALESMAN 30
MARTIN SALESMAN 30
BLAKE MANAGER 30
TURNER SALESMAN 30
JAMES CLERK 30

6 rows selected.

Agregar la columna HIREDATE en la lnea actual usando el comando APPEND:


SQL> 1
1* SELECT ename, job, deptno
SQL> A , hiredate
1* SELECT ename, job, deptno, hiredate
SQL> /

ENAME JOB DEPTNO HIREDATE


------------- ---------------- ------------- ---------------
ALLEN SALESMAN 30 20-FEB-81
WARD SALESMAN 30 22-FEB-81
MARTIN SALESMAN 30 28-SEP-81
BLAKE MANAGER 30 31-MAY-81
TURNER SALESMAN 30 08-SEP-81
JAMES CLERK 30 03-DEC-81

6 rows selected.

Borrar la lnea 3:

SQL> 3
3* WHERE deptno = 30
SQL> del
SQL> /

Acceso y Visualizacin de Datos 23


Introduccin a Oracle SQL-Plus

ENAME JOB DEPTNO HIREDATE


------------- ---------------- ------------- ---------------
SMITH CLERK 20 17-DEC-80
ALLEN SALESMAN 30 20-FEB-81
WARD SALESMAN 30 22-FEB-81
JONES MANAGER 20 02-APR-81
MARTIN SALESMAN 30 28-SEP-81
BLAKE MANAGER 30 31-MAY-81
CLARK MANAGER 10 09-JUN-81
SCOTT ANALYST 20 09-DEC-82
KING PRESIDENT 10 17-NOV-81
TURNER SALESMAN 30 08-SEP-81
ADAMS CLERK 20 12-JAN-83
JAMES CLERK 30 03-DEC-81
FORD ANALYST 20 03-DEC-81
MILLER CLERK 10 23-JAN-82

14 rows selected.

LABORATORIO 1-1
Use la tabla EMP para completar los siguientes ejercicios:

1. Muestre cada nombre de empleado y su fecha de contratacin.


2. Muestre la informacin del ejercicio 1, con la fecha de contratacin apareciendo de primero.
3. Muestre los empleados que ganan ms de $2.000. Rotule la columna como Employee.
4. Muestre los empleados que no son recepcionistas ni vendedores. Ordene la lista por el nombre
de empleado.
5. Muestre los empleados cuyo nombre contiene la letra S.
6. Muestre los nombres de empleados y su salario de aquellos que tengan un salario menor que su
comisin. Rotule el nombre del empleado como Name y la columna salario como Salary.
7. Muestre los empleados contratados en 1981.
8. Muestre los nombres y cargos de los empleados en los departamentos 10 y 20.

Acceso y Visualizacin de Datos 24


Introduccin a Oracle SQL-Plus

EJECUCIN DE OPERACIONES SOBRE TIPOS DE DATOS Y FUNCIONES

VISTAZO A LOS VALORES Y FUNCIONES NUMRICOS

Realice clculos varios sobre nmeros usando los siguientes operadores aritmticos:

+ Suma
- Resta
* Multiplicacin
/ Divisin
() Parntesis anular precedencia

Los operadores aritmticos pueden ser usados en la mayora de sentencias SQL.

REFERENCIA DE LOS VALORES Y FUNCIONES NUMRICOS

Muestre el resultado de los clculos como si fueran columnas con expresiones aritmticas en sentencias
SELECT.

Ejemplo: expresiones en sentencias SELECT.

Muestre el nombre, salario, comisin y la compensacin total para todos los vendedores cuya comisin
es mayor que el 25% de su salario. LAB21

SQL> SELECT ename, sal, comm, sal + comm


2 FROM emp
3 WHERE job = SALESMAN AND comm > 0.25 * sal
4 ORDER BY 4;

ENAME SAL COMM SAL+COMM


-------------- -------------- --------------- ---------------
WARD 1250 500 1750
MARTIN 1250 1400 2650

2 rows selected.

Acceso y Visualizacin de Datos 25


Introduccin a Oracle SQL-Plus

Una fila sin valor en una columna, se dice que contiene un valor NULO.

SQL> DESCRIBE emp;

Name Null? Type


--------------------- ---------------- ----------------------
EMPNO NOT NULL NUMBER (4)
ENAME CHAR (10)
JOB CHAR (9)
MGR NUMBER (4)
HIREDATE DATE
SAL NUMBER (7, 2)
COMM NUMBER (7, 2)
DEPTNO NOT NULL NUMBER (2)

Cuando una expresin o funcin individual hace referencia a una columna que contiene un valor nulo,
el resultado es tambin nulo.

Ejemplo:

Muestre el nombre, cargo, salario, comisin y compensacin total de los empleados del departamento
30. LAB22
SQL> SELECT ename, job, sal, comm, sal + comm
2 FROM emp
3 WHERE deptno = 30;

ENAME JOB SAL COMM SAL+COMM


-------------- -------------------- -------------- -------------- --------------------
ALLEN SALESMAN 1600 300 1900
WARD SALESMAN 1250 500 1750
JONES SALESMAN 2975
MARTIN SALESMAN 1250 1400 2650
BLAKE MANAGER 2850
SCOTT SALESMAN 3150
TURNER SALESMAN 1500 0 1500
JAMES CLERK 950

8 rows selected.

Acceso y Visualizacin de Datos 26


Introduccin a Oracle SQL-Plus

Convierta un valor nulo en uno no-nulo con el propsito de evaluar una expresin con la funcin NVL
Cuando NVL evala la primera expresin, si esta es no-nula, retorna dicha expresin; en caso
contrario, retorna la segunda.

Sintaxis:
NVL (expr1, expr2)

Ejemplo:

Muestre el nombre de empleado, cargo, salario, comisin y compensacin total de los empleados del
departamento 30. LAB23

SQL> SELECT ename, job, sal, comm, NVL(sal, 0) + NVL(comm, 0)


2 FROM emp
3 WHERE deptno = 30;

ENAME JOB SAL COMM NVL(SAL, 0)+NVL(COMM, 0)


-------------- -------------------- -------------- -------------- -------------------------------------------
ALLEN SALESMAN 1600 300 1900
WARD SALESMAN 1250 500 1750
JONES SALESMAN 2975 2975
MARTIN SALESMAN 1250 1400 2650
BLAKE MANAGER 2850 2850
SCOTT SALESMAN 3150 3150
TURNER SALESMAN 1500 0 1500
JAMES CLERK 950 950

8 rows selected.

El RDMBS evala cada expresin aritmtica. Los resultados de las expresiones se combinan luego en
el orden determinado por la precedencia de los operadores.

Acceso y Visualizacin de Datos 27


Introduccin a Oracle SQL-Plus

Orden de evaluacin
* Multiplicacin
/ Divisin

Luego
+ Suma
- Resta

Para anular la precedencia de los operadores, coloque parte de la expresin entre parntesis. ORACLE
evala estas expresiones primero.

Ejemplo:

Muestre el nombre de empleado, salario, comisin y compensacin total para todos los vendedores
ordenado por compensacin total. LAB24

SQL> SELECT ename, sal, comm, 12 * (sal + comm) total


2 FROM emp
3 WHERE job = SALESMAN
4 ORDER BY 12 * (sal + comm);

ENAME SAL COMM TOTAL


-------------- -------------- -------------- ------------
TURNER 1500 0 18000
WARD 1250 500 21000
ALLEN 1600 300 22800
MARTIN 1250 1400 31800
JONES 2975
SCOTT 3150

6 rows selected.

Acceso y Visualizacin de Datos 28


Introduccin a Oracle SQL-Plus

Muestre el nombre de empleado, salario, comisin y salario anual, ms un mes de comisin para todos
los vendedores ordenado por compensacin total. LAB25

SQL> SELECT ename, sal, comm, 12 * sal + comm total


2 FROM emp
3 WHERE job = SALESMAN
4 ORDER BY 4;

ENAME SAL COMM TOTAL


-------------- -------------- -------------- ------------
WARD 1250 500 15500
MARTIN 1250 1400 16400
TURNER 1500 0 18000
JONES 2975 300 19500
SCOTT 3150
ALLEN 1600

6 rows selected.

Las funciones numricas aceptan una entrada numrica y retornan valores numricos

Ejemplo: funcin ROUND

Liste el nombre, salario mensual, salario diario (basado en un mes laboral de 22 das) y el salario diario
redondeado al prximo entero para los empleados ALLEN y JONES. LAB26

SQL> SELECT ename, sal, sal / 22, ROUND (sal / 22, 0)


2 FROM emp
3 WHERE ename IN (ALLEN, JONES);

ENAME SAL SAL / 22 ROUND(SAL / 22, 0)


-------------- -------------- --------------- ----------------------------
ALLEN 1600 72.7272727 73
JONES 2975 135.227273 135

2 rows selected.

Acceso y Visualizacin de Datos 29


Introduccin a Oracle SQL-Plus

FUNCIN EJEMPLO RESULTADO

MOD MOD (7, 5) El residuo de dividir 7 entre 5

SQRT SQRT (25) La raz cuadrada de 25

El salario, redondeado a dos


ROUND ROUND (SAL, 2) dgitos despus del punto
decimal.
El salario, truncado a dos dgitos
TRUNC TRUNC (SAL, 2)
despus del punto decimal.

El salario, elevado a la tercera


POWER POWER (SAL, 3)
potencia.

VISTAZO A LOS VALORES Y FUNCIONES DE FECHA

REFERENCIA DE LOS VALORES Y FUNCIONES DE FECHA

Use operaciones aritmticas simples en sentencias SQL para efectuar clculos sobre fechas en las bases
de datos.

Fecha + nmero Suma un nmero de das a una fecha, produciendo otra fecha.
Fecha nmero Resta un nmero de das a una fecha, produciendo otra fecha.
Fecha Fecha Resta una fecha de otra, produciendo el nmero de das entre las dos.

Ejemplo:

Mostrar el nombre, fecha de contratacin y fecha de vencimiento del perodo de prueba (90 das) de los
empleados en el departamento 10: LAB27

Acceso y Visualizacin de Datos 30


Introduccin a Oracle SQL-Plus

SQL> SELECT ename, hiredate, hiredate + 90 $REVIEW$


2 FROM emp
3 WHERE deptno = 10;

ENAME HIREDATE $REVIEW$


-------------- --------------- ---------------
CLARK 09/06/1981 07/09/1981
KING 17/11/1981 15/02/1982
MILLER 23/01/1982 23/04/1982

3 rows selected.

FUNCIN EJEMPLO RESULTADO


ADD_MONTHS (HIREDATE, 6) Devuelve la fecha 6 meses despus de
HIREDATE
ADD_MONTHS ADD_MONTHS (HIREDATE, -6) Devuelve la fecha 6 meses antes de
HIREDATE

Devuelve el ltimo da del mes que


LAST_DAY LAST_DAY (HIREDATE)
contiene HIREDATE

NEXT_DAY (HIREDATE, Devuelve la fecha del siguiente


NEXT_DAY FRIDAY) viernes despus de HIREDATE

SYSDATE SYSDATE Devuelve la fecha y hora actual

Devuelve la cantidad de meses


MONTHS_BETWEEN
MONTHS_BETWEEN transcurridos entre HIREDATE y la
(SYSDATE, HIREDATE)
fecha actual.

GREATEST(FECHA1, GREATEST(HIREDATE, Devuelve la fecha ms tarda de una


FECHA2...) SYSDATE) lista de fechas

Acceso y Visualizacin de Datos 31


Introduccin a Oracle SQL-Plus

LEAST(FECHA1, LEAST(HIREDATE, Devuelve la fecha ms temprana de


FECHA2...) SYSDATE) una lista de fechas

Ejemplo: ADD_MONTHS

Mostrar el nombre, fecha de contratacin y 6 meses despus de la fecha de contratacin de los


empleados del departamento 10. LAB28

SQL> SELECT ename, hiredate, ADD_MONTHS (hiredate, 6) $REVIEW$


2 FROM emp
3 WHERE deptno = 10;

ENAME HIREDATE $REVIEW$


-------------- --------------- ---------------
CLARK 09/06/1981 09/12/1981
KING 17/11/1981 17/05/1982
MILLER 23/01/1982 23/07/1982

3 rows selected.

Ejemplo: SYSDATE

Mostrar el nombre y las semanas de trabajo de los empleados del departamento 20. LAB29

SQL> SELECT ename, ROUND((SYSDATE - hiredate) / 7,0) WEEKS


2 FROM emp
3 WHERE deptno = 10;

ENAME WEEKS
-------------- ---------------
CLARK 1098
KING 1075
MILLER 1066

3 rows selected.

Acceso y Visualizacin de Datos 32


Introduccin a Oracle SQL-Plus

FORMATEO DE FECHAS

ELEMENTO DESCRIPCIN

DD Da del mes (Ej. 1-31)

DY Da de la semana (Ej. FRI)


Nombre del da, en mayscula, con blancos adicionales hasta completar 9
DAY
caracteres (Ej. MONDAY)
DDSPTH Nombre del da, en mayscula, deletreado (Ej. TWELFTH)

MM Mes (Ej. 01 12)

MON Nombre del mes, en maysculas, abreviado a 3 letras (Ej. JAN)


Nombre del mes, en maysculas, con blancos adicionales hasta completar 9
MONTH
caracteres (Ej. JANUARY)
YY Ao con dos dgitos (Ej. 91)

YYYY Ao con cuatro dgitos (Ej. 1991)

HH:MI:SS Horas : Minutos : Segundos (Ej. 09:00:00)


Modo de relleno: lo que siga a este prefijo reemplaza los blancos adicionales,
fm
generando un resultado de tamao variable

Formatee la visualizacin de valores de fecha con la funcin de conversin TO_CHAR

Ejemplo:

Muestre las fechas de contratacin de todos los empleados del departamento 20 con el formato DD of
Month YYYY: LAB30

SQL> SELECT TO_CHAR (hiredate, fmDD of MONTH YYYY) Date of Hire


2 FROM emp
3 WHERE deptno = 20;

Date of Hire
------------------------------
17 of DECEMBER 1980
12 of JANUARY 1983
3 of DECEMBER 1981

Acceso
3 rowsyselected.
Visualizacin de Datos 33
Introduccin a Oracle SQL-Plus

REFERENCIA DE LOS VALORES Y FUNCIONES DE CARACTERES

Combine columnas con caracteres y constantes de carcter para producir una salida ms significativa
que una simple columna estndar devuelta por SQL-Plus.

Ejemplo: concatenacin

Muestre la combinacin de departamento ms su localizacin bajo un solo ttulo DEPARTAMENTOS:


LAB31

SQL> SELECT dname || || loc DEPARTAMENTOS


2 FROM dept;

DEPARTAMENTOS
----------------------------------------
ACCOUNTING NEW YORK
RESEARCH DALLAS
SALES CHICAGO
OPERATIONS BOSTON
FINANCE LOS ANGELES
RESEARCH BOSTON
PERSONNEL TAHITI
EDUCATION - MAUI

8 rows selected.

Acceso y Visualizacin de Datos 34


Introduccin a Oracle SQL-Plus

FUNCIN EJEMPLO RESULTADO


Devuelve el nombre con su
INITCAP INITCAP (ENAME) primera letra en mayscula, y las
dems en minscula (Ej. Smith)
Devuelve todos los caracteres de
UPPER UPPER (ENAME) la cadena en mayscula.(Ej.
SMITH)
Devuelve todos los caracteres de
LOWER LOWER (ENAME) la cadena en minscula (Ej.
smith)
Empezando en la posicin 1,
SUBSTR SUBSTR (JOB, 1, 5) devuelve 5 caracteres (Ej.
MANAG)
Devuelve el nmero de
LENGTH LENGTH (ENAME) caracteres de una cadena (Ej. 5)
CONCAT(ENAME,JOB)
CONCAT Concatena dos cadenas

muestra un nmero de
caracteres a la izquierda del
LPAD LPAD(sal,5,'*')
valor de la columna
*****5000
Borra un carcter de una cadena
TRIM TRIM('S' FROM 'SSMITH')
Ej. MITH
Devuelve la posicin de un
INSTR('String', 'r') carcter dentro de una cadena
INSTR
Ej: 3

Acceso y Visualizacin de Datos 35


Introduccin a Oracle SQL-Plus

Ejemplo: INITCAP UPPER

Muestre el nombre y el cargo de todos los empleados llamados Ward en mayscula inicial bajo el ttulo
NAME: LAB32

SQL> SELECT INITCAP (ename) NAME, job


3 FROM emp
4 WHERE UPPER (ename) = WARD;

NAME JOB
---------- ----------------
Ward SALESMAN

1 row selected.
Ejemplo: SUBSTR

Mostrar las primeras 5 letras del nombre de departamento y su localizacin completa. LAB33

SQL> SELECT SUBSTR (dname, 1, 5) dept, loc


2 FROM dept;

DEPT LOC
------------ ---------------------
ACCOU NEW YORK
RESEA DALLAS
SALES CHICAGO
OPERA BOSTON
FINAN LOS ANGELES
RESEA BOSTON
PERSO TAHITI
EDUCA MAUI

8 rows selected.

Formatee la visualizacin de valores numricos con la funcin de conversin TO_CHAR

Acceso y Visualizacin de Datos 36


Introduccin a Oracle SQL-Plus

Ejemplo:

Muestre la comisin de cada empleado del departamento 30 usando signos de peso, comas en las
posiciones adecuadas y dos dgitos decimales. LAB34

SQL> SELECT ename EMPLOYEE, TO_CHAR (comm, $9,990.99) COMMISION


2 FROM EMP;

EMPLOYEE COMMISION
----------------- ---------------------
ALLEN $300.00
WARD $500.00
JONES
MARTIN $1,400.00
BLAKE
SCOTT
TURNER $0.00
JAMES

8 rows selected.

VISIN GENERAL DE ALGUNAS FUNCIONES ADICIONALES

FUNCIN EJEMPLO RESULTADO


Devuelve el mayor valor entre
GREATEST GREATEST (SAL, COMM)
SAL y COMM
Devuelve el menor valor entre
LEAST LEAST (SAL, COMM)
SAL y COMM

Acceso y Visualizacin de Datos 37


Introduccin a Oracle SQL-Plus

REFERENCIA DE ALGUNAS FUNCIONES ADICIONALES

Ejemplo: GREATEST

Muestre el nombre, el salario mensual y la comisin de todos los vendedores, incluyendo una columna
que muestre el mayor valor ya sea de salario o comisin. LAB35

SQL> SELECT ename, sal, NVL (comm, 0), GREATEST (sal, comm)
2 FROM emp
3 WHERE job = SALESMAN;

ENAME SAL NVL (comm, 0) GREATEST (sal, comm)


----------------- ----------------- -------------------- -------------------------------
ALLEN 1600 300 1600
WARD 1250 500 1250
JONES 2975 0 2975
MARTIN 1250 1400 1400
SCOTT 3150 0 3150
TURNER 1500 0 1500

6 rows selected.

LABORATORIO 2-1

Utilice para estos ejercicios la estructura de la tabla EMP del usuario SCOTT. Etiquete con un nombre
las columnas de clculos

1. Para cada empleado, calcule el nmero de meses entre hoy y la fecha en que el empleado fu
contratado. Ordene su resultado por el nmero de meses que ha estado empleado. Redondee el
nmero de meses al nmero entero ms prximo.
2. Muestre el nombre de empleado, la compensacin total y la fecha de contratacin de todos los
empleados cuyo salario sea mayor que dos veces su comisin. Formatee la fecha de
contratacin para que luzca como: 3rd December, 1982.
3. Muestre el nombre de empleado en minsculas y el salario redondeado en cientos para todos los
empleados.

Acceso y Visualizacin de Datos 38


Introduccin a Oracle SQL-Plus

4. Muestre el numero de empleado, el nombre, el salario, el 15% del salario y el salario


incrementado en un 15% de todos los empleados
5. Seleccionar numero, nombre, cargo y fecha de ingreso y tiempo en la empresa en aos de todos
los empleados de la tabla EMP
6. Seleccionar todos los empleados cuyo tiempo de servicio este entre 5 a 11 aos.
7. Seleccionar todos los empleados cuyo nombre contengan la cadena LER , NES o FOR
8. Seleccionar la columna, salario, comisin y calcular la columna total devengado de todos los
empleados
9. Seleccionar la columna salario y calcular la columna retencin en la fuente cuyo porcentaje es
el 4% del salario, y calcular el total a pagar para cada empleado. Seleccionar todos los
empleados cuyo salario incrementado en un 10% sea mayor que 5.000.
10. Muestre el nombre y la fecha de ingreso del empleado en el formato "Lunes, 3 de Junio 2001"
11. Para cada empleado muestre el nombre y calcule el numero de meses entre hoy y la fecha en
que ingreso en el empleado, etiquete la columna con la frase "MESES TRABAJADOS".
Ordene el resultado por el nmero de meses.
12. Escribe la consulta que produce lo siguiente para cada empleado:
ENAME GANA SAL PERO QUIERE Sal*3, ALLEN GANA 1600 PERO QUIERE 4800
formatee la columna resultante con la frase salarios Soados.
13. Escriba una consulta que muestre el nombre del empleado con la primera letra en mayscula y
las dems en minscula, y la longitud del nombre del empleado.
14. Muestre el nombre, la fecha de ingreso y el da de la semana en la cual ingresaron los
empleados a la empresa, etiquete la columna con la palabra DIA.
15. Crear una consulta que muestre el nombre del empleado y el valor de la comisin. Si la
comisin del empleado es nula coloque en los registros visualizados la frase 'NO COMISION'

Acceso y Visualizacin de Datos 39


Introduccin a Oracle SQL-Plus

VISTAZO A LAS FUNCIONES DE GRUPO

Para devolver resultados basados en grupos de filas en lugar de un resultado por fila, utilice las
funciones de grupo.

FUNCIONES EJEMPLO RESULTADO


Devuelve el promedio aritmtico
AVG AVG (sal)
de SAL.

COUNT (comm) Devuelve el nmero de valores


no nulos de la columna COMM.
COUNT
Devuelve el nmero de filas no
COUNT (*)
nulas en un grupo.

Devuelve el valor mximo de


MAX MAX (sal0029
SAL

Devuelve el valor mnimo de


MIN MIN (sal)
SAL

Devuelve la suma de los valores


SUM SUM (comm)
de COMM

Ejemplo: AVG, MAX, SUM

Muestre el promedio, el valor mximo y la suma de los salarios anuales de todos los vendedores.
LAB36

SQL> SELECT AVG (sal), MAX (sal), SUM (sal)


2 FROM emp
3 WHERE job = SALESMAN;

AVG (SAL) MAX (SAL) SUM (SAL)


----------------- ----------------- --------------------
1954.16667 3150 11725

1 row selected.

Acceso y Visualizacin de Datos 40


Introduccin a Oracle SQL-Plus

Ejemplo: COUNT

Muestre el nmero de filas en la tabla EMP, y el nmero de empleados con comisin no nula. LAB37

SQL> SELECT COUNT (*) EMPLOYEES, COUNT (comm) COMMISIONABLE


2 FROM emp;

EMPLOYEES COMMISIONABLE
------------------- --------------------------
14 4

1 row selected.

REVISANDO SALIDAS DE GRUPO.

SINTAXIS DE LA SENTENCIA SELECT

SELECT ...
FROM ...
WHERE ...
GROUP BY
HAVING
ORDER BY

Acceso y Visualizacin de Datos 41


Introduccin a Oracle SQL-Plus

Muestre una tabla en subgrupos de filas con la clusula GROUP BY.

Ejemplo: GROUP BY una columna

Muestre cada departamento y su nmero de empleados, agrupados por departamento. LAB38

SQL> SELECT deptno, COUNT (*)


3 FROM emp
4 GROUP BY deptno;

DEPTNO COUNT (*)


------------------- --------------------------
10 3
20 3
30 8

3 rows selected.

Si se selecciona una columna normal y una funcin de grupo al mismo tiempo, se recibir un mensaje
de error.

Ejemplo:

Mostrar el empleado que se contrat de primero. LAB39


SQL> SELECT ename, MIN (hiredate)
2 FROM emp;

ORA-00937: Not a single-group group function.

Acceso y Visualizacin de Datos 42


Introduccin a Oracle SQL-Plus

Ejemplo: GROUP BY ms de una columna

Muestre la cantidad de empleados para cada categora de cargos en cada departamento. LAB40

SQL> SELECT deptno, job, COUNT (*)


2 FROM emp
3 GROUP BY deptno, job;

DEPTNO JOB COUNT (*)


------------- ------------------- ---------------
10 CLERK 1
10 MANAGER 1
10 PRESIDENT 1
20 ANALYST 1
20 CLERK 2
30 CLERK 1
30 MANAGER 1
30 SALESMAN 6

8 rows selected.

Coloque una condicin a la funcin de grupo mediante la clusula HAVING.

Ejemplo:

Muestre el salario anual promedio para todos los tipos de cargo con ms de dos empleados. LAB41

SQL> SELECT job, 12 * AVG (sal)


2 FROM emp
3 GROUP BY job
4 HAVING COUNT (*) > 2;

JOB 12 * AVG (SAL)


------------------- ----------------------
CLERK 12450
SALESMAN 23450

2 rows selected.

Acceso y Visualizacin de Datos 43


Introduccin a Oracle SQL-Plus

La clusula HAVING puede ser usada en la misma consulta con una clusula WHERE.

Ejemplo:

Muestre los departamentos y la nmina de aquellos departamentos cuya nmina exceda de $8.000,
excluyendo todo el personal Aseador. Ordene la lista por el monto de la nmina. LAB42

SQL> SELECT deptno, SUM (sal)


2 FROM emp
3 WHERE job != CLERK
4 GROUP BY deptno
5 HAVING SUM (sal) > 8000
6 ORDER BY SUM (sal);

DEPTNO SUM (SAL)


------------------- ----------------------
30 14575

1 row selected.

Acceso y Visualizacin de Datos 44


Introduccin a Oracle SQL-Plus

LABORATORIO 2-2

Retorno de filas basadas en grupos de filas

Use las tablas EMP para completar los siguientes ejercicios:

1. Cuente todos los registros que no tienen el campo Job nulo.


2. Seleccionar el salario mnimo y mximo de la tabla Emp
3. Seleccionar la fecha de ingreso mnima y mxima de la tabla empleados.
4. Seleccionar el numero de empleados por cada Departamento
5. Seleccionar de cada departamento la suma de los salarios, y el No. De Empleados
6. Contar el numero de empleados del mismo cargo por departamento
7. Contar el numero de 'Analistas y Gerentes de Cada Departamento
8. Seleccione el cdigo del empleado, nombre y cargo de la tabla EMP donde el salario se encuentre
entre 1000 y 2000 y sean del Departamento No. 10, ordenado por nombre del empleado.
9. Seleccione de la tabla EMP todos los empleados diferentes de 'PRESIDENT' que ganen mas de
1.500 cuyo y ordenando alfabticamente por nombre del empleado y descendente por sueldo
10. Muestre solo los nombres de los empleados de cargos 'MANAGER' que ganan mas de 2.600
ordenar alfabticamente (tabla EMP).
11. Seleccione informacin acerca de los 'MANAGER' y los 'PRESIDENT' de la tabla EMP. Ejecuta
esta consulta ordenando por fecha de ingreso (el mas antiguo) y el No. Departamento.
12. Computar el promedio de los salarios, el valor mximo y mnimo agrupados por departamentos
donde el cargo sea vendedor.
13. Sumar las comisiones de los empleados por departamento y seleccionar el departamento con la
sumatoria mayor que cero ordenando descendentemente.

Acceso y Visualizacin de Datos 45


Introduccin a Oracle SQL-Plus

OBTENIENDO DATOS DE MULTIPLES TABLAS.

Es la unin de dos tablas a travs de los campos que la relacionan, llave primaria llave fornea
respectivamente

EMP DEPT

EMPNO ENAME DEPTNO DEPTNO DNAME LOC


------ ----- ... ------ ------ ---------- --------
7839 KING ... 10 10 ACCOUNTING NEW YORK
7698 BLAKE... 30 20 RESEARCH DALLAS
7934 MILLER ... 10 30 SALES CHICAGO
40 OPERATIONS BOSTON

EMPNO DEPTNO LOC


----- ------- --------
7839 10 NEW YORK
7698 30 CHICAGO
7782 10 NEW YORK
7566 20 DALLAS
7654 30 CHICAGO
7499 30 CHICAGO

JOIN: use un JOIN en una consulta de datos de ms de una tabla

SELECT table1.column, table2.column


FROMtable1, table2
WHERE table1.column1 = table2.column2;

CARACTERSTICAS DEL JOIN

Las tablas a ser unidad (JOINED) se especifican en la clusula FROM


En la clusula WHERE se especifica como unir las tablas.
Las columnas que tienen nombres iguales en las tablas especificadas en la clusula FROM
deben ser identificadas utilizando NOMBRE_TABLA.NOMBRE_COLUMNA
Si las columnas no tienen homnimos en las tablas, no es necesario especificar el nombre de la
tabla en las clusulas WHERE y SELECT.
Se pueden unir JOIN cuantas tablas se requieran
El criterio de coincidencia entre las tablas es denominado el predicado del JOIN o criterio del
Acceso y Visualizacin de Datos 46
Introduccin a Oracle SQL-Plus

JOIN
Las columnas especificadas en la condicin JOIN deben estar anexadas.
Cuando n tablas son unidas, es necesario tener al menos n-1 condiciones de JOIN entre parejas
de tablas para evitar el producto cartesiano (una unin de cuatro tablas requiere especificar
criterio de JOIN para tres parejas de tablas)

TIPOS DE JOIN
Equijoin Non-equijoin Outer join Self join

EQUIJOIN

EMP DEPT

EMPNO ENAME DEPTNO DEPTNO DNAME LOC


------ ------- ------- ------- ---------- --------
7839 KING 10 10 ACCOUNTING NEW YORK
7698 BLAKE 30 30 SALES CHICAGO
7782 CLARK 10 10 ACCOUNTING NEW YORK
7566 JONES 20 20 RESEARCH DALLAS
7654 MARTIN 30 30 SALES CHICAGO
7499 ALLEN 30 30 SALES CHICAGO
7844 TURNER 30 30 SALES CHICAGO
7900 JAMES 30 30 SALES CHICAGO
7521 WARD 30 30 SALES CHICAGO
7902 FORD 20 20 RESEARCH DALLAS
7369 SMITH 20 20 RESEARCH DALLAS
... ...
14 rows selected.

Foreign key Primary key

Acceso y Visualizacin de Datos 47


Introduccin a Oracle SQL-Plus

Ejemplo: Seleccionar nmero del empleado, nombre del departamento y localizacin. LAB 43

SQL> select ename, emp.deptno, loc


2 From emp, dept
3 Where emp.deptno = dept.deptno;

OUTER JOIN

Operador OUTERJOIN es el signo ms entre parntesis (+), este obliga a que un registro que contenga
valores nulos en uno de los criterios del JOIN coincida con cada valor de la segunda tabla sobre la cual
ordinariamente no estara esa coincidencia.

Sintaxis

SELECT table1.column, table2.column


FROMtable1, table2
WHERE table1.column1(+) = table2.column2;

Ejemplo: Lista la localizacin de todos los departamentos as como los empleados que trabajan en estos
departamentos, incluya los departamentos en los cuales no trabaja empleado alguno. LAB44

SQL> SELECT loc, ename


2 FROM emp, dept
3 WHERE emp.deptno(+) = dept.deptno;

OUTER JOINS Y LA CLAUSULA WHERE

Ejemplo: Liste los departamentos que actualmente no tienen empleados asignados. LAB45

SQL> SELECT empno, dept.deptno, loc


2 FROM emp, dept
3 WHERE dept.deptno= emp.deptno(+) and empno is null;

Acceso y Visualizacin de Datos 48


Introduccin a Oracle SQL-Plus

Ejemplo: Liste el nombre y la localizacin del departamento de todos los CLERK, incluya una lista
de todos los departamentos que actualmente no tengan ningn CLERK asignado. LAB46

SQL> SELECT ename, dept.deptno, loc


2 FROM emp, dept
3 WHERE dept.deptno= emp.deptno(+) and (job='CLERK' OR empno is null);

Caractersticas del OUTER JOIN

Si un registro de una de las tablas de un JOIN no satisface la condicin del JOIN, normalmente ese
registro no aparece en el resultado. El OUTER JOIN, permite que un registro con estas
caractersticas aparezcan en el resultado.
el OUTER JOIN a travs SQL proporciona registros temporales para seleccionar los datos, los
datos de la tablas.
Se coloca un (+) despus de la combinacin de tabla/columna (en la clusula WHERE) sobre la
que se necesita los registros falsos para realizar el OUTER JOIN (WHERE
EMP.DEPTNO(+)=DEPT.DEPTNO).
Si se requiere mltiples columnas para dar la condicin JOIN, todas o ninguna de ellas puede
llevar el (+).
Solo una de las tablas en un JOIN, pueden escogerse para realizar el OUTER JOIN, es decir no se
puede colocar (+) en ambas tablas.
Una tabla puede realizar un OUTER JOIN con tan solo otra tabla.
Los registros extras seleccionados en un OUTER JOIN pueden realizarse buscando aquellos que
tengan valores nulos (NULL) en las columnas del JOIN.

SEF-JOINS

Un SEF-JOINS es utilizado para buscar coincidencia entre registros sobre columnas diferentes de la
misma tabla.

Sintaxis

SELECT alias1.column, alias2.column


FROMtable1 alias1, table2 alias 2
WHERE alias1.column1 = alias2.column2;

Acceso y Visualizacin de Datos 49


Introduccin a Oracle SQL-Plus

Ejemplo: Liste el nmero, nombre y cargo de cada empleado, as como el numero nombre y cargo del jefe
correspondiente. LAB47

SELECT w.empno, w.ename, w.job,w.mgr,


m.empno,m.ename,m.job
FROMemp w, emp m WHERE w.mgr = m.empno;

Caractersticas del SELF

Una palabra puede ser unida JOINED a si mismo como si fueran dos tablas separadas.
El self-join es til para unir un registro de una tala a otra de la misma tabla.
Como cualquier otro tipo de JOIN, este se realiza con columnas que contenga el mismo tipo de
informacin.
A la tabla se le deben dar alias para indicar que columnas son de la tabla.
En el ejemplo previo, la tabla EMP fue unida a si misma utilizando las columnas EMPNO y MGR
cumpliendo todas las reglas anteriores.

NON-EQUIJOINS

La mayora de los JOINS se basan en la igualdad de valores en las tablas referenciadas. Por esto se
determinan los EQUIJOINS. Los NON-EQUIJOINS por consiguiente se basan en los siguientes
operadores.

!= < <= > >= between

Ejemplo: Ordene el grado del salario (salgrade), el nombre, salario y cargo de cada empleado. Ordene el
resultado por grado de salario y trabajo. LAB48

SQL> SELECT GRADE, ENAME, SAL, JOB


2 FROM EMP, SALGRADE
3 WHERE SAL BETWEEN LOSAL AND HISAL
4 ORDER BY GRADE, SAL;

Acceso y Visualizacin de Datos 50


Introduccin a Oracle SQL-Plus

OPERADORES DE CONJUNTO

Los operadores de conjunto combinan dos o ms tablas para obtener resultado.

UNION Los registros del primer query mas registros del segundo
query se eliminan duplicados
INTERSECCIN Los registros que las dos tablas tienen en comn
MENOS Registros nicos de la primera tabla

EL OPERADOR UNION

El operador UNION retorna todos los registros distintos seleccionados travs de mltiples queries.

Sintaxis

SELECT columna
FROMtabla
WHERE condiciones ciertas
UNION
SELECT columna
FROMtabla
WHERE condiciones ciertas

Ejemplo: Quien gana ms de $2000 en todos los departamentos.

SQL> SELECT ENAME,SAL


2 FROM ACCOUNTING
3 WHERE SAL >2000
4 UNION
5 SELECT ENAME,SAL
6 FROM RESEARCH
7 WHERE SAL >2000
8 UNION
9 SELECT ENAME,SAL
10 FROM SALES
11 WHERE SAL >2000

Acceso y Visualizacin de Datos 51


Introduccin a Oracle SQL-Plus

EL OPERADOR INTERSECCIN (INTERSECT)

El operador INTERSECT retorna valores comunes de mltiples tablas

SELECT columna
FROMtabla
WHERE condiciones ciertas
INTERSECT
SELECT columna
FROMtabla
WHERE condiciones ciertas

Ejemplo

SQL> SELECT JOB


2 FROM ACCOUNTING
3 UNION
4 SELECT JOB
5 FROM RESEARCH
6 UNION
7 SELECT JOB
8 FROM SALES;

EL OPERADOR MENOS (MINUS)

El operador MINUS. Retorna todos los registros seleccionados por el primer query que no fueron tambin
seleccionados por el segundo query

SELECT columna
FROM tabla
WHERE condiciones ciertas
MINUS
SELECT columna
FROMtabla
WHERE condiciones ciertas

Ejemplo: Liste la informacin de los empleados que tienen cargos que estn en el departamento de
ACCOUNTING pero que no estn en el departamento de ventas (SALES).

Acceso y Visualizacin de Datos 52


Introduccin a Oracle SQL-Plus

SQL> SELECT * FROM ACCOUNTING


2 WHERE JOB (SELECT JOB FROM ACCOUNTING
3 MINUS SELECT JOB FROM SALES)

Nota: Los operadores de conjunto son tiles para conformar subqueries que referencia a mltiples tablas.

LABORATORIO 3-1

1) Escriba una consulta que muestre el nombre del empleado y el numero y nombre del departamento
para todos los empleados.

ENAME DEPTNO DNAME


KING 10 ACCOUNTING
BLAKE 30 SALES
CLARK 10 ACCOUNTING
JONES 20 RESEARCH
MARTIN 30 SALES

2) Crear un listado de todos los cargos cuya localizacin departamento es Chigaco

JOB LOC
CLERK CHICAGO
MANARGER CHICAGO
SALESMAN CHICAGO

3. Escribir una consulta que muestre el nombre del empleado, el nombre del departamento y la
localizacin de todos los empleados que ganan una comisin

ENAME DNAME LOC


ALLEN SALES CHICAGO
WARD SALES CHICAGO
MARTIN SALES CHICAGO

4. Mostar el nombre del empleado y el nombre del departamento a los que pertenecen esos empleados.
Salvar la sentencia en un archivo llamado p4q4.sql

ENAME DNAME
ALLEN SALES
WARD SALES
MARTIN SALES

Acceso y Visualizacin de Datos 53


Introduccin a Oracle SQL-Plus

5. Escribir una consulta que muestre el nombre, el cargo, el numero del departamento y el nombre de
todos los empleados que trabajan en DALLAS.

ENAME JOB DEPTNO DNAME


SMITH CLERK 20 RESEARCH
ADAMS CLERK 20 RESEARCH
FORD ANALYST 20 RESEARCH

6. Mostrar el nombre y el numero del empleado al igual que el nombre y el numero de su respectivo
jefe. Salvar la sentencia SQL en el archivo p4q6.sql

ENAME EMPNO EMGR MGR


SCOTT 7788 JONES 7566
FORD 7902 JONES 7566
ALLEN 7499 BLAKE 7698
JAMES 7900 BLAKE 7698

7. Modificar el punto anterior incluyendo los empleados que no tienen jefe

ENAME EMPNO EMGR MGR


SCOTT 7788 JONES 7566
FORD 7902 JONES 7566
ALLEN 7499 BLAKE 7698
JAMES 7900 BLAKE 7698
KING 7839

8. Crear un query que muestre el nombre del empleado, el numero del departamento y todos los
empleados que trabajan en el mismo departamento como un empleado determinado
DEPTNO EMPLOYEE COLLEAGUE
10 CLARK KING
10 CLARK MILLER
10 KING CLARK
10 MILLER CLARK
10 MILLER KING
.....
56 ROWS SELECT

9. Mirar la estructura de la tabla SALGRADE. Cree una consulta que muestre el nombre, cargo,
nombre del departamento, salario y grado de todos los empleados.

ENAME JOB DNAME SAL GRADE


MILLER CLERK ACCOUNTING 1300 2
CLARK MANAGER ACCOUNTING 2450 4
KING PRESIDENT ACCOUNTING 5000 5

Acceso y Visualizacin de Datos 54


Introduccin a Oracle SQL-Plus

SMITH CLERK RESEARCH 800 1

10. Cree una consulta que muestre el nombre del empleado y la fecha de ingreso de los empleados que
ingresaron despus que BLAKE

ENAME HIREDATE
KING 17-NOV-81
CLARK 09-JUN-81
MARTIN 28-SEP-81
TURNER 08-SEP-81

11. Mostrar los nombres de los empleados, la fecha de ingreso, el nombre de su jefe y la fecha de
ingreso de su jefe. Etiquete los nombres de las columnas respectivamente.

Acceso y Visualizacin de Datos 55


Introduccin a Oracle SQL-Plus

VISIN GENERAL DE LA CREACIN DE TABLAS

El nombre de una tabla debe seguir las reglas estndar para los nombres de cualquier objeto de una
base de datos ORACLE.

Requerimientos de la sentencia CREATE TABLE


q El nombre de la tabla.
q El nombre de la columna.
q El tipo de datos de la columna.

Reglas para los nombres


q Debe tener entre 1 y 30 caracteres y el primer carcter debe ser alfabtico.
q Debe contener solo los caracteres:
o A-Z, a-z, 0-9, _ (guin bajo)
o $ y #. Son legales, pero su uso se est descontinuando.
q No debe ser ninguna palabra reservada de ORACLE.
q No Debe tener el mismo nombre que otro objeto dentro del mismo nombre de usuario de
ORACLE.

Nota rpida:
q Los nombres de tablas son los mismos si se escriben en maysculas o minsculas; ejemplo:
EMP = Emp. Los nombres de columnas deben adherirse a las tres primeras reglas antes
descritas.

Creacin de Tablas y Vistas 56


Introduccin a Oracle SQL-Plus

CREACIN DE TABLAS

Tipo de datos Descripcin


CHAR(tamao) Almacena datos de tipo carcter de longitud fija. Con un tamao mximo
de 2000 bytes
VARCHAR2(Tamao) Almacena datos de tipo carcter de longitud variable, con un tamao
mximo de 4.000
VARCHAR(Tamao) Actualmente es igual al Char
LONG Almacena datos de tipo carcter de longitud variable hasta 2 gigabytes
NUMBER(L,D) Almacena datos numricos siendo L la longitud y D el numero de dgitos
decimales
INTEGER Numrico sin decimal. Por defecto 38.
DATE Almacena informacin relacionada con el tiempo incluyendo fechas,
horas, minutos y segundos. (Fechas hasta el 31 de diciembre de 4712)
RAW Dato en binario puro (imgenes y sonido) con un ancho mximo de 2000
bytes.
LONG RAW Dato en binario puro (imgenes y sonido) mas grande que el RAW
CLOB Almacena objetos de caracteres grandes de un nico byte
BLOB Almacena objetos binarios de gran tamao, siendo el tamao mximo 4GB
(gigabytes).
BFILE Almacena punteros de archivo a LOB administrados por sistemas de
archivos externos a la base de datos

La Versin 8 de ORACLE ofrece un conjunto mejorado de tipos de datos para manejar objetos de gran
tamao, as como un mecanismo ms potente para almacenar datos nmeros. Los objetos de gran
tamao se agrupan y referencian como LOBs (Large Objects).

RESTRICCIONES

Restricciones Uso
PRIMARY KEY Identifica de manera nica una fila de la tabla.
CHECK Especifica una condicin que debe ser verdadera.
FOREIGN KEY (nombre_columna) Establece e impone una relacin entre esta columna y una
REFERENCES (nombre_columna) PRIMARY KEY en la tabla referenciada.
[NOT] NULL Especifica que dicha columna no puede contener valores nulos.
UNIQUE Especifica una columna o columnas que deben tener valores
nicos a lo largo de todas las filas.

Las restricciones de integridad permiten al diseador de la aplicacin restringir el rango de valores


aceptables que se pueden almacenar en una tabla.

Creacin de Tablas y Vistas 57


Introduccin a Oracle SQL-Plus

Sintaxis abreviada
CREATE TABLE [user.] nombre_tabla
( { nombre_columna tipo | restriccin }
[ , { nombre_columna tipo | restriccin } ] ... )

Ejemplo: LAB49

SQL> CREATE TABLE emp2


2 (empno NUMBER(4),
3 CONSTRAINT empno_constr PRIMARY KEY(empno),
4 ename CHAR(10) CHECK (ename = upper(ename)),
5 job CHAR(9),
6 mgr NUMBER(4) REFERENCES emp(empno),
7 hiredate DATE,
8 sal NUMBER(7,2),
9 comm NUMBER(7,2),
10 deptno NUMBER(2) NOT NULL REFERENCES dept(deptno));

Table created.

Podemos crear tablas usando la clusula AS en la sentencia CREATE TABLE para usar los atributos
de columnas y los datos de una tabla ya existente.

CREATE TABLE [user.] nombre_tabla [ ( nombre_columna1, nombre_columna2, ) ]


AS consulta

Ejemplo: LAB50

SQL> CREATE TABLE hdates


2 AS SELECT empno, ename, hiredate
3 FROM emp
4 WHERE empno = 10;

Table created.

Creacin de Tablas y Vistas 58


Introduccin a Oracle SQL-Plus

Ejemplo: LAB51

SQL> CREATE TABLE empty_like_emp


5 AS SELECT *
6 FROM emp
||||||||||||||
7 WHERE 1 = 2;

Table created. vcb

MODIFICACIN DE TABLAS

Use la sentencia ALTER TABLE para modificar la estructura de una tabla. Se pueden hacer dos
operaciones:
q Adicionar columnas o restricciones
q Modificar la definicin de las columnas (restricciones, NOT NULL y dems)

Sintaxis Adicionar
ALTER TABLE nombre_tabla
ADD ( { nombre_columna tipo | restriccin }
[, { nombre_columna tipo | restriccin } ] ... )

Ejemplo: LAB52

SQL> ALTER TABLE hdates


2 ADD (manager NUMBER(4) );

Table altered.

Sintaxis Modificar
ALTER TABLE nombre_tabla
MODIFY ( { nombre_columna tipo | restriccin }
[, { nombre_columna tipo | restriccin } ] ... )

Creacin de Tablas y Vistas 59


Introduccin a Oracle SQL-Plus

Ejemplo: Incrementar el tamao de la columna ename de 10 a 18. LAB53

SQL> ALTER TABLE hdates


2 MODIFY (ename CHAR(18) );

Sintaxis para Borrar la Columna de una Tabla


Table altered.

Use la clusula Drop Column cuando desea borrar una columna de una tabla

ALTER TABLE nombre_tabla


DROP COLUMN ( nombre_columna, nombre_columna ... )

Ejemplo: Borrar la columna ename de la tabla HDATES. LAB54


SQL> ALTER TABLE HDATES
2 DROP COLUMN ename ;
Table altered.

alter table empty_like_emp add constraint FK_MAU foreign key (deptno) references
dept(deptno);

Sintaxis Eliminacin de una tabla: DROP TABLE


DROP TABLE nombre_tabla

Ejemplo: Eliminar la tabla EMPTY_LIKE_EMP. LAB55

SQL> DROP TABLE empty_like_emp;

Table dropped.

Siga los siguientes pasos para eliminar una columna de una tabla:

Creacin de Tablas y Vistas 60


Introduccin a Oracle SQL-Plus

Crear un duplicado de la tabla original, sin la columna o columnas que queremos eliminar:
SQL> CREATE TABLE tabla_temp
2 AS SELECT columna1, columna2, columna4, columna5
3 FROM tabla_original;

Table created.

Borrar la tabla original

SQL> DROP TABLE tabla_original;

Table dropped.

Renombrar la nueva tabla con el nombre de la tabla original (este paso es opcional)
SQL> RENAME tabla_temp TO tabla_original;

Table renamed.

Creacin de Tablas y Vistas 61


Introduccin a Oracle SQL-Plus

VISIN GENERAL DE LAS VISTAS

E MP
TEMPNO
ableENAME JOB
JOB MGR HIREDATE SAL
SAL COMM
COMM DEPTNO
DEPTNO
----- --------
------- ---------
--------- -----
---- --------- ------
----- -----
----- -------
-------
7839
7839 KING PRESIDENT
PRESIDENT 17-NOV-81 5000
5000 10
10
7782
7698 CLARK
BLAKE MANAGER
MANAGER 7839 09-JUN-81
01-MAY-81 2850
1500 300 30
10
7934
7782 MILLER
CLARK MANAGER
CLERK 7782
7839 23-JAN-82
09-JUN-81 2450
1300 10
10

EMPV7566
7566 JONES
U10 MANAGER
MANAGER 7839 02-APR-81
02-APR-81 2975
2975 20
20
7788
7654 SCOTT
MARTIN SALESMAN
ANALYST 7566
7698 09-DEC-82
28-SEP-81 1250
3000 1400 30
20
View 7876
7499 ADAMS
ALLEN SALESMAN
CLERK 7788
7698 12-JAN-83
20-FEB-81 1600
1100 300 30
20
EMPNO ENAME JOB
------ 7369
7844 SMITH
TURNER-----------
-------- SALESMAN
CLERK 7902
7698 17-DEC-80
08-SEP-81 1500
800 0 30
20
7839 7902
7900 FORD
KING JAMES PRESIDENT
CLERK
ANALYST 7566
7698 03-DEC-81 3000
950 30
20
7782 7698
7521 BLAKE
CLARK WARD MANAGER
SALESMAN
MANAGER 7839
7698 01-MAY-81
22-FEB-81 1250
2850 500 30
30
7934 MILLER
7654 FORD CLERK
7902 MARTIN ANALYST
SALESMAN 7698
7566 28-SEP-81
03-DEC-81 3000
1250 1400 20
30
7499
7369 ALLEN
SMITH CLERK
SALESMAN 7698
7902 20-FEB-81
17-DEC-80 1600
800 300 20
30
7844
7788 TURNER
SCOTT ANALYST
SALESMAN 7698
7566 08-SEP-81
09-DEC-82 3000
1500 0 20
30
7900
7876 JAMES
ADAMS CLERK
CLERK 7698
7788 03-DEC-81
12-JAN-83 1100
950 20
30

Se puede representar lgicamente una o ms tablas como una vista. Una vista no contiene datos. Todos
los datos se derivan de las tablas subyacentes.

Ventajas de las vistas


q Seguridad
q Conveniencia
q Perspectiva

Creacin de Tablas y Vistas 62


Introduccin a Oracle SQL-Plus

CREACIN DE VISTAS

La creacin de vistas es similar a la creacin de tablas usando la clusula AS.

Sintaxis
CREATE [OR REPLACE] VIEW nombre_vista [ (alias1, alias2, ... ) ]
AS consulta
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY];

La consulta contiene un sentencia Select sin la clusula order by

La clusula WHIT CHECK OPTION se utiliza para al ingresar registros en una tabla se valide la
clusula where.

La clusula WITH READ ONLY se utiliza cuando se requiere crear una vista de solo lectura, es decir
no es permitido insertar, borrar o actualizar datos sobre ella.

Ejemplo:
Crear una vista que contenga el nmero, el nombre y el cargo de todos los empleados del departamento
10: LAB56

SQL> CREATE VIEW empvu10


2 AS SELECT empno, ename, job
3 FROM emp
4 WHERE deptno = 10;

View created.

Creacin de Tablas y Vistas 63


Introduccin a Oracle SQL-Plus

SQL> SELECT * FROM empvu10;

EMPNO ENAME JOB


------------- ------------- ----------------
7782 CLARK MANAGER
7839 KING PRESIDENT
7934 MILLER CLERK

Sintaxis Eliminacin de vistas: DROP VIEW


3 rows selected.
DROP VIEW nombre_vista

Ejemplo:
SQL> DROP VIEW empvu10;

View dropped.

Ejemplo: alias de columnas en las vistas. LAB57

SQL> CREATE VIEW empvu11 (id_number, employee, title)


2 AS SELECT empno, ename, job
3 FROM emp
4 WHERE deptno = 10;

View created.

SQL> SELECT * FROM empvu11;

ID_NUMBER EMPLOYEE TITLE


----------------- ---------------- ----------------
7782 CLARK MANAGER
7839 KING PRESIDENT
7934 MILLER CLERK

3 rows selected.

Creacin de Tablas y Vistas 64


Introduccin a Oracle SQL-Plus

Ejemplo: alias alternativos en las vistas. LAB58

SQL> CREATE VIEW salvu10


2 AS SELECT empno, ename, sal * 12 annual_salary
3 FROM emp
4 WHERE deptno = 10;

View created.

SQL> SELECT * FROM salvu10;

Asegure que las inserciones y actualizaciones realizadas sobre una vista, no afectarn los datos que la
vista no sea capaz de acceder, mediante la utilizacin de la clusula WITH CHECK OPTION.

EMP_NO ENAME ANNUAL_SALARY


Sintaxis
-------------- ------------- --------------------------
7782 CLARK 29400
7839 KING 60000
7934 MILLER 15600
3 rows selected.

Ejemplo:
CREATE VIEW nombre_vista [ (alias 1, alias2, ) ]
AS consulta
[ WITH CHECK OPTION [ CONSTRAINT restriccin ] ]

Ejemplo: Cree una vista solo con los datos de los empleados del departamento No. 20. LAB59

SQL> CREATE VIEW empvu20


2 AS SELECT * FROM emp
3 WHERE deptno = 20
4 WITH CHECK OPTION;

View created.

Ejemplo: Actualizando el departamento a 30 para el cdigo 7369. LAB60

Creacin de Tablas y Vistas 65


Introduccin a Oracle SQL-Plus

SQL> UPDATE empvu20


2 SET deptno = 30
3 WHERE empno = 7369;

UPDATE empvu20
*
ERROR at line 1:
ORA-01402: view WITH CHECK OPTION where-clause violation.

VISTAZO AL ACCESO DE TABLAS Y VISTAS

El privilegio de DBA (DataBase Administrator Administrador de la base de datos) permite al


desarrollador saltarse muchos privilegios estndar que normalmente se requieren para usar objetos de la
base de datos.

Privilegios del sistema


DBA todos los privilegios
q SELECT
q CREATE
q DROP
q GRANT / REVOKE
q Ejecutar imports y exports sobre la base de datos completa
q Modificar la estructura de la base de datos
q RESOURCE
q CONNECT

Creacin de Tablas y Vistas 66


Introduccin a Oracle SQL-Plus

UN VISTAZO A LA CONCESIN DE ACCESO A TABLAS Y VISTAS

Los propietarios de las tablas controlan el acceso a los objetos de su propiedad.

Privilegios de acceso a tablas


q Crear la tabla por s mismo
q Obtener los privilegios del propietario

Como DBA o propietario de tablas, use el comando GRANT y sus opciones para otorgar distintos
niveles de acceso a los objetos de la base de datos.

Sintaxis
GRANT privilegio1, privilegio2, ... [ o ALL ]
ON nombre_tabla / nombre_vista
TO usuario1, usuario2, ... [ o PUBLIC ]
[ WITH GRANT OPTION ]

Ejemplos:

Otorgar todos los privilegios sobre la tabla EMP a todos los usuarios:

SQL> GRANT ALL


2 ON emp
3 TO PUBLIC;

Grant succeeded.

Otorgar privilegios de consulta (SELECT) al usuario Jones sobre la tabla DEPT:

SQL> GRANT SELECT


4 ON dept
5 TO jones;

Grant succeeded.

Creacin de Tablas y Vistas 67


Introduccin a Oracle SQL-Plus

Otorgar privilegios de consulta (SELECT) al usuario Jones sobre la tabla DEPT, con la habilidad de
otorgar los mismos privilegios a otros:

SQL> GRANT SELECT


2 ON dept
3 TO jones
4 WITH GRANT OPTION;

Grant succeeded.

Cambiar el password de acceso del usuario scott a leopard:

SQL> GRANT CONNECT


2 TO scott
3 IDENTIFIED BY leopard;

Grant succeeded.

VISIN GENERAL DE LOS SINNIMOS

Los sinnimos se pueden crear por razones de seguridad y conveniencia.

Niveles de los sinnimos


q Pblico
q Privado

Ventajas de los sinnimos


q Referencia a tablas y vistas sin especificar el propietario o la base de datos.
q Flexibilidad al personalizar una convencin de nombres ms significativa.

Creacin de Tablas y Vistas 68


Introduccin a Oracle SQL-Plus

CREACIN DE SINNIMOS

Sintaxis Sinnimo privado


CREATE SYNONYM nombre_sinonimo
FOR nombre_tabla / nombre_vista

Ejemplo:

Crear el sinnimo dates para la tabla HDATES del usuario Scott. LAB61

SQL> CREATE SYNONYM dates


2 FOR scott.hdates;

Synonym created.

SQL> SELECT * FROM dates;

EMPNO ENAME HIREDATE


------------- ------------- ---------------
7369 SMITH 17-DEC-80
7499 ALLEN 20-FEB-81
7521 WARD 22-FEB-81
7566 JONES 02-APR-81
7654 MARTIN 28-SEP-81
7698 BLAKE 31-MAY-81
7782 CLARK 09-JUN-81
7788 SCOTT 09-DEC-82
7839 KING 17-NOV-81
7844 TURNER 08-SEP-81
7876 ADAMS 12-JAN-83
7900 JAMES 03-DEC-81
7902 FORD 03-DEC-81
7934 MILLER 23-JAN-82

14 rows selected.

Creacin de Tablas y Vistas 69


Introduccin a Oracle SQL-Plus

LABORATORIO 4-1

1. Crear un duplicado de la tabla EMP. Llmela EMPTEST.


2. Adicione una nueva columna llamada SEX a la tabla EMPTEST de tipo carcter y de tamao
uno (1).
3. Los usuarios cambiaron de parecer. En lugar de almacenar en SEX los valores F o M, quieren
almacenar los valores FEMALE o MALE. Incremente el tamao de la columna SEX.
4. Cree una vista llamada EMP_NO_MONEY, con todas las columnas de la tabla EMP, excepto
las columnas SAL y COMM.
5. Seleccione todas las columnas de la tabla del diccionario de datos USER_VIEWS.
6. Usando su vista EMP_NO_MONEY, haga una consulta que muestre todos los nombres y
fechas de contratacin de los empleados.
7. Intente crear una consulta que muestre el nombre y el salario de los empleados de la vista
EMP_NO_MONEY.
Cul fue el resultado obtenido? __________________________________________________
8. Cree una vista llamada EMP_DEPTNO_TEN, que incluya solo el nombre, el nmero de
departamento y el nmero de empleado de la tabla EMP. Los empleados que se pueden ver a
travs de esta vista son los pertenecientes al departamento nmero 10.
Use los siguientes nombres de columna para su vista: NAME, DNO, ENO.
9. Cree una consulta usando su vista EMP_DEPTNO_TEN.
10. Elimine su vista EMP_DEPTNO_TEN.

Creacin de Tablas y Vistas 70


Introduccin a Oracle SQL-Plus

VISIN GENERAL SOBRE LOS NDICES

Los ndices son estructuras opcionales, asociadas con tablas, que se usan para agilizar la ejecucin de
consultas y/o garantizar unicidad.

El RDBMS de ORACLE accede a los datos en las tablas de dos maneras:


q TABLE SCAN completo (acceso secuencial)
q Por INDICES (acceso indexado o selectivo)

Hay una regla general para los ndices: Cree un ndice cuando se prevea la extraccin frecuente de
menos del 10 15% de las filas en una tabla grande y se hace referencia frecuente a las columnas en la
clusula WHERE.

Caractersticas de las columnas para indexado


q Las columnas se usan frecuentemente en clusulas WHERE
q Cada valor es nico (el mejor caso)
q Amplio rango de valores
q Muchos valores nulos, o relativamente pocos valores

Una tabla puede tener cualquier cantidad de ndices. Los ndices aceleran la ejecucin de consultas,
pero disminuyen las prestaciones en cuanto a velocidad de mantenimiento de las tablas.

Nota rpida:
q ORACLE actualiza los ndices automticamente. No tienen impacto en la sintaxis de SQL.

CREACIN DE NDICES

Sintaxis ndice simple


CREATE INDEX nombre_indice
ON TABLE nombre_tabla (nombre_columna [ , nombre_columna ] ... )

Creacin de ndices y Generadores de Secuencias 71


Introduccin a Oracle SQL-Plus

Ejemplo:
Crear un ndice simple sobre la columna ENAME en la tabla EMP: LAB62

SQL> CREATE INDEX i_emp_ename


2 ON emp (ename);

Index created.

En esta consulta se usa el ndice: LAB63


SQL> SELECT *
2 FROM emp
3 WHERE ename = SMITH;

En esta consulta NO se usa el ndice: LAB64

SQL> SELECT * FROM emp;

En la tabla USER_INDEXES del diccionario de datos se encuentran todos los ndices pertenecientes al
usuario actual: LAB65

SQL> SELECT index_name


2 FROM user_indexes
3 WHERE table_name = EMP;

INDEX_NAME
--------------------
I_EMP_ENAME

1 rows selected.

Sintaxis Eliminacin de ndices


DROP INDEX nombre_indice

Creacin de ndices y Generadores de Secuencias 72


Introduccin a Oracle SQL-Plus

Ejemplo: LAB66
SQL> DROP INDEX i_emp_ename;

Index dropped.

Cree ndices nicos sobre una tabla para asegurar que nunca dos filas tendrn valores iguales en la
columna o columnas indexadas.

Sintaxis
CREATE UNIQUE INDEX nombre_indice
ON nombre_tabla ( nombre_columna [ , nombre_columna ] ... )

Ejemplo:

Crear un ndice en la columna EMPNO de la tabla EMP para incrementar el desempeo, en consultas,
as como garantizar valores nicos para los nmeros de empleados: LAB67
SQL> CREATE UNIQUE INDEX i_emp_empno
2 ON emp ( empno );

Index created.

Los ndices concatenados crean una entrada en el ndice con datos provenientes de cada una de las
columnas indicadas en la sentencia de creacin del ndice. Se pueden incluir hasta un mximo de 16
columnas por ndice.

Ejemplo:

Crear un ndice en la tabla EMP para las columnas EMPNO y ENAME: LAB68

SQL> CREATE UNIQUE INDEX i_empno_ename


2 ON emp ( empno, ename );

Index created.

Creacin de ndices y Generadores de Secuencias 73


Introduccin a Oracle SQL-Plus

CREACIN DE GENERADORES DE SECUENCIA

Cree secuenciadores con el fin de generar enteros nicos y consecutivos para mltiples usos. Los
secuenciadores se pueden utilizar para generar llaves primarias de forma automtica.

Sintaxis abreviada
CREATE SEQUENCE nombre_secuencia
[ INCREMENT BY {1 | n } ]
[ START WITH n ]
[ { MAXVALUE n | NOMAXVALUE } ]
[ { MINVALUE n | NOMINVALUE ]

Ejemplos:

Cree un secuenciador simple para la columna EMPNO empezando desde el valor 8000: LAB69

SQL> CREATE SEQUENCE s_emp_empno START WITH 8000;

Sequence created.

Cree un secuenciador simple para la columna DEPTNO empezando desde el valor 100: LAB70

SQL> CREATE SEQUENCE s_dept_deptno START WITH 100;

Sequence created.

Creacin de ndices y Generadores de Secuencias 74


Introduccin a Oracle SQL-Plus

Ejemplo Mostrar una secuencia

Mostrar el siguiente valor disponible de la secuencia S_EMP_EMPNO: LAB71

SQL> SELECT s_emp_empno.nextval


2 FROM dual;

NEXTVAL
--------------
8000

1 rows selected.

Eliminar un secuenciador de la base de datos con DROP SEQUENCE

Sintaxis

DROP SEQUENCE nombre_secuencia;

Ejemplo: LAB72

SQL> DROP SEQUENCE s_emp_empno;

Sequence dropped.

LABORATORIO 5-1
1. Crear un ndice sobre la tabla EMP llamado I_EMP_EMPNO que no permita nmeros de
empleado duplicados.
Usted probar este ndice en el laboratorio de la prxima seccin.
2. Cree un secuenciador llamado S_DEPT_DEPTNO que empiece en 60 y se incremente en 10.
Este secuenciador lo usar en el laboratorio de la prxima seccin.
3. Muestre su secuencia seleccionando todas las columnas de la tabla USER_SEQUENCES del
diccionario de datos.
4. Use la tabla DUAL para mostrar el prximo valor de secuencia disponible para el secuenciador
S_DEPT_DEPTNO.
5. Repita el ejercicio 4.

Creacin de ndices y Generadores de Secuencias 75


Introduccin a Oracle SQL-Plus

ACTUALIZACION DE DATOS EN TABLAS

INSERCIN DE FILAS

Inserte filas en una tabla con la instruccin INSERT.

Sintaxis
INSERT INTO nombre_tabla [ (columna1, columna2, ) ]
VALUES (value1, value2, ...)

Ejemplo:

Mostrar la estructura de la tabla DEPT:

SQL> DESCRIBE dept;

Name NULL? Type


--------------- --------------- ------------------
DEPTNO NOT NULL NUMBER(2)
DNAME CHAR(14)
LOC CHAR(13)

Inserte el departamento de Finanzas con cdigo 50 con sede en Los Angeles en la tabla DEPT: LAB73

SQL> INSERT INTO dept


2 VALUES (50, FINANCE, LOS ANGELES);

1 row created.

Inserte valores en todas las columnas de una tabla: LAB74


SQL> INSERT INTO emp
2 VALUES (1234, EMMETT, SALESMAN, 7698, SYSDATE, 2000, NULL, 30);
1 row created.

Formato de Reportes 76
Introduccin a Oracle SQL-Plus
Inserte valores en solo algunas columnas de una tabla: LAB75

SQL> INSERT INTO emp ( empno, ename, hiredate, sal, deptno )


2 VALUES ( S_EMP_EMPNO.NEXTVAL, LERNER, 01/01/1992, 2000, 30 );
1 row created.

Inserte valores en las columnas utilizando parmetros: LAB76


SQL> INSERT INTO dept
2 VALUES ( &DEPTNO, &DNAME, &LOC );

Enter value for DEPTNO: 60


Enter value for DNAME: RESEARCH
Enter value for LOC: BOSTON

1 row created.

ACTUALIZACIN DE FILAS

Cambie los datos en una tabla especfica con la sentencia UPDATE.


Sintaxis
UPDATE nombre_tabla
SET columna1 = valor, columna2 = valor
[ WHERE condicin ]

Ejemplo:
Mostrar la estructura de la tabla EMP
SQL> DESCRIBE emp;

Name NULL? Type


--------------- --------------- ------------------
EMPNO NOT NULL NUMBER(4)
ENAME CHAR(10)
JOB CHAR(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7, 2)
COMM NUMBER(7, 2)
DEPTNO NOT NULL NUMBER(2)

Formato de reportes 77
Introduccin a Oracle SQL-Plus

Cambiar al empleado 7566 al cargo de vendedor en el departamento 30: LAB77

SQL> UPDATE emp


2 SET job = SALESMAN, deptno = 30
3 WHERE empno = 7566;

1 row updated.

Actualizar varias columnas en una sola fila: LAB78

SQL> UPDATE emp


2 SET job = SALESMAN, sal = sal * 1.05, deptno = 30
3 WHERE empno = 7788;

1 row updated.

Actualizacin de mltiples filas: Cambiar el cargo SALESMAN por SALES. LAB79

SQL> UPDATE emp


2 SET job = SALES
3 WHERE job = SALESMAN;

7 rows updated.

SQL> SELECT ename, job, deptno


2 FROM emp
3 WHERE job = SALES;

ENAME JOB DEPTNO


------------- ------------- ---------------
ALLEN SALES 30
WARD SALES 30
JONES SALES 30
MARTIN SALES 30
SCOTT SALES 30
TURNER SALES 30
EMMETT SALES 30

7 rows selected.

Formato de reportes 78
Introduccin a Oracle SQL-Plus

Devolver el cargo a su valor original SALESMAN LAB80


SQL> UPDATE emp
4 SET job = SALESMAN
5 WHERE job = SALES;
7 rows updated.

ELIMINACIN DE FILAS

Elimine filas de una tabla especfica usando la sentencia DELETE.

Sintaxis
DELETE FROM nombre_tabla
[ WHERE condicin ]

Ejemplo:

Borrar el empleado nmero 1234 (EMMETT) de la tabla EMP para reflejar su retiro. LAB81

SQL> DELETE FROM emp


2 WHERE empno = 1234;
1 row deleted.

Pregunta:
Qu hubiera pasado si se omite la clusula WHERE en el ejemplo anterior?

Formato de reportes 79
Introduccin a Oracle SQL-Plus
UN VISTAZO AL PROCESAMIENTO DE TRANSACCIONES

Una transaccin se define como todos los cambios realizados a una base de datos entre COMMIT
sucesivos.

Transaccin
IN
I NS
SEER
RTT UPDATE I
INNS
SEER
RTT DDEELLEETTEE

COMMIT SAVEPOINT A SAVEPOINT B

ROLLBACK T O B

ROLLBACK T O A

ROLLBACK

Formato de reportes 80
Introduccin a Oracle SQL-Plus
PROCESAMIENTO DE TRANSACCIONES

La sentencia COMMIT hace permanentes todos los cambios realizados en la transaccin actual.

Tipos de COMMIT
o Explcito
o Implcito

Ejemplo:

Hacer COMMIT en una sentencia SQL. LAB82

SQL> DELETE FROM emp


2 WHERE ename = LERNER;

1 row deleted.

SQL> COMMIT;

Commit complete.

Logre que las modificaciones realizadas sean deshechas utilizando la sentencia ROLLBACK

Ejemplo:

Transfiera a JONES al grupo de vendedores: LAB83

SQL> UPDATE emp


2 SET job = SALESMAN, deptno = 30
3 WHERE ename = JONES;
1 row updated.

Formato de reportes 81
Introduccin a Oracle SQL-Plus
Todos los empleados de la compaa que se llaman JONES fueron transferidos al grupo de
vendedores. Revierta la operacin y vuelva a realizar el traslado, utilizando el nmero de empleado.

SQL> ROLLBACK;
Rollback complete.

SQL> UPDATE emp


2 SET job = SALESMAN, deptno = 30
3 WHERE empno = 7566;
1 row updated.

Marque un punto en una transaccin hasta el cual podra hacer un ROLLBACK sin necesidad de
cancelar toda la transaccin, utilizando la sentencia SAVEPOINT.

Ejemplo:

Inserte un nuevo departamento en la tabla DEPT y cree un punto de salva (SAVEPOINT) para la
transaccin: LAB84

SQL> INSERT INTO dept


2 VALUES (70, PERSONNEL, TAHITI);
1 row created.

SQL> SAVEPOINT A;
Savepoint created.

Use la sentencia ROLLBACK TO SAVEPOINT para cancelar solo una porcin de la transaccin
(hasta un punto de salva determinado):

Formato de reportes 82
Introduccin a Oracle SQL-Plus
Ejemplo:

Inserte un nuevo departamento en la tabla DEPT y cree un punto de salva (SAVEPOINT) para la
transaccin: LAB85
SQL> INSERT INTO dept
2 VALUES (80, EDUCATION, MAUI);
1 row created.

SQL> SAVEPOINT B;
Savepoint created.

Cambie la ubicacin del departamento 80 hacia Kauai: LAB86

SQL> UPDATE dept


2 SET loc = KAUAI
3 WHERE deptno = 80;
1 row updated.

Cancele todas las operaciones hasta el punto de salva B.

SQL> ROLLBACK TO B;
Savepoint created.

Formato de reportes 83
Introduccin a Oracle SQL-Plus
LABORATORIO 6-1

Insercin, actualizacin, eliminacin de datos y confirmacin de transacciones.

1. Insrtese usted mismo como un empleado en la tabla EMP.


2. Confirme la insercin.
3. Inserte otra fila en la tabla EMP pidiendo el nombre del empleado, el nmero del departamento,
el nmero de empleado y la fecha de contratacin.
4. Cree un punto de salva llamado SP1.
5. Adicione un nuevo departamento en la tabla DEPT con nmero 99, localizado en Maui y con
nombre EDUCATION.
6. Cancele las operaciones hasta el punto de salva SP1. Escriba una consulta para mostrar todos
los datos de la tabla DEPT para verificar el estado de los nuevos datos ingresados.
7. Confirme los cambios.
8. Actualice sus propios datos, dndose usted mismo un aumento de $1.000 por mes.
9. Brrese usted mismo de la tabla EMP.
10. Confirme los cambios.
11. Haga de nuevo la vista llamada EMP_DEPTNO_TEN, use WITH CHECK OPTION, la cual
incluye el nombre del empleado, nmero de departamento y nmero de empleado de la tabla
EMP. Los nicos empleados que estarn visibles a travs de esta vista son los que se encuentran
en el departamento 10.
12. Actualice el departamento del empleado KING de 10 a 20 usando la vista
EMP_DEPTNO_TEN. Qu paso? ________________________________________________
13. Intente ingresar un empleado con un nmero de empleado duplicado en la tabla EMP para
probar el ndice creado en la seccin anterior.
14. Inserte dos nuevos departamentos usando la secuencia S_DEPT_DEPTNO, la cual se cre en la
seccin anterior.
15. Escriba una consulta para mostrar los nuevos departamentos insertados.

Formato de reportes 84

También podría gustarte