You are on page 1of 49

Introduccin a Oracle SQL-Plus

INDICE DE CONTENIDO
ACCESO Y VISUALIZACIN DE DATOS EL MODELO RELACIONAL VISIN GENERAL DE SQL SQL CONTRA SQL*PLUS Comandos SQL Uso los comandos de SQL*Plus para VISIN GENERAL DEL INICIO DE UNA SESIN SQL ACCESO A LA AYUDA VISTAZO DE LA SENTENCIA SELECT SELECCIN DE COLUMNAS SELECCIN DE FILAS VER EL DICCIONARIO DE DATOS Nombre de tabla Descripcin EDICIN DEL BUFFER DE SQL-PLUS EJECUCIN DE OPERACIONES SOBRE TIPOS DE DATOS Y FUNCIONES VISTAZO A LOS VALORES Y FUNCIONES NUMRICOS REFERENCIA DE LOS VALORES Y FUNCIONES NUMRICOS VISTAZO A LOS VALORES Y FUNCIONES DE FECHA REFERENCIA DE LOS VALORES Y FUNCIONES DE FECHA REFERENCIA DE LOS VALORES Y FUNCIONES DE CARACTERES VISIN GENERAL DE ALGUNAS FUNCIONES ADICIONALES REFERENCIA DE ALGUNAS FUNCIONES ADICIONALES VISTAZO A LAS FUNCIONES DE GRUPO OBTENIENDO DATOS DE MULTIPLES TABLAS CARACTERSTICAS DEL JOIN TIPOS DE JOIN [EQUIJOIN, OUTER JOIN , SEF-JOINS ] NON-EQUIJOINS OPERADORES DE CONJUNTO EL OPERADOR UNION EL OPERADOR INTERSECCIN (INTERSECT) EL OPERADOR MENOS (MINUS VISIN GENERAL DE LA CREACIN DE TABLAS CREACIN DE TABLAS RESTRICCIONES MODIFICACIN DE TABLAS Borrar la tabla original CREACIN DE VISTAS VISTAZO AL ACCESO DE TABLAS Y VISTAS UN VISTAZO A LA CONCESIN DE ACCESO A TABLAS Y VISTAS VISIN GENERAL DE LOS SINNIMOS CREACIN DE SINNIMOS VISIN GENERAL SOBRE LOS NDICES CREACIN DE NDICES CREACIN DE GENERADORES DE SECUENCIA INSERCIN DE FILAS ACTUALIZACIN DE FILAS ELIMINACIN DE FILAS UN VISTAZO AL PROCESAMIENTO DE TRANSACCIONES PROCESAMIENTO DE TRANSACCIONES

Acceso y visualizacin de los datos


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

Modo relacional. La informacin se organiza en forma de tablas JOB RECEPCIONISTA VENDEDOR VENDEDOR GERENTE VENDEDOR GERENTE GERENTE ANALISTA PRESIDENTE VENDEDOR RECEPCIONISTA RECEPCIONISTA ANALISTA RECEPCIONISTA MGR 7902 7698 7698 7839 7698 7839 7839 7566 7698 7788 7698 7566 7782 HIREDATE
17/12/1995 20/02/1996 22/02/1996 02/04/1996 28/07/1996 31/05/1996 09/06/1996 09/12/1997 17/11/1996 08/11/1996 12/01/1998 03/12/1996 03/12/1996 23/01/1998

SAL 800 1600 1250 2975 1250 2850 2450 3000 5000 1500 1100 950 3000 1300

Tabla EMP COMM DEPTNO 20 300 30 500 30 20 1400 30 30 10 20 10 0 30 20 30 20 10

Cada columna tiene un tipo de informacin 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 categoras de informacin se listan en la parte de arriba de cada tabla. LA INFORMACIN DE UNA TABLA PUEDE RELACIONARSE CON LA INFORMACIN QUE SE ENCUENTRA EN OTRA.

Tabla DEPT

DEPTNO 10 20 30 40

DNAME FINANZAS INVESTIGACION VENTAS OPERACIONES

LOC NEW YORK DALLAS CHICAGO BOSTON

SQL plus es una herramienta diseada para usar con ORACLE, la cual extiende las capacidades del estndar ANSI-SQL SQL SQL contra SQL*Plus Es un lenguaje que consiste en comandos para guardar, recuperar, mantener y regular el acceso a una base de datos. Es una aplicacin que reconoce y ejecuta comandos SQL y comandos especializados de SQL*Plus que pueden personalizar reportes, proveer facilidades de ayuda y edicin, as como mantener variables del sistema.

Visin General de SQL

SQL *Plus

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

Comandos SQL
ALTER COMMENT CREATE

DROP INSERT NO AUDIT

REVOKE SELECT VALIDATE

AUDIT COMMIT DELETE

GRANT LOCK RENAME

ROLLBACK UPDATE

Use los comandos SQL* plus para manipular comandos SQL Entrar, editar, recuperar y correr comandos SQL Formatear, guardar, imprimir y realizar clculos sobre los resultados de una consulta en forma de reportes. Listar la definicin 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 ACCEPT DISCONNECT BREAK EXIT CHANGE HELP COLUMN INPUT CONNECT NEWPAGE QUIT RUN SET SPOOL START TITLE / (ejecutar ultimo) APPEND BTITLE CLEAR COMPUTE UNDEFINE DESCRIBE EDIT GET HOST LIST REMARK SAVE SHOW SQLPLUS TIMING

COMANDOS SQL> show user; --- ver con que usuario estoy trabajando SQL> EXIT --- Cierra sesin. 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 ----------------------------------------------------------------------------------------------------------------------------------

VISIN GENERAL DEL INICIO DE UNA SESIN SQL El primer paso para abrir una sesin SQL es acceder a SQL-Plus a) Interfaz Grafica

b) Desde la lnea de Comando SQL> connect [username[/password[@database]]] username = nombre_de_usuario password = clave_de_acceso @database = alias_de_la_base_de_datos c) Cierre de sesin: SQL> exit <ENTER>

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. tems de una RDBMS que pueden incluirse en una sentencia SELECT Columnas Expresiones Constantes Requerimientos mnimos 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).

Vistazo de la sentencia SELECT

Seleccin 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 estn definidas. Digitar un asterisco y el nombre de la taba donde estn definidas las columnas.

Sintaxis: SELECT nombre_columna [, nombre_columna ] FROM nombre_tabla SELECT * FROM nombre_tabla EJEMPLO: Visualizar todas las columnas de informacin acerca de cada departamento. SQL> SELECT * FROM dept; DEPTNO ------------10 20 30 40 DNAME -----------------FINANZAS INVESTIGACION VENTAS OPERACIONES LOC ---------------NEW YORK DALLAS CHICAGO BOSTON

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

EJEMPLO: Visualizar la estructura de la tabla DEPT SQL> DESCRIBE dept; Name -----------DEPTNO DNAME LOC NULL? -------------NOT NULL Type ---------------NUMBER (2) CHAR (14) CHAR (13)

Ejemplo de columna nica: 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. SQL> SELECT dname FROM dept; DNAME ----------------FINANZAS INVESTIGACION VENTAS OPERACIONES

4 rows selected.
--------------------------------------------------------------------------------------------------------------------------------------------Ejemplo de mltiples columnas: Visualizar el nombre y nmero de todos los departamentos SQL> SELECT dname, deptno FROM dept; DNAME ----------------FINANZAS INVESTIGACION VENTAS OPERACIONES DEPTNO -----------------10 20 30 40

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

EJEMPLO: Visualizar cada cargo de la tabla EMP de forma nica. SQL> SELECT DISTINCT job FROM emp; JOB ----------------ANALISTA RECEPCIONISTA GERENTE PRESIDENTE VENDEDOR 5 rows selected -----------------------------------------------------------------------------------------------------------------------------------------------

ALIAS. Con SQL se pueden definir alias para los nombres de columnas en una sentencia SELECT SQL> SELECT DISTINCT job JOB LIST FROM emp; JOB LIST ---------------ANALISTA RECEPCIONISTA GERENTE PRESIDENTE VENDEDOR 5 rows selected Nota: solo se puede hacer referencia a los alias de columna en la clusula SELECT de una consulta. *****************************************************************************************

Seleccin de Filas

Para seleccionar filas especficas de una tabla, use la clusula WHERE para especificar una condicin. Sintaxis de la sentencia select SELECT FROM WHERE Componentes de la condicin de bsqueda de la clausula WHERE Nombre de columna, expresin o constante. Operador de comparacin Expresin, nombre de columna o constante Notas rpidas: Las constantes de cadena y de fecha deben encerrarse entre comillas simples. Las constantes de carcter son sensibles a maysculas y minsculas y las consatantes de fecha deben estar en el formato DD-MM-YY Operadores de Comparacin = 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 algn miembro de la lista Is null Es un valor nulo like Concuerda con un patrn de caracteres Seleccin de filas basadas en criterios de igualdad o desigualdad usando los operadores =, <>, >=, <=, >, <.

Ejemplo 1: Seleccionar el nmero, nombre y salario de los empleados en el departamento 30. 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

6 rows selected. ----------------------------------------------------------------------------------------------------------------------------------------------Ejemplo 2: Mostrar el nombre, cargo y salario de todos los empleados, excepto los gerentes. SQL> SELECT ename, job, sal FROM emp where <> MANAGER; EMPNO -----------SMITH ALLEN WARD MARTIN SCOTT KING TURNER ADAMS JAMES FORD MILLER ENAME -------------CLERK SALESMAN SALESMAN SALESMAN ANALYST PRESIDENT SALESMAN CLERK CLERK ANALYST CLERK SAL ------------800 1600 1250 1250 3000 5000 1500 1100 950 3000 1300

11 rows selected EJEMPLO 3: Seleccin basada en un rango de valores usando el operador BETWEEN AND. Seleccionar el nmero, cargo y el nmero de departamento de todos los empleados contratados entre Enero 1 de 1982 y enero 1 de 1983. SQL> SELECT ename, job, deptno, hiredate FROM emp WHERE hiredate BETWEEN 01/01/1982 AND 01/01/1983; ENAME -----------MILLER 1 row selected JOB DEPTNO -------- -----------CLERK 10 HIREDATE -------------23/01/1982

Ejemplo 4: Seleccin de filas basndose en la coincidencia con valores dentro de una lista, usando el operador IN. Seleccionar el nombre, cargo y nmero de departamento de todos los empleados que son recepcionistas y analistas. SQL> SELECT ename, job, deptno FROM emp WHERE job IN (CLERK, ANALYST); ENAME -----------SMITH SCOTT ADAMS JAMES FORD MILLER JOB DEPTNO -------- -----------CLERK 20 ANALYST 20 CLERK 20 CLERK 30 ANALYST 20 CLERK 10

6 rows selected. ---------------------------------------------------------------------------------------------------------------------------------------------------Seleccin de Filas basndose en la coincidencia con un patrn de caracteres usando comodines con el operador LIKE: Comodines: % _ coincidencias con cualquier cantidad de caracteres coincidencia con un carcter

Ejemplo 1: Seleccionar el nombre, cargo, nmero de departamento y fecha de contratacin para los empleados cuyo apellido empiece con la letra mayscula M. SQL> SELECT ename, job, deptno, hiredate FROM emp where ename LIKE M%; ENAME -----------MARTIN MILLER JOB -------------SALESMAN CLERK DEPTNO -----------30 10 HIREDATE -------------28/SEP/1981 23/JAN/1982

2 rows selected. Ejemplo 2: Seleccionar el nombre, cargo, numero 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. SQL> SELECT ename, job, deptno, hiredate FROM emp where ename LIKE J__ES; ENAME -----------JONES JAMES JOB -------------MANAGER CLERK DEPTNO -----------20 30 HIREDATE -------------02/APR/1981 03/DEC/1981

2 rows selected.

Use el operador NOT para hacer una condicin negativa junto con los operadores: NOT BETWEEN AND NOT IN (lista) IS NOT NULL NOT LIKE Conecte operadores lgicos con expresiones lgicas complejas. Expresiones lgicas 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 NOT, AND, OR. ------------------------------------------------------------------------------------------------------------------------------------------Ejemplo 1: Seleccionar el nombre, cargo y salario de los gerentes que ganen ms de $1500, al igual que el de todos los vendedores. SQL> SELECT ename, job, sal FROM emp WHERE sal > 1500 AND job = MANAJER 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. Ejemplo 2: Seleccionar el nombre, cargo y salario de los gerentes y vendedores que ganen $1500 o ms. SQL> SELECT ename, job, sal FROM emp WHERE sal >= 1500 AND (job = MANAJER OR job = SALESMAN); ENAME -----------ALLEN JONES BLAKE CLARK TURNER JOB -------SALESNAN MANAGER MANAGER MANAGER SALESMAN SAL -----------1600 2975 2850 2450 1500

5 rows selected.

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 posicin de la columna Ejemplo 1: Ordenamiento ascendente, mostrar el salario, cargo y nombre de los empleados del departamento 10 en orden ascendente, por salario. SQL> SELECT sal, job, ename FROM emp WHERE deptno =10 ORDER BY sal; SAL -------------1300 2450 5000 3 rows selected Ejemplo 2: Ordenamiento descendente. Mostrar el salario, cargo y nombre de los empleados del departamento 10 en orden descendente, por salario. SQL> SELECT sal, job, ename FROM emp WHERE deptno =10 ORDER BY sal DESC; Ejemplo 3: 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. SQL> SELECT ename, job, sal FROM emp WHERE deptno =30 ORDER BY job, sal DESC ename; SAL ----JAMES BLAKE ALLEN TURNER MARTIN WARD 6 rows selected JOB ------------CLERK MANAGER SALESMAN SALESMAN SALESMAN SALESMAN ENAME -----------950 2850 1600 1500 1250 1250 JOB -----------CLERK MANAGER PRESIDENT ENAME -----------MILLER CLARK KING

Ejemplo 4: Ordenamiento por posicin de columna. Muestre el nombre, salario y cargo de los empleados del departamento 10 en orden ascendente por salario. SQL> SELECT ename, sal, job FROM emp WHERE deptno = 10 ORDER BY 2; ENAME -------------MILLER CLARK KING SAL ---------1300 2450 5000 JOB ------------------CLERK MANAGER PRESIDENT

3 rows selected. ------------------------------------------------------------------------------------------------------------------------------------------------VER EL DICCIONARIO DE DATOS El diccionario de datos es un conjunto de tablas y vistas que contiene informacin descriptiva acerca de las tablas, privilegios de acceso de los usuarios, y dems caractersticas de la base de datos. Tablas de usuario que se consultan frecuentemente en el diccionario de datos Nombre de tabla Descripcin

user_catalog user_constraints user_indexes user_sequences user_synonyms user_tables user_users user_views all_tables

Tablas, vistas, sinnimos, secuencias y otros objetos de propiedad del usuario 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

Ejemplo: USER_TABLES: Mostrar una columna del diccionario de datos user_tables: SQL> SELECT table_name FROM user_tables; TABLE_NAME -------------------DEPT EMP SALGRADE 3 rows selected. ---------------------------------------------------------------------------------------------------------------------------------------------------

EDICIN DEL BUFFER DE SQL-PLUS

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

Comando
A[PPEND] C[HANGE] CL[EAR] BUFFER CLE[AR] BUFFER DEL I[NPUT] L[IST] L[IST] n R[UN] / n n <cadena de texto>

Descripcin
Adiciona texto especfico a la lnea actual en el buffer Cambia la primera ocurrencia de un texto especfico en la lnea actual del buffer por una cadena especificada. Ejemplo: C / ENP / EMP Borra el contenido del buffer Borra el contenido de la lnea actual del buffer Adiciona una o ms lneas de texto despus de la lnea actual del buffer. Presione <ENTER> en una lnea en blanco para salir del modo INPUT Lista todas las lneas del buffer Lista la lnea nmero n del buffer Muestra y ejecuta el contenido del buffer Ejecuta el contenido del buffer Fija el puntero del buffer en la lnea n Cambia el contenido de la lnea n por la cadena de texto especificada

Nota rpida: Un asterisco (*) aparecer al lado del nmero de lnea actual del buffer Ejemplos: Reescribir la lnea 2 cuando ocurre un error: 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 ---------------SALESMAN SALESMAN SALESMAN MANAGER SALESMAN CLERK SAL ------------1600 1250 1250 2850 1500 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 Visin de la creacin de tablas SQL> general /

ENAME ------------ALLEN WARD MARTIN BLAKE TURNER JAMES

JOB ---------------SALESMAN SALESMAN SALESMAN MANAGER SALESMAN CLERK

DEPTNO ------------30 30 30 30 30 30

6 rows selected. Agregar la columna HIREDATE en la lnea actual usando el comando APPEND: SQL> 1 1* SELECT ename, job, deptno SQL> A , hiredate 1* SELECT ename, job, deptno, hiredate SQL> / ENAME ------------ALLEN WARD MARTIN BLAKE TURNER JAMES JOB ---------------SALESMAN SALESMAN SALESMAN MANAGER SALESMAN CLERK DEPTNO ------------30 30 30 30 30 30 HIREDATE --------------20-FEB-81 22-FEB-81 28-SEP-81 31-MAY-81 08-SEP-81 03-DEC-81

6 rows selected. Borrar la lnea 3: SQL> 3 3* WHERE deptno = 30 SQL> del SQL> / ENAME ------------SMITH ALLEN WARD JONES . ADAMS JAMES FORD MILLER JOB ---------------CLERK SALESMAN SALESMAN MANAGER CLERK CLERK ANALYST CLERK DEPTNO ------------20 30 30 20 20 30 20 10 HIREDATE --------------17-DEC-80 20-FEB-81 22-FEB-81 02-APR-81 12-JAN-83 03-DEC-81 03-DEC-81 23-JAN-82

14 rows selected.

EJECUCIN DE OPERACIONES SOBRE TIPOS DE DATOS Y FUNCIONES


VISTAZO A LOS VALORES Y FUNCIONES NUMRICOS Realice clculos varios sobre nmeros usando los siguientes operadores aritmticos: + Suma - Resta * Multiplicacin / Divisin ( ) Parntesis anular precedencia Los operadores aritmticos pueden ser usados en la mayora de sentencias SQL. REFERENCIA DE LOS VALORES Y FUNCIONES NUMRICOS Muestre el resultado de los clculos como si fueran columnas con expresiones aritmticas en sentencias SELECT. Ejemplo: expresiones en sentencias SELECT. Muestre el nombre, salario, comisin y la compensacin total para todos los vendedores cuya comisin es mayor que el 25% de su salario. SQL> SELECT ename, sal, comm, sal + comm 2 FROM emp 3 WHERE job = SALESMAN AND comm > 0.25 * sal 4 ORDER BY 4; ENAME -------------WARD MARTIN SAL COMM SAL+COMM -------------- --------------- --------------1250 500 1750 1250 1400 2650

2 rows selected.

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? ---------------NOT NULL Type ---------------------NUMBER (4) CHAR (10) CHAR (9) NUMBER (4) DATE NUMBER (7, 2) NUMBER (7, 2) NUMBER (2)

NOT NULL

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. SQL> SELECT ename, job, sal, comm, sal + comm 2 FROM emp 3 WHERE deptno = 30; ENAME -------------ALLEN WARD JONES MARTIN BLAKE SCOTT TURNER JAMES 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. 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. SQL> SELECT ename, job, sal, comm, NVL(sal, 0) + NVL(comm, 0) 2 FROM emp 3 WHERE deptno = 30; ENAME JOB SAL COMM -------------- -------------------- -------------- -------------ALLEN SALESMAN 1600 300 WARD SALESMAN 1250 500 JONES SALESMAN 2975 MARTIN SALESMAN 1250 1400 BLAKE MANAGER 2850 SCOTT SALESMAN 3150 TURNER SALESMAN 1500 0 JAMES CLERK 950 8 rows selected. NVL(SAL, 0)+NVL(COMM, 0) ------------------------------------------1900 1750 2975 2650 2850 3150 1500 950

El RDMBS evala cada expresin aritmtica. Los resultados de las expresiones se combinan luego en el orden determinado por la precedencia de los operadores. Orden de evaluacin * Multiplicacin / Divisin + Suma - Resta Para anular la precedencia de los operadores, coloque parte de la expresin entre parntesis. ORACLE evala estas expresiones primero. Ejemplo: Muestre el nombre de empleado, salario, comisin y compensacin total para todos los vendedores ordenado por compensacin total. SQL> SELECT ename, sal, comm, 12 * (sal + comm) total 2 FROM emp 3 WHERE job = SALESMAN 4 ORDER BY 12 * (sal + comm); ENAME -------------TURNER WARD ALLEN MARTIN JONES SCOTT SAL -------------1500 1250 1600 1250 2975 3150 COMM -------------0 500 300 1400 TOTAL -----------18000 21000 22800 31800

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

FUNCIN MOD SQRT ROUND TRUNC POWER

EJEMPLO MOD (7, 5) SQRT (25) ROUND (SAL, 2) TRUNC (SAL, 2) POWER (SAL, 3)

RESULTADO

El residuo de dividir 7 entre 5


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.

VISTAZO A LOS VALORES Y FUNCIONES DE FECHA REFERENCIA DE LOS VALORES Y FUNCIONES DE FECHA Use operaciones aritmticas simples en sentencias SQL para efectuar clculos sobre fechas en las bases de datos. Fecha + nmero Suma un nmero de das a una fecha, produciendo otra fecha. Fecha nmero Resta un nmero de das a una fecha, produciendo otra fecha. Fecha Fecha Resta una fecha de otra, produciendo el nmero de das entre las dos.
Ejemplo: Mostrar el nombre, fecha de contratacin y fecha de vencimiento del perodo de prueba (90 das) de los empleados en el departamento 10 SQL> SELECT ename, hiredate, hiredate + 90 $REVIEW$ 2 FROM emp 3 WHERE deptno = 10; ENAME -------------CLARK KING MILLER HIREDATE $REVIEW$ --------------- --------------09/06/1981 07/09/1981 17/11/1981 15/02/1982 23/01/1982 23/04/1982

3 rows selected.

FUNCIN

ADD_MONTHS (HIREDATE, 6) ADD_MONTHS (HIREDATE, -6) LAST_DAY (HIREDATE) NEXT_DAY (HIREDATE, FRIDAY) SYSDATE MONTHS_BETWEEN (SYSDATE, HIREDATE) GREATEST(HIREDATE, SYSDATE) LEAST(FECHA1, FECHA2...)

RESULTADO

Devuelve la fecha 6 meses despus de HIREDATE Devuelve el ltimo da del mes que contiene HIREDATE Devuelve la fecha del siguiente viernes despus de HIREDATE Devuelve la fecha y hora actual Devuelve la cantidad de meses transcurridos entre HIREDATE y la fecha actual. Devuelve la fecha ms tarda de una lista de fechas Devuelve la fecha ms temprana de una lista de fechas

Ejemplo: ADD_MONTHS Mostrar el nombre, fecha de contratacin y 6 meses despus de la fecha de contratacin de los empleados del departamento 10. SQL> SELECT ename, hiredate, ADD_MONTHS (hiredate, 6) $REVIEW$ 2 FROM emp 3 WHERE deptno = 10;

ENAME -------------CLARK KING MILLER

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. SQL> SELECT ename, ROUND((SYSDATE - hiredate) / 7,0) WEEKS 2 FROM emp 3 WHERE deptno = 10;

ENAME -------------CLARK KING MILLER

WEEKS --------------1098 1075 1066

3 rows selected.

FORMATEO DE FECHAS
ELEMENTO DD DY DAY DDSPTH MM MON MONYH YY YYYY HH:MI:SS fm DESCRIPCIN Da del mes (Ej. 1-31) Da de la semana (Ej. FRI) El 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) El 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

Formatee la visualizacin de valores de fecha con la funcin de conversin TO_CHAR Ejemplo: Muestre las fechas de contratacin de todos los empleados del departamento 20 con el formato DD of Month YYYY 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.

REFERENCIA DE LOS VALORES Y FUNCIONES DE CARACTERES Combine columnas con caracteres y constantes de carcter para producir una salida ms significativa que una simple columna estndar devuelta por SQL-Plus. Ejemplo: concatenacin Muestre la combinacin de departamento ms su localizacin bajo un solo ttulo DEPARTAMENTOS 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.

FUNCIN

INITCAP (ENAME) UPPER (ENAME) LOWER (ENAME) SUBSTR (JOB, 1, 5) LENGTH (ENAME) CONCAT(ENAME,JOB) LPAD(sal,5,'*') TRIM('S' FROM 'SMITH') INSTR('String', 'r')

RESULTADO

Muestra 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 Ej. MITH Devuelve la posicin de un carcter dentro de una cadena Ej: 3

Muestre el nombre y el cargo de todos los empleados llamados Ward en mayscula inicial bajo el ttulo NAME: SQL> SELECT INITCAP (ename) NAME, job 3 FROM emp 4 WHERE UPPER (ename) = WARD; NAME ---------Ward 1 row selected. Ejemplo: SUBSTR Mostrar las primeras 5 letras del nombre de departamento y su localizacin completa. JOB ---------------SALESMAN

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

DEPT -----------ACCOU RESEA SALES OPERA FINAN RESEA PERSO EDUCA

LOC --------------------NEW YORK DALLAS CHICAGO BOSTON LOS ANGELES BOSTON TAHITI MAUI

8 rows selected.

Formatee la visualizacin de valores numricos con la funcin de conversin TO_CHAR Ejemplo: Muestre la comisin de cada empleado del departamento 30 usando signos de peso, comas en las posiciones adecuadas y dos dgitos decimales. SQL> SELECT ename EMPLOYEE, TO_CHAR (comm, $9,990.99) COMMISION 2 FROM EMP;

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

VISIN GENERAL DE ALGUNAS FUNCIONES ADICIONALES

FUNCIN
GREATEST LEAST

EJEMPLO GREATEST (SAL, COMM) LEAST (SAL, COMM)

RESULTADO Devuelve el mayor valor entre SAL y COMM Devuelve el menor valor entre SAL y COMM

REFERENCIA DE ALGUNAS FUNCIONES ADICIONALES Ejemplo: GREATEST Muestre el nombre, el salario mensual y la comisin de todos los vendedores, incluyendo una columna que muestre el mayor valor ya sea de salario o comisin. SQL> SELECT ename, sal, NVL (comm, 0), GREATEST (sal, comm) 2 FROM emp 3 WHERE job = SALESMAN; ENAME SAL NVL (comm, 0) ----------------- ----------- ------ -----------------ALLEN 1600 300 WARD 1250 500 JONES 2975 0 MARTIN 1250 1400 SCOTT 3150 0 TURNER 1500 0 6 rows selected. GREATEST (sal, comm) -- ------------------------------1600 1250 2975 1400 3150 1500

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 AVG COUNT MAX MIN SUM

EJEMPLO AVG (sal) COUNT (comm) COUNT (*) MAX (sal) MIN (sal) SUM (comm)

RESULTADO Devuelve el promedio aritmtico de SAL. Devuelve el nmero de valores no nulos de la columna COMM. 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

Ejemplo: AVG, MAX, SUM

Muestre el promedio, el valor mximo y la suma de los salarios anuales de todos los vendedores. SQL> SELECT AVG (sal), MAX (sal), SUM (sal) 2 FROM emp 3 WHERE job = SALESMAN; AVG (SAL) ----------------1954.16667 1 row selected. MAX (SAL) ----------------3150 SUM (SAL) -------------------11725

Ejemplo: COUNT

Muestre el nmero de filas en la tabla EMP, y el nmero de empleados con comisin no nula. SQL> SELECT COUNT (*) EMPLOYEES, COUNT (comm) COMMISIONABLE 2 FROM emp; EMPLOYEES COMMISIONABLE ------------------- -------------------------14 4 1 row selected.

REVISANDO SALIDAS DE GRUPO


SINTAXIS DE LA SENTENCIA SELECT
SELECT ... FROM ... WHERE ...

GROUP BY
HAVING ORDER BY

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


Ejemplo: GROUP BY una columna Muestre cada departamento y su nmero de empleados, agrupados por departamento.

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

DEPTNO COUNT (*) ------------------- -------------------------10 3 20 3 30 8 3 rows selected.

Si se selecciona una columna normal y una funcin de grupo al mismo tiempo, se recibir un mensaje de error. Ejemplo: Mostrar el empleado que se contrat de primero

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

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

Ejemplo: GROUP BY ms de una columna

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


SQL> SELECTdeptno, job, COUNT (*) 2 FROM emp 3 GROUP BY deptno, job; DEPTNO ------------10 10 10 20 20 30 30 30 JOB COUNT (*) ------------------- --------------CLERK 1 MANAGER 1 PRESIDENT 1 ANALYST 1 CLERK 2 CLERK 1 MANAGER 1 SALESMAN 6

8 rows selected. Coloque una condicin a la funcin de grupo mediante la clusula HAVING. Ejemplo: Muestre el salario anual promedio para todos los tipos de cargo con ms de dos empleados. 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.

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

OBTENIENDO DATOS DE MULTIPLES TABLAS.

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

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


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

CARACTERSTICAS DEL JOIN Las tablas a ser unidad (JOINED) se especifican en la clusula FROM En la clusula WHERE se especifica como unir las tablas.

Las columnas que tienen nombres iguales en las tablas especificadas en la clusula FROM deben ser identificadas utilizando NOMBRE_TABLA.NOMBRE_COLUMNA Si las columnas no tienen homnimos en las tablas, no es necesario especificar el nombre de la tabla en las clusulas WHERE y SELECT. Se pueden unir JOIN cuantas tablas se requieran El criterio de coincidencia entre las tablas es denominado el predicado del JOIN o criterio del 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

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

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. El nombre de una tabla debe de seguir las reglas estndar para los nombres de cualquier objeto de una base de datos ORACLE.

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.

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 SQL> SELECT empno, dept.deptno, loc 2 FROM emp, dept 3 WHERE dept.deptno= emp.deptno(+) and empno is null; 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. 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.

Un SEF-JOINS es utilizado para buscar coincidencia entre registros sobre columnas diferentes de la misma tabla. SELECT alias1.column, alias2.column FROMtable1 alias1, table2 alias 2 WHERE alias1.column1 = alias2.column2;

SEF-JOINS

Ejemplo: Liste el nmero, nombre y cargo de cada empleado, as como el numero nombre y cargo del jefe correspondiente.
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.
SQL> SELECT GRADE, ENAME, SAL, JOB 2 FROM EMP, SALGRADE 3 WHERE SAL BETWEEN LOSAL AND HISAL 4 ORDER BY GRADE, SAL;

OPERADORES DE CONJUNTO
UNION INTERSECCIN MENOS

Los operadores de conjunto combinan dos o ms tablas para obtener resultado. 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

EL OPERADOR UNION Sintaxis

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

SELECT columna FROMtabla WHERE condiciones ciertas UNION SELECT columna FROMtabla WHERE condiciones ciertas Ejemplo: Quien gana ms de $2000 en todos los departamentos.

SQL> SELECT ENAME,SAL 2 FROM ACCOUNTING 3 WHERE SAL >2000 4 UNION 5 SELECT ENAME,SAL 6 FROM RESEARCH 7 WHERE SAL >2000 8 UNION 9 SELECT ENAME,SAL 10 FROM SALES 11 WHERE SAL >2000; EL OPERADOR INTERSECCIN (INTERSECT)
SELECT columna FROMtabla WHERE condiciones ciertas INTERSECT SELECT columna FROMtabla WHERE condiciones ciertas

El operador INTERSECT retorna valores comunes de mltiples tablas

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

EL OPERADOR MENOS (MINUS)

El operador MINUS. Retorna todos los registros seleccionados por el primer query que no fueron tambin seleccionados por el segundo query SELECT columna FROM tabla WHERE condiciones ciertas MINUS SELECT columna FROMtabla WHERE condiciones ciertas Ejemplo: Liste la informacin de los empleados que tienen cargos que estn en el departamento de ACCOUNTING pero que no estn en el departamento de ventas (SALES).

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.

VISIN GENERAL DE LA CREACIN 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 alfabtico. 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 Rpida: 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.

Tipo de datos
CHAR (tamao) VARCHAR2(tamao) VARCHAR(tamao) LONG NUMBER (L,D) INTEGER DATE RAW LONG RAW CLOB BLOB BFILE Almacena datos de tipo carcter de longitud fija. Con un tamao mximo De 2000 bytes Almacena datos de tipo carcter de longitud fija. Con un tamao mximo De 2000bytes 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). Datos en binario puro (imgenes y sonido) con un ancho mximo de 2000 bytes. Datos en binario puro (imgenes y sonido) mas grande que 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 archivos a LOB administrados por sistemas de archivos externos a la base de datos.

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 de 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.

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

Ejemplo: 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 clausula 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 Ejemplo1: SQL> CREATE TABLE hdates 2 AS SELECT empno, ename, hiredate 3 FROM emp 4 WHERE empno = 10; Table created. Ejemplo2: SQL> CREATE TABLE empty_like_emp 2 AS SELECT * 3 FROM emp 4 WHERE 1=2; Table created. --------------------------------------------------------------------------------------------------------------------------------------------------

Modificacin 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 definicin de las columnas (restricciones, NOT NULL y dems) Sintaxis Adicionar ALTER TABLE nombre_tabla ADD ( { nombre_columna tipo | restriccin } [,{ nombre_columna2 tipo | restriccin }] ) Ejemplo 1: SQL> ALTER TABLE hdates 2 ADD (manager NUMBER(4)); Table altered. Sintaxis Modificar SQL> ALTER TABLE nombre_tabla MODIFY ( { nombre_columna tipo | restriccin } [, {nombre_columna2 tipo | restriccin } ] ..)

Ejemplo1: incrementar el tamao de la columna ename de 10 a 18. SQL> ALTER TABLE hdates 2 MODIFY (ename CHAR(18)); Table altered.

Eliminacin de Tablas y Columnas

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

Use la clausula Drop Column cuando desea borrar una columna de una tabla. SQL> ALTER TABLE nombre_tabla DROP COLUMN (nombre_columna1, nombre_columna2, )

Ejemplo: Borrar la columna ename de la tabla hdates SQL> ALTER TABLE hdates 2 DROP COLUMN ename; Table altered. Eliminacin de una tabla: DROP TABLE DROP TABLE nombre_tabla;
---------------------------------------------------------------------------------

Ejemplo: Eliminar la tabla EMPTY_LIKE_EMP SQL> DROP TABLE empty_like_emp; Table dropped.

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: SQL> CREATE TABLE table_temp 2 AS SELECT columna1, columna2, columna4, 3 FROM table_original; Table created. Borrar la tabla original

SQL> DROP TABLE tabla_original; Table dropped.


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

Visin General de las Vistas


Se puede representar lgicamente una o ms tablas como una vista. Una vista no contiene datos. Todos los datos se derivan de las tablas subyacentes. Ventajas de las vistas Seguridad Conveniencia Perspectiva Creacin de vistas La creacin de vistas es similar a la creacin de tablas usando la clausula AS. Sintaxis SQL> 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 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. SQL> CREATE VIEW empvu10 2 AS SELECT empno, ename, job 3 FROM emp 4 WHERE deptno =10; View created. 2da parte SQL> SELECT * FROM empvu10; EMPNO --------------7782 7839 7934 ENAME ---------------CLARK KING MILLER JOB ----------------MANAGER PRESIDENT CLERK

3 rows selected. Ejemplo2: Alias de columnas en las vistas 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 --------------7782 7839 7934 EMPLOYEE ---------------CLARK KING MILLER TITLE ----------------MANAGER PRESIDENT CLERK

3 rows selected.

Ejemplo 3: alias alternativos en las vistas. 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

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 utilizacin de la clausula WITH CHECK OPTION SQL> CREATE VIEW empvu20 2 AS SELECT * FROM depto = 20 3 WHERE deptno =20 4 WITH CHECK OPTION; View created Parte2. Actualizando el departamento a 30 para el cdigo 7369 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.

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

Vistazo al acceso de Tablas y vistas El privilegio de DBA (DataBase Administrator Administrador de la base de datos) permite al desarrollador saltarse muchos privilegios estndar que normalmente se requieren para usar objetos de la base de datos. Privilegios del sistema DBA todos los privilegios 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 concesin de acceso a tablas y vistas Los propietarios de las tablas controlan el acceso a los objetos de su propiedad. Privilegios de acceso a tablas 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 GRANT privilegio1, privilegio2, .. [o ALL] ON nombre_tabla/ nombre_vista TO usuario1, usuario2, [O PUBLIC] [WITH GRANT OPTION] Ejemplo1: Otorgar todos los privilegios sobre la tabla EMP a todos los usuarios: SQL> GRANT ALL 2 ON emp 3 TO PUBLIC; Grant succeeded. Ejemplo2: Otorgar privilegios de consulta (SELECT) al usuario Jones sobre la tabla DEPT: SQL> GRANT SELECT 2 ON dept 3 TO jones; Grant succeeded.

Ejemplo3: Otorgar privilegios de consulta (SELECT) al usuario Jones sobre la tabla DEPT, con la habilidad de otorgar los mismos privilegios a otros. SQL> GRANT SELECT 2 ON dept 3 TO jones 4 WITH GRANT OPTION; Grant succeeded. Ejemplo4: Cambiar el password de acceso del usuario Scott a leopard SQL> GRANT CONNECT 2 TO scott 3 IDENTIFIED BY leopard; Grant succeeded.

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

Visin General de los Sinnimos


Niveles de los sinnimos Publico Privado

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

Ventajas de los sinnimos Referencia a tablas y vistas sin especificar el propietario o la base de datos. Flexibilidad al personal una convencin de nombres mas significativa. Creacin de Sinnimos CREATE SYNONYM nombre_sinonimo FOR nombre_tabla/nombre_vista Ejemplo1: Crear el sinnimo dates para la tabla HDATES del usuario Scott. SQL> CREATE SYNONYM dates 2 FOR scoot.hadates; 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 ----------------------------------------------------------------------------------------------------------------------------------------------------

Visin General sobre los ndices

Los ndices son estructuras opcionales, asociadas con tablas, que se usan para agilizar la ejecucin de consultas y/o garantizar unicidad. El RDBMS de ORACLE accede a los datos en las tablas de dos maneras: 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 clausula WHERE. Caractersticas 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 ejecucin de consultas, pero disminuyen las presentaciones en cuanto a la velocidad de mantenimiento de las tablas. Nota: ORACLE actualiza los ndices automticamente. No tienen impacto en la sintaxis de SQL. Creacin de ndices Sintaxis ndice simple CREATE INDEX nombre_indice ON TABLE nombre_tabla (nombre_columna1 [, nombre_columna2])

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;

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

Sintaxis Eliminacin 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 tendrn 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 desempeo, en consultas, asi como garantizar valores nicos para los nmeros de empleados. 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. 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. ---------------------------------------------------------------------------------------------------------------------------------------------------Creacin 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 automtica. 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.

Actualizacin de Datos En Tablas


Insercin de Filas Inserte filas en una tabla con la instruccin INSERT. Sintaxis INSERT INTO nombre_tabla [ (columna1, columna2, ) ] VALUES (value1, value2,)

Ejemplo1: Mostrar la estructura de la Tabla DEPT SQL> DESCRIBE dept; Name ------------DEPTNO DNAME LOC NULL? --------------NOT NULL Type ---------------NUMBER(2) CHAR(14) CHAR(13)

Inserte el departamento de Finanzas con cdigo 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 parmetros 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 = valor2 [WHERE condicin]

Ejemplo: Mostrar la estructura de la tabla EMP SQL> DESCRIBE emp; Name --------------EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO NULL? --------------NOT NULL Type ---------------NUMBER(4) CHAR(10) CHAR(9) NUMBER(4) DATE NUMBER(7,2) NUMBER(7,2) NUMBER(2)

NOT NULL

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 Actualizacin de mltiples 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;

ENAME --------------ALLEN WARD JONES MARTIN SCOTT TURNER EMMETT

JOB --------------SALES SALES SALES SALES SALES SALES SALES

DEPTNO ----------------30 30 30 30 30 30 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 ---------------------------------------------------------------------------------------------------------------------------------------------------Eliminacin de Filas Elimine filas de una tabla especifica usando la sentencia DELETE Sintaxis DELETE FROM nombre_tabla [WHERE condicin] 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 transaccin se define como todos los cambios realizados a una base de datos entre COMMIT sucesivos

Procesamiento de Transacciones
Tipos de COMMIT Explicito Implcito Ejemplo: Hacer COMMIT en una sentencia SQL SQL> DELETE FROM emp 2 WHERE ename = LERNER 1 row deleted. SQL> COMMIT; Commit complete.

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

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 compaa que se llaman JONES fueron transferidos al grupo de vendedores. Revierta la operacin y vuelva a realizar el traslado, utilizando el nmero de empleado. SQL> ROLLBACK; Rollback complete. SQL> UPDATE emp 2 SET job = SALESMAN, deptno = 30 3 WHERE empno = 7566; 1 row updated. Marque un punto en una transaccin hasta el cual podra hacer un ROLLBACK sin necesidad de cancelar toda la transaccin, utilizando la sentencia SAVEPOINT. Ejemplo: ----------------------------------------------------------------------------------------------------------------------------------------------------

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;

Para mostrar las tablas de la base de datos hay varias formas.

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;

Despliegue el nombre del empleado separando el apellido y nombre por ** asegurndose que este en maysculas, la fecha de ingreso con formato (26 Nov 2012 10:20), la fecha de cumpleaos del empleado (MMDD) de todos los empleados de los deptos. Co, Si, RH, HK que cumplan aos 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 mayscula y las dems en minscula luego todas en minsculas. (INITCAP. Muestra el nombre con su primera letra en mayscula, y las dems en minscula) (LOWER. Devuelve todos los caracteres de la cadena en minscula) SQL> SELECT INITCAP (ename) , LOWER(ename), job 3 FROM emp 4 WHERE UPPER (ename) = MARTINEZ;

NVL. 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. Muestre el nombre de empleado, cargo, salario, comisin y compensacin total de los empleados del departamento 30. SQL> SELECT ename, job, sal, comm, NVL(sal, 0) + NVL(comm, 0) 2 FROM emp 3 WHERE deptno = 30; ENAME JOB SAL COMM -------------- -------------------- -------------- -------------ALLEN SALESMAN 1600 300 WARD SALESMAN 1250 500 JONES SALESMAN 2975 MARTIN SALESMAN 1250 1400 BLAKE MANAGER 2850 SCOTT SALESMAN 3150 TURNER SALESMAN 1500 0 JAMES CLERK 950 8 rows selected. NVL(SAL, 0)+NVL(COMM, 0) ------------------------------------------1900 1750 2975 2650 2850 3150 1500 950

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, y otra truncada a dos decimales para los empleados ALLEN y JONES. SQL> SELECT ename, sal, sal / 22, ROUND (sal / 22, 0) TRUNC (sal/ 22,2) 2 FROM emp 3 WHERE ename IN (ALLEN, JONES); Ejemplo: ADD_MONTHS Mostrar el nombre, fecha de contratacin y 6 meses despus de la fecha de contratacin de los empleados del departamento 10. SQL> SELECT ename, hiredate, ADD_MONTHS (hiredate, 6) 6 MESES DESPUES 2 FROM emp 3 WHERE deptno = 10;

You might also like