Cuando trabajamos con bases de datos, una de las tareas más fundamentales es la de recuperar información. No solo se trata de almacenar datos, sino de poder acceder a ellos de forma selectiva, filtrada y organizada según nuestras necesidades. Aquí es donde entra en juego el Lenguaje de Consulta de Datos, o DQL por sus siglas en inglés (Data Query Language). Aunque a menudo se considera parte del Lenguaje de Manipulación de Datos (DML), el DQL tiene un propósito muy específico y crucial: consultar y recuperar información sin modificarla.

SQL, el Lenguaje de Consulta Estructurado, es el estándar de facto para gestionar bases de datos relacionales. Dentro de SQL, el DQL está representado principalmente por una única pero increíblemente potente sentencia: SELECT. Esta sentencia es la herramienta que nos permite comunicarnos con la base de datos y pedirle exactamente los datos que queremos ver, de dónde los queremos y bajo qué condiciones.
¿Qué es el Lenguaje de Consulta de Datos (DQL)?
El DQL, o Lenguaje de Consulta de Datos, es la parte de un lenguaje de base de datos que se utiliza específicamente para realizar consultas. Su objetivo principal es obtener y organizar datos a partir de los objetos de esquema (como tablas y vistas) dentro de un sistema de información o base de datos.
A diferencia de otras categorías de comandos SQL que modifican la estructura de la base de datos (DDL) o los datos almacenados (DML), los comandos DQL se enfocan exclusivamente en la recuperación de información. No insertan, actualizan ni eliminan datos; simplemente los leen y los presentan al usuario o a una aplicación.
La sentencia SELECT es la piedra angular del DQL en SQL. Permite especificar qué columnas (o "expresiones") se desean recuperar, de qué tabla(s) se obtendrán los datos y qué filas cumplen con ciertas condiciones. El resultado de una sentencia SELECT es una nueva tabla temporal que contiene los datos solicitados, la cual puede ser mostrada directamente o utilizada por otro programa.
La Sentencia SELECT: El Corazón del DQL
La sentencia SELECT es la única sentencia considerada puramente DQL dentro del estándar SQL. Su versatilidad radica en las diversas cláusulas que la acompañan, permitiendo definir con gran precisión el conjunto de resultados deseado.
Estructura Básica de un SELECT
La sintaxis básica de una sentencia SELECT incluye al menos dos cláusulas:
SELECT columnas_o_expresiones FROM nombre_tabla;Aquí:
SELECT columnas_o_expresiones: Especifica qué datos se van a recuperar. Puede ser una lista de nombres de columnas separadas por comas, expresiones que realicen cálculos o transformaciones sobre las columnas, o un asterisco (*) para seleccionar todas las columnas de la tabla.FROM nombre_tabla: Indica la tabla de la cual se van a obtener los datos.
Por ejemplo, para obtener todas las columnas de una tabla llamada Clientes:
SELECT * FROM Clientes;Para obtener solo el nombre y el email de los clientes:
SELECT Nombre, Email FROM Clientes;Cláusulas Adicionales Comunes
La verdadera potencia de SELECT se manifiesta al combinarla con otras cláusulas:
WHERE: Permite filtrar las filas basándose en una o más condiciones. Solo se recuperan las filas que cumplen la condición especificada.
SELECT Nombre, Apellido FROM Clientes WHERE Ciudad = 'Madrid';Este ejemplo recupera el nombre y apellido solo de los clientes que viven en Madrid.
ORDER BY: Se utiliza para ordenar el conjunto de resultados por una o más columnas, ya sea en orden ascendente (ASC, por defecto) o descendente (DESC).
SELECT Nombre, Salario FROM Empleados ORDER BY Salario DESC;Esto mostraría los nombres y salarios de los empleados, ordenados del salario más alto al más bajo.
GROUP BY: Agrupa filas que tienen los mismos valores en una o más columnas. Se usa a menudo con funciones de agregación (comoCOUNT(),SUM(),AVG(),MIN(),MAX()) para realizar cálculos sobre cada grupo.
SELECT Ciudad, COUNT(*) FROM Clientes GROUP BY Ciudad;Esto contaría cuántos clientes hay en cada ciudad.
HAVING: Similar aWHERE, pero se utiliza para filtrar grupos creados por la cláusulaGROUP BY. Las condiciones enHAVINGse aplican después de que los grupos han sido formados y las funciones de agregación calculadas.
SELECT Ciudad, COUNT(*) FROM Clientes GROUP BY Ciudad HAVING COUNT(*) > 10;Esto contaría cuántos clientes hay por ciudad, pero solo mostraría las ciudades que tienen más de 10 clientes.
LIMIT(MySQL, PostgreSQL) oTOP(SQL Server): Limita el número de filas retornadas por la consulta.
SELECT Nombre, Salario FROM Empleados ORDER BY Salario DESC LIMIT 5; -- Para MySQL/PostgreSQLSELECT TOP 5 Nombre, Salario FROM Empleados ORDER BY Salario DESC; -- Para SQL ServerEsto mostraría los 5 empleados con los salarios más altos.
Funciones de Agregación en SELECT
Las funciones de agregación son esenciales en DQL para obtener resúmenes de datos. Algunas comunes son:
COUNT(): Cuenta el número de filas.SUM(): Calcula la suma de los valores en una columna numérica.AVG(): Calcula el promedio de los valores en una columna numérica.MIN(): Encuentra el valor mínimo en una columna.MAX(): Encuentra el valor máximo en una columna.
Estas funciones se usan típicamente en la cláusula SELECT y a menudo en combinación con GROUP BY.
SELECT AVG(Edad) FROM Usuarios;Esto calcularía la edad promedio de todos los usuarios.
Ejemplo Completo
Retomando el ejemplo proporcionado:
SELECT Stu_Name FROM Student WHERE Phone = 9039462908;Esta consulta selecciona el nombre (Stu_Name) de la tabla Student, pero solo para las filas donde el número de teléfono (Phone) es exactamente 9039462908. El resultado sería una tabla temporal con una sola columna (Stu_Name) y una única fila (si existe un estudiante con ese teléfono).
DQL vs. Otras Categorías de SQL
Es útil diferenciar el DQL de otras categorías de comandos SQL para entender su rol específico.
| Categoría | Siglas | Propósito | Comandos Principales |
|---|---|---|---|
| Lenguaje de Consulta de Datos | DQL | Recuperar datos | SELECT |
| Lenguaje de Manipulación de Datos | DML | Modificar datos | INSERT, UPDATE, DELETE, MERGE |
| Lenguaje de Definición de Datos | DDL | Definir/modificar estructura | CREATE, ALTER, DROP, TRUNCATE, RENAME |
| Lenguaje de Control de Datos | DCL | Controlar accesos/permisos | GRANT, REVOKE |
| Lenguaje de Control de Transacciones | TCL | Gestionar transacciones | COMMIT, ROLLBACK, SAVEPOINT |
Como se ve en la tabla, DQL es puramente para leer, mientras que DML es para escribir (modificar) datos. Aunque a veces se agrupan DQL y DML bajo el término general de DML porque ambos operan sobre los datos, la distinción es importante conceptualmente.
Importancia del DQL
El DQL, a través de la sentencia SELECT, es fundamental porque:
- Permite acceder a la información almacenada en la base de datos. Sin la capacidad de consultar, los datos serían inaccesibles.
- Facilita la toma de decisiones al permitir analizar y resumir grandes volúmenes de datos.
- Es la base para la mayoría de las aplicaciones que interactúan con bases de datos, ya que la primera acción suele ser recuperar datos para mostrarlos al usuario.
- Permite filtrar y ordenar resultados, lo que es crucial para presentar la información de manera útil y manejable.
Dominar la sentencia SELECT y sus cláusulas es esencial para cualquier persona que trabaje con bases de datos SQL.
Preguntas Frecuentes sobre DQL
A continuación, respondemos algunas preguntas comunes sobre el Lenguaje de Consulta de Datos en SQL.
¿Cuál es el comando principal de DQL en SQL?
El comando principal y prácticamente único del DQL en SQL es la sentencia SELECT.
¿DQL forma parte de SQL?
Sí, DQL es una categoría de comandos dentro del estándar SQL.
¿Puedo modificar datos usando DQL?
No, los comandos DQL (principalmente SELECT) están diseñados únicamente para recuperar datos. No permiten insertar, actualizar ni eliminar información de la base de datos. Esa es la función de los comandos DML (INSERT, UPDATE, DELETE).
¿Cuál es la diferencia entre WHERE y HAVING?
La cláusula WHERE se utiliza para filtrar filas individuales antes de que se agrupen (si se usa GROUP BY). La cláusula HAVING se usa para filtrar grupos después de que se han formado y se han calculado las funciones de agregación.
¿Por qué se dice que la cláusula SELECT se procesa conceptualmente al final?
Aunque se escribe al principio de la sentencia, la base de datos procesa las cláusulas en un orden lógico diferente (típicamente FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY). La cláusula SELECT se procesa conceptualmente tarde porque necesita conocer el conjunto de filas y columnas resultante de las cláusulas anteriores (FROM, JOIN, WHERE, GROUP BY, HAVING) antes de determinar qué columnas finales mostrar o qué expresiones calcular.
¿Es DQL lo mismo que DML?
No, son categorías diferentes. DQL es para consultar (leer) datos, mientras que DML es para manipular (escribir, modificar, eliminar) datos. Aunque a veces se agrupan, su propósito es distinto.
Conclusión
El Lenguaje de Consulta de Datos, ejemplificado en SQL por la poderosa sentencia SELECT, es una parte indispensable del trabajo con bases de datos. Permite a los usuarios y aplicaciones acceder, filtrar y organizar la vasta cantidad de información almacenada, transformando datos crudos en conocimiento útil. Dominar las diferentes cláusulas que acompañan a SELECT es clave para extraer exactamente lo que se necesita de la base de datos de manera eficiente. Entender el rol de DQL y distinguirlo de otras categorías de comandos SQL como DDL y DML es fundamental para una gestión y consulta de datos efectiva.
Si quieres conocer otros artículos parecidos a DQL en SQL: El Lenguaje de Consulta de Datos puedes visitar la categoría Bases de datos.

Aprende mas sobre MySQL