Está en la página 1de 78

Oracle

XE 11g

Tabla de contenido
Introduction 0
Instalación Oracle XE linux 1
Instalación Oracle XE en Windows 2
Cláusulas 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
Función LENGTH 3.10
Funciones para fechas 3.11
Función TO_CHAR 3.12
Lower 3.13
Función TO_DATE 3.14
Función SUM 3.15
FUNCIÓN 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

Introducción
Esto lo redactamos al final....

Introduction 4
Oracle XE 11g

Instalación 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.

Instalación Oracle XE linux 5


Oracle XE 11g

Instalación 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.

Instalación Oracle XE en Windows 6


Oracle XE 11g

4.Se debe descomprimir el archivo


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

Instalación Oracle XE en Windows 7


Oracle XE 11g

5.Clic en Siguiente

7.Aceptar terminos de licencia.

Instalación Oracle XE en Windows 8


Oracle XE 11g

8.Elegir la ruta de instalacion o se la deja


por defecto.

Instalación Oracle XE en Windows 9


Oracle XE 11g

9.Colocar y confirmar la contraseña de la


base de datos.

Instalación Oracle XE en Windows 10


Oracle XE 11g

9.Install.

Instalación Oracle XE en Windows 11


Oracle XE 11g

10.Finish.

Instalación Oracle XE en Windows 12


Oracle XE 11g

11.Una vez instalado lo ejecutamos.

Instalación 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.

Instalación 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.

Instalación 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 función TO_CHAR() realiza la conversión de un número 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 función "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 numérico, esta función se puede usar para promediar todos los datos de una tabla o
también 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
también 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 función permite reemplazar valores null con una cadena de resultados de una
consulta. Donde se evalúa 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 función coalesce() recibe varios argumentos, si identifica un campo null retorna la


expresión distinta de nulo.

Funciones para datos nulos 20


Oracle XE 11g

Sentencia:

SELECT first_name, last_name, salary, COALESCE(commission_pct*100,0) Comisión


FROM employees WHERE salary between 7500 and 10000;

Resultado:

Funciones para datos nulos 21


Oracle XE 11g

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

COUNT(*) Retorna el número de filas de una tabla

COUNT(expr) Retorna el número de filas con valores non-null de una expresión.

COUNT(DISTINCT expr) Retorna el número de los valores distintos non-null de una


expresión.

Ejemplos:

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


employees.

COUNT 22
Oracle XE 11g

También podemos utilizar esta función junto con la clausula WHERE para una consulta más
específica.

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


commission_pct > 0; Devuelve el número 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 función 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 función INSTR de Oracle busca una sub-cadena de caracteres dentro de una cadena de
caracteres, retornando la posición de la primer ocurrencia de la misma.

Su sintaxis:

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

Sus parámetros son:

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

sub_cadena: Sub-cadena que se desea buscar.

posicion_desde: Posición a partir de donde se quiere buscar.

ocurrencias_numero: Número de ocurrencia que se desea encontrar su posición.

Su valor de retorno es: Número entero que contiene la posición 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 función de Oracle que se utiliza para reemplazar todas las ocurrencias de
un carácter 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

Función 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 tamaño de caracteres que tiene la frase
'tamaño de texto' y nos dara el tamaño 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('tamaño de texto') largo_del_texto

From dual;

Select LENGTH (EMPLOYEES.FIRST_NAME) tamaño , FIRST_NAME


FROM EMPLOYEES;

Función 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 día de este mes


select last_day(sysdate) from dual;

-- Siguiente día de la semana despues de una


fecha ejemplo: consultar la fecha del próximo
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) Función TO_CHAR
La función TO_CHAR() realiza la conversión de un número 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;

Función TO_CHAR 36
Oracle XE 11g

Lower
Es una función la cual devuelve una cadena de caracteres en minúsculas, 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

Función TO_DATE
La función 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:

Además con la función 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 añadio 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:

Función 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:

Función TO_DATE 39
Oracle XE 11g

Función SUM
Su sintaxis es la siguiente:

La función SUM retorna la suma de los valores de la expreción


Por ejemplo:

SELECT SUM(salary) "Total"


FROM employees;

Total

691400

Función SUM 40
Oracle XE 11g

FUNCIÓN 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

FUNCIÓN 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 división 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 número 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 tamaño 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 número 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 cláusula 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 continuación unos ejemplos de las sentencias más 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 básica
para mantener datos), como tablas de objetos (se define explícitamente 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 anónimo para realizar
una llamada a un procedimiento implementado en PL/SQL o Java.

CREATE 49
Oracle XE 11g

Ref: Disparadores en ORACLE, Diseño de Bases de Datos y Seguridad de la


Información, © 2008 Belén Vela, [En línea:
http://personales.unican.es/zorrillm/BDAvanzadas/Practicas/belen_disparadores_oracle
.pdf], pag 4

Utilice la instrucción CREATE PROCEDURE para crear un procedimiento almacenado


independiente o una llamada a una especificación (declara un método Java o una
rutina de lenguaje de tercera generación). Los procedimientos almacenados ofrecen
ventajas en las áreas de desarrollo, la integridad, la seguridad, el rendimiento y la
asignación 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 contraseña 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 transacción es un conjunto de operaciones que se ejecutan en una base de datos, y
que son tratadas como una única unidad lógica por el Sistema de gestion de base de datos.

Es decir, una transacción es una o varias sentencias SQL que se ejecutan en una base de
datos como una única operación, confirmandose o deshaciendose en grupo.

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

Para confirmar una transacción se utiliza la sentencia COMMIT. Cuando realizamos


COMMIT los cambios se escriben en la base de datos.

Para deshacer una transacción se utiliza la sentencia ROLLBACK. Cuando realizamos


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

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 declaración de Oracle INSERT se utiliza para insertar uno o varios registros en una tabla
en Oracle.

SINTAXIS
La sintaxis básica y general es la siguiente:

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


expression2, ... expression_n );

O la sintaxis de la instrucción de Oracle INSERT para insertar varios registros mediante una
instrucción 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 cláusula WHERE especifica el registro o registros que deben actualizarse . Si se omite la
cláusula WHERE, todos los registros serán 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
asignárselos a campos numéricos; 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 numérico en el cual se almacena un valor y cada
vez que se consulta, se incrementa tal valor para la próxima 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 inserción 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 operación JOIN que crea una cláusula de combinación
implícita 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 unión interior, una combinación externa izquierda, o una combinación 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 operación 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 continuación 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 operación es inversa a la anterior; el resultado de esta operación 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 continuación 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 código que se ejecuta
automáticamente cuando ocurre algún evento (como inserción, actualización 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 colección de objetos o estructuras lógicas 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 Creación de un


tablespace para datos y otro para índices. Estos tablespaces son la ubicación donde se
almacenarán los objetos del esquema de Oracle que vamos a crear. Tablespace para datos,
con tamaño 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 tamaño inicial de 512 Mb, y auto extensible

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


MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

La creación de estos tablespaces no es obligatoria, pero sí recomendable, así cada usuario


de la BD tendrá su propio espacio de datos. Creación 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 mínimos, podrá conectarse a la base de datos y realizar
las operaciones más habituales de consulta, modificación y creación de objetos en su
propio esquema.

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

Esquemas 75
Oracle XE 11g

Completamos la asignación de permisos con privilegios específicos 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 descripción

3.1. Funcion AVG 1. Instalación Oracle XE linux 3.19. CREATE 8. Delete()


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

Glosario 78

También podría gustarte