summaryrefslogtreecommitdiffstats
path: root/www/about.html
blob: f395798640f20f84089ddaf921d3dae43d6834eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
<!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>About SQLite</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;
}
var antiRobot = 0;
function antiRobotGo(){
if( antiRobot!=3 ) return;
antiRobot = 7;
var j = document.getElementById("mtimelink");
if(j && j.hasAttribute("data-href")) j.href=j.getAttribute("data-href");
}
function antiRobotDefense(){
document.body.onmousedown=function(){
antiRobot |= 2;
antiRobotGo();
document.body.onmousedown=null;
}
document.body.onmousemove=function(){
antiRobot |= 2;
antiRobotGo();
document.body.onmousemove=null;
}
setTimeout(function(){
antiRobot |= 1;
antiRobotGo();
}, 100)
antiRobotGo();
}
antiRobotDefense();
</script>


<h1 align=center>About SQLite</h1>

<div class="rightsidebar border2px">
<h4 align="center">Executive Summary</h4>
<ul>
<li> <a href="fullsql.html">Full-featured SQL</a>
<li> <a href='mostdeployed.html'>Billions and billions of deployments</a>
<li> <a href='onefile.html'>Single-file database</a>
<li> <a href='copyright.html'>Public domain source code</a>
<li> All source code in one file (<a href='amalgamation.html'>sqlite3.c</a>)
<li> <a href='footprint.html'>Small footprint</a>
<li> Max DB size: <a href='limits.html'>281 terabytes</a>
     (2<sup><small>48</small></sup> bytes)
<li> Max row size: <a href='limits.html'>1 gigabyte</a>
<li> <a href='fasterthanfs.html'>Faster than direct file I/O</a>
<li> <a href='testing.html'>Aviation-grade quality and testing</a>
<li> <a href='zeroconf.html'>Zero-configuration</a>
<li> <a href='transactional.html'>ACID transactions, even after power loss</a>
<li> <a href='fileformat.html'>Stable, enduring file format</a>
<li> <a href='doclist.html'>Extensive, detailed documentation</a>
<li> <a href='lts.html'>Long-term support</a>
</div>

<p>SQLite is an in-process library that implements a
<a href="selfcontained.html">self-contained</a>, 
<a href="serverless.html">serverless</a>,
<a href="zeroconf.html">zero-configuration</a>,
<a href="transactional.html">transactional</a>
SQL database engine.
The code for SQLite is in the
<a href="copyright.html">public domain</a> and is thus free for
use for any purpose, commercial or private.
SQLite is the <a href="mostdeployed.html">most widely deployed</a> database in the world
with more applications than we can
count, including several <a href="famous.html">high-profile projects.</a></p>

<p>SQLite is an embedded SQL database engine.
Unlike most other SQL databases, SQLite does not have a separate
server process.  SQLite reads and writes directly to ordinary disk
files.  A complete SQL database with multiple tables, indices,
triggers, and views, is contained in a single disk file.
The database <a href="fileformat2.html">file format</a> is cross-platform - you can freely copy a database
between 32-bit and 64-bit systems or between 
<a href="http://en.wikipedia.org/wiki/Endianness">big-endian</a> and
<a href="http://en.wikipedia.org/wiki/Endianness">little-endian</a>
architectures.  These features make SQLite a popular choice as
an <a href="appfileformat.html">Application File Format</a>.  SQLite database files are a
<a href="locrsf.html">recommended storage format</a> by the US Library of Congress.
Think of SQLite not as a replacement for 
<a href="http://www.oracle.com/database/index.html">Oracle</a> but
as a replacement for <a href="http://man.he.net/man3/fopen">fopen()</a></p>

<p>SQLite is a compact library.
With all features enabled, the <a href="footprint.html">library size</a> can be less than 750KiB,
depending on the target platform and compiler optimization settings.
(64-bit code is larger.  And some compiler optimizations
such as aggressive function inlining and loop unrolling can cause the
object code to be much larger.)
There is a tradeoff between memory usage and speed.  
SQLite generally runs faster the more memory
you give it.  Nevertheless, performance is usually quite good even
in low-memory environments.  Depending on how it is used, SQLite can be
<a href="fasterthanfs.html">faster than direct filesystem I/O</a>.</p>

<p>SQLite is 
<a href="testing.html">very carefully tested</a> prior to every
release and has a reputation for being very reliable.
Most of the SQLite source code is devoted purely to testing and
verification.  An automated test suite runs millions and millions of
test cases involving hundreds of millions of individual SQL statements
and achieves <a href="testing.html#coverage">100% branch test coverage</a>.  
SQLite responds gracefully to memory
allocation failures and disk I/O errors.  Transactions are
<a href="http://en.wikipedia.org/wiki/ACID">ACID</a>
even if interrupted by system crashes or power failures.  
All of this is verified by
the automated tests using special test harnesses which simulate 
system failures.
Of course, even with all this testing, there are still bugs.
But unlike some similar projects (especially commercial competitors)
SQLite is open and honest about all bugs and provides
<a href="https://www.sqlite.org/src/rptview?rn=1">bugs lists</a> and
minute-by-minute <a href="https://www.sqlite.org/src/timeline">
chronologies</a> of code changes.</p>

<p>The SQLite code base is supported by an
<a href="crew.html">international team</a> of developers who work on
SQLite full-time.
The developers continue to expand the capabilities of SQLite
and enhance its reliability and performance while maintaining
backwards compatibility with the 
<a href="c3ref/intro.html">published interface spec</a>,
<a href="lang.html">SQL syntax</a>, and database <a href="fileformat2.html">file format</a>.
The source code is absolutely free to anybody who wants it,
but <a href="prosupport.html">professional support</a> is also available.</p>

<p>The SQLite project was started on 
<a href="https://www.sqlite.org/src/timeline?c=2000-05-29+14:26:00">2000-05-09</a>.
The future is always hard to predict, but the intent of the developers
is to support SQLite through the year 2050.  Design decisions are made
with that objective in mind.</p>

<p>We the developers hope that you find SQLite useful and we
entreat you to use it well: to make good and beautiful products that
are fast, reliable, and simple to use.  Seek forgiveness for yourself
as you forgive others.  And just as you have received SQLite for free,
so also freely give, paying the debt forward.</p>