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.
carros| 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| fotocars| 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 SQLSELECT fotocars.*, carros.* FROM carros, fotocars
WHERE carros.id = fotocars.carro_id
AND carros.id = '5'; 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.
carrosPara obtener el primer registro de la tabla carros, puedes usar la cláusula LIMIT
LIMITSELECT * FROM carros LIMIT 1; | id | marca | modelo | año | color |
|-----|-----------|------------|-----|---------|
| 1 | Toyota | Corolla | 2020| Rojo | MINOtra manera de obtener el primer registro, basado en el id más bajo, es utilizar la función MIN.
SELECT * FROM carros
WHERE id = (SELECT MIN(id) FROM carros); ORDER BY y LIMITSELECT * FROM carros ORDER BY id ASC LIMIT 1; Para obtener el último registro de la tabla carros, puedes usar la cláusula ORDER BY en combinación con LIMIT.
LIMIT 1SELECT * FROM carros ORDER BY id DESC LIMIT 1; | id | marca | modelo | año | color |
|-----|-----------|------------|-----|---------|
| 6 | Kia | Rio | 2021| Amarillo| MAXPara 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.
SELECT *
FROM carros
WHERE id = (SELECT MAX(id) FROM carros); 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.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.
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.
Para obtener el año más reciente de la tabla carros, se utiliza la función MAX.
SELECT MAX(año) AS Año_Maximo
FROM carros; | Año_Maximo |
|------------|
| 2022 | Para obtener el año más antiguo de la tabla carros, se utiliza la función MIN.
SELECT MIN(año) AS Año_Minimo
FROM carros; | Año_Minimo |
|------------|
| 2018 | 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:
OFFSETSELECT * FROM carros LIMIT 1 OFFSET 1; 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:
| id | marca | modelo | año | color |
|-----|-----------|------------|-----|---------|
| 2 | Honda | Civic | 2021| Azul | LIMIT 1, 1LIMIT 1, 1 también funcionaría para obtener el segundo registro de la tabla carros. La sintaxis de LIMIT puede recibir dos argumentos:
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.
Para obtener el penúltimo registro de la tabla carros, puedes utilizar una combinación de la función MAX junto con una subconsulta.
MAXSELECT * FROM carros
WHERE id = (SELECT MAX(id) FROM carros WHERE id < (SELECT MAX(id) FROM carros)); El resultado de la consulta sería:
| id | marca | modelo | año | color |
|-----|-----------|------------|-----|---------|
| 5 | Nissan | Sentra | 2018| Blanco | SELECT * FROM carros ORDER BY id DESC LIMIT 1 OFFSET 1; 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.
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.
| 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 | | empleado_id | nombre_mensajero |
|-------------|---------------------|
| 1 | Juan Pérez |
| 3 | Pedro Rodríguez |
| 5 | Luis Fernández |
| 7 | Jorge Sánchez |
| 9 | Carlos Muñoz | SELECT id, nombre_empleado FROM tbl_empleados
WHERE id NOT IN (SELECT empleado_id FROM tbl_mensajeros); | id | nombre_empleado |
|-----|---------------------|
| 2 | María González |
| 4 | Ana Martínez |
| 6 | Laura Jiménez |
| 8 | Sofía Ramírez |
| 10 | Patricia Morales |