Microsoft Access es conocido por su interfaz gráfica amigable, sus formularios intuitivos y sus informes sencillos. Sin embargo, bajo esa capa visual, Access es una base de datos relacional potente que soporta un lenguaje fundamental para interactuar con datos: SQL (Structured Query Language). La respuesta directa a la pregunta es un rotundo SÍ. Puedes, y a menudo deberías, escribir SQL en Access para aprovechar al máximo sus capacidades.
https://www.youtube.com/watch?v=0gcJCdgAo7VqN5tD
Utilizar SQL en Access te abre un mundo de posibilidades que van más allá de lo que puedes lograr con la vista de diseño de consultas. Te permite realizar operaciones más complejas, tener un control más fino sobre tus datos y, lo que es muy importante, te introduce a un lenguaje estándar que se utiliza en prácticamente todas las bases de datos relacionales, desde pequeñas aplicaciones hasta sistemas empresariales a gran escala.

- ¿Por qué usar SQL en Access?
- ¿Cómo acceder a la vista SQL en Access?
- Sintaxis Básica de SQL en Access
- Consultas de Acción (Action Queries)
- Uniones (JOINs) en Access SQL
- Funciones y Agregaciones
- Comparación: Vista Diseño vs. Vista SQL
- Consejos para Escribir SQL Efectivo en Access
- Limitaciones o Peculiaridades de Access SQL
- Preguntas Frecuentes (FAQ)
- Conclusión
¿Por qué usar SQL en Access?
Aunque la vista de diseño de consultas de Access es excelente para construir consultas simples y moderadamente complejas arrastrando y soltando, tiene limitaciones. Cuando necesitas:
- Realizar uniones (JOINs) complejas entre múltiples tablas.
- Utilizar funciones avanzadas o agregaciones de formas específicas.
- Escribir subconsultas o consultas anidadas.
- Realizar operaciones de datos masivas y eficientes como actualizar, eliminar o insertar registros basados en criterios complejos.
- Entender cómo funcionan realmente las consultas por detrás.
- Prepararte para trabajar con otras bases de datos como SQL Server, MySQL, PostgreSQL, etc.
En todos estos escenarios, la vista SQL es tu mejor aliada. Te da el poder y la flexibilidad para expresar exactamente lo que quieres que la base de datos haga.
¿Cómo acceder a la vista SQL en Access?
Acceder a la vista SQL en Access es muy sencillo. Los pasos generales son:
- Abre tu base de datos de Access.
- Ve a la pestaña 'Crear'.
- En el grupo 'Consultas', haz clic en 'Diseño de consulta'.
- Access te pedirá que añadas tablas o consultas. Puedes cerrar esta ventana sin añadir nada si quieres escribir una consulta SQL desde cero, o añadir las tablas que planeas usar y luego cambiar de vista.
- Una vez en la vista de diseño de consultas (con o sin tablas), busca el botón 'Ver' (generalmente arriba a la izquierda, o en el grupo 'Resultados' de la pestaña 'Diseño').
- Haz clic en la flecha desplegable junto a 'Ver' y selecciona 'Vista SQL'.
Ahora verás una ventana en blanco (o con algo de código SQL básico si añadiste tablas) donde puedes escribir tus sentencias SQL directamente.
Sintaxis Básica de SQL en Access
El SQL que utiliza Access (conocido como Jet SQL o, más recientemente, ACE SQL) es muy similar al SQL estándar (ANSI SQL), aunque tiene algunas particularidades. Aquí están los comandos básicos que usarás con frecuencia:
SELECT: Recuperar Datos
Este es el comando más común y se usa para seleccionar datos de una o más tablas.
SELECT NombreCampo1, NombreCampo2 FROM NombreTabla WHERE Condicion;
Ejemplo: Seleccionar el nombre y apellido de los clientes de Madrid.
SELECT Nombre, Apellidos FROM Clientes WHERE Ciudad = 'Madrid';
Puedes usar SELECT * para seleccionar todas las columnas.
SELECT * FROM Pedidos;
FROM: Especificar la Fuente de Datos
Indica de qué tabla o tablas quieres obtener los datos.
SELECT Campo FROM Tabla;
WHERE: Filtrar Datos
Especifica los criterios para filtrar los registros que deseas recuperar.
SELECT Campo FROM Tabla WHERE Condicion;
Ejemplo: Seleccionar pedidos con un importe superior a 100.
SELECT * FROM Pedidos WHERE Importe > 100;
Puedes combinar condiciones con AND y OR.
SELECT * FROM Pedidos WHERE Importe > 100 AND FechaPedido > #2023-01-01#;
Nota: Las fechas en Access SQL se encierran entre símbolos de almohadilla (#).
ORDER BY: Ordenar Resultados
Ordena los registros resultantes por una o más columnas.
SELECT Campo FROM Tabla ORDER BY Campo ASC/DESC;
Ejemplo: Seleccionar todos los clientes ordenados por apellido.
SELECT * FROM Clientes ORDER BY Apellidos ASC; (ASC es por defecto, ascendente)
SELECT * FROM Clientes ORDER BY Ciudad ASC, Apellidos DESC; (Ordenar por Ciudad ascendente, y dentro de cada ciudad, por Apellidos descendente)
Consultas de Acción (Action Queries)
Además de las consultas de selección, que solo recuperan datos, Access SQL te permite realizar consultas de acción que modifican los datos de la base de datos. Estas son muy potentes pero requieren precaución, ya que modifican los datos de forma permanente.
INSERT INTO: Insertar Datos
Añade nuevos registros a una tabla.
INSERT INTO NombreTabla (Campo1, Campo2) VALUES (Valor1, Valor2);
Ejemplo: Insertar un nuevo cliente.
INSERT INTO Clientes (Nombre, Apellidos, Ciudad) VALUES ('Ana', 'García', 'Valencia');
También puedes insertar datos seleccionados de otra tabla:
INSERT INTO ClientesInactivos SELECT * FROM Clientes WHERE UltimaActividad < DateAdd('yyyy', -1, Date()); (Inserta clientes inactivos en una tabla de archivo)
UPDATE: Modificar Datos Existentes
Cambia los valores de los registros existentes.
UPDATE NombreTabla SET Campo1 = NuevoValor1, Campo2 = NuevoValor2 WHERE Condicion;
Ejemplo: Actualizar la ciudad de un cliente específico.
UPDATE Clientes SET Ciudad = 'Barcelona' WHERE IDCliente = 5;
¡Cuidado! Si omites la cláusula WHERE, la actualización afectará a *todos* los registros de la tabla.
DELETE: Eliminar Datos
Borra registros de una tabla.
DELETE FROM NombreTabla WHERE Condicion;
Ejemplo: Eliminar clientes de Madrid.
DELETE FROM Clientes WHERE Ciudad = 'Madrid';
¡Cuidado! Si omites la cláusula WHERE, se eliminarán *todos* los registros de la tabla.
MAKE-TABLE: Crear una Nueva Tabla a partir de una Consulta
Crea una nueva tabla basada en los resultados de una consulta.
SELECT Campo1, Campo2 INTO NuevaTabla FROM TablaExistente WHERE Condicion;
Ejemplo: Crear una tabla con los clientes de España.
SELECT * INTO ClientesEspaña FROM Clientes WHERE Pais = 'España';
Uniones (JOINs) en Access SQL
Uno de los aspectos más importantes de las bases de datos relacionales es la capacidad de combinar datos de múltiples tablas basándose en columnas relacionadas. Esto se hace usando JOINs.
INNER JOIN
Devuelve solo las filas donde hay una coincidencia en ambas tablas.
SELECT Clientes.Nombre, Pedidos.FechaPedido FROM Clientes INNER JOIN Pedidos ON Clientes.IDCliente = Pedidos.IDCliente;
LEFT JOIN (LEFT OUTER JOIN)
Devuelve todas las filas de la tabla de la izquierda, y las filas coincidentes de la tabla de la derecha. Si no hay coincidencia, el resultado es NULL en las columnas de la tabla derecha.
SELECT Clientes.Nombre, Pedidos.FechaPedido FROM Clientes LEFT JOIN Pedidos ON Clientes.IDCliente = Pedidos.IDCliente; (Mostrará todos los clientes, incluso si no tienen pedidos)
RIGHT JOIN (RIGHT OUTER JOIN)
Devuelve todas las filas de la tabla de la derecha, y las filas coincidentes de la tabla de la izquierda. Si no hay coincidencia, el resultado es NULL en las columnas de la tabla izquierda.
SELECT Clientes.Nombre, Pedidos.FechaPedido FROM Clientes RIGHT JOIN Pedidos ON Clientes.IDCliente = Pedidos.IDCliente; (Mostrará todos los pedidos, incluso si el cliente asociado no existe en la tabla Clientes - caso raro en bases de datos bien diseñadas)
Funciones y Agregaciones
Access SQL soporta una variedad de funciones integradas (similares a las de Excel) y funciones de agregación para realizar cálculos sobre grupos de filas.
Funciones de agregación comunes:
COUNT(): Cuenta el número de filas.SUM(): Suma los valores de una columna numérica.AVG(): Calcula el promedio de los valores de una columna numérica.MAX(): Encuentra el valor máximo en una columna.MIN(): Encuentra el valor mínimo en una columna.
Estas funciones a menudo se usan con la cláusula GROUP BY para aplicar la agregación a grupos de filas.
Ejemplo: Contar cuántos pedidos ha realizado cada cliente.
SELECT IDCliente, COUNT(IDPedido) AS TotalPedidos FROM Pedidos GROUP BY IDCliente;
Ejemplo: Calcular el total de ventas por ciudad.
SELECT Clientes.Ciudad, SUM(Pedidos.Importe) AS TotalVentas FROM Clientes INNER JOIN Pedidos ON Clientes.IDCliente = Pedidos.IDCliente GROUP BY Clientes.Ciudad;
Comparación: Vista Diseño vs. Vista SQL
Ambas vistas tienen sus méritos y se complementan. La elección entre una y otra depende de la tarea y tu nivel de comodidad.
| Característica | Vista Diseño de Consultas | Vista SQL |
|---|---|---|
| Facilidad de Uso (para principiantes) | Alta (visual, arrastrar y soltar) | Baja (requiere conocer sintaxis) |
| Flexibilidad y Potencia | Moderada (limitada por la interfaz) | Alta (permite cualquier consulta válida) |
| Complejidad de Consultas | Buena para consultas simples/medias | Excelente para consultas complejas, subconsultas, etc. |
| Visualización de la Estructura | Muestra tablas y relaciones gráficamente | Muestra el código textual de la consulta |
| Curva de Aprendizaje | Rápida para lo básico | Requiere aprender la sintaxis SQL |
| Creación de Consultas de Acción | Soportada con botones específicos | Totalmente controlada mediante comandos (INSERT, UPDATE, DELETE, etc.) |
| Depuración | Puede ser más visual para errores básicos | A veces más fácil de encontrar errores lógicos en código complejo |
Es común empezar una consulta en la vista de diseño y luego cambiar a la vista SQL para refinarla o añadir complejidad que no es posible visualmente. Viceversa, puedes escribir una consulta compleja en SQL y luego cambiar a la vista de diseño para ver cómo Access la representa (aunque a veces la representación visual de SQL complejo puede ser confusa).
Consejos para Escribir SQL Efectivo en Access
- Formato: Usa indentación, saltos de línea y mayúsculas para las palabras clave SQL (
SELECT,FROM,WHERE) para hacer tu código más legible. - Comentarios: Usa
--al principio de una línea para añadir comentarios que expliquen partes complejas de tu consulta. - Alias: Usa
ASpara dar nombres cortos y descriptivos a las columnas o tablas, especialmente en JOINs, para simplificar el código y los resultados. Ejemplo:SELECT C.Nombre AS NombreCliente FROM Clientes AS C; - Prueba Incremental: Si construyes una consulta compleja, pruébala por partes. Empieza con el
FROMyJOINs, luego añade elWHERE, luego elGROUP BY, y finalmente elSELECTcon agregaciones. - Ten Cuidado con las Consultas de Acción: Antes de ejecutar una consulta
UPDATEoDELETEen datos importantes, es una buena práctica cambiar el comando aSELECTpara ver qué registros *serían* afectados por la consulta, y solo luego cambiar de nuevo aUPDATEoDELETEy ejecutarla.
Limitaciones o Peculiaridades de Access SQL
Aunque Access SQL es potente, no es idéntico al SQL de sistemas de bases de datos de servidor como SQL Server o PostgreSQL. Algunas diferencias incluyen:
- Sintaxis específica para ciertas funciones (ej:
Date()en lugar deGETDATE()oNOW(),DateAdd(), etc.). - Manejo de parámetros (usando corchetes
[Introduce el valor:]). - Soporte limitado o diferente para algunos tipos de JOINs o cláusulas avanzadas (aunque las versiones modernas de Access han mejorado mucho en esto).
- La forma en que maneja los tipos de datos.
Para la mayoría de las tareas dentro de una aplicación Access, el SQL de Access es más que suficiente, pero si vienes de otro entorno SQL, notarás pequeñas diferencias.
Preguntas Frecuentes (FAQ)
¿Necesito aprender SQL para usar Access?
No, puedes usar Access eficazmente sin saber SQL, especialmente para tareas básicas y medianamente complejas utilizando la vista de diseño. Sin embargo, aprender SQL desbloqueará el potencial completo de Access y te permitirá realizar tareas que de otro modo serían imposibles o extremadamente difíciles.
¿Es el SQL de Access igual que el SQL de SQL Server o MySQL?
Es muy similar, basado en estándares SQL. Pero hay diferencias en la sintaxis de funciones, tipos de datos y algunas características avanzadas. Si sabes SQL de otro sistema, adaptarte al de Access es relativamente fácil.
¿Puedo usar SQL para crear o modificar la estructura de tablas en Access?
Sí, Access SQL soporta sentencias DDL (Data Definition Language) como CREATE TABLE, ALTER TABLE y DROP TABLE. Sin embargo, es mucho más común y sencillo realizar estas operaciones usando la interfaz gráfica de Access para el diseño de tablas.
¿Cómo guardo una consulta que he escrito en la vista SQL?
Una vez que has terminado de escribir tu consulta en la vista SQL, simplemente cierra la ventana de la consulta. Access te preguntará si deseas guardar los cambios. Haz clic en 'Sí', dale un nombre a la consulta, y se guardará como un objeto de consulta en el panel de navegación de Access.
¿Puedo usar parámetros en mis consultas SQL en Access?
Sí. Simplemente incluye el nombre del parámetro entre corchetes en la cláusula WHERE (o donde necesites que se solicite un valor). Por ejemplo: SELECT * FROM Clientes WHERE Ciudad = [Introduce la ciudad:];. Cuando ejecutes esta consulta guardada, Access te pedirá que introduzcas el valor para "Introduce la ciudad:".
Conclusión
La capacidad de escribir y ejecutar SQL es una de las características más poderosas de Microsoft Access. Te permite ir más allá de las limitaciones de la interfaz visual, realizar operaciones de datos complejas y eficientes, y te proporciona una habilidad fundamental en el mundo de las bases de datos. Si bien la vista de diseño es excelente para empezar, dominar la vista SQL te convertirá en un usuario mucho más capaz y versátil de Access. No tengas miedo de experimentar; empieza con consultas SELECT simples y ve aumentando la complejidad gradualmente. ¡El poder del SQL en Access está a tu alcance!
Si quieres conocer otros artículos parecidos a Usando SQL en Microsoft Access puedes visitar la categoría Bases de datos.

Aprende mas sobre MySQL