Professional Documents
Culture Documents
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
ENAME
SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER
JOB
RECEPCIONISTA VENDEDOR VENDEDOR GERENTE VENDEDOR GERENTE GERENTE ANALISTA PRESIDENTE VENDEDOR RECEPCIONISTA RECEPCIONISTA ANALISTA RECEPCIONISTA
COMM
300 500 1400
DEPTNO
20 30 30 20 30 30 10 20 10 30 20 30 20 10
Notas rpidas:
q q q
Las categoras de informacin se listan en la parte de arriba de cada tabla Los casos individuales se listan al lado izquierdo 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
COLUMNAS
ENAME
SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER
JOB
RECEPCIONISTA VENDEDOR VENDEDOR GERENTE VENDEDOR GERENTE GERENTE ANALISTA PRESIDENTE VENDEDOR RECEPCIONISTA RECEPCIONISTA ANALISTA RECEPCIONISTA
COMM
300 500 1400
DEPTNO
20 30 30 20 30 30 10 20 10 30 20 30 20 10
La informacin en una tabla puede relacionarse con la informacin que se encuentra en otra. Tabla DEPT DEPTNO
10 20 30 40
DNAME
FINANZAS INVESTIGACIN VENTAS OPERACIONES
LOC
NEW YORK DALLAS CHICAGO BOSTON
ENAME
SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER
JOB
RECEPCIONISTA VENDEDOR VENDEDOR GERENTE VENDEDOR GERENTE GERENTE ANALISTA PRESIDENTE VENDEDOR RECEPCIONISTA RECEPCIONISTA ANALISTA RECEPCIONISTA
COMM
300 500 1400
DEPTNO
20 30 30 20 30 30 10 20 10 30 20 30 20 10
SQL*Plus
Con SQL se puede manipular y recuperar datos, as como crear y modificar la estructura de los datos. Funciones de los comandos SQL
q q q q
Comandos SQL ALTER AUDIT COMMENT COMMIT CREATE DELETE DROP GRANT INSERT LOCK NO AUDIT RENAME REVOKE ROLLBACK SELECT UPDATE VALIDATE
Escriba comandos SQL*Plus para manipular comandos SQL Use los comandos de SQL*Plus para:
q q
Entrar, editar, guardar, recuperar y correr comandos SQL Formatear, guardar, imprimir y realizar clculos sobre los resultados de una consulta en forma de reportes
q q q
Listar la definicin de las columnas de cualquier tabla Acceder y copiar datos entre bases de datos SQL Enviar y aceptar mensajes de un usuario final 6
Comandos de SQL-Plus @ (ejecutar) DESCRIBE RUN BREAK GET SPOOL COLUMN LIST TTITLE COPY REMARK APPEND EXIT SHOW CLEAR INPUT TIMING UNDEFINE QUIT ACCEPT EDIT SET CHANGE HOST START CONNECT / (ejecutar ltimo) DISCONNECT SAVE BTITLE HELP SQLPLUS COMPUTE NEWPAGE
SQL> connect [username[/password[@database]]] username = nombre de usuario password = clave de acceso @database = alias de la base de datos
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.
DNAME
FINANZAS INVESTIGACIN VENTAS OPERACIONES
LOC
NEW YORK DALLAS CHICAGO BOSTON
ENAME
SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER
JOB
RECEPCIONISTA VENDEDOR VENDEDOR GERENTE VENDEDOR GERENTE GERENTE ANALISTA PRESIDENTE VENDEDOR RECEPCIONISTA RECEPCIONISTA ANALISTA RECEPCIONISTA
COMM
300 500 1400
DEPTNO
20 30 30 20 30 30 10 20 10 30 20 30 20 10
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.
El comando SELECT (indica que se va a consultar) 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
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 --------------- --------------10 FINANZAS 20 INVESTIGACION 30 VENTAS 40 OPERACIONES Acceso y Visualizacin de Datos 4 rows selected. LOC -----------------NEW YORK DALLAS CHICAGO BOSTON
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? --------------- --------------DEPTNO NOT NULL DNAME LOC Type -----------------NUMBER(2) CHAR(14) 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 -----------------------------FINANZAS INVESTIGACIN VENTAS OPERACIONES DEPTNO --------------------10 20 30 40 10
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.
11
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.
Nombre de columna o expresin o constante. Operador de comparacin Expresin o nombre de columna o constante
Notas rpidas:
q q
Las constantes de cadena y de fecha deben encerrarse entre comillas simples. Las constantes de carcter son sensibles a maysculas y minsculas y las constantes de fecha deben estar en el formato DD-MM-YY
12
Operadores de comparacin
Igual a Diferente de Mayor que Mayor o igual que Menor que Menor o igual que Entre dos valores
IN (lista) IS NULL
LIKE
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 -----------7499 7521 7654 7698 7844 7900 ENAME ------------ALLEN WARD MARTIN BLAKE TURNER JAMES SAL ------------1600 1250 1250 2850 1500 950
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 -----------SMITH ALLEN WARD MARTIN SCOTT KING TURNER ADAMS JAMES FORD MILLER JOB SAL ----------------- ------------CLERK 800 SALESMAN 1600 SALESMAN 1250 SALESMAN 1250 ANALYST 3000 PRESIDENT 5000 SALESMAN 1500 CLERK 1100 CLERK 950 ANALYST 3000 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';
1 row selected.
Seleccin de filas basndose en la coincidencia con valores dentro de una lista, usando el operador IN.
14
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 q
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%;
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;
2 rows selected. Use el operador NOT para hacer una condicin negativa junto con los operadores:
q q q q
NOT BETWEEN ... AND ... NOT IN (lista) IS NOT NULL NOT LIKE
Expresiones lgicas
q q
AND 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 q q
NOT AND OR 16
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 -----------ALLEN WARD JONES MARTIN BLAKE CLARK TURNER JOB SAL ----------------- ------------SALESMAN 1600 SALESMAN 1250 MANAGER 2975 SALESMAN 1250 MANAGER 2850 MANAGER 2450 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);
JOB SAL ----------------- ------------SALESMAN 1600 MANAGER 2975 MANAGER 2850 MANAGER 2450 SALESMAN 1500
5 rows selected.
17
En orden ascendente. En modo descendente. Por mltiples columnas 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 -----------1300 2450 5000 JOB ----------------CLERK MANAGER PRESIDENT ENAME ------------MILLER CLARK KING
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 -----------5000 2450 1300 JOB ----------------PRESIDENT MANAGER CLERK ENAME ------------KING CLARK 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 -----------JAMES BLAKE ALLEN TURNER MARTIN WARD JOB ENAME ----------------- ------------CLERK 950 MANAGER 2850 SALESMAN 1600 SALESMAN 1500 SALESMAN 1250 SALESMAN 1250
6 rows selected.
19
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.
Tablas de usuario que se consultan frecuentemente en el diccionario de datos Nombre de tabla user_catalog Descripcin Tablas, vistas, sinnimos, secuencias y otros objetos de propiedad del usuario user_constraints user_indexes user_sequences user_synonyms user_tables user_users user_views all_tables Informacin acerca de las restricciones en las tablas del usuario Descripcin de los ndices del usuario Descripcin de las secuencias del usuario Descripcin de los sinnimos del usuario Descripcin de las tablas del usuario Informacin acerca del usuario actual Informacin acerca de las vistas del usuario Descripcin de todas las tablas accesibles por el usuario
20
USER_TABLES: Mostrar una columna del diccionario de datos user_tables: LAB19 SQL> SELECT table_name FROM user_tables;
21
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 ------------ALLEN WARD MARTIN BLAKE TURNER JAMES JOB SAL ---------------- ------------SALESMAN 1600 SALESMAN 1250 SALESMAN 1250 MANAGER 2850 SALESMAN 1500 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> /
22
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 ------------ALLEN WARD MARTIN BLAKE TURNER JAMES JOB DEPTNO HIREDATE ---------------- ------------- --------------SALESMAN 30 20-FEB-81 SALESMAN 30 22-FEB-81 SALESMAN 30 28-SEP-81 MANAGER 30 31-MAY-81 SALESMAN 30 08-SEP-81 CLERK 30 03-DEC-81
6 rows selected.
23
Introduccin a Oracle SQL-Plus ENAME ------------SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER JOB DEPTNO HIREDATE ---------------- ------------- --------------CLERK 20 17-DEC-80 SALESMAN 30 20-FEB-81 SALESMAN 30 22-FEB-81 MANAGER 20 02-APR-81 SALESMAN 30 28-SEP-81 MANAGER 30 31-MAY-81 MANAGER 10 09-JUN-81 ANALYST 20 09-DEC-82 PRESIDENT 10 17-NOV-81 SALESMAN 30 08-SEP-81 CLERK 20 12-JAN-83 CLERK 30 03-DEC-81 ANALYST 20 03-DEC-81 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.
24
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:
+ * / ()
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 3 4 FROM emp WHERE job = SALESMAN AND comm > 0.25 * sal 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 --------------------EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO Null? Type ---------------- ---------------------NOT NULL NUMBER (4) CHAR (10) CHAR (9) NUMBER (4) DATE NUMBER (7, 2) NUMBER (7, 2) 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 3 FROM emp WHERE deptno = 30; JOB SAL COMM SAL+COMM -------------------- -------------- -------------- -------------------SALESMAN 1600 300 1900 SALESMAN 1250 500 1750 SALESMAN 2975 SALESMAN 1250 1400 2650 MANAGER 2850 SALESMAN 3150 SALESMAN 1500 0 1500 CLERK 950
8 rows selected.
26
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 3 FROM emp WHERE deptno = 30; JOB SAL COMM NVL(SAL, 0)+NVL(COMM, 0) -------------------- -------------- -------------- ------------------------------------------SALESMAN 1600 300 1900 SALESMAN 1250 500 1750 SALESMAN 2975 2975 SALESMAN 1250 1400 2650 MANAGER 2850 2850 SALESMAN 3150 3150 SALESMAN 1500 0 1500 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.
27
Orden de evaluacin
* / Multiplicacin Divisin
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 3 4 FROM emp WHERE job = SALESMAN ORDER BY 12 * (sal + comm); SAL COMM -------------- -------------1500 0 1250 500 1600 300 1250 1400 2975 3150 TOTAL -----------18000 21000 22800 31800
6 rows selected.
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 3 4 FROM emp WHERE job = SALESMAN ORDER BY 4; SAL COMM -------------- -------------1250 500 1250 1400 1500 0 2975 300 3150 1600 TOTAL -----------15500 16400 18000 19500
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 3 FROM emp WHERE ename IN (ALLEN, JONES);
SAL SAL / 22 ROUND(SAL / 22, 0) -------------- --------------- ---------------------------1600 72.7272727 73 2975 135.227273 135
2 rows selected.
29
FUNCIN
EJEMPLO
RESULTADO
MOD
MOD (7, 5)
SQRT
SQRT (25)
La raz cuadrada de 25 El salario, redondeado a dos dgitos despus del punto decimal. El salario, truncado a dos dgitos despus del punto decimal. El salario, elevado a la tercera potencia.
ROUND
ROUND (SAL, 2)
TRUNC
TRUNC (SAL, 2)
POWER
POWER (SAL, 3)
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.
Suma un nmero de das a una fecha, produciendo otra fecha. Resta un nmero de das a una fecha, produciendo otra 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
30
SQL> SELECT ename, hiredate, hiredate + 90 $REVIEW$ 2 3 FROM emp WHERE deptno = 10; HIREDATE --------------09/06/1981 17/11/1981 23/01/1982 $REVIEW$ --------------07/09/1981 15/02/1982 23/04/1982
3 rows selected.
FUNCIN
RESULTADO Devuelve la fecha 6 meses despus de HIREDATE Devuelve la fecha 6 meses antes de HIREDATE Devuelve el ltimo da del mes que contiene HIREDATE
ADD_MONTHS
LAST_DAY
LAST_DAY (HIREDATE)
NEXT_DAY
SYSDATE
SYSDATE
MONTHS_BETWEEN
Devuelve la cantidad de meses transcurridos entre HIREDATE y la fecha actual. Devuelve la fecha ms tarda de una lista de fechas
GREATEST(FECHA1, FECHA2...)
GREATEST(HIREDATE, SYSDATE)
31
LEAST(FECHA1, FECHA2...)
LEAST(HIREDATE, SYSDATE)
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 3 FROM emp WHERE deptno = 10; HIREDATE --------------09/06/1981 17/11/1981 23/01/1982 $REVIEW$ --------------09/12/1981 17/05/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 3 FROM emp WHERE deptno = 10; WEEKS --------------1098 1075 1066
3 rows selected.
32
Introduccin a Oracle SQL-Plus FORMATEO DE FECHAS ELEMENTO DD DY DAY DDSPTH MM MON MONTH YY YYYY HH:MI:SS fm DESCRIPCIN Da del mes (Ej. 1-31) Da de la semana (Ej. FRI) Nombre del da, en mayscula, con blancos adicionales hasta completar 9 caracteres (Ej. MONDAY) Nombre del da, en mayscula, deletreado (Ej. TWELFTH) Mes (Ej. 01 12) Nombre del mes, en maysculas, abreviado a 3 letras (Ej. JAN) Nombre del mes, en maysculas, con blancos adicionales hasta completar 9 caracteres (Ej. JANUARY) Ao con dos dgitos (Ej. 91) Ao con cuatro dgitos (Ej. 1991) Horas : Minutos : Segundos (Ej. 09:00:00) Modo de relleno: lo que siga a este prefijo reemplaza los blancos adicionales, generando un resultado de tamao variable
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 3 FROM emp WHERE deptno = 20;
Date of Hire -----------------------------17 of DECEMBER 1980 12 of JANUARY 1983 3 of DECEMBER 1981 Acceso yselected. 3 rows Visualizacin de Datos 33
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.
34
FUNCIN INITCAP
RESULTADO Devuelve el nombre con su primera letra en mayscula, y las dems en minscula (Ej. Smith) Devuelve todos los caracteres de la cadena en mayscula.(Ej. SMITH) Devuelve todos los caracteres de la cadena en minscula (Ej. smith) Empezando en la posicin 1, devuelve 5 caracteres (Ej. MANAG) Devuelve el nmero de caracteres de una cadena (Ej. 5) Concatena dos cadenas muestra un nmero de caracteres a la izquierda del valor de la columna *****5000 Borra un carcter de una cadena
UPPER
UPPER (ENAME)
LOWER
LOWER (ENAME)
SUBSTR
SUBSTR (JOB, 1, 5)
LENGTH
CONCAT
LPAD
LPAD(sal,5,'*')
TRIM
Ej. MITH
Devuelve la posicin de un carcter dentro de una cadena Ej: 3
INSTR
INSTR('String', 'r')
35
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 4 FROM emp 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; LOC --------------------NEW YORK DALLAS CHICAGO BOSTON LOS ANGELES BOSTON TAHITI MAUI
8 rows selected.
36
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.
LEAST
37
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.
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'
39
FUNCIONES AVG
RESULTADO Devuelve el promedio aritmtico de SAL. Devuelve el nmero de valores no nulos de la columna COMM.
COUNT COUNT (*) Devuelve el nmero de filas no nulas en un grupo. Devuelve el valor mximo de SAL Devuelve el valor mnimo de SAL Devuelve la suma de los valores de COMM
MAX
MAX (sal0029
MIN
MIN (sal)
SUM
SUM (comm)
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 3 FROM emp WHERE job = SALESMAN;
AVG (SAL) MAX (SAL) SUM (SAL) ----------------- ----------------- -------------------1954.16667 3150 11725 1 row selected. Acceso y Visualizacin de Datos 40
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;
41
Introduccin a Oracle SQL-Plus Muestre una tabla en subgrupos de filas con la clusula GROUP BY.
Muestre cada departamento y su nmero de empleados, agrupados por departamento. LAB38 SQL> SELECT deptno, COUNT (*) 3 4 FROM emp GROUP BY deptno;
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;
42
Muestre la cantidad de empleados para cada categora de cargos en cada departamento. LAB40 SQL> SELECT deptno, job, COUNT (*) 2 3 FROM emp GROUP BY deptno, job; JOB ------------------CLERK MANAGER PRESIDENT ANALYST CLERK CLERK MANAGER SALESMAN COUNT (*) --------------1 1 1 1 2 1 1 6
DEPTNO ------------10 10 10 20 20 30 30 30
8 rows selected.
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 3 4 FROM emp GROUP BY job HAVING COUNT (*) > 2; 12 * AVG (SAL) ---------------------12450 23450
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 3 4 5 6 FROM emp WHERE job != CLERK GROUP BY deptno HAVING SUM (sal) > 8000 ORDER BY SUM (sal);
44
Cuente todos los registros que no tienen el campo Job nulo. Seleccionar el salario mnimo y mximo de la tabla Emp Seleccionar la fecha de ingreso mnima y mxima de la tabla empleados. Seleccionar el numero de empleados por cada Departamento Seleccionar de cada departamento la suma de los salarios, y el No. De Empleados Contar el numero de empleados del mismo cargo por departamento Contar el numero de 'Analistas y Gerentes de Cada Departamento 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. 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 Muestre solo los nombres de los empleados de cargos 'MANAGER' que ganan mas de 2.600 ordenar alfabticamente (tabla EMP). 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. Computar el promedio de los salarios, el valor mximo y mnimo agrupados por departamentos donde el cargo sea vendedor. Sumar las comisiones de los empleados por departamento y seleccionar el departamento con la sumatoria mayor que cero ordenando descendentemente.
45
EMP
EMPNO ENAME ---------... DEPTNO
DEPT
DEPTNO DNAME LOC ------ ----------------10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
-----10 30 ... 10
EMPNO DEPTNO ----- ------- -------7839 10 NEW YORK 7698 30 CHICAGO 7782 10 NEW YORK 7566 20 DALLAS 7654 30 CHICAGO 7499 30 CHICAGO
LOC
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;
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
EMPNO ENAME ------ ------- ------7839 KING 7698 BLAKE 7782 CLARK 7566 JONES 7654 MARTIN 7499 ALLEN 7844 TURNER 7900 JAMES 7521 WARD 7902 FORD 7369 SMITH ... 14 rows selected. DEPTNO 10 30 10 20 30 30 30 30 30 20 20
DEPT
DEPTNO DNAME LOC ------- ---------- -------10 ACCOUNTING NEW YORK 30 SALES CHICAGO 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 20 RESEARCH DALLAS 20 RESEARCH DALLAS ...
Foreign key
Primary key
47
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;
48
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;
49
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;
50
OPERADORES DE CONJUNTO
Los operadores de conjunto combinan dos o ms tablas para obtener resultado. UNION INTERSECCIN MENOS EL OPERADOR UNION El operador UNION retorna todos los registros distintos seleccionados travs de mltiples queries. Sintaxis SELECT FROMtabla WHERE UNION SELECT FROMtabla WHERE columna condiciones ciertas columna condiciones ciertas Los registros del primer query mas registros del segundo query se eliminan duplicados Los registros que las dos tablas tienen en comn Registros nicos de la primera tabla
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
51
Ejemplo SQL> SELECT JOB 2 FROM ACCOUNTING 3 UNION 4 SELECT JOB 5 FROM RESEARCH 6 UNION 7 SELECT JOB 8 FROM SALES;
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
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 KING BLAKE CLARK JONES MARTIN DEPTNO 10 30 10 20 30 DNAME ACCOUNTING SALES ACCOUNTING RESEARCH SALES
2) Crear un listado de todos los cargos cuya localizacin departamento es Chigaco JOB CLERK MANARGER SALESMAN LOC CHICAGO CHICAGO 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 ALLEN WARD MARTIN DNAME SALES SALES SALES LOC CHICAGO CHICAGO 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 ALLEN WARD MARTIN DNAME SALES SALES SALES
53
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 SMITH ADAMS FORD JOB CLERK CLERK ANALYST DEPTNO 20 20 20 DNAME RESEARCH RESEARCH 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 SCOTT FORD ALLEN JAMES EMPNO 7788 7902 7499 7900 EMGR JONES JONES BLAKE BLAKE MGR 7566 7566 7698 7698
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 MILLER CLARK KING JOB CLERK MANAGER PRESIDENT DNAME ACCOUNTING ACCOUNTING ACCOUNTING SAL 1300 2450 5000 GRADE 2 4 5 54
10. Cree una consulta que muestre el nombre del empleado y la fecha de ingreso de los empleados que ingresaron despus que BLAKE ENAME KING CLARK MARTIN TURNER HIREDATE 17-NOV-81 09-JUN-81 28-SEP-81 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.
55
Debe tener entre 1 y 30 caracteres y el primer carcter debe ser alfabtico. 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 q
No debe ser ninguna palabra reservada de ORACLE. 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.
56
CREACIN DE TABLAS
Tipo de datos CHAR(tamao) VARCHAR2(Tamao) VARCHAR(Tamao) LONG NUMBER(L,D) INTEGER DATE RAW LONG RAW CLOB BLOB BFILE Descripcin Almacena datos de tipo carcter de longitud fija. Con un tamao mximo de 2000 bytes Almacena datos de tipo carcter de longitud variable, con un tamao mximo de 4.000 Actualmente es igual al Char Almacena datos de tipo carcter de longitud variable hasta 2 gigabytes Almacena datos numricos siendo L la longitud y D el numero de dgitos decimales Numrico sin decimal. Por defecto 38. Almacena informacin relacionada con el tiempo incluyendo fechas, horas, minutos y segundos. (Fechas hasta el 31 de diciembre de 4712) Dato en binario puro (imgenes y sonido) con un ancho mximo de 2000 bytes. Dato en binario puro (imgenes y sonido) mas grande que el RAW Almacena objetos de caracteres grandes de un nico byte Almacena objetos binarios de gran tamao, siendo el tamao mximo 4GB (gigabytes). 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 PRIMARY KEY CHECK FOREIGN KEY (nombre_columna) REFERENCES (nombre_columna) [NOT] NULL UNIQUE Uso Identifica de manera nica una fila de la tabla. Especifica una condicin que debe ser verdadera. Establece e impone una relacin entre esta columna y una PRIMARY KEY en la tabla referenciada. Especifica que dicha columna no puede contener valores nulos. 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
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> 2 3 4 CREATE TABLE hdates AS SELECT empno, ename, hiredate FROM emp WHERE empno = 10;
Table created.
58
Introduccin a Oracle SQL-Plus Ejemplo: LAB51 SQL> 5 6 |||||||||||||| 7 CREATE TABLE empty_like_emp AS SELECT * FROM emp WHERE 1 = 2; vcb
Use la sentencia ALTER TABLE para modificar la estructura de una tabla. Se pueden hacer dos operaciones:
q q
Adicionar columnas o restricciones 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 } ] ... )
59
Ejemplo: Incrementar el tamao de la columna ename de 10 a 18. LAB53 SQL> ALTER TABLE hdates 2 MODIFY (ename CHAR(18) ); Table altered. Sintaxis para Borrar la Columna de una Tabla Use la clusula Drop Column cuando desea borrar una columna de una tabla ALTER TABLE nombre_tabla DROP COLUMN ( nombre_columna, nombre_columna ... )
alter table empty_like_emp add constraint FK_MAU foreign key (deptno) references dept(deptno);
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:
60
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.
Renombrar la nueva tabla con el nombre de la tabla original (este paso es opcional) SQL> RENAME tabla_temp TO tabla_original; Table renamed.
61
JOB JOB
MGR HIREDATE
----- ----------------- ----- --------- ------ ----- ------------- --------- -------- ----- ------PRESIDENT PRESIDENT MANAGER MANAGER MANAGER CLERK MANAGER MANAGER SALESMAN ANALYST 17-NOV-81 7839 09-JUN-81 01-MAY-81 7782 23-JAN-82 7839 09-JUN-81 7839 02-APR-81 02-APR-81 7566 09-DEC-82 7698 28-SEP-81 12-JAN-83 20-FEB-81 17-DEC-80 08-SEP-81 03-DEC-81 01-MAY-81 22-FEB-81 28-SEP-81 03-DEC-81 5000 5000 2850 1500 2450 1300 2975 2975 1250 1400 3000 1600 1100 1500 800 3000 950 1250 2850 3000 1250 1600 800 3000 1500 1100 950 500 1400 300 0 300 0 300 10 10 30 10 10 10 20 20 30 20 30 20 30 20 30 20 30 30 20 30 20 30 20 30 20 30
SALESMAN CLERK 7788 7698 ENAME JOB 7369 SMITH 7844 TURNER SALESMAN CLERK 7902 7698 -------- ----------7902 JAMES 7900 CLERK ANALYST 7698 KING FORD PRESIDENT 7566 7698 WARD 7521 SALESMAN MANAGER 7698 CLARK BLAKE MANAGER 7839 7654 MARTINCLERK 7902 FORD ANALYST SALESMAN 7698 7566 MILLER 7499 ALLEN 7369 SMITH 7844 TURNER 7788 SCOTT 7900 JAMES 7876 ADAMS CLERK SALESMAN ANALYST SALESMAN CLERK CLERK
7698 20-FEB-81 7902 17-DEC-80 7698 08-SEP-81 7566 09-DEC-82 7698 03-DEC-81 7788 12-JAN-83
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.
62
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 3 4 AS SELECT empno, ename, job FROM emp WHERE deptno = 10;
View created.
63
SQL> SELECT * FROM empvu10; EMPNO ------------7782 7839 7934 ENAME ------------CLARK KING MILLER JOB ---------------MANAGER PRESIDENT CLERK
View dropped. Ejemplo: alias de columnas en las vistas. LAB57 SQL> 2 3 4 CREATE VIEW empvu11 (id_number, employee, title) AS SELECT empno, ename, job FROM emp WHERE deptno = 10;
View created. SQL> SELECT * FROM empvu11; ID_NUMBER ----------------7782 7839 7934 3 rows selected. EMPLOYEE ---------------CLARK KING MILLER TITLE ---------------MANAGER PRESIDENT CLERK
64
Ejemplo: alias alternativos en las vistas. LAB58 SQL> 2 3 4 CREATE VIEW salvu10 AS SELECT empno, ename, sal * 12 annual_salary FROM emp 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 29400 60000 15600
Sintaxis -------------- ------------- -------------------------7782 CLARK 7839 KING 7934 MILLER 3 rows selected.
Ejemplo: VIEW nombre_vista [ (alias 1, alias2, ) ] CREATE AS consulta [ WITH CHECK OPTION [ CONSTRAINT restriccin ] ] Ejemplo: Cree una vista solo con los datos de los empleados del departamento No. 20. LAB59 SQL> 2 3 4 CREATE VIEW empvu20 AS SELECT * FROM emp WHERE deptno = 20 WITH CHECK OPTION;
65
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.
SELECT CREATE DROP GRANT / REVOKE Ejecutar imports y exports sobre la base de datos completa Modificar la estructura de la base de datos RESOURCE CONNECT
66
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.
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> 2 3 4 GRANT SELECT ON dept TO jones 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.
Pblico Privado
Referencia a tablas y vistas sin especificar el propietario o la base de datos. Flexibilidad al personalizar una convencin de nombres ms significativa.
68
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 ------------7369 7499 7521 7566 7654 7698 7782 7788 7839 7844 7876 7900 7902 7934 ENAME ------------SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER HIREDATE --------------17-DEC-80 20-FEB-81 22-FEB-81 02-APR-81 28-SEP-81 31-MAY-81 09-JUN-81 09-DEC-82 17-NOV-81 08-SEP-81 12-JAN-83 03-DEC-81 03-DEC-81 23-JAN-82
14 rows selected.
69
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.
70
TABLE SCAN completo (acceso secuencial) 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.
Las columnas se usan frecuentemente en clusulas WHERE Cada valor es nico (el mejor caso) Amplio rango de valores 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
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 3 FROM emp WHERE ename = SMITH;
En la tabla USER_INDEXES del diccionario de datos se encuentran todos los ndices pertenecientes al usuario actual: LAB65 SQL> SELECT index_name 2 3 FROM user_indexes WHERE table_name = EMP;
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 );
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.
74
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.
Sintaxis
DROP SEQUENCE nombre_secuencia;
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.
75
Sintaxis
INSERT INTO nombre_tabla [ (columna1, columna2, ) ] VALUES (value1, value2, ...)
Ejemplo:
Mostrar la estructura de la tabla DEPT: SQL> DESCRIBE dept; Name NULL? --------------- --------------DEPTNO NOT NULL DNAME LOC Type -----------------NUMBER(2) CHAR(14) 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 --------------EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO NULL? Type --------------- -----------------NOT NULL NUMBER(4) CHAR(10) CHAR(9) NUMBER(4) DATE NUMBER(7, 2) NUMBER(7, 2) NOT NULL NUMBER(2) 77
Formato de reportes
Introduccin a Oracle SQL-Plus Cambiar al empleado 7566 al cargo de vendedor en el departamento 30: LAB77 SQL> UPDATE emp 2 3 SET job = SALESMAN, deptno = 30 WHERE empno = 7566;
1 row updated. Actualizar varias columnas en una sola fila: LAB78 SQL> UPDATE emp 2 3 SET job = SALESMAN, sal = sal * 1.05, deptno = 30 WHERE empno = 7788;
1 row updated. Actualizacin de mltiples filas: Cambiar el cargo SALESMAN por SALES. LAB79 SQL> UPDATE emp 2 3 SET job = SALES WHERE job = SALESMAN;
7 rows updated. SQL> SELECT ename, job, deptno 2 3 FROM emp WHERE job = SALES; JOB ------------SALES SALES SALES SALES SALES SALES SALES DEPTNO --------------30 30 30 30 30 30 30
Devolver el cargo a su valor original SALESMAN LAB80 SQL> UPDATE emp 4 5 SET job = SALESMAN 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
UPDATE
INSERT INSERT
DELETE DELETE
SAVEPOINT A
SAVEPOINT B
ROLLBACK T O B ROLLBACK T O A
ROLLBACK
Formato de reportes
80
PROCESAMIENTO DE TRANSACCIONES
La sentencia COMMIT hace permanentes todos los cambios realizados en la transaccin actual.
Tipos de COMMIT
o Explcito o Implcito
Ejemplo:
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 3 SET job = SALESMAN, deptno = 30 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 3 SET job = SALESMAN, deptno = 30 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);
Use la sentencia ROLLBACK TO SAVEPOINT para cancelar solo una porcin de la transaccin (hasta un punto de salva determinado):
Formato de reportes
82
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 3 SET loc = KAUAI 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
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