Está en la página 1de 78

Oracle

XE 11g

Tabla de contenido
Introduction 0
Instalacin Oracle XE linux 1
Instalacin Oracle XE en Windows 2
Clusulas SQL 2.1
Setencias SQL 3
Funcion AVG 3.1
Funciones para datos nulos 3.2
COUNT 3.3
RPAD 3.4
Funcion SUBSTR() 3.5
Funcion MIN 3.6
FUNCION INSTR 3.7
LPAD 3.8
REPLACE 3.9
Funcin LENGTH 3.10
Funciones para fechas 3.11
Funcin TO_CHAR 3.12
Lower 3.13
Funcin TO_DATE 3.14
Funcin SUM 3.15
FUNCIN MAX 3.16
funciones matematicas 3.17
RESUMEN 3.18
CREATE 3.19
Instalacion SQL Developer 4
Union Intersec y Minus 5
Transacciones 6
INSERT() 7
Delete() 8
UPDATE 9

2
Oracle XE 11g

Secuencias SQL 10
NATURAL JOIN, RIGHT OUTER JOIN, LEFT OUTER JOIN 11
Trigger 12
Esquemas 13
Glosario

3
Oracle XE 11g

Introduccin
Esto lo redactamos al final....

Introduction 4
Oracle XE 11g

Instalacin de Oracle XE en Linux Mint


17,3
GitBook allows you to organize your book into chapters, each chapter is stored in a separate
file like this one.

Instalacin Oracle XE linux 5


Oracle XE 11g

Instalacin Oracle XE en Windows

1. Entramos a la pagina oficial


http://www.oracle.com/index.html

2. Pasamos el cursor por "Downloads" y


debemos elegir Oracle Database 11g
Express Edition.

3. Aceptamos la licencia y la version para


windows o Linux.

Instalacin Oracle XE en Windows 6


Oracle XE 11g

4.Se debe descomprimir el archivo


descargado y procedemos a ejecutar el
archivo "Setup.exe"

Instalacin Oracle XE en Windows 7


Oracle XE 11g

5.Clic en Siguiente

7.Aceptar terminos de licencia.

Instalacin Oracle XE en Windows 8


Oracle XE 11g

8.Elegir la ruta de instalacion o se la deja


por defecto.

Instalacin Oracle XE en Windows 9


Oracle XE 11g

9.Colocar y confirmar la contrasea de la


base de datos.

Instalacin Oracle XE en Windows 10


Oracle XE 11g

9.Install.

Instalacin Oracle XE en Windows 11


Oracle XE 11g

10.Finish.

Instalacin Oracle XE en Windows 12


Oracle XE 11g

11.Una vez instalado lo ejecutamos.

Instalacin Oracle XE en Windows 13


Oracle XE 11g

12.Nos informa sobre un error pero este se


lo arregla buscando la ruta de la
instalacion y con clic derecho propiedades
cambiamos %HTTPPORT% por el de
Oracle XMLDB HTTP port 8080.

Instalacin Oracle XE en Windows 14


Oracle XE 11g

13.Una vez arreglado este problema lo


ejecutamos y nos debe enviar a un
navegador para administrar la base de
datos.

Instalacin Oracle XE en Windows 15


Oracle XE 11g

Setencias SQL

SELECT 34 FROM DUAL; ->RESULTADO: 12 "La tabla DUAL es una tabla especial que
solo tiene una columna, en este caso la usamos para pedir el resultado de 3 4 para obtener
como resultado 12"

9) Funcion TO_CHAR
La funcin TO_CHAR() realiza la conversin de un nmero o fecha a una cadena, el valor
retornado siempre sera un VARCHAR2.

TO_CHAR es muy til cuando se requiere formatear los datos que se van a mostrar en una
consulta SELECT en la base de datos.

Funcion SUBSTR

Sintaxis

SUBSTR(char, pos, leng)

la funcion SUBSTR extrae una subcadena de caracteres a partir de un dato almacenado,


primero selecci iniciando desde la posicion y selecciona lo0s siguientes caracteres

Ejemplo:

para dual:

SELECT SUBSTR('ABCGATODEF',4,4) as "Subcadena"


FROM DUAL;

Funcion MIN

Esta funcion devuelve el valor minimo de una expresion, se puede utilizar con columnas de
tipo numeric, char, varchar, o datetime.

Ejemplo:

Setencias SQL 16
Oracle XE 11g

select min (salary)


from EMPLOYEES;
-- Devuelve el salario minimo entre todos

![](123.png)

select min (first_name)


from employees;
-- Devuelve el nombre minimo, evaluando letra por letra de menor a mayor.

![](Captura de pantalla de 2016-02-22 08:38:25.png)

Setencias SQL 17
Oracle XE 11g

AVG - PROMEDIO
La funcin "avg()" retorna el valor promedio de los valores del campo especificado.

EJEMPLO 1
SELECT
AVG(salary) "Promedio"
FROM
employees;

| PROMEDIO |
|6461,83177 |

EJEMPLO 2
SELECT
AVG(e.salary)"Promedio",
t.JOB_TITLE,
COUNT(e.JOB_ID)
FROM
employees e,
JOBS t
WHERE
e.JOB_ID = t.JOB_ID
GROUP BY
t.JOB_TITLE
HAVING
COUNT(e.JOB_ID) > 1;

Funcion AVG 18
Oracle XE 11g

La Function AVG es muy til cuando necesitas obtener el valor promedio o la media de un
campo numrico, esta funcin se puede usar para promediar todos los datos de una tabla o
tambin para promediar grupos de datos.
La sintaxis de la funcion AVG es la siguiente:

/ PL-SQL Function AVG /


AVG( [DISTINCT | ALL] n)
Al usar la funcion AVG por defecto promedia todos los valores n de una tabla (ALL), pero
tambin se puede indicar que solo promedie los valores n que son distintos (DISTINCT) en
Packages en Oracle.

Funcion AVG 19
Oracle XE 11g

Funciones para datos nulos


NVL

Sintaxis: NVL (exp1, exp2)

Esta funcin permite reemplazar valores null con una cadena de resultados de una
consulta. Donde se evala la exp1 a null y en caso de que sea as se retorna el valor de la
exp2, si exp1 no es null retorna nuevamente el valor de la exp1.

Sentencia:

SELECT first_name, last_name, salary, NVL(TO_CHAR(department_id), 'Sin


Departamento') Departamento FROM employees WHERE salary between 7000 and 10000;

Resultado:

COALESCE

La funcin coalesce() recibe varios argumentos, si identifica un campo null retorna la


expresin distinta de nulo.

Funciones para datos nulos 20


Oracle XE 11g

Sentencia:

SELECT first_name, last_name, salary, COALESCE(commission_pct*100,0) Comisin


FROM employees WHERE salary between 7500 and 10000;

Resultado:

Funciones para datos nulos 21


Oracle XE 11g

COUNT
La funcin "COUNT" cuenta la cantidad de registros de una tabla, incluyendo los que tienen
valor nulo.

COUNT(*) Retorna el nmero de filas de una tabla

COUNT(expr) Retorna el nmero de filas con valores non-null de una expresin.

COUNT(DISTINCT expr) Retorna el nmero de los valores distintos non-null de una


expresin.

Ejemplos:

Si ejecutamos SELECT COUNT(*) employees; Devuelve el nmero de filas en la tabla


employees.

COUNT 22
Oracle XE 11g

Tambin podemos utilizar esta funcin junto con la clausula WHERE para una consulta ms
especfica.

Si ejecutamos SELECT COUNT(*) "Allstars" FROM employees WHERE


commission_pct > 0; Devuelve el nmero de empleados cuya comission_pct es mayor
que cero con el alias "Allstars"

Si ejecutamos SELECT COUNT(DISTINC manager_id) "Managers" FROM employees;


Devuelve el numero de los valores distintos que tiene manager_id de la tabla
empleados con el alias "Managers"

COUNT 23
Oracle XE 11g

RPAD
la funcin RPAD rellena al lado derecho puede ser con "*" o con lo que quiera una cadena
de caracteres especificandole la longitud.

select FIRST_NAME,
RPAD(LAST_NAME,20,'*') FROM EMPLOYEES WHERE SALARY >= 7500 AND SALARY
<= 10000 ORDER BY FIRST_NAME;

RPAD 24
Oracle XE 11g

RPAD 25
Oracle XE 11g

Funcion SUBSTR()
Funcion SUBSTR()

Sintaxis

SUBSTR(char, pos, leng)

La funcion SUBSTR extrae una subcadena de caracteres a partir de un dato almacenado,


primero selecciona los caracteres iniciando desde la posicion y selecciona lo0s siguientes
caracteres

Ejemplos:

Para dual:

SELECT SUBSTR('ABCGATODEF',4,4) as "Subcadena"


FROM DUAL;

Para base de datos hr:

SELECT SUBSTR(COUNTRY_NAME,3,2)
FROM COUNTRIES
WHERE COUNTRY_NAME = 'Mexico';

Funcion SUBSTR() 26
Oracle XE 11g

Funcion MIN
Funcion MIN

Esta funcion devuelve el valor minimo de una expresion, se puede utilizar con columnas de
tipo numeric, char, varchar, o datetime.No se permiten funciones de agregado ni
subconsultas.

Estructura:

MIN (expression)

Ejemplo:

select min (salary)


from EMPLOYEES;
-- Devuelve el salario minimo entre todos

select min (first_name)


from employees;
-- Devuelve el nombre minimo, evaluando letra por letra de menor a mayor.

Funcion MIN 27
Oracle XE 11g

Funcion MIN 28
Oracle XE 11g

2) FUNCION INSTR
La funcin INSTR de Oracle busca una sub-cadena de caracteres dentro de una cadena de
caracteres, retornando la posicin de la primer ocurrencia de la misma.

Su sintaxis:

INSTR( cadena , sub_cadena [, posicion_desde [ , ocurrencias_numero ] ] )

Sus parmetros son:

cadena: Cadena de caracteres donde se buscar la sub-cadena.

sub_cadena: Sub-cadena que se desea buscar.

posicion_desde: Posicin a partir de donde se quiere buscar.

ocurrencias_numero: Nmero de ocurrencia que se desea encontrar su posicin.

Su valor de retorno es: Nmero entero que contiene la posicin de la primer ocurrencia de
la sub-cadena dentro de la cadena, si no la encuentra retorna cero.

Ejemplo con la tabla DUAL:

SELECT INSTR('New York York', 'York')


FROM dual;

SELECT INSTR('New York York', 'York', 1, 2)


FROM dual;

FUNCION INSTR 29
Oracle XE 11g

Ejemplo con la tabla HR:

SELECT FIRST_NAME, INSTR (FIRST_NAME,'a', 1, 2)


FROM EMPLOYEES
order by 2 desc;

FUNCION INSTR 30
Oracle XE 11g

LPAD
Funcion LPAD

La funcion LPAD sirve para rellenar el lado izquierdo de una cadena con un numero
especifico de caracteres

su sintaxis es :

campo columna sobre el que tratar.

numero de caracteres.

caracter de relleno.

Ejemplo para DUAL

campo o columna : 'Hola mundo '

numero de caracteres: 20

caracter de relleno: '.'

Ejemplo para tabla Hr

campo o columna : 'SALARY '

numero de caracteres: 15

caracter de relleno: '.'

LPAD 31
Oracle XE 11g

Funcion REPLACE
Sintaxis
Select REPLACE ([cadena], [cadena para reemplazar], [cadena de reemplazo])

Replace es una funcin de Oracle que se utiliza para reemplazar todas las ocurrencias de
un carcter o caracteres con un conjunto alternativo de caracteres.

Sentencias sql

Tabla dual
Select REPLACE('JACK AND JUE','J','BL') "Cambios" From DUAL

Resultado
Cambios BLACK AND BLUE

REPLACE 32
Oracle XE 11g

Funcin LENGTH
Funcion LENGHT

Cuando se construye procesos en SQL en Oracle, es necesario manipular cadenas de


texto. Para controlar las cadenas de texto se necesita saber cual es el largo que traen o la
cantidad de caracteres que contienen, y se utiliza la sentencia SQL Oracle LENGTH.

Con la siguiente sentencia podemos medir el tamao de caracteres que tiene la frase
'tamao de texto' y nos dara el tamao con el nombre de 'largo de texto' en donde contara
todos los campos CHAR que se ocupan en la frase en este caso de la tabla dual y el
resultado sera 15.

ejemplos:

Select LENGTH('tamao de texto') largo_del_texto

From dual;

Select LENGTH (EMPLOYEES.FIRST_NAME) tamao , FIRST_NAME


FROM EMPLOYEES;

Funcin LENGTH 33
Oracle XE 11g

Funciones para fechas

--adicionar dias a la fecha actual (SYSDATE


calcula la fecha actual)
Select SYSDATE +2 from dual;

--restar dias a la fecha actual


Select SYSDATE -5 from dual;

-- sumar semanas a la fecha actual (En el


siguiente ejemplo se observa que en la
multiplicacion 7 son los dias de la semana, y 4
son las semanas que se quieren sumar a la
fecha)
Select SYSDATE +(7*4) from dual;

-- sumar semanas a una fecha, tambiem se


puede observar el operador =
Select HIRE_DATE + (7*2) from EMPLOYEES where HIRE_DATE = '17/06/03';

--Culcular cual es el ltimo da de este mes


select last_day(sysdate) from dual;

-- Siguiente da de la semana despues de una


fecha ejemplo: consultar la fecha del prximo
domingo

Funciones para fechas 34


Oracle XE 11g

select next_day(sysdate,'Domingo') from dual;

-- agregar meses a una fecha


select add_months(sysdate,5) from dual;

Funciones para fechas 35


Oracle XE 11g

9) Funcin TO_CHAR
La funcin TO_CHAR() realiza la conversin de un nmero o fecha a una cadena, el valor
retornado siempre sera un VARCHAR2.

TO_CHAR es muy til cuando se requiere formatear los datos que se van a mostrar en una
consulta SELECT en la base de datos.

TO_CHAR(,,)

Ejemplo: (Tabla DUAL)

SELECT to_char(sysdate, 'HH:MI AM') FROM dual;

SELECT to_char(sysdate + (2/24), 'HH:MI AM') FROM dual;

Ejemplo: (Tabla hr)

SELECT LAST_NAME,HIRE_DATE from EMPLOYEES where


TO_CHAR(hire_date,'yyyy')Between 2008 and 2010;

Funcin TO_CHAR 36
Oracle XE 11g

Lower
Es una funcin la cual devuelve una cadena de caracteres en minsculas, esta solo puede
ser del tipo de datos CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, o NCLOB. El valor
retornado ser de mismo tipo de datos.

Lower 37
Oracle XE 11g

Funcin TO_DATE
La funcin TO_DATE ayuda a convertir una cadena de caracteres de tipo CHAR,
VARCHAR2, NCHAR, a un valor de tipo de dato DATE.

Sentencia:

SELECT to_date ('05-SEP-2007','DD-MON-YYYY') FROM dual;

Resultado:

Adems con la funcin TO_DATE se pueden realizar funciones aritmeticas de tal forma que
se puede calcular dias anteriores o posteriores a la fecha especificada.

Sentencia:

select to_date('01/01/2014', 'dd/mm/yyyy') + 1 from dual;

Resultado:

Aqui se aadio un dia a la fecha especificada.

Para la base de datos hr vamos a calcular los meses que existen entre la hora del sistema y
la fecha de ingreso de los empleados.

Sentencia:

select months_between(sysdate, to_date(hire_date, 'dd/mm/yy')) from employees;

Resultado:

Funcin TO_DATE 38
Oracle XE 11g

Otra sentencia para sacar los meses entre las fechas del sistema y la fecha de ingreso
seria:

Sentencia:

select HIRE_DATE, months_between(TO_DATE(sysdate,'dd-mm-YYYY'),


TO_DATE(hire_date,'DD-mm-YYYY') ) as meses from EMPLOYEES order by hire_date
DESC;

Resultado:

Funcin TO_DATE 39
Oracle XE 11g

Funcin SUM
Su sintaxis es la siguiente:

La funcin SUM retorna la suma de los valores de la exprecin


Por ejemplo:

SELECT SUM(salary) "Total"


FROM employees;

Total

691400

Funcin SUM 40
Oracle XE 11g

FUNCIN MAX
Esta funcion delvuelve el maximo valor de la expresion.

Ejemplo.

/ devolver el maximo salario de los empleados /

select MAX(salary) AS "MAXIMO_SALARIO" from EMPLOYEES; .

MAXIMO_SALARIO
24000

FUNCIN MAX 41
Oracle XE 11g

FUNCIONES MATEMATICAS
Las funciones matermaticas son operaciones que se realizan con expreciones numericas
retornando un resultado, las funciones numericas aceptan parametros de entrada tipo
numerico y retornan valores numericos. unas funcines numericas de oracle son:

ABS(x)
retorna un valor absoluto del parametro x

ejemplo:

SELECT ABS(-20) FROM DUAL; // El retorno de la consulta es 20

CEIL(x)
redondea a entero, hacia arriba el parametro x

ejemplo

SELECT CEIL(12.12) FROM DUAL // El retorno de la consulta es 13

SELECT first_name, salary, CEIL(commission_pct), hire_date FROM EMPLOYEES


WHERE COMMISSION_PCT is not null;

FLOOR(x)
redondea a entero, hacia abajo el parametro x

ejemplo

SELECT FLOOR(12.12) FROM DUAL // El retorno de la consulta es 12

SELECT first_name, salary, FLOOR(commission_pct), hire_date FROM EMPLOYEES


WHERE COMMISSION_PCT is not null;

MOD(x,y)
devuelve el residuo de la divisin x/y.

funciones matematicas 42
Oracle XE 11g

Ejemplos:

SLECT first_name,salary, commission_pct, hire_date, MOD(salary,COMMISSION_PCT)


FROM EMPLOYEES WHERE COMMISSION_PCT is not null;

POWER(x,y)
retorna el valor de "x" elevado a la "y" (potencia). Ejemplo:

SELECT POWER(2,3) from dual;--retorna 8.

SELECT first_name, salary, commission_pct, hire_date, power(salary,COMMISSION_PCT)


FROM EMPLOYEES WHERE COMMISSION_PCT is not null;

ROUND(n,d)
retorna "n" redondeado a "d" decimales; Ejemplo:

SELECT round(123.456,2) FROM dual;-- retorna "123.46", es decir, redondea desde el


segundo decimal.

SELECT round(123.456,1) FROM dual;-- 123.5, es decir, redondea desde el primer decimal.

SELECT first_name, salary, commission_pct, hire_date,


ROUND(power(salary,COMMISSION_PCT),2) from EMPLOYEES where
COMMISSION_PCT is not null;

SING(x)
si el parametro x es un valor positivo, retorna 1, si es negativo, devuelve -1 y 0 si es 0.
Ejemplo:

SELECT sign(-120) from dual;--retorna -1 SELECT sign(120) from dual;--retorna 1

SELECT first_name, salary, SING (commission_pct), hire_date FROM EMPLOYEES


WHERE COMMISSION_PCT is not null;

SQRT(x)
devuelve la raiz cuadrada del valor enviado como argumento. Ejemplo:

SELECT SQRT(9) FROM dual;--retorna 3

funciones matematicas 43
Oracle XE 11g

SELECT first_name, sqrt(salary), commission_pct, hire_date FROM EMPLOYEES WHERE


COMMISSION_PCT is not null;

TRUNC(N,D)
trunca un nmero a la cantidad de decimales especificada por el segundo parametro

Ejemplo:

SELECT trunc(1234.5678,2) FROM dual;--retorna 1234.56

SELECT trunc(1234.5678,-1) FORM dual;--retorna 1230

SELECT first_name, TRUNC(sqrt(salary),2), commission_pct, hire_date FROM


EMPLOYEES WHERE COMMISSION_PCT is not null;

funciones matematicas 44
Oracle XE 11g

RESUMEN

funciones
SUBSTR = encontrar cadenas de caraceteres en una
cadena de carqacteres
SELECT SUBSTR('ABCGATODEF',4,4) as "Subcadena" FROM DUAL;

SELECT

REPLACE( SUBSTR(first_name,1,1) || '. '|| LAST_NAME ,'E','F')

FROM EMPLOYEES;

length = medir el tamao de una cadena de caracteres ej


gato = 4
SELECT e.*, LENGTH (e.FIRST_NAME) FROM EMPLOYEES e WHERE LENGTH
(e.FIRST_NAME) = 5;

LPAD = Rellena todos los Campos de el lado izquierdo


hasta completar el valor especificado
SELECT LPAD(salary,15,' ') "EJEMPLO", LPAD(FIRST_NAME,15,'.') "Nombre" FROM
EMPLOYEES;

RPAD = Rellena todos los Campos de el lado izquierdo


hasta completar el valor especificado
SELECT RPAD(salary,15,' ') "EJEMPLO", RPAD(FIRST_NAME,15,'.') "Nombre" FROM
EMPLOYEES;

USO DE RPAD Y LPAD SIMULTANEAMNETE


SELECT LPAD(salary,15,' ') "EJEMPLO", RPAD(FIRST_NAME,15,'.') "Nombre" FROM
EMPLOYEES;

RESUMEN 45
Oracle XE 11g

REPLACE = Remplasa el caracter elegido por uno


seleccionado asi
SELECT REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(lower(first_name), 'a'
,'8'),'e','6'),'i','5'),'o','x'),'u','2') FROM employees;

/ FUNCIONES MATEMATICAS /
ABS = da el valor absoluto de un numero
SELECT ABS(-20) FROM dual;

CEIL redondea los valores hacia arriba


SELECT CEIL(10.8) FROM dual;

FLOOR redonde el valor hacia abajo


SELECT FLOOR(10.8) FROM dual;

MOD(x,y) devuelve el residuo de una divicion de x divido


entre y
SELECT MOD(7,4) FROM dual;

POWER(X,Y) ptencia X a la Y veces


SELECT POWER(3,2) FROM dual;

-- ROUND(n,d) redondea n en d numero de decimales

SELECT round(123.899,0) FROM dual;

SING(x) devuelve 1 cuando x es positivo -1 cuando es


negativo y 0 cuado el valor es 0
SELECT sign(-120) from dual;

SQRT(x) raiz cuadrda de x


SELECT SQRT(9) FROM dual;

RESUMEN 46
Oracle XE 11g

TRUNC(N,D) trunca un nmero a la cantidad de decimales


especificada por el segundo parametro
SELECT trunc(1234.5678,2) FROM
dual;

TO_CHAR de formato a los datos de la tabla


SELECT sysdate,TO_CHAR(sysdate,'HH:MI AM'),'SON LAS '||
TO_CHAR(sysdate,'HH:MM:SS DD/MM/YYYY') FROM DUAL;

HIRE_DATE da la fecha de ingreso al sistema


SELECT LAST_NAME,HIRE_DATE from EMPLOYEES where
TO_CHAR(hire_date,'yyyy')Between 2008 and 2010;

#SEGUNDO EXPO
##NATURAL JOIN

Toma todas la columnas que tengan el mismo nombre en


las taablas a comparar por ejemplo en las tablas
EMPLOYEERS y DEPARTMENS como tienen las columnas
MANAGAER_ID y DEPARTAMENT_ID tomara las dos
columnas para que sean iguales en tal caso de no serlo no
mostrar los datos
SELECT COUNT(e.DEPARTMENT_ID), d.DEPARTMENT_NAME FROM EMPLOYEES e
NATURAL JOIN DEPARTMENTS d

GROUP BY e.DEPARTMENT_ID, d.DEPARTMENT_NAME;

LEFT OUTER JOIN


el resultado contendra todos los datos de la tabla izquierda
sin importar si existen o no en la tabla derecha
*

RESUMEN 47
Oracle XE 11g

SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, JH.END_DATE


FROM EMPLOYEES E LEFT OUTER JOIN JOB_HISTORY JH ON E.EMPLOYEE_ID =
JH.EMPLOYEE_ID;

-- ejemplo comun

SELECT E.EMPLOYEE_ID, D.DEPARTMENT_ID,d.DEPARTMENT_NAME FROM


EMPLOYEES e LEFT JOIN DEPARTMENTS d ON (e.DEPARTMENT_ID =
D.DEPARTMENT_ID);

RIGHT OUTER JOIN


el resultado contendra todos los datos de la tabla derecha
sin importar si existen o no en la tabla izquierda
SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, JH.END_DATE
FROM EMPLOYEES E RIGHT OUTER JOIN JOB_HISTORY JH ON E.EMPLOYEE_ID =
JH.EMPLOYEE_ID;

--ejemplo comun

SELECT E.EMPLOYEE_ID, D.DEPARTMENT_ID,d.DEPARTMENT_NAME FROM


EMPLOYEES e RIGHT JOIN DEPARTMENTS d ON (e.DEPARTMENT_ID =
D.DEPARTMENT_ID);

INTERSECT
es el operador que permite realizar la interseccion entre
dos consultas ejemplo
SELECT FROM EMPLEADOS where EMPLOYEE_ID< 110 INTERSECT SELECT FROM
EMPLOYEES where EMPLOYEE_ID> 104;

RESUMEN 48
Oracle XE 11g

CREATE
La clusula CREATE sirve para crear tanto como la estructura de una base de datos como
los objetos de la misma.

Se puede realizar sentencias como: CREATE USER, CREATE ROLE, CREATE CLUSTER, CREATE JAVA,
CREATE SEQUENCE, CREATE LIBRARY, CREATE DISKGROUP, CREATE PROFILE, CREATE TABLESPACE,
CREATE OUTLINE, CREATE OPERATOR, CREATE SCHEMA, CREATE DISKGROUP, CREATE CONTEXT, CREATE
FUNCTION, CREATE PACKAGE, CREATE PFILE, CREATE DIMENSION, CREATE SPFILE, CREATE TYPE,
CREATE DATABASE, CREATE DIRECTORY, CREATE PROCEDURE, CREATE SYNONYM, CREATE VIEW, CREATE
TRIGGER, CREATE TABLE, CREATE CONTROLFILE.

A continuacin unos ejemplos de las sentencias ms comunes:

La sentencia CREATE USER crea una cuenta de base de datos que le permite acceder
a la base de datos Oracle. CREATE USER sidney IDENTIFIED BY out_standing1 DEFAULT
TABLESPACE example QUOTA 10M ON example TEMPORARY TABLESPACE temp QUOTA 5M ON system
PROFILE app_user PASSWORD EXPIRE;

La sentencia CREATE DATABASE crea una base de datos. CREATE DATABASE mynewdb
USER SYS IDENTIFIED BY sys_password USER SYSTEM IDENTIFIED BY system_password;

La sentencia CREATE TABLE permite crear tanto tablas relacionales (estructura bsica
para mantener datos), como tablas de objetos (se define explcitamente a mantener
instancias de objetos de un tipo determinado).

CREATE TABLE departments_demo ( department_id NUMBER(4), department_name


VARCHAR2(30)CONSTRAINT dept_name_nn NOT NULL, manager_id NUMBER(6), location_id NUMBER(4),
dn VARCHAR2(300));

CREATE TABLE dept_80 AS SELECT * FROM employees WHERE department_id = 80;

La sentencia CREATE TRIGGER permite crear un trigger o tambien conocido como un


lanzador que es, un bloque PL/SQL almacenado asociado con una tabla, un esquema
(schema), o base de datos tambienpuede ser un bloque PL/SQL annimo para realizar
una llamada a un procedimiento implementado en PL/SQL o Java.

CREATE 49
Oracle XE 11g

Ref: Disparadores en ORACLE, Diseo de Bases de Datos y Seguridad de la


Informacin, 2008 Beln Vela, [En lnea:
http://personales.unican.es/zorrillm/BDAvanzadas/Practicas/belen_disparadores_oracle
.pdf], pag 4

Utilice la instruccin CREATE PROCEDURE para crear un procedimiento almacenado


independiente o una llamada a una especificacin (declara un mtodo Java o una
rutina de lenguaje de tercera generacin). Los procedimientos almacenados ofrecen
ventajas en las reas de desarrollo, la integridad, la seguridad, el rendimiento y la
asignacin de memoria.

CREATE PROCEDURE remove_emp (employee_id NUMBER) AS tot_emps NUMBER; BEGIN DELETE FROM
employees WHERE employees.employee_id = remove_emp.employee_id; tot_emps := tot_emps - 1;
END;

CREATE 50
Oracle XE 11g

Instalacion SQL Developer en Windows

1. Entramos a la pagina oficial


http://www.oracle.com/index.html

2. Pasamos el cursor por "Downloads" y


debemos elegir Java for Developer

3.Escogemos la version de Java SE y se


comenzara la descarga automaticamente.

Instalacion SQL Developer 51


Oracle XE 11g

4.Luego se debe descargar la herramienta


de desarrollo SQL Developer.

5.Aceptamos terminos y elgir la version.

Instalacion SQL Developer 52


Oracle XE 11g

6.Debemos ingresar a la cuenta


anteriormente registrada y se comenzara
automaticamente la descarga.

7.Estas son las dos aplicaciones


descargadas, ahora se debe instalar
primero el JDK y luego

Instalacion SQL Developer 53


Oracle XE 11g

8.Comenzamos con Java.

9.Se deja por defecto.

Instalacion SQL Developer 54


Oracle XE 11g

10.

11.Termina la intalacion.

12.Se debe configurar la contrasea de Hr


porque si no nos dara un error al tratar de
crearla.

Instalacion SQL Developer 55


Oracle XE 11g

13.Buscamos la ruta donde fue


descargado el SQLDEVELOPER extraer la
carpeta y ejecutarlo.

14.Su interfaz.

Instalacion SQL Developer 56


Oracle XE 11g

15.Datos a llenar para crear una nueva


conexion.

16.Creamos una conexion para Hr.

Instalacion SQL Developer 57


Oracle XE 11g

17.Conexion exitosa y lista para hacer


consultas.

Instalacion SQL Developer 58


Oracle XE 11g

Union [All] Intersect y Minus

Intersect
es el operador que permite realizar la interseccion entre dos consultas ejemplo

SELECT FROM EMPLEADOS where EMPLOYEE_ID< 110 INTERSECT SELECT FROM


EMPLOYEES where EMPLOYEE_ID> 104;

Union
es el operador que permite realizar la union entre dos consultas ejemplo

vamos a unir las siguinetes consultas, la primera consiste en sacar los empleados que
tienen su id mayor a 110 y los empreados cuyo salario es mayor a 9000

SELECT FROM EMPLOYEES WHERE EMPLOYEE_ID<(110) UNION SELECT FROM


EMPLOYEES e WHERE e.SALARY>9000;

COMO RESULTADO OBTENEMOS 29 REGISTROS

la variante Union all permite realizar la union pero aqui no importan los resulados repetidos

SELECT FROM EMPLOYEES WHERE EMPLOYEE_ID<(110) UNION ALL SELECT FROM


EMPLOYEES e WHERE e.SALARY>9000;

Minus
es el operador que devuelbe la diferencia entre el select de la primera consulta y el select
de la seguda consulta, se puede mostrar asi consulta1 - consulta2= resultado, ejemplo

SELECT FROM EMPLEADOS where EMPLOYEE_ID< 110 MINUS SELECT FROM


EMPLOYEES where EMPLOYEE_ID> 104;

Union Intersec y Minus 59


Oracle XE 11g

Transacciones:
Una transaccin es un conjunto de operaciones que se ejecutan en una base de datos, y
que son tratadas como una nica unidad lgica por el Sistema de gestion de base de datos.

Es decir, una transaccin es una o varias sentencias SQL que se ejecutan en una base de
datos como una nica operacin, confirmandose o deshaciendose en grupo.

No todas las operaciones SQL son transaccionales. Slo son transaccionales las
operaciones correspondiente al DML, es decir, sentencias SELECT, INSERT, UPDATE y
DELETE.

Para confirmar una transaccin se utiliza la sentencia COMMIT. Cuando realizamos


COMMIT los cambios se escriben en la base de datos.

Para deshacer una transaccin se utiliza la sentencia ROLLBACK. Cuando realizamos


ROLLBACK se deshacen todas las modificaciones realizadas por la transaccin en la base
de datos, quedando la base de datos en el mismo estado que antes de iniciarse la
transaccin.

EJEMPLO:
delete

from EMPLEADOS;

UPDATE EMPLEADOS

SET FIRST_NAME= 'hola'

WHERE EMPLOYEE_ID=204;

COMMIT; ESTE COMANDO SIRVE PARA CONFIRMAR

ROLLBACK; ESTE COMANDO SIRVE PARA DESHACER LOS CAMBIOS

Transacciones 60
Oracle XE 11g

INSERT()
La declaracin de Oracle INSERT se utiliza para insertar uno o varios registros en una tabla
en Oracle.

SINTAXIS
La sintaxis bsica y general es la siguiente:

INSERT INTO table (column1, column2, ... column_n ) VALUES (expression1,


expression2, ... expression_n );

O la sintaxis de la instruccin de Oracle INSERT para insertar varios registros mediante una
instruccin SELECT es:

INSERT INTO table (column1, column2, ... column_n ) SELECT expression1,


expression2, ... expression_n FROM source_table [WHERE conditions];

EJEMPLOS

Ejemplo 1
Se crea una tabla llamada USUARIO con los campos NOMBRE, TELEFONO:

CREATE TABLE USUARIO( NOMBRE varchar2(30), TELEFONO varchar2(15) );

a continuacion se inserta un registro a la tabla USUARIO:

INSERT INTO USUARIO (NOMBRE, TELEFONO) VALUES ('JHON',7202020);

y verificamos que el registro fue insertado correctamente:

Ejemplo 2
Insertar registros desde la tabla EMPLOYEES utilizando SELECT.

INSERT() 61
Oracle XE 11g

De la tabla EMPLOYEES consultaremos FIRTS_NAME y PHONE_NUMBER, donde el


DEPARTMEN_ID sea igual a 90 y 60. el resultado de la consulta sera insertada en la tabla
USUARIO.

INSERT INTO USUARIO (NOMBRE, TELEFONO) SELECT FIRST_NAME,


PHONE_NUMBER FROM EMPLOYEES WHERE DEPARTMENT_ID IN(60,90);

Ejemplo 3
Se puede insertar un registro sin especificar las columnas de la tabla:

INSERT INTO USUARIO VALUES ('FEDERICO', 7303030);

INSERT() 62
Oracle XE 11g

Delete()
La setencia DELETE es usada para remover los registros de una tabla. Crea un SQL que
elimina los registros de una o mas de las tablas listadas en la clausula FROM que cumpla la
clausula WHERE.

Sintaxis: DELETE FROM NombreTabla WHERE "criterio seleccion de datos";

Ejemplos:

1. Sentencia:

DELETE FROM empleados WHERE department_id=60;

Resultado:

Rownum: Numera los registros de un conjunto de resultados. Al primer registro que


cumple el criterio de la clausula where en una sentencia select se le da rownum=1, y
cada uno de los siguientes registros se le incrementa en 1.

2. Sentencia:

DELETE FROM empleados WHERE job_id='IT_PROG'and rownum <= (3);

Delete() 63
Oracle XE 11g

Resultado:

3. Sentencia:

DELETE FROM trabajos;

Resultado:

DROP DATABASE:

Quita una o varias bases de datos.

Sentencia:

TRUNCATE

La sentencia truncate table vacia la tabla (elimina todos los registros) y conserva la
estructura de la tabla.

Delete() 64
Oracle XE 11g

La diferencia con DELETE es al emplear DELETE oracle guarda una copia de los registros
borrados y son recuperables. Con TRUNCATE table no es posible la recuperacion porque
se libera todo el espacio en disco ocupado por la tabla.

Sentencia:

Delete() 65
Oracle XE 11g

UPDATE
Sentencia que sirve para actualizar datos de una table en
una base de datos

Sintaxis
UPDATE nombre_tabla SET columna=valor1,columna2=valor2,... WHERE
column_a_condicionar=condicion_valor;

Importante
La clusula WHERE especifica el registro o registros que deben actualizarse . Si se omite la
clusula WHERE, todos los registros sern actualizados

Ejemplo
SELECT

from EMPLEADOS where COMMISSION_PCT IS NULL;

Se devuelven 72 valores con comision = NULL que en este caso la vamos a actualizar a un
valor de 0.08

Asi:

UPDATE 66
Oracle XE 11g

UPDATE empleados SET COMMISSION_PCT = 0.8 WHERE COMMISSION_PCT IS


NULL;

mostrando los cambios echos

Realizado por: Juan Carlos Guzman. Fernanda Torres

UPDATE 67
Oracle XE 11g

Secuencias SQL
Una secuencia (sequence) se emplea para generar valores enteros secuenciales nicos y
asignrselos a campos numricos; se utilizan generalmente para las claves primarias de las
tablas garantizando que sus valores no se repitan.

Una secuencia es una tabla con un campo numrico en el cual se almacena un valor y cada
vez que se consulta, se incrementa tal valor para la prxima consulta.

Para crear una secuencia en Oracle mediante SQL utilizaremos el comando create
sequence con la siguiente sintaxis:

CREATE SEQUENCE nombre_secuencia INCREMENT BY numero_incremento START


WITH numero_por_el_que_empezara MAXVALUE valor_maximo | NOMAXVALUE
MINVALUE valor_minimo | NOMINVALUE CYCLE | NOCYCLE ORDER | NOORDER

Por ejemplo, si queremos crear una secuencia que empiece en 300 y se incremente de uno
en uno utilizaremos la siguiente consulta SQL:

CREATE SEQUENCE incremento_id_cliente INCREMENT BY 1 START WITH 100

Para utilizar la secuencia creada en una insercin de fila:

Utilizaremos el select para mirar el resultado:

Geovany Ojeda. Mauricio Zambrano.

Secuencias SQL 68
Oracle XE 11g

NATURAL JOIN, LEFT OUTER JOIN, RIGHT


OUTER JOIN

* NATURAL JOIN
Una NATURAL JOIN es una operacin JOIN que crea una clusula de combinacin
implcita sobre las columnas comunes en las dos tablas a unir. Columnas comunes son
columnas que tienen el mismo nombre en ambas tablas. Una NATURAL JOIN puede ser
Una unin interior, una combinacin externa izquierda, o una combinacin externa derecha

Sintaxis SELECT columns FROM table1 NATURAL JOIN table2

Ejemplos

SELECT department_name, city


FROM departments
NATURAL JOIN locations;

2 Ejemplo

SELECT first_name, department_name


FROM employees
NATURAL JOIN departments;

NATURAL JOIN, RIGHT OUTER JOIN, LEFT OUTER JOIN 69


Oracle XE 11g

* LEFT OUTER JOIN


El resultado de esta operacin siempre contiene todos los registros de la tabla de la
izquierda (la primera tabla que se menciona en la consulta), aun cuando no exista un
registro correspondiente en la tabla de la derecha para uno de la izquierda.

La sentencia LEFT OUTER JOIN retorna todos los valores de la tabla izquierda con los
valores de la tabla de la derecha correspondientes, o retorna un valor nulo NULL en caso de
no correspondencia.

Syntax
SELECT columns FROM table1 LEFT OUTER JOIN table2 ON table1.column =
table2.column;

A continuacin se muestra un diagrama de la consulta.

Ejemplo
SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, JH.END_DATE
FROM EMPLOYEES E LEFT OUTER JOIN JOB_HISTORY JH ON E.EMPLOYEE_ID =
JH.EMPLOYEE_ID;

NATURAL JOIN, RIGHT OUTER JOIN, LEFT OUTER JOIN 70


Oracle XE 11g

* RIGHT OUTER JOIN


Esta operacin es inversa a la anterior; el resultado de esta operacin siempre contiene
todos los registros de la tabla de la derecha (la segunda tabla que se menciona en la
consulta), aun cuando no exista un registro correspondiente en la tabla de la izquierda para
uno de la derecha.

La sentencia RIGHT OUTER JOIN retorna los valores de la tabla derecha con los valores
de la tabla de la izquierda correspondientes, o retorna un valor nulo NULL en caso de no
correspondencia.

Sintax
SELECT columns FROM table1 RIGHT OUTER JOIN table2 ON table1.column =
table2.column;

NATURAL JOIN, RIGHT OUTER JOIN, LEFT OUTER JOIN 71


Oracle XE 11g

A continuacin se muestra un diagrama de la consulta.

Ejemplo
SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, JH.END_DATE
FROM EMPLOYEES E RIGHT OUTER JOIN JOB_HISTORY JH ON E.EMPLOYEE_ID =
JH.EMPLOYEE_ID;

NATURAL JOIN, RIGHT OUTER JOIN, LEFT OUTER JOIN 72


Oracle XE 11g

Trigger
Un "trigger" (disparador o desencadenador) es un bloque de cdigo que se ejecuta
automticamente cuando ocurre algn evento (como insercin, actualizacin o borrado)
sobre una determinada tabla (o vista); es decir, cuando se intenta modificar los datos de una
tabla (o vista) asociada al disparador. Sintaxis general para crear un disparador:

create or replace trigger NOMBREDISPARADOR MOMENTO-- before, after o instead of


EVENTO-- insert, update o delete of CAMPOS-- solo para update on NOMBRETABLA
NIVEL--puede ser a nivel de sentencia (statement) o de fila (for each row) when
CONDICION--opcional begin CUERPO DEL DISPARADOR--sentencias end
NOMBREDISPARADOR;

CREATE OR REPLACE TRIGGER TR_PRODUCTOS_01 AFTER INSERT ON


PRODUCTOS
FOR EACH ROW DECLARE -- local variables BEGIN INSERT INTO
PRECIOS_PRODUCTOS (CO_PRODUCTO,PRECIO,FX_ACTUALIZACION) VALUES
(:NEW.CO_PRODUCTO,100,SYSDATE); END ;

CREATE TABLE UNIVERSIDAD ( ALUMNO NVARCHAR(50), ID INT PRIMARY KEY,


TELEFONO INT );

SELECT * FROM UNIVERSIDAD CREATE TRIGGER INGRESAR_DATOS ON


UNIVERSIDAD AFTER INSERT AS BEGIN DECLARE @ALUMNO NVARCHAR(50), @ID
INT, @TELEFONO INT, IF @TELEFONO IS NULL PRINT'INGRESE EL TELEFONO'

Trigger 73
Oracle XE 11g

ROLLBACK TRANSACTION END

INSERT INTO UNIVERSIDAD(ALUMNO)VALUES('MAURICIO ZAMBRANO')

Trigger 74
Oracle XE 11g

Esquemas
Oracle define esquema como la coleccin de objetos o estructuras lgicas que
corresponden directamente a los datos almacenados, y crea un nuevo esquema por cada
usuario que crea objetos en la base de datos.

El conjunto de objetos que le pertenecen a un usuario, por ejemplo, teniendo al usuario HR


todos los objetos que este crea (tablas, indices, vistas, procedimientos almacenados) le
pertenecen a el y unicamente a el, esto es le pertenecen al schema HR, cualquier otro
usuario puede tener acceso a estos objetos siempre y cuando el usuario HR se los otorgue.

Para crear esquemas necesitamos empezar creando un tablespace Creacin de un


tablespace para datos y otro para ndices. Estos tablespaces son la ubicacin donde se
almacenarn los objetos del esquema de Oracle que vamos a crear. Tablespace para datos,
con tamao inicial de 1024 Mb, y auto extensible

CREATE TABLESPACE "APPDAT" LOGGING DATAFILE 'RUTA.dbf' SIZE 1024M EXTENT


MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

Tablespace para ndices, con tamao inicial de 512 Mb, y auto extensible

CREATE TABLESPACE "APPIDX" LOGGING DATAFILE 'RUTA.dbf' SIZE 512M EXTENT


MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

La creacin de estos tablespaces no es obligatoria, pero s recomendable, as cada usuario


de la BD tendr su propio espacio de datos. Creacin del usuario que va a trabajar sobre
estos tablespaces, y que ser el propietario de los objetos que se se creen en ellos

CREATE USER "APP" PROFILE "DEFAULT" IDENTIFIED BY "APPPWD" DEFAULT


TABLESPACE "APPDAT" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;

Si no se especifica un tablespace, la BD le asignar el tablespace USERS, que es el


tablespace que se utiliza por defecto para los nuevos usuarios.

Se asigna los permisos necesarios para trabajar. Si se le asignan los roles 'Connect' y
'Resource' ya tiene los permisos mnimos, podr conectarse a la base de datos y realizar
las operaciones ms habituales de consulta, modificacin y creacin de objetos en su
propio esquema.

GRANT "CONNECT" TO "APP"; GRANT "RESOURCE" TO "APP";

Esquemas 75
Oracle XE 11g

Completamos la asignacin de permisos con privilegios especficos sobre objetos del


esquema Oracle para asegurarnos de que el usuario pueda realizar todas las operaciones
que creamos necesarias

GRANT ALTER ANY INDEX TO "APP";

GRANT ALTER ANY SEQUENCE TO "APP";

GRANT ALTER ANY TABLE TO "APP";

GRANT ALTER ANY TRIGGER TO "APP";

GRANT CREATE ANY INDEX TO "APP";

GRANT CREATE ANY SEQUENCE TO "APP";

GRANT CREATE ANY SYNONYM TO "APP";

GRANT CREATE ANY TABLE TO "APP";

GRANT CREATE ANY TRIGGER TO "APP";

GRANT CREATE ANY VIEW TO "APP";

GRANT CREATE PROCEDURE TO "APP";

GRANT CREATE PUBLIC SYNONYM TO "APP";

GRANT CREATE TRIGGER TO "APP";

GRANT CREATE VIEW TO "APP";

GRANT DELETE ANY TABLE TO "APP";

GRANT DROP ANY INDEX TO "APP";

GRANT DROP ANY SEQUENCE TO "APP";

GRANT DROP ANY TABLE TO "APP";

GRANT DROP ANY TRIGGER TO "APP";

GRANT DROP ANY VIEW TO "APP";

GRANT INSERT ANY TABLE TO "APP";

GRANT QUERY REWRITE TO "APP";

GRANT SELECT ANY TABLE TO "APP";

GRANT UNLIMITED TABLESPACE TO "APP";

Esquemas 76
Oracle XE 11g

Para crear un esquema podemos seguir estos pasos

Use hr; go create schema mi_esquema Authorization guest create table mitabla (id int ,
nombre varchar) grant select to guest;

y para mirar el esquema

select * from information_schema.schemata where schema_name = 'mi_esquema';

Esquemas 77
Oracle XE 11g

Glosario

Oracle
esta es la descripcin

3.1. Funcion AVG 1. Instalacin Oracle XE linux 3.19. CREATE 8. Delete()


13. Esquemas 3.7. FUNCION INSTR 3.10. Funcin LENGTH
3.17. funciones matematicas 7. INSERT() 2. Instalacin Oracle XE en Windows
3.9. REPLACE 10. Secuencias SQL

Glosario 78