hsqldb Database Engine is a lightweight 100% Java SQL Database Engine.
Version: 1.8.0HSQLDB is the leading SQL relational database engine written in Java. hsqldb Database Engine has a JDBC driver and supports a rich subset of ANSI-92 SQL (BNF tree format) plus SQL 99 and 2003 enhancements.
License: BSD License
Operating System: Linux
It offers a small (less than 100k in one version), fast database engine which offers both in-memory and disk-based tables. Embedded and server modes are available. Additionally, it includes tools such as a minimal web server, in-memory query and management tools (can be run as applets) and a number of demonstration examples.
The product is currently being used as a database and persistence engine in many Open Source Software projects and even in commercial projects and products. In it's current version it is extremely stable and reliable. It is best known for its small size, ability to execute completely in memory and its speed.
This feature-packed software is completely free under our licenses , based on the standard BSD license. Yes, that's right, completely free of cost or onerous restrictions and fully compatible with all major open source licenses. Java source code and extensive documentation always included!
Here are some key features of "hsqldb Database Engine":
· 100% Java
· A full RDBMS (Relational Database Management System), with the Object capabilities of Java
· Switchable source code to support JDK 1.1.x, JDK 1.2.x, JDK (SE) 1.3.x, JDK (SE) 1.4.x.
· Standard SQL (Structured Query Language) syntax
· Correlated subqueries, inner and outer joins are possible
· Views, Temp tables and sequences
· Text Tables (with external file data sources such as csv files)
· Primary key, unique and check constraints on single or multiple columns
· ORDER BY, GROUP BY and HAVING are supported
· COUNT, SUM, MIN, MAX, AVG, alone and in expressions
· Full support for SQL language expressions such as CASE .. WHEN .. ELSE .. , NULLIF etc.
· Transaction support
· Supports Referential Integrity (foreign keys) with full cascading options (delete, update, set null, set default)
· Java Stored Procedures and Functions can be called
· Database Security functions
· 95% JDBC interface support with full metadata and batch statement functionality
· All JDBC 1 data types supported, also 'Object' , Blob and Clob
· In-memory, Standalone and Client-Server operating modes
· A small WebServer and a Servlet is included
· It can be used in Applets and Applications
· Autoincrement column support
· Cached or Text tables up to 2 gigabytes
· Size of strings and binary data only limited by memory
· Indexes can be created for one or many fields
· JDBC Metadata support
· Readonly connection and database support
· An SQL script describing the database can be created
There is a built-in security system using users, passwords and access rights. There exists by default a 'System Administrator' with the user name 'sa' and the password '' (empty password). This special user can create new users, drop users and grant and revoke access rights for tables or stored procedures to other users. The general users can only change their own password and connect as another user. All this user administration can be done by SQL scripts (GRANT, REVOKE). Access can be granted also to PUBLIC.
Identity (autoincrement) column type
Identity columns can be used to serve as automatic unique row identifier for a table. When a new row is added to the table and the identity column is not inserted (or a NULL value is inserted), then HSQLDB provides a unique, incremental value for the column. The identity column is automatically the primary key of the table. Only one identity column can be created per table. In HSQLDB, any value can be used for updating or inserting in an identity column provided it does not violate the primary key constraint.
HSQLDB supports extensive system tables that are build dynamically when a query is made to them. These tables provide database metadata. The names of the tables are 'SYSTEM_' followed by the corresponding JDBC DatabaseMetaData method. For example the methode 'getColumns(...)' queries the table 'SYSTEM_COLUMNS'. There are several other system tables reporting on database tables, indexes, primary keys, foreign keys etc.
Readonly connection and database support
Connections can be set to readonly using the command SET READONLY [TRUE|FALSE] or using the method Connection.setReadOnly(boolean readonly). Additionally the whole database can be put in read-only mode by manually adding the line 'readonly=true' to the .properties file. All connections are then automatically readonly. The database files will then be opened in readonly mode, and it is thus possible to create a CD with this database. Other variations, allow modifiable readonly database (changes are discarded at shutdown) or inclusion of a database in the application JAR.