Introducción a SQL

En la era de los datos actuales, todo es información y valiosa, sin embargo, para obtener esa información es necesario obtener los datos que generan esa información.

Estamos muy acostumbrados a manejar la información, perdón los datos, al estilo de planilla (tabular) como en un libro de Excel, que es el programa por defecto con el que todos o la gran mayoría nos iniciamos en el mundillo de los datos. En este formato por todos conocidos, todo se divide en columnas y filas. Las columnas se utilizan para agrupar las características (variables) que nos interesa analizar. Las filas componen cada uno de los registros (tuplas), sujetos u observaciones recopiladas.

La disposición de los datos en ese formato de “planilla” es información estructurada.

Si bien Excel es muy potente para analizar información, tiene sus limitaciones en cuanto al volumen de datos que podemos capturar y más aún si queremos comparar datos desde múltiples “planillas”. Es aquí donde hacen su entrada las bases de datos

Si bien en este artículo no detallaré en profundidad qué son las bases de datos, daré algunos conceptos claves para entender donde y cómo se utiliza SQL.

Para una mejor y completa comprensión de bases de datos remitase al libro en construcción Bases de datos el camino de los datos a la información.

Bases de datos

Las bases de datos son en realidad, en su mayoría, un conjunto de programas orientados la manipulación de datos en forma relacional.

Terminología

Los conceptos claves a tener en cuenta en el uso de bases de datos son los siguientes:

  • Entidad: Elemento de interés en la base de datos y que se agrupan en la tabla (clientes, productos, etc.).
  • Columna: Un valor almacenado en una tabla, que representa un aspecto de la entidad (edad, nombre, etc.).
  • Fila: Un conjunto de columnas que describen a una entidad en particular (también llamado registro o tupla).
  • Tabla: Un conjunto de filas que comparten las mismas columnas.
  • Clave primaria: Una o más columnas que permiten identificar unívocamente cada fila de la tabla.
  • Clave foránea: Una o más columnas que pueden identificar una fila única en otra tabla.

Un poco de historia

La historia de SQL se origina en 1970 en un paper del Dr. E. F. Codd de los laboratorios de investigación de IBM, titulado “A Relational Model of Data for Large Shared Data Banks” donde propuso la representación de un modelo de datos como un conjunto de tablas. Y la vinculación entre ellas mediante relaciones, lo que se conoce actualmente como el modelo relacional.

Junto con lo anterior, también propuso un lenguaje llamado DSL/Alpha para manipular los datos en las tablas relacionadas. En los laboratorios de IBM crearon sobre este un lenguaje simplificado que denominaron SQUARE. Modificaciones posteriores derivaron en uno llamado SEQUEL cuyo nombre finalmente se acortó a SQL. Finalmente se transformó en un estándar de la industria en 1986 por la ANSI (American National Standards Institute), y ya lleva más de 40 años de uso con numerosas características añadidas desde entonces.

Las últimas actualizaciones en 2016 agregan nuevas características como la integración de tecnologías como XML y JSON, y la búsqueda de filas en base a un patrón definido por una expresión regular.

El núcleo central de SQL se utiliza en la gran mayoría de las bases de datos comerciales y de uso gratuito. Algunas compañías han realizado ajustes a SQL para adaptarlas de mejor manera a sus productos y originado por tanto versiones “mejoradas” de SQL, como ejemplo de ello PL/SQL de Oracle y Transact-SQL de Microsoft.

SQL

Asumiré a partir de aquí, que conoce y ha trabajado anteriormente con bases de datos y los conceptos de tablas, columnas, filas (tuplas).

SQL no es un acrónimo de Standard Query Language (en español “lenguaje estándar de consulta”), es mas bien unacortamiento de la palabra SEQUEL y es el lenguaje estandarizado para la realización de consultas, es decir la extracción de datos desde las bases de datos. Es estándar ya que se utiliza en la totalidad de las bases conocidas, ya sea en forma nativa o en alguna variante según el fabricante de la base de datos.

No es un lenguaje de programación propiamente tal, como lo son PHP, Python, Java o Javascript, por mencionar unos pocos. Esto debido a que presenta ciertas limitaciones. Este define tanto los inputs com outputs que son ejecutadas por el motor de optimización de la base de datos.

Un ejemplo de SQL en el siguiente bloque de código:

SELECT nombre, apellido, rut, edad, genero
FROM clientes
WHERE edad > 20 AND genero = 'M'
ORDER BY edad ASC

Donde: SELECT permite elegir que campos (columnas nombre, apellido, rut, edad y genero) queremos mostrar, FROM nos indica desde que tabla (clientes) y donde están definidos los campos. WHERE permite especificar una condición (o filtro que queremos ejecutar sobre los datos resultantes) y ORDER BY nos permite obtener una lista ordenada por edad en forma ascendente.

Por tanto, el código anterior obtendrá una lista de clientes mayores de 20 años de genero masculino y ordenada de menor a mayor edad. La lista contendrá las variables de nombre, apellido, rut, edad y genero en ese mismo orden.

SQL posee entornos específicos de uso. Posee funciones para la definición de las bases de datos (DDL), el control de acceso de usuarios (DCL), la gestión de las transacciones (TCL) y el más importante o más utilizados la manipulación de datos (DML) que posee las funciones para la obtención de datos propiamente tal..

Estructuras de SQL

Para una mejor y completa comprensión de los otros lenguajes de SQL, remitase al libro en construcción Bases de datos el camino de los datos a la información.

(Artículo en revisión y ampliación…)