概述
本文讲述我使用derby的实践过程;
一. 安装
1. 下载压缩包db-derby-版本号-bin.zip,解压文件到你想安装derby的目录,我指定的目录是D:\app;
2. 配置环境变量path: 在现有环境变量path的末尾添加 ;D:\app\db-derby-10.12.1.1-bin\bin;
3. 打开cmd, 输入命令ij回车;
出现: ij 版本 版本号(我的是10.12), 说明配置成功
二. 使用
a. 嵌入方式连接数据库,以下命令将在derby系统运行所在的jvm所在的目录下创建数据库文件夹my1stdb;
1. 打开cmd,输入ij;
2. 输入命令 : connect 'jdbc:derby:my1stdb:create=true'; 将会创建数据库my1stdb;
输入命令show tables可以看到最后一行有我们刚刚添加的数据库my1stdb;
3. 创建表t_first:
create table t_first (
id int primary key,
name varchar(30));
4. 操作表
插入数据:insert into t_first values (1, 'ah'), (2, 'ahah'); //derby插入多条数据
查询表: select * from t_first
5. 退出数据库:输入命令 exit
b. CS(Client/Server)方式连接数据库,连接命令为 connect 'jdbc:derby://localhost:1527/my2nddb;create=true';
CS连接方式支持多个客户端的连接,嵌入模式同一时间只支持一个终端连接数据库;
c. 内存模式连接数据库, connect 'jdbc:derby:memory:my3rddb;create=true';
Derby的瑕疵:
对Oracle语法不是很支持,我发现的不支持如下:
1. 不支持dual,select (1+1) from dual 等价的方式为 values (1+1);
2. 不支持序列的nextval, select sequenceName.nextval from dual等价的做法 next value for sequenceName;
3. 当使用mybatis框架时, 插入列表的语法不同,derby支持的方式是values (1, xx), (2, xx), (3, xx);
在mybatis中derby插入列表的方式如下:
values <foreach collection='_parameter.get("1")' item="item" index="index" open="(" separator="," close=")">
(#{item.id, jdbcType=NUMERIC},
#{item.name, jdbcType=VARCHAR},
)
</foreach>
而oracle为:
insert tablename (id, name)
select *
from
<foreach collection='_parameter.get("1")' item="item" index="index" separator=" union all " >
select (#{item.id, jdbcType=NUMERIC},
#{item.name, jdbcType=VARCHAR},
) from dual
</foreach>
|