De entre las diferentes herramientas ofimáticas que se suelen utilizar, probablemente la que gestiona bases de datos, es la menos utilizada. Sin embargo, creo esto es debido a que requiere unos conocimientos técnicos mas avanzados que con el resto de aplicaciones. Esto con independencia de la suite informática a la que nos refiramos. Si a esto le sumamos que vienen sin interfaz gráfica, el problema se magnifica. Ahora bien, para resolver todos estos problema, podemos recurrir a gestionar las bases de datos con SQL.
Entonces, ¿Que es SQL?¿Y por que le dedico un artículo?. Muy sencillo, SQL es un lenguaje que se utiliza para gestión de bases de datos relacionales.
La ventaja que tiene es que es independiente de la base de datos con la que estés trabajando. Da lo mismo que sea MySQL, PostgreSQL ó SQLite, por mencionar algunas.
En general, la forma de gestionar los datos es independiente del servidor de base de datos con el que nos relacionamos. Eso si, con algunos matices. Como cualquier lenguaje que se precie, este también tiene sus dialectos y matizaciones.
Sin embargo, en general, SQL es a las bases de datos como el Esperanto a los idiomas.
Gestión de bases de datos con SQL en Ubuntu
Uno de los proyectos que realicé hace algún tiempo, se dividió en dos subproyectos. Uno utilizaba PostreSQL para gestionar la bases de datos y el otro H2, un potente gestor de bases de datos implementado en Java, rápido, de código abierto y muy funcional.
Al final, resultó que la aplicación era exactamente la misma, y solo variaba la base de datos con la que me conectaba, y por supuesto el driver utilizado para su conexión.
Sin embargo, el cliente que implementé (también en Java), se podía conectar de forma independiente con cualquiera de las dos bases de datos, solo había que indicar con cual… la ventaja del SQL.
Nociones básicas de bases de datos con SQL
SQL nos permite interactuar con la base de datos para realizar todo tipo de acciones, desde crear una tabla nueva, a añadir un nuevo registro.
Consultas
Sin embargo, una de los grandes fuertes de SQL es la consulta (de ahí el nombre). Y es que nos permite extraer todo tipo de información siempre y cuando sepamos la información que necesitamos.
Así para obtener todos los registros de una tabla de la base de datos,
SELECT * FROM mi_tabla;
Si queremos solo algunas columnas, la instrucción será,
SELECT columna_a, columna_b FROM mi_tabla;
Ahora, ¿y si queremos que sean aquellos registros donde el valor de la columna_a
sea mayor de 20?
SELECT * FROM mi_tabla WHERE columna_a > 20;
Y si además los queremos ordenados por columna_a
,
SELECT * FROM mi_tabla WHERE columna_a > 20 ORDER BY columna_a ASC;
Esto solo es la punta del iceberg de las posibilidades que nos ofrece SQL.
Creación u edición de bases de datos con SQL
Como el ser humano no solo vive consultas, con SQL, también podemos crear tablas y vistas, con instrucciones tan sencillas como,
CREATE TABLE mi_tabla(
id INT PRIMARY KEY NOT NULL,
columna_a TEXT NOT NULL);
Esto es solo un ejemplo, y la punta del iceberg de las posibilidades que nos ofrece SQL en lo que a creación de tablas se refiere. No es objeto de este artículo entrar a fondo en ello, pero si te interesa, te recomiendo que le des un vistazo a la instrucción CREATE TABLE en la página oficial de SQLITE (ojo que está en inglés).
Igualmente para el tema de la edición, tienes tus correspondientes órdenes. Por ejemplo, para añadir un línea en una tabla tan solo tienes que ejecutar la siguiente orden,
INSERT INTO mi_tabla (columna_a) VALUES ('valor1');
Además de añadir nuevos registros, también puedes modificar registros existentes, como por ejemplo,
UPDATE mi_tabla SET columna_a='valor2' WHERE columna_a='valor1';
O por supuesto borrar filas
DELETE FROM mi_tabla WHERE columna_a='valor1';
Funciones agregadas para gestionar bases de datos con SQL
Dependiendo del gestor de bases de datos que estés utilizando (PostgreSQL, MySQL, SQLite, etc), este dispondrá de una serie de funciones agregadas para la gestión de las bases de datos con SQL.
Por ejemplo, para conocer el mayor valor de una columna, la función a utilizar sería MAX
y la instrucción sería la siguiente,
SELECT max(columna_a) FROM mi_tabla;
¿Pero y si quieres aquellas filas con el máximo valor en columna_a?. Entonces,
SELECT * FROM mi_tabla WHERE columna_a = (SELECT max(columna_a) FROM mi_tabla);
Otra interesante función es COUNT
. Esta nos permite conocer el número de registros que hay. Por ejemplo,
SELECT count(columna_a) FROM mi_tabla;
Nos dirá cuantos elementos de la tabla cumplen la condición de que columna_a
no son nulos.
Conclusiones
Con este artículo, solo he pretendido dar un vistazo general a las opciones que nos ofrece la gestión de bases de datos con SQL. Por supuesto, que se trata de una simple pincelada, puesto que como puedes ver todo esto da para mucho mas…
Si te preguntas porque me ha dado ahora por escribir sobre bases de datos, la razón está en las nuevas aplicaciones. Actualmente, estoy desarrollando tres aplicaciones en paralelo,
- uText a la que le estoy haciendo un importante lavado de cara.
- uPodcatcher una Podcatcher para GNOME sencillo y simple.
- Metron una aplicación para mediciones y presupuestos.
De estas tres aplicaciones, las dos últimas, necesitan de bases de datos, para almacenar y consultar la información de forma eficiente. Ambas las estoy implementando en Python y SQLite3, y todo ello me ha motivado para escribir esta serie de artículos.
O_O Así están mis ojos con la última aplicación de la lista !!! METRON !!! Mediciones y Presupuesto en Linux !!!
De los desarrollos que estuve siguiendo, el que más lejos llegó fue PyArq http://pyarq.obraencurso.es/pyarq-Presupuestos
Si necesitas ayuda para pruebas o sugerencias… Estoy a tu disposición.
Cuenta con ello manuti…, es una app a la que le tengo muchas ganas… La base de datos ya la tengo, ahora vamos a tajo… primero uPodcatcher y luego…
Llevo años esperando algo así, por un poco más no va pasar nada.
Hola Lorenzo. Intento diseñar una base de datos para numerosas citas y aforismos o párrafos de libro que he ido acumulando. Pero están ahí perdidos en el espacio sideral de mi PC. Quiero poner orden en todo ese material pero no soy ningún experto.
Tu magnífico artículo me ha animado pero no se como instalar en Ubuntu 16.04 la base de datos que citas. La descargue, descomprimí y ahí se acabó la historia.
Entonces me fui a Base de libreoffice. No sé si es suficiente o es mejor lo que tu propones .Pero mi falta de pericia me trae de cabeza.
Que me sugieres. Un saludo y gracias por tu ayuda
Hola,
En particular yo me decantaría por SQLite antes de utilizar LibreOffice. Además es posible conectar ambos. SQLite tiene muchas mas posibilidades.
Para trabajar con la base de datos te recomiendo que utilices una interfaz gráfica https://atareao.es/software-linux/sqlitestudio-o-como-trabajar-con-sqlite/
Pegale un vistazo y me comentas.
Un saludo.
Gracias por tu rápida respuesta. Es lo que me gustaria pero no se como instalar en ubunu16.04 SQLite. Necesitaría una guía como si fuera de preescolar en este mundo
Y encima no domino el inglés.
Tal vez puedas ayudame. Muchas gracias de nuevo
Hola,
Tengo programado un artículo para dentro de unas semanas con esta temática. Espero que te sea de utilidad.
Un saludo.