Operadores lógicos en Oracle

En este artículo veremos los operadores lógicos en Oracle (and, or y not). Hasta ahora hemos visto cómo realizar consultas con condiciones gracias al where y los operadores relacionales y ahora utilizaremos los operadores lógicos para establecer condiciones más complejas.

Operadores lógicos

Utilizamos los operadores lógicos para establecer más de una condición en el where y conseguir así consultas mas complejas.

Tipos de operadores

Disponemos de tres operadores lógicos en Oracle:

OperadorFunción
andcondicion_1 and condicion_2 – se cumplen las dos condiciones
orcondicion_1 or condicion_2 – se cumple cualquiera de las dos condiciones
notnot condicion1 – no se cumple la condición

Operador lógico AND

Este operador se utiliza cuando queremos que se cumplan todas las condiciones. Observa este ejemplo como le indicamos que debe cumplir la condición de que el empleado sea igual a 1 y ademas el nombre debe empezar por Miguel:

select *
from empleados
where id_empleado = 1 and nombre like 'Miguel%';
Operadores lógicos en Oracle

Operador lógico OR

Utilizamos este operador cuando queremos que se cumpla cualquiera de las condiciones especificadas. Observa como en este ejemplo le indicamos que queremos todos los datos cuando el id_empleado es igual a 1 o que su nombre empiece por Ismael:

select *
from empleados
where id_empleado = 1 or nombre like 'Ismael%';

Operador lógico NOT

Utilizamos este operador cuando queremos que no se cumpla la condición. Observa como en este ejemplo le indicamos que nos muestre todos los datos de aquellos empleados que su nombre no empiece por Ismael:

select *
from empleados
where not nombre like 'Ismael%';

Uso de parentesis

Cuando se tienen más de dos condiciones se deben utilizar paréntesis para establecer el orden tal y como hacemos con las operaciones matemáticas. Dicho de otro modo, todo lo que engloba un paréntesis lo considerara una única expresión.

En el siguiente ejemplo tenemos tres condiciones; que el id_empleado sea igual a tres, que su sueldo sea igual a 80000 o que su nombre empiece por Ismael. Esto nos devolverá dos registros:

select *
from empleados
where id_empleado=3 and sueldo = 80000 or nombre like 'Ismael%';

Ahora mira este otro ejemplo donde tenemos las mismas condiciones, pero al incluir los paréntesis nos devuelve un resultado diferente:

select *
from empleados
where id_empleado=3 and (sueldo = 80000 or nombre like 'Ismael%');

¿Por qué no nos devuelve lo mismo? Muy fácil, en el ejemplo anterior le estamos indicando que obligatoriamente el id_empleado tiene que ser igual a tres y una vez evaluado esta condición, evalúa la que está dentro del paréntesis, es decir, que su sueldo sea 80000 o su nombre comience por Ismael. En este caso se cumple que el id_empleado es 3 y que su sueldo es igual a 80000.

Ejemplo completo

Copia y pega el siguiente código en tu consola de Oracle y realiza paso a paso leyendo los comentarios:

-- www.MiguelTroyano.com
-- Borramos la tabla si existe
drop table empleados;

-- Creamos la tabla
create table empleados
(
    id_empleado numeric(2,0),
    id_departamento numeric(2,0),
    nombre character varying(50),
    puesto character varying(50),
    fecha_alta date,
    sueldo integer
);

-- Insertamos valores
insert into empleados values (1,1,'Miguel Troyano','Analista',to_date('26/09/1986','DD/MM/YYYY'),60000);
insert into empleados values (2,1,'Ismael Troyano','Analista',to_date('01/01/2001','DD/MM/YYYY'),60000);
insert into empleados values (3,1,'Jose Troyano','Alta Dirección',to_date('01/01/2001','DD/MM/YYYY'),80000);
insert into empleados values (4,1,'Pilar Redondo','Alta Dirección',to_date('02/02/2002','DD/MM/YYYY'),80000);

-- Mostramos los empleados donde su id_empleado es uno
-- y su nombre comienza por Miguel
select *
from empleados
where id_empleado = 1 and nombre like 'Miguel%';

-- Mostramos los empleados donde su id_empleado es uno
-- o su nombre comienza por Ismael
select *
from empleados
where id_empleado = 1 or nombre like 'Ismael%';

-- Mostramos los empleados donde su id_empleado es tres
-- y su sueldo es 80000 o su nombre comienza por Ismael
select *
from empleados
where id_empleado=3 and sueldo = 80000 or nombre like 'Ismael%';

-- Mostramos los empleados donde su id_empleado es tres
-- y ademas, que su sueldo sea 80000 o su nombre comienza por Ismael
select *
from empleados
where id_empleado=3 and (sueldo = 80000 or nombre like 'Ismael%');

Escribir un comentario

Este sitio está protegido por reCAPTCHA y se aplican la política de privacidad y los términos de servicio de Google.