Self-contained, embeddable, zero-configuration SQL database engine

SQLite for Mac

SQLite for Mac

  -  4.2 MB  -  Freeware
SQLite for Mac is an in-process library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine.

The code for SQLite is in the public domain and is thus free for use for any purpose, commercial or private.

SQLite for macOS is the most widely deployed database in the world with more applications than we can count, including several high-profile projects.

Features and Highlights
  • Transactions are atomic, consistent, isolated, and durable (ACID) even after system crashes and power failures.
  • Zero-configuration - no setup or administration needed.
  • Full SQL implementation with advanced features like partial indexes and common table expressions. (Omitted features)
  • A complete database is stored in a single cross-platform disk file. Great for use as an application file format.
  • Supports terabyte-sized databases and gigabyte-sized strings and blobs. (See limits.html.)
  • Small code footprint: less than 500KiB fully configured or much less with optional features omitted.
  • Simple, easy to use API.
  • Written in ANSI-C. TCL bindings included. Bindings for dozens of other languages available separately.
  • Well-commented source code with 100% branch test coverage.
  • Available as a single ANSI-C source-code file that is easy to compile and hence is easy to add into a larger project.
  • Self-contained: no external dependencies.
  • Cross-platform: Android, *BSD, iOS, Linux, Mac, Solaris, VxWorks, and Windows (Win32, WinCE, WinRT) are supported out of the box. Easy to port to other systems.
  • Sources are in the public domain. Use for any purpose.
  • Comes with a standalone command-line interface (CLI) client that can be used to administer SQ Lite databases.
How to Use
  • Download SQLite precompiled binary for macOS
  • Extract and move the sqlite3 file to /usr/local/bin
  • Open Terminal to check SQLite installation
  • Use sqlite3 command to start SQLite shell
  • Create a new database with sqlite3 mydb.db
  • Use SQL commands to create and manage tables
  • Read data using SELECT statements
  • Use .tables to list all database tables
  • Use .schema to view table schema
  • Exit SQLite shell with .exit or Ctrl+D
System Requirements
  • macOS 10.13 High Sierra or later
  • Intel or Apple Silicon processor
  • At least 100MB of free disk space
  • Terminal access and command line basics
  • Optional: Homebrew for easy installation
PROS
  • Lightweight and fast
  • No server setup needed
  • Easy to embed in apps
  • Full SQL support
  • Cross-platform compatibility
CONS
  • No built-in user management
  • Limited concurrency support
  • Lacks advanced security features
  • Not ideal for large-scale apps
  • Manual backup and sync needed
Also Available: Download SQLite for Windows

Why is this app published on FileHorse? (More info)
  • SQLite 3.51.0 Screenshots

    The images below have been resized. Click on them to view the screenshots in full size.

    SQLite 3.51.0 Screenshot 1

What's new in this version:

New macros in sqlite3.h:
- SQLITE_SCM_BRANCH → the name of the branch from which the source code is taken
- SQLITE_SCM_TAGS → space-separated list of tags on the source code check-in
- SQLITE_SCM_DATETIME → ISO-8601 date and time of the source code check-in.

- Two new JSON functions, jsonb_each() and jsonb_tree() work the same as the existing json_each() and json_tree() functions except that they return JSONB for the "value" column when the "type" is 'array' or 'object'
- The carray and percentile extensions are now built into the amalgamation, though they are disabled by default and must be activated at compile-time using the -DSQLITE_ENABLE_CARRAY and/or -DSQLITE_ENABLE_PERCENTILE options, respectively

Enhancements to TCL Interface:
- Add the -asdict flag to the eval command to have it set the row data as a dict instead of an array
- User-defined functions may now break to return an SQL NULL

CLI enhancements:
- Increase the precision of ".timer" to microseconds
- Enhance the "box" and "column" formatting modes to deal with double-wide characters
- The ".imposter" command provides read-only imposter tables that work with VACUUM and do not require the --unsafe-testing option
- Add the --ifexists option to the CLI command-line option and to the .open command
- Limit columns widths set by the ".width" command to 30,000 or less, as there is not good reason to have wider columns, but supporting wider columns provides opportunity to malefactors.

Performance enhancements:
- Use fewer CPU cycles to commit a read transaction
- Early detection of joins that return no rows due to one or more of the tables containing no rows
- Avoid evaluation of scalar subqueries if the result of the subquery does not change the result of the overall expression
- Faster window function queries when using "BETWEEN :x FOLLOWING AND :y FOLLOWING" with a large :y

- Add the PRAGMA wal_checkpoint=NOOP; command and the SQLITE_CHECKPOINT_NOOP argument for sqlite3_wal_checkpoint_v2()
- Add the sqlite3_set_errmsg() API for use by extensions
- Add the sqlite3_db_status64() API, which works just like the existing sqlite3_db_status() API except that it returns 64-bit results
- Add the SQLITE_DBSTATUS_TEMPBUF_SPILL option to the sqlite3_db_status() and sqlite3_db_status64() interfaces
- In the session extension add the sqlite3changeset_apply_v3() interface
- For the built-in printf() and the format() SQL function, omit the leading '-' from negative floating point numbers if the '+' flag is omitted and the "#" flag is present and all displayed digits are '0'. Use '%#f' or similar to avoid outputs like '-0.00' and instead show just '0.00'
- Improved error messages generated by FTS5
- Enforce STRICT typing on computed columns
- Improved support for VxWork
- JavaScript/WASM now supports 64-bit WASM. The canonical builds continue to be 32-bit but creating one's own 64-bit build is now as simple as running "make"
- Improved resistance to database corruption caused by an application breaking Posix advisory locks using close()