Una consulta de selección se puede usar para crear subconjuntos de datos que sirvan para responder a preguntas específicas. También se puede usar para suministrar datos a otros objetos de base de datos. Una vez creada una consulta de selección, se puede usar siempre que sea necesario.
En este tema, se explica cómo crear consultas de selección sencillas que busquen datos en una tabla única. También se explica cómo mejorar la consulta definiendo criterios para los registros y agregando valores calculados.
En este artículo
Introducción
Una consulta de selección es un tipo de objeto de base de datos que muestra información en una
vista Hoja de datos Una consulta puede obtener sus datos de una tabla o de varias, de consultas existentes, o de una combinación de ambas opciones. Las tablas o las consultas de las que una consulta obtiene sus datos se conocen como su origen de registros.
Ya cree consultas de selección sencillas mediante un asistente o trabajando en la vista Diseño, los pasos son, en esencia, los mismos. Debe elegir el origen de registros que desea utilizar y los campos que desea incluir en la consulta. Opcionalmente, puede especificar criterios para depurar los resultados.
Una vez creada la consulta de selección, puede ejecutarla para ver los resultados. Las consultas de selección son muy fáciles de ejecutar: sólo tiene que abrirlas en la vista Hoja de datos. Podrá reutilizarlas siempre que lo necesite; por ejemplo, como origen de registros para un formulario, un informe u otra consulta.
Nota Para obtener información sobre el uso de una consulta como origen de registros para un formulario o informe, vea el artículo
Usar una consulta como origen de registros de un formulario o informe.
Hay varios tipos de consulta, y cada una sirve para un fin distinto. Por ejemplo, una consulta de selección para presentar datos. Una consulta de acción cambia los datos de su origen de datos o crea una nueva tabla. Una consulta de parámetros le pide que especifique criterios cuando se ejecuta. En este tema, se tratan únicamente las consultas de selección.
Nota En este tema se describe cómo se crean consultas de selección que devuelven datos de una única tabla. Si desea crear consultas que devuelvan datos de dos o varias tablas, vea el artículo
Crear una consulta basada en varias tablas.
Crear una consulta
En este ejercicio, creará la consulta de selección Contactos de Londres. Puede crearla en la vista Diseño o mediante un asistente. Además, si sabe cómo escribir
instrucciones SQL (c podrá crear una consulta mientras trabaja en una vista SQL, simplemente escribiendo una instrucción SELECT sencilla.
Antes de comenzar, debe tener una tabla que contenga datos. A continuación, se proporcionan datos de ejemplo en forma de tabla HTML.
IdCliente | Compañía | Dirección | Ciudad | EdoOProv | CódigoPostal | PaísORegión | Teléfono | Contacto | FechaNacimiento |
1 | Museo de Ciencias | Rodeo de la Cruz 477 | Caracas | DF | 12345 | Venezuela | (202) 555-0122 | Esteban Puerto | 03.12.1945 |
2 | Líneas Aéreas Cielo Azul | Carlos Pellegrini 1263 | San Cristóbal | Táchira | 01234 | Venezuela | (201) 555-0123 | David Santos | 21.03.1959 |
3 | Bodegas Cobra | C/ Córcega 452 | I. de Margarita | Nueva Esparta | 98100 | Venezuela | (206) 555-0042 | Ezequiel Picó | 01.04.1973 |
4 | Contoso Pharmaceuticals | Av. Benavides 4858 | Londres | | 45678 | RU | (171) 555-0125 | Manuel Pereira | 16.06.1967 |
5 | Fourth Coffee | | Londres | | W1J 8QB | RU | (171) 555-0165 | Julián Precio | 09.08.1971 |
6 | Mensajerías consolidadas | Av. 5 de Mayo Porlamar | I. de Margarita | Nueva Esparta | 98100 | Venezuela | (206) 555-0007 | Cristina Portillo | 27.05.1948 |
7 | Graphic Design Institute | 151 Strand | Londres | | WC2R 0ZA | RU | (171) 555-0178 | María Barrera | 12.08.1961 |
8 | López e hijos, S.L. | Av. Libertador 135 | Barinas | DF | 97200 | Venezuela | (503) 555-0086 | Antonio Moreno | 01.09.1975 |
9 | Tailspin Toys | 22 Wicklow Street | Londres | | WC1 0AC | RU | | Guillermo Fernández | 15.02.1953 |
10 | Woodgrove Bank | 37 Lothbury | Londres | | EC2R 7ED | RU | (171) 555-0101 | Tom Perham | 25.09.1938 |
Puede especificar manualmente los datos de esta tabla de ejemplo o copiar esta tabla en un programa de hojas de cálculo, como Microsoft Office Excel 2007, e importar la hoja de datos resultante a una tabla de Microsoft Office Access 2007.
Escribir los datos de ejemplo manualmente
- En el grupo Tablas de la ficha Crear, haga clic en Tabla.
Office Access 2007 agrega una nueva tabla en blanco a la base de datos.
Nota No necesita seguir este paso si abre una nueva base de datos en blanco pero deberá hacerlo siempre que agregue una tabla a la base de datos.
- Haga doble clic en la primera celda de la fila del encabezado y escriba el nombre del campo en la tabla de ejemplo.
De forma predeterminada, Access indica los campos en blanco en la fila del encabezado con el texto Agregar nuevo campo, como:
- Use las teclas de flecha para desplazarse a la siguiente celda en blanco del encabezado y escriba el nombre del segundo campo (también puede presionar TAB o hacer doble clic en la nueva celda). Repita este paso hasta que termine de escribir todos los nombres de campo.
- Escriba los datos en la tabla de ejemplo.
Al ir escribiendo los datos, Access deduce un tipo de datos para cada campo. Cada campo de una tabla tiene un tipo de datos específico, como Número, Texto o Fecha/Hora. Los tipos de datos ayudan a escribir los datos de forma precisa y a evitar errores, como el uso de un número de teléfono en un cálculo. Puede especificar el tipo de datos de cada campo de una tabla y cambiar el tipo de datos de un campo en determinadas circunstancias. Para esta tabla de ejemplo, debería dejar que Access deduzca el tipo de datos.
- Una vez terminado de escribir los datos, haga clic en Guardar.
Método abreviado de teclado Presione CTRL+G.
Aparecerá el cuadro de diálogo Guardar como.
- En el nombre Nombre de la tabla, escriba Clientes y haga clic en Aceptar.
Copiar la tabla en un programa de hojas de cálculo e importarla a Access
- Inicie el programa de hojas de cálculo y cree un nuevo archivo en blanco. Si utiliza Excel, se crea un nuevo libro en blanco de forma predeterminada.
- Copie la tabla de ejemplo proporcionada en la sección anterior y péguela en la primera celda de la primera hoja de cálculo.
- Con la técnica proporcionada por el programa de hojas de cálculo, asigne un nombre a la hoja de cálculo Clientes.
- Guarde el archivo de hoja de cálculo en una ubicación apropiada y vaya a los siguientes pasos.
Importar la tabla a Access
- En una base de datos nueva o existente:
En el grupo Importar de la ficha Datos externos, haga clic en Excel.
O bien,
Haga clic en Más y seleccione un programa de hojas de cálculo de la lista.
Aparece el cuadro de diálogo Obtener datos externos - Hoja de cálculo de Nombre del programa.
- Haga clic en Examinar, abra el archivo de hoja de cálculo que creó en los pasos anteriores y, a continuación, haga clic en Aceptar.
Se inicia el Asistente para importación de hojas de cálculo.
- De forma predeterminada, el asistente selecciona la primera hoja de cálculo del libro (Clientes, si ha seguido los pasos descritos en la anterior sección), y los datos de la hoja de cálculo aparecen en la sección inferior de la página del asistente. Haga clic en Siguiente.
- En la siguiente página del asistente, seleccione Primera fila contiene encabezados de columna y, a continuación, haga clic en Siguiente.
- En la siguiente página del asistente tiene la oportunidad de cambiar los nombres de campo y los tipos de datos o de omitir campos en la operación de importación, mediante los cuadros de texto y listas de Opciones de campo. No debe hacerlo para este ejemplo. Haga clic en Siguiente.
- En la página siguiente del asistente, en el cuadro Opciones de campo, seleccione Sí (Sin duplicados) en la lista Indexado y luego Entero largo en la lista Tipo de dato. Haga clic en Siguiente para continuar.
- En la página siguiente del asistente, seleccione la opción Elegir la clave principal, elija IdCliente en la lista y haga clic en Siguiente.
- De forma predeterminada, Access aplica el nombre de la hoja de cálculo a la nueva tabla. Asegúrese de que la tabla se denomina Clientes y haga clic en Finalizar.
- En la última página del asistente, tiene la opción de guardar los pasos del proceso de importación para usarlos más adelante. Como está importando una tabla de ejemplo, no se recomienda que guarde estos pasos.
Nota Si no tiene un programa de hojas de cálculo, puede copiar los datos de ejemplo en un editor de texto, como Bloc de notas. Para obtener más información sobre la importación de datos de texto, vea el artículo
Importar o vincular a los datos de un archivo de texto.
Generar la consulta.
En primer lugar, usará un asistente para crear la consulta, basándose en la tabla de ejemplo que acaba de crear. Después, la mejorará en la vista Diseño. En cada paso, puede revisar la instrucción SQL que se genera automáticamente mediante los pasos que vaya siguiendo.
- En el grupo Otros de la ficha Crear, haga clic en Asistente para consultas.
- En el cuadro de diálogo Nueva consulta, haga clic en Asistente para consultas sencillas y, a continuación, haga clic en Aceptar.
- En Tablas y consultas, haga clic en la tabla que contiene los datos que desea usar. En este caso, haga clic en Tabla: Clientes. Recuerde que una consulta también puede usar otra consulta como origen de registros.
- En Campos disponibles, haga doble clic en los campos Contacto, Dirección, Teléfono y Ciudad. Esto los agrega a la lista Campos seleccionados. Una vez agregados los cuatro campos, haga clic en Siguiente.
- Llame a la consulta Contactos de Londres y, a continuación, haga clic en Finalizar.
Access mostrará todos los registros de los contactos en la vista Hoja de datos. Los resultados incluyen todos los registros, pero sólo muestran los cuatro campos especificados en el asistente para consultas.
Haga clic en Vista SQL en la barra de estado de Access o haga clic con el botón secundario en la ficha de objeto de consulta y, a continuación, haga clic en Vista SQL. Access abre la consulta en la vista SQL y muestra la siguiente:
SELECT Customers.[Contact], Customers.[Address], Customers.[Phone], Customers.[City]
FROM Customers;
Tal como puede ver, en SQL la consulta tiene dos partes básicas: la cláusula SELECT, que lista los campos que están incluidos en la consulta, y la cláusula FROM, que lista las tablas que contiene esos campos.
Nota Si ha agregado los campos en un orden diferente al procedimiento anterior, el orden utilizado se reflejará en la cláusula SELECT.
- Cierre la consulta. Tenga en cuenta que la consulta se guarda automáticamente.
Agregar criterios a la consulta
Para limitar el número de registros que se devuelven en los resultados de la consulta, puede especificar criterios.
Un criterio de consulta se puede considerar como una condición que se especifica para un campo. El criterio especifica una condición, basada en los valores del campo, que expresa lo que desea incluir en la consulta, como "mostrar sólo los registros en los que el valor de Ciudad sea Londres".
Abra la consulta en la vista Diseño. Agregará un criterio al campo Ciudad para ver en los resultados de consulta sólo aquellos contactos que son de Londres. También agregará criterios al campo Dirección y al campo Teléfono para depurar aún más los resultados de la consulta.
- En la fila Criterios del campo Ciudad, escriba londres.
Ahora, agregue dos criterios más para que los resultados sean más útiles. Suponga que sólo desea ver los registros en los que estén presentes tanto la dirección como el número de teléfono.
- En la fila Criterios del campo Dirección, escriba No es Nulo AND <>"". Haga lo mismo en la fila Criterios del campo Teléfono.
Nota El criterio, No es Nulo AND <>"", es verdadero siempre que haya un valor conocido no vacío para el campo para el que es un criterio. Es falso siempre que haya un valor desconocido (Nulo) o cuando el valor conocido está vacío (""). Puede usar esta expresión para comprobar un campo para un valor conocido no vacío.
- Cambie a la vista Hoja de datos para ver los resultados.
Revisar la instrucción SQL con criterios
Haga clic en
Vista SQL en la barra de estado de Access o haga clic con el botón secundario en la ficha del documento de consulta y, a continuación, haga clic en
Vista SQL. Access muestra el siguiente código SQL:
SELECT Customers.[Contact], Customers.[Address], Customers.[Phone], Customers.[City]
FROM Customers
WHERE (((Customers.[Address]) Is Not Null And (Customer.[Address])<>"")
AND ((Customer.[Phone]) Is Not Null And (Customer.[Phone])<>"")
AND ((Customer.[City])="london"));
Observará que la instrucción SQL tiene ahora una cláusula WHERE. Los criterios que especifica para los campos de consulta aparecen en SQL en la cláusula WHERE. En este caso, se combinan utilizando el operador AND.
¿Y si no desea que se combinen las condiciones con el operador AND? Dicho de otro modo, ¿cómo especifica dos o más criterios pero de modo que se incluyan los registros que satisfagan simplemente uno de ellos
o ambos?
Especificar criterios alternativos mediante OR
Suponga que desea ver todos los registros en los que la ciudad es Londres y en los que se dispone al menos de un tipo de dato de contacto (ya sea la dirección o el número de teléfono). Desea combinar los criterios mediante el operador OR, de la forma siguiente:
Para especificar criterios alternativos, use las filas
Criterios y
O en la cuadrícula de diseño. Todos los registros que cumplan los criterios definidos en la fila
Criterios o en la fila
O se incluyen en el resultado.
Ahora, modificará la consulta especificando criterios alternativos en las filas
Criterios y
O.
- Regrese a la vista Diseño.
- Quite la cadena No es Nulo AND <>"" de la fila Criterios del campo Teléfono.
- En la fila O del campo Teléfono, escriba No es Nulo AND <>"".
- En la fila O del campo Ciudad, escriba londres.
- Cambie a la vista Hoja de datos para ver los resultados. En los resultados de la consulta, se mostrarán todos los registros que incluyan una dirección, un número de teléfono, o ambos y en los que el campo Ciudad sea Londres.
Nota Para especificar más de dos conjuntos de criterios alternativos, use las filas debajo de la fila O. Cada fila representa un conjunto independiente de criterios.
Revisar la instrucción SQL con criterios revisados
Haga clic en
Vista SQL en la barra de estado de Access o haga clic con el botón secundario en la ficha del documento de consulta y, a continuación, haga clic en
Vista SQL. Access muestra el siguiente código SQL:
SELECT Customers.[Contact], Customers.[Address], Customers.[Phone], Customers.[City]
FROM Customers
WHERE (((Customers.[Address]) Is Not Null And (Customer.[Address])<>"") AND ((Customer.[City])="london"))
OR (((Customers.[Phone]) Is Not Null And (Customers.[Phone])<>"") AND ((Customers.[City])="london"));
Observará que han cambiado dos cosas: el criterio que especifica que la ciudad es Londres aparece ahora dos veces y los criterios de la cláusula WHERE están combinados mediante el operador OR.
Para obtener más información sobre cómo especificar criterios para diversos tipos de campos, vea
Ejemplos de criterios de consulta.
Volver al principio
Agregar cálculos a la consulta
Una base de datos bien diseñada no almacena simples valores calculados en tablas. Por ejemplo, una tabla puede almacenar la fecha de nacimiento de una persona pero no su edad actual. Si se conoce la fecha actual y la fecha de nacimiento de la persona, siempre se puede calcular la edad actual, por lo que no es necesario almacenar ese dato en la tabla. En vez de eso, se crea una consulta que calcula y muestra el valor pertinente. Los cálculos se efectúan cada vez que se ejecuta la consulta, de modo que, si los datos subyacentes cambian, también cambian los resultados calculados.
En este ejercicio, modificará la consulta Contactos de Londres para que muestre la fecha de nacimiento y la edad actual de cada contacto.
- Abra la consulta en la vista Diseño.
- En la ventana de la tabla Clientes, arrastre el campo FechaNacimiento a la primera columna en blanco de la cuadrícula de diseño. También puede hacer doble clic en el nombre del campo para agregarlo automáticamente en la primera columna en blanco.
- En la siguiente columna, en la fila Campo, escriba la expresión que calcule la edad para cada registro. Escriba Edad: DifFecha ("aaaa", [FechaNacimiento], Fecha()).
Edad es el nombre que utiliza para el campo calculado. Si no especifica un nombre, Access usará uno genérico para el campo, por ejemplo, EXPR1. La cadena a continuación de los dos puntos (:) es la expresión que proporciona los valores para cada registro. La función DifFecha calcula la diferencia entre dos fechas cualesquiera y devuelve la diferencia en el formato especificado. El formato aaaa devuelve la diferencia en años y los elementos [FechaNacimiento] y Fecha() de la expresión proporcionan los dos valores de fecha. Fecha es una función que devuelve la fecha actual y [FechaNacimiento] hace referencia al campo FechaNacimiento de la tabla subyacente.
Nota El cálculo usado para Edad en este ejemplo es una aproximación que puede resultar ligeramente imprecisa, en función del mes actual.
Cambie a la vista Hoja de datos. Verá dos campos adicionales, FechaNacimiento y Edad, en el resultado.
Revisar la instrucción SQL con cálculos
Haga clic en
Vista SQL en la barra de estado de Access o haga clic con el botón secundario en la ficha del documento de consulta y, a continuación, haga clic en
Vista SQL. Access muestra el siguiente código SQL:
SELECT Customers.[Contact], Customers.[Address], Customers.[Phone], Customers.[City], Customers.[BirthDate],
DateDiff("yyyy",[BirthDate],Date()) AS Age
FROM Customers
WHERE (((Customers.[Address]) Is Not Null And (Customer.[Address])<>"") AND ((Customer.[City])="london"))
OR (((Customers.[Phone]) Is Not Null And (Customers.[Phone])<>"") AND ((Customers.[City])="london"));
Observe que Clientes.[FechaNacimiento] y el campo calculado, Edad, aparecen ahora en la cláusula SELECT. La clave AS se usa para designar el nombre del campo calculado.
Para obtener más información sobre cómo escribir expresiones que calculan valores en una consulta, vea el artículo
Crear una expresión.
Resumir los valores de la consulta
Resumir las columnas de una consulta es más fácil en Office Access 2007, si se compara con la misma tarea en versiones anteriores de Access. Puede agregar, contar o calcular otros valores agregados y mostrarlos en una fila especial (denominada la fila Total) que aparece debajo de la fila asterisco (*) en la vista Hoja de datos.
Puede usar una función de agregado diferente para cada columna. También puede optar por no resumir una columna.
En este ejercicio, modificará la consulta Contactos de Londres de modo que se muestre la fila
Total.
- Abra la consulta en la vista Hoja de datos.
- En el grupo Registros de la ficha Inicio, haga clic en Totales.
- Haga clic en la fila Total de la columna Contacto.
En la lista desplegable, puede elegir entre Ninguno y Cuenta. Dado que la columna Contacto contiene valores de texto, otras funciones como Suma y Promedio no son aplicables y no están disponibles por lo tanto.
- Seleccione Cuenta para contar el número de contactos que se muestran en el resultado.
El número 5 aparece en la fila Total.
- En el campo Edad, seleccione Promedio. Dado que el campo Edad da como resultado un número, admite las funciones Suma,Promedio, Cuenta, Máximo, Mínimo, Desviación estándar y Varianza.
Access muestra la edad promedio en la fila Total.
Para quitar el total de una columna, haga clic en la fila
Total situada bajo la columna y, después, seleccione
Ninguno en la lista desplegable. Para ocultar la fila
Total, en la ficha
Inicio, en el grupo
Formato y tipo de datos, haga clic en
Totales.
Nota El uso de la fila
Total no cambia la instrucción SQL base.