Getting Started With SQLite


I've successfully installed SQLite on Linux, FreeBSD, NetBSD, OpenBSD, SCO OpenServer and Solaris. On SCO and Solaris platforms, I've had to compile it from source.

SQLite is available from the SQLite home page. I usually give the configure script the --prefix=/usr/local/sqlite parameter so that SQLite will be installed entirely under /usr/local/sqlite and add /usr/local/sqlite/bin to my PATH environment variable and /usr/local/sqlite/lib to my LD_LIBRARY_PATH environment variable.

RPM Based Linux

To install SQLite on an RPM-based Linux distribution, install the sqlite and sqlite-devel (or sqlite3 and sqlite3-devel) RPMS using yum, install them from the CD/DVD's that came with your distribution using rpm -i or acquire the sqlite RPM from the SQLite home page and install it using rpm -i.

Creating a Database

Unlike other relational database systems, there is no daemon managing the SQLite database. Instead, the SQLite API interprets queries and runs them against the database files directly. As such, SQLite database users are equivalent to unix users. Database directory and file permissions dictate what permissions a user has on the database.

In SQLite versions 3.X and 2.X, the database is a single file. It's only necessary to create the directory to contain the file. The database file will get created the first time a user tries to access it. I usually create a directory /usr/local/sqlite/var, as follows:

mkdir -p /usr/local/sqlite/var
chown testuser /usr/local/sqlite/var
chmod 755 /usr/local/sqlite/var

In SQLite version 1.0.x, the database is an entire directory. SQLite will create one file per table under this directory, but the database directory must exist. The following commands are necessary to create a database called testdb owned by the user testuser.

mkdir -p /usr/local/sqlite/var/testdb
chown testuser /usr/local/sqlite/var/testdb
chmod 755 /usr/local/sqlite/var/testdb

Accessing a Database

To access an SQLite database, su to the appropriate user and run the sqlite3 command line utility (for versions 1.0.x and 2.x the command line utility is just called sqlite).

su testuser
sqlite3 /usr/local/sqlite/var/testdb

Once you're connected to the database, the sqlite client prompts you to enter a query. Queries may be split across multiple lines. To run a query, end it with a semicolon. To exit, type .exit

A sample sqlite session follows.

[testuser@localhost testuser]$ sqlite3 /usr/local/sqlite/var/testdb
SQLite version 3.0.2
Enter ".help" for instructions
sqlite> create table testtable (
...> col1 char(40),
...> col2 integer
...> );
sqlite> .tables
sqlite> insert into testtable values ('hello',50);
sqlite> insert into testtable values ('hi',60);
sqlite> insert into testtable values ('bye',70);
sqlite> select * from testtable;
sqlite> update testtable set col2=0 where col1='hi';
sqlite> select * from testtable;
sqlite> delete from testtable where col2=50;
sqlite> select * from testtable;
sqlite> drop table testtable;
sqlite> .exit