Consultas Comunes en SQL: Guía Esencial para Principiantes

  Advertencia

En esta sección, exploraremos consultas SQL que demuestran cómo seleccionar todos los campos de las tablas carros y fotocars. Al unir estas dos tablas, obtendremos tanto los detalles de los carros (como su marca, modelo, color, etc.) como las fotos asociadas a cada vehículo. Esto es especialmente útil en aplicaciones que requieren mostrar información detallada sobre productos, facilitando la gestión y visualización de datos.

Seleccionar Todos los Campos de Carros y sus Fotografías

Tabla: carros

bash
| id  | marca     | modelo     | año | color   |
|-----|-----------|------------|-----|---------|
| 1   | Toyota    | Corolla    | 2020| Rojo    |
| 2   | Honda     | Civic      | 2021| Azul    |
| 3   | Ford      | Fiesta     | 2019| Verde   |
| 4   | Chevrolet  | Onix       | 2022| Negro  |
| 5   | Nissan    | Sentra     | 2018| Blanco  |
| 6   | Kia       | Rio        | 2021| Amarillo|

Tabla: fotocars

bash
| id  | carro_id | url_foto                | descripcion                |
|-----|----------|-------------------------|----------------------------|
| 1   | 1        | /fotos/toyota_corolla.jpg| Foto del Toyota Corolla   |
| 2   | 2        | /fotos/honda_civic.jpg  | Foto del Honda Civic       |
| 3   | 3        | /fotos/ford_fiesta.jpg  | Foto del Ford Fiesta       |
| 4   | 4        | /fotos/chevrolet_onix.jpg| Foto del Chevrolet Onix   |
| 5   | 5        | /fotos/nissan_sentra.jpg | Foto del Nissan Sentra    |
| 6   | 6        | /fotos/kia_rio.jpg      | Foto del Kia Rio           |

Consulta SQL

sql
SELECT fotocars.*, carros.* FROM carros, fotocars  
WHERE carros.id = fotocars.carro_id 
AND carros.id = '5';
  Descripción de la Consulta

Esta consulta selecciona todos los campos de ambas tablas (carros y fotocars) donde el id del carro es igual a 5, proporcionando información completa sobre el carro y su fotografía asociada.

Obtener el Primer Registro de la Tabla carros

Para obtener el primer registro de la tabla carros, puedes usar la cláusula LIMIT

Opción 1: Usando LIMIT

sql
SELECT * 
FROM carros 
LIMIT 1;
  Descripción de la Consulta

  • La sentencia SELECT * indica que queremos seleccionar todos los campos de la tabla usuarios.
  • La cláusula LIMIT 1 se usa para restringir el resultado a solo el primer registro que se encuentra en la tabla.

Resultado:

bash
| id  | marca     | modelo     | año | color   |
|-----|-----------|------------|-----|---------|
| 1   | Toyota    | Corolla    | 2020| Rojo    |

Opción 2: Usando MIN

Otra manera de obtener el primer registro, basado en el id más bajo, es utilizar la función MIN.

sql
SELECT * 
FROM carros 
WHERE id = (SELECT MIN(id) FROM carros);

Usando: ORDER BY y LIMIT

sql
SELECT * 
FROM carros 
ORDER BY id ASC 
LIMIT 1;

Obtener el Último Registro de la Tabla carros

Para obtener el último registro de la tabla carros, puedes usar la cláusula ORDER BY en combinación con LIMIT.

Opción 1: Usando LIMIT 1

sql
SELECT * 
FROM carros 
ORDER BY id DESC 
LIMIT 1;
  Descripción de la Consulta

  • La sentencia SELECT * indica que queremos seleccionar todos los campos de la tabla carros.
  • La cláusula ORDER BY id DESC ordena los registros en orden descendente, lo que coloca el último registro al principio.
  • La cláusula LIMIT 1 se usa para restringir el resultado a solo el primer registro de la lista ordenada.

Resultado:

bash
| id  | marca     | modelo     | año | color   |
|-----|-----------|------------|-----|---------|
| 6   | Kia       | Rio        | 2021| Amarillo|

Opción 2: Usando MAX

Para obtener el último registro de la tabla carros utilizando la función MAX, puedes hacerlo de la siguiente manera. Generalmente, se utiliza MAX en una columna que tiene valores únicos, como el id.

sql
SELECT * 
FROM carros 
WHERE id = (SELECT MAX(id) FROM carros);
  Descripción de la Consulta

  • SELECT *: Selecciona todos los campos de la tabla carros.
  • WHERE id = (SELECT MAX(id) FROM carros): Esta subconsulta obtiene el valor máximo del id, que corresponde al último registro de la tabla.

  Nota

Utilizar MAX en este contexto es útil cuando los identificadores son numéricos y se asume que el mayor id corresponde al último registro insertado.

Uso de las Funciones MAX y MIN en la Tabla carros

Las funciones MAX y MIN se utilizan para obtener el valor máximo y mínimo de una columna específica en una tabla. En el caso de la tabla carros, podemos utilizarlas para encontrar el año más reciente y el más antiguo de los carros registrados.

Obtener el Año Máximo

Para obtener el año más reciente de la tabla carros, se utiliza la función MAX.

sql
SELECT MAX(año) AS Año_Maximo 
FROM carros;
  Descripción de la Consulta

  • La función MAX(año) devuelve el año más alto registrado en la columna año de la tabla carros.
  • Se utiliza AS Año_Maximo para dar un nombre más claro a la columna del resultado.

Resultado

bash
| Año_Maximo |
|------------|
| 2022       |

Obtener el Año Mínimo

Para obtener el año más antiguo de la tabla carros, se utiliza la función MIN.

sql
SELECT MIN(año) AS Año_Minimo 
FROM carros;
  Descripción de la Consulta

  • La función MIN(año) devuelve el año más bajo registrado en la columna año de la tabla carros.
  • Se utiliza AS Año_Minimo para dar un nombre más claro a la columna del resultado.

Resultado

bash
| Año_Minimo |
|------------|
| 2018       |

Obtener el Segundo Registro de la Tabla carros

Para obtener el segundo registro de la tabla carros, puedes usar la cláusula LIMIT junto con OFFSET. Aquí hay un ejemplo de cómo hacerlo:

Opción 1: Usando OFFSET

sql
SELECT * 
FROM carros 
LIMIT 1 OFFSET 1;
  Descripción de la Consulta

  • SELECT *: Indica que queremos seleccionar todos los campos de la tabla carros.
  • LIMIT 1: Restringe el resultado a un solo registro.
  • OFFSET 1: Indica que queremos omitir el primer registro y obtener el siguiente, que es el segundo.

El resultado de la consulta sería:

bash
| id  | marca     | modelo     | año | color   |
|-----|-----------|------------|-----|---------|
| 2   | Honda     | Civic      | 2021| Azul    |

Opción 2: Usando LIMIT 1, 1

LIMIT 1, 1 también funcionaría para obtener el segundo registro de la tabla carros. La sintaxis de LIMIT puede recibir dos argumentos:

  Descripción de la Consulta

  • El primer argumento indica el número de registros que se deben omitir.
  • El segundo argumento indica cuántos registros se deben devolver.

sql
SELECT * FROM carros LIMIT 1, 1;

Descripción de la Consulta LIMIT 1, 1: Omite el primer registro (debido al primer 1) y devuelve el siguiente, que es el segundo registro.

Obtener el Penúltimo Registro de la Tabla carros

Para obtener el penúltimo registro de la tabla carros, puedes utilizar una combinación de la función MAX junto con una subconsulta.

Opción 1: Usando MAX

sql
SELECT * 
FROM carros 
WHERE id = (SELECT MAX(id) FROM carros WHERE id < (SELECT MAX(id) FROM carros));

El resultado de la consulta sería:

bash
| id  | marca     | modelo     | año | color   |
|-----|-----------|------------|-----|---------|
| 5   | Nissan    | Sentra     | 2018| Blanco  |

Opción 2: Usando LIMIT y OFFSET

bash
SELECT * FROM carros 
ORDER BY id DESC 
LIMIT 1 OFFSET 1;

Descripción de la Consulta

  Descripción de la Consulta

  • ORDER BY id DESC: Esto ordena los registros en orden descendente, comenzando desde el registro con el id más alto (el último registro).
  • LIMIT 1 OFFSET 1: Esta combinación significa que se obtendrá solo un registro (el que corresponde al penúltimo), omitiendo el primer registro de la lista ordenada (el último registro original).

  Nota

Este método es efectivo y sencillo para obtener el penúltimo registro siempre y cuando los id sean secuenciales y no haya registros eliminados. Si la tabla tiene una gran cantidad de registros, este método también es eficiente, ya que solo selecciona el registro necesario después de ordenar.

Identificar Empleados que No Son Mensajeros

A continuación, tenemos dos tablas: tbl_empleados, que almacena información sobre todos los empleados*, y tbl_mensajeros, que contiene a los empleados asignados como mensajeros.

El objetivo es obtener una lista de empleados que no figuran como mensajeros en la tabla tbl_mensajeros.

Usaremos una subconsulta que selecciona los empleado_id de la tabla tbl_mensajeros, comparándolos con los id de la tabla tbl_empleados para filtrar aquellos empleados que no están en la lista de mensajeros.

Tabla: tbl_empleados
bash
| id  | nombre_empleado     |
|-----|---------------------|
|  1  | Juan Pérez          |
|  2  | María González      |
|  3  | Pedro Rodríguez     |
|  4  | Ana Martínez        |
|  5  | Luis Fernández      |
|  6  | Laura Jiménez       |
|  7  | Jorge Sánchez       |
|  8  | Sofía Ramírez       |
|  9  | Carlos Muñoz        |
| 10  | Patricia Morales    |
Tabla: tbl_mensajeros
bash
| empleado_id | nombre_mensajero    |
|-------------|---------------------|
|      1      | Juan Pérez          |
|      3      | Pedro Rodríguez     |
|      5      | Luis Fernández      |
|      7      | Jorge Sánchez       |
|      9      | Carlos Muñoz        |

Consulta para obtener empleados que no son mensajeros

sql
SELECT id, nombre_empleado FROM tbl_empleados 
WHERE id NOT IN (SELECT empleado_id FROM tbl_mensajeros);

Resultado

bash
| id  | nombre_empleado     |
|-----|---------------------|
|  2  | María González      |
|  4  | Ana Martínez        |
|  6  | Laura Jiménez       |
|  8  | Sofía Ramírez       |
| 10  | Patricia Morales    |