首页 > 数据库 > 数据库开发技术 > H2:一款基于Java的嵌入式关系型数据库
今天又给大家介绍一款基于 Java 的嵌入式关系型数据库:H2。
为什么说“又”呢?因为最近给大家介绍了一款基于 Java 的嵌入式关系型数据库:Apache Derby。
非常快速、开源、支持 SQL 标准和 JDBC API;
支持嵌入式和服务器模式,支持集群部署,支持磁盘存储和内存存储,支持只读数据库和临时表;
支持事务(ACID)和多版本并发控制(MVCC),支持并发连接、表级锁;
提供了基于浏览器的控制台应用程序;
支持数据库加密(AES),SHA-256 密码加密,加密函数,SSL 连接;
全文检索;
纯 Java 实现,jar 文件大小仅有 2 MB 左右,占用的内存很小;
ODBC 驱动;
基于成本的优化器,复杂查询的遗传算法,不需要任何配置;
支持可滚动、可更新的查询结果集,大型结果集,结果集外部排序,函数可以返回结果集;
支持多个模式(schema),提供了系统模式 information schema;
级联的参照完整性/外键约束,检查约束;
内连接和外连接查询,子查询,只读视图和内联视图;
触发器和 Java 函数/存储过程;
大量内置函数,包括 XML 和无损数据压缩函数;
支持广泛的数据类型,包括大对象(BLOB/CLOB)和数组类型;
序列和自增字段,计算列(可以用于创建函数索引);
ORDER BY、GROUP BY、HAVING、UNION、OFFSET / FETCH(包括 PERCENT 和 WITH TIES)、LIMIT、TOP、DISTINCT / DISTINCT ON (…);
窗口函数;
支持排序规则(Collation)包括 ICU4J 库;
支持用户和角色;
支持各种数据库兼容模式:IBM DB2、Apache Derby、HSQLDB、MS SQL Server、MySQL、Oracle 以及 PostgreSQL;
提供了防止 SQL 注入的方法;
用户密码认证使用 SHA-256 和 salt;
对于服务器连接模式,用户密码永远不会使用明文在网络上传输(即使使用非安全的连接也是如此;不过这个规则只适用于 TCP 服务器,而不适用于 H2 控制台;另外,它也不适用于在 URL 中直接指定密码的情况);
所有的数据库文件(包括用于备份数据的脚本文件)都可以使用 AES-128 加密算法进行加密;
远程连接的 JDBC 驱动支持 TLS TCP/IP 连接;
内置的 web 服务器支持 TLS 连接;
发送数据库密码时可以使用字符数组替换字符串;
多种索引类型(b-tree、tree、hash);
支持多维索引;
支持 CSV 文件导入导出;
支持外部链接表,以及内置的虚拟“范围”表;
支持 EXPLAIN PLAN 语句,支持高级跟踪选项;
支持延迟或者禁用数据库关闭,提高性能;
提供了基 于 Web 控制台应用程序(多语言界面),支持命令自动补全功能;
支持导出数据库的脚本文件;
提供了一个恢复工具,可以用于备份数据库;
支持类似于 MySQL 的变量;
预编译语句的自动重编译;
使用少量的数据库文件;
为每个记录和日志条目增加了校验和,保证了数据的完整性;
良好的测试(高代码覆盖率,随机压力测试)。

bin 目录包含了 jar 文件和启动脚本;
docs 目录包含了文档和 Javadoc;
service 目录包含了将 H2 配置为 Windows 服务的安装和管理脚本;
src 目录包含了所有的源码文件。
C:\Users\dongx> java -version
java version "13.0.1" 2019-10-15
Java(TM) SE Runtime Environment (build 13.0.1+9)
Java HotSpot(TM) 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing)
RUNSCRIPT FROM '~/myfile.sql'
C:\Users\dongx>java -cp "C:\Program Files (x86)\H2\bin\h2-1.4.200.jar" org.h2.tools.Shell
Welcome to H2 Shell 1.4.200 (2019-10-14)
Exit with Ctrl+C
[Enter] jdbc:h2:tcp://localhost/~/test
URL
[Enter] org.h2.Driver
Driver
[Enter] sa
User
Password
Connected
Commands are case insensitive; SQL statements end with ';'
help or ? Display this help
list Toggle result list / stack trace mode
maxwidth Set maximum column width (default is 100)
autocommit Enable or disable autocommit
history Show the last 20 statements
quit or exit Close the connection and exit
sql>
sql> select now();
NOW()
2020-09-03 20:54:28.629717
(1 row, 2 ms)
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
</dependency>
原文作者:SQL编程思想;如有侵权,请联系管理员删除。