Tienes un superordenador. La última versión de todo. MariaDB instalado. Un esquema de base de datos inmenso. Datos y más datos, filas y filas de datos. Y ahora ¿qué?
Si es la primera vez y haces caso a lo que te dicen entrarás al sistema ejecutando mysql -u root o algo parecido. Como toda contestación, un poco de texto, unos saltitos de línea y como que se queda esperando a que le digas tú algo.
Sí, hay que hablarle a MariaDB. Y hay que hacerlo con el lenguaje de las bases de datos relacionales, con SQL. Pero vayamos por partes.
SQL es un acrónimo: lenguaje de consulta estructurada (Structured Query Language). Todo esto viene de 1970. En aquel entonces la música se publicaba en discos de vinilo o en cassette. Los teléfonos tenían un dial para marcar y eran fijos. Se puso de moda el pantalón campana. Más importante, el ordenador personal aún no había nacido e internet era poco más que una juguete. En 1970 Edgar Codd propone el modelo relacional de datos. Como debe ser, acompañado de un lenguaje de definición y manipulación de datos. Todo teórico, eso sí, pero en pocos años se empezaron a diseñar y desarrollar productos basados en su modelo. Ilustres contribuyentes a su éxito son IBM y Oracle. Durante los 70 se desarrollaron QUEL y SEQUEL, dos lenguajes de definición y manipulación de datos en bases de datos relacionales, pero con diferentes enfoques. De SEQUEL se pasó a SQL. En realidad, el cambio de nombre viene dado por su comercialización a finales de los 70 y principios de los 80.
Ejemplo de consulta QUEL:
range of E is EMPLOYEE
retrieve into W
(COMP = E.Salary / (E.Age - 18))
where E.Name = "Jones"
Ejemplo de consulta SQL:
select (e.salary / (e.age - 18)) as comp
from employee as e
where e.name = "Jones"
Tal fue su aceptación que se hizo necesaria la definición de un estándar. ANSI publicó el primero en 1986. Este estándar no se quedó ahí, periódicamente va revisándose y ampliándose. ¿Qué aporta el estándar SQL? Que te vale para MariaDB, MySQL, Oracle, SQL Server…, todos los relacionales. No es que todos lo usen exactamente de la misma manera, cada uno añade sus extensiones al estándar.
SQL sirve para muchas cosas pero, por el momento, nos centraremos en unas pocas:
se consulta con select
se crean tablas con create table
se añaden filas con insert
se eliminan filas con delete
se modifican datos con update
La cosa es que esas órdenes, en más o menos cantidad, tienen multitud de opciones con lo que te permiten hacer casi todo. Y digo casi, primero, porque es un lenguaje orientado a bases de datos y, segundo, porque como todo lenguaje informático tiene sus fortalezas y debilidades.
SQL es un lenguaje declarativo, no es imperativo. Si alguno es aficionado a programar ordenadores, lo primero en lo que piensa es en el algoritmo. Y los bucles, y los saltos... Lo que se viene llamando "programar". ¡Ojo!, que SQL sea declarativo es su punto fuerte, significa que sirve para decir "qué es lo que queremos". Con un lenguaje imperativo, uno normalito de programación, deberíamos encontrar el "cómo obtenemos lo que queremos". O sea, que preguntaremos cosas como "¿cuáles son mis clientes de la provincia de Alicante?". El SGBD ya se encargará del cómo se obtiene eso que deseamos. De hecho, se supone que lo hará mejor que nosotros, que será capaz de encontrar la mejor manera de darnos esos datos y sin aparente esfuerzo. Vamos, que el trabajo duro y pesado lo hace la máquina, no nosotros. Ahora bien, ¿quiere eso decir que no se puede programar con SQL? No, lo que pasa es que es una programación peculiar, "para bases de datos".
Y si hablamos de aplicaciones que usen una base de datos relacional, la aplicación se convierte en cliente y el SGBD en servidor. Es decir, se genera una aplicación completa, en un lenguaje de programación concreto, que en determinados puntos de su código se comunica con la base de datos. Con los datos que le sean transmitidos, la aplicación hará lo que le haga falta: bucles, bifurcaciones, cálculos, lo que sea. O simplemente lo mostrará bien bonito en la pantalla del ordenador. Es un ejemplo más de las prácticas modernas de programación de ordenadores, la división en capas o niveles de todo el sistema. Hay una parte que gestiona los datos y otra parte que los solicita y trabaja con lo obtenido.
SQL trabaja con tablas, más bien con filas, hay que entender cómo se busca por filas, cómo se hace referencia a componentes concretas de las filas y cómo se relacionan las filas de una tabla con otras de otra tabla. Si se trata de una consulta, el resultado es una tabla nueva, temporal —solo existe en ese momento—, con filas que cumplen una serie de condiciones lógicas. Si no es consulta, un mensaje, algo de tipo "tabla creada satisfactoriamente".
Lo que nosotros queremos, más que aprender SQL, es que comprendas cómo se trabaja con filas. El caso es que uno y otro están fuertemente relacionados y, al final, sabiendo lo que quieres obtener podrás dar las órdenes correctas.
Referencias