14th May 2024 Lectura de 8 minutos Operador SQL IN Radu Gheorghiu operador de SQL Índice Introducción al operador SQL IN Uso del operador IN de SQL Sintaxis del operador IN Uso del operador SQL NOT IN Uso de IN con SELECT Uso de NOT IN con SELECT Ejercicio: Desafío del Operador IN Ejemplos y casos de uso avanzados de IN Subconsultas Correlacionadas Manejo de grandes listas de valores Combinación de IN con otros operadores Ahora es el momento de practicar el uso de SQL IN ¿Por qué es necesario conocer el operador SQL IN? Descubre todo lo que puedes hacer con este pequeño pero potente operador. El operador IN es una herramienta fundamental en SQL, que permite a los analistas de datos y desarrolladores filtrar y recuperar subconjuntos específicos de datos de las bases de datos. Aunque su uso básico puede parecer sencillo, dominar los matices y las aplicaciones avanzadas del operador SQL IN puede mejorar enormemente sus habilidades SQL y conducir a consultas más potentes y optimizadas. En esta completa guía, profundizaremos en el operador SQL IN, cubriendo su sintaxis, casos de uso, consideraciones de rendimiento y mejores prácticas. Introducción al operador SQL IN El operador SQL IN se utiliza para comprobar si un valor coincide con cualquier valor de una lista o subconsulta especificada. Proporciona una forma concisa de combinar múltiples condiciones utilizando la lógica OR sin tener que escribir explícitamente cada condición por separado. Esto puede simplificar enormemente las consultas SQL y mejorar su legibilidad, especialmente cuando se trabaja con un gran número de condiciones. Si buscas un punto de partida para construir unas bases SQL sólidas, te recomiendo nuestro curso SQL para principiantes . Contiene 129 ejercicios prácticos para que puedas dominar el SQL fundamental y aumentar tu confianza. Si ya conoce los fundamentos de SQL, consulte nuestro curso Ejercicio de SQL : contiene más de 1.000 ejercicios que le ayudarán a perfeccionar sus habilidades. Uso del operador IN de SQL Uno de los casos de uso más comunes de SQL IN es comprobar si un valor coincide con cualquier valor de una lista. He aquí un ejemplo: SELECT * FROM employees WHERE department_id IN (10, 20, 30); En esta consulta, se utiliza el operador SQL IN para recuperar todas las filas de la tabla employees donde department_id es 10, 20 ó 30. Sintaxis del operador IN El operador SQL IN actúa como una abreviatura para múltiples condiciones OR en el mismo campo, haciendo la consulta más concisa y legible. Esta es la sintaxis básica: SELECT column1, column2, ... FROM table_name WHERE column_name IN (value1, value2, ...); Uso del operador SQL NOT IN El operador SQL NOT IN es lo contrario del operador SQL IN. Se utiliza para recuperar registros cuyo valor no coincide con ningún valor de la lista especificada. He aquí un ejemplo: SELECT * FROM products WHERE product_category NOT IN ('Electronics', 'Clothing'); Esta consulta recupera todas las filas de la tabla products en las que product_category no es "Electrónica" ni "Ropa". Uso de IN con SELECT El operador SQL IN también puede utilizarse junto con una subconsulta, que es una consulta anidada dentro de otra consulta. Esta potente combinación permite filtrar datos basándose en los resultados de otra consulta. He aquí un ejemplo: SELECT product_name, product_price FROM products WHERE product_id IN ( SELECT product_id FROM orders WHERE order_date >= '2023-01-01' ); En esta consulta, la subconsulta SELECT product_id FROM orders WHERE order_date >= '2023-01-01' recupera una lista de valores product_id para los pedidos realizados a partir del 1 de enero de 2023. A continuación, la consulta principal utiliza el operador IN para recuperar los valores product_name y product_price de todos los productos cuyo product_id se encuentra en la lista devuelta por la subconsulta. Éste es sólo un ejemplo de cómo puede utilizar una subconsulta en un operador IN. Existen numerosos tipos de subconsultas que se pueden escribir en SQL, pero para una mejor comprensión recomendamos echar un vistazo a más ejemplos de cómo utilizar una subconsulta. Uso de NOT IN con SELECT Al igual que en el ejemplo anterior, puede utilizar el operador NOT IN con una subconsulta para recuperar registros que no coincidan con los resultados de la subconsulta. He aquí un ejemplo: SELECT employee_name, department_name FROM employees WHERE department_id NOT IN (SELECT department_id FROM departments WHERE location = 'New York'); Esta consulta recupera el nombre_empleado y el nombre_departamento de todos los empleados que no están en departamentos situados en Nueva York. La subconsulta SELECT department_id FROM departments WHERE location = 'New York' recupera una lista de valores department_id para los departamentos situados en Nueva York. A continuación, la consulta principal utiliza el operador SQL NOT IN para excluir a los empleados cuyo department_id se encuentra en la lista devuelta por la subconsulta. Ejercicio: Desafío del Operador IN Ahora que hemos leído sobre las diferentes formas en que se puede utilizar el operador IN para resolver problemas complejos de SQL, es hora de practicar lo que hemos aprendido. Imagina que estás trabajando con una base de datos que almacena información sobre libros. La base de datos tiene una tabla llamada Books con las siguientes columnas BookID, Title, AuthorID, y GenreID. Hay otra tabla llamada Géneros con las columnas GenreID y GenreName. He aquí un ejemplo de algunas filas que contendrían estas tablas. La tabla Books tabla BookIDTitleAuthorIDGenreID 1The Hitchhiker's Guide to the Galaxy11 2Dune21 3The Lord of the Rings32 4The Da Vinci Code43 5Harry Potter and the Sorcerer’s Stone52 6The Girl on the Train63 7Pride and Prejudice74 La Genres tabla: GenreIDGenreName 1Science Fiction 2Fantasy 3Mystery 4Romance 5Non-Fiction Su reto consiste en escribir una consulta SQL que seleccione todos los títulos de libros que pertenezcan a los géneros "Ciencia Ficción", "Fantasía" o "Misterio". (Suponga que aún no conoce los valores de GenreID para estos géneros). Solución: SELECT Title FROM Books WHERE GenreID IN (SELECT GenreID FROM Genres WHERE GenreName = 'Science Fiction' OR GenreName = 'Fantasy' OR GenreName = 'Mystery'); Explicación: Seleccione los títulos de los libros de la tabla Books tabla. Filtre los resultados utilizando una cláusula WHERE con el operador IN para incluir sólo las filas en las que GenreID coincida con GenreID en la tabla de Genres para "Ciencia Ficción", "Fantasía" o "Misterio". También puede escribir una consulta que utilice dos operadores IN: SELECT Title FROM Books WHERE GenreID IN (SELECT GenreID FROM Genres WHERE GenreName IN ('Science Fiction','Fantasy','Mystery')); Resultado: Title The Hitchhiker's Guide to the Galaxy Dune The Lord of the Rings Harry Potter and the Sorcerer's Stone The Da Vinci Code The Girl on the Train Ejemplos y casos de uso avanzados de IN Aunque el uso básico del operador SQL IN es relativamente sencillo, su verdadera potencia reside en su capacidad para manejar escenarios complejos y casos de uso avanzados. Exploremos algunos de ellos: Subconsultas Correlacionadas Las subconsultas correlacionadas son subconsultas que hacen referencia a columnas de la consulta externa. Esto le permite filtrar datos basándose en criterios complejos que implican múltiples tablas y condiciones. He aquí un ejemplo: SELECT product_name, category_name FROM products p JOIN categories c ON p.category_id = c.category_id WHERE p.product_id IN (SELECT product_id FROM order_items oi WHERE oi.order_id IN (SELECT order_id FROM orders WHERE customer_id = 1001)); En esta consulta, la subconsulta más interna recupera los valores de order_id para un cliente específico. A continuación, la subconsulta intermedia utiliza esos valores de order_id para recuperar los valores de product_id correspondientes de la tabla order_items de la tabla. Por último, la consulta principal utiliza el operador SQL IN para recuperar los valores product_name y category_name de esos productos. Las subconsultas correlacionadas son sólo una de las formas avanzadas de utilizar el operador IN. Para conocer en profundidad todos los tipos de subconsultas recomendamos estos 15 ejercicios de práctica de subconsultas. Manejo de grandes listas de valores Cuando se trabaja con grandes listas de valores, utilizar una subconsulta o una tabla temporal puede ser más eficiente que listar todos los valores en la cláusula SQL IN. Esto puede mejorar el rendimiento de la consulta y reducir el riesgo de superar los límites de longitud impuestos por el sistema de gestión de bases de datos. He aquí un ejemplo: -- Create a temporary table with the desired values CREATE TEMPORARY TABLE temp_values (value INT); INSERT INTO temp_values (value) VALUES (10), (20), (30), ...; -- Use the temporary table with the SQL IN operator SELECT * FROM employees WHERE department_id IN (SELECT value FROM temp_values); En este ejemplo, se crea una tabla temporal temp_values y se rellena con los valores deseados. A continuación, la consulta principal utiliza una subconsulta para recuperar los valores de la tabla temporal y filtrar la tabla en consecuencia. employees tabla en consecuencia. Combinación de IN con otros operadores El operador IN puede combinarse con otros operadores SQL, como AND y OR, para crear condiciones de filtrado más complejas. Esto le permite manejar escenarios en los que necesita filtrar datos basándose en múltiples criterios que implican diferentes operadores. He aquí un ejemplo: SELECT * FROM orders WHERE order_date >= '2023-01-01' AND customer_id IN (SELECT customer_id FROM customers WHERE country = 'USA') AND total_amount > 1000; En esta consulta, IN se utiliza en combinación con AND para filtrar pedidos en función de la fecha de pedido, el país del cliente y el importe total. Ahora es el momento de practicar el uso de SQL IN El operador IN es una herramienta potente y versátil que puede simplificar enormemente sus tareas de análisis de datos e informes SQL. Al comprender su sintaxis, uso avanzado, consideraciones de rendimiento y mejores prácticas, puede aprovechar IN para filtrar y recuperar eficazmente los datos relevantes de sus bases de datos, garantizando al mismo tiempo un rendimiento y mantenimiento óptimos de las consultas. Gracias por leer nuestro artículo; esperamos que haya disfrutado conociendo las potentes funciones del operador IN de SQL. Si está empezando a utilizar SQL, consulte nuestro curso interactivo SQL para principiantes. Si es un usuario experimentado de SQL que busca práctica, consulte nuestro curso Ejercicio de SQL . ¡Feliz aprendizaje! Tags: operador de SQL