Guía Completa y Ejemplos Detallados de Comandos SQL: Desde lo Básico Hasta Consultas Avanzadas

Última actualización: 16/06/2025
Autor: Isaac
  • Descubre los comandos SQL esenciales y ejemplos prácticos para consultas, gestión y seguridad en bases de datos.
  • Aprende a utilizar SELECT, WHERE, JOIN, GROUP BY, funciones agregadas y vistas, con sintaxis y casos reales.
  • Conoce trucos avanzados, manejo de permisos y preguntas frecuentes para dominar SQL en entornos profesionales.

comandos SQL en bases de datos

El Lenguaje de Consulta Estructurada (SQL, por sus siglas en inglés) es una de esas herramientas que, una vez dominas, se convierte en tu mejor aliada para interactuar con cualquier base de datos relacional. Si te has preguntado alguna vez cómo acceder, modificar, eliminar o analizar grandes volúmenes de datos de manera sencilla y eficaz, SQL es la respuesta que buscabas. Aprender a utilizar correctamente los comandos SQL marca la diferencia entre ser un usuario básico y convertirte en un auténtico experto en la gestión y análisis de datos.

En este artículo te traigo un recopilatorio exhaustivo de los principales comandos SQL acompañados de explicaciones claras y ejemplos prácticos, abarcando desde los fundamentos hasta consultas más avanzadas. Además, te mostraré trucos y detalles que suelen pasar desapercibidos en artículos más superficiales, para que puedas sacarle el máximo partido a tus bases de datos, independientemente de que estés empezando o busques perfeccionar tus conocimientos. Prepárate para sumergirte en el universo SQL y descubrir cómo este lenguaje puede transformar tu manera de trabajar con la información.

¿Qué es SQL y por qué sigue siendo esencial?

SQL, o Structured Query Language, es un lenguaje de programación especialmente diseñado para gestionar y manipular bases de datos relacionales. Aunque fue desarrollado en la década de los 70, sigue siendo la solución estándar para comunicarnos con bases de datos como MySQL, PostgreSQL, SQL Server, MariaDB u Oracle Database, entre otros.

El motivo de su longevidad es simple: SQL permite desde tareas básicas como consultar datos hasta operaciones avanzadas como unir tablas complejas, crear estructuras, actualizar registros en masa o definir permisos. Además, su sintaxis es lo suficientemente sencilla como para que cualquier persona pueda empezar a familiarizarse rápidamente, pero lo bastante potente como para resolver problemas complejos de negocio.

Profesionales de múltiples áreas – desde desarrolladores, analistas y administradores de bases de datos, hasta científicos de datos – confían en SQL para procesar, limpiar y analizar la información crítica de sus proyectos y organizaciones.

Categorías de comandos SQL: DQL, DML, DDL y DCL

Antes de lanzarnos a los ejemplos, conviene recordar que los comandos SQL se pueden agrupar en diferentes categorías según su función:

  • DQL (Data Query Language): Son las sentencias para consultar datos, como SELECT.
  • DML (Data Manipulation Language): Manipulan registros, con comandos como INSERT, UPDATE y DELETE.
  • DDL (Data Definition Language): Gestionan la estructura de la base de datos, por ejemplo, CREATE, ALTER, DROP y TRUNCATE.
  • DCL (Data Control Language): Controlan permisos y accesos, usando GRANT y REVOKE.

Cada tipo de comando cumple una función esencial en la vida diaria del manejo de bases de datos. Es importante conocer qué comando utilizar en cada situación para evitar errores o incluso desastres en la gestión de los datos.

Principales comandos SQL: Fundamentos y ejemplos prácticos

El dominio de los comandos básicos de SQL abre la puerta a prácticamente cualquier tarea de gestión o análisis de datos. A continuación te explico los más relevantes, cómo funcionan y ejemplos de uso que te ayudarán a interiorizarlos.

SELECT: El rey de las consultas

El comando SELECT es el pilar sobre el que se construyen la mayoría de las operaciones en SQL. Permite recuperar datos almacenados en una o varias tablas.

Sintaxis general:

SELECT columna1, columna2, ... FROM nombre_de_tabla;

Para obtener todas las columnas de una tabla, simplemente utiliza el asterisco:

SELECT * FROM empleados;

Si quieres filtrar datos específicos, puedes añadir condiciones:

SELECT nombre, edad FROM empleados WHERE edad > 30;

Gracias a SELECT puedes recuperar desde un único valor hasta conjuntos de datos complejos, aplicar funciones agregadas, calcular columnas derivadas y preparar la información para informes o visualizaciones.

  Cómo Usar El Menú En Netbeans Para Diseñar Una GUI Swing

WHERE: Filtrando resultados de manera precisa

La cláusula WHERE te permite especificar condiciones para seleccionar solo aquellas filas que cumplan ciertos criterios. Es un filtro fundamental para cualquier consulta.

Sintaxis básica:

SELECT * FROM productos WHERE precio < 100;

Puedes combinar condiciones usando operadores lógicos como AND, OR y NOT, así como operadores de comparación (=, <, >, <=, >=, <>).

Por ejemplo, para obtener empleados del departamento de ventas menores de 30 años:

SELECT * FROM empleados WHERE departamento = 'Ventas' AND edad < 30;

consultas SQL ejemplos

INSERT: Añadiendo nuevos registros

Con INSERT puedes agregar nuevas filas a una tabla. Es esencial para alimentar tus bases de datos con información fresca.

Sintaxis general:

INSERT INTO productos (nombre, precio) VALUES ('Teclado', 29.99);

Si quieres añadir varios registros en una sola consulta, también puedes hacerlo:

INSERT INTO productos (nombre, precio) VALUES ('Ratón', 15.50), ('Monitor', 120.00);

Recuerda que si omites la lista de columnas, deberás proporcionar un valor para cada campo de la tabla, respetando su orden.

UPDATE: Modificando datos existentes

El comando UPDATE permite cambiar el valor de uno o varios campos de los registros que cumplen una condición determinada. Es útil para corregir errores o actualizar información.

Sintaxis:

UPDATE empleados SET salario = salario * 1.05 WHERE departamento = 'Marketing';

En este ejemplo, todos los empleados de Marketing verán su salario incrementado en un 5%. Es fundamental usar WHERE siempre que actualices, a menos que realmente quieras modificar toda la tabla.

DELETE: Eliminando datos

Para borrar registros utiliza DELETE junto a una condición, evitando así eliminar accidentalmente todos los datos de la tabla.

Ejemplo:

DELETE FROM productos WHERE id_producto = 10;

Si omites la cláusula WHERE, se eliminarán todas las filas de la tabla. ¡Cuidado!

ORDER BY: Organizando resultados

La cláusula ORDER BY sirve para ordenar los resultados de una consulta según una o varias columnas. Por defecto, el orden será ascendente, pero puedes indicar ASC o DESC según lo necesites.

SELECT * FROM empleados ORDER BY salario DESC;

Puedes combinar varias columnas en la ordenación:

SELECT * FROM productos ORDER BY categoria ASC, precio DESC;

GROUP BY y funciones agregadas: SUM, AVG, MIN, MAX, COUNT

GROUP BY permite agrupar los resultados según una o más columnas, lo que resulta muy útil junto a funciones como SUM() (suma), AVG() (media), MIN (mínimo), MAX (máximo) y COUNT (conteo).

Por ejemplo, para conocer cuántos productos existen en cada categoría:

SELECT categoria, COUNT(*) FROM productos GROUP BY categoria;

O para calcular la factura total de cada cliente:

SELECT id_cliente, SUM(importe) FROM ventas GROUP BY id_cliente;

Puedes filtrar los grupos resultantes usando la cláusula HAVING:

SELECT departamento, AVG(salario) FROM empleados GROUP BY departamento HAVING AVG(salario) > 2000;

LIMIT y OFFSET: Acotando el número de resultados

Cuando tus tablas tienen miles de registros, LIMIT es fundamental para mostrar solo una parte de los resultados, mejorando el rendimiento y la legibilidad.

SELECT * FROM productos LIMIT 10;

Con OFFSET puedes saltarte un número de filas, útil para paginación:

SELECT * FROM productos LIMIT 10 OFFSET 20;

BETWEEN, IN y LIKE: Condiciones avanzadas en WHERE

Estas palabras clave amplían las posibilidades de filtrado:

  • BETWEEN: Selecciona valores dentro de un rango.
    SELECT * FROM empleados WHERE salario BETWEEN 1000 AND 3000;
  • IN: Busca múltiples valores.
    SELECT * FROM productos WHERE categoria IN ('Informática', 'Electrónica');
  • LIKE: Busca patrones en texto.
    SELECT * FROM clientes WHERE nombre LIKE 'A%';

También se pueden utilizar caracteres comodín como % (cualquier número de caracteres) y _ (un solo carácter) para personalizar aún más las búsquedas con LIKE.

JOIN: Cruzando información entre tablas

Uno de los grandes poderes de SQL es la posibilidad de combinar datos de diferentes tablas usando JOIN. Las más habituales son:

  • INNER JOIN: Devuelve filas coincidentes en ambas tablas.
  • LEFT JOIN: Devuelve todas las filas de la tabla izquierda y las coincidencias de la derecha (rellenando con NULL si no hay coincidencia).
  • RIGHT JOIN: Devuelve todas las filas de la tabla derecha y las coincidentes de la izquierda.
  • FULL OUTER JOIN: Devuelve todas las filas de ambas tablas (rellena con NULL donde no exista coincidencia).
  Cómo Crear Un Menú En Access – Guía Completa

Ejemplo de INNER JOIN:

SELECT pedidos.id, clientes.nombre FROM pedidos INNER JOIN clientes ON pedidos.id_cliente = clientes.id;

LEFT JOIN:

SELECT empleados.nombre, ventas.importe FROM empleados LEFT JOIN ventas ON empleados.id = ventas.id_empleado;

ALTER, CREATE y DROP: Modificando la estructura de la base de datos

Además de manipular datos, SQL permite definir y modificar la estructura de las tablas y otros objetos de la base de datos:

  • CREATE: Para crear nuevos objetos (tablas, vistas, índices, usuarios…).
    CREATE TABLE productos (id INT PRIMARY KEY, nombre VARCHAR(100), precio DECIMAL(8,2));
  • ALTER: Para modificar la estructura de un objeto existente.
    ALTER TABLE productos ADD descripcion VARCHAR(255);
    ALTER TABLE productos ALTER COLUMN precio SET NOT NULL;
  • DROP: Para eliminar objetos de la base de datos.
    DROP TABLE productos;
    DROP USER usuario_ejemplo CASCADE;

Vistas (VIEW): Consultas reutilizables y filtrado avanzado

Las vistas son objetos virtuales que representan una consulta guardada. Funcionan como una tabla, pero no almacenan datos, solo apuntan a información en otras tablas. Son útiles para simplificar consultas complejas, centralizar filtros y facilitar el acceso a información específica.

CREATE VIEW empleados_activos AS SELECT * FROM empleados WHERE activo = 1;

Puedes consultar la vista igual que una tabla:

SELECT * FROM empleados_activos;

Las vistas son ideales para gestionar permisos y mostrar solo datos relevantes a ciertos usuarios.

Funciones agregadas y cálculos sobre columnas

SQL permite trabajar con funciones agregadas y operadores aritméticos para realizar cálculos sobre los datos:

  • SUM(): Suma total de una columna.
  • AVG(): Media aritmética.
  • MIN() y MAX(): Mínimo y máximo.
  • COUNT(): Número de registros.

Por ejemplo, si quieres la cantidad de empleados por departamento:

SELECT departamento, COUNT(*) FROM empleados GROUP BY departamento;

O el salario más alto por departamento:

SELECT departamento, MAX(salario) FROM empleados GROUP BY departamento;

Incluso puedes crear columnas calculadas directamente en la consulta:

SELECT nombre, salario * 0.95 AS salario_neto FROM empleados;

Uso de alias (AS) para tablas y columnas

En las consultas, puedes asignar nombres temporales a columnas y tablas usando el comando AS. Esto facilita la lectura de los resultados y la escritura de consultas complejas.

Por ejemplo:

SELECT e.nombre AS empleado, d.nombre AS departamento FROM empleados AS e JOIN departamentos AS d ON e.id_departamento = d.id;

Así, el resultado mostrará las columnas con nombres personalizados. El uso de alias es especialmente útil al hacer JOINs o cuando las columnas tienen nombres largos o poco descriptivos.

Ejemplos avanzados de consultas SQL: Resuelve casos reales

Para convertirte en una persona autosuficiente en SQL necesitas enfrentarte a retos reales. A continuación tienes ejemplos ampliados extraídos de casos prácticos que ayudan a consolidar el conocimiento.

Consulta de todos los empleados de un departamento y sus ventas totales

SELECT e.id, e.nombre, SUM(v.importe) AS ventas_totales
FROM empleados e
JOIN ventas v ON e.id = v.id_empleado
WHERE e.departamento = 'Comercial'
GROUP BY e.id, e.nombre;

Este ejemplo muestra cómo unir tablas, aplicar funciones agregadas y filtrar resultados.

Cálculo del salario medio y máximo por departamento

SELECT departamento, AVG(salario) AS salario_medio, MAX(salario) AS salario_tope
FROM empleados
GROUP BY departamento;

Así puedes analizar la distribución salarial y detectar desigualdades o áreas con mayores incentivos.

Contar productos por rango de precio usando CASE

SELECT 
  CASE 
    WHEN precio < 50 THEN 'Barato'
    WHEN precio < 150 THEN 'Medio'
    ELSE 'Caro'
  END AS rango_precio, 
  COUNT(*) AS cantidad
FROM productos
GROUP BY rango_precio;

Utilizar CASE permite crear categorías personalizadas dentro de la consulta.

Ejemplo de consulta para encontrar registros duplicados

SELECT nombre, COUNT(*) FROM clientes GROUP BY nombre HAVING COUNT(*) > 1;

Esto te ayuda a mantener la base de datos limpia y libre de datos redundantes.

Identificar el enésimo salario más alto (subconsultas)

SELECT TOP 1 salario FROM (
  SELECT DISTINCT TOP N salario FROM empleados ORDER BY salario DESC
) ORDER BY salario ASC;

Perfecto para responder preguntas en entrevistas técnicas o sacar informes avanzados.

  8 Tipos De Dispositivos De Almacenamiento Actuales

Eliminar registros antiguos automáticamente

DELETE FROM logs WHERE fecha < NOW() - INTERVAL 6 MONTH;

Ideal para bases de datos de producción donde necesitas controlar el tamaño de las tablas.

Trucos y consejos útiles en SQL

Dominar SQL no significa sólo saber escribir las consultas básicas. Aquí van algunos consejos para aprovechar el lenguaje al máximo:

  • Siempre utiliza WHERE en UPDATE y DELETE para evitar modificaciones o borrados masivos accidentales.
  • Pon índices en las columnas más consultadas para acelerar las búsquedas y joins.
  • Prefiere JOINs explícitos a WHERE para unir tablas: facilita el mantenimiento y la legibilidad.
  • Utiliza funciones agregadas y GROUP BY para informes y análisis automáticos sin depender de hojas de cálculo externas.
  • Prueba en una base de datos de prueba antes de ejecutar cambios importantes.
  • Controla los permisos con GRANT y REVOKE para garantizar la seguridad de tus datos.
  • Aprovecha las vistas (VIEW) para simplificar el acceso a información compleja y centralizar la lógica de negocio.
  • No abuses de SELECT *, ya que puedes traer más datos de los necesarios y ralentizar el sistema.
  • Comenta las consultas complejas para facilitar su mantenimiento a futuro.

Preguntas frecuentes sobre comandos SQL en entrevistas y casos reales

Dominar SQL es fundamental para destacar en entrevistas técnicas y resolver problemas del día a día. Aquí tienes algunas preguntas típicas y sus respuestas para que llegues preparado:

  • ¿Qué es un INNER JOIN?
    Es la unión por defecto en SQL; devuelve filas que tienen coincidencias en ambas tablas. Ejemplo:

    SELECT * FROM A INNER JOIN B ON A.id = B.a_id;
  • ¿Para qué sirve LEFT JOIN?
    Devuelve todas las filas de la tabla izquierda y las coincidencias de la derecha, si las hay. Ejemplo:

    SELECT * FROM empleados LEFT JOIN ventas ON empleados.id = ventas.id_empleado;
  • ¿Qué diferencia hay entre DROP y DELETE?
    DELETE elimina filas de una tabla, mientras que DROP elimina completamente el objeto (tabla, vista, usuario) de la base de datos.
  • ¿Se puede hacer rollback tras un ALTER?
    No, porque ALTER es DDL y muchos sistemas hacen commit automático. Es importante asegurarse antes de usarlo.
  • ¿Qué son las pseudo-columnas?
    Son columnas virtuales generadas por el sistema, como ROWID, USER o CURRVAL en Oracle.
  • ¿Cómo crear una vista?
    CREATE VIEW vista_empleados AS SELECT nombre, salario FROM empleados;
  • ¿Cómo conceder permisos?
    GRANT SELECT ON inventario TO ana, rita;
  • ¿Cómo eliminar un usuario junto con sus datos?
    DROP USER usuario CASCADE;

Expresiones regulares y operadores especiales en SQL

Una parte menos conocida pero muy poderosa de SQL es la posibilidad de buscar patrones mediante expresiones regulares y operadores avanzados. Por ejemplo:

  • % : Representa cualquier cadena de cualquier longitud (usado en LIKE).
  • _ : Representa un único carácter (también en LIKE).
  • | : Alternancia, para buscar una cosa u otra.
  • * : Repetición de un carácter cero o más veces.

Gestión avanzada: Roles, permisos y seguridad

Manejar una base de datos no se limita a consultar y modificar datos. Es crucial controlar quién puede acceder, modificar o eliminar información mediante comandos como GRANT, REVOKE, o la gestión avanzada de ROLES:

CREATE ROLE manager;
GRANT SELECT, INSERT, UPDATE ON empleados TO manager;
GRANT manager TO juan, maria;

Así puedes centralizar la seguridad y facilitar la administración de permisos en entornos grandes. Si deseas profundizar en la gestión de permisos, revisa nuestro artículo sobre automatización y administración.

qué son los archivos .etl en windows-2
Artículo relacionado:
Archivos .etl en Windows: Qué son, para qué sirven y cómo analizarlos

Deja un comentario