Más sobre SQLite3

Operaciones sobre tablas

Creación

La primera operación sobre una tabla es su creación, para ello usaremos la sentencia CREATE TABLE. Tomamos como ejemplo una tienda que venda ropa, pudiéndose dar las siguiente necesidad:

CREATE TABLE almacen (
                      _id INTEGER PRIMARY KEY, 
                      nombre TEXT, 
                      cantidad INTEGER CHECK (cantidad >= 0));

Anotamos el hecho de que todas las operaciones realizadas sobre sqlite3 han de finalizar en ; salvo las operaciones indicadas por .help. Ver

Aunque se han alternado mayúsculas y minúsculas para hacer más sencilla su visualización, se pueden escribir la sentencia en minúsculas obteniéndose el mismo resultado.

Según el ejemplo, creamos una tabla llamada almacén con 3 columnas. La primera columna se refiere al identificador de fila (_id), el cual es un número entero el cual es único. La segunda columna es una cadena de caracteres llamada nombre y por último la tercera columna indica la cantidad de artículos en stock, la cual ha de ser mayor o igual a cero. Conocer más sobre las limitaciones en bases de datos y tipos soportados por SQLite

Eliminación

Para eliminar una tabla anteriormente creada usaremos la sentencia DROP TABLE de la siguiente manera:

DROP TABLE almacen;

Al eliminar la tabla también se perderán todos los datos almacenados en ella.

Modificación

En el caso de que hayamos creado una tabla y posteriormente queramos o bien renombrarla o bien añadir una columna más, usaremos la sentencia ALTER  TABLE como sigue, tomando como ejemplo la tabla creada anteriormente:

ALTER TABLE almacen ADD descripcion TEXT NOT NULL;

Añadimos una nueva columna a la tabla almacen llamada descripcion la cual almacenará una cadena de caracteres. Esta sentencia no nos permite añadir una nueva columna que tenga la limitación NOT NULL (ver limitaciones en bases de datos), mostrando el siguiente error:

Error: Cannot add a NOT NULL column with default value NULL

Sin embargo no tendríamos error con el siguiente código

ALTER TABLE almacen ADD descripcion TEXT;

 
En ese caso cambiamos el nombre de la tabla almacen a productos.

ALTER TABLE almacen RENAME TO productos;

Inserción

Siguiendo con el ejemplo mostrado, para insertar datos en la tabla usaremos la sentencia INSERT INTO tabla VALUES:

INSERT INTO almacen VALUES (1, "Pantalón", 8, "Corto y sin costuras");

Con esta sentencia, insertamos un valor para cada una de las columnas definidas en la tabla. Si sólo quisiéramos introducir por ejemplo el _id y el nombre, usaríamos la siguiente sentencia:

INSERT INTO almacen (_id, nombre) VALUES (2, "Corbata");

El resto de columnas tendrían un valor null.

Insertamos nuevos productos tal y como mostramos para poder trabajar con la selección y borrado más adelante.

 INSERT INTO almacen VALUES (3, "Pantalón", 10, "Largo");
 INSERT INTO almacen VALUES (4, "Zapatos", 2, "Negros");
 INSERT INTO almacen VALUES (5, "Zapatos", 9, "Temporada verano");
 INSERT INTO almacen VALUES (6, "Camisas", 3, "Manga corta");

Nuestra tabla tendría el siguiente aspecto:

_id nombre cantidad descripcion
1 Pantalón 8 Corto y sin costuras
2 Corbata
3 Pantalón 10 Largo
4 Zapatos 2 Negros
5 Zapatos 9 Temporada verano
6 Camisas 3 Manga corta

Selección

Solicitamos datos almacenados en una tabla que cumplan una serie de condiciones  usando la sentencia SELECT. Siguiendo con nuestro ejemplo, en el caso de que queramos visualizar todos los datos almacenados:

SELECT * FROM almacen;
_id         nombre    cantidad    descripcion 
---------- ---------- ---------- --------------------
1           Pantalón  8          Corto y sin costuras
2           Corbata 
3           Pantalón  10         Largo 
4           Zapatos   2          Negros 
5           Zapatos   9          Temporada verano 
6           Camisas   3          Manga corta

En el caso de que queramos seleccionar todos los datos almacenados que cumplan una condición, como por ejemplo que haya más de 3 unidades en stock:

SELECT * FROM alamcen WHERE cantidad > 3;
 _id         nombre    cantidad   descripcion
 ---------- ---------- ---------- --------------------
 1          Pantalón    8         Corto y sin costuras
 3          Pantalón    10        Largo
 5          Zapatos     9         Temporada verano

Si además sólo queremos visualizar el nombre de aquellos productos de los que haya más de 3 unidades:

SELECT nombre FROM almacen WHERE cantidad > 3;
nombre 
----------
Pantalón 
Pantalón 
Zapatos

Si además queremos que muestre el resultado ordenado según la cantidad:

SELECT nombre FROM almacen WHERE cantidad > 3 ORDER BY cantidad;
nombre 
----------
Pantalón 
Zapatos 
Pantalón

Si queremos realizar la búsqueda de un producto en concreto seguimos la siguiente sentencia

SELECT * FROM almacen WHERE nombre = "Corbata";
_id         nombre    cantidad   descripcion
---------- ---------- ---------- -----------
2           Corbata

También podemos usar la condición LIKE para indicar que el nombre contenga una serie de caracteres en el orden indicado, según el ejemplo “at”

SELECT * FROM almacen WHERE nombre LIKE "%at%";
 _id         nombre    cantidad    descripcion
---------- ---------- ---------- --------------------
2           Corbata 
4           Zapatos   2          Negros 
5           Zapatos   9          Temporada verano

En el caso de que sólo queremos visualizar un determinado número de entras o filas usaremos la condición LIMIT. En este caso visualizamos sólo las 3 primeras filas.

SELECT * FROM almacen LIMIT 3;
_id         nombre    cantidad    descripcion 
---------- ---------- ---------- --------------------
1           Pantalón  8          Corto y sin costuras
2           Corbata 
3           Pantalón  10         Largo

En el caso de que queramos por ejemplo conocer la suma total de productos que hay con un determinado nombre, usaremos las condiciones GROUP BY y ORDER BY de la siguiente manera. De esta forma obtenemos un cómputo total de cuantos productos hay con un determinado nombre ordenados por su cantidad.

SELECT nombre, SUM(cantidad) FROM almacen GROUP BY nombre ORDER BY cantidad;
nombre     sum(cantidad)
---------- -------------
Corbata 
Camisas    3 
Zapatos    11 
Pantalón   18

Actualización

Para actualizar los datos almacenados en una tabla utilizamos la sentencia UPDATE de la siguiente manera:

UPDATE almacen SET cantidad = 4 WHERE nombre = "Corbata";
_id         nombre    cantidad    descripcion 
---------- ---------- ---------- --------------------
1           Pantalón  8          Corto y sin costuras
2           Corbata   4
3           Pantalón  10         Largo 
4           Zapatos   2          Negros 
5           Zapatos   9          Temporada verano 
6           Camisas   3          Manga corta

En este caso actualizamos el valor de cantidad a 4 donde el nombre sea Corbata. Es importante rellenar la condición WHERE ya que en caso contrario realizaría el cambio en todas la filas obteniéndose el siguiente resultado:

Borrado

Para borrar una determina fila o entrada de la tabla usamos la sentencia DELETE

DELETE FROM almacen WHERE nombre = "Corbata";
_id         nombre    cantidad    descripcion 
---------- ---------- ---------- --------------------
1           Pantalón  8          Corto y sin costuras
3           Pantalón  10         Largo 
4           Zapatos   2          Negros 
5           Zapatos   9          Temporada verano 
6           Camisas   3          Manga corta

En este caso borraría una única fila de la tabla, la correspondiente con el nombre de Corbata.

DELETE FROM almacen WHERE cantidad > 3;

En este caso borraría todas aquellas filas de la tabla cuya columna cantidad tenga un dato mayor que 3.

_id         nombre    cantidad    descripcion 
---------- ---------- ---------- --------------------
4           Zapatos   2          Negros 
6           Camisas   3          Manga corta