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