H2:修订间差异

来自牛奶河Wiki
跳到导航 跳到搜索
(创建页面,内容为“H2 数据库源于 Hypersonic SQL 项目,是一款以 Java 编写的轻量级关系型数据库。由于其小巧、灵活并且易于集成,H2 经常被用作开发和测试环境中的便利数据库解决方案。除此之外,H2也适合作为生产环境中的嵌入式数据库、轻量级应用的内存数据库、大型应用的本地缓存数据库。它不仅支持标准的 SQL,还兼容 JDBC API,既可以以嵌入式的形式运行,也可…”)
 
 
(未显示同一用户的10个中间版本)
第13行: 第13行:
==== 配置 ====
==== 配置 ====
修改 bin/h2.sh
修改 bin/h2.sh
  java -cp "$dir/h2-2.2.224.jar:$H2DRIVERS:$CLASSPATH" org.h2.tools.Server -tcpAllowOthers -webAllowOthers -webPort 8082 "$@"
  java -cp "$dir/h2-.jar:$H2DRIVERS:$CLASSPATH" org.h2.tools.Server -tcpAllowOthers -webAllowOthers -webPort 8082 "$@"
* webAllowOthers, 允许 web 连接
* webAllowOthers, 允许 web 连接
* tcpAllowOthers, 允许 tcp 连接
* tcpAllowOthers, 允许 tcp 连接
第26行: 第26行:


=== 建库 ===
=== 建库 ===
  java -cp /opt/h2/bin/h2-2.2.224.jar org.h2.tools.Shell
  java -cp /opt/h2/bin/h2-2.1.212.jar org.h2.tools.Shell


==== 例子 ====
==== 例子 ====
  create table test (
  <small><nowiki>create table test (
  ky int primary key,
  ky     int primary key,
  val varchar(20)
  val     varchar(20),
);
  ct      datetime comment 'create date'
);
   
   
-- truncate table test;
-- truncate table test;
insert into test values(0, 'Hello, World!');
insert into test values(0, 'Hello, World!', '2024-10-10 12:59:59');
select * from test
select * from test;</nowiki></small>
 
=== 函数 ===
包含部分 MySQL、Oracle 函数
{| class="wikitable sortable"
|+
!分类
!函数
!功能
!Example
!Output
|-
| rowspan="3" |字符串
|substring
|截取字符串
|substring('abcd', , 2)
|ab
|-
|concat
|连接字符串
|concat('ab', 'c', 'd')
|abcd
|-
|trim
|去掉两边指定字符
|trim(',,abc.,', ',')
|abc.
|-
| rowspan="3" |时间
|now
|当前时间
|now()
|2024-11-06 15:15:36.975
|-
|to_char
|时间转换为字符串
|to_char(now(), 'yyyy-MM-dd hh24:Mi:ss.ff6')
|2024-11-06 15:15:36.975463
|-
|datediff
|时间差
|datediff('ms', '1970-01-01', now())
|1730906136975, ms/s/d/m
|-
| rowspan="3" |数值
|floor
|取不大于的最大整数
|floor(3.5)
|3
|-
|ceil
|取不小于的最小整数
|ceil(3.5)
|4
|-
|round
|四舍五入
|round(3.495, 2)
|3.5
|-
| rowspan="2" |其它
|ascii
|ASCII
|ascii('abc')
|97
|-
|rand
|随机小数
|rand()
|0.3049366398330672
|}
 
=== 关闭 ===
默认情况下当最后一个连接关闭后,数据库会自动关闭。延迟关闭方法:
 
* 执行 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 自动关闭数据库。


[[分类:Develop]]
[[分类:Develop]]
[[分类:DB]]
[[分类:DB]]
__NOTOC__
[[分类:OtherDB]]

2024年11月6日 (三) 15:34的最新版本

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-.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.1.212.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 函数

分类 函数 功能 Example Output
字符串 substring 截取字符串 substring('abcd', , 2) ab
concat 连接字符串 concat('ab', 'c', 'd') abcd
trim 去掉两边指定字符 trim(',,abc.,', ',') abc.
时间 now 当前时间 now() 2024-11-06 15:15:36.975
to_char 时间转换为字符串 to_char(now(), 'yyyy-MM-dd hh24:Mi:ss.ff6') 2024-11-06 15:15:36.975463
datediff 时间差 datediff('ms', '1970-01-01', now()) 1730906136975, ms/s/d/m
数值 floor 取不大于的最大整数 floor(3.5) 3
ceil 取不小于的最小整数 ceil(3.5) 4
round 四舍五入 round(3.495, 2) 3.5
其它 ascii ASCII ascii('abc') 97
rand 随机小数 rand() 0.3049366398330672

关闭

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

  • 执行 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 自动关闭数据库。