The source code for SQLite is in the public domain. No claim of
copyright is made on any part of the core source code. (The
documentation and test code is a different matter - some sections of
documentation and test logic are governed by open-source licenses.)
All contributors to the SQLite core software have signed affidavits
specifically disavowing any copyright interest in the code. This means
that anybody is able to legally do anything they want with the SQLite
source code.

There are other SQL database engines with liberal licenses that allow
the code to be broadly and freely used. But those other engines are
still governed by copyright law. SQLite is different in that copyright
law simply does not apply.

The source code files for other SQL database engines typically begin
with a comment describing your legal rights to view and copy that
file. The SQLite source code contains no license since it is not
governed by copyright. Instead of a license, the SQLite source code
offers a blessing:

May you do good and not evil
May you find forgiveness for yourself and forgive others
May you share freely, never taking more than you give.
