CodeGym /Cursos /SQL SELF /Operadores lógicos (AND, OR, NOT): combinando condiciones...

Operadores lógicos (AND, OR, NOT): combinando condiciones

SQL SELF
Nivel 2, Lección 2
Disponible

Los operadores lógicos son herramientas que te ayudan a unir condiciones en las consultas para filtrar datos de forma más compleja. Seguro que ya te los has encontrado en otros lenguajes de programación. Si comparamos las consultas con un programa de filtro de spam en tu correo, los operadores lógicos serían como las reglas que deciden si un correo va a la carpeta de "Spam" o se queda en "Bandeja de entrada".

SQL es una herramienta que se usa mucho para seleccionar o analizar datos. Los operadores lógicos (AND, OR, NOT) te permiten combinar varias condiciones en una sola consulta para responder preguntas más complejas, como:

  • ¿Qué estudiantes tienen más de 18 años y tienen una nota "A"?
  • ¿Qué productos pertenecen a la categoría "Electrónica" o "Electrodomésticos"?
  • ¿Qué clientes no han hecho compras?

Vamos a ver los tres operadores lógicos principales en SQL:

  1. AND: ambas condiciones tienen que ser verdaderas.
  2. OR: al menos una de las condiciones tiene que ser verdadera.
  3. NOT: invierte (niega) la condición.

Operador AND: ambas condiciones son verdaderas

El operador AND te permite decir que las dos partes de la condición tienen que cumplirse para que la fila salga en el resultado.

Sintaxis

SELECT columna1, columna2
FROM tabla
WHERE condicion AND condicion2;

Ejemplo 1: Filtrar estudiantes mayores de 18 años y con nota "A"

Supón que tenemos una tabla students:

id name age grade
1 Alex 20 A
2 Maria 19 B
3 Otto 17 A
4 Anna 22 A

Consulta:

SELECT name, age, grade
FROM students
WHERE age > 18 AND grade = 'A';

Resultado:

name age grade
Alex 20 A
Anna 22 A

Ejemplo 2: Filtrar empleados del departamento "HR" y con salario mayor de 50000

SELECT name, department, salary
FROM employees
WHERE department = 'HR' AND salary > 50000;

Operador OR: al menos una condición es verdadera

El operador OR se usa cuando quieres seleccionar filas que cumplen al menos una de las condiciones.

Sintaxis

SELECT columna1, columna2
FROM tabla
WHERE condicion OR condicion2;

Ejemplo 1: Filtrar estudiantes con nota "A" o "B"

SELECT name, age, grade
FROM students
WHERE grade = 'A' OR grade = 'B';

Resultado:

name age grade
Alex 20 A
Maria 19 B
Otto 17 A
Anna 22 A

Ejemplo 2: Productos de la categoría "Electrónica" o con precio menor de 100

Tabla products:

product_id name category price
1 Televisor Electrónica 300
2 Plancha Electrodomésticos 50
3 Smartphone Electrónica 700
4 Hervidor Electrodomésticos 80
SELECT name, category, price
FROM products
WHERE category = 'Electrónica' OR price < 100;

Resultado:

name category price
Televisor Electrónica 300
Plancha Electrodomésticos 50
Hervidor Electrodomésticos 80
Smartphone Electrónica 700

Operador NOT: invertir la condición

Si AND y OR ponen condiciones que deben ser verdaderas, NOT hace justo lo contrario: selecciona las filas donde la condición indicada es falsa.

Sintaxis

SELECT columna1, columna2
FROM tabla
WHERE NOT condicion;

Ejemplo 1: Filtrar estudiantes que no tienen nota "A"

SELECT name, age, grade
FROM students
WHERE NOT grade = 'A';

Resultado:

name age grade
Maria 19 B

Ejemplo 2: Seleccionar productos que no pertenecen a la categoría "Electrónica"

SELECT name, category, price
FROM products
WHERE NOT category = 'Electrónica';

Combinando operadores lógicos

Puedes combinar operadores lógicos para crear condiciones aún más complejas. Por ejemplo, si quieres seleccionar estudiantes mayores de 18 años y con nota "A" o "B", puedes combinar AND y OR.

Sintaxis combinada

SELECT columna1, columna2
FROM tabla
WHERE (condicion1 AND condicion2) OR condicion3;

Ejemplo: Estudiantes mayores de 18 años con nota "A" o estudiantes con nota "B"

SELECT name, age, grade
FROM students
WHERE (age > 18 AND grade = 'A') OR grade = 'B';

Resultado:

name age grade
Alex 20 A
Anna 22 A
Maria 19 B

Prioridad de ejecución de los operadores

Es importante recordar que SQL ejecuta los operadores lógicos en este orden:

  1. NOT
  2. AND
  3. OR

Puedes usar paréntesis para cambiar el orden de ejecución. ¡Sin paréntesis el resultado puede ser inesperado!

Ejemplo: Comparación con y sin paréntesis

¿Qué pasa en esta consulta?

SELECT name, age, grade
FROM students
WHERE age > 18 AND grade = 'A' OR grade = 'B';

Esta consulta selecciona estudiantes:

  1. Que tienen más de 18 años y nota "A".
  2. Que tienen nota "B".

La prioridad de los operadores da el mismo resultado que si usas paréntesis así:

SELECT name, age, grade
FROM students
WHERE (age > 18 AND grade = 'A') OR (grade = 'B');

Pero si pones los paréntesis así:

SELECT name, age, grade
FROM students
WHERE age > 18 AND (grade = 'A' OR grade = 'B');

Ahora se seleccionan estudiantes mayores de 18 años con nota "A" o "B". ¡Los paréntesis de verdad lo cambian todo!

Errores típicos al usar operadores lógicos

  1. Olvidar los paréntesis. Esto puede dar resultados inesperados, sobre todo al combinar AND y OR.
  2. Usar NOT sin tener claro qué filas se excluyen.
  3. Usar mal los operadores lógicos. Por ejemplo, AND en vez de OR o al revés.
  4. Condiciones demasiado largas. Condiciones muy largas con varios AND, OR, NOT sin comentarios pueden ser difíciles de leer.

Estos operadores son la base de cualquier consulta compleja. ¡Ahora ya puedes escribir consultas que no solo funcionan, sino que encuentran justo lo que necesitas!

2
Tarea
SQL SELF, nivel 2, lección 2
Bloqueada
Uso del operador `AND` para filtrar datos
Uso del operador `AND` para filtrar datos
2
Tarea
SQL SELF, nivel 2, lección 2
Bloqueada
Uso del operador `OR` para filtrar datos
Uso del operador `OR` para filtrar datos
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION