Tutorial SQL Cap. 002
Consultas de Selección.
Las consultas de selección se utilizan para indicar al motor de base de datos que devuelva información de las bases de datos.
Consultas básicas.
La sintaxis básica de una consulta de selección es la siguiente:
SELECT campos FROM tabla;
En donde campos es la lista de campos que se desea recuperar y tabla es el origen de los mismos; suponiendo que tenemos una tabla clientes con toda la información de los mismos y queremos recuperar solo los nombres y teléfonos de estos, el ejemplo queda así:
SELECT nombre, telefono FROM clientes;
Podemos especificar el orden en que se han de recuperar los registros de las tablas mediante la clausula ORDER BY lista de campos. Ejemplo:
SELECT nombre, telefono, codpostal FROM clientes ORDER BY nombre;
Se pueden ordenar los registros por mas de un campo, ejemplo:
SELECT nombre, telefono, codpostal FROM clientes ORDER BY codpostal, nombre;
También puedes especificar el orden de los registros ya sea ascendente con la clausula ASC o descendente con la clausula DESC, ejemplo:
SELECT nombre, telefono, codpostal FROM clientes ORDER BY codpostal DESC, nombre ASC;
Consultas con predicado.
El predicado se incluye entre la clausula y el primer nombre del campo a recuperar
ALL: Devuelve todos los campos de la tabla.
TOP: Devuelve un determinado numero de registro de la tabla.
DISTINCT: Omite los registros cuyos campos seleccionados coincidan totalmente.
DISTINCTROW: Omite los registros duplicados basándose en la totalidad del registro y no solo en los campos seleccionados.
ALL (si no se incluye ninguno de los predicados se asume ALL), Obliga al motor de la base de datos a analizar la estructura de la tabla para averiguar los campos que contiene, es mucho mas rápido indicar el listado de campos deseados.
SELECT ALL FROM empleados;
SELECT * FROM empleados;
TOP depende del rango especificado por la clausula ORDER BY.
SELECT TOP 25 nombre, apellido FROM estudiantes ORDER BY nota DESC;
Si no se incluye la clausula ORDER BY, la consulta devolvera un conjunto arbitrario de 25 registros de la tabla estudiantes. El predicado TOP no elige entre valores iguales. En el ejemplo anterior, si la nota media numero 25 y 26 son iguales, la consulta devolvera 26 registros.
DISTINCT para que los valores de cada campo listado en la instrucción SELECT se incluyan en la consulta deben ser únicos.
SELECT DISTINCT apellido FROM empleados;
Si dos registros contienen Lopez en el campo apellido, la instrucción anterior solo devolvera el primer registro que encuentre.
DISTINCTROW devuelve los registros diferentes de una tabla; a diferencia del anterior este compara todo el registro de la tabla no un único campo.
SELECT DISTINCTROW apellido FROM empleados;
En la instrucción anterior si dos registros con apellido Hernandez existen pero con distinto nombre, devolvera ambos ya que compara todo el registro y no solo apellido como se le indica.
Alias.
En ocasiones, ya sea por capricho o necesidad, queremos asignarle un nombre diferente al campo que estamos solicitando, para dicha tarea se utiliza la palabra reservada AS.
SELECT apellido AS empleado FROM empleados;
Recuperar información de una base de datos externa.
Si estamos trabajando en una base de datos determinada y deseamos recuperar información de otra, podemos hacer uso de la palabra reservada IN.
SELECT apellido AS empleado FROM empleados IN 'c:\databases\gestion.mdb';
En donde c:\databases\gestion.mdb es la ruta absoluta de la base de datos que contiene la información que requerimos.