O SQLite pode ser definido como uma biblioteca de processo que implementa um banco de dados SQL autocontido, sem configuração, sem servidor e motor transacional. No caso do seu código-fonte está disponibilizado em domínio público e neste caso é gratuito para fins privados e comerciais. SQLite tem ligações a várias linguagens de programação como C, C++, BASIC, C#, Python, Java e Delphi. O COM (ActiveX) wrapper que torna o SQLite mais acessível principalmente a linguagens de script no Windows, também como VB Script e JavaScript, adicionando assim muitos mais recursos para aplicativos HTML. Também está disponível em sistemas operacionais incorporados, como iOS, Android, Symbian OS, Maemo, Blackberry e WebOS devido ao seu pequeno tamanho e facilidade de uso.
SQLite é uma biblioteca de processo que implementa um mecanismo de banco de dados SQL. O código para SQLite é de domínio público e portanto, livre para uso para qualquer finalidade, comercial ou privada. SQLite é atualmente encontrado em mais aplicativos, incluindo vários projetos de alto nível.
SQLite é um mecanismo de banco de dados SQL incorporado e não possui um processo de servidor separado como a maioria dos outros bancos de dados SQL. Ele lê e grava diretamente em arquivos de disco comuns. O formato do arquivo de banco de dados é multiplataforma. Assim, esses recursos irão tornar o SQLite uma escolha popular e com formato de arquivo de aplicativo. SQLite é uma biblioteca compacta, o tamanho da biblioteca pode ser menor que 500 KiB, dependendo da plataforma de destino e das configurações de otimização do compilador. Se os recursos opcionais forem omitidos, o tamanho da biblioteca SQLite pode ser reduzida abaixo de 300 KiB. O SQLite também pode ser executado em espaço mínimo de pilha (4KiB).
A maior parte do código-fonte SQLite é dedicada exclusivamente a testes e verificação. O SQLite responde normalmente a falhas de alocação de memória e erros de E/S de disco. É claro que, mesmo com todos esses testes, ainda há problemas. Mas o SQLite é aberto e honesto sobre todos os bugs e fornece listas de bugs incluindo listas de bugs críticos e cronologias minuto a minuto de relatórios de bugs e mudanças de código.
Segue um modelo da arquitetura do SQLite abaixo:

Figura 1. Arquitetura SQLite
A arquitetura do SQLite é relativamente simples, ela é composta por quatro partes:
Podemos demonstrar, com um pequeno exemplo a criação de uma agenda telefônica utilizando o SQLite:
# Criando a tabela agenda:
CREATE TABLE agenda(
id INTEGER PRIMARY KEY,
nome VARCHAR(30),
tel VARCHAR(20)
);
Uma forma interessante de guardar todos os comandos digitados é criar um arquivo com extensão .sql e depois é só entrar no ambiente e digitar o comando .read arquivo.sql, que ele irá abrir todo o conteúdo do arquivo. Vamos mostrar como podemos inserir alguns dados na minha tabela agenda criada:
INSERT INTO agenda(nome, tel) VALUES ('Central de Transplantes', '0800-8832323');
INSERT INTO agenda(nome, tel) VALUES ('Disque-Silencio', '3452-6927');
INSERT INTO agenda(nome, tel) VALUES ('Bombeiros', '193');
INSERT INTO agenda(nome, tel) VALUES ('Ambulância', '192');
INSERT INTO agenda(nome, tel) VALUES ('Policia Militar', '190');
INSERT INTO agenda(nome, tel) VALUES ('Defesa Civil', '199');
INSERT INTO agenda(nome, tel) VALUES ('Disque Cidade Limpa', '0800-851531');
Já com algumas linhas inseridas, agora podemos fazer algumas consultas na nossa tabela:
$ sqlite telefones.db
SQLite version 2.8.17
Enter ".help" for instructions
sqlite> .read telefones.sql
sqlite> SELECT * FROM agenda;
1|Central de Transplantes|0800-8832323
2|Disque-Silencio|3452-6927
3|Bombeiros|193
4|Ambulância|192
5|Policia Militar|190
6|Defesa Civi|199
7|Disque Cidade Limpa|0800-851531
Agora vamos criar nosso modelo de banco de dados para cadastro dos postos de gasolina: