Sumário: neste tutorial, vamos apresentar-lhe os comandos SQLite mais utilizados do programa de linha de comando sqlite3.
O projecto SQLite fornece uma ferramenta de linha de comando simples chamada sqlite3 (ou sqlite3.exe no Windows) que lhe permite interagir com as bases de dados SQLite utilizando instruções e comandos SQLite.
Conectar a uma base de dados SQLite
Para iniciar o sqlite3, digite o sqlite3 da seguinte forma:
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 defeito, uma sessão SQLite utiliza a base de dados in-memory, portanto, todas as alterações serão eliminadas quando a sessão terminar.
Para abrir um ficheiro de base de dados, utiliza-se o comando .open FILENAME
. A seguinte declaração abre o chinook.db
base de dados:
Code language: Shell Session (shell)sqlite> .open c:\sqlite\db\chinook.db
Se quiser abrir um ficheiro de base de dados específico quando se liga à base de dados SQlite, usa o seguinte 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>
Se iniciar uma sessão com um nome de base de dados que não existe, a ferramenta sqlite3 criará o ficheiro de base de dados.
Por exemplo, o seguinte comando cria uma base de dados com o nome sales
no directório 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 os comandos disponíveis e as suas finalidades
Para mostrar todos os comandos disponíveis e as suas finalidades, usa-se o comando .help
como se segue:
Code language: Shell Session (shell).help
Mostrar bases de dados na ligação actual da base de dados
Para mostrar todas as bases de dados na ligação actual, usa o comando .databases
. O comando .databases
mostra pelo menos uma base de dados com o nome: main
.
Por exemplo, o seguinte comando mostra todas as bases de dados da ligação actual:
Code language: Shell Session (shell)
Para adicionar uma base de dados adicional na ligação actual, usa-se a declaração ATTACH DATABASE
. A seguinte declaração adiciona o comando chinook
base de dados à ligação actual.
Code language: Shell Session (shell)sqlite> ATTACH DATABASE "c:\sqlite\db\chinook.db" AS chinook;
Agora se executar o comando .database
novamente, o sqlite3 devolve duas bases de dados: main
e chinook
.
Code language: Shell Session (shell)sqlite> .databasesseq name file--- --------------- ---------------------0 main c:\sqlite\db\sales.db2 chinook c:\sqlite\db\chinook.db
Sair da ferramenta sqlite3
Para sair do programa sqlite3, usa-se o comando .exit
.
Code language: Shell Session (shell)sqlite>.exit
Mostrar tabelas numa base de dados
Para exibir todas as tabelas da base de dados actual, usa o comando .tables
. Os comandos seguintes abrem uma nova ligação de base de dados ao comando chinook
base de dados e exibem as tabelas na base de dados.
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>
Se quiser encontrar tabelas baseadas num padrão específico, usa o comando .table
padrão. O sqlite3 usa o comando LIKE
operador para correspondência de padrões.
Por exemplo, a seguinte declaração devolve a tabela que termina com a string es
.
Code language: Shell Session (shell)sqlite> .table '%es'employees genres invoices media_typessqlite>
Mostrar a estrutura de uma tabela
Para mostrar a estrutura de uma tabela, usa-se o comando .schema TABLE
. O argumento TABLE
poderia ser um padrão. Se omitir, o comando .schema
mostrará as estruturas de todas as tabelas.
O comando seguinte mostra a estrutura da tabela 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 o esquema e o conteúdo das tabelas sqlite_stat
, utiliza-se o comando .fullschema
.
Code language: CSS (css)sqlite>.fullschema
Mostrar índices
Para mostrar todos os índices da base de dados actual, usa o comando .indexes
como se segue:
Code language: Shell Session (shell)sqlite> .indexesIFK_AlbumArtistIdIFK_CustomerSupportRepIdIFK_EmployeeReportsToIFK_InvoiceCustomerIdIFK_InvoiceLineInvoiceIdIFK_InvoiceLineTrackIdIFK_PlaylistTrackTrackIdIFK_TrackAlbumIdIFK_TrackGenreIdIFK_TrackMediaTypeId
Para mostrar os índices de uma tabela específica, usa o comando .indexes TABLE
. Por exemplo, para mostrar os índices da tabela albums
, usa-se o seguinte comando:
Code language: CSS (css)sqlite> .indexes albumsIFK_AlbumArtistId
Para mostrar os índices das tabelas cujos nomes terminam com es
, usa-se um padrão do operador LIKE.
Code language: Shell Session (shell)sqlite> .indexes %esIFK_EmployeeReportsToIFK_InvoiceCustomerId
Guardar o resultado de uma consulta num ficheiro
Para guardar o resultado de uma consulta num ficheiro, usa o comando .output FILENAME
. Uma vez emitido o comando .output
command, todos os resultados das consultas subsequentes serão guardados no ficheiro que especificou no argumento FILENAME
. Se quiser guardar o resultado da próxima consulta única apenas no ficheiro, emitirá o comando .once FILENAME
comando.
Para mostrar novamente o resultado da consulta à saída padrão, emitirá o comando .output
sem argumentos.
Os seguintes comandos seleccionam o title
a partir do albums
tabela e escrevem o resultado no ficheiro albums.txt
.
Code language: Shell Session (shell)sqlite> .output albums.txtsqlite> SELECT title FROM albums;
Executar instruções SQL de um ficheiro
Se tivermos um ficheiro chamado commands.txt
na pasta c:\sqlite\
com o seguinte conteúdo:
Code language: Shell Session (shell)SELECT albumid, titleFROM albumsORDER BY titleLIMIT 10;
Para executar as instruções SQL no ficheiro commands.txt
, utiliza-se o comando .read FILENAME
como se segue:
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
Neste tutorial, aprendeu muitos comandos úteis na ferramenta sqlite3 para executar várias tarefas que lidam com a base de dados SQLite.