Siguiendo nuestra serie de SQL, hoy vamos a ver cómo podemos crear tablas en SQL, añadir datos a las mismas, actualizarlos y borrar registros.
CREATE TABLE
CREATE TABLE NombreTabla (
Variable TipoVariable [Propiedades …],
Variable2 TipoVariable [Propiedades…]
)
DB Browser for SQLite nos ofrece muchas funcionalidades para administrar nuestras bases de datos, y nos proporciona una interfaz gráfica para poder hacerlo sin escribir código.
No obstante, en muchos casos la propia interfaz nos muestra el código SQL que se ha generado por debajo para que sepamos qué es lo que está pasando.
Si bien podemos crear tablas sin escribir código, en la propia interfaz nos muestra el código SQL que va generando mientras añadimos variables. La sintaxis es muy sencilla. Por ejemplo, el siguiente código genera una tabla con tres variables.
CREATE TABLE Log ( ID INTEGER, Mensaje TEXT, Fecha TEXT DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%S', 'NOW', 'localtime')), PRIMARY KEY(ID AUTOINCREMENT) )
Es importante saber que en función de la interfaz que estemos utilizando, es posible que haya que realizar un COMMIT en la base de datos para que se apliquen los cambios. Simplemente escribe COMMIT en la consola y con eso se guardará todo.
La primera columna es un número. Con la sentencia PRIMARY KEY() especificamos que ésta sera la clave primaria de la tabla. La clave primaria es una variable que identifica de forma única e inequívoca a cada registro de la tabla.
En este caso, lo conseguimos gracias a la cláusula AUTOINCREMENT, que se asegurará de rellenar éste campo con un número que se va incrementando. Así no tendremos que preocuparnos de generar los valores.
El segundo campo es un texto que podremos introducir. El tercer campo también es un texto, pero en éste caso hemos especificado un valor por defecto. Así, cada vez que se crea un registro nuevo, añadirá automáticamente la fecha actual gracias a la función STRFTIME().
Si queremos borrar una tabla, utilizaremos el comando DROP TABLE Tabla.
Vamos a añadir un registro a la tabla, para ello utilizaremos un INSERT
INSERT
INSERT INTO NombreTabla (Columna1, Columna2) VALUES (Columna1, Columna2)
Lo primero que tenemos que hacer es especificar en qué tabla vamos a insertar los datos. Tras ello, debemos especificar qué columnas o variables van a recibir los datos, y por último los valores. La primera columna recibirá el primer valor, la segunda el segundo y así sucesivamente. Por tanto, tenemos que tener el mismo número de elementos.
Si no le especificamos el nombre de las columnas, empezará a insertar los valores en la primera columna, pero algunos gestores tienen un comportamiento inconsistente cuando lo hacemos de ésta forma, por lo que es mejor poner los nombres.
En nuestro caso, como dos variables se rellenan automáticamente, solo tenemos que añadir el mensaje
INSERT INTO Log (Mensaje) VALUES ("Hola mundo")
En DB Browser for SQLite podemos pulsar el botón guardar para confirmar los cambios. En cualquier otra interfaz tendremos que realizar un COMMIT. La forma de hacerlo puede variar en función de la interfaz.
Si nos vamos al explorador de datos y visitamos la tabla Log veremos que hay una nueva fila. Los campos ID y fecha se han rellenado automáticamente, y el Mensaje contiene el valor que le hemos pasado.
Si ejecutas el comando de nuevo, verás que se crea una fila nueva con el mismo mensaje, pero el ID se ha incrementado y la fecha es la actual de nuevo. Ésta tabla podría ser muy útil para llevar un Log del comportamiento de una aplicación.
DELETE
DELETE FROM Tabla WHERE Condicion
Para borrar registros utilizamos la cláusula DELETE. Éste comando es bastante peligroso ya que si ejecutas DELETE FROM Tabla borrarás todos los registros de la misma. Por ello, es importante utilizar la cláusula WHERE. Dentro de la misma podemos poner una condición y borrará todas las filas que la cumplan.
Por ello es importante tener un identificador único para cada fila (la clave primaria), ya que así podríamos incluir una condición del tipo ID == 2 para borrar una fila específica.
En algunos gestores de bases de datos el espacio del disco no se recupera inmediatamente al borrar datos sino que sigue reservado por el archivo de la base de datos ya que así podrá acelerar futuras escrituras. Ésto tiene el inconveniente de que no liberaremos espacio al borrar registros. Para liberar el espacio de forma instantánea, podemos utilizar el comando VACUUM.
UPDATE
UPDATE Tabla SET Variable1 = Valor, Variable2 = Valor [...] WHERE Condicion
Para modificar registros existentes en la base de datos utilizaremos el comando UPDATE. Funciona de forma parecida al DELETE. Si no especificamos una condición para la cláusula WHERE aplicará el cambio sobre todas las filas, y si la añadimos sólo se verán afectadas las filas que la cumplan.
Debido a la peligrosidad de la cláusula DELETE muchas veces se utiliza UPDATE en su lugar. En vez de borrar los datos puedes crear una variable que indica si el registro en cuestión ha sido borrado. Por defecto, podemos indicarle que inicialice el valor en un False.
Cuando queremos invalidar un registro, simplemente cambiamos el valor de ésta variable. Si queremos recuperar los datos que no han sido “borrados” podemos usar ésta variable para hacer el filtro.
En definitiva
Éstos son los comandos básicos para añadir y eliminar la información contenida en la base de datos. Junto con el SELECT que nos permite leer los datos, ya tenemos todas las herramientas que necesitamos para interactuar con los datos. En los siguientes artículos veremos otras cláusulas más avanzadas. Asimismo, para entrelazar estos conocimientos con la la programación web te recomendamos nuestro Bootcamp Full Stack.
Autor
Manuel Torres
Selección de talento en OXYGEN