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.
Ejemplo
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.
| 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.
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.
| 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.
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:
| nombre | apellidos |
|---|---|
| María | Lopez ruiz |
Devolvemos únicamente el registro especificado en el idClientes
| 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.