SQL (Structured Query Language o Lenguaje de consultas estructuradas)
El lenguaje de consultas estructuradas o SQL (Structured Query Language) es un lenguaje de programación estandarizado que se utiliza para administrar bases de datos relacionales y realizar diversas operaciones con los datos que contienen. Creado inicialmente en la década de 1970, SQL es utilizado habitualmente no solo por los administradores de bases de datos, sino también por los desarrolladores que escriben scripts de integración de datos y por los analistas de datos que desean configurar y ejecutar consultas analíticas.
Los usos de SQL incluyen la modificación de las estructuras de tablas e índices de las bases de datos; la adición, actualización y eliminación de filas de datos; y la recuperación de subconjuntos de información de una base de datos para el procesamiento de transacciones y aplicaciones analíticas. Las consultas y otras operaciones SQL adoptan la forma de comandos escritos en forma de sentencias: las sentencias SQL más utilizadas son select, add, insert, update, delete, create, alter y truncate.
SQL se convirtió en el lenguaje de programación estándar de facto para las bases de datos relacionales tras su aparición a finales de los años 70 y principios de los 80. También conocidos como bases de datos SQL, los sistemas relacionales constan de un conjunto de tablas que contienen datos en filas y columnas. Cada columna de una tabla corresponde a una categoría de datos –por ejemplo, el nombre del cliente o la dirección–, mientras que cada fila contiene un valor de datos para la columna que la cruza.
Estándar SQL y extensiones propias
El American National Standards Institute (ANSI) adoptó un estándar SQL oficial en 1986 y, posteriormente, la Organización Internacional de Normalización, conocida como ISO, en 1987. Desde entonces, los dos organismos de desarrollo de normas han publicado más de media docena de actualizaciones conjuntas del estándar; en el momento de escribir este artículo, la versión más reciente es SQL:2011, aprobada ese mismo año.
Las organizaciones pueden utilizar sistemas de gestión de bases de datos relacionales, tanto de propiedad como de código abierto, basados en SQL. Entre ellos se encuentran:
- Microsoft SQL Server
- Base de datos Oracle
- IBM DB2
- SAP HANA
- SAP Adaptive Server
- MySQL (ahora propiedad de Oracle)
- PostgreSQL
Sin embargo, muchos de estos productos de bases de datos admiten SQL con extensiones propias del lenguaje estándar para la programación de procedimientos y otras funciones. Por ejemplo, Microsoft ofrece un conjunto de extensiones llamado Transact-SQL (T-SQL), mientras que la versión extendida del estándar de Oracle es PL/SQL. Como resultado, las distintas variantes de SQL que ofrecen los proveedores no son totalmente compatibles entre sí.
Comandos y sintaxis de SQL
Los comandos SQL se dividen en varios tipos diferentes, entre ellos las sentencias del lenguaje de manipulación de datos (DML) y del lenguaje de definición de datos (DDL), los controles de las transacciones y las medidas de seguridad. El vocabulario DML se utiliza para recuperar y manipular datos, mientras que las sentencias DDL sirven para definir y modificar las estructuras de la base de datos. Los controles de transacción ayudan a gestionar el procesamiento de las transacciones, garantizando que éstas se completen o se reviertan si se producen errores o problemas. Las sentencias de seguridad se utilizan para controlar el acceso a la base de datos, así como para crear roles y permisos de usuario.
La sintaxis SQL es el formato de codificación utilizado para escribir las sentencias. La Figura 1 muestra un ejemplo de una sentencia DDL escrita en T-SQL de Microsoft para modificar una tabla de la base de datos en SQL Server 2016:
Herramientas de SQL-on-Hadoop
Los motores de consulta SQL-on-Hadoop son una rama más reciente de SQL que permite a las organizaciones con arquitecturas de big data construidas en torno a sistemas Hadoop aprovecharlas, en lugar de tener que utilizar lenguajes más complejos y menos familiares; en particular, el entorno de programación MapReduce para desarrollar aplicaciones de procesamiento por lotes.
Hay más de una docena de herramientas SQL-on-Hadoop disponibles a través de los proveedores de distribución de Hadoop y otros vendedores; muchas de ellas son software de código abierto o versiones comerciales de dichas tecnologías. Además, el motor de procesamiento Apache Spark, que a menudo se utiliza junto con Hadoop, incluye un módulo Spark SQL que también admite la programación basada en SQL.
En general, SQL-on-Hadoop es todavía una tecnología emergente, y la mayoría de las herramientas disponibles no soportan toda la funcionalidad que ofrecen las implementaciones relacionales de SQL. Pero se están convirtiendo en un componente habitual de las implantaciones de Hadoop, ya que las empresas buscan que los desarrolladores y analistas de datos con conocimientos de SQL participen en la programación de aplicaciones de big data.