Top Banner
Introducción a Oracle SQL-Plus
49

SQL Plus - Mal BiCho

Jan 21, 2016

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: SQL Plus - Mal BiCho

Introducción a Oracle SQL-Plus

Page 2: SQL Plus - Mal BiCho

INDICE DE CONTENIDO

ACCESO Y VISUALIZACIÓN DE DATOS EL MODELO RELACIONAL VISIÓN GENERAL DE SQL SQL CONTRA SQL*PLUS Comandos SQL Uso los comandos de SQL*Plus para… VISIÓN GENERAL DEL INICIO DE UNA SESIÓN SQL ACCESO A LA AYUDA VISTAZO DE LA SENTENCIA SELECT SELECCIÓN DE COLUMNAS SELECCIÓN DE FILAS VER EL DICCIONARIO DE DATOS Nombre de tabla Descripción EDICIÓN DEL BUFFER DE SQL-PLUS EJECUCIÓN DE OPERACIONES SOBRE TIPOS DE DATOS Y FUNCIONES VISTAZO A LOS VALORES Y FUNCIONES NUMÉRICOS REFERENCIA DE LOS VALORES Y FUNCIONES NUMÉRICOS VISTAZO A LOS VALORES Y FUNCIONES DE FECHA REFERENCIA DE LOS VALORES Y FUNCIONES DE FECHA REFERENCIA DE LOS VALORES Y FUNCIONES DE CARACTERES VISIÓN GENERAL DE ALGUNAS FUNCIONES ADICIONALES REFERENCIA DE ALGUNAS FUNCIONES ADICIONALES VISTAZO A LAS FUNCIONES DE GRUPO OBTENIENDO DATOS DE MULTIPLES TABLAS CARACTERÍSTICAS DEL JOIN TIPOS DE JOIN [EQUIJOIN, OUTER JOIN , SEF-JOINS ] NON-EQUIJOINS OPERADORES DE CONJUNTO EL OPERADOR UNION EL OPERADOR INTERSECCIÓN (INTERSECT) EL OPERADOR MENOS (MINUS VISIÓN GENERAL DE LA CREACIÓN DE TABLAS CREACIÓN DE TABLAS RESTRICCIONES MODIFICACIÓN DE TABLAS Borrar la tabla original CREACIÓN DE VISTAS VISTAZO AL ACCESO DE TABLAS Y VISTAS UN VISTAZO A LA CONCESIÓN DE ACCESO A TABLAS Y VISTAS VISIÓN GENERAL DE LOS SINÓNIMOS CREACIÓN DE SINÓNIMOS VISIÓN GENERAL SOBRE LOS ÍNDICES CREACIÓN DE ÍNDICES CREACIÓN DE GENERADORES DE SECUENCIA INSERCIÓN DE FILAS ACTUALIZACIÓN DE FILAS ELIMINACIÓN DE FILAS UN VISTAZO AL PROCESAMIENTO DE TRANSACCIONES PROCESAMIENTO DE TRANSACCIONES

Page 3: SQL Plus - Mal BiCho

Acceso y visualización de los datos Modo relacional. La información se organiza en forma de tablas

Tabla EMP EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7369 SMITH RECEPCIONISTA 7902 17/12/1995 800 20 7499 ALLEN VENDEDOR 7698 20/02/1996 1600 300 30 7521 WARD VENDEDOR 7698 22/02/1996 1250 500 30 7566 JONES GERENTE 7839 02/04/1996 2975 20 7654 MARTIN VENDEDOR 7698 28/07/1996 1250 1400 30 7698 BLAKE GERENTE 7839 31/05/1996 2850 30 7782 CLARK GERENTE 7839 09/06/1996 2450 10 7788 SCOTT ANALISTA 7566 09/12/1997 3000 20 7839 KING PRESIDENTE 17/11/1996 5000 10 7844 TURNER VENDEDOR 7698 08/11/1996 1500 0 30 7876 ADAMS RECEPCIONISTA 7788 12/01/1998 1100 20 7900 JAMES RECEPCIONISTA 7698 03/12/1996 950 30 7902 FORD ANALISTA 7566 03/12/1996 3000 20 7934 MILLER RECEPCIONISTA 7782 23/01/1998 1300 10 Cada columna tiene un tipo de información y 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 Las categorías de información se listan en la parte de arriba de cada tabla.

LA INFORMACIÓN DE UNA TABLA PUEDE RELACIONARSE CON LA INFORMACIÓN QUE SE ENCUENTRA EN OTRA. Tabla DEPT

DEPTNO DNAME LOC 10 FINANZAS NEW YORK 20 INVESTIGACION DALLAS 30 VENTAS CHICAGO 40 OPERACIONES BOSTON

Visión General de SQL SQL plus es una herramienta diseñada para usar con ORACLE, la cual extiende las capacidades del estándar ANSI-SQL

SQL contra SQL*Plus SQL Es un lenguaje que consiste en comandos para guardar, recuperar, mantener y regular el

acceso a una base de datos. SQL *Plus Es una aplicación que reconoce y ejecuta comandos SQL y comandos especializados de

SQL*Plus que pueden personalizar reportes, proveer facilidades de ayuda y edición, así como mantener variables del sistema.

Con SQL se puede manipular y recuperar datos, asi como crear y modificar la estructura de los datos. Funciones de los comandos SQL: Consultas Manipulación de datos Definición de datos Control de datos

Page 4: SQL Plus - Mal BiCho

Comandos SQL ALTER DROP REVOKE AUDIT GRANT ROLLBACK COMMENT INSERT SELECT COMMIT LOCK UPDATE CREATE NO AUDIT VALIDATE DELETE RENAME Use los comandos SQL* plus para manipular comandos SQL Entrar, editar, recuperar y correr comandos SQL Formatear, guardar, imprimir y realizar cálculos sobre los resultados de una consulta en forma de reportes. Listar la definición de las columnas de cualquier tabla. Acceder y copiar datos entre las bases de datos SQL Enviar y aceptar mensajes de un usuario final

Comandos de SQL Plus. @ (ejecutar) COPY QUIT / (ejecutar ultimo) 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 TITLE UNDEFINE COMANDOS

SQL> show user; --- ver con que usuario estoy trabajando SQL> EXIT --- Cierra sesión. SQL> connect [username[/password[@database]]] --- inicio de session SQL SQL> HELP TOPICS --- Listado de todos los comandos de SQL Plus [Acceso a la Ayuda] SQL> SELECT USERNAME FROM ALL_USERS; --- Para ver los usuarios existentes

----------------------------------------------------------------------------------------------------------------------------------

VISIÓN GENERAL DEL INICIO DE UNA SESIÓN SQL El primer paso para abrir una sesión SQL es acceder a SQL-Plus

a) Interfaz Grafica

b) Desde la línea de Comando SQL> connect [username[/password[@database]]] username = nombre_de_usuario password = clave_de_acceso @database = alias_de_la_base_de_datos c) Cierre de sesión:

SQL> exit <ENTER>

Page 5: SQL Plus - Mal BiCho

Vistazo de la sentencia SELECT Seleccionar información de una base de datos, es decir, hacer consultas, es una de las operaciones más comunes que se realizan sobre una base de datos. Ítems de una RDBMS que pueden incluirse en una sentencia SELECT Columnas Expresiones Constantes

Requerimientos mínimos para ejecutar una sentencia SELECT El comando SELECT (indica que se va a consultar). La palabra FROM (indica donde se va a realizar la consulta).

Selección de Columnas Existen dos maneras distintas de visualizar todas las columnas de una tabla: Digitando todos los nombres de columna separados por comas y la tabla donde esas columnas están

definidas. Digitar un asterisco y el nombre de la taba donde están definidas las columnas.

Sintaxis:

EJEMPLO: Visualizar todas las columnas de información acerca de cada departamento.

Nota: se puede utilizar DESCRIBE para visualizar los nombres de columnas de una tabla.

EJEMPLO: Visualizar la estructura de la tabla DEPT

SELECT nombre_columna [, nombre_columna… ] FROM nombre_tabla

SELECT * FROM nombre_tabla

SQL> SELECT * FROM dept;

DEPTNO DNAME LOC ------------- ------------------ ---------------- 10 FINANZAS NEW YORK 20 INVESTIGACION DALLAS 30 VENTAS CHICAGO 40 OPERACIONES BOSTON

4 rows selected.

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

SQL> DESCRIBE dept;

Page 6: SQL Plus - Mal BiCho

Ejemplo de columna única: Para visualizar una columna específica, entre el nombre de la columna en la cláusula SELECT y la tabla en la que está definida en la cláusula FROM.

--------------------------------------------------------------------------------------------------------------------------------------------- Ejemplo de múltiples columnas: Visualizar el nombre y número de todos los departamentos

-------------------------------------------------------------------------------------------------------------------------------------------- DISTINCT. Con SQL se pueden quitar las filas duplicadas antes que los datos sean devueltos por la sentencia SELECT con la cláusula DISTINCT

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

EJEMPLO: Visualizar cada cargo de la tabla EMP de forma única.

-----------------------------------------------------------------------------------------------------------------------------------------------

SQL> SELECT dname FROM dept;

DNAME ----------------- FINANZAS INVESTIGACION VENTAS OPERACIONES

4 rows selected.

DNAME DEPTNO ----------------- ------------------ FINANZAS 10 INVESTIGACION 20 VENTAS 30 OPERACIONES 40

SQL> SELECT dname, deptno FROM dept;

SELECT DISTINCT nombre_columna1 [, nombre_columna2…] FROM nombre_tabla

SQL> SELECT DISTINCT job FROM emp;

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

5 rows selected

Page 7: SQL Plus - Mal BiCho

ALIAS. Con SQL se pueden definir alias para los nombres de columnas en una sentencia SELECT

SQL> SELECT DISTINCT job “JOB LIST” FROM emp; Nota: solo se puede hacer referencia a los alias de columna en la cláusula SELECT de una consulta.

*****************************************************************************************

Selección de Filas Para seleccionar filas específicas de una tabla, use la cláusula WHERE para especificar una condición. Componentes de la condición de búsqueda de la clausula WHERE Nombre de columna, expresión o constante. Operador de comparación Expresión, nombre de columna o constante

Notas rápidas: Las constantes de cadena y de fecha deben encerrarse entre comillas simples. Las constantes de carácter son sensibles a mayúsculas y minúsculas y las consatantes de fecha deben

estar en el formato DD-MM-YY

Operadores de Comparación

= Igual a != , <> Diferente que > Mayor que >= Mayor o igual que < Menor que <= Menor o igual que Between… and Entre dos valores In (lista) Igual que algún miembro de la lista Is null Es un valor nulo like Concuerda con un patrón de caracteres

Selección de filas basadas en criterios de igualdad o desigualdad usando los operadores =, <>, >=, <=, >, <.

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

5 rows selected

Sintaxis de la sentencia select SELECT… FROM… WHERE…

Page 8: SQL Plus - Mal BiCho

Ejemplo 1: Seleccionar el número, nombre y salario de los empleados en el departamento 30.

-----------------------------------------------------------------------------------------------------------------------------------------------

Ejemplo 2: Mostrar el nombre, cargo y salario de todos los empleados, excepto los gerentes.

EJEMPLO 3: Selección basada en un rango de valores usando el operador BETWEEN… AND. Seleccionar el número, cargo y el número de departamento de todos los empleados contratados entre Enero 1 de 1982 y enero 1 de 1983.

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

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

6 rows selected.

SQL> SELECT ename, job, sal FROM emp where <> ‘MANAGER’;

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

11 rows selected

SQL> SELECT ename, job, deptno, hiredate FROM emp WHERE hiredate BETWEEN ‘01/01/1982’ AND ‘01/01/1983; ENAME JOB DEPTNO HIREDATE ------------ -------- ------------ -------------- MILLER CLERK 10 23/01/1982

1 row selected

Page 9: SQL Plus - Mal BiCho

Ejemplo 4: Selección de filas basándose en la coincidencia con valores dentro de una lista, usando el operador IN. Seleccionar el nombre, cargo y número de departamento de todos los empleados que son recepcionistas y analistas.

---------------------------------------------------------------------------------------------------------------------------------------------------- Selección de Filas basándose en la coincidencia con un patrón de caracteres usando comodines con el operador LIKE:

Comodines: ‘%’ coincidencias con cualquier cantidad de caracteres ‘_’ coincidencia con un carácter

Ejemplo 1: Seleccionar el nombre, cargo, número de departamento y fecha de contratación para los empleados cuyo apellido empiece con la letra mayúscula ‘M’.

Ejemplo 2: Seleccionar el nombre, cargo, numero de departamento y fecha de contratación para los empleados cuyo apellido empiece con la letra mayúscula ‘J’ seguido de dos caracteres y que termine con ‘ES’.

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

ENAME JOB DEPTNO ------------ -------- ------------ SMITH CLERK 20 SCOTT ANALYST 20 ADAMS CLERK 20 JAMES CLERK 30 FORD ANALYST 20 MILLER CLERK 10 6 rows selected.

SQL> SELECT ename, job, deptno, hiredate FROM emp where ename LIKE ‘M%’;

ENAME JOB DEPTNO HIREDATE ------------ -------------- ------------ -------------- MARTIN SALESMAN 30 28/SEP/1981 MILLER CLERK 10 23/JAN/1982

2 rows selected.

SQL> SELECT ename, job, deptno, hiredate FROM emp where ename LIKE ‘J__ES’;

ENAME JOB DEPTNO HIREDATE ------------ -------------- ------------ -------------- JONES MANAGER 20 02/APR/1981 JAMES CLERK 30 03/DEC/1981 2 rows selected.

Page 10: SQL Plus - Mal BiCho

Use el operador NOT para hacer una condición negativa junto con los operadores: NOT BETWEEN … AND … NOT IN (lista) IS NOT NULL NOT LIKE

Conecte operadores lógicos con expresiones lógicas complejas. Expresiones lógicas AND OR

Cuando una condición contiene más de una expresión, el RDBMS evalúa cada expresión. Luego los resultados de cada condición se unen teniendo en cuenta la precedencia de los operadores de conexión.

Igual precedencia: =, <>, >=, <=, >, <, IN, LIKE, IS NULL, BETWEEN… AND… Luego los operadores lógicos se evalúan en el siguiente orden NOT, AND, OR.

------------------------------------------------------------------------------------------------------------------------------------------- Ejemplo 1: Seleccionar el nombre, cargo y salario de los gerentes que ganen más de $1500, al igual que el de todos los vendedores.

Ejemplo 2: Seleccionar el nombre, cargo y salario de los gerentes y vendedores que ganen $1500 o más.

SQL> SELECT ename, job, sal FROM emp WHERE sal > 1500 AND job = ‘MANAJER’ OR job = ‘SALESMAN’;

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

7 rows selected.

SQL> SELECT ename, job, sal FROM emp WHERE sal >= 1500 AND (job = ‘MANAJER’ OR job = ‘SALESMAN’);

ENAME JOB SAL ------------ -------- ------------ ALLEN SALESNAN 1600 JONES MANAGER 2975 BLAKE MANAGER 2850 CLARK MANAGER 2450 TURNER SALESMAN 1500 5 rows selected.

Page 11: SQL Plus - Mal BiCho

Salidas ordenadas de una consulta

Sintaxis de la sentencia SELECT SELECT… FROM… WHERE… ORDER BY…

ORDER BY puede ordenar: En orden ascendente En modo descendente Por multiples columnas Por la posición de la columna

Ejemplo 1: Ordenamiento ascendente, mostrar el salario, cargo y nombre de los empleados del departamento 10 en orden ascendente, por salario.

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

Ejemplo 3: Ordenamiento por múltiples columnas. Mostrar el nombre, cargo y salario de los empleados en el departamento 30. Ordene los resultados por cargo. Si hay más de un empleado con el mismo cargo, ordénelos por salario en orden descendente y finalmente por apellido.

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

6 rows selected

SQL> SELECT ename, job, sal FROM emp WHERE deptno =30 ORDER BY job, sal DESC ename;

SAL JOB ENAME -------------- ------------ ------------ 1300 CLERK MILLER 2450 MANAGER CLARK 5000 PRESIDENT KING

3 rows selected

SQL> SELECT sal, job, ename FROM emp WHERE deptno =10 ORDER BY sal;

SQL> SELECT sal, job, ename FROM emp WHERE deptno =10 ORDER BY sal DESC;

Page 12: SQL Plus - Mal BiCho

Ejemplo 4: Ordenamiento por posición de columna. Muestre el nombre, salario y cargo de los empleados del departamento 10 en orden ascendente por salario.

------------------------------------------------------------------------------------------------------------------------------------------------- VER EL DICCIONARIO DE DATOS El diccionario de datos es un conjunto de tablas y vistas que contiene información descriptiva acerca de las tablas, privilegios de acceso de los usuarios, y demás características de la base de datos.

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

Nombre de tabla Descripción

user_catalog Tablas, vistas, sinónimos, secuencias y otros objetos de propiedad del usuario user_constraints Información acerca de las restricciones en las tablas del usuario user_indexes Descripción de los índices del usuario user_sequences Descripción de las secuencias del usuario user_synonyms Descripción de los sinónimos del usuario user_tables Descripción de las tablas del usuario user_users Información acerca del usuario actual user_views Información acerca de las vistas del usuario all_tables Descripción de todas las tablas accesibles por el usuario Ejemplo: USER_TABLES: Mostrar una columna del diccionario de datos user_tables: ---------------------------------------------------------------------------------------------------------------------------------------------------

ENAME SAL JOB -------------- ---------- ------------------- MILLER 1300 CLERK CLARK 2450 MANAGER KING 5000 PRESIDENT 3 rows selected.

SQL> SELECT ename, sal, job FROM emp WHERE deptno = 10 ORDER BY 2;

SQL> SELECT table_name FROM user_tables;

TABLE_NAME -------------------- DEPT EMP SALGRADE 3 rows selected.

Page 13: SQL Plus - Mal BiCho

EDICIÓN DEL BUFFER DE SQL-PLUS La edición del buffer de SQL-Plus se realiza con comandos de SQL-Plus: Comando Descripción A[PPEND] Adiciona texto específico a la línea actual en el buffer C[HANGE] Cambia la primera ocurrencia de un texto específico en la línea actual del buffer por

una cadena especificada. Ejemplo: C / ENP / EMP CL[EAR] BUFFER ó CLE[AR] BUFFER

Borra el contenido del buffer

DEL Borra el contenido de la línea actual del buffer I[NPUT] Adiciona una o más líneas de texto después de la línea actual del buffer.

Presione <ENTER> en una línea en blanco para salir del modo INPUT L[IST] Lista todas las líneas del buffer L[IST] n Lista la línea número n del buffer R[UN] Muestra y ejecuta el contenido del buffer / Ejecuta el contenido del buffer n Fija el puntero del buffer en la línea n n <cadena de texto> Cambia el contenido de la línea n por la cadena de texto especificada Nota rápida: Un asterisco (*) aparecerá al lado del número de línea actual del buffer

Ejemplos: Reescribir la línea 2 cuando ocurre un error: Fijar el puntero del buffer en la línea 1. Cambiar SAL por DEPTNO: Visión general de la creación de tablas

SQL> SELECT ename, job, sal FRO emp WHERE deptno = 30;

ERROR at line 2:

ORA-00923: FROM keyword not found where expected SQL> 2 FROM emp SQL> /

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

6 rows selected.

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

Page 14: SQL Plus - Mal BiCho

Agregar la columna HIREDATE en la línea actual usando el comando APPEND:

Borrar la línea 3:

ENAME JOB DEPTNO ------------- ---------------- ------------- ALLEN SALESMAN 30 WARD SALESMAN 30 MARTIN SALESMAN 30 BLAKE MANAGER 30 TURNER SALESMAN 30 JAMES CLERK 30 6 rows selected.

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

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

6 rows selected.

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

ENAME JOB DEPTNO HIREDATE ------------- ---------------- ------------- --------------- SMITH CLERK 20 17-DEC-80 ALLEN SALESMAN 30 20-FEB-81 WARD SALESMAN 30 22-FEB-81 JONES MANAGER 20 02-APR-81 ……….

ADAMS CLERK 20 12-JAN-83 JAMES CLERK 30 03-DEC-81 FORD ANALYST 20 03-DEC-81 MILLER CLERK 10 23-JAN-82

14 rows selected.

Page 15: SQL Plus - Mal BiCho

EJECUCIÓN DE OPERACIONES SOBRE TIPOS DE DATOS Y FUNCIONES

VISTAZO A LOS VALORES Y FUNCIONES NUMÉRICOS Realice cálculos varios sobre números usando los siguientes operadores aritméticos:

+ Suma - Resta * Multiplicación / División ( ) Paréntesis – anular precedencia

Los operadores aritméticos pueden ser usados en la mayoría de sentencias SQL. REFERENCIA DE LOS VALORES Y FUNCIONES NUMÉRICOS

Muestre el resultado de los cálculos como si fueran columnas con expresiones aritméticas en sentencias SELECT. Ejemplo: expresiones en sentencias SELECT. Muestre el nombre, salario, comisión y la compensación total para todos los vendedores cuya comisión es mayor que el 25% de su salario. Una fila sin valor en una columna, se dice que contiene un valor NULO.

SQL> SELECT ename, sal, comm, sal + comm 2 FROM emp 3 WHERE job = ‘SALESMAN’ AND comm > 0.25 * sal 4 ORDER BY 4;

ENAME SAL COMM SAL+COMM -------------- -------------- --------------- --------------- WARD 1250 500 1750 MARTIN 1250 1400 2650

2 rows selected.

SQL> DESCRIBE emp;

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

Page 16: SQL Plus - Mal BiCho

Cuando una expresión o función individual hace referencia a una columna que contiene un valor nulo, el resultado es también nulo.

Ejemplo: Muestre el nombre, cargo, salario, comisión y compensación total de los empleados del departamento 30.

Convierta un valor nulo en uno no-nulo con el propósito de evaluar una expresión con la función NVL Cuando NVL evalúa la primera expresión, si esta es no-nula, retorna dicha expresión; en caso contrario, retorna la segunda.

Sintaxis: Ejemplo: Muestre el nombre de empleado, cargo, salario, comisión y compensación total de los empleados del departamento 30.

SQL> SELECT ename, job, sal, comm, sal + comm 2 FROM emp 3 WHERE deptno = 30;

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

8 rows selected.

NVL (expr1, expr2)

SQL> SELECT ename, job, sal, comm, NVL(sal, 0) + NVL(comm, 0) 2 FROM emp 3 WHERE deptno = 30;

ENAME JOB SAL COMM NVL(SAL, 0)+NVL(COMM, 0) -------------- -------------------- -------------- -------------- ------------------------------------------- ALLEN SALESMAN 1600 300 1900 WARD SALESMAN 1250 500 1750 JONES SALESMAN 2975 2975 MARTIN SALESMAN 1250 1400 2650 BLAKE MANAGER 2850 2850 SCOTT SALESMAN 3150 3150 TURNER SALESMAN 1500 0 1500 JAMES CLERK 950 950 8 rows selected.

Page 17: SQL Plus - Mal BiCho

El RDMBS evalúa cada expresión aritmética. Los resultados de las expresiones se combinan luego en el orden determinado por la precedencia de los operadores.

Orden de evaluación * Multiplicación / División + Suma - Resta Para anular la precedencia de los operadores, coloque parte de la expresión entre paréntesis. ORACLE evalúa estas expresiones primero. Ejemplo: Muestre el nombre de empleado, salario, comisión y compensación total para todos los vendedores ordenado por compensación total. Las funciones numéricas aceptan una entrada numérica y retornan valores numéricos Ejemplo: función ROUND Liste el nombre, salario mensual, salario diario (basado en un mes laboral de 22 días) y el salario diario redondeado al próximo entero para los empleados ALLEN y JONES.

SQL> SELECT ename, sal, comm, 12 * (sal + comm) total 2 FROM emp 3 WHERE job = ‘SALESMAN’ 4 ORDER BY 12 * (sal + comm);

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

6 rows selected.

SQL> SELECT ename, sal, sal / 22, ROUND (sal / 22, 0) 2 FROM emp 3 WHERE ename IN (‘ALLEN’, ‘JONES’);

ENAME SAL SAL / 22 ROUND(SAL / 22, 0) -------------- -------------- --------------- ---------------------------- ALLEN 1600 72.7272727 73 JONES 2975 135.227273 135 2 rows selected.

Page 18: SQL Plus - Mal BiCho

FUNCIÓN EJEMPLO RESULTADO MOD MOD (7, 5) El residuo de dividir 7 entre 5 SQRT SQRT (25) La raíz cuadrada de 25 ROUND ROUND (SAL, 2) El salario, redondeado a dos dígitos después del punto decimal. TRUNC TRUNC (SAL, 2) El salario, truncado a dos dígitos después del punto decimal. POWER POWER (SAL, 3) El salario, elevado a la tercera potencia. VISTAZO A LOS VALORES Y FUNCIONES DE FECHA REFERENCIA DE LOS VALORES Y FUNCIONES DE FECHA Use operaciones aritméticas simples en sentencias SQL para efectuar cálculos sobre fechas en las bases de datos. Fecha + número Suma un número de días a una fecha, produciendo otra fecha. Fecha – número Resta un número de días a una fecha, produciendo otra fecha. Fecha – Fecha Resta una fecha de otra, produciendo el número de días entre las dos. Ejemplo: Mostrar el nombre, fecha de contratación y fecha de vencimiento del período de prueba (90 días) de los empleados en el departamento 10 FUNCIÓN RESULTADO ADD_MONTHS (HIREDATE, 6) Devuelve la fecha 6 meses después de HIREDATE ADD_MONTHS (HIREDATE, -6) LAST_DAY (HIREDATE) Devuelve el último día del mes que contiene HIREDATE NEXT_DAY (HIREDATE, ‘FRIDAY’)

Devuelve la fecha del siguiente viernes después de HIREDATE

SYSDATE Devuelve la fecha y hora actual MONTHS_BETWEEN (SYSDATE, HIREDATE)

Devuelve la cantidad de meses transcurridos entre HIREDATE y la fecha actual.

GREATEST(HIREDATE, SYSDATE)

Devuelve la fecha más tardía de una lista de fechas

LEAST(FECHA1, FECHA2...) Devuelve la fecha más temprana de una lista de fechas

SQL> SELECT ename, hiredate, hiredate + 90 “$REVIEW$” 2 FROM emp 3 WHERE deptno = 10;

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

3 rows selected.

Page 19: SQL Plus - Mal BiCho

Ejemplo: ADD_MONTHS Mostrar el nombre, fecha de contratación y 6 meses después de la fecha de contratación de los empleados del departamento 10.

Ejemplo: SYSDATE Mostrar el nombre y las semanas de trabajo de los empleados del departamento 20. FORMATEO DE FECHAS ELEMENTO DESCRIPCIÓN

DD Día del mes (Ej. 1-31) DY Día de la semana (Ej. FRI)

DAY El día, en mayúscula, con blancos adicionales hasta completar 9 caracteres (Ej. MONDAY) DDSPTH Nombre del día, en mayúscula, deletreado (Ej. TWELFTH)

MM Mes (Ej. 01 – 12) MON Nombre del mes, en mayúsculas, abreviado a 3 letras (Ej. JAN)

MONYH El mes, en mayúsculas, con blancos adicionales hasta completar 9 caracteres (Ej. JANUARY) YY Año con dos dígitos (Ej. 91)

YYYY Año con cuatro dígitos (Ej. 1991) HH:MI:SS Horas : Minutos : Segundos (Ej. 09:00:00)

fm Modo de relleno: lo que siga a este prefijo reemplaza los blancos adicionales

SQL> SELECT ename, hiredate, ADD_MONTHS (hiredate, 6) “$REVIEW$” 2 FROM emp 3 WHERE deptno = 10;

ENAME HIREDATE $REVIEW$ -------------- --------------- --------------- CLARK 09/06/1981 09/12/1981 KING 17/11/1981 17/05/1982 MILLER 23/01/1982 23/07/1982 3 rows selected.

SQL> SELECT ename, ROUND((SYSDATE - hiredate) / 7,0) “WEEKS” 2 FROM emp 3 WHERE deptno = 10;

ENAME WEEKS -------------- --------------- CLARK 1098 KING 1075 MILLER 1066 3 rows selected.

Page 20: SQL Plus - Mal BiCho

Formatee la visualización de valores de fecha con la función de conversión TO_CHAR Ejemplo: Muestre las fechas de contratación de todos los empleados del departamento 20 con el formato DD of Month YYYY REFERENCIA DE LOS VALORES Y FUNCIONES DE CARACTERES Combine columnas con caracteres y constantes de carácter para producir una salida más significativa que una simple columna estándar devuelta por SQL-Plus. Ejemplo: concatenación Muestre la combinación de departamento más su localización bajo un solo título DEPARTAMENTOS

SQL> SELECT TO_CHAR (hiredate, ‘fmDD “ of “ MONTH YYYY’) “Date of Hire” 2 FROM emp 3 WHERE deptno = 20;

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

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.

Page 21: SQL Plus - Mal BiCho

FUNCIÓN RESULTADO INITCAP (ENAME) Muestra el nombre con su primera letra en mayúscula, y las demás en minúscula

(Ej. Smith) UPPER (ENAME) Devuelve todos los caracteres de la cadena en mayúscula. (Ej. SMITH) LOWER (ENAME) Devuelve todos los caracteres de la cadena en minúscula (Ej. smith) SUBSTR (JOB, 1, 5) Empezando en la posición 1, devuelve 5 caracteres (Ej. MANAG) LENGTH (ENAME) Devuelve el número de caracteres de una cadena (Ej. 5) CONCAT(ENAME,JOB) Concatena dos cadenas LPAD(sal,5,'*') muestra un número de caracteres a la izquierda del valor de la columna *****5000 TRIM('S' FROM 'SMITH') Borra un carácter de una cadena Ej. MITH INSTR('String', 'r') Devuelve la posición de un carácter dentro de una cadena Ej: 3 Muestre el nombre y el cargo de todos los empleados llamados Ward en mayúscula inicial bajo el título NAME: Ejemplo: SUBSTR Mostrar las primeras 5 letras del nombre de departamento y su localización completa.

SQL> SELECT INITCAP (ename) NAME, job 3 FROM emp 4 WHERE UPPER (ename) = ‘WARD’;

NAME JOB ---------- ---------------- Ward SALESMAN 1 row selected.

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

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

Page 22: SQL Plus - Mal BiCho

Formatee la visualización de valores numéricos con la función de conversión TO_CHAR Ejemplo: Muestre la comisión de cada empleado del departamento 30 usando signos de peso, comas en las posiciones adecuadas y dos dígitos decimales. VISIÓN GENERAL DE ALGUNAS FUNCIONES ADICIONALES

FUNCIÓN EJEMPLO RESULTADO GREATEST GREATEST (SAL, COMM) Devuelve el mayor valor entre SAL y COMM LEAST LEAST (SAL, COMM) Devuelve el menor valor entre SAL y COMM REFERENCIA DE ALGUNAS FUNCIONES ADICIONALES Ejemplo: GREATEST Muestre el nombre, el salario mensual y la comisión de todos los vendedores, incluyendo una columna que muestre el mayor valor ya sea de salario o comisión.

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.

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

ENAME SAL NVL (comm, 0) GREATEST (sal, comm) ----------------- ----------- ------ ------------------ -- ------------------------------- ALLEN 1600 300 1600 WARD 1250 500 1250 JONES 2975 0 2975 MARTIN 1250 1400 1400 SCOTT 3150 0 3150 TURNER 1500 0 1500

6 rows selected.

Page 23: SQL Plus - Mal BiCho

VISTAZO A LAS FUNCIONES DE GRUPO Para devolver resultados basados en grupos de filas en lugar de un resultado por fila, utilice las funciones de grupo.

FUNCIONES EJEMPLO RESULTADO

AVG AVG (sal) Devuelve el promedio aritmético de SAL.

COUNT COUNT (comm) Devuelve el número de valores no nulos de la columna COMM. COUNT (*) Devuelve el número de filas no nulas en un grupo.

MAX MAX (sal) Devuelve el valor máximo de SAL MIN MIN (sal) Devuelve el valor mínimo de SAL SUM SUM (comm) Devuelve la suma de los valores de COMM

Ejemplo: AVG, MAX, SUM Muestre el promedio, el valor máximo y la suma de los salarios anuales de todos los vendedores. Ejemplo: COUNT Muestre el número de filas en la tabla EMP, y el número de empleados con comisión no nula.

SQL> SELECT AVG (sal), MAX (sal), SUM (sal) 2 FROM emp 3 WHERE job = ‘SALESMAN’;

AVG (SAL) MAX (SAL) SUM (SAL) ----------------- ----------------- -------------------- 1954.16667 3150 11725

1 row selected.

SQL> SELECT COUNT (*) EMPLOYEES, COUNT (comm) COMMISIONABLE 2 FROM emp;

EMPLOYEES COMMISIONABLE ------------------- --------------------------

14 4 1 row selected.

Page 24: SQL Plus - Mal BiCho

REVISANDO SALIDAS DE GRUPO SINTAXIS DE LA SENTENCIA SELECT

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

Muestre una tabla en subgrupos de filas con la cláusula GROUP BY. Ejemplo: GROUP BY – una columna Muestre cada departamento y su número de empleados, agrupados por departamento. Si se selecciona una columna normal y una función de grupo al mismo tiempo, se recibirá un mensaje de error. Ejemplo: Mostrar el empleado que se contrató de primero

SQL> SELECT deptno, COUNT (*) 3 FROM emp 4 GROUP BY deptno;

DEPTNO COUNT (*) ------------------- --------------------------

10 3 20 3 30 8

3 rows selected.

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

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

Page 25: SQL Plus - Mal BiCho

Ejemplo: GROUP BY – más de una columna Muestre la cantidad de empleados para cada categoría de cargos en cada departamento. Coloque una condición a la función de grupo mediante la cláusula HAVING.

Ejemplo: Muestre el salario anual promedio para todos los tipos de cargo con más de dos empleados. La cláusula HAVING puede ser usada en la misma consulta con una cláusula WHERE. Ejemplo: Muestre los departamentos y la nómina de aquellos departamentos cuya nómina exceda de $8.000, excluyendo todo el personal Aseador. Ordene la lista por el monto de la nómina.

SQL> SELECTdeptno, job, COUNT (*) 2 FROM emp 3 GROUP BY deptno, job;

DEPTNO JOB COUNT (*) ------------- ------------------- ---------------

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

8 rows selected.

SQL> SELECT job, 12 * AVG (sal) 2 FROM emp 3 GROUP BY job 4 HAVING COUNT (*) > 2;

JOB 12 * AVG (SAL) ------------------- ---------------------- CLERK 12450 SALESMAN 23450

2 rows selected.

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

DEPTNO SUM (SAL) ------------------- ---------------------- 30 14575

1 row selected.

Page 26: SQL Plus - Mal BiCho

OBTENIENDO DATOS DE MULTIPLES TABLAS. Es la unión de dos tablas a través de los campos que la relacionan, llave primaria llave foránea respectivamente

JOIN: use un JOIN en una consulta de datos de más de una tabla

CARACTERÍSTICAS DEL JOIN Las tablas a ser unidad (JOINED) se especifican en la cláusula FROM En la cláusula WHERE se especifica como unir las tablas. Las columnas que tienen nombres iguales en las tablas especificadas en la cláusula FROM deben ser

identificadas utilizando NOMBRE_TABLA.NOMBRE_COLUMNA Si las columnas no tienen homónimos en las tablas, no es necesario especificar el nombre de la tabla en

las cláusulas WHERE y SELECT. Se pueden unir JOIN cuantas tablas se requieran El criterio de coincidencia entre las tablas es denominado el predicado del JOIN o criterio del JOIN Las columnas especificadas en la condición 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 unión de cuatro tablas requiere especificar criterio de JOIN para tres parejas de tablas)

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

Page 27: SQL Plus - Mal BiCho

TIPOS DE JOIN

Ejemplo: Seleccionar número del empleado, nombre del departamento y localización. OUTER JOIN Operador OUTERJOIN es el signo más entre paréntesis (+), 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 estaría esa coincidencia. El nombre de una tabla debe de seguir las reglas estándar para los nombres de cualquier objeto de una base de datos ORACLE.

SQL> select ename, emp.deptno, loc 2 From emp, dept 3 Where emp.deptno = dept.deptno;

Page 28: SQL Plus - Mal BiCho

Sintaxis Ejemplo: Lista la localización de todos los departamentos así como los empleados que trabajan en estos departamentos, incluya los departamentos en los cuales no trabaja empleado alguno. OUTER JOINS Y LA CLAUSULA WHERE Ejemplo: Liste los departamentos que actualmente no tienen empleados asignados Ejemplo: Liste el nombre y la localización del departamento de todos los CLERK, incluya una lista de todos los departamentos que actualmente no tengan ningún CLERK asignado. Características del OUTER JOIN • Si un registro de una de las tablas de un JOIN no satisface la condición del JOIN, normalmente ese registro

no aparece en el resultado. El OUTER JOIN, permite que un registro con estas características aparezcan en el resultado.

• El OUTER JOIN a través SQL proporciona registros temporales para seleccionar los datos, los datos de la tablas.

• Se coloca un (+) después de la combinación de tabla/columna (en la cláusula WHERE) sobre la que se necesita los registros falsos para realizar el OUTER JOIN (WHERE EMP.DEPTNO(+)=DEPT.DEPTNO).

• Si se requiere múltiples columnas para dar la condición 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.

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

SQL> SELECT loc, ename 2 FROM emp, dept 3 WHERE emp.deptno(+) = dept.deptno;

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

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

Page 29: SQL Plus - Mal BiCho

SEF-JOINS Un SEF-JOINS es utilizado para buscar coincidencia entre registros sobre columnas diferentes de la misma tabla. Ejemplo: Liste el número, nombre y cargo de cada empleado, así como el numero nombre y cargo del jefe correspondiente. Características 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

información. • 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 mayoría 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.

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

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

SQL> SELECT GRADE, ENAME, SAL, JOB 2 FROM EMP, SALGRADE 3 WHERE SAL BETWEEN LOSAL AND HISAL 4 ORDER BY GRADE, SAL;

Page 30: SQL Plus - Mal BiCho

OPERADORES DE CONJUNTO Los operadores de conjunto combinan dos o más tablas para obtener resultado. UNION Los registros del primer query mas registros del segundo query se eliminan duplicados

INTERSECCIÓN Los registros que las dos tablas tienen en común MENOS Registros únicos de la primera tabla

EL OPERADOR UNION El operador UNION retorna todos los registros distintos seleccionados través de múltiples queries. Sintaxis Ejemplo: Quien gana más de $2000 en todos los departamentos. EL OPERADOR INTERSECCIÓN (INTERSECT) El operador INTERSECT retorna valores comunes de múltiples tablas

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

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;

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

Page 31: SQL Plus - Mal BiCho

Ejemplo EL OPERADOR MENOS (MINUS) El operador MINUS. Retorna todos los registros seleccionados por el primer query que no fueron también seleccionados por el segundo query Ejemplo: Liste la información de los empleados que tienen cargos que están en el departamento de ACCOUNTING pero que no estén en el departamento de ventas (SALES). Nota: Los operadores de conjunto son útiles para conformar subqueries que referencia a múltiples tablas.

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

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

SQL> SELECT * FROM ACCOUNTING 2 WHERE JOB (SELECT JOB FROM ACCOUNTING 3 MINUS SELECT JOB FROM SALES)

Page 32: SQL Plus - Mal BiCho

VISIÓN GENERAL DE LA CREACIÓN DE TABLAS Requerimientos de la sentencia CREATE TABLE El nombre de la tabla El nombre de la columna El tipo de datos de la columna

Reglas para los nombres Debe tener entre 1 y 30 caracteres y el primero debe de ser alfabético. Debe contener solo los caracteres:

o A-Z, a-z, 0-9, _ (guion bajo) o $ y # son legales pero su uso se esta descontinuando

No debe de ser ninguna palabra reservada de ORACLE No debe tener el mismo nombre que otro objeto dentro del mismo nombre de usuario de ORACLE

Nota Rápida: Los nombres de tablas son los mismos si se escriben en mayúsculas o minúsculas; ejemplo: EMP = Emp.

Los nombres de columnas deben adherirse a las tres primeras reglas antes descritas. Tipo de datos

CHAR (tamaño) Almacena datos de tipo carácter de longitud fija. Con un tamaño máximo De 2000 bytes VARCHAR2(tamaño) Almacena datos de tipo carácter de longitud fija. Con un tamaño máximo De 2000bytes VARCHAR(tamaño) Actualmente es igual al Char LONG Almacena datos de tipo carácter de longitud variable hasta 2 gigabytes NUMBER (L,D) Almacena datos numéricos siendo L la longitud y D el numero de dígitos Decimales INTEGER Numérico sin decimal. Por defecto 38. DATE Almacena información relacionada con el tiempo incluyendo fechas, horas, minutos y

segundos. (Fechas hasta el 31 de diciembre de 4712). RAW Datos en binario puro (imágenes y sonido) con un ancho máximo de 2000 bytes. LONG RAW Datos en binario puro (imágenes y sonido) mas grande que RAW CLOB Almacena objetos de caracteres grandes de un único byte BLOB Almacena objetos binarios de gran tamaño, siendo el tamaño máximo 4GB (gigabytes). BFILE Almacena punteros de archivos a LOB administrados por sistemas de archivos externos

a la base de datos. Restricciones

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

largo de todas las filas.

Las restricciones de integridad permiten al diseñador de la aplicación restringir el rango de valores aceptables que se pueden almacenar en una tabla.

Page 33: SQL Plus - Mal BiCho

Sintaxis

Ejemplo: ---------------------------------------------------------------------------------------------------------------------------------------------------- Podemos crear tablas usando la clausula AS en la sentencia CREATE TABLE para usar los atributos de columnas y los datos de una tabla ya existente. Ejemplo1: Ejemplo2: --------------------------------------------------------------------------------------------------------------------------------------------------

CREATE TABLE [user.] nombre_tabla ({nombre_columna tipo | restricción}

[,{nombre_columna tipo | restricción} ] … )

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

CREATE TABLE [user.] nombre_tabla [(nombre_columna1, nombre columna2,…)] AS consulta

SQL> CREATE TABLE hdates 2 AS SELECT empno, ename, hiredate 3 FROM emp 4 WHERE empno = 10;

Table created.

SQL> CREATE TABLE empty_like_emp 2 AS SELECT * 3 FROM emp 4 WHERE 1=2;

Table created.

Page 34: SQL Plus - Mal BiCho

Modificación de Tablas Use la sentencia ALTER TABLE para modificar la estructura de una tabla. Se pueden hacer dos operaciones: Adicionar columnas o restricciones Modificar la definición de las columnas (restricciones, NOT NULL y demás)

Sintaxis – Adicionar Ejemplo 1: Sintaxis – Modificar Ejemplo1: incrementar el tamaño de la columna ename de 10 a 18. -------------------------------------------------------------------------------------------------------------------------------------------------- Eliminación de Tablas y Columnas

Use la clausula Drop Column cuando desea borrar una columna de una tabla.

Ejemplo: Borrar la columna ename de la tabla hdates

--------------------------------------------------------------------------------- Eliminación de una tabla: DROP TABLE

ALTER TABLE nombre_tabla ADD ( { nombre_columna tipo | restricción } [,{ nombre_columna2 tipo | restricción }] … )

SQL> ALTER TABLE hdates 2 ADD (manager NUMBER(4)); Table altered.

SQL> ALTER TABLE nombre_tabla MODIFY ( { nombre_columna tipo | restricción }

[, {nombre_columna2 tipo | restricción } ] ..)

SQL> ALTER TABLE hdates 2 MODIFY (ename CHAR(18));

Table altered.

SQL> ALTER TABLE nombre_tabla DROP COLUMN (nombre_columna1, nombre_columna2, …)

SQL> ALTER TABLE hdates 2 DROP COLUMN ename;

Table altered.

DROP TABLE nombre_tabla;

Page 35: SQL Plus - Mal BiCho

Ejemplo: Eliminar la tabla EMPTY_LIKE_EMP Crear Tablas Duplicadas o solo ciertas columnas de una tabla Crear un duplicado de la tabla original, sin la columna o columnas que queremos eliminar:

Borrar la tabla original

Renombrar la nueva tabla con el nombre de la tabla original (este paso es opcional)

---------------------------------------------------------------------------------------------------------------------------------------------------

Visión General de las Vistas

Se puede representar lógicamente una o más tablas como una vista. Una vista no contiene datos. Todos los datos se derivan de las tablas subyacentes. Ventajas de las vistas Seguridad Conveniencia Perspectiva

Creación de vistas La creación de vistas es similar a la creación de tablas usando la clausula AS. Sintaxis

SQL> DROP TABLE empty_like_emp; Table dropped.

SQL> CREATE TABLE table_temp 2 AS SELECT columna1, columna2, columna4, … 3 FROM table_original; Table created.

SQL> DROP TABLE tabla_original; Table dropped.

SQL> RENAME tabla_temp TO tabla_original; Table renamed

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

Page 36: SQL Plus - Mal BiCho

La consulta contiene un sentencia SELECT sin la clausula order by

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

La Clausula 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.

Ejemplo1: Crear una vista que contenga el numero, el nombre y el cargo de todos los empleados del departamento 10. 2da parte Ejemplo2: Alias de columnas en las vistas

SQL> CREATE VIEW empvu10 2 AS SELECT empno, ename, job 3 FROM emp 4 WHERE deptno =10;

View created.

SQL> SELECT * FROM empvu10;

EMPNO ENAME JOB --------------- ---------------- ----------------- 7782 CLARK MANAGER 7839 KING PRESIDENT 7934 MILLER CLERK

3 rows selected.

SQL> CREATE VIEW empvu11(id_number, employee, title) 2 AS SELECT empno, ename, job

3 WHERE deptno =10;

View created.

SQL> SELECT * FROM empvu11;

ID_NUMBER EMPLOYEE TITLE --------------- ---------------- ----------------- 7782 CLARK MANAGER 7839 KING PRESIDENT 7934 MILLER CLERK

3 rows selected.

Page 37: SQL Plus - Mal BiCho

Ejemplo 3: alias alternativos en las vistas.

Ejemplo 4: Cree una vista solo con los datos de los empleados del departamento No. 20. Asegure que las inserciones y actualizaciones realizadas sobre una vista, no afectaran los datos que la vista no sea capaz de acceder, mediante la utilización de la clausula WITH CHECK OPTION

Parte2. Actualizando el departamento a 30 para el código 7369 ---------------------------------------------------------------------------------------------------------------------------------------------------

SQL> CREATE VIEW salvu10 2 AS SELECT empno, ename, sal*12 annual_salary 3 FROM emp 4 WHERE deptno =10;

View created.

SQL> SELECT * FROM empvu11;

EMPNO ENAME ANNUAL_SALARY --------------- ---------------- ----------------- 7782 CLARK 29400 7839 KING 60000 7934 MILLER 15600

SQL> CREATE VIEW empvu20 2 AS SELECT * FROM depto = 20 3 WHERE deptno =20 4 WITH CHECK OPTION;

View created

SQL> UPDATE empvu20 2 SET deptno = 30 3 WHERE empno =7369;

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

Page 38: SQL Plus - Mal BiCho

Vistazo al acceso de Tablas y vistas El privilegio de DBA (DataBase Administrator – Administrador de la base de datos) permite al desarrollador saltarse muchos privilegios estándar que normalmente se requieren para usar objetos de la base de datos. Privilegios del sistema DBA – todos los privilegios 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

Un vistazo a la concesión de acceso a tablas y vistas Los propietarios de las tablas controlan el acceso a los objetos de su propiedad. Privilegios de acceso a tablas Crear la tabla por si mismo Obtener los privilegios del propietario

Como DBA o propietario de tablas, use el comando GRANT y sus opciones para otorgar distintos niveles de acceso a los objetos de la base de datos. Sintaxis Ejemplo1: Otorgar todos los privilegios sobre la tabla EMP a todos los usuarios: Ejemplo2: Otorgar privilegios de consulta (SELECT) al usuario Jones sobre la tabla DEPT:

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

SQL> GRANT ALL 2 ON emp 3 TO PUBLIC;

Grant succeeded.

SQL> GRANT SELECT 2 ON dept 3 TO jones;

Grant succeeded.

Page 39: SQL Plus - Mal BiCho

Ejemplo3: Otorgar privilegios de consulta (SELECT) al usuario Jones sobre la tabla DEPT, con la habilidad de otorgar los mismos privilegios a otros. Ejemplo4: Cambiar el password de acceso del usuario Scott a ‘leopard’ --------------------------------------------------------------------------------------------------------------------------------------------------- Visión General de los Sinónimos Los sinónimos se pueden crear por razones de seguridad y conveniencia. Niveles de los sinónimos Publico Privado

Ventajas de los sinónimos Referencia a tablas y vistas sin especificar el propietario o la base de datos. Flexibilidad al personal una convención de nombres mas significativa.

Creación de Sinónimos Ejemplo1: Crear el sinónimo ‘dates’ para la tabla HDATES del usuario Scott.

SQL> GRANT SELECT 2 ON dept 3 TO jones 4 WITH GRANT OPTION;

Grant succeeded.

SQL> GRANT CONNECT 2 TO scott 3 IDENTIFIED BY leopard;

Grant succeeded.

CREATE SYNONYM nombre_sinonimo FOR nombre_tabla/nombre_vista

SQL> CREATE SYNONYM dates 2 FOR scoot.hadates;

Synonym created.

SQL> SELECT * FROM dates;

Page 40: SQL Plus - Mal BiCho

---------------------------------------------------------------------------------------------------------------------------------------------------- Visión General sobre los Índices Los índices son estructuras opcionales, asociadas con tablas, que se usan para agilizar la ejecución de consultas y/o garantizar unicidad. El RDBMS de ORACLE accede a los datos en las tablas de dos maneras: 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 extracción frecuente de menos del 10 – 15% de las filas en una tabla grande y se hace referencia frecuente a las columnas en la clausula WHERE. Características de las columnas para indexado Las columnas se usan frecuentemente en clausulas 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 ejecución de consultas, pero disminuyen las presentaciones en cuanto a la velocidad de mantenimiento de las tablas. Nota: ORACLE actualiza los índices automáticamente. No tienen impacto en la sintaxis de SQL. Creación de índices Sintaxis – Índice simple

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

14 rows selected

CREATE INDEX nombre_indice ON TABLE nombre_tabla (nombre_columna1 [, nombre_columna2]…)

Page 41: SQL Plus - Mal BiCho

Ejemplo1: Crear un índice simple sobre la columna ENAME en la tabla EMP. SQL> CREATE INDEX i_emp_ename 2 ON emp (ename);

Index created. En esta consulta se usa el índice:

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

En esta consulta NO se usa el índice: SQL> SELECT * FROM emp;

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

SQL> SELECT index_name 2 FROM user_indexes 3 WHERE table_name = ‘EMP’;

Sintaxis – Eliminación de índices

DROP INDEX nombre_indice Ejemplo1:

SQL> DROP INDEX i_emp_ename;

Index dropped Crear índices únicos sobre una tabla para asegurar que nunca dos filas tendrán valores iguales en la columna o columnas indexadas. Sintaxis

CREATE UNIQUE INDEX nombre_indice ON nombre_tabla (nombre_columna1 [, nombre_columna2] … )

Ejemplo: Crear un índice en la columna EMPNO de la tabla EMP para incrementar el desempeño, en consultas, asi como garantizar valores únicos para los números de empleados.

SQL> CREATE UNIQUE INDEX i_emp_empno 2 ON emp (empno)

Index created.

INDEX_NAME ------------------------ I_EMP_ENAME 1 rows selected.

Page 42: SQL Plus - Mal BiCho

Los índices concatenados crean una entrada en el índice con datos provenientes de cada una de las columnas indicadas en la sentencia de creación del índice. Se pueden incluir hasta un máximo de 16 columnas por índice. Ejemplo2: Crear un índice en la tabla EMP para las columnas EMPNO y ENAME

SQL> CREATE UNIQUE INDEX i_empno_ename 2 ON emp (empno, ename); Index created. ---------------------------------------------------------------------------------------------------------------------------------------------------- Creación de Generadores de secuencia Cree secuenciadores con el fin de generar enteros unicos y consecutivos para multiples usos. Los secuenciadores se pueden utilizar para generar llaves primarias de forma automática. Sintaxis abreviada CREATE SEQUENCE nombre_secuencia [INCREMENT BY {1|n} ] [START WITH n]

[{MAXVALUE n | NOMAXVALUE} ] [{MINVALUE n | NOMINVALUE } ]

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

SQL> CREATE SEQUENCE s_emp_empno START WITH 8000; Sequence created.

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

SQL> CREATE SEQUENCE s_dept_deptno START WITH 100; Sequence created.

Ejemplo 3: Mostrar el siguiente valor disponible de la secuencia S_EMP_EMPNO

SQL> SELECT s_emp_empno.nextval 2 FROM dual; NEXTVAL ---------------- 800

1 rows selected. Eliminar un secuenciador de la base de datos con DROP SEQUENCE Sintaxis DROP SEQUENCE nombre_secuencia; Ejemplo:

SQL> DROP SEQUENCE s_emp_empno; Sequence dropped.

Page 43: SQL Plus - Mal BiCho

Actualización de Datos En Tablas Inserción de Filas Inserte filas en una tabla con la instrucción INSERT. Sintaxis INSERT INTO nombre_tabla [ (columna1, columna2, …) ] VALUES (value1, value2,…) Ejemplo1: Mostrar la estructura de la Tabla DEPT SQL> DESCRIBE dept; Name NULL? Type ------------- --------------- ---------------- DEPTNO NOT NULL NUMBER(2) DNAME CHAR(14) LOC CHAR(13) Inserte el departamento de Finanzas con código 50 con sede en Los Angeles en la tabla DEPT

SQL> INSERT INTO dept 2 VALUES (50, ‘FINANCE’, ‘LOS ANGELES’); 1 row created. Inserte los valores en todas las columnas de una tabla:

SQL> INSERT INTO emp 2 VALUES (1234, ‘EMMETT, ‘SALESMAN’, 7698, SYSDATE, 2000, NULL, 30);

1 row created. Inserte valores en solo algunas columnas de una tabla

SQL> INSERT INTO emp (empno, ename, hiredate, sal, deptno) 2 VALUES (S_EMP_EMPNO.NEXTTVAL, ‘LERNER’, ‘01/01/1992’, 2000, 30); 1 row created. Inserte valores en las columnas utilizando parámetros 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. ----------------------------------------------------------------------------------------------------------------------------------------------------

Page 44: SQL Plus - Mal BiCho

Actualización de Filas

Cambie los datos en una tabla específica con la sentencia UPDATE. Sintaxis

UPDATE nombre_tabla SET columna1 = valor, columna2 = valor2 [WHERE condición]

Ejemplo: Mostrar la estructura de la tabla EMP

SQL> DESCRIBE emp; Name NULL? Type --------------- --------------- ---------------- EMPNO NOT NULL NUMBER(4) ENAME CHAR(10) JOB CHAR(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NOT NULL NUMBER(2) Cambiar al empleado 7566 al cargo de vendedor en el departamento 30.

SQL> UPDATE emp 2 SET job = ‘SALESMAN’, deptno = 30 3 WHERE empno = 7566;

1 row updated Actualizar varias columnas en una sola fila

SQL> UPDATE emp 2 SET job = ‘SALESMAN’, sal = sal*1.05, deptno =30 3 WHERE empno = 7788;

1 row updated Actualización de múltiples filas: Cambiar el cargo ‘SALESMAN’ por ‘SALES’

SQL> UPDATE emp 2 SET job = ‘SALES’ 3 WHERE job = ‘SALESMAN’;

7 rows updated.

SQL> SELECT ename, job, deptno 2 FROM emp 3 WHERE job = ‘SALES’;

Page 45: SQL Plus - Mal BiCho

ENAME JOB DEPTNO --------------- --------------- ----------------- ALLEN SALES 30 WARD SALES 30 JONES SALES 30 MARTIN SALES 30 SCOTT SALES 30 TURNER SALES 30 EMMETT SALES 30

7 rows selected. Devolver el cargo a su valor original ‘SALESMAN’

SQL> UPDATE emp 2 SET job = ‘SALESMAN’ 3 WHERE job = ‘SALES’;

7 rows update

----------------------------------------------------------------------------------------------------------------------------------------------------

Eliminación de Filas Elimine filas de una tabla especifica usando la sentencia DELETE Sintaxis

DELETE FROM nombre_tabla [WHERE condición]

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

SQL> DELETE FROM emp 2 WHERE empno = 1234;

1 row deleted ---------------------------------------------------------------------------------------------------------------------------------------------------- Un vistazo general al procesamiento de Transacciones Una transacción se define como todos los cambios realizados a una base de datos entre COMMIT sucesivos

Page 46: SQL Plus - Mal BiCho

Procesamiento de Transacciones La sentencia COMMIT hace permanentes todos los cambios realizados en la transacción actual Tipos de COMMIT Explicito Implícito

Ejemplo: Hacer COMMIT en una sentencia SQL

SQL> DELETE FROM emp 2 WHERE ename = ‘LERNER’

1 row deleted.

SQL> COMMIT; Commit complete. Logre que las modificaciones realizadas sean deshechas utilizando la sentencia ROLLBACK Ejemplo: Transfiere a JONES al grupo de vendedores:

SQL> UPDATE emp 2 SET job = ‘SALESMAN’, deptno = 30 3 WHERE ename = ‘JONES’;

1 row updated. Todos los empleados de la compañía que se llaman ‘JONES’ fueron transferidos al grupo de vendedores. Revierta la operación y vuelva a realizar el traslado, utilizando el número de empleado.

SQL> ROLLBACK; Rollback complete.

SQL> UPDATE emp 2 SET job = ‘SALESMAN’, deptno = 30 3 WHERE empno = 7566;

1 row updated. Marque un punto en una transacción hasta el cual podría hacer un ROLLBACK sin necesidad de cancelar toda la transacción, utilizando la sentencia SAVEPOINT. Ejemplo: ---------------------------------------------------------------------------------------------------------------------------------------------------- Para mostrar las tablas de la base de datos hay varias formas. SQL>select * from tab; SQL>select * from tabs; SQL>select * from user_objects where object_type = 'TABLE'; Para describir el contenido (columnas) de una tabla: sql>desc NOMBRE_DE_TABLA;

Page 47: SQL Plus - Mal BiCho

Para ver todo el contenido de la base de datos (TABLAS de mi usuario): sql>select * from user_catalog; sql>select * from cat; Para mostrar todos los datos (columnas)de una tabla SQL>select * from nombre_tabla; Para mostrar algunos los datos (columnas)de una tabla SQL>select columna1, columna2, … from nombre_tabla;

Page 48: SQL Plus - Mal BiCho

Despliegue el nombre del empleado separando el apellido y nombre por ** asegurándose que este en mayúsculas, la fecha de ingreso con formato (26 Nov 2012 10:20), la fecha de cumpleaños del empleado (MMDD) de todos los empleados de los deptos. Co, Si, RH, HK que cumplan años el mes en curso. Select upper (nom_e || ‘- -’ || ape_e ) To _char (fecha_in, ‘DD MON YYYY HH:MM); Substr (RFC, 7,4) From Emp Where cve_d in (‘Co’, ‘Si’, ‘RH’,’MK’) And substr (RFC, 7, 4) = to_ char(sysdate, ‘MM’); Muestre el nombre y el cargo de todos los empleados llamados Martinez primero la primera con mayúscula y las demás en minúscula luego todas en minúsculas. (INITCAP. Muestra el nombre con su primera letra en mayúscula, y las demás en minúscula) (LOWER. Devuelve todos los caracteres de la cadena en minúscula) NVL. Convierta un valor nulo en uno no-nulo con el propósito de evaluar una expresión con la función NVL Cuando NVL evalúa la primera expresión, si esta es no-nula, retorna dicha expresión; en caso contrario, retorna la segunda. Muestre el nombre de empleado, cargo, salario, comisión y compensación total de los empleados del departamento 30.

SQL> SELECT INITCAP (ename) , LOWER(ename), job 3 FROM emp 4 WHERE UPPER (ename) = ‘MARTINEZ’;

SQL> SELECT ename, job, sal, comm, NVL(sal, 0) + NVL(comm, 0) 2 FROM emp 3 WHERE deptno = 30;

ENAME JOB SAL COMM NVL(SAL, 0)+NVL(COMM, 0) -------------- -------------------- -------------- -------------- ------------------------------------------- ALLEN SALESMAN 1600 300 1900 WARD SALESMAN 1250 500 1750 JONES SALESMAN 2975 2975 MARTIN SALESMAN 1250 1400 2650 BLAKE MANAGER 2850 2850 SCOTT SALESMAN 3150 3150 TURNER SALESMAN 1500 0 1500 JAMES CLERK 950 950 8 rows selected.

Page 49: SQL Plus - Mal BiCho

Ejemplo: función ROUND Liste el nombre, salario mensual, salario diario (basado en un mes laboral de 22 días) y el salario diario redondeado al próximo entero, y otra truncada a dos decimales para los empleados ALLEN y JONES. Ejemplo: ADD_MONTHS Mostrar el nombre, fecha de contratación y 6 meses después de la fecha de contratación de los empleados del departamento 10.

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

TRUNC (sal/ 22,2) 2 FROM emp 3 WHERE ename IN (‘ALLEN’, ‘JONES’);

SQL> SELECT ename, hiredate, ADD_MONTHS (hiredate, 6) “6 MESES DESPUES” 2 FROM emp 3 WHERE deptno = 10;