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:
Operador | Función |
---|---|
and | condicion_1 and condicion_2 – se cumplen las dos condiciones |
or | condicion_1 or condicion_2 – se cumple cualquiera de las dos condiciones |
not | not 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%';
Lenguaje del código: JavaScript (javascript)
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%';
Lenguaje del código: JavaScript (javascript)
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%';
Lenguaje del código: JavaScript (javascript)
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%';
Lenguaje del código: JavaScript (javascript)
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%');
Lenguaje del código: JavaScript (javascript)
¿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%');
Lenguaje del código: JavaScript (javascript)