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>
 | |
| 
 |