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.
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.