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.

2. 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
es modificable.

2.1 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 deseen recuperar y tabla es el origen de los mismos, por ejemplo:

SELECT Nombre, Telefono FROM Clientes;

Esta consulta devuelve un recordset con
el campo nombre y teléfono de la tabla clientes.

2.2 Ordenar los registros

Adicionalmente se puede especificar el
orden en que se desean recuperar los registros de las tablas mediante la claúsula
ORDER BY Lista de Campos. En donde Lista de campos representa los campos a ordenar.
Ejemplo:

SELECT CodigoPostal, Nombre, Telefono
FROM Clientes ORDER BY Nombre;

Esta consulta devuelve los campos CodigoPostal,
Nombre, Telefono de la tabla Clientes ordenados por el campo Nombre.

Se pueden ordenar los registros por mas
de un campo, como por ejemplo:

SELECT CodigoPostal, Nombre, Telefono
FROM Clientes ORDER BY
CodigoPostal, Nombre;

Incluso se puede especificar el orden
de los registros: ascendente mediante la claúsula (ASC -se toma este valor por defecto) ó descendente (DESC)

SELECT CodigoPostal, Nombre, Telefono
FROM Clientes ORDER BY
CodigoPostal DESC , Nombre ASC;

2.3 Consultas con Predicado

El predicado se incluye entre la claúsula
y el primer nombre del campo a recuperar, los posibles predicados son:

Predicado Descripción
ALL Devuelve todos
los campos de la tabla
TOP Devuelve un determinado número
de registros de la tabla
DISTINCT Omite los registros cuyos
campos seleccionados coincidan totalmente
DISTINCROW Omite los registros duplicados
basandose en la totalidad del registro y no sólo en los campos
seleccionados.

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. No se 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 ALL FROM Empleados;
SELECT * FROM Empleados;

TOP:

Devuelve un cierto número de registros que entran entre al principio
o al final de un rango especificado por una cláusula ORDER
BY
. Supongamos que queremos recuperar los nombres de los 25
primeros estudiantes del curso 1994:

SELECT TOP 25 Nombre, Apellido FROM 
Estudiantes
ORDER BY Nota DESC;

Si no se incluye la cláusula ORDER
BY
, la consulta devolverá 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 número
25 y la 26 son iguales, la consulta devolverá 26 registros. Se puede
utilizar la palabra reservada PERCENT para devolver un cierto porcentaje de registros que caen al principio o al final
de un rango especificado por la cláusula ORDER
BY
. Supongamos que en lugar de los 25 primeros estudiantes deseamos
el 10 por ciento del curso:

SELECT TOP 10 PERCENT Nombre, Apellido
FROM Estudiantes
ORDER BY Nota DESC; 

El valor que va a continuación
de TOP debe ser un Integer sin signo.TOP no afecta a la posible actualización
de la consulta.

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 Empleados; 
    

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.

DISTINCTROW:

Devuelve los registros diferentes
de una tabla; a diferencia del predicado anterior que sólo se fijaba
en el contenido de los campos seleccionados, éste lo hace en el contenido
del registro completo independientemente de los campo indicados en la cláusula SELECT.

SELECT DISTINCTROW Apellido FROM Empleados;

Si la tabla empleados contiene dos registros:
Antonio López y Marta López el ejemplo del predicado DISTINCT devuleve un único registro con el valor López en el campo Apellido
ya que busca no duplicados en dicho campo. Este último ejemplo devuelve
dos registros con el valor López en el apellido ya que se buscan no duplicados
en el registro completo.

2.4 Alias

En determinadas circunstancias es necesario
asignar un nombre a alguna columna determinada de un conjunto devuelto, otras
veces por simple capricho o por otras circunstancias. 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) se llame Empleado. En este caso procederíamos
de la siguiente forma:

SELECT DISTINCTROW Apellido AS Empleado 
FROM Empleados;

2.5 Recuperar Información de una
base de Datos Externa

Para concluir este capítulo se
debe hacer referencia a la recuperación de registros de bases de datos
externa. Es ocasiones es necesario la recuperación de información
que se encuentra contenida en una tabla que no se encuentra en la base de datos
que ejecutará la consulta o que en ese momento no se encuentra abierta,
esta situación la podemos salvar con la palabra reservada IN de la siguiente
forma:

SELECT DISTINCTROW Apellido AS Empleado
FROM Empleados
IN 'c:\databases\gestion.mdb';

En donde c:\databases\gestion.mdb es la
base de datos que contiene la tabla Empleados.

Siguiente capítulo: Criterios
de Selección

banner

  1. Introducción
  2. Consultas
    de Selección
  3. Criterios
    de Selección
  4. Agrupamiento
    de Registros y Funciones Agregadas
  5. Consultas
    de Actualización
  6. Tipos
    de Datos
  7. SubConsultas
  8. Consultas
    y Referencias Cruzadas
  9. Consultas
    de Unión Interna
  10. Consultas
    de Unión Externas
  11. Estructuras
    de las Tablas
  12. Consultas
    con Parámetros
  13. Acceso
    a las Bases de Datos Externas
  14. Omitir los permisos de ejecución
  15. La
    Cláusula Procedure
  16. Anexos
Claudio Casares
Redactor del tutorial de SQL
jose
1/12/2006

esta muy bueno el articulo

Sebastian
3/01/2007

Muy Instructivo Felicitaciones

black
19/01/2007

como dices eso Diabla ! debes ser una pala !

Elias
23/01/2007

Si me parece bueno el tutorial para personas que se inician en SQL… XD

catalina
10/02/2007

no del nabo

jumexpa
2/03/2007

me parece muy bueno para la gente ke estamos empezando

El Material es muy bueno,ademas quiero felicitarte porque la pagina es muy atractiva,solo me queda mas que agradecerte por este buen material sobre sql.

JOHN
22/08/2007

Muy buena pagin, sencilla y bien estructurada, es solo que …
Tienes un Maldito espacio en blanco a la derecha, coloca imagenes de como queda mi resultado en el momento que ejecuto…
Gracias…

Lucy
19/09/2007

Muy buena la información…me sirvio mucho ¡¡Graacias!

Javier
25/09/2007

Muy buen Sitio Felicidades, gusto lo q buscaba.

ESTA MUY INTERESANTE
9/10/2007

ME GUSTARIA TENER MAS INFORMACION SOBRE SQL GRACIAS

WILSON
9/10/2007

ESTA MUY INTERESANTE EL TEMA

esta xevere el tutorial, esta muy bien explicado para poder entenderlo en poco tiempo..gracias

ivan
13/11/2007

Solo te digo gracias… muy bueno… y que bueno que comparta su conocimiento

irwin
20/11/2007

realmente muy bien explicado, quiero agradecerte por compartir tu conocimiento muchar gracias.

Daniel
21/12/2007

Hola, tengo una duda con respecto al select.
Si deseo realizar un select que me traiga los registros de un campo en particular pero este campo deseo pasarlo por parametros. Ej:
Tengo la tabla personas que contienen los campos, apellido1, apellido2, nombre1, nombre2 y deseo que me debuelva solo uno de los campos pero de forma dinamica, dependiendo de la seleccion del usuario.

select @campo from tabla

en donde @campo es el campo que deseo obtener, como lo podria hacer?
Si fuera necesario me gustaria evitar el uso de if para decidir que select utilizar.

Gracias.

Alex
7/01/2008

gracias por tener este portal y compartir el conocimiento con los demas solo quiero saber si hay de alguna manera o links para ensenar a los ninos mas facil.
gracias.
espero que me ayuden

Mauricio
8/01/2008

Muy bien explicado. Ojalá haya gente así que explique para los que recién empiezan en esto y están aprendiendo.
Podrás hacer uno para php? o ya hay uno hecho y yo no me dí cuenta?

Saludos.

Mauricio, de Argentina.

Daniel Ch.
28/01/2008

Muy buen portal, es uno de los mejores que he visto por el tipo de informacion y la forma como la explican felicitaciones a los autores…

Gracias

Daniel, Guate…

william chaparro
4/02/2008

Me parece algo muy instructivo gracias por crear este sitio ya que en el hemos podido sar solucion a muchas dudas de sql me gustaria saber mas de este programa por su atencion gracias

sahito
28/02/2008

muy buena y completa pero tampoco m agrada mucho el espacio q queda en la derecha. aprovechenlo :)

Muy bueno el articulo, principalmente para los que recien estamos empezando.

Olga
21/03/2008

Muy bueno me ha servido muchisimo .

EXCELENTE ARTICULO, pero tengo un problema que aun no he podido resolver,.. me he dado infinitas vueltas por la red y no puedo sacarlo. El problema es el siguiente Tengo una tabla con respuestas a preguntas que estan en otra tabla, y quiero saber cuantas respuestas negativas tiene cada pregunta ( negativa => < 2), la consulta solo me muestra las cuentas que contienen menores que dos pero no considera las otras preguntas, es decir me muestra lo siguiente
pregunta negativas
p1 5
p2 2
p4 4
p5 3

no me muestra p3 pues p3 no tiene respuestas negativas, pero en ese caso deberia mostrarme
p3 0
y no lo hace….. ayuda porfavor

equihua
20/04/2008

esta muy bien explicado camara arre arre

Julio
12/05/2008

Muy bueno, me gustaria alguns ej. de select anidados , y tambien el uso de count para select anidado
TK

pepe
15/05/2008

hola a todos espero y me hechen la mano tengo una consulta en la que quiero mostrar los valores de una tabla pero me aparecen duplicados la sentensi es la siguiente :”select distinct nombre_accidentado,numero_ficha_traba, fecha_accidente, fecha_alta, dpte_ocurio, (fecha_alta-fecha_accidente) from persona_accidente, persona_trabajo”
no se si hay otra forma de acer esto gracias.

Saludos:
A mi tambien me gustarian algunos ejemplos, asi que si algun amigo se conecta en este tema… agradeceria nos ayude con algun ejemplo.

Hola.. la explicacion es estupenda, pero como algunos opinan si seria bueno unos cuantos ejemplos ..

Como dicen por allí “Ahora faltan los Ejemplos”.

Gracias, tu información me ha ayudado a hacer una aplicación.

PiÑaLoka
16/06/2008

no pos esta shido este articulo esta delujo
i aguanten la 51 taba5h1nes

nohemy
19/03/2010

me yega la pagina

karen
17/04/2010

HoOLAp pSS kE bIIeN kE iia enttEndII un poOkoO mEjOor estOo dE sElEct
1000 gRacIIaZ pOor sU aiiUda jejeje….

este breve tutorial esta muy surtido

poveda
13/09/2010

muy malo el sitio no estendi nada
soy muy bruto

mandame los codigos de sql

juan
2/11/2010

excelente material te felicito mucho por el aporte que nos haces con tus conocimientos

es muy bueno y util pero como hago par descargarlo ;;
un ayud

263