Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual de SQL Plus PDF
Manual de SQL Plus PDF
Introduccin a Oracle
SQL-Plus
Introduccin a Oracle SQL-Plus
INDICE DE CONTENIDO
EL MODELO RELACIONAL
Tabla EMP
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:
FILAS COLUMNAS
Tabla EMP
La informacin en una tabla puede relacionarse con la informacin que se encuentra en otra.
Tabla DEPT
Tabla EMP
SQL-Plus es una herramienta diseada para usar con ORACLE, la cual extiende las capacidades del
estndar ANSI-SQL
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
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
a) Interfaz Grafica
c) Cierre de sesin:
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
Tabla EMP
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.
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 *
FROM nombre_tabla
Ejemplo:
Visualizar todas las columnas de informacin acerca de cada departamento. (LAB1)
Se puede utilizar el comando DESCRIBE para visualizar los nombres de columnas de una tabla.
Ejemplo:
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
DNAME
------------------------------
FINANZAS
INVESTIGACIN
VENTAS
OPERACIONES
4 rows selected.
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
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
JOB LIST
------------------------------
ANALISTA
RECEPCIONISTA
GERENTE
PRESIDENTE
VENDEDOR
5 rows selected.
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.
SELECT ...
FROM ...
WHERE ...
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
Operadores de comparacin
= Igual a
!= <> ^= Diferente de
SQL> SELECT empno, ename, sal FROM emp WHERE deptno = 30;
6 rows selected.
Mostrar el nombre, cargo y salario de todos los empleados, excepto los gerentes. LAB8
SQL> SELECT ename, job, sal FROM emp WHERE job <> MANAGER;
11 rows selected.
Seleccionar el nmero, cargo y nmero de departamento de todos los empleados contratados entre
Enero 1 de 1982 y Enero 1 de 1983. LAB9
1 row selected.
Seleccin de filas basndose en la coincidencia con valores dentro de una lista, usando el operador IN.
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);
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
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
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
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
Ejemplo:
Seleccionar el nombre, cargo y salario de los gerentes que ganen ms de $1500, al igual que el de todos
los vendedores: LAB13
7 rows selected.
Seleccionar el nombre, cargo y salario de los gerentes y vendedores que ganen $1500 o ms: LAB14
5 rows selected.
SELECT ...
FROM ...
WHERE ...
ORDER BY
Ejemplos
Ordenamiento ascendente: Mostrar el salario, cargo y nombre de los empleados del departamento 10
en orden ascendente, por salario: LAB15
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
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
6 rows selected.
Ordenamiento por posicin de columna: Muestre el nombre, salario y cargo de los empleados del
departamento 10 en orden ascendente por salario: LAB18
3 rows selected.
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.
Ejemplos
TABLE_NAME
--------------------
DEPT
EMP
SALGRADE
3 rows selected.
Nota rpida
q Un asterisco (*) aparecer al lado del nmero de lnea actual del buffer
Ejemplos:
6 rows selected.
SQL> 1
1* SELECT ename, job, sal
SQL> C / sal / deptno
1* SELECT ename, job, deptno
SQL> /
6 rows selected.
6 rows selected.
Borrar la lnea 3:
SQL> 3
3* WHERE deptno = 30
SQL> del
SQL> /
14 rows selected.
LABORATORIO 1-1
Use la tabla EMP para completar los siguientes ejercicios:
Realice clculos varios sobre nmeros usando los siguientes operadores aritmticos:
+ Suma
- Resta
* Multiplicacin
/ Divisin
() Parntesis anular precedencia
Muestre el resultado de los clculos como si fueran columnas con expresiones aritmticas 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
2 rows selected.
Una fila sin valor en una columna, se dice que contiene un valor NULO.
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;
8 rows selected.
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
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.
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
6 rows selected.
Muestre el nombre de empleado, salario, comisin y salario anual, ms un mes de comisin para todos
los vendedores ordenado por compensacin total. LAB25
6 rows selected.
Las funciones numricas aceptan una entrada numrica y retornan valores numricos
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
2 rows selected.
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
3 rows selected.
Ejemplo: ADD_MONTHS
3 rows selected.
Ejemplo: SYSDATE
Mostrar el nombre y las semanas de trabajo de los empleados del departamento 20. LAB29
ENAME WEEKS
-------------- ---------------
CLARK 1098
KING 1075
MILLER 1066
3 rows selected.
FORMATEO DE FECHAS
ELEMENTO DESCRIPCIN
Ejemplo:
Muestre las fechas de contratacin de todos los empleados del departamento 20 con el formato DD of
Month YYYY: LAB30
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
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
DEPARTAMENTOS
----------------------------------------
ACCOUNTING NEW YORK
RESEARCH DALLAS
SALES CHICAGO
OPERATIONS BOSTON
FINANCE LOS ANGELES
RESEARCH BOSTON
PERSONNEL TAHITI
EDUCATION - MAUI
8 rows selected.
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
Muestre el nombre y el cargo de todos los empleados llamados Ward en mayscula inicial bajo el ttulo
NAME: LAB32
NAME JOB
---------- ----------------
Ward SALESMAN
1 row selected.
Ejemplo: SUBSTR
Mostrar las primeras 5 letras del nombre de departamento y su localizacin completa. LAB33
DEPT LOC
------------ ---------------------
ACCOU NEW YORK
RESEA DALLAS
SALES CHICAGO
OPERA BOSTON
FINAN LOS ANGELES
RESEA BOSTON
PERSO TAHITI
EDUCA MAUI
8 rows selected.
Ejemplo:
Muestre la comisin de cada empleado del departamento 30 usando signos de peso, comas en las
posiciones adecuadas y dos dgitos decimales. LAB34
EMPLOYEE COMMISION
----------------- ---------------------
ALLEN $300.00
WARD $500.00
JONES
MARTIN $1,400.00
BLAKE
SCOTT
TURNER $0.00
JAMES
8 rows selected.
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;
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.
Para devolver resultados basados en grupos de filas en lugar de un resultado por fila, utilice las
funciones de grupo.
Muestre el promedio, el valor mximo y la suma de los salarios anuales de todos los vendedores.
LAB36
1 row selected.
Ejemplo: COUNT
Muestre el nmero de filas en la tabla EMP, y el nmero de empleados con comisin no nula. LAB37
EMPLOYEES COMMISIONABLE
------------------- --------------------------
14 4
1 row selected.
SELECT ...
FROM ...
WHERE ...
GROUP BY
HAVING
ORDER BY
3 rows selected.
Si se selecciona una columna normal y una funcin de grupo al mismo tiempo, se recibir un mensaje
de error.
Ejemplo:
Muestre la cantidad de empleados para cada categora de cargos en cada departamento. LAB40
8 rows selected.
Ejemplo:
Muestre el salario anual promedio para todos los tipos de cargo con ms de dos empleados. LAB41
2 rows selected.
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
1 row selected.
LABORATORIO 2-2
Es la unin de dos tablas a travs de los campos que la relacionan, llave primaria llave fornea
respectivamente
EMP DEPT
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
Ejemplo: Seleccionar nmero del empleado, nombre del departamento y localizacin. LAB 43
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
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
Ejemplo: Liste los departamentos que actualmente no tienen empleados asignados. LAB45
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
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
Ejemplo: Liste el nmero, nombre y cargo de cada empleado, as como el numero nombre y cargo del jefe
correspondiente. LAB47
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.
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
OPERADORES DE CONJUNTO
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
SELECT columna
FROMtabla
WHERE condiciones ciertas
INTERSECT
SELECT columna
FROMtabla
WHERE condiciones ciertas
Ejemplo
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).
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.
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
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
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.
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
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.
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.
El nombre de una tabla debe seguir las reglas estndar para los nombres de cualquier objeto de una
base de datos 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
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.
Sintaxis abreviada
CREATE TABLE [user.] nombre_tabla
( { nombre_columna tipo | restriccin }
[ , { nombre_columna tipo | restriccin } ] ... )
Ejemplo: LAB49
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.
Ejemplo: LAB50
Table created.
Ejemplo: LAB51
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
Table altered.
Sintaxis Modificar
ALTER TABLE nombre_tabla
MODIFY ( { nombre_columna tipo | restriccin }
[, { nombre_columna tipo | restriccin } ] ... )
Use la clusula Drop Column cuando desea borrar una columna de una tabla
alter table empty_like_emp add constraint FK_MAU foreign key (deptno) references
dept(deptno);
Table dropped.
Siga los siguientes pasos para eliminar una columna de una tabla:
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.
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.
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.
CREACIN DE VISTAS
Sintaxis
CREATE [OR REPLACE] VIEW nombre_vista [ (alias1, alias2, ... ) ]
AS consulta
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY];
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
View created.
Ejemplo:
SQL> DROP VIEW empvu10;
View dropped.
View created.
3 rows selected.
View created.
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.
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
View created.
UPDATE empvu20
*
ERROR at line 1:
ORA-01402: view WITH CHECK OPTION where-clause violation.
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:
Grant succeeded.
Grant succeeded.
Otorgar privilegios de consulta (SELECT) al usuario Jones sobre la tabla DEPT, con la habilidad de
otorgar los mismos privilegios a otros:
Grant succeeded.
Grant succeeded.
CREACIN DE SINNIMOS
Ejemplo:
Crear el sinnimo dates para la tabla HDATES del usuario Scott. LAB61
Synonym created.
14 rows selected.
LABORATORIO 4-1
Los ndices son estructuras opcionales, asociadas con tablas, que se usan para agilizar la ejecucin de
consultas y/o garantizar unicidad.
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.
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
Ejemplo:
Crear un ndice simple sobre la columna ENAME en la tabla EMP: LAB62
Index created.
En la tabla USER_INDEXES del diccionario de datos se encuentran todos los ndices pertenecientes al
usuario actual: LAB65
INDEX_NAME
--------------------
I_EMP_ENAME
1 rows selected.
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
Index created.
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
Sequence created.
Cree un secuenciador simple para la columna DEPTNO empezando desde el valor 100: LAB70
Sequence created.
NEXTVAL
--------------
8000
1 rows selected.
Sintaxis
Ejemplo: LAB72
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.
INSERCIN DE FILAS
Sintaxis
INSERT INTO nombre_tabla [ (columna1, columna2, ) ]
VALUES (value1, value2, ...)
Ejemplo:
Inserte el departamento de Finanzas con cdigo 50 con sede en Los Angeles en la tabla DEPT: LAB73
1 row created.
Formato de Reportes 76
Introduccin a Oracle SQL-Plus
Inserte valores en solo algunas columnas de una tabla: LAB75
1 row created.
ACTUALIZACIN DE FILAS
Ejemplo:
Mostrar la estructura de la tabla EMP
SQL> DESCRIBE emp;
Formato de reportes 77
Introduccin a Oracle SQL-Plus
1 row updated.
1 row updated.
7 rows updated.
7 rows selected.
Formato de reportes 78
Introduccin a Oracle SQL-Plus
ELIMINACIN DE FILAS
Sintaxis
DELETE FROM nombre_tabla
[ WHERE condicin ]
Ejemplo:
Borrar el empleado nmero 1234 (EMMETT) de la tabla EMP para reflejar su retiro. LAB81
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
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:
1 row deleted.
SQL> COMMIT;
Commit complete.
Logre que las modificaciones realizadas sean deshechas utilizando la sentencia ROLLBACK
Ejemplo:
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.
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> 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.
SQL> ROLLBACK TO B;
Savepoint created.
Formato de reportes 83
Introduccin a Oracle SQL-Plus
LABORATORIO 6-1
Formato de reportes 84