The download package comes with advanced documentation and the database's source code.
A Windows version (exe file) can be downloaded from here.
Here are some key features of "H2 Database Engine":
Main Features:
· Very fast database engine
· Open source
· Written in Java
· Supports standard SQL, JDBC API
· Embedded and Server mode, Clustering support
· Strong security features
· The PostgreSQL ODBC driver can be used
· Multi version concurrency
· In-memory databases
· Browser based Console application
· Small footprint, around 1 MB jar file size.
· Pure Java
· Memory Mode
· Encrypted Database
· ODBC Driver
· Fulltext Search
Additional Features:
· Disk based or in-memory databases and tables, read-only database support, temporary tables
· Transaction support (read committed and serializable transaction isolation), 2-phase-commit
· Multiple connections, table level locking
· Cost based optimizer, using a genetic algorithm for complex queries, zero-administration
· Scrollable and updatable result set support, large result set, external result sorting, functions can return a result set
· Encrypted database (AES or XTEA), SHA-256 password encryption, encryption functions, SSL
SQL Support:
· Support for multiple schemas, information schema
· Referential integrity / foreign key constraints with cascade, check constraints
· Inner and outer joins, subqueries, read only views and inline views
· Triggers and Java functions / stored procedures
· Many built-in functions, including XML and lossless data compression
· Wide range of data types including large objects (BLOB/CLOB) and arrays
· Sequence and autoincrement columns, computed columns (can be used for function based indexes)
· ORDER BY, GROUP BY, HAVING, UNION, LIMIT, TOP
· Collation support, users, roles
· Compatibility modes for IBM DB2, Apache Derby, HSQLDB, MS SQL Server, MySQL, Oracle, and PostgreSQL.
Security Features:
· Includes a solution for the SQL injection problem
· User password authentication uses SHA-256 and salt
· For server mode connections, user passwords are never transmitted in plain text over the network (even when using insecure connections; this only applies to the TCP server and not to the H2 Console however; it also doesn't apply if you set the password in the database URL)
· All database files (including script files that can be used to backup data) can be encrypted using AES-128 and XTEA encryption algorithms
· The remote JDBC driver supports TCP/IP connections over SSL/TLS
· The built-in web server supports connections over SSL/TLS
· Passwords can be sent to the database using char arrays instead of Strings
Other Features and Tools:
· Small footprint (smaller than 1 MB), low memory requirements
· Multiple index types (b-tree, tree, hash)
· Support for multi-dimensional indexes
· CSV (comma separated values) file support
· Support for linked tables, and a built-in virtual 'range' table
· EXPLAIN PLAN support, sophisticated trace options
· Database closing can be delayed or disabled to improve the performance
· Web-based Console application (translated to many languages) with autocomplete
· The database can generate SQL script files
· Contains a recovery tool that can dump the contents of the database
· Support for variables (for example to calculate running totals)
· Automatic re-compilation of prepared statements
· Uses a small number of database files
· Uses a checksum for each record and log entry for data integrity
· Well tested (high code coverage, randomized stress tests)
What's New in This Release: [ read full changelog ]
· Some nested joins could not be executed, for example: select * from (select * from (select * from a) a right join b b) c;
· MS SQL Server compatibility: ISNULL is now an alias for IFNULL.
· Terrence Huang has completed the translation of the H2 Console tool to Chinese. Thanks a lot!
· Server mode: the number of CLOB / BLOB values that were cached on the server is now the maximum of: 5 times the SERVER_RESULT_SET_FETCH_SIZE (which is 100 by default), and SysProperties.SERVER_CACHED_OBJECTS.
· In the trace file, the query execution time was incorrect in some cases, specially for the statement SET TRACE_LEVEL_FILE 2.
· The feature LOG_SIZE_LIMIT that was introduced in version 1.3.165 did not always work correctly (specially with regards to multithreading) and has been removed. The message "Transaction log could not be truncated" is still written to the .trace.db file if required.
· Then reading from a resource using the prefix "classpath:", the ContextClassLoader is now used if the resource can't be read otherwise.
· DatabaseEventListener now calls setProgress whenever a statement starts and ends.
· DatabaseEventListener now calls setProgress periodically while a statement is running.
· The table INFORMATION_SCHEMA.FUNCTION_ALIASES now includes a column TYPE_NAME.
· Issue 378: when using views, the wrong values were bound to a parameter in some cases.
· Terrence Huang has translated the error messages to Chinese. Thanks a lot!
· TRUNC was added as an alias for TRUNCATE.
· Small optimisation for accessing result values by column name.
· Fix for bug in Statement#getMoreResults(int)