Una instrucción SQL tiene el formato general:
SELECT field_1
FROM table_1
WHERE criterion_1
;
Notas:
- Access pasa por alto los saltos de línea en una instrucción SQL. En cambio, conviene usar una línea para cada cláusula para que las instrucciones SQL sean más fáciles de leer por todos.
- Cada una de las instrucciones SELECT termina con un punto y coma (;). El punto y coma puede aparecer al final de la última cláusula o solo en una línea al final de la instrucción SQL.
Un ejemplo en Access
A continuación se muestra el aspecto que podría tener en Access una instrucción SQL para una consulta de selección simple:
1. Cláusula SELECT
2. Cláusula FROM
3. Cláusula WHERE
En este ejemplo de instrucción SQL, se indica "Seleccionar los datos almacenados en los campos Dirección de correo electrónico y Empresa de la tabla llamada Contactos, específicamente aquellos registros en los cuales el valor del campo Ciudad sea Seattle".
A continuación se incluye un ejemplo y se describe cada cláusula para mostrar cómo funciona la sintaxis SQL.
Cláusula SELECT
SELECT [E-mail Address], Company
Esta es la cláusula SELECT. Se compone de un operador (SELECT) seguido de dos identificadores ([Dirección de correo electrónico] y Empresa).
Si un identificador contiene espacios o caracteres especiales (como "Dirección de correo electrónico"), se debe escribir entre corchetes.
Una cláusula SELECT no tiene que mencionar las tablas que contienen los campos y no puede especificar las condiciones que deben cumplir los datos que se van a incluir.
La cláusula SELECT siempre aparece antes que la cláusula FROM en una instrucción SELECT.
Cláusula FROM
FROM Contacts
Esta es la cláusula FROM. Se compone de un operador (FROM) seguido de un identificador (Contactos).
Una cláusula FROM no enumera los campos que se van a seleccionar.
Cláusula WHERE
WHERE City="Seattle"
Esta es la cláusula WHERE. Se compone de un operador (WHERE) seguido de un identificador (Ciudad="Seattle").
Nota: A diferencia de las cláusulas SELECT y FROM, la cláusula WHERE no es un elemento obligatorio en una instrucción SELECT.
Puede llevar a cabo muchas de las acciones que le permite realizar SQL con las cláusulas SELECT, FROM y WHERE. En estos artículos adicionales se presenta más información sobre cómo usar estas cláusulas:
Ordenar los resultados: ORDER BY
Como Microsoft Excel, Access le permite ordenar los resultados de la consulta en una hoja de datos. También puede especificar en la consulta cómo quiere ordenar los resultados al ejecutar la consulta, mediante una cláusula ORDER BY. Si usa una cláusula ORDER BY, es la última cláusula en la instrucción SQL.
Una cláusula ORDER BY contiene una lista de los campos que quiere usar para ordenar, en el mismo orden en el que quiere aplicar las operaciones de ordenación.
Por ejemplo, suponga que quiere ordenar los resultados por el valor del campo Empresa en orden descendente y, en caso de que haya registros con el mismo valor para Empresa, quiere ordenarlos además por el valor indicado en el campo Dirección de correo electrónico en orden ascendente. La cláusula ORDER BY podría ser similar a la siguiente:
ORDER BY Company DESC, [E-mail Address]
Nota: De forma predeterminada, Access ordena los valores en orden ascendente (A-Z, de menor a mayor). Use la palabra clave DESC para ordenar los valores en orden descendente en su lugar.
Para obtener más información sobre la cláusula ORDER BY, vea el tema sobre la cláusula ORDER BY.
Trabajar con datos resumidos: GROUP BY y HAVING
A veces quiere trabajar con datos resumidos, como las ventas totales en un mes o los elementos más caros de un inventario. Para ello, aplique una función de agregado a un campo en la cláusula SELECT. Por ejemplo, si quiere que la consulta muestre el recuento de las direcciones de correo electrónico enumeradas de cada empresa, la cláusula SELECT podría ser similar a la siguiente:
SELECT COUNT([E-mail Address]), Company
Las funciones de agregado que puede usar dependen del tipo de datos que haya en el campo o la expresión que quiera usar. Para obtener más información sobre las funciones de agregado disponibles, consulte el artículo Funciones de agregado de SQL.
Especificar campos que no se usan en una función de agregado: Cláusula GROUP BY
Al usar funciones de agregado, normalmente debe crear también una cláusula GROUP BY. Una cláusula GROUP BY enumera todos los campos a los que no se aplica una función de agregado. Si aplica funciones de agregado a todos los campos en una consulta, no tendrá que crear la cláusula GROUP BY.
Una cláusula GROUP BY va inmediatamente después de la cláusula WHERE, o la cláusula FROM si no hay ninguna cláusula WHERE. Una cláusula GROUP BY enumera los campos tal y como aparecen en la cláusula SELECT.
Por ejemplo, siguiendo con el ejemplo anterior, si la cláusula SELECT aplica una función de agregado a [Dirección de correo electrónico] pero no a Empresa, la cláusula GROUP BY sería similar a la siguiente:
GROUP BY Company
Para obtener más información sobre la cláusula GROUP BY, vea el tema sobre la cláusula GROUP BY.
Limitar los valores de agregado mediante los criterios de agrupación: cláusula HAVING
Si quiere usar criterios para limitar los resultados, pero el campo al que quiere aplicar los criterios se usa en una función de agregado, no puede usar una cláusula WHERE. En su lugar, use una cláusula HAVING. Una cláusula HAVING funciona como una cláusula WHERE, pero se usa para los datos agregados.
Por ejemplo, suponga que usa la función COUNT (que devuelve un número de filas) con el primer campo de la cláusula SELECT:
SELECT COUNT([E-mail Address]), Company
Si quiere que la consulta restrinja los resultados según el valor de esa función COUNT, no puede usar un criterio para ese campo en la cláusula WHERE. En su lugar, coloque los criterios en una cláusula HAVING. Por ejemplo, si solo quiere que la consulta devuelva filas si hay más de una dirección de correo electrónico asociada a la empresa, la cláusula HAVING podría ser similar a la siguiente:
HAVING COUNT([E-mail Address])>1
Nota: Una consulta puede incluir una cláusula WHERE y una cláusula HAVING: los criterios para los campos que no se usan en una función de agregado se corresponden con la cláusula WHERE y los criterios de los campos que se usan en las funciones de agregado se corresponden con la cláusula HAVING.
Para obtener más información sobre la cláusula HAVING, vea el tema sobre la cláusula HAVING.
Combinar los resultados de las consultas: UNION
Si quiere revisar todos los datos obtenidos en conjunto de varias consultas de selección similares, como un conjunto combinado, use el operador UNION.
El operador UNION le permite combinar dos instrucciones SELECT en una. Las instrucciones SELECT que combine deben tener el mismo número de campos de resultado, en el mismo orden y con el mismo tipo de datos o con tipos de datos compatibles. Al ejecutar la consulta, los datos de cada conjunto de campos correspondientes se combinan en un único campo de resultado de modo que el resultado de la consulta tenga el mismo número de campos que cada una de las instrucciones SELECT.
Nota: Para las consultas de unión, los tipos de datos Texto y Número son compatibles.
Si usa el operador UNION, también puede usar la palabra clave ALL para especificar si los resultados de la consulta deben incluir las filas duplicadas, si existe alguna.
La sintaxis básica de SQL para una consulta de unión que combina dos instrucciones SELECT es la siguiente:
SELECT field_1
FROM table_1
UNION [ALL]
SELECT field_a
FROM table_a
;
Por ejemplo, supongamos que tiene una tabla denominada Productos y otra tabla denominada Servicios. Ambas tablas tienen campos que contienen el nombre del producto o servicio, el precio, la disponibilidad de garantía del servicio o de garantía del producto, y si el producto o servicio se ofrece de forma exclusiva. Aunque en la tabla Productos se almacena información de garantía del producto y en la tabla Servicios se almacena información de garantía del servicio, la información básica es la misma (si un producto o servicio determinado incluye una garantía de calidad). Puede usar una consulta de unión, como la que se muestra a continuación, para combinar los cuatro campos de las dos tablas:
SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services
;
Para obtener más información sobre cómo combinar instrucciones SELECT mediante el operador UNION, vea Usar una consulta de unión para combinar varias consultas en un mismo resultado.