Documento - Capacitacion - SQL - Oracle
Documento - Capacitacion - SQL - Oracle
Documento - Capacitacion - SQL - Oracle
• SESSION 1 y 2
TIPOS DE DATOS
Texto
CHARACTER(n)
Texto de anchura fija CHAR(n)
CHAR(n)
CHARACTER
Texto de anchura VARYING(n)
VARCHAR2(n)
variable
VARCHAR (n)
NATIONAL
CHARACTER(n)
Texto de anchura fija
para caracteres NCHAR(n)
NATIONAL CHAR(n)
nacionales
NCHAR(n)
NATIONAL
CHARACTER
VARYING(n)
Texto de anchura
variable para caracteres NATIONAL CHAR NVARCHAR2(n)
nacionales VARYING(n)
NCHAR VARYING(n)
Números
Enteros pequeños
SMALLINT
(2 bytes)
Enteros normales INTEGER
(4 bytes) INT
(en realidad no es
estándar, pero es muy
(8 bytes)
utilizado en muchas
bases de datos)
Enteros
NUMBER(n)
precisión decimal
FLOAT
DOUBLE
Decimal de coma
NUMBER
variable DOUBLE PRECISSION
REAL
NUMERIC(m,d)
Decimal de coma fija NUMBER(m,d)
DECIMAL(m,d)
Fechas
Fechas DATE DATE
INTERVAL
INTERVAL YEAR TO
YEAR TO
MONTH
MONTH
Intervalos
INTERVALE DAY TO INTERVAL DAY
SECOND TO SECOND
Booleanos y binarios
Booleanos (Lógicos) BOOLEAN
BOOL
BIT
Binarios BIT VARYING
VARBIT(n)
Datos de gran tamaño
CHARACTER LARGE LONG (en
OBJECT desuso)
Texto largo CLOB
CLOB
BINARY LARGE RAW (en
OBJECT desuso)
LONG RAW (en
Binarios BLOB
desuso)
BLOB
BFILE
Especiales
CREATE.
Scrip crea tabla con atributos de un trabajador (tener en cuenta el esquema en donde
se creará dicha tabla)
EL PK y FK son importantes crear muchas tablas transaccional que ya con ello
podremos relacionar y almacenar información de forma estructurada
DROP
Scrip para eliminar tabla de una DB (elimina la definición de la tabla). También se
puede eliminar objetos de la estructura por ejemplo índices, constraint, procedures,
vistas, etc
ALTER
Scrip para modificar la estructura de un objeto por ejemplo borrar columnas de una
tabla y cambiar de tipo de dato de una tabla
• SESSION 3, 4 y 5
DELETE
Scrip se utiliza para eliminar filas de una tabla.
SELECT
Scrip se utiliza para realizar consulta sobro los datos. Es decir, podemos mostrar datos
estructurados según a nuestros criterios o lógica de negocio.
INSERT
Scrip se utiliza para registrar data en una tabla respetando la orden de la estructura
UPDATE
La declaración UPDATE de Oracle se utiliza para actualizar registros existentes en una
tabla en una base de datos Oracle. Hay 2 sintaxis para una consulta de actualización
en Oracle dependiendo de si está realizando una actualización tradicional o
actualizando una tabla con datos de otra tabla.
Sintaxis
La sintaxis de la instrucción UPDATE al actualizar una tabla en Oracle/PLSQL es:
UPDATE table
SET column1 = expression1,
column2 = expression2,
...
column_n = expression_n
[WHERE conditions];
UPDATE table1
SET column1 = (SELECT expression1
FROM table2
WHERE conditions)
[WHERE conditions];
GROUP BY
Descripción
La cláusula Oracle GROUP BY se utiliza en una declaración SELECT para recopilar
datos en varios registros y agrupar los resultados en una o más columnas.
Sintaxis
La sintaxis de la cláusula GROUP BY en Oracle/PLSQL es:
Descripción
La cláusula HAVING de Oracle se utiliza en combinación con la cláusula GROUP
BY para restringir los grupos de filas devueltas solo a aquellas cuya condición es
VERDADERA.
HAVING
Sintaxis
La sintaxis de la cláusula HAVING en Oracle/PLSQL es:
Descripción
El operador Oracle UNION se utiliza para combinar los conjuntos de resultados de 2 o
más declaraciones SELECT de Oracle . Elimina filas duplicadas entre las distintas
declaraciones SELECT.
Cada instrucción SELECT dentro del operador UNION debe tener la misma cantidad
de campos en los conjuntos de resultados con tipos de datos similares.
Sintaxis
La sintaxis del operador UNION en Oracle/PLSQL es:
SELECT supplier_id
FROM suppliers
UNION
SELECT supplier_id
FROM order_details;
UNION ALL
Descripción
El operador UNION ALL de Oracle se utiliza para combinar los conjuntos de resultados
de 2 o más declaraciones SELECT . Devuelve todas las filas de la consulta y no
elimina filas duplicadas entre las distintas declaraciones SELECT.
Cada instrucción SELECT dentro del operador UNION ALL de Oracle debe tener la
misma cantidad de campos en los conjuntos de resultados con tipos de datos
similares.
Sintaxis
La sintaxis del operador UNION ALL en Oracle/PLSQL es:
Dónde cláusula
La mayoría de las veces, la subconsulta se encontrará en la cláusula WHERE. Estas
subconsultas también se denominan subconsultas anidadas.
Por ejemplo:
SELECT *
FROM all_tables tabs
WHERE tabs.table_name IN (SELECT cols.table_name
FROM all_tab_columns cols
WHERE cols.column_name = 'SUPPLIER_ID');
Cláusula DE
También se puede encontrar una subconsulta en la cláusula FROM. Éstas se
denominan vistas en línea .
Por ejemplo:
Esta subconsulta tiene un alias con el nombre subquery1 . Este será el nombre
utilizado para hacer referencia a esta subconsulta o cualquiera de sus campos.
JOINS
Descripción
Oracle JOINS se utiliza para recuperar datos de varias tablas. Se realiza una JOIN de
Oracle siempre que se unen dos o más tablas en una declaración SQL.
Hay 4 tipos diferentes de uniones de Oracle:
Sintaxis
La sintaxis para INNER JOIN en Oracle/PLSQL es:
SELECT columns
FROM table1
INNER JOIN table2
ON table1.column = table2.column;
Ilustración visual
En este diagrama visual, Oracle INNER JOIN devuelve el área sombreada:
Oracle INNER JOIN devolvería los registros donde se cruzan la tabla1 y la tabla2 .
Ejemplo
Aquí hay un ejemplo de una UNIÓN INTERNA de Oracle:
Este ejemplo de Oracle INNER JOIN devolvería todas las filas de las tablas de
proveedores y pedidos donde hay un valor de id_proveedor coincidente en las tablas
de proveedores y pedidos.
Veamos algunos datos para explicar cómo funcionan las INNER JOINS:
Tenemos una tabla llamada proveedores con dos campos (id_proveedor y
nombre_proveedor). Contiene los siguientes datos:
supplier_id supplier_name
10000 IBM
10002 microsoft
10003 Nvidia
Tenemos otra tabla llamada pedidos con tres campos (id_pedido, id_proveedor y
fecha_pedido). Contiene los siguientes datos:
order_id supplier_id order_date
Sintaxis antigua
Como nota final, vale la pena mencionar que el ejemplo anterior de Oracle INNER
JOIN podría reescribirse usando la sintaxis implícita anterior de la siguiente manera
(pero aún recomendamos usar la sintaxis de palabra clave INNER JOIN):
Sintaxis
La sintaxis para Oracle LEFT OUTER JOIN es:
SELECT columns
FROM table1
LEFT [OUTER] JOIN table2
ON table1.column = table2.column;
En algunas bases de datos, las palabras clave LEFT OUTER JOIN se reemplazan por
LEFT JOIN.
Ilustración visual
En este diagrama visual, Oracle LEFT OUTER JOIN devuelve el área sombreada:
Oracle LEFT OUTER JOIN devolvería todos los registros de la tabla1 y solo aquellos
registros de la tabla2 que se cruzan con la tabla1 .
Ejemplo
A continuación se muestra un ejemplo de UNIÓN EXTERNA IZQUIERDA de Oracle:
Este ejemplo de LEFT OUTER JOIN devolvería todas las filas de la tabla de
proveedores y solo aquellas filas de la tabla de pedidos donde los campos unidos son
iguales.
Si un valor de id_proveedor en la tabla de proveedores no existe en la tabla de
pedidos, todos los campos de la tabla de pedidos se mostrarán como <nulo> en el
conjunto de resultados.
Veamos algunos datos para explicar cómo funcionan las UNIONES EXTERNAS
IZQUIERDAS:
Tenemos una tabla llamada proveedores con dos campos (id_proveedor y
nombre_proveedor). Contiene los siguientes datos:
supplier_id supplier_name
10000 IBM
10002 microsoft
10003 Nvidia
Tenemos una segunda tabla llamada pedidos con tres campos (id_pedido,
id_proveedor y fecha_pedido). Contiene los siguientes datos:
Las filas para Microsoft y NVIDIA se incluirían porque se utilizó una UNIÓN EXTERNA
IZQUIERDA. Sin embargo, notará que el campo fecha_pedido para esos registros
contiene un valor <nulo>.
Sintaxis antigua
Como nota final, vale la pena mencionar que el ejemplo anterior de LEFT OUTER
JOIN podría reescribirse usando la sintaxis implícita más antigua que utiliza el
operador de unión externa (+) de la siguiente manera (pero aun así recomendamos
usar la sintaxis de la palabra clave LEFT OUTER JOIN):
Sintaxis
La sintaxis de Oracle RIGHT OUTER JOIN es:
SELECT columns
FROM table1
RIGHT [OUTER] JOIN table2
ON table1.column = table2.column;
En algunas bases de datos, las palabras clave RIGHT OUTER JOIN se reemplazan
por RIGHT JOIN.
Ilustración visual
En este diagrama visual, Oracle RIGHT OUTER JOIN devuelve el área sombreada:
Oracle RIGHT OUTER JOIN devolvería todos los registros de la tabla2 y solo aquellos
registros de la tabla1 que se cruzan con la tabla2 .
Ejemplo
Aquí hay un ejemplo de una UNIÓN EXTERNA DERECHA de Oracle:
Este ejemplo de RIGHT OUTER JOIN devolvería todas las filas de la tabla de pedidos
y solo aquellas filas de la tabla de proveedores donde los campos unidos son iguales.
Si un valor de id_proveedor en la tabla de pedidos no existe en la tabla de
proveedores, todos los campos de la tabla de proveedores se mostrarán como
<nulo> en el conjunto de resultados.
Veamos algunos datos para explicar cómo funcionan las UNIONES EXTERNAS
DERECHAS:
Tenemos una tabla llamada proveedores con dos campos (id_proveedor y
nombre_proveedor). Contiene los siguientes datos:
supplier_id supplier_name
10000 Manzana
10001 Google
Tenemos una segunda tabla llamada pedidos con tres campos (id_pedido,
id_proveedor y fecha_pedido). Contiene los siguientes datos:
order_id supplier_id order_date
La fila para 500127 (order_id) se incluiría porque se utilizó una UNIÓN EXTERIOR
DERECHA. Sin embargo, notará que el campo nombre_proveedor de ese registro
contiene un valor <nulo>.
Sintaxis antigua
Como nota final, vale la pena mencionar que el ejemplo anterior de RIGHT OUTER
JOIN podría reescribirse usando la sintaxis implícita más antigua que utiliza el
operador de unión externa (+) de la siguiente manera (pero aun así recomendamos
usar la sintaxis de palabra clave RIGHT OUTER JOIN):
Sintaxis
La sintaxis para Oracle FULL OUTER JOIN es:
SELECT columns
FROM table1
FULL [OUTER] JOIN table2
ON table1.column = table2.column;
En algunas bases de datos, las palabras clave FULL OUTER JOIN se reemplazan por
FULL JOIN.
Ilustración visual
En este diagrama visual, Oracle FULL OUTER JOIN devuelve el área sombreada:
Oracle FULL OUTER JOIN devolvería todos los registros de la tabla1 y la tabla2 .
Ejemplo
Aquí hay un ejemplo de una UNIÓN EXTERNA COMPLETA de Oracle:
Este ejemplo de UNIÓN EXTERNA COMPLETA devolvería todas las filas de la tabla
de proveedores y todas las filas de la tabla de pedidos y siempre que no se cumpla la
condición de unión, <nulls> se extendería a esos campos en el conjunto de resultados.
Si un valor de id_proveedor en la tabla de proveedores no existe en la tabla de
pedidos, todos los campos de la tabla de pedidos se mostrarán como <nulo> en el
conjunto de resultados. Si un valor de id_proveedor en la tabla de pedidos no existe en
la tabla de proveedores, todos los campos de la tabla de proveedores se mostrarán
como <nulo> en el conjunto de resultados.
Veamos algunos datos para explicar cómo funcionan las UNIONES EXTERNAS
COMPLETAS:
Tenemos una tabla llamada proveedores con dos campos (id_proveedor y
nombre_proveedor). Contiene los siguientes datos:
supplier_id supplier_name
10000 IBM
10002 microsoft
10003 Nvidia
Tenemos una segunda tabla llamada pedidos con tres campos (id_pedido,
id_proveedor y fecha_pedido). Contiene los siguientes datos:
Las filas para Microsoft y NVIDIA se incluirían porque se utilizó una UNIÓN EXTERNA
COMPLETA. Sin embargo, notará que el campo fecha_pedido para esos registros
contiene un valor <nulo>.
La fila para id_proveedor 10004 también se incluiría porque se utilizó una UNIÓN
EXTERNA COMPLETA. Sin embargo, notará que los campos id_proveedor y
nombre_proveedor de esos registros contienen un valor <nulo>.
Sintaxis antigua
Como nota final, vale la pena mencionar que el ejemplo de FULL OUTER JOIN
anterior no podría haberse escrito en la sintaxis anterior sin utilizar una consulta
UNION .
OPERADORES SQL
Operador Ejemplo Descripción Sintaxis
(FEDERAL_REVENUE +
+ LOCAL_REVENUE) - Signo más para sumar. +
TOTAL_EXPENDITURE
%
Porcentaje %
Concatenación de cadenas
|| STATE||CAST(YEAR AS CHAR(4)) ||
de caracteres.
( (FEDERAL_REVENUE +
LOCAL_REVENUE) -
TOTAL_EXPENDITURE Paréntesis de apertura. (
(FEDERAL_REVENUE +
)
LOCAL_REVENUE) -
TOTAL_EXPENDITURE Paréntesis de cierre. )
FUNCION DECODE
Sintaxis
La función tiene tres parámetros obligatorios. Los dos primeros se comparan y, si son
iguales, se devuelve ‘resultado_si_igualB’; si no son iguales, se devuelve NULL.
Esta función puede crecer tanto como se necesite. Por ejemplo, si queremos que, en
caso de que no sean iguales, devuelva un valor en concreto, usamos:
DECODE(expresión, expresiónB, resultado_si_igualB, resultado_si_no_igualB);
De igual manera se puede continuar comparando «expresión» con otros resultados
en caso de no encontrar igualdades. Dividimos en varias lineas para hacer más legible
la sintaxis.
DECODE(expresión,
expresiónB, resultado_si_igualB,
expresiónC, resultado_si_igualC,
expresiónD, resultado_si_igualD,
resultado_si_ninguno_igual);
Ejemplo:
SELECT DECODE(343,344,'Igual') from dual;
Esta consulta devuelve NULL.
Fuente: https://www.techonthenet.com/oracle/index.php