Primeros pasos con SQLite3 - Comandos básicos

Primeros pasos con SQLite3 - Comandos básicos

SQLite es una biblioteca de C que implementa un motor de base de datos SQL. Se trata de un sistema de gestión de bases de datos relacionales (RDBMS). La mayoría de las bases de datos SQL trabajan con el modelo cliente / servidor. Tenemos como ejemplo MySQL. Para acceder y recibir datos desde una base de datos MySQL necesitas enviar una solicitud al servidor MySQL, que al recibirla proporciona la respuesta adecuada. Contrariamente a MySQL, las bases de datos SQLite operan directamente desde el disco. No hay necesidad de crear peticiones al servidor.

Instalación

Vamos a trabajar en nuestra base de datos utilizando el sqlite3 Command Line Interface (CLI). Vamos a trabajar bajo la plataforma Linux. sqlite3 CLI para MAC OS y Windows son lo mismo, pero en aras de la coherencia, se recomienda instalar Homestead Improved - una máquina virtual ligera ejecutable en 5 minutos que mantendrá tu ordenador libre de software adicional innecesario.

Para instalarlo en Homestead Improved (o cualquier sistema operativo basado en Debian como Ubuntu), ejecuta lo siguiente:

sudo apt-get install sqlite3 libsqlite3-dev

Esto instalará sqlite3. Para instalarlo en otras plataformas, sigue sus instrucciones oficiales. Una vez instalado podemos empezar la sesión. Abre Terminal y escribe el comando sqlite3. Deberás ver algo de este tipo:

SQLite3

La segunda línea te indica que introduzcas .help para obtener instrucciones. Hay un indicador de espera para que escribas un comando. Así que adelante y escribe .help. Esto te dará una lista de Comandos Meta y sus descripciones.

Comandos Meta

Los Comandos Meta se utilizan para definir el formato de salida para tablas, examinar bases de datos y otras operaciones administrativas. Siempre empiezan con un punto . Incluso .help es un comando meta. Puedes ir a través de la lista. Aquí hay algunos frecuentes que te serán muy útiles:

Comando

Descripción

.show

Muestra los valores actuales de varios parámetros

.databases

Proporciona nombres de bases de datos y archivos

.quit

Salir del programa sqlite3

.tables

Mostrar tablas actuales

.schema

Pantalla de esquema de la tabla

.header

Mostrar u ocultar el encabezado de la tabla de salida

.mode

Selecciona el modo de la tabla de salida

.dump

Base de datos de volcado en formato de texto SQL

Comandos estándar

Los Comandos Meta se utilizan para examinar una base de datos. Los Comandos SQL estándar se utilizan para operar en una base de datos. Los comandos estándar se pueden clasificar en tres grupos:

  • Data Definition Language : Proporcionan la estructura y métodos de almacenamiento para acceder a los datos desde el sistema de base de datos.
  • Data Manipulation Language: Permite a los usuarios manipular (añadir / modificar / eliminar) los datos.
  • Data Query Language : Permite a los usuarios recuperar los datos necesarios de la base de datos.

Nota: SQLite utiliza muchos otros comandos estándar, muchos de los cuales figuran en esta lista. Aquí vamos a ver una introducción de nivel principiante, vemos sólo los comandos antes mencionados.

Las bases de datos SQLite son archivos portátiles multiplataforma. Pueden almacenarse en diversos dispositivos de almacenamiento y se pueden transferir a través de diferentes ordenadores.

Casi todos los sitios web hoy en día cuentan con una sección de comentarios. Para publicar un comentario, el usuario debe enviar los siguientes datos:

  • Nombre
  • Correo electrónico
  • Sitio web
  • Comentario

De ellos, sólo el sitio web URL es opcional. También hay que definir una columna que numere los comentarios. Le vamos a llamar post_id.

Podemos definir los tipos de datos de las columnas (atributos) de la siguiente manera:

Atributo

Tipo de datos Necesario

post_id

INTEGER

name

TEXT

email

TEXT

website_url

TEXT

comment

TEXT

Aquí puedes ver la documentación para los diferentes tipos de datos y clases de almacenamiento previstos en SQLite3.

SQLite3 utiliza Manifest Typing. La mayoría de los motores de bases de datos, incluyendo MySQL, utilizan Static Typing.

Creamos una base de datos. Si todavía estás en el programa de sqlite3, sal con .Quit en el indicador de sqlite. A continuación, ejecutea el comando:

sqlite3 comment_section.db

Esto creará un archivo de base de datos comment_section.db en el directorio de trabajo actual.

Nota: Si no se asigna un nombre de archivo a continuación del comando, sqlite3 crea automáticamente una base de datos temporal. Es lo que ha ocurrido cuando entramos en el comando sqlite3 por primera vez.

CREATE TABLE

Para almacenar los comentarios hay que definir una tabla. Vamos a darle el nombre de comments . Para crearla, introduce lo siguiente:

CREATE TABLE comments (
    post_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    email TEXT NOT NULL,
    website_url TEXT NULL,
    comment TEXT NOT NULL );

NOT NULL  asegura que el valor particular no se deja en blanco en un registro. PRIMARY KEY y AutoIncrement elaboran el atributo post_id.

Para comprobar si la tabla se ha creado, emite el comando meta .tables. Se mostrará el nombre de la tabla comments.

SQLite3

Nota: Para obtener el esquema de la tabla escribe .schema comments

Ahora que la tabla se ha creado, necesitamos introducir datos.

Insertar filas

Supongamos que un usuario ha introducido un comentario con los detalles:

Name    : Shivam Mamgain

Email   : xyz@gmail.com

Website : shivammg.blogspot.com

Comment : Great tutorial for beginners.

Para añadirlo, utilizamos el comando INSERT.

INSERT INTO comments ( name, email, website_url, comment )
VALUES ( 'Shivam Mamgain', 'xyz@gmail.com',
'shivammg.blogspot.com', Great tutorial for beginners.' );

No se ha proporcionado el valor para post_id, a pesar de que se define como NOT NULL. Esto es porque no es necesario ya que es un campo AutoIncrement.

SELECT

Hemos aprendido a insertar datos en la tabla. Para recuperar los datos utilizamos el comando SELECT.

SELECT post_id, name, email, website_url, comment
FROM comments;

Lo anterior también se puede escribir como:

SELECT *
FROM comments;

Esto recupera todas las filas de la tabla. La tabla resultante podría ser confusa al no llevar encabezados ni la adecuada separación entre columnas. Para esto, tenemos que modificar algunos parámetros.

Escribe .show

SQLite3

Para mostrar los atributos de la columna, escribe .headers ON .
Para mostrar las filas en el estilo de columna, escribe .mode column.
Introduce de nuevo SELECT.

SQLite3

Nota: Selecciona el modo de pantalla que más te convenga. Escribe .help y utiliza .mode para buscar. Se mostrarán los distintos valores que .mode tiene.

UPDATE

Supongamos que el email para 'Shivam Mamgain' ha cambiado a 'zyx@email.com'. Necesitamos actualizar la fila. Escribe la siguiente sentencia:

UPDATE comments
SET email = 'zyx@email.com'
WHERE name = 'Shivam Mamgain';

Esto cambia el atributo email para el name 'Shivam Mamgain' a 'zyx@email.com'.

Nota: El atributo name no es único, por lo que la afirmación anterior puede afectar a más de una fila. Por cada name = 'Shivam Mamgain' el email se establece en 'zyx@email.com'. Para actualizar una fila específica, usar el atributo post_id. Se define como una PRIMARY KEY y siempre será único.

DELETE

Para DELETE (borrar) una o varias filas de la tabla podemos utilizar la condición WHERE, al igual que en UPDATE.

Supongamos que tenemos que eliminar una fila con post_id 9. Podemos introducir el comando:

DELETE FROM comments
WHERE post_id = 9;

Si queremos eliminar los comentarios publicados por 'Bart Simpson' y 'Homer Simpson'. Podemos ejecutar la siguiente consulta:

DELETE FROM comments
WHERE name = 'Bart Simpson' OR name = 'Homer Simpson';

ALTER

Para añadir columnas a una tabla se utiliza el comando ALTER. En la web, la mayoría de la gente no siempre utiliza su nombre real. Por lo general, lo hacen bajo un alias, un username. Vamos a añadir una columna llamada username a nuestra tabla:

ALTER TABLE comments
ADD COLUMN username TEXT;

Esto crea una columna username en comments y establece su tipo de datos en TEXT. El valor de username para las filas ya insertadas se establece en NULL.

El comando ALTER también se utiliza para cambiar el nombre de las tablas. Vamos a cambiar el nombre de la tabla comments por Coms.

ALTER TABLE comments
RENAME TO Coms;

DROP

Este comando borra toda la tabla. La tabla Coms se puede eliminar con la siguiente consulta:

DROP TABLE Coms;

------

SQLite3 ofrece muchas ventajas con respecto a otras bases de datos relacionales. Algunas de sus características distintivas se pueden leer aquí . La mayoría de los frameworks PHP y muchos otros frameworks web incluyendo Django, Ruby on Rails y web2py tienen SQLite3 como su base de datos por defecto. Al ser ligera hace que sea preferible para el almacenamiento local en los navegadores web. También se emplea como almacenamiento de cliente por muchos sistemas operativos, incluyendo Android y Windows Phone 8. Es uno de los motores de base de datos más utilizados.

Comentarios

Comentario de José - 22 de Marzo de 2016 - 17:58
Muy buen tutorial. Quisiera saber como hago para ver las bases de datos instaladas en el emulador desde el terminal? Gracias.
Comentario de erick - 05 de Abril de 2016 - 23:19
Muchas gracias por el tutorial esta perfecto.
Comentario de Cristina - 27 de Febrero de 2017 - 01:10
Gracias!! MUY BUENO, FELICIDADES!
Comentario de williamvil - 31 de Julio de 2018 - 22:22
muchas gracias, sirvio de mucho
Ha habido un error en el envío
Comentario enviado. Será revisado por la moderación antes de ser publicado.

Deja tu comentario

Tu nombre:
Tu email:
Tu comentario: