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:

sq

Editor de SQL

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:

sq

Resultado de la Consulta

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:

sq

Order By

Y nos trae el siguiente resultado:

sq

Resultado Ordenado

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:

sq

Ordenar por Varios Campos

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:

sq

Predicados

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

sq

Predicado ALL

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

sq

Top (LIMIT)

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

sq

Disctinct en Campo Apellido

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

sq

Alias AS

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:

sq

Alias

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

Contenidos que te pueden interesar
Este sitio usa cookies para personalizar el contenido y los anuncios, ofrecer funciones de redes sociales y analizar el tráfico. Ninguna cookie será instalada a menos que se desplace exprésamente más de 400px. Leer nuestra Política de Privacidad y Política de Cookies. Las acepto | No quiero aprender cursos gratis. Sácame