674 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			674 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						|
<html><head>
 | 
						|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
						|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 | 
						|
<link href="sqlite.css" rel="stylesheet">
 | 
						|
<title>SQLite Documentation</title>
 | 
						|
<!-- path= -->
 | 
						|
</head>
 | 
						|
<body>
 | 
						|
<div class=nosearch>
 | 
						|
<a href="index.html">
 | 
						|
<img class="logo" src="images/sqlite370_banner.gif" alt="SQLite" border="0">
 | 
						|
</a>
 | 
						|
<div><!-- IE hack to prevent disappearing logo --></div>
 | 
						|
<div class="tagline desktoponly">
 | 
						|
Small. Fast. Reliable.<br>Choose any three.
 | 
						|
</div>
 | 
						|
<div class="menu mainmenu">
 | 
						|
<ul>
 | 
						|
<li><a href="index.html">Home</a>
 | 
						|
<li class='mobileonly'><a href="javascript:void(0)" onclick='toggle_div("submenu")'>Menu</a>
 | 
						|
<li class='wideonly'><a href='about.html'>About</a>
 | 
						|
<li class='desktoponly'><a href="docs.html">Documentation</a>
 | 
						|
<li class='desktoponly'><a href="download.html">Download</a>
 | 
						|
<li class='wideonly'><a href='copyright.html'>License</a>
 | 
						|
<li class='desktoponly'><a href="support.html">Support</a>
 | 
						|
<li class='desktoponly'><a href="prosupport.html">Purchase</a>
 | 
						|
<li class='search' id='search_menubutton'>
 | 
						|
<a href="javascript:void(0)" onclick='toggle_search()'>Search</a>
 | 
						|
</ul>
 | 
						|
</div>
 | 
						|
<div class="menu submenu" id="submenu">
 | 
						|
<ul>
 | 
						|
<li><a href='about.html'>About</a>
 | 
						|
<li><a href='docs.html'>Documentation</a>
 | 
						|
<li><a href='download.html'>Download</a>
 | 
						|
<li><a href='support.html'>Support</a>
 | 
						|
<li><a href='prosupport.html'>Purchase</a>
 | 
						|
</ul>
 | 
						|
</div>
 | 
						|
<div class="searchmenu" id="searchmenu">
 | 
						|
<form method="GET" action="search">
 | 
						|
<select name="s" id="searchtype">
 | 
						|
<option value="d">Search Documentation</option>
 | 
						|
<option value="c">Search Changelog</option>
 | 
						|
</select>
 | 
						|
<input type="text" name="q" id="searchbox" value="">
 | 
						|
<input type="submit" value="Go">
 | 
						|
</form>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
<script>
 | 
						|
function toggle_div(nm) {
 | 
						|
var w = document.getElementById(nm);
 | 
						|
if( w.style.display=="block" ){
 | 
						|
w.style.display = "none";
 | 
						|
}else{
 | 
						|
w.style.display = "block";
 | 
						|
}
 | 
						|
}
 | 
						|
function toggle_search() {
 | 
						|
var w = document.getElementById("searchmenu");
 | 
						|
if( w.style.display=="block" ){
 | 
						|
w.style.display = "none";
 | 
						|
} else {
 | 
						|
w.style.display = "block";
 | 
						|
setTimeout(function(){
 | 
						|
document.getElementById("searchbox").focus()
 | 
						|
}, 30);
 | 
						|
}
 | 
						|
}
 | 
						|
function div_off(nm){document.getElementById(nm).style.display="none";}
 | 
						|
window.onbeforeunload = function(e){div_off("submenu");}
 | 
						|
/* Disable the Search feature if we are not operating from CGI, since */
 | 
						|
/* Search is accomplished using CGI and will not work without it. */
 | 
						|
if( !location.origin || !location.origin.match || !location.origin.match(/http/) ){
 | 
						|
document.getElementById("search_menubutton").style.display = "none";
 | 
						|
}
 | 
						|
/* Used by the Hide/Show button beside syntax diagrams, to toggle the */
 | 
						|
function hideorshow(btn,obj){
 | 
						|
var x = document.getElementById(obj);
 | 
						|
var b = document.getElementById(btn);
 | 
						|
if( x.style.display!='none' ){
 | 
						|
x.style.display = 'none';
 | 
						|
b.innerHTML='show';
 | 
						|
}else{
 | 
						|
x.style.display = '';
 | 
						|
b.innerHTML='hide';
 | 
						|
}
 | 
						|
return false;
 | 
						|
}
 | 
						|
</script>
 | 
						|
</div>
 | 
						|
 | 
						|
 | 
						|
<h2 align="center">Documentation</h1>
 | 
						|
<style>
 | 
						|
.showhide {
 | 
						|
  margin-left: 0;
 | 
						|
  padding-left: 0;
 | 
						|
  list-style-type: none;
 | 
						|
}
 | 
						|
.showhide > li {
 | 
						|
  clear: both;
 | 
						|
  padding-left: 1em;
 | 
						|
  text-indent: -1em;
 | 
						|
}
 | 
						|
.showhide > li li {
 | 
						|
  padding-left: 0;
 | 
						|
  text-indent: 0;
 | 
						|
  padding-top: 1ex;
 | 
						|
  padding-bottom: 1ex;
 | 
						|
}
 | 
						|
.showhide ul {
 | 
						|
  display: none;
 | 
						|
  list-style-type: disc;
 | 
						|
}
 | 
						|
.showhide > li > a {
 | 
						|
  text-decoration: none;
 | 
						|
  color: black;
 | 
						|
  cursor: pointer;
 | 
						|
}
 | 
						|
.sh_mark {
 | 
						|
  float: left;
 | 
						|
  width: 1em;
 | 
						|
}
 | 
						|
.sh_link {
 | 
						|
  font-weight: bold;
 | 
						|
}
 | 
						|
</style>
 | 
						|
<script>
 | 
						|
function showhide(n){
 | 
						|
  var ul = document.getElementById("sh_sub_"+n)
 | 
						|
  var mk = document.getElementById("sh_mark_"+n)
 | 
						|
  if( ul.style.display!="block" ){
 | 
						|
    ul.style.display = "block";
 | 
						|
    mk.innerHTML = "▼";
 | 
						|
  } else {
 | 
						|
    ul.style.display = "none";
 | 
						|
    mk.innerHTML = "►";
 | 
						|
  }
 | 
						|
}
 | 
						|
</script>
 | 
						|
<ul class="showhide">
 | 
						|
<li><a onclick='showhide(1)'><span class='sh_mark' id='sh_mark_1'>▼</span> Document Lists And Indexes</a>
 | 
						|
<ul id='sh_sub_1' style='display:block;'>
 | 
						|
<li><a class='sh_link' href='doclist.html'>Alphabetical Listing Of All Documents</a>
 | 
						|
<li><a class='sh_link' href='keyword_index.html'>Website Keyword Index</a>
 | 
						|
<li><a class='sh_link' href='sitemap.html#pindex'>Permuted Title Index</a>
 | 
						|
</ul>
 | 
						|
<li><a onclick='showhide(2)'><span class='sh_mark' id='sh_mark_2'>►</span> Overview Documents</a>
 | 
						|
<ul id='sh_sub_2'>
 | 
						|
<li><a class='sh_link' href='about.html'>About SQLite</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A high-level overview of what SQLite is and why you might be
 | 
						|
  interested in using it.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='whentouse.html'>Appropriate Uses For SQLite</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This document describes situations where SQLite is an appropriate
 | 
						|
  database engine to use versus situations where a client/server
 | 
						|
  database engine might be a better choice.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='different.html'>Distinctive Features</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This document enumerates and describes some of the features of
 | 
						|
  SQLite that make it different from other SQL database engines.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='quirks.html'>Quirks of SQLite</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This document is a short list of some unusual features of SQLite
 | 
						|
  that tend to cause misunderstandings and confusion.  The list includes
 | 
						|
  both deliberate innovations and "misfeatures" that are retained only 
 | 
						|
  for backwards compatibility.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='testing.html'>How SQLite Is Tested</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  The reliability and robustness of SQLite is achieved in large part
 | 
						|
  by thorough and careful testing.  This document identifies the
 | 
						|
  many tests that occur before every release of SQLite.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='copyright.html'>Copyright</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  SQLite is in the public domain.  This document describes what that means
 | 
						|
  and the implications for contributors.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='faq.html'>Frequently Asked Questions</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  The title of the document says all...
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='books.html'>Books About SQLite</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A list of independently written books about SQLite.
 | 
						|
</span>
 | 
						|
</ul>
 | 
						|
<li><a onclick='showhide(3)'><span class='sh_mark' id='sh_mark_3'>►</span> Programming Interfaces</a>
 | 
						|
<ul id='sh_sub_3'>
 | 
						|
<li><a class='sh_link' href='quickstart.html'>SQLite In 5 Minutes Or Less</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A very quick introduction to programming with SQLite.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='cintro.html'>Introduction to the C/C++ API </a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This document introduces the C/C++ API. Users should read this document 
 | 
						|
  before the C/C++ API Reference Guide linked below.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='howtocompile.html'>How To Compile SQLite</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  Instructions and hints for compiling SQLite C code and integrating
 | 
						|
  that code with your own application.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='c3ref/intro.html'>C/C++ API Reference</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This document describes each API function separately.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='rescode.html'>Result and Error Codes</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A description of the meanings of the numeric result codes
 | 
						|
  returned by various C/C++ interfaces.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='lang.html'>SQL Syntax</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This document describes the SQL language that is understood by
 | 
						|
  SQLite.  
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='pragma.html'>Pragma commands</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This document describes SQLite performance tuning options and other 
 | 
						|
  special purpose database commands.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='lang_corefunc.html'>Core SQL Functions</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  General-purpose built-in scalar SQL functions.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='lang_aggfunc.html'>Aggregate SQL Functions</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  General-purpose built-in aggregate SQL functions.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='lang_datefunc.html'>Date and Time SQL Functions</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  SQL functions for manipulating dates and times.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='windowfunctions.html'>Window Functions</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  SQL Window functions.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='gencol.html'>Generated Columns</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  Stored and virtual columns in table definitions.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='http://system.data.sqlite.org/'>System.Data.SQLite</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  C#/.NET bindings for SQLite
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='tclsqlite.html'>Tcl API</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A description of the TCL interface bindings for SQLite.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='datatype3.html'>DataTypes</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  SQLite version 3 introduces the concept of manifest typing, where the
 | 
						|
  type of a value is associated with the value itself, not the column that
 | 
						|
  it is stored in.
 | 
						|
  This page describes data typing for SQLite version 3 in further detail.
 | 
						|
</span>
 | 
						|
</ul>
 | 
						|
<li><a onclick='showhide(4)'><span class='sh_mark' id='sh_mark_4'>►</span> Extensions</a>
 | 
						|
<ul id='sh_sub_4'>
 | 
						|
<li><a class='sh_link' href='json1.html'>Json1 - JSON Integration</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  SQL functions for creating, parsing, and querying JSON content.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='fts5.html'>FTS5 - Full Text Search</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A description of the SQLite Full Text Search (FTS5) extension.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='fts3.html'>FTS3 - Full Text Search</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A description of the SQLite Full Text Search (FTS3) extension.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='rtree.html'>R-Tree Module</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A description of the SQLite R-Tree extension. An R-Tree is a specialized
 | 
						|
  data structure that supports fast multi-dimensional range queries often
 | 
						|
  used in geospatial systems.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='sessionintro.html'>Sessions</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  The Sessions extension allows change to an SQLite database to be
 | 
						|
  captured in a compact file which can be reverted on the original
 | 
						|
  database (to implement "undo") or transferred and applied to another
 | 
						|
  similar database.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='loadext.html'>Run-Time Loadable Extensions</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A general overview on how run-time loadable extensions work, how they
 | 
						|
  are compiled, and how developers can create their own run-time loadable
 | 
						|
  extensions for SQLite.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='http://sqlite.org/android/'>SQLite Android Bindings</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  Information on how to deploy your own private copy of SQLite on
 | 
						|
  Android, bypassing the built-in SQLite, but using the same Java
 | 
						|
  interface.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='dbstat.html'>Dbstat Virtual Table</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  The DBSTAT virtual table reports on the sizes and geometries of tables
 | 
						|
  storing content in an SQLite database, and is the basis for the
 | 
						|
  [sqlite3_analyzer] utility program.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='csv.html'>Csv Virtual Table</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  The CSV virtual table allows SQLite to directly read and query
 | 
						|
  [https://www.ietf.org/rfc/rfc4180.txt|RFC 4180] formatted files.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='carray.html'>Carray</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  CARRAY is a [table-valued function] that allows C-language arrays to
 | 
						|
  be used in SQL queries.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='series.html'>generate_series</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A description of the generate_series() [table-valued function].
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='spellfix1.html'>Spellfix1</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  The spellfix1 extension is an experiment in doing spelling correction
 | 
						|
  for [full-text search].
 | 
						|
</span>
 | 
						|
</ul>
 | 
						|
<li><a onclick='showhide(5)'><span class='sh_mark' id='sh_mark_5'>►</span> Features</a>
 | 
						|
<ul id='sh_sub_5'>
 | 
						|
<li><a class='sh_link' href='shortnames.html'>8+3 Filenames</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  How to make SQLite work on filesystems that only support 
 | 
						|
  8+3 filenames.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='autoinc.html'>Autoincrement</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A description of the AUTOINCREMENT keyword in SQLite, what it does,
 | 
						|
  why it is sometimes useful, and why it should be avoided if not
 | 
						|
  strictly necessary.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='backup.html'>Backup API</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  The [sqlite3_backup_init | online-backup interface] can be used to
 | 
						|
  copy content from a disk file into an in-memory database or vice
 | 
						|
  versa and it can make a hot backup of a live database.  This application
 | 
						|
  note gives examples of how.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='errlog.html'>Error and Warning Log</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  SQLite supports an "error and warning log" design to capture information
 | 
						|
  about suspicious and/or error events during operation.  Embedded applications
 | 
						|
  are encouraged to enable the error and warning log to help with debugging
 | 
						|
  application problems that arise in the field.  This document explains how
 | 
						|
  to do that.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='foreignkeys.html'>Foreign Key Support</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This document describes the support for foreign key constraints introduced
 | 
						|
  in version 3.6.19.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='expridx.html'>Indexes On Expressions</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  Notes on how to create indexes on expressions instead of just
 | 
						|
  individual columns.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='intern-v-extern-blob.html'>Internal versus External Blob Storage</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  Should you store large BLOBs directly in the database, or store them
 | 
						|
  in files and just record the filename in the database?  This document
 | 
						|
  seeks to shed light on that question.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='limits.html'>Limits In SQLite</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This document describes limitations of SQLite (the maximum length of a
 | 
						|
  string or blob, the maximum size of a database, the maximum number of
 | 
						|
  tables in a database, etc.) and how these limits can be altered at
 | 
						|
  compile-time and run-time.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='mmap.html'>Memory-Mapped I/O</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  SQLite supports memory-mapped I/O.  Learn how to enable memory-mapped
 | 
						|
  I/O and about the various advantages and disadvantages to using
 | 
						|
  memory-mapped I/O in this document.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='threadsafe.html'>Multi-threaded Programs and SQLite</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  SQLite is safe to use in multi-threaded programs.  This document
 | 
						|
  provides the details and hints on how to maximize performance.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='nulls.html'>Null Handling</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  Different SQL database engines handle NULLs in different ways.  The
 | 
						|
  SQL standards are ambiguous.  This (circa 2003) document describes
 | 
						|
  how SQLite handles NULLs in comparison with other SQL database engines.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='partialindex.html'>Partial Indexes</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A partial index is an index that only covers a subset of the rows in
 | 
						|
  a table.  Learn how to use partial indexes in SQLite from this document.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='sharedcache.html'>Shared Cache Mode</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  Version 3.3.0 and later supports the ability for two or more
 | 
						|
  database connections to share the same page and schema cache.
 | 
						|
  This feature is useful for certain specialized applications.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='unlock_notify.html'>Unlock Notify</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  The "unlock notify" feature can be used in conjunction with
 | 
						|
  [shared cache mode] to more efficiently manage resource conflict (database
 | 
						|
  table locks).
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='uri.html'>URI Filenames</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  The names of database files can be specified using either an ordinary
 | 
						|
  filename or a URI.  Using URI filenames provides additional capabilities,
 | 
						|
  as this document describes.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='withoutrowid.html'>WITHOUT ROWID Tables</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  The WITHOUT ROWID optimization is a option that can sometimes result
 | 
						|
  in smaller and faster databases.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='wal.html'>Write-Ahead Log (WAL) Mode</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  Transaction control using a write-ahead log offers more concurrency and
 | 
						|
  is often faster than the default rollback transactions.  This document
 | 
						|
  explains how to use WAL mode for improved performance.
 | 
						|
</span>
 | 
						|
</ul>
 | 
						|
<li><a onclick='showhide(6)'><span class='sh_mark' id='sh_mark_6'>►</span> Tools</a>
 | 
						|
<ul id='sh_sub_6'>
 | 
						|
<li><a class='sh_link' href='cli.html'>Command-Line Shell (sqlite3.exe)</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  Notes on using the "sqlite3.exe" command-line interface that
 | 
						|
  can be used to create, modify, and query arbitrary SQLite
 | 
						|
  database files.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='sqlanalyze.html'>SQLite Database Analyzer (sqlite3_analyzer.exe)</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This stand-alone program reads an SQLite database and outputs a file
 | 
						|
  showing the space used by each table and index and other statistics.
 | 
						|
  Built using the [dbstat virtual table].
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='rbu.html'>RBU</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  The "Resumable Bulk Update" utility program allows a batch of changes
 | 
						|
  to be applied to a remote database running on embedded hardware in a
 | 
						|
  way that is resumeable and does not interrupt ongoing operation.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='sqldiff.html'>SQLite Database Diff (sqldiff.exe)</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This stand-alone program compares two SQLite database files and
 | 
						|
  outputs the SQL needed to convert one into the other.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='dbhash.html'>Database Hash (dbhash.exe)</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This program demonstrates how to compute a hash over the content
 | 
						|
  of an SQLite database.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='http://www.fossil-scm.org/'>Fossil</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  The Fossil Version Control System is a distributed VCS designed specifically
 | 
						|
  to support SQLite development.  Fossil uses SQLite as for storage.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='http://www.sqlite.org/sqlar/'>SQLite Archiver (sqlar.exe)</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A ZIP-like archive program that uses SQLite for storage.
 | 
						|
</span>
 | 
						|
</ul>
 | 
						|
<li><a onclick='showhide(7)'><span class='sh_mark' id='sh_mark_7'>►</span> Advocacy</a>
 | 
						|
<ul id='sh_sub_7'>
 | 
						|
<li><a class='sh_link' href='appfileformat.html'>SQLite As An Application File Format</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This article advocates using SQLite as an application file format
 | 
						|
  in place of XML or JSON or a "pile-of-file".
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='famous.html'>Well Known Users</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This page lists a small subset of the many thousands of devices
 | 
						|
  and application programs that make use of SQLite.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='fasterthanfs.html'>35% Faster Than The Filesystem</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This article points out that reading blobs out of an SQLite database
 | 
						|
  is often faster than reading the same blobs from individual files in
 | 
						|
  the filesystem.
 | 
						|
</span>
 | 
						|
</ul>
 | 
						|
<li><a onclick='showhide(8)'><span class='sh_mark' id='sh_mark_8'>►</span> Technical and Design Documentation</a>
 | 
						|
<ul id='sh_sub_8'>
 | 
						|
<li><a class='sh_link' href='howtocorrupt.html'>How Database Corruption Can Occur</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  SQLite is highly resistant to database corruption.  But application,
 | 
						|
  OS, and hardware bugs can still result in corrupt database files.
 | 
						|
  This article describes many of the ways that SQLite database files
 | 
						|
  can go corrupt.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='tempfiles.html'>Temporary Files Used By SQLite</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  SQLite can potentially use many different temporary files when
 | 
						|
  processing certain SQL statements.  This document describes the
 | 
						|
  many kinds of temporary files that SQLite uses and offers suggestions
 | 
						|
  for avoiding them on systems where creating a temporary file is an
 | 
						|
  expensive operation.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='inmemorydb.html'>In-Memory Databases</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  SQLite normally stores content in a disk file.  However, it can also
 | 
						|
  be used as an in-memory database engine.  This document explains how.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='atomiccommit.html'>How SQLite Implements Atomic Commit</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A description of the logic within SQLite that implements
 | 
						|
  transactions with atomic commit, even in the face of power
 | 
						|
  failures.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='malloc.html'>Dynamic Memory Allocation in SQLite</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  SQLite has a sophisticated memory allocation subsystem that can be
 | 
						|
  configured and customized to meet memory usage requirements of the
 | 
						|
  application and that is robust against out-of-memory conditions and
 | 
						|
  leak-free.  This document provides the details.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='custombuild.html'>Customizing And Porting SQLite</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This document explains how to customize the build of SQLite and
 | 
						|
  how to port SQLite to new platforms.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='lockingv3.html'>Locking And Concurrency<br>In SQLite Version 3</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A description of how the new locking code in version 3 increases
 | 
						|
  concurrency and decreases the problem of writer starvation.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='isolation.html'>Isolation In SQLite</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  When we say that SQLite transactions are "serializable" what exactly
 | 
						|
  does that mean?  How and when are changes made visible within the
 | 
						|
  same database connection and to other database connections?
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='optoverview.html'>Overview Of The Optimizer</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A quick overview of the various query optimizations that are
 | 
						|
  attempted by the SQLite code generator.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='queryplanner-ng.html'>The Next-Generation Query Planner</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  Additional information about the SQLite query planner, and in particular
 | 
						|
  the redesign of the query planner that occurred for version 3.8.0.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='arch.html'>Architecture</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  An architectural overview of the SQLite library, useful for those who want
 | 
						|
  to hack the code.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='opcode.html'>VDBE Opcodes</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This document is an automatically generated description of the various
 | 
						|
  opcodes that the VDBE understands.  Programmers can use this document as
 | 
						|
  a reference to better understand the output of EXPLAIN listings from
 | 
						|
  SQLite.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='vfs.html'>Virtual Filesystem</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  The "VFS" object is the interface between the SQLite core and the
 | 
						|
  underlying operating system.  Learn more about how the VFS object
 | 
						|
  works and how to create new VFS objects from this article.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='vtab.html'>Virtual Tables</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This article describes the virtual table mechanism and API in SQLite and how
 | 
						|
  it can be used to add new capabilities to the core SQLite library.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='fileformat2.html'>SQLite File Format</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A description of the format used for SQLite database and journal files, and
 | 
						|
  other details required to create software to read and write SQLite 
 | 
						|
  databases without using SQLite.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='compile.html'>Compilation Options</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This document describes the compile time options that may be set to 
 | 
						|
  modify the default behavior of the library or omit optional features
 | 
						|
  in order to reduce binary size.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='https://sqlite.org/android/'>Android Bindings for SQLite</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A description of how to compile your own SQLite for Android
 | 
						|
  (bypassing the SQLite that is built into Android) together with
 | 
						|
  code and makefiles.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='debugging.html'>Debugging Hints</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A list of tricks and techniques used to trace, examine, and understand
 | 
						|
  the operation of the core SQLite library.
 | 
						|
</span>
 | 
						|
</ul>
 | 
						|
<li><a onclick='showhide(9)'><span class='sh_mark' id='sh_mark_9'>►</span> Upgrading SQLite, Backwards Compatibility</a>
 | 
						|
<ul id='sh_sub_9'>
 | 
						|
<li><a class='sh_link' href='35to36.html'>Moving From SQLite 3.5 to 3.6</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A document describing the differences between SQLite version 3.5.9
 | 
						|
  and 3.6.0.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='34to35.html'>Moving From SQLite 3.4 to 3.5</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A document describing the differences between SQLite version 3.4.2
 | 
						|
  and 3.5.0.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='changes.html'>Release History</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A chronology of SQLite releases going back to version 1.0.0
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='formatchng.html'>Backwards Compatibility</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This document details all of the incompatible changes to the SQLite
 | 
						|
  file format that have occurred since version 1.0.0.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='privatebranch.html'>Private Branches</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This document suggests procedures for maintaining a private branch
 | 
						|
  or fork of SQLite and keeping that branch or fork in sync with the
 | 
						|
  public SQLite source tree.
 | 
						|
</span>
 | 
						|
</ul>
 | 
						|
<li><a onclick='showhide(10)'><span class='sh_mark' id='sh_mark_10'>►</span> Obsolete Documents</a>
 | 
						|
<ul id='sh_sub_10'>
 | 
						|
<li><a class='sh_link' href='asyncvfs.html'>Asynchronous IO Mode</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  This page describes the asynchronous IO extension developed alongside
 | 
						|
  SQLite. Using asynchronous IO can cause SQLite to appear more responsive
 | 
						|
  by delegating database writes to a background thread.  <i>NB:  This
 | 
						|
  extension is deprecated.  [WAL mode] is recommended as a replacement.</i>
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='c_interface.html'>Version 2 C/C++ API</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A description of the C/C++ interface bindings for SQLite through version 
 | 
						|
  2.8
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='datatypes.html'>Version 2 DataTypes </a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A description of how SQLite version 2 handles SQL datatypes.
 | 
						|
  Short summary:  Everything is a string.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='vdbe.html'>VDBE Tutorial</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  The VDBE is the subsystem within SQLite that does the actual work of
 | 
						|
  executing SQL statements.  This page describes the principles of operation
 | 
						|
  for the VDBE in SQLite version 2.7.  This is essential reading for anyone
 | 
						|
  who want to modify the SQLite sources.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='version3.html'>SQLite Version 3</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A summary of the changes between SQLite version 2.8 and SQLite version 3.0.
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='capi3.html'>Version 3 C/C++ API</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  A summary of the API related changes between SQLite version 2.8 and 
 | 
						|
  SQLite version 3.0. 
 | 
						|
</span>
 | 
						|
<li><a class='sh_link' href='speed.html'>Speed Comparison</a>
 | 
						|
<span class='desktoponly'>→ 
 | 
						|
  The speed of version 2.7.6 of SQLite is compared against PostgreSQL and
 | 
						|
  MySQL.
 | 
						|
</span>
 | 
						|
</ul>
 | 
						|
 | 
						|
</ul>
 | 
						|
 |