1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
3
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
4
<title>SQLite Documentation</title>
5
<style type="text/css">
8
font-family: Verdana, sans-serif;
13
a:visited { color: #734559 }
15
.logo { position:absolute; margin:3px; }
31
.toolbar a { color: white; text-decoration: none; padding: 6px 12px; }
32
.toolbar a:visited { color: white; }
33
.toolbar a:hover { color: #044a64; background: white; }
35
.content { margin: 5%; }
36
.content dt { font-weight:bold; }
37
.content dd { margin-bottom: 25px; margin-left:20%; }
38
.content ul { padding:0px; padding-left: 15px; margin:0px; }
41
.se { background: url(images/se.gif) 100% 100% no-repeat #044a64}
42
.sw { background: url(images/sw.gif) 0% 100% no-repeat }
43
.ne { background: url(images/ne.gif) 100% 0% no-repeat }
44
.nw { background: url(images/nw.gif) 0% 0% no-repeat }
46
/* Things for "fancyformat" documents start here. */
47
.fancy img+p {font-style:italic}
48
.fancy .codeblock i { color: darkblue; }
49
.fancy h1,.fancy h2,.fancy h3,.fancy h4 {font-weight:normal;color:#044a64}
50
.fancy h2 { margin-left: 10px }
51
.fancy h3 { margin-left: 20px }
52
.fancy h4 { margin-left: 30px }
53
.fancy th {white-space:nowrap;text-align:left;border-bottom:solid 1px #444}
54
.fancy th, .fancy td {padding: 0.2em 1ex; vertical-align:top}
55
.fancy #toc a { color: darkblue ; text-decoration: none }
56
.fancy .todo { color: #AA3333 ; font-style : italic }
57
.fancy .todo:before { content: 'TODO:' }
58
.fancy p.todo { border: solid #AA3333 1px; padding: 1ex }
59
.fancy img { display:block; }
60
.fancy :link:hover, .fancy :visited:hover { background: wheat }
61
.fancy p,.fancy ul,.fancy ol { margin: 1em 5ex }
62
.fancy li p { margin: 1em 0 }
63
/* End of "fancyformat" specific rules. */
69
<div><!-- container div to satisfy validator -->
72
<img class="logo" src="images/sqlite370_banner.gif" alt="SQLite Logo"
74
<div><!-- IE hack to prevent disappearing logo--></div>
75
<div class="tagline">Small. Fast. Reliable.<br>Choose any three.</div>
77
<table width=100% style="clear:both"><tr><td>
78
<div class="se"><div class="sw"><div class="ne"><div class="nw">
79
<table width=100% style="padding:0;margin:0;cell-spacing:0"><tr>
82
<a href="about.html">About</a>
83
<a href="sitemap.html">Sitemap</a>
84
<a href="docs.html">Documentation</a>
85
<a href="download.html">Download</a>
86
<a href="copyright.html">License</a>
87
<a href="news.html">News</a>
88
<a href="support.html">Support</a>
91
gMsg = "Search SQLite Docs..."
92
function entersearch() {
93
var q = document.getElementById("q");
94
if( q.value == gMsg ) { q.value = "" }
95
q.style.color = "black"
96
q.style.fontStyle = "normal"
98
function leavesearch() {
99
var q = document.getElementById("q");
100
if( q.value == "" ) {
102
q.style.color = "#044a64"
103
q.style.fontStyle = "italic"
108
<div style="padding:0 1em 0px 0;white-space:nowrap">
109
<form name=f method="GET" action="http://www.sqlite.org/search">
110
<input id=q name=q type=text
111
onfocus="entersearch()" onblur="leavesearch()" style="width:24ex;padding:1px 1ex; border:solid white 1px; font-size:0.9em ; font-style:italic;color:#044a64;" value="Search SQLite Docs...">
112
<input type=submit value="Go" style="border:solid white 1px;background-color:#044a64;color:white;font-size:0.9em;padding:0 1ex">
116
</div></div></div></div>
118
<div class=startsearch></div>
122
<h1 align="center">Categorical Index Of SQLite Documents</h1>
124
<table width="100%" cellpadding="5">
126
<tr><td colspan=3 style="padding: 3ex 0 2ex 0"><b>Overview Documents</b><tr><td valign="top" align="right"><a href="about.html">About SQLite</a></td><td width="10"></td><td valign="top" align="left">
127
A high-level overview of what SQLite is and why you might be
128
interested in using it.
129
</td></tr><tr><td valign="top" align="right"><a href="whentouse.html">Appropriate Uses For SQLite</a></td><td width="10"></td><td valign="top" align="left">
130
This document describes situations where SQLite is an appropriate
131
database engine to use versus situations where a client/server
132
database engine might be a better choice.
133
</td></tr><tr><td valign="top" align="right"><a href="different.html">Distinctive Features</a></td><td width="10"></td><td valign="top" align="left">
134
This document enumerates and describes some of the features of
135
SQLite that make it different from other SQL database engines.
136
</td></tr><tr><td valign="top" align="right"><a href="testing.html">How SQLite Is Tested</a></td><td width="10"></td><td valign="top" align="left">
137
The reliability and robustness of SQLite is achieved in large part
138
by thorough and careful testing. This document identifies the
139
many tests that occur before every release of SQLite.
140
</td></tr><tr><td valign="top" align="right"><a href="copyright.html">Copyright</a></td><td width="10"></td><td valign="top" align="left">
141
SQLite is in the public domain. This document describes what that means
142
and the implications for contributors.
143
</td></tr><tr><td valign="top" align="right"><a href="faq.html">Frequently Asked Questions</a></td><td width="10"></td><td valign="top" align="left">
144
The title of the document says all...
145
</td></tr><tr><td valign="top" align="right"><a href="books.html">Books About SQLite</a></td><td width="10"></td><td valign="top" align="left">
146
A list of independently written books about SQLite.
147
</td></tr><tr><td valign="top" align="right"><a href="doclist.html">Alphabetical Listing Of Documents</a></td><td width="10"></td><td valign="top" align="left">
148
A list of all titled pages on this website, sorted by title.
149
</td></tr><tr><td valign="top" align="right"><a href="keyword_index.html">Website Keyword Index</a></td><td width="10"></td><td valign="top" align="left">
150
A cross-reference from keywords to various pages within this website.
151
</td></tr><tr><td valign="top" align="right"><a href="sitemap.html#pindex">Permuted Title Index</a></td><td width="10"></td><td valign="top" align="left">
152
Also known as a "keyword in context" or "KWIC" index or as a concordance,
153
this document is a listing of all other documents sorted by keyword.
154
</td></tr><tr><td colspan=3 style="padding: 3ex 0 2ex 0"><b>SQLite Programming Interfaces</b><br />
155
Documentation describing the APIs used to program SQLite, and the SQL
156
dialect that it interprets.
157
<tr><td valign="top" align="right"><a href="quickstart.html">SQLite In 5 Minutes Or Less</a></td><td width="10"></td><td valign="top" align="left">
158
A very quick introduction to programming with SQLite.
159
</td></tr><tr><td valign="top" align="right"><a href="cintro.html">Introduction to the C/C++ API </a></td><td width="10"></td><td valign="top" align="left">
160
This document introduces the C/C++ API. Users should read this document
161
before the C/C++ API Reference Guide linked below.
162
</td></tr><tr><td valign="top" align="right"><a href="c3ref/intro.html">C/C++ API Reference</a></td><td width="10"></td><td valign="top" align="left">
163
This document describes each API function separately.
164
</td></tr><tr><td valign="top" align="right"><a href="tclsqlite.html">Tcl API</a></td><td width="10"></td><td valign="top" align="left">
165
A description of the TCL interface bindings for SQLite.
166
</td></tr><tr><td valign="top" align="right"><a href="lang.html">SQL Syntax</a></td><td width="10"></td><td valign="top" align="left">
167
This document describes the SQL language that is understood by
169
</td></tr><tr><td valign="top" align="right"><a href="pragma.html">Pragma commands</a></td><td width="10"></td><td valign="top" align="left">
170
This document describes SQLite performance tuning options and other
171
special purpose database commands.
172
</td></tr><tr><td valign="top" align="right"><a href="datatype3.html">Version 3 DataTypes </a></td><td width="10"></td><td valign="top" align="left">
173
SQLite version 3 introduces the concept of manifest typing, where the
174
type of a value is associated with the value itself, not the column that
176
This page describes data typing for SQLite version 3 in further detail.
177
</td></tr><tr><td valign="top" align="right"><a href="nulls.html">Null Handling</a></td><td width="10"></td><td valign="top" align="left">
178
Different SQL database engines handle NULLs in different ways. The
179
SQL standards are ambiguous. This document describes how SQLite handles
180
NULLs in comparison with other SQL database engines.
181
</td></tr><tr><td valign="top" align="right"><a href="omitted.html">Unsupported SQL</a></td><td width="10"></td><td valign="top" align="left">
182
This page describes features of SQL that SQLite does not support.
183
</td></tr><tr><td colspan=3 style="padding: 3ex 0 2ex 0"><b>SQLite Features and Extensions</b><br />
184
Pages describing specific features or extension modules of SQLite.
185
<tr><td valign="top" align="right"><a href="asyncvfs.html">Asynchronous IO Mode</a></td><td width="10"></td><td valign="top" align="left">
186
This page describes the asynchronous IO extension developed alongside
187
SQLite. Using asynchronous IO can cause SQLite to appear more responsive
188
by delegating database writes to a background thread.
189
</td></tr><tr><td valign="top" align="right"><a href="foreignkeys.html">Foreign Key Support</a></td><td width="10"></td><td valign="top" align="left">
190
This document describes the support for foreign key constraints introduced
192
</td></tr><tr><td valign="top" align="right"><a href="sharedcache.html">Shared Cache Mode</a></td><td width="10"></td><td valign="top" align="left">
193
Version 3.3.0 and later supports the ability for two or more
194
database connections to share the same page and schema cache.
195
This feature is useful for certain specialized applications.
196
</td></tr><tr><td valign="top" align="right"><a href="unlock_notify.html">Unlock Notify</a></td><td width="10"></td><td valign="top" align="left">
197
The "unlock notify" feature can be used in conjunction with
198
<a href="sharedcache.html">shared cache mode</a> to more efficiently manage resource conflict (database
200
</td></tr><tr><td valign="top" align="right"><a href="backup.html">Using The Online Backup Interface</a></td><td width="10"></td><td valign="top" align="left">
201
The <a href="c3ref/backup_finish.html#sqlite3backupinit">online-backup interface</a> can be used to
202
copy content from a disk file into an in-memory database or vice
203
versa and it can make a hot backup of a live database. This application
204
note gives examples of how.
205
</td></tr><tr><td valign="top" align="right"><a href="rtree.html">R-Trees</a></td><td width="10"></td><td valign="top" align="left">
206
A description of the SQLite R-Tree extension. An R-Tree is a specialized
207
data structure that supports fast multi-dimensional range queries often
208
used in geospatial systems.
209
</td></tr><tr><td valign="top" align="right"><a href="fts3.html">Full Text Search</a></td><td width="10"></td><td valign="top" align="left">
210
A description of the SQLite Full Text Search (FTS3) extension.
211
</td></tr><tr><td colspan=3 style="padding: 3ex 0 2ex 0"><b>Upgrading SQLite, Backwards Compatibility</b><tr><td valign="top" align="right"><a href="35to36.html">Moving From SQLite 3.5 to 3.6</a></td><td width="10"></td><td valign="top" align="left">
212
A document describing the differences between SQLite version 3.5.9
214
</td></tr><tr><td valign="top" align="right"><a href="34to35.html">Moving From SQLite 3.4 to 3.5</a></td><td width="10"></td><td valign="top" align="left">
215
A document describing the differences between SQLite version 3.4.2
217
</td></tr><tr><td valign="top" align="right"><a href="changes.html">Release History</a></td><td width="10"></td><td valign="top" align="left">
218
A chronology of SQLite releases going back to version 1.0.0
219
</td></tr><tr><td valign="top" align="right"><a href="formatchng.html">Backwards Compatibility</a></td><td width="10"></td><td valign="top" align="left">
220
This document details all of the incompatible changes to the SQLite
221
file format that have occurred since version 1.0.0.
222
</td></tr><tr><td valign="top" align="right"><a href="privatebranch.html">Private Branches</a></td><td width="10"></td><td valign="top" align="left">
223
This document suggests procedures for maintaining a private branch
224
or fork of SQLite and keeping that branch or fork in sync with the
225
public SQLite source tree.
226
</td></tr><tr><td colspan=3 style="padding: 3ex 0 2ex 0"><b>SQLite Technical/Design Documentation</b><tr><td valign="top" align="right"><a href="tempfiles.html">Temporary Files Used By SQLite</a></td><td width="10"></td><td valign="top" align="left">
227
SQLite can potentially use many different temporary files when
228
processing certain SQL statements. This document describes the
229
many kinds of temporary files that SQLite uses and offers suggestions
230
for avoiding them on systems where creating a temporary file is an
232
</td></tr><tr><td valign="top" align="right"><a href="inmemorydb.html">In-Memory Databases</a></td><td width="10"></td><td valign="top" align="left">
233
SQLite normally stores content in a disk file. However, it can also
234
be used as an in-memory database engine. This document explains how.
235
</td></tr><tr><td valign="top" align="right"><a href="atomiccommit.html">How SQLite Implements Atomic Commit</a></td><td width="10"></td><td valign="top" align="left">
236
A description of the logic within SQLite that implements
237
transactions with atomic commit, even in the face of power
239
</td></tr><tr><td valign="top" align="right"><a href="malloc.html">Dynamic Memory Allocation in SQLite</a></td><td width="10"></td><td valign="top" align="left">
240
SQLite has a sophisticated memory allocation subsystem that can be
241
configured and customized to meet memory usage requirements of the
242
application and that is robust against out-of-memory conditions and
243
leak-free. This document provides the details.
244
</td></tr><tr><td valign="top" align="right"><a href="custombuild.html">Customizing And Porting SQLite</a></td><td width="10"></td><td valign="top" align="left">
245
This document explains how to customize the build of SQLite and
246
how to port SQLite to new platforms.
247
</td></tr><tr><td valign="top" align="right"><a href="lockingv3.html">Locking And Concurrency<br>In SQLite Version 3</a></td><td width="10"></td><td valign="top" align="left">
248
A description of how the new locking code in version 3 increases
249
concurrency and decreases the problem of writer starvation.
250
</td></tr><tr><td valign="top" align="right"><a href="optoverview.html">Overview Of The Optimizer</a></td><td width="10"></td><td valign="top" align="left">
251
A quick overview of the various query optimizations that are
252
attempted by the SQLite code generator.
253
</td></tr><tr><td valign="top" align="right"><a href="arch.html">Architecture</a></td><td width="10"></td><td valign="top" align="left">
254
An architectural overview of the SQLite library, useful for those who want
256
</td></tr><tr><td valign="top" align="right"><a href="opcode.html">VDBE Opcodes</a></td><td width="10"></td><td valign="top" align="left">
257
This document is an automatically generated description of the various
258
opcodes that the VDBE understands. Programmers can use this document as
259
a reference to better understand the output of EXPLAIN listings from
261
</td></tr><tr><td valign="top" align="right"><a href="fileformat2.html">SQLite File Format</a></td><td width="10"></td><td valign="top" align="left">
262
A description of the format used for SQLite database and journal files, and
263
other details required to create software to read and write SQLite
264
databases without using SQLite.
265
</td></tr><tr><td valign="top" align="right"><a href="compile.html">Compilation Options</a></td><td width="10"></td><td valign="top" align="left">
266
This document describes the compile time options that may be set to
267
modify the default behavior of the library or omit optional features
268
in order to reduce binary size.
269
</td></tr><tr><td valign="top" align="right"><a href="limits.html">Limits In SQLite</a></td><td width="10"></td><td valign="top" align="left">
270
This document describes limitations of SQLite (the maximum length of a
271
string or blob, the maximum size of a database, the maximum number of
272
tables in a database, etc.) and how these limits can be altered at
273
compile-time and run-time.
274
</td></tr><tr><td colspan=3 style="padding: 3ex 0 2ex 0"><b>Old Documents</b><br />
275
These documents either pertain to SQLite version 2 or were written
276
during the transition period between versions 2 and 3. They are no longer
277
strictly applicable to recent versions of SQLite, but the information
278
found within may still be useful.
279
<tr><td valign="top" align="right"><a href="c_interface.html">Version 2 C/C++ API</a></td><td width="10"></td><td valign="top" align="left">
280
A description of the C/C++ interface bindings for SQLite through version
282
</td></tr><tr><td valign="top" align="right"><a href="datatypes.html">Version 2 DataTypes </a></td><td width="10"></td><td valign="top" align="left">
283
A description of how SQLite version 2 handles SQL datatypes.
284
Short summary: Everything is a string.
285
</td></tr><tr><td valign="top" align="right"><a href="vdbe.html">VDBE Tutorial</a></td><td width="10"></td><td valign="top" align="left">
286
The VDBE is the subsystem within SQLite that does the actual work of
287
executing SQL statements. This page describes the principles of operation
288
for the VDBE in SQLite version 2.7. This is essential reading for anyone
289
who want to modify the SQLite sources.
290
</td></tr><tr><td valign="top" align="right"><a href="version3.html">SQLite Version 3</a></td><td width="10"></td><td valign="top" align="left">
291
A summary of of the changes between SQLite version 2.8 and SQLite version 3.0.
292
</td></tr><tr><td valign="top" align="right"><a href="capi3.html">Version 3 C/C++ API</a></td><td width="10"></td><td valign="top" align="left">
293
A summary of of the API related changes between SQLite version 2.8 and
295
</td></tr><tr><td valign="top" align="right"><a href="speed.html">Speed Comparison</a></td><td width="10"></td><td valign="top" align="left">
296
The speed of version 2.7.6 of SQLite is compared against PostgreSQL and