InicioBase de datosConsultas de datos en MySQL usando subconsultas

Consultas de datos en MySQL usando subconsultas

Advertisement

MySQL es un sistema de gestión de bases de datos relacionales (RDBMS) popular y ampliamente utilizado en varios sectores. Diseñado para almacenar, procesar y administrar datos desde pequeñas hasta grandes escalas, MySQL es la mejor opción en el desarrollo de aplicaciones web, sistemas de información y plataformas de comercio electrónico. Uno de los comandos básicos más importantes es la instrucción SELECT, que recupera o muestra datos de una o más tablas de una base de datos.

Advertisement
script mysql

¿Qué es un SELECT Statement?

SELECT Statement es un comando SQL básico que se utiliza para recuperar datos de una o más tablas en una base de datos MySQL. Con este comando, los usuarios pueden mostrar los datos según sea necesario, ya sea seleccionando una columna específica o recuperando todo el contenido de la tabla.

El objetivo principal del SELECT Statement es proporcionar comodidad a los usuarios para recuperar información de la base de datos de acuerdo con necesidades específicas, ya sea que se muestre una sola columna, varias columnas o datos completos de una tabla. Además, el SELECT Statement también se puede combinar con otros comandos como WHERE, ORDER BY y LIMIT para realizar filtros, ordenar o limitar el número de resultados mostrados.

Advertisement

Cómo usar SELECT Statement para capturar datos de una sola columna

SELECT Statement en SQL es un comando que se utiliza para recuperar datos de una columna específica de una tabla. La sintaxis básica para utilizar una instrucción SELECT es la siguiente:

Advertisement
SELECT column_name FROM table_name;

En esta sintaxis, SELECT es la función de seleccionar los datos que desea mostrar, column_name es la columna cuyos datos desea recuperar, FROM indica el origen de los datos y table_name es la tabla donde se encuentra la columna.

Por ejemplo, podemos recuperar datos de una columna llamada prod_name en la tabla products. Usando los siguientes SELECT Statement, podemos mostrar todos los datos de las prod_name columnas:

SELECT prod_name FROM products;

El resultado de este comando son todos los valores contenidos en la columna prod_name de la tabla products. Por ejemplo, si la tabla products tiene datos como este:

| prod_name     |
|---------------|
| 0.5 ton anvil |
| 1 ton anvil   |
| 2 ton anvil   |
| Oil can       |

Cómo usar SELECT Statement para capturar datos de varias columnas

Para recuperar datos de varias columnas en una tabla, el SELECT Statement nos permite nombrar varias columnas a la vez. De esta manera, podemos mostrar varias columnas de la misma tabla en una sola consulta sin tener que ejecutar el  comando SELECT  repetidamente.

Cuando queremos tomar varias columnas, solo necesitamos agregar los nombres de las columnas que queremos mostrar después de la palabra clave SELECT, separados por una coma (,). El nombre de la tabla que contiene esos datos se sigue especificando después de la palabra clave FROM.

La sintaxis para tomar varias columnas es la siguiente:

SELECT column_name1, column_name2, column_name3 FROM table_name;
  • SELECT: para seleccionar los datos que desea recuperar.
  • column_name1, column_name2, column_name3: la columna que desea mostrar, separada por una coma.
  • FROM: para indicar la tabla de la que se han extraído los datos.

Por ejemplo, esta es una consulta para recuperar datos de las  columnas prod_id, prod_name y prod_price  de la tabla products:

SELECT prod_id, prod_name, prod_price FROM products;

Si la tabla products contiene datos como este:

| prod_id | prod_name     | prod_price |
|---------|---------------|------------|
| ANV01   | 0.5 ton anvil | 5.99       |
| ANV02   | 1 ton anvil   | 9.99       |
| ANV03   | 2 ton anvil   | 14.99      |
| OL1     | Oil can       | 8.99       |

A continuación, los resultados de esta consulta mostrarán los datos de las columnas prod_id, prod_name y prod_price al mismo tiempo para que podamos ver el ID del producto, el nombre del producto y el precio en una sola vista.

Recuperar todas las columnas con SELECT Statement

Cuando queremos mostrar todas las columnas de una tabla, podemos usar el SELECT Statement con el símbolo comodín *. El  comodín *  nos permite recuperar todas las columnas sin tener que mencionarlas individualmente.

Sin embargo, aunque esto es práctico, el uso de  comodines *  debe realizarse con precaución, especialmente si la tabla tiene muchas columnas o si solo se necesitan unas pocas columnas. Recuperar todas las columnas sin motivo aparente puede ralentizar el rendimiento de las consultas, especialmente si los datos recuperados son muy grandes. Por lo tanto, es mejor usar el *  wildcard solo si todos los datos son necesarios.

Para recuperar todas las columnas de la tabla products, podemos usar la siguiente consulta:

SELECT * FROM products ;

Si la tabla products contiene datos como este:

| prod_id | prod_name     | prod_price | prod_vendor | stock_qty |
|---------|---------------|------------|-------------|-----------|
| ANV01   | 0.5 ton anvil | 5.99       | Vendor A    | 20        |
| ANV02   | 1 ton anvil   | 9.99       | Vendor A    | 15        |
| ANV03   | 2 ton anvil   | 14.99      | Vendor B    | 30        |
| OL1     | Oil can       | 8.99       | Vendor B    | 50        |

Luego, el resultado de este comando mostrará todas las columnas (prod_id, prod_name, prod_price, prod_vendor, stock_qty) de la tabla de productos.

Notas importantes

El uso de caracteres comodín* facilita la recuperación de todas las columnas de una sola consulta, pero puede reducir el rendimiento si la tabla recuperada tiene muchas columnas o datos muy grandes. Por lo tanto, si solo necesitamos unas pocas columnas específicas, es mejor mencionar los nombres de esas columnas directamente para mantener la consulta eficiente.

Limitar los resultados de la consulta con LIMIT

En SQL, el comando LIMIT sirve para limitar la cantidad de datos que se muestran en los resultados de la consulta. LIMIT es especialmente útil cuando solo queremos recuperar una cierta cantidad de datos de una tabla, como mostrar una muestra o solo los primeros datos de un resultado de consulta grande.

LIMIT se utiliza mencionando la cantidad deseada de datos después de la palabra clave. Cuando LIMIT va seguido de un solo número, MySQL recuperará varias filas de datos que van desde la primera fila hasta el número especificado.

En el ejemplo siguiente se muestra cómo usar LIMIT para recuperar los primeros 5 datos de la columna prod_name de la tabla products:

SELECT prod_name FROM products LIMIT 5;

A continuación, el resultado de esta consulta solo mostrará las primeras 5 filas:

| prod_name     |
|---------------|
| 0.5 ton anvil |
| 1 ton anvil   |
| 2 ton anvil   |
| Oil can       |
| Fuses         |

Uso de LIMIT y OFFSET en la captura de datos

Podemos limitar el número de filas recuperadas y también determinar de qué filas se recuperan los datos mediante el uso de OFFSET. En MySQL, OFFSET se escribe junto con LIMIT para determinar el punto de partida de la recuperación de datos. Ejemplos:

SELECT prod_name FROM products LIMIT 5 OFFSET 5;

Esta consulta recuperará 5 filas de datos, empezando por la 6ª fila.

También hay otras formas de escribir LIMIT OFFSET usando dos números después de LIMIT, como:

SELECT prod_name FROM products LIMIT 5, 5;

Esta escritura tiene el mismo significado, que es tomar 5 líneas comenzando desde la 6ª fila, donde el primer número (5) es OFFSET y el segundo número (5) es la cantidad de datos a tomar.

Beneficios de LIMIT y OFFSET

  • LIMIT sin OFFSET nos facilita la recuperación de algunos datos iniciales de los resultados de la consulta.
  • La combinación de LIMIT y OFFSET es particularmente útil para la configuración de datos en la aplicación, como las vistas de página (*paginación*), donde cada página requiere la misma cantidad de datos, pero comienza desde diferentes posiciones.

Captura de datos únicos con DISTINCT

En SQL, DISTINCT comandos se utilizan en el SELECT Statement para obtener datos sin duplicación. Si hay los mismos datos en una columna y solo queremos mostrar valores diferentes, DISTINCT asegura de que cada valor aparezca una vez en los resultados de la consulta.

DISTINCT se coloca después de la palabra clave SELECT y antes del nombre de la columna que desea recuperar. Este comando le dice a MySQL que muestre solo los datos únicos de esa columna y elimine las filas que tienen el mismo valor.

La sintaxis para usar DISTINCT es la siguiente:

SELECT DISTINCT column_name FROM table_name;
  • DISTINCT: indica a SQL que muestre valores únicos en las columnas especificadas.
  • column_name: el nombre de la columna de la que desea recuperar datos de forma única.
  • FROM: indica la tabla de la que se originaron los datos.

Por ejemplo, queremos obtener datos únicos de las vend_id columnas de la tabla products. Sin usar DISTINCT, si hay varios productos del mismo proveedor, cada ID de proveedor aparecerá varias veces en los resultados de la consulta. Con DISTINCT, podemos asegurarnos de que los resultados solo muestren una vez el ID de cada proveedor.

Algunos ejemplos son los siguientes:

SELECT DISTINCT vend_id FROM products;

Si la tabla de productos tiene datos como este:

| vend_id |
|---------|
| 1001    |
| 1001    |
| 1002    |
| 1003    |
| 1003    |
| 1003    |
| 1004    |

Los resultados de la consulta solo mostrarán el ID de proveedor único, por lo que se verá así:

| vend_id |
|---------|
| 1001    |
| 1002    |
| 1003    |
| 1004    |

Notas importantes

  • DISTINCT se aplica a la combinación de columnas seleccionadas en la consulta. Si se utiliza más de una columna con DISTINCT, SQL se asegurará de que la combinación de columnas sea única.
  • DISTINCT solo quita los duplicados de las columnas especificadas y no afecta a otras columnas de la tabla.

Uso de nombres de columna completos

El uso de fully qualified column names (en el formato table.column) en SQL tiene varias ventajas importantes, especialmente cuando se recuperan datos de tablas que pueden tener columnas con el mismo nombre.

Estas son algunas de las ventajas de usar nombres de columna completos:

  1. Con el formato table.column, se indica de qué tabla procede la columna. Esto es especialmente útil cuando se trabaja con varias tablas en una sola consulta, como cuando se realizan JOIN. Esta claridad reduce la confusión sobre a qué columna se hace referencia.
  2. Si hay dos o más tablas que tienen columnas con el mismo nombre, el uso de nombres de columna completos puede evitar conflictos. Por ejemplo, si tiene products y orders tablas que tienen prod_id columnas, puede usar products.prod_id y orders.prod_id para diferenciar entre las dos.
  3. Al incluir nombres de tabla en las referencias de columna, el código SQL se vuelve más fácil de entender y mantener por otros desarrolladores o por ellos mismos en el futuro. Esto ayuda en la documentación y el desarrollo continuos.

Conclusión

Aprender las sentencias SELECT en MySQL es esencial para gestionar los datos de forma adecuada y segura. Con la capacidad de recuperar datos específicos, la flexibilidad en la selección de columnas, el mantenimiento de la claridad y la mejora del rendimiento, puede mejorar la eficiencia y la calidad de sus proyectos. Seguir las prácticas recomendadas, como el uso de nombres de columna completos y un formato coherente, también es beneficioso para la documentación y la solución de problemas en el código SQL.

Artículos Recientes