drh | 3a88fbd | 2002-01-07 19:58:43 | [diff] [blame] | 1 | .\" Hey, EMACS: -*- nroff -*- |
| 2 | .\" First parameter, NAME, should be all caps |
| 3 | .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection |
| 4 | .\" other parameters are allowed: see man(7), man(1) |
stephan | 6c6badd | 2023-08-11 22:40:06 | [diff] [blame] | 5 | .TH SQLITE3 1 "Fri Aug 11 23:50:12 CET 2023" |
drh | 3a88fbd | 2002-01-07 19:58:43 | [diff] [blame] | 6 | .\" Please adjust this date whenever revising the manpage. |
| 7 | .\" |
| 8 | .\" Some roff macros, for reference: |
| 9 | .\" .nh disable hyphenation |
| 10 | .\" .hy enable hyphenation |
| 11 | .\" .ad l left justify |
| 12 | .\" .ad b justify to both left and right margins |
| 13 | .\" .nf disable filling |
| 14 | .\" .fi enable filling |
| 15 | .\" .br insert line break |
| 16 | .\" .sp <n> insert n+1 empty lines |
| 17 | .\" for manpage-specific macros, see man(7) |
| 18 | .SH NAME |
drh | 7530873 | 2005-02-24 04:51:51 | [diff] [blame] | 19 | .B sqlite3 |
| 20 | \- A command line interface for SQLite version 3 |
| 21 | |
drh | 3a88fbd | 2002-01-07 19:58:43 | [diff] [blame] | 22 | .SH SYNOPSIS |
drh | 7530873 | 2005-02-24 04:51:51 | [diff] [blame] | 23 | .B sqlite3 |
| 24 | .RI [ options ] |
| 25 | .RI [ databasefile ] |
| 26 | .RI [ SQL ] |
| 27 | |
| 28 | .SH SUMMARY |
drh | 3a88fbd | 2002-01-07 19:58:43 | [diff] [blame] | 29 | .PP |
drh | 7530873 | 2005-02-24 04:51:51 | [diff] [blame] | 30 | .B sqlite3 |
| 31 | is a terminal-based front-end to the SQLite library that can evaluate |
| 32 | queries interactively and display the results in multiple formats. |
| 33 | .B sqlite3 |
| 34 | can also be used within shell scripts and other applications to provide |
| 35 | batch processing features. |
drh | 3a88fbd | 2002-01-07 19:58:43 | [diff] [blame] | 36 | |
| 37 | .SH DESCRIPTION |
drh | 7530873 | 2005-02-24 04:51:51 | [diff] [blame] | 38 | To start a |
| 39 | .B sqlite3 |
| 40 | interactive session, invoke the |
| 41 | .B sqlite3 |
| 42 | command and optionally provide the name of a database file. If the |
| 43 | database file does not exist, it will be created. If the database file |
| 44 | does exist, it will be opened. |
drh | 3a88fbd | 2002-01-07 19:58:43 | [diff] [blame] | 45 | |
drh | 7530873 | 2005-02-24 04:51:51 | [diff] [blame] | 46 | For example, to create a new database file named "mydata.db", create |
| 47 | a table named "memos" and insert a couple of records into that table: |
drh | 3a88fbd | 2002-01-07 19:58:43 | [diff] [blame] | 48 | .sp |
drh | 7530873 | 2005-02-24 04:51:51 | [diff] [blame] | 49 | $ |
| 50 | .B sqlite3 mydata.db |
| 51 | .br |
stephan | 6c6badd | 2023-08-11 22:40:06 | [diff] [blame] | 52 | SQLite version 3.43.0 2023-08-11 17:45:23 |
drh | 7530873 | 2005-02-24 04:51:51 | [diff] [blame] | 53 | .br |
stephan | 6c6badd | 2023-08-11 22:40:06 | [diff] [blame] | 54 | Enter ".help" for usage hints. |
drh | 7530873 | 2005-02-24 04:51:51 | [diff] [blame] | 55 | .br |
| 56 | sqlite> |
| 57 | .B create table memos(text, priority INTEGER); |
| 58 | .br |
| 59 | sqlite> |
| 60 | .B insert into memos values('deliver project description', 10); |
| 61 | .br |
| 62 | sqlite> |
| 63 | .B insert into memos values('lunch with Christine', 100); |
| 64 | .br |
| 65 | sqlite> |
| 66 | .B select * from memos; |
| 67 | .br |
| 68 | deliver project description|10 |
| 69 | .br |
| 70 | lunch with Christine|100 |
| 71 | .br |
drh | 3a88fbd | 2002-01-07 19:58:43 | [diff] [blame] | 72 | sqlite> |
| 73 | .sp |
drh | 7530873 | 2005-02-24 04:51:51 | [diff] [blame] | 74 | |
| 75 | If no database name is supplied, the ATTACH sql command can be used |
| 76 | to attach to existing or create new database files. ATTACH can also |
| 77 | be used to attach to multiple databases within the same interactive |
| 78 | session. This is useful for migrating data between databases, |
| 79 | possibly changing the schema along the way. |
| 80 | |
| 81 | Optionally, a SQL statement or set of SQL statements can be supplied as |
| 82 | a single argument. Multiple statements should be separated by |
| 83 | semi-colons. |
| 84 | |
| 85 | For example: |
| 86 | .sp |
| 87 | $ |
| 88 | .B sqlite3 -line mydata.db 'select * from memos where priority > 20;' |
| 89 | .br |
| 90 | text = lunch with Christine |
| 91 | .br |
| 92 | priority = 100 |
| 93 | .br |
| 94 | .sp |
drh | 3a88fbd | 2002-01-07 19:58:43 | [diff] [blame] | 95 | |
| 96 | .SS SQLITE META-COMMANDS |
| 97 | .PP |
drh | 7530873 | 2005-02-24 04:51:51 | [diff] [blame] | 98 | The interactive interpreter offers a set of meta-commands that can be |
| 99 | used to control the output format, examine the currently attached |
| 100 | database files, or perform administrative operations upon the |
| 101 | attached databases (such as rebuilding indices). Meta-commands are |
| 102 | always prefixed with a dot (.). |
drh | 3a88fbd | 2002-01-07 19:58:43 | [diff] [blame] | 103 | |
drh | 7530873 | 2005-02-24 04:51:51 | [diff] [blame] | 104 | A list of available meta-commands can be viewed at any time by issuing |
| 105 | the '.help' command. For example: |
drh | 3a88fbd | 2002-01-07 19:58:43 | [diff] [blame] | 106 | .sp |
drh | 7530873 | 2005-02-24 04:51:51 | [diff] [blame] | 107 | sqlite> |
| 108 | .B .help |
drh | 3a88fbd | 2002-01-07 19:58:43 | [diff] [blame] | 109 | .nf |
drh | 0fb5dae | 2014-10-31 14:46:51 | [diff] [blame] | 110 | .tr %. |
stephan | 6c6badd | 2023-08-11 22:40:06 | [diff] [blame] | 111 | ... |
drh | 3a88fbd | 2002-01-07 19:58:43 | [diff] [blame] | 112 | .sp |
| 113 | .fi |
stephan | 6c6badd | 2023-08-11 22:40:06 | [diff] [blame] | 114 | |
| 115 | The available commands differ by version and build options, so they |
| 116 | are not listed here. Please refer to your local copy for all available |
| 117 | options. |
persicom | 45698a3 | 2002-04-18 02:53:54 | [diff] [blame] | 118 | |
drh | 3a88fbd | 2002-01-07 19:58:43 | [diff] [blame] | 119 | |
persicom | 45698a3 | 2002-04-18 02:53:54 | [diff] [blame] | 120 | .SH INIT FILE |
drh | 7530873 | 2005-02-24 04:51:51 | [diff] [blame] | 121 | .B sqlite3 |
| 122 | reads an initialization file to set the configuration of the |
| 123 | interactive environment. Throughout initialization, any previously |
| 124 | specified setting can be overridden. The sequence of initialization is |
| 125 | as follows: |
persicom | 45698a3 | 2002-04-18 02:53:54 | [diff] [blame] | 126 | |
drh | 7530873 | 2005-02-24 04:51:51 | [diff] [blame] | 127 | o The default configuration is established as follows: |
persicom | 45698a3 | 2002-04-18 02:53:54 | [diff] [blame] | 128 | |
| 129 | .sp |
| 130 | .nf |
| 131 | .cc | |
| 132 | mode = LIST |
| 133 | separator = "|" |
| 134 | main prompt = "sqlite> " |
| 135 | continue prompt = " ...> " |
| 136 | |cc . |
| 137 | .sp |
| 138 | .fi |
| 139 | |
stephan | 2752d13 | 2025-06-30 15:21:46 | [diff] [blame] | 140 | o If the environment variable XDG_CONFIG_HOME is set then |
stephan | 6c6badd | 2023-08-11 22:40:06 | [diff] [blame] | 141 | .B ${XDG_CONFIG_HOME}/sqlite3/sqliterc |
stephan | 2752d13 | 2025-06-30 15:21:46 | [diff] [blame] | 142 | is checked, else |
| 143 | .B ~/.local/config/sqlite3/sqliterc |
| 144 | is checked. If the selected file does not exist then the fallback of |
drh | 7530873 | 2005-02-24 04:51:51 | [diff] [blame] | 145 | .B ~/.sqliterc |
stephan | 2752d13 | 2025-06-30 15:21:46 | [diff] [blame] | 146 | is used. It should generally only contain meta-commands. |
persicom | 45698a3 | 2002-04-18 02:53:54 | [diff] [blame] | 147 | |
drh | 7530873 | 2005-02-24 04:51:51 | [diff] [blame] | 148 | o If the -init option is present, the specified file is processed. |
persicom | 45698a3 | 2002-04-18 02:53:54 | [diff] [blame] | 149 | |
drh | 7530873 | 2005-02-24 04:51:51 | [diff] [blame] | 150 | o All other command line options are processed. |
persicom | 45698a3 | 2002-04-18 02:53:54 | [diff] [blame] | 151 | |
stephan | 2752d13 | 2025-06-30 15:21:46 | [diff] [blame] | 152 | .SH HISTORY FILE |
| 153 | .B sqlite3 |
| 154 | may be configured to use a history file to save SQL statements and |
| 155 | meta-commands entered interactively. These statements and commands can be |
| 156 | retrieved, edited and, reused at the main and continue prompts. If the |
| 157 | environment variable |
| 158 | .B SQLITE_HISTORY |
| 159 | is set, it will be used as the name of the history file, whether it |
| 160 | already exists or not. If it is not set but the XDG_STATE_HOME |
| 161 | environment variable is then |
| 162 | .B ${XDG_STATE_HOME}/sqlite_history |
| 163 | is used. If XDG_STATE_HOME is not set then |
| 164 | .B ~/.local/state/sqlite_history |
| 165 | is used. If the selected file does not exist then |
| 166 | .B ~/.sqlite_history |
| 167 | will be used as the history file. If any history file is found, it |
| 168 | will be written if the shell exits interactive mode normally, |
| 169 | regardless of whether it existed previously, though saving will |
| 170 | silently fail if the history file's directory does not exist. |
drh | 3a88fbd | 2002-01-07 19:58:43 | [diff] [blame] | 171 | .SH SEE ALSO |
stephan | 6c6badd | 2023-08-11 22:40:06 | [diff] [blame] | 172 | https://sqlite.org/cli.html |
| 173 | .br |
| 174 | https://sqlite.org/fiddle (a WebAssembly build of the CLI app) |
drh | 3a88fbd | 2002-01-07 19:58:43 | [diff] [blame] | 175 | .br |
drh | d49c545 | 2014-01-31 11:50:20 | [diff] [blame] | 176 | The sqlite3-doc package. |
drh | 3a88fbd | 2002-01-07 19:58:43 | [diff] [blame] | 177 | .SH AUTHOR |
drh | 0fface6 | 2002-05-06 11:34:26 | [diff] [blame] | 178 | This manual page was originally written by Andreas Rottmann |
| 179 | <[email protected]>, for the Debian GNU/Linux system (but may be used |
stephan | 6c6badd | 2023-08-11 22:40:06 | [diff] [blame] | 180 | by others). It was subsequently revised by Bill Bumgarner <[email protected]>, |
| 181 | Laszlo Boszormenyi <[email protected]>, and the sqlite3 developers. |