SQLite is a simple relational database system.
It was developed in 2000 by Dr. Richard Hipp to be used aboard the US Navy's guided missile destroyers.
Unlike other widely used systems, it is not based on the client-server model where programs are clients that connect with a database engine that acts as a server. Rather, the database takes the form of a single file which a program interacts with.
This model has some limitations, but its strength has made it the most widely used database engine around.
One of the main advantages, is that it does not require any configuration to use. It also does not require the overhead of additional services or servers to be running. As a simple file, it relies on the operating system to handle I/O and permissions.
This simplicity means that its often used by apps that require a simple form of local storage. Practically all current browsers use it, which helps to make SQLite the most popular database engine around.
It also has binding in many different languages and is supported by many web development frameworks such as Drupal, Laravel and Django. It is even the default engine in Ruby on Rails.
However, this also means that it is lacks the enterprise-level functionality that is often required of database systems. For example, it lacks the ability to setup custom permissions, or allow several processes to write to the database simultaneously.
SQLite is ACID-compliant, but despite implementing most of the SQL standard, it has less functionality than more commonly used enterprise database systems. For example, it can store only four datatypes: INTEGER, REAL, TEXT and BLOB. It also does not support right outer joins, or full joins. The ALTER TABLE command is also more limited than other systems. For example it supports RENAME TABLE and ADD COLUMN, but not DROP COLUMN or ALTER COLUMN.
There is also a comparable NoSQL version called UnQLite.