Documento - Capacitacion - SQL - Oracle

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 26

DATABASE ORACLE / PLSQL

• SESSION 1 y 2

SENTENCIA DDL(LENGUAJE DE DEFINICION DE DATOS): CREACION DE


TABLAS Y DEFINICION DE ATRIBUTOS

TIPOS DE DATOS

Descripción Tipos Estándar SQL Oracle SQL

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

Enteros largos BIGINT

(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

Fecha y hora TIMESTAMP TIMESTAMP

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

Referencia a fila ROWID

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

SENTANCIA DML (LENGUAJE DE MANIPULACION DE DATOS)


TRUNCATE
Scrip se utiliza para eliminar todo el registro de una tabla, pero la estructura de la tabla
y sus columnas, restricciones, índices, etc. Permanecen intactas (similar a un delete)

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

INSERT A PARTIR UNA CONSULTA


Scrip se utiliza para registrar registro masivo para ello debe cumplir la misma
estructura definida de la tabla destino.
SELECT INTO
Scrip se utiliza para seleccionar datos de una tabla y copiarlos en otra tabla diferente.
Se suele utilizar para hacer una copia de seguridad (backup) de los datos de una
tabla.
También se utiliza para insertar un determinado registro a una variable definida como
se muestra en la imagen.

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];

La sintaxis de la instrucción UPDATE de Oracle al actualizar una tabla con datos de


otra tabla es:

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:

SELECT expression1, expression2, ... expression_n,


aggregate_function (aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, ... expression_n;

Ejemplo: uso de la función SUMA


Veamos un ejemplo de consulta GROUP BY de Oracle que utiliza la función SUMA.
Este ejemplo de Oracle GROUP BY utiliza la función SUM para devolver el nombre del
producto y las ventas totales (para el producto).

SELECT product, SUM(sale) AS "Total sales"


FROM order_details
GROUP BY product;

Debido a que ha incluido una columna (el campo de producto) en su declaración


SELECT que no está encapsulada en la función SUM, debe usar la cláusula GROUP
BY. Por lo tanto, el campo del producto debe aparecer en la cláusula GROUP BY.

Ejemplo: uso de la función CONTAR


Veamos cómo podríamos usar la cláusula GROUP BY con la función COUNT .
Este ejemplo GROUP BY utiliza la función COUNT para devolver la categoría y la
cantidad de proveedores (en esa categoría) que tienen más de 45
productos_disponibles.

SELECT category, COUNT(*) AS "Number of suppliers"


FROM suppliers
WHERE available_products > 45
GROUP BY category;

Ejemplo: uso de la función MIN


Veamos a continuación cómo podríamos usar la cláusula GROUP BY con la función
MIN .
Este ejemplo de GROUP BY utiliza la función MIN para devolver el nombre de cada
departamento y el salario mínimo en el departamento.

SELECT department, MIN(salary) AS "Lowest salary"


FROM employees
GROUP BY department;

Ejemplo: uso de la función MAX


Finalmente, veamos cómo podríamos usar la cláusula GROUP BY con la función
MAX .
Este ejemplo de GROUP BY utiliza la función MAX para devolver el nombre de cada
departamento y el salario máximo en el departamento.
SELECT department, MAX(salary) AS "Highest salary"
FROM employees
GROUP BY department;

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:

SELECT expression1, expression2, ... expression_n,


aggregate_function (aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, ... expression_n
HAVING having_condition;

Ejemplo: uso de la función SUMA


Veamos un ejemplo de cláusula HAVING de Oracle que utiliza la función SUMA.
También puede utilizar la función SUMA para devolver el nombre del departamento y
las ventas totales (en el departamento asociado). La cláusula HAVING de Oracle
filtrará los resultados para que solo se devuelvan los departamentos con ventas
superiores a $25 000.

SELECT department, SUM(sales) AS "Total sales"


FROM order_details
GROUP BY department
HAVING SUM(sales) > 25000;
UNION

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 expression1, expression2, ... expression_n


FROM tables
[WHERE conditions]
UNION
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

Ejemplo: devuelve un solo campo


El siguiente es un ejemplo del operador UNION de Oracle que devuelve un campo de
múltiples declaraciones SELECT (y ambos campos tienen el mismo tipo de datos):

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:

SELECT expression1, expression2, ... expression_n


FROM tables
[WHERE conditions]
UNION ALL
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

Ejemplo: uso de ORDENAR POR


El operador Oracle UNION ALL puede utilizar la cláusula ORDER BY de Oracle para
ordenar los resultados de la consulta .
Por ejemplo:

SELECT supplier_id, supplier_name


FROM suppliers
WHERE state = 'California'
UNION ALL
SELECT company_id, company_name
FROM companies
WHERE company_id > 1000
ORDER BY 2;
SUBCONSULTAS

¿Qué es una subconsulta en Oracle?


En Oracle, una subconsulta es una consulta dentro de una consulta. Puede crear
subconsultas dentro de sus declaraciones SQL. Estas subconsultas pueden residir en
la cláusula WHERE, la cláusula FROM o la cláusula SELECT.

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');

Limitación: Oracle permite hasta 255 niveles de subconsultas en la cláusula WHERE.

Cláusula DE
También se puede encontrar una subconsulta en la cláusula FROM. Éstas se
denominan vistas en línea .
Por ejemplo:

SELECT suppliers.name, subquery1.total_amt


FROM suppliers,
(SELECT supplier_id, SUM(orders.amount) AS total_amt
FROM orders
GROUP BY supplier_id) subquery1
WHERE subquery1.supplier_id = suppliers.supplier_id;

En este ejemplo, hemos creado una subconsulta en la cláusula FROM de la siguiente


manera:

(SELECT supplier_id, SUM(orders.amount) AS total_amt


FROM orders
GROUP BY supplier_id) subquery1

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:

• Oracle INNER JOIN (o a veces llamado unión simple)


• Oracle LEFT OUTER JOIN (o a veces llamado LEFT JOIN)
• Oracle DERECHA UNIÓN EXTERNA (o a veces llamada RIGHT JOIN)
• Oracle FULL OUTER JOIN (o a veces llamado FULL JOIN)

Entonces, analicemos la sintaxis de Oracle JOIN, veamos ilustraciones visuales de


Oracle JOINS y exploremos ejemplos de Oracle JOIN.

INNER JOIN (simple join)


Lo más probable es que ya haya escrito una declaración que utilice Oracle INNER
JOIN. Es el tipo de unión más común. Oracle INNER JOINS devuelve todas las filas de
varias tablas donde se cumple la condición de unión.

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:

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date


FROM suppliers
INNER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

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

10001 Hewlett Packard

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

500125 10000 2003/05/12

500126 10001 2003/05/13

500127 10004 2003/05/14

Si ejecutamos la declaración SELECT de Oracle (que contiene una INNER JOIN) a


continuación:

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date


FROM suppliers
INNER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Nuestro conjunto de resultados se vería así:

supplier_id name order_date

10000 IBM 2003/05/12

10001 Hewlett Packard 2003/05/13

Se omitirían las filas de Microsoft y NVIDIA de la tabla de proveedores, ya que los


valores 10002 y 10003 de id_proveedor no existen en ambas tablas. La fila para
500127 (order_id) de la tabla de pedidos se omitiría, ya que el proveedor_id 10004 no
existe en la tabla de proveedores.

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):

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date


FROM suppliers, orders
WHERE suppliers.supplier_id = orders.supplier_id;
LEFT OUTER JOIN
Otro tipo de unión se llama UNIÓN EXTERNA IZQUIERDA de Oracle. Este tipo de
unión devuelve todas las filas de la tabla IZQUIERDA especificada en la condición ON
y solo aquellas filas de la otra tabla donde los campos unidos son iguales (se cumple
la condición de unión).

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:

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date


FROM suppliers
LEFT OUTER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

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

10001 Hewlett Packard

10002 microsoft

10003 Nvidia

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

500125 10000 2003/05/12

500126 10001 2003/05/13

Si ejecutamos la instrucción SELECT (que contiene una UNIÓN EXTERNA


IZQUIERDA) a continuación:

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date


FROM suppliers
LEFT OUTER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Nuestro conjunto de resultados se vería así:

supplier_id supplier_name order_date

10000 IBM 2003/05/12

10001 Hewlett Packard 2003/05/13


supplier_id supplier_name order_date

10002 microsoft <nulo>

10003 Nvidia <nulo>

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):

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date


FROM suppliers, orders
WHERE suppliers.supplier_id = orders.supplier_id(+);

RIGHT OUTER JOIN


Otro tipo de unión se llama UNIÓN EXTERIOR DERECHA de Oracle. Este tipo de
unión devuelve todas las filas de la tabla DERECHA especificada en la condición ON
y solo aquellas filas de la otra tabla donde los campos unidos son iguales (se cumple
la condición de unión).

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:

SELECT orders.order_id, orders.order_date, suppliers.supplier_name


FROM suppliers
RIGHT OUTER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

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

500125 10000 2013/08/12

500126 10001 2013/08/13

500127 10002 2013/08/14

Si ejecutamos la instrucción SELECT (que contiene una UNIÓN EXTERNA


DERECHA) a continuación:

SELECT orders.order_id, orders.order_date, suppliers.supplier_name


FROM suppliers
RIGHT OUTER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Nuestro conjunto de resultados se vería así:

order_id order_date supplier_name

500125 2013/08/12 Manzana

500126 2013/08/13 Google

500127 2013/08/14 <nulo>

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):

SELECT orders.order_id, orders.order_date, suppliers.supplier_name


FROM suppliers, orders
WHERE suppliers.supplier_id(+) = orders.supplier_id;
FULL OUTER JOIN
Otro tipo de unión se llama UNIÓN EXTERNA COMPLETA de Oracle. Este tipo de
combinación devuelve todas las filas de la tabla IZQUIERDA y de la tabla DERECHA
con valores nulos donde no se cumple la condición de combinación.

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:

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date


FROM suppliers
FULL OUTER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

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

10001 Hewlett Packard

10002 microsoft

10003 Nvidia

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

500125 10000 2013/08/12

500126 10001 2013/08/13

500127 10004 2013/08/14

Si ejecutamos la instrucción SELECT (que contiene una UNIÓN EXTERNA


COMPLETA) a continuación:

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date


FROM suppliers
FULL OUTER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Nuestro conjunto de resultados se vería así:


supplier_id supplier_name order_date

10000 IBM 2013/08/12

10001 Hewlett Packard 2013/08/13

10002 microsoft <nulo>

10003 Nvidia <nulo>

<nulo> <nulo> 2013/08/14

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

BETWEEN Determina si un valor está BETWEEN


"COSTS"."UNIT_COST" BETWEEN entre dos límites no [LowerBound] AND
100.0 AND 5000.0 inclusivos. [UpperBound]
Determina si un valor está
IN presente en un juego de IN ([Comma Separated
"COSTS"."UNIT_COST" IN(200, 600, 'A') valores. List])
Determina si un valor es
IS NULL
"PRODUCTS"."PROD_NAME" IS NULL nulo. IS NULL
Determina si un valor
coincide con toda una
cadena o con parte de ésta.
Se suele utilizar con
caracteres comodín para
"PRODUCTS"."PROD_NAME" LIKE
LIKE indicar cualquier
'prod%'
coincidencia de cadenas de
caracteres de cero o varios
caracteres (%) o cualquier
coincidencia de carácter
único (_). LIKE

(FEDERAL_REVENUE +
+ LOCAL_REVENUE) - Signo más para sumar. +
TOTAL_EXPENDITURE

SUPPORT_SERVICES_EXPENDITURE Signo de multiplicación para


*oX
* 1.5 multiplicar.
*o X
Signo de división para
/ CAPITAL_OUTLAY_EXPENDITURE/1.05 /
dividir.

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

Signo mayor que: indica los


>
YEAR > 2000 and YEAR < 2016 and valores mayores que la
YEAR <> 2013 comparación. >
< Signo menor que: indica los
YEAR > 2000 and YEAR < 2016 and valores inferiores a la
YEAR <> 2013 comparación <
= Signo igual: indica el mismo
valor.
Signo mayor que o igual:
>= indica los valores que son
iguales o mayores que la
comparación.
Signo menor que o igual:
<= indica los valores que son
iguales o inferiores a la
comparación.
Distinto de, indica los
<> YEAR > 2000 and YEAR < 2016 and valores que son superiores o
YEAR <> 2013 inferiores, pero diferentes.
Coma: signo que se utiliza
para separar elementos en
‘ STATE in ('ALABAMA','CALIFORNIA') una lista.

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.

DECODE(expresión, expresiónB, resultado_si_igualB);

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

También podría gustarte