derby教程使用总结及心得

本文详细介绍了如何在项目中使用Apache的Derby数据库,包括下载、配置、连接数据库及基本操作,如创建主键自增长数据库、获取当前时间、时间比较等。同时提供了Derby命令的使用说明,涵盖查看表、视图、过程、函数、角色等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近项目需要在使用Apache 的Derby 数据库,Apache Derby 是一个JAVA编写与平台无关的数据库引擎,它以 Java 类库的形式对外提供服务。

下载db-derby-10.9.1.0-bin,并配置进入path,进入命令行窗口:

连接Derby


以服务方式连接

开启服务

java -jarD:\db-derby-10.9.1.0-bin\lib\derbyrun.jar server start(改成你的derby目录)

连接数据库

connect'jdbc:derby://localhost:1527/myDemo';


以文件方式连接

    进入目录C:\Users\Administrator\Desktop\test\database
    输入ij
    输入connect 'jdbc:derby:test;'

tip:该方式每次只允许连接一次,否则会报连接不上.

使用Derby

 

创建主键自增长数据库

create tableT_SC_LOG(

   LOG_ID               INTEGER NOT NULL GENERATED BYDEFAULT AS IDENTITY (START WITH 100, INCREMENT BY 1),

   LOG_TYPE             VARCHAR(8),

   LOG_DATE             TIMESTAMP,

   LOG_CONTENT          VARCHAR(1024),

   REMARK               VARCHAR(1024),

   OPT_CODE             VARCHAR(32),

   OPT_DATE             TIMESTAMP,

   constraint PK_T_SC_LOG primary key (LOG_ID)

);
创建主键有2中模式:

        “GENERATED ALWAYS AS IDENTITY” – Derby always provides auto-incremented sequence values to this column. You are not allowed to specify your own values. 由Derby负责提供自增的主键值, 该值不允许插入.
        “GENERATED BY DEFAULT AS IDENTITY” – Derby provides auto-incremented sequence values to this as default only when you are not providing values. 仅在未提供主键值时, 由Derby负责插入.

相比BY ALWARYS, BY DEFAULT可Insert主键值.参考: http://liguoliang.com/2010/create-autoincrement-column-in-derby

因为Derby不支持通过Alert创建IDENTITY列,最好重建table.否则会报错:
Error: ALTER TABLEstatement cannot add an IDENTITY column to a table.

你也可以使用序列来定义主键.

获取当前时间

VALUES CURRENT_TIME

VALUESCURRENT_TIMESTAMP

CURRENT_DATE


时间比较

 select语句:select count(*) from test where id='1' and {fnTIMESTAMPDIFF(SQL_TSI_SECOND,LOEKED_DATE, CURRENT_TIMESTAMP)}>100;

  解释:TIMESTAMPDIFF(interval,timestampExpression1,timestampExpression2 ) 

        三个参数,第二和第三个参数是timestamp类型的时间函数,第一个参数是(timestampExpression2-timestampExpression1)的时间差的表示单位,如SQL_TSI_SECOND是以秒为单位,返回两个查询参数的时间差。

       CURRENT_TIMESTAMPDerby SQL当前函数,代表当前时间的timestamp.

tip:

   1interval的类型还有:SQL_TSI_DAYSQL_TSI_FRAC_SECONDSQL_TSI_HOURSQL_TSI_MINUTESQL_TSI_MONTHSQL_TSI_QUARTERSQL_TSI_SECONDSQL_TSI_WEEKSQL_TSI_YEAR

   2)关于时间差值函数,还有一个对应的函数TIMESTAMPADD的,

具体的讲解见derby的官方网站:http://db.apache.org/derby/docs/10.2/ref/rrefjdbc88908.html,http://blog.sina.com.cn/s/blog_73044b920100nyzb.html

Derby 命令

 SHOW [ TABLES | VIEWS | PROCEDURES | FUNCTIONS | SYNONYMS ] { IN sche
                               -- 列出表、视图、过程、函数或同义词
  SHOW INDEXES { IN schema | FROM table };
                               -- 列出模式中的索引或表的索引
  SHOW ROLES;                  -- 列出数据库中所有已定义的角色
                               -- 并排序
  SHOW ENABLED_ROLES;          -- 列出针对当前连接启用的角
                               -- 色(要查看当前角色,请使用
                               -- VALUES CURRENT_ROLE)并排序
  SHOW SETTABLE_ROLES;         -- 列出可以为当前连接设置的角色
                               -- 并排序
  DESCRIBE name;               -- 列出指定的表中的列

  COMMIT;                      -- 落实当前事务
  ROLLBACK;                    -- 回滚当前事务

  PREPARE name AS 'SQL-J text'; -- 预编译 SQL-J 文本
  EXECUTE { name | 'SQL-J text' } [ USING { name | 'SQL-J text' } ] ;
                               -- 使用来自 USING 结果集行的参数
                               -- 执行语句
  REMOVE name;                 -- 删除指定的以前预编译的语句

  RUN 'filename';              -- 从指定的文件运行命令

  ELAPSEDTIME [ ON | OFF ];    -- 为 ij 设
置耗用时间模式
  MAXIMUMDISPLAYWIDTH integerValue;
                               -- 将每列的最大显示宽度
                               -- 设置为整数值

  ASYNC name 'SQL-J text';     -- 在另一线程中运行命令
  WAIT FOR name;               -- 等待 ASYNC'd 命令的结果

  GET [SCROLL INSENSITIVE] [WITH  {HOLD | NOHOLD}] CURSOR name AS 'SQL

                               -- 在查询中获取游标(JDBC 结果集)
                               -- 缺省游标是具有保持能力的只能向前移动
  NEXT name;                   -- 从指定的游标获取下一行
  FIRST name;                  -- 从指定的滚动游标获取第一行
  LAST name;                   -- 从指定的滚动游标获取最后一行
  PREVIOUS name;               -- 从指定的滚动游标获取前一行
  ABSOLUTE integer name;       -- 将指定的游标定位在绝对行号上
                               --(负数表示从最后一行定位。)
  RELATIVE integer name;       -- 相对与当前行定位已命名的滚动游标
                               --(整数是行号)
  AFTER LAST name;             -- 将已命名的滚动游标定位于最后一行的后
  BEFORE FIRST name;           -- 将已命名的滚动游标定位于第一行的前面
  GETCURRENTROWNUMBER name;    -- 返回已命名的滚动游标当前位置的行号
                               --(当游标的位置不在一个行上时返回 0。)
  CLOSE name;                  -- 关闭已命名的游标
  LOCALIZEDDISPLAY [ ON | OFF ];
                               -- 控制语言环境敏感数据表示法

  EXIT;                        -- 退出 ij
  HELP;                        -- 显示此消息


 任何无法识别的命令都将被视为可能的 SQL-J 命令并直接执行。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值