Consultas de Selección
Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases de datos, esta información es devuelta en forma de conjunto de registros que se pueden almacenar en un objeto recordset. Este conjunto de registros puede ser modificable.
Para abrir el editor de SQL, hacemos clic en el botón de Open SQL Editor (Alt + E), y en la pestaña Query, procederemos a armar nuestras consultas:
Consultas Básicas
La sintaxis básica de una consulta de selección es la siguiente:
SELECT
Campo1, Campo2, Campo3...
FROM
Tabla
Donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los mismos, por ejemplo:
Select
Nombre, Apellido, Numtlf
From
Trabajadores
Esta sentencia devuelve un conjunto de resultados con el campo nombre, apellido y teléfono, de la tabla Trabajadores:
Cabe acotar que los demás datos aparecerán a medida que bajemos la barra de desplazamiento.
Ordenar los Registros
Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las tablas mediante la cláusula ORDER BY Campo, donde Lista de campos representa los campos a ordenar.
Ejemplo:
Y nos trae el siguiente resultado:
Podemos utilizar la Cláusula Order by combinada con cualquiera de los campos de la tabla.
Se pueden ordenar los registros por más de un campo, como por ejemplo:
Incluso se puede especificar el orden de los registros: ascendente mediante la cláusula (ASC - se toma este valor por defecto) o descendente (DESC).
Uso de Indices de las tablas
Si deseamos que la sentencia SQL utilice un índice para mostrar los resultados se puede utilizar la palabra reservada INDEX de la siguiente forma:
SELECT *
FROM Tabla (INDEX=Indice)
Normalmente los motores de las bases de datos deciden qué índice se debe utilizar para la consulta, para ello utilizan criterios de rendimiento y sobre todo los campos de búsqueda especificados en la cláusula WHERE. Si se desea forzar a no utilizar ningún índice utilizaremos la siguiente sintaxis:
SELECT *
FROM Tabla (INDEX=0)
Consultas con Predicado
El predicado se incluye entre la cláusula y el primer nombre del campo a recuperar, los posibles predicados son:
ALL
Si no se incluye ninguno de los predicados se asume ALL. El motor de base de datos selecciona todos los registros que cumplen las condiciones de la instrucción SQL y devuelve todos y cada uno de sus campos. No es conveniente abusar de este predicado, ya que obligamos al motor de la base de datos a analizar la estructura de la tabla para averiguar los campos que contiene, es mucho más rápido indicar el listado de campos deseados.
SELECT *
FROM
TOP (LIMIT)
Devuelve un cierto número de registros que entran al principio o al final de un rango especificado por una cláusula ORDER BY.
En SQLite el predicado es sustituido por LIMIT. Supongamos que queremos recuperar los nombres, apellidos y números de teléfono de los 10 primeros trabajadores:
SELECT TOP 10
Nombre, Apellido
FROM
Trabajadores
ORDER BY
Numtlf DESC
En SQLite sería de esta forma:
SELECT
nombre, apellido, numtlf
FROM
Trabajadores
Order by
numtlf desc
LIMIT 10
Si no se incluye la cláusula ORDER BY, la consulta devolverá un conjunto arbitrario de 10 registros de la tabla de Trabajadores. El predicado TOP (LIMIT) no elige entre valores iguales.
DISTINCT
Omite los registros que contienen datos duplicados en los campos seleccionados. Para que los valores de cada campo listado en la instrucción SELECT se incluyan en la consulta deben ser únicos. Por ejemplo, varios empleados listados en la tabla Empleados pueden tener el mismo apellido. Si dos registros contienen López en el campo Apellido, la siguiente instrucción SQL devuelve un único registro:
SELECT DISTINCT
Apellido
FROM
Trabajadores
Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos campos indicados en la cláusula SELECT posean un contenido diferente. El resultado de una consulta que utiliza DISTINCT no es actualizable y no refleja los cambios subsiguientes realizados por otros usuarios.
ALIAS
En determinadas circunstancias es necesario asignar un nombre a alguna columna determinada de un conjunto devuelto, otras veces por simple capricho o porque estamos recuperando datos de diferentes tablas y resultan tener un campo con igual nombre.
Para resolver todas ellas tenemos la palabra reservada AS que se encarga de asignar el nombre que deseamos a la columna deseada. Tomado como referencia el ejemplo anterior podemos hacer que la columna devuelta por la consulta, en lugar de llamarse apellido (igual que el campo devuelto), que se llame Empleado. En este caso procederíamos de la siguiente forma:
SELECT
Nombre AS Empleado
FROM
Trabajadores
Otra forma mas fácil de hacerlo es simplemente escribir el alias luego del campo a consultar, y también podemos usarlos de manera combinada:
AS no es una palabra reservada de ANSI, existen diferentes sistemas de asignar los alias en función del motor de bases de datos. En ORACLE para asignar un alias a un campo hay que hacerlo de la siguiente forma:
SELECT
Apellido AS "Empleado"
FROM
Trabajadores