Volver a la lista de artículos Artículos
Lectura de 8 minutos

¿Es SQL un lenguaje de programación?

SQL es una potente herramienta para comunicarse con los sistemas de gestión de bases de datos. Cuando se escriben consultas SQL, se dan instrucciones al ordenador y éste las ejecuta, lo que suena a programación. Sin embargo, no se puede construir una aplicación con SQL como se puede hacer con Python o Java. Entonces, ¿es SQL un lenguaje de programación?

¿Qué es SQL?

Empecemos por la definición básica. SQL, o Structured Query Language (Lenguaje de Consulta Estructurado), es un lenguaje utilizado para la comunicación con bases de datos relacionales. A pesar de la importancia de esta función, se trata de una tarea bastante limitada en comparación con lo que se utiliza en Python, Java, C++, etc. Naturalmente, existe un largo debate en torno a la pregunta: ¿es SQL un lenguaje de programación? No se puede crear una aplicación o construir una página web con SQL, pero definitivamente parece programación cuando se utiliza SQL para hablar con las bases de datos.

Para abordar esta controvertida cuestión, sugiero empezar por reconocer las diferencias entre varios conceptos clave. No tendremos ningún problema para responder si SQL es un lenguaje de programación después de definir el término "lenguaje de programación" y tener claras las diferencias entre los lenguajes de programación de propósito general y los lenguajes de programación de dominio específico.

Lenguaje de programación vs. Lenguaje de programación de propósito general

Según la Webopedia, "un lenguaje de programación es un vocabulario y un conjunto de reglas gramaticales para instruir a un ordenador o dispositivo informático para que realice tareas específicas." SQL es definitivamente un lenguaje de programación dada esta definición.

Tiene un vocabulario determinado y una sintaxis estricta que hay que seguir. Por ejemplo, todas las sentencias SQL comienzan con palabras clave específicas (por ejemplo, SELECT, INSERT, CREATE, UPDATE, DELETE) y terminan con un punto y coma. El orden de las cláusulas también es importante. Por ejemplo, GROUP BY debe seguir a la cláusula WHERE y preceder a la cláusula ORDER BY:

SELECT column_one, column_two
FROM table
WHERE column_one > 2000
GROUP BY column_one, column_two
ORDER BY column_one;

Además, los mensajes que se escriben utilizando este vocabulario y sintaxis instruyen a su ordenador para que realice tareas específicas, como acceder a ciertos datos en la base de datos; crear, actualizar o eliminar tablas en la base de datos; etc.

Entonces, ¿por qué tenemos toda esta controversia en torno al reconocimiento de SQL como lenguaje de programación? El problema es que la gente suele querer decir "lenguaje de programación de propósito general" cuando dice "lenguaje de programación". Y hay una gran diferencia entre estos términos.

Wikipedia dice que "un lenguaje de programación de propósito general es un lenguaje de programación diseñado para ser utilizado para escribir software en la más amplia variedad de dominios de aplicación". Básicamente, puedes crear todo tipo de aplicaciones utilizando un lenguaje de programación de propósito general, incluyendo aplicaciones de escritorio, móviles o web. Los lenguajes de programación más utilizados de esta categoría son Java, JavaScript, Python, C++ y Ruby.

A diferencia de estos lenguajes, SQL tiene una función muy específica de comunicación con las bases de datos relacionales. Por lo tanto, no se puede construir una aplicación utilizando sólo SQL. Esto nos lleva a la conclusión de que SQL no es un lenguaje de programación de propósito general.

SQL como lenguaje de dominio específico

Ahora sabemos que SQL satisface la definición de un lenguaje de programación, pero no de un lenguaje de programación de propósito general. Entonces, ¿a dónde pertenece SQL?

Aparte de los lenguajes de programación de propósito general, también hay lenguajes específicos de dominio (DSL). Wikipedia define un lenguaje de dominio específico como "un lenguaje informático especializado en un dominio de aplicación concreto". El HTML, o Lenguaje de Marcado de Hipertexto, es uno de los lenguajes de dominio específico más populares que se utilizan para estructurar páginas web.

Del mismo modo, SQL, con su dominio de aplicación específico, puede definirse como un lenguaje de dominio específico. El lenguaje de consulta estructurado es un lenguaje muy específico para "hablar" con las bases de datos. Aunque es una herramienta eficaz y potente para la gestión y el acceso a los datos, SQL tiene un uso limitado en comparación con los lenguajes de programación de propósito general. Sin embargo, este inconveniente viene acompañado de ciertas ventajas.

Debido a su estrecho dominio de aplicación, SQL suele ser más fácil de aprender que un lenguaje de programación de propósito general. No es necesario tener conocimientos de informática para empezar con el SQL para principiantes curso. Además, incluso si se empieza con cero conocimientos de programación, se puede llegar a ser un experto en SQL en unos pocos meses después de tomar el Curso completo de SQL curso.

SQL y la integridad de Turing

Si aún no estás convencido de que SQL es un lenguaje de programación, aquí tienes otro punto a tener en cuenta.

Para evaluar lo "potente" que es un determinado lenguaje de programación, los informáticos suelen utilizar el concepto de completitud de Turing. Según la definición de Wikipedia, un lenguaje de programación "se dice que es completo de Turing o computacionalmente universal si puede utilizarse para simular cualquier máquina de Turing". En términos sencillos, una máquina de Turing es una máquina hipotética, nombrada por el informático Alan Turing, que puede tomar cualquier programa de cualquier complejidad y ejecutarlo.

Así, podríamos decir que SQL es Turing completo si cualquier programa que pueda escribirse para ejecutarse en una máquina de Turing también puede escribirse en SQL. Y de hecho, SQL, con la adición de consultas recursivas, satisface esta condición.

Si te interesa, puedes aprender más sobre las consultas recursivas de SQL en esta completa guía. También puedes aprender a crear consultas recursivas o expresiones comunes de tabla (CTE) en nuestro Consultas recursivas y expresiones de tabla comunes curso.

Ahora se sabe que SQL es Turing completo y, por tanto, computacionalmente universal. Pero aquí no acaba la historia...

SQL y los lenguajes de procedimiento

SQL puede ampliarse con lenguajes procedimentales que permiten a los usuarios definir sus propias funciones y procedimientos. Por tanto, los lenguajes procedimentales son lenguajes de programación en cualquier sentido del término.

Todos los sistemas de gestión de bases de datos (SGBD) aceptan uno o varios dialectos de lenguajes procedimentales. Veamos algunos ejemplos.

PL/SQL, o Procedural Language for SQL, es una extensión de SQL en el sistema de gestión de bases de datos Oracle. Al igual que los lenguajes de programación de propósito general, PL/SQL incluye elementos como condiciones y bucles. Con PL/SQL también se pueden declarar constantes, variables, tipos de variables, procedimientos y funciones.

PL/pgSQL, o Procedural Language/PostgreSQL, es un lenguaje procedimental soportado por el sistema de gestión de bases de datos objeto-relacional PostgreSQL. Es muy similar al PL/SQL de Oracle y permite bucles y condiciones, así como funciones definidas por el usuario. Puede aprender a crear funciones definidas por el usuario en PostgreSQL con nuestro completo curso.

MySQL es un sistema de gestión de bases de datos que no tiene un nombre separado para las extensiones SQL que permiten la creación de funciones y procedimientos, pero soporta esta funcionalidad. MySQL tiene CREATE PROCEDURE y declaraciones CREATE FUNCTION que crean rutinas almacenadas. Las funciones definidas por el usuario también son soportadas en MySQL - son consideradas como funciones almacenadas externamente.

Como puede ver, SQL es una poderosa herramienta para la gestión y el acceso a los datos. Puede manejar enormes consultas analíticas con todo tipo de datos. Pero, ¡también puede usarse para divertirse! Lee cómo dibujar un árbol de Navidad en SQL.

Es hora de aprender SQL

Ahora ya sabes que SQL es un potente lenguaje de programación que merece tu atención. Aunque el Lenguaje de Consulta Estructurado existe desde hace décadas, sigue siendo la herramienta de acceso y gestión de datos en todo tipo de aplicaciones modernas. Los analistas de negocio, los analistas de datos, los científicos de datos y muchas otras funciones en las empresas de hoy en día necesitan SQL para realizar su trabajo.

Aparte de su aparente utilidad como lenguaje de dominio específico, SQL puede ser también el primer paso hacia la programación y el aprendizaje de un lenguaje de programación de propósito general.

¿Está entusiasmado con el rumbo que puede tomar SQL en su carrera? Entonces echa un vistazo a los siguientes cursos:

  • SQL para principiantes es una introducción fácil de seguir a las consultas SQL. No es necesario tener conocimientos de informática.
  • Curso completo de SQL es un curso diseñado para estudiantes ambiciosos y dedicados que están listos para ir desde completos novatos, pasando por temas intermedios y avanzados, hasta un nivel de gurú de SQL.
  • Escribiendo Funciones Definidaspor el Usuario en PostgreSQL es para aquellos que se sienten seguros con SQL y están listos para dominar la extensión procedimental de SQL para escribir funciones definidas por el usuario.

Gracias por leer, y ¡feliz aprendizaje!

Resumen: Hay un largo debate sobre el reconocimiento de SQL como un lenguaje de programación. Con SQL, le das a tu ordenador instrucciones para realizar enormes consultas analíticas, lo que se parece a la programación. Sin embargo, no se puede construir una aplicación utilizando sólo SQL. Entonces, ¿es SQL un lenguaje de programación? Aprenda por qué la respuesta es definitivamente sí.