Si quiere recuperar datos desde una base de datos, solicite los datos mediante lenguaje de consulta estructurado o SQL. SQL es un lenguaje de computación que se asemeja al inglés, pero que comprenden los programas de base de datos. Todas las consultas que ejecuta usan SQL en segundo plano.
Si comprende el funcionamiento de SQL podrá crear mejores consultas además de facilitar la forma de solucionar una consulta que no devuelve los resultados que quiere.
Este es uno de un conjunto de artículos sobre Access SQL. En este artículo, se describe el uso básico de SQL para seleccionar datos y se usan ejemplos para ilustrar la sintaxis de SQL.
En este artículo...
¿Qué es SQL?
SQL es un lenguaje de computación para trabajar con conjuntos de datos y las relaciones entre ellos. Los programas de bases de datos relacionales, como Microsoft Office Access, usan SQL para trabajar con datos. A diferencia de muchos lenguajes de computación, SQL no es difícil de leer y entender, incluso para un usuario inexperto. Al igual que muchos lenguajes de computación, SQL es un estándar internacional reconocido por organismos de estándares como ISO y ANSI.
SQL se usa para describir conjuntos de datos que pueden ayudarle a responder preguntas. Al usar SQL, debe usar la sintaxis correcta. La sintaxis es el conjunto de reglas mediante las que se combinan correctamente los elementos de un idioma. La sintaxis SQL se basa en la sintaxis del idioma inglés y usa muchos de los mismos elementos que la sintaxis de Visual Basic para Aplicaciones (VBA).
Por ejemplo, una simple instrucción SQL que recupera una lista de los apellidos de contactos cuyo nombre es María podría ser similar a esto:
SELECT Last_Name
FROM Contacts WHERE First_Name = 'Mary';
Nota: SQL no se usa solo para manipular datos, sino también para crear y modificar el diseño de objetos de base de datos, como tablas. El elemento de SQL que se usa para crear y modificar objetos de base de datos se denomina lenguaje de definición de datos (DDL). Este tema no trata el DDL. Para obtener más información, vea el artículo Crear o modificar tablas o índices mediante una consulta de definición de datos.
Instrucciones SELECT
Para describir un conjunto de datos con SQL, se escribe una instrucción SELECT. Una instrucción SELECT contiene una descripción completa de un conjunto de datos que quiere obtener de una base de datos. Se incluye lo siguiente:
-
Qué tablas contienen los datos.
-
Cómo se relacionan los datos de orígenes diferentes.
-
Qué campos o cálculos proporcionarán los datos.
-
Criterios que los datos deben cumplir para ser incluidos.
-
Si se deben ordenar los datos y, en caso de ser así, cómo deben ordenarse.
Cláusulas SQL
Como una frase, una instrucción SQL tiene cláusulas. Cada cláusula realiza una función de la instrucción SQL. Algunas cláusulas son necesarias en una instrucción SELECT. En la siguiente tabla, se enumeran las cláusulas SQL más comunes.
Cláusula SQL |
Función |
Obligatorio |
SELECT |
Muestra una lista de los campos que contienen datos de interés. |
Sí |
FROM |
Muestra las tablas que contienen los campos de la cláusula SELECT. |
Sí |
WHERE |
Especifica los criterios de campo que cada registro debe cumplir para poder ser incluido en los resultados. |
No |
ORDER BY |
Especifica la forma de ordenar los resultados. |
No |
GROUP BY |
En una instrucción SQL que contiene funciones de agregado, muestra los campos que no se resumen en la cláusula SELECT. |
Solo si están estos campos |
HAVING |
En una instrucción SQL que contiene funciones de agregado, especifica las condiciones que se aplican a los campos que se resumen en la instrucción SELECT. |
No |
Términos de SQL
Cada cláusula SQL se compone de términos, comparables a elementos de la oración. En la siguiente tabla, se enumeran los tipos de términos de SQL.
Término de SQL |
Elemento de la oración comparable |
Definición |
Ejemplo |
identificador |
sustantivo |
Nombre que se usa para identificar un objeto de la base de datos, como el nombre de un campo. |
Clientes.[Número de teléfono] |
operador |
verbo o adverbio |
Palabra clave que representa o modifica una acción. |
AS |
constante |
sustantivo |
Valor que no cambia, como un número o un valor nulo (NULL). |
42 |
expresión |
adjetivo |
Combinación de identificadores, operadores, constantes y funciones que se evalúa como un valor único. |
> = Productos.[Precio por unidad] |
Cláusulas SQL básicas: SELECT, FROM y WHERE
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.