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:
|
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
- Introducción
- Consultas
de Selección - Criterios
de Selección - Agrupamiento
de Registros y Funciones Agregadas - Consultas
de Actualización - Tipos
de Datos - SubConsultas
- Consultas
y Referencias Cruzadas - Consultas
de Unión Interna - Consultas
de Unión Externas - Estructuras
de las Tablas - Consultas
con Parámetros - Acceso
a las Bases de Datos Externas - Omitir los permisos de ejecución
- La
Cláusula Procedure - Anexos
esta muy bueno el articulo
Muy Instructivo Felicitaciones
como dices eso Diabla ! debes ser una pala !
Si me parece bueno el tutorial para personas que se inician en SQL… XD
no del nabo
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.
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…
Muy buena la información…me sirvio mucho ¡¡Graacias!
Muy buen Sitio Felicidades, gusto lo q buscaba.
ME GUSTARIA TENER MAS INFORMACION SOBRE SQL GRACIAS
ESTA MUY INTERESANTE EL TEMA
esta xevere el tutorial, esta muy bien explicado para poder entenderlo en poco tiempo..gracias
Solo te digo gracias… muy bueno… y que bueno que comparta su conocimiento
realmente muy bien explicado, quiero agradecerte por compartir tu conocimiento muchar gracias.
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.
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
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.
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…
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
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.
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
esta muy bien explicado camara arre arre
Muy bueno, me gustaria alguns ej. de select anidados , y tambien el uso de count para select anidado
TK
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.
no pos esta shido este articulo esta delujo
i aguanten la 51 taba5h1nes
me yega la pagina
[…] http://www.maestrosdelweb.com/editorial/tutsql2/ […]
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
mas buena esta
mas buena estoy yo agregame y yamame
muy malo el sitio no estendi nada
soy muy bruto
mandame los codigos de sql
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