Resumen: en este tutorial, te presentaremos los comandos de SQLite más utilizados del programa de línea de comandos sqlite3.
El proyecto SQLite ofrece una sencilla herramienta de línea de comandos llamada sqlite3 (o sqlite3.exe en Windows) que permite interactuar con las bases de datos SQLite mediante sentencias y comandos SQL.
Conectarse a una base de datos SQLite
Para iniciar el sqlite3, se escribe el sqlite3 de la siguiente manera:
Code language: Shell Session (shell)>sqlite3SQLite version 3.29.0 2019-07-10 17:32:03Enter ".help" for usage hints.Connected to a transient in-memory database.Use ".open FILENAME" to reopen on a persistent database.sqlite>
Por defecto, una sesión de SQLite utiliza la base de datos en memoria, por lo tanto, todos los cambios desaparecerán cuando la sesión termine.
Para abrir un archivo de base de datos, se utiliza el comando .open FILENAME
. La siguiente sentencia abre la base de datos chinook.db
:
Code language: Shell Session (shell)sqlite> .open c:\sqlite\db\chinook.db
Si quieres abrir un archivo de base de datos específico cuando te conectas a la base de datos SQlite, utilizas el siguiente comando:
Code language: Shell Session (shell)>sqlite3 c:\sqlite\db\chinook.dbSQLite version 3.13.0 2016-05-18 10:57:30Enter ".help" for usage hints.sqlite>
Si se inicia una sesión con un nombre de base de datos que no existe, la herramienta sqlite3 creará el archivo de base de datos.
Por ejemplo, el siguiente comando crea una base de datos llamada sales
en el directorio C:\sqlite\db\
:
Code language: Shell Session (shell)>sqlite3 c:\sqlite\db\sales.dbSQLite version 3.29.0 2019-07-10 17:32:03Enter ".help" for usage hints.sqlite>
Mostrar todos los comandos disponibles y su finalidad
Para mostrar todos los comandos disponibles y su finalidad, se utiliza el comando .help
de la siguiente manera:
Code language: Shell Session (shell).help
Mostrar las bases de datos en la conexión de base de datos actual
Para mostrar todas las bases de datos en la conexión actual, se utiliza el comando .databases
. El comando .databases
muestra al menos una base de datos con el nombre: main
.
Por ejemplo, el siguiente comando muestra todas las bases de datos de la conexión actual:
Code language: Shell Session (shell)
Para añadir una base de datos adicional en la conexión actual, se utiliza la sentencia ATTACH DATABASE
. La siguiente sentencia añade la base de datos chinook
a la conexión actual.
Code language: Shell Session (shell)sqlite> ATTACH DATABASE "c:\sqlite\db\chinook.db" AS chinook;
Ahora si se ejecuta de nuevo el comando .database
, el sqlite3 devuelve dos bases de datos: main
y chinook
.
Code language: Shell Session (shell)sqlite> .databasesseq name file--- --------------- ---------------------0 main c:\sqlite\db\sales.db2 chinook c:\sqlite\db\chinook.db
Salir de la herramienta sqlite3
Para salir del programa sqlite3, se utiliza el comando .exit
.
Code language: Shell Session (shell)sqlite>.exit
Mostrar las tablas de una base de datos
Para mostrar todas las tablas de la base de datos actual, se utiliza el comando .tables
. Los siguientes comandos abren una nueva conexión de base de datos a la base de datos chinook
y muestran las tablas de la base de datos.
Code language: Shell Session (shell)>sqlite3 c:\sqlite\db\chinook.dbSQLite version 3.29.0 2019-07-10 17:32:03Enter ".help" for usage hints.sqlite> .tablesalbums employees invoices playlistsartists genres media_types trackscustomers invoice_items playlist_tracksqlite>
Si quieres encontrar tablas basadas en un patrón específico, utilizas el comando .table
pattern. El sqlite3 utiliza el operador LIKE
para la búsqueda de patrones.
Por ejemplo, la siguiente sentencia devuelve la tabla que termina con la cadena es
.
Code language: Shell Session (shell)sqlite> .table '%es'employees genres invoices media_typessqlite>
Mostrar la estructura de una tabla
Para mostrar la estructura de una tabla, se utiliza el comando .schema TABLE
. El argumento TABLE
puede ser un patrón. Si lo omites, el comando .schema
mostrará las estructuras de todas las tablas.
El siguiente comando muestra la estructura de la tabla albums
.
Code language: Shell Session (shell)sqlite> .schema albumsCREATE TABLE "albums"( INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, NVARCHAR(160) NOT NULL, INTEGER NOT NULL, FOREIGN KEY () REFERENCES "artists" () ON DELETE NO ACTION ON UPDATE NO ACTION);CREATE INDEX ON "albums" ();sqlite>
Para mostrar el esquema y el contenido de las tablas sqlite_stat
, se utiliza el comando .fullschema
.
Code language: CSS (css)sqlite>.fullschema
Mostrar índices
Para mostrar todos los índices de la base de datos actual, se utiliza el comando .indexes
de la siguiente manera:
Code language: Shell Session (shell)sqlite> .indexesIFK_AlbumArtistIdIFK_CustomerSupportRepIdIFK_EmployeeReportsToIFK_InvoiceCustomerIdIFK_InvoiceLineInvoiceIdIFK_InvoiceLineTrackIdIFK_PlaylistTrackTrackIdIFK_TrackAlbumIdIFK_TrackGenreIdIFK_TrackMediaTypeId
Para mostrar los índices de una tabla concreta, se utiliza el comando .indexes TABLE
. Por ejemplo, para mostrar los índices de la tabla albums
, se utiliza el siguiente comando:
Code language: CSS (css)sqlite> .indexes albumsIFK_AlbumArtistId
Para mostrar los índices de las tablas cuyos nombres terminan en es
, se utiliza un patrón del operador LIKE.
Code language: Shell Session (shell)sqlite> .indexes %esIFK_EmployeeReportsToIFK_InvoiceCustomerId
Guardar el resultado de una consulta en un fichero
Para guardar el resultado de una consulta en un fichero, se utiliza el comando .output FILENAME
. Una vez que emitas el comando .output
, todos los resultados de las consultas posteriores se guardarán en el archivo que hayas especificado en el argumento FILENAME
. Si desea guardar el resultado de la siguiente consulta individual sólo en el archivo, emite el comando .once FILENAME
.
Para volver a mostrar el resultado de la consulta en la salida estándar, emite el comando .output
sin argumentos.
Los siguientes comandos seleccionan el title
de la tabla albums
y escriben el resultado en el archivo albums.txt
.
Code language: Shell Session (shell)sqlite> .output albums.txtsqlite> SELECT title FROM albums;
Ejecutar sentencias SQL desde un fichero
Supongamos que tenemos un fichero llamado commands.txt
en la carpeta con el siguiente contenido:
Code language: Shell Session (shell)SELECT albumid, titleFROM albumsORDER BY titleLIMIT 10;
Para ejecutar las sentencias SQL en el archivo commands.txt
, se utiliza el comando .read FILENAME
de la siguiente manera:
Code language: Shell Session (shell)sqlite> .mode columnsqlite> .header onsqlite> .read c:/sqlite/commands.txtAlbumId Title---------- ----------------------156 ...And Justice For All257 20th Century Masters -296 A Copland Celebration,94 A Matter of Life and D95 A Real Dead One96 A Real Live One285 A Soprano Inspired139 A TempestadeTempestade203 A-Sides160 Ace Of Spades
En este tutorial, has aprendido muchos comandos útiles en la herramienta sqlite3 para realizar diversas tareas que tienen que ver con la base de datos SQLite.
- ¿Ha sido útil este tutorial?
- SíNo