Sentencia SELECT en SQL

Una instrucción SELECT, también conocida como query o consulta, es quizás el comando DML más popular y protagonista en el trabajo con bases de datos. SELECT nos permite consultar los datos de una tabla.

La sintaxis básica es muy sencilla:

SELECT columna1, columna2... FROM nombreTabla

Comúnmente las sentencias SELECT van acompañadas después del FROM de la cláusula WHERE, que permite añadir filtros a la consulta para restringir o filtrar los registros a devolver. Existen además otras clausulas después del WHERE que repercuten en cómo se visualizarán los registros y el orden en que se visualizarán, como por ejemplo el GROUP BY y ORDER BY.

Además, una SELECT permite devolver campos de varias tablas independientes pero relacionadas a través de una clave Foreign Key a través de la cláusula JOIN.

Dependiendo del modelo de la base de datos y los datos específicos que queramos devolver, una SELECT puede ser una sentencia muy sencilla de apenas una línea, o una muy compleja con muchos cruces de tablas y filtros específicos que debemos tener en cuenta para devolver la información requerida.

En esta sección, vamos a procurar explicar y ejemplificar el manejo de SELECT, tomando de ejemplo las tablas Clientes y Pedidos que estamos utilizando en las demás secciones de contenido.

Para ilustrar esta sección, hemos realizado previamente varios INSERT INTO en las tablas Clientes y Pedidos. El lector es libre de insertar los mismos para sus pruebas o aquellos que se ajusten a su modelo.

Example icon

SELECT * FROM

SELECT * FROM es la sentencia más básica para consultar una tabla determinada. * nos indica que vamos a devolver todos los campos de la tabla correspondiente.

SELECT *
FROM Clientes;
idClientes nombre apellidos direccion cuenta
1 Fernando García Rodriguez C/ Virgen del rosal 28 111222333
2 María Lopez ruiz C/ Alcalá 138 123456789
3 Ana Fernandez Montero Av. de Santiago 11 998344567
4 Luis Sanchez García C/ de la luz 21 447824556
5 Alejandro Valero Martinez C/ Serrano 67 778345112

Observamos que la consulta nos devuelve todos los registros y columnas de la tabla Clientes.

Es muy probable que, en muchas ocasiones, no necesitemos devolver toda la información de una tabla, solamente algunas columnas concretas de todo el conjunto de resultados. Siempre sera mas óptimo devolver unicamente las columnas requeridas.

SELECT [COLUMN] FROM

Una SELECT permite especificar que columnas de la tabla/s correspondientes se visualizarán tras la ejecución.

SELECT p.producto,
       p.precio,
       p.numeroProductos
FROM Pedidos p;
producto precio numeroProductos
Xiami Mi 11 286,95 15
Play Station 5 549,95 4
Xbox series X 499,99 2
MacBook Pro M1 2449,5 1
Echo DOT 3 39,99 50
Echo DOT 4 59,99 50
Nintendo Switch 299,99 3

Observamos como en esta SELECT hemos denominado a la tabla Pedidos con un alias p.

El uso de alias nos facilitará el acceso a los campos de las tablas al escribir las sentencias.

Cláusula WHERE

La cláusula WHERE nos permite añadir filtros a nuestras consultas para devolver únicamente los registros que cumplan las condiciones especificadas del total del conjunto de resultados:

SELECT nombre,
       apellidos
FROM Clientes
WHERE idClientes = 2;
nombre apellidos
María Lopez ruiz

Devolvemos únicamente el registro especificado en el idClientes

SELECT producto,
       precio,
       numeroProductos,
       totalPrecio
FROM Pedidos
WHERE fechaPedido = '2022-09-01'
producto precio numeroProductos totalPrecio
Echo DOT 3 39,99 50 1999,5
Echo DOT 4 59,99 50 2999,5

En este ejemplo, hemos filtrado por el campo fechaPedido que coincide con dos registros de la tabla Pedidos.

WHERE permite concatenar condiciones para aplicar más filtros a la consulta a través del operador AND. También podrán utilizarse diferentes operadores que ayuden al filtrado y restricción de registros, que podrán ser consultados desde el siguiente enlace de acceso a la lista de operadores.