H2:修订间差异

来自牛奶河Wiki
跳到导航 跳到搜索
第40行: 第40行:


==== 函数 ====
==== 函数 ====
包含部分 MySQL 函数
包含部分 MySQL、Oracle 函数
  substring('abcd', 1, 2)
  substring('abcd', 1, 2)
  now(), curdate(), ascii('abc'), rand(), floor(3.5), ceil(3.5)
  now(), curdate(), ascii('abc'), rand(), floor(3.5), ceil(3.5)
  concat('abc', 'd'), rtrim(',abc,', ',')
  concat('abc', 'd'), rtrim(',abc,', ',')
-- 日期转为字符串
to_char(now(), 'yyyy-MM-dd hh24:Mi:ss')
-- 将时间转为毫秒、秒
datediff('ms', '1970-01-01', now()) msec, datediff('s', '1970-01-01', now()) Sec


=== 关闭 ===
=== 关闭 ===

2024年11月6日 (三) 09:30的版本

H2 数据库源于 Hypersonic SQL 项目,是一款以 Java 编写的轻量级关系型数据库。由于其小巧、灵活并且易于集成,H2 经常被用作开发和测试环境中的便利数据库解决方案。除此之外,H2也适合作为生产环境中的嵌入式数据库、轻量级应用的内存数据库、大型应用的本地缓存数据库。它不仅支持标准的 SQL,还兼容 JDBC API,既可以以嵌入式的形式运行,也可以作为服务器模式运行。

Welcome to H2, the Java SQL database. The main features of H2 are:

  • Very fast, open source, JDBC API
  • Embedded and server modes; in-memory databases
  • Browser based Console application
  • Small footprint: around 2.5 MB jar file size

安装

从官网下载:https://h2database.com/

配置

修改 bin/h2.sh

java -cp "$dir/h2-2.2.224.jar:$H2DRIVERS:$CLASSPATH" org.h2.tools.Server -tcpAllowOthers -webAllowOthers -webPort 8082 "$@"
  • webAllowOthers, 允许 web 连接
  • tcpAllowOthers, 允许 tcp 连接
  • webPort, web 端口,默认 8082

运行

nohup sh h2.sh &
  • TCP server running at tcp://192.168.0.158:9092 (others can connect)
  • PG server running at pg://192.168.0.158:5435 (only local connections)
  • Web Console server running at http://192.168.0.158:8082 (others can connect)
  • (ignore) Failed to start a browser to open the URL http://192.168.0.158:8082: Browser detection failed, and java property 'h2.browser' and environment variable BROWSER are not set to a browser executable.

建库

java -cp /opt/h2/bin/h2-2.2.224.jar org.h2.tools.Shell

例子

create table test (
  ky      int primary key,
  val     varchar(20),
  ct      datetime comment 'create date'
);
 
-- truncate table test;
insert into test values(0, 'Hello, World!', '2024-10-10 12:59:59');
select * from test;

函数

包含部分 MySQL、Oracle 函数

substring('abcd', 1, 2)
now(), curdate(), ascii('abc'), rand(), floor(3.5), ceil(3.5)
concat('abc', 'd'), rtrim(',abc,', ',')
-- 日期转为字符串
to_char(now(), 'yyyy-MM-dd hh24:Mi:ss')
-- 将时间转为毫秒、秒
datediff('ms', '1970-01-01', now()) msec, datediff('s', '1970-01-01', now()) Sec

关闭

默认情况下当最后一个连接关闭后,数据库会自动关闭。延迟关闭方法:

  • 执行 SQL statment,'SET DB_CLOSE_DELAY <seconds>'
  • 在连接的 URL 中设置,如 'jdbc:h2:~/test;DB_CLOSE_DELAY=10',-1 禁用无连接自动关闭功能
  • 在连接的 URL 中设置,如 'jdbc:h2:~/test;DB_CLOSE_ON_EXIT=FALSE',表示禁用 java VM 退出自动关闭功能

如果 DB_CLOSE_DELAY 设置为 -1,但如果 JAVA 的 VM 正常退出的话,这种情况下 H2 可以使用 'DB_CLOSE_ON_EXIT=FALSE' 来防止 vm 的 shutdown hook 自动关闭数据库。