Consulta SQL para mostrar los últimos 5 registros de la tabla de empleados

Resumen :

Aquí aprenderemos cómo recuperar las últimas 5 filas de una tabla de base de datos con la ayuda de consultas SQL.

Los diferentes enfoques que vamos a explorar son:

  • Con la ayuda de la cláusula LIMIT en orden descendente.
  • Con la ayuda del operador relacional y la función COUNT.
  • Con la ayuda de la declaración preparada y la cláusula LIMIT.

Creación de base de datos:

CREATE DATABASE geeks; /* SQL is case insensitive thus 'create database geeks;' means the same

Mostrando bases de datos disponibles:

SHOW DATABASES;

Uso de la base de datos: 

USE geeks;

Imagen que muestra consultas sql

Ahora que hemos cambiado a la base de datos de geeks, ahora crearemos nuestra tabla de empleados.

Creación de una tabla de empleados: 

CREATE TABLE (
ID INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(30) NOT NULL,
PHONE INT(10) NOT NULL UNIQUE,
EMAIL VARCHAR(30) NOT NULL UNIQUE,
DATE_OF_JOINING DATE);

Imagen que muestra consultas sql

NOTA: Deberíamos usar VARCHAR o BIGINT como el tipo de datos para la columna TELÉFONO para evitar el desbordamiento de enteros.

Para ver/describir la tabla de empleados:

DESC Employee;

Imagen que muestra consultas sql

Agregar valores en la tabla de empleados:

INSERT INTO Employee (NAME, PHONE, EMAIL, DATE_OF_JOINING)
VALUES
('Yogesh Vaishnav', 0000000001, 'yogesh@mail.com', '2019-10-03'),
('Vishal Vishwakarma', 0000000002, 'chicha@mail.com', '2019-11-07'),
('Ajit Yadav', 0000000003, 'ppa@mail.com', '2019-12-12'),
('Ashish Yadav', 0000000004, 'baba@mail.com', '2019-12-25'),
('Tanvi Thakur', 0000000005, 'tanvi@mail.com', '2020-01-20'),
('Sam', 0000000006, 'sam@mail.com', '2020-03-03'),
('Ron', 0000000007, 'ron@mail.com', '2020-05-16'),
('Sara', 0000000008, 'sara@mail.com', '2020-07-01'),
('Zara', 0000000009, 'zara@mail.com', '2020-08-20'),
('Yoji', 0000000010, 'yoji@mail.com', '2020-03-10');

Imágenes que muestran consultas sql

 Recuperando todos los datos de la tabla de empleados:

SELECT * FROM Employee;

Imagen que muestra consultas sql

Ahora recuperemos las últimas 5 filas de la tabla Empleado.

MÉTODO 1: Uso de la cláusula LIMIT en orden descendente

Como sabemos, la cláusula LIMIT da el no. de filas especificadas de la fila especificada. Recuperaremos las últimas 5 filas en orden descendente usando las cláusulas LIMIT y ORDER BY y finalmente haremos que las filas resultantes sean ascendentes.

Dado que la tabla de empleados tiene ID, realizaremos ORDER BY ID en nuestra consulta.

SINTAXIS:

(SELECT * FROM <table_name> ORDER BY <id_column> DESC LIMIT <cant. de filas a recuperar>)

ORDENAR POR <id_columna> ASC;

Ejemplo :

(SELECT * FROM Employee ORDER BY ID DESC LIMIT 5)
ORDER BY ID ASC;

Producción :

Imagen que muestra consultas sql

MÉTODO 2: Uso del operador relacional y la función COUNT.

Como sabemos que en la tabla de empleados, las filas se organizan según los ID, podemos obtener las últimas 5 filas, con la ayuda de la condición como

id > (número total de filas – número de filas para recuperar (aquí 5))

SINTAXIS:

SELECCIONE * DE <nombre_tabla>

DÓNDE 

<id_column> > (SELECT COUNT(*) FROM <table_name>) – (cant. de filas a recuperar);

Ejemplo : 

SELECT * FROM Employee
WHERE 
ID > (SELECT COUNT(*) FROM Employee) - 5;

Producción :

Imagen que muestra consultas sql

MÉTODO 3: Uso de la declaración preparada de SQL y la cláusula LIMIT

Como sabemos que podemos recuperar cualquier no. de filas a partir de una fila específica con la ayuda de la CLÁUSULA DE LÍMITE como:

SELECT * FROM <table_name> 
LIMIT (row after which the data is to be retrieved), (no. of rows to retrieve)

Pero no podemos usar subconsultas ni podemos usar variables directamente con la Cláusula LIMIT.

Por lo tanto, ejecutaremos la declaración preparada y reemplazaremos los valores de la plantilla en tiempo de ejecución.

La sintaxis para preparar y ejecutar una sentencia es la siguiente:

SINTAXIS:

PREPARE <statement_name> FROM ‘<Cualquier consulta sql válida>’; /*usar ? (signo de interrogación) para indicar que esto tiene que ser reemplazado con un valor durante la ejecución */

EXECUTE <nombre_instrucción> USING (opcional) <valores_plantilla o valores de parámetros>

Ejemplo : 

/*declare and initialize a variable named 'rows' (here we want to retrieve last 5 rows thus the value 5*/
SET @rows = 5;
SET @startRow = (SELECT COUNT(*) FROM Employee) - @rows; /*Row after which we want to retrieve*/
PREPARE getLastFive FROM 'SELECT * FROM Employee LIMIT ?, ?';
EXECUTE getLastFive USING @starRow, @rows;

Producción :

Imagen que muestra consultas sql

Publicación traducida automáticamente

Artículo escrito por yoji y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *