Firebird,中文名就是火鸟数据库,它提供了ANSI SQL特性支持,并且可以完美运行于Linux、Windows和Unix平台。Firebird数据库有着优秀的并发特性和强大的存储过程和触发器的语言,需要的朋友下载试试吧!
火鸟数据库是什么
火鸟数据库是开源数据库,数据安全性比较好,费用也比较低,操作和维护就比较简单。
如果需要卸载的话,双击安装程序包,如果你已安装的话就会弹出1个窗口,上面有修复和卸载两个选择,选择卸载就能够进行卸载了。
功能特性:
支持原子性,并发性,隔离性等概念。
支持事务的多个版本功能。
支持存储过程。
支持事件:存储过程和触发器可以引发事件,这个事件可以被客户端程序监听到。
生成子:生成子也称为序列,它可以很容易的实现自动增加的字段。它是一个INT64的长度,因此,它可以用在一个事务中,也可以用在其它很多方面。
只读数据库:我们可以把数据库存放在CD中,形成一个只读数据库。如果我们的应用程序也在光盘上,再加上嵌入式的FB数据库服务器,便可以得到一个无与伦比的 CDLIVE(即只用光盘就可以运行起来)应用。
全事务控制:一个客户端可以存在多个并发的事务。并且每一个事务都可以独立的进行控制,两段提交功能可以保证数据库的一致性。锁优化机制也支持多个事务的保存点。
触发器:每一个表可以有多个并发的行级触发器,可以在插入前,插入后,更新前,更新后,删除前,删除后进行触发。我们可以在触发器中写入PSQL语句,默认值,产生异常,firebird现在支持统一触发器,即可以一个触发器中,一次性管理插入,更新,删除的操作。
字符集:Firebird实现了很多国际标准的字符集,包括Unicode。
扩展函数:可以使用C语言,C++,DELPHI写UDF,使用UDF(用户定义函数库)可以很容易的挂入数据库引擎中以扩展我们需要的功能.
SQL标准兼容:Firebird 实现了全部SQL92所要求的功能,实现了SQL99最常用的的要求。包括但不限于"FULL/LEFT/RIGHT [OUTER] JOIN , UNION, DISTINCT , 子查询 (IN, EXISTS),内部函数 (AVG, SUM, MIN, MAX, COALESCE, CASE, ..), 主键,外键,唯一索引以及所有通用的数据类型。
在线备份:不需要停止数据库即可进行备份,一个备份进程产生一个数据库当前的快照。因此,用户可以在备份期间持续的工作,即实现24x7(每天24小时,每周7天) 的操作。
Firebird还实现了域,字段级别的约束,视图,异常,规则和权限管理
协议:Firebird协议使用IPL(interbase public license)和IDPL(Initial Developer's Public License),这种协议类似于Mozilla协议。你可以完全的自由使用并且可以自由的布署在你的客户应用上。
包含三个版本:(a)标准服务器:每一个客户连接将引发一个服务器进程(支持多处理器) ;(b)超级服务器:一相服务器进程模块管理所有的客户端连接,当前不支持多处理器;(c)嵌入服务器:整个服务器引擎就是一个动态库,只支持本地通过IO进行调用;
NET C# 和 Java 的支持:官方提供了.NET Data Provider 和 JDBC Driver 。
Firebird数据库如何打开
Firebird安装使用教程
1.自定义函数问题.Access to UDF library "rfunc.dll" is denied by server administrator
花了很长时间,不明白为何,将rfunc.dll拷到udf目录,bin目录,windows\system32目录都不能解决问题,google一下,网上有同样的问题,但没有解决方案,结果我重装了一下firebird就解决了.
2.存储过程中变量的定义
ms sql存储过程中无论在哪都可以定义新的变量,但在firebird中,只能在as 与begin之间进行定义.firebird的变量不能用@符号,我将@全部变成a就好了.
3.存储过程中变量的使用
select @i=count(*) from table1 //ms sql
select count(*) from table1 into :i//firebird引用变量使用冒号
4.嵌入式sql,
firebird支持select * from table exists (select ...) 或 select * from table in (select ...)
但不支持select * from (select * from ...) a,
我是将这类改写成视图解决的
5.case语句
mssql 可使用field= case (),但firebbird仅支持case () as field,
6.mssql getdate()变成CURRENT_DATE+CURRENT_TIME
select * from snartleave where dt_starttime<CURRENT_DATE+CURRENT_TIME
或
select * from snartleave where dt_starttime<CURRENT_DATE||' ' ||CURRENT_TIME
7.返回数据集的存储过程写法(firebird写法有点麻烦)
CREATE PROCEDURE SPVARTST2 (
VAR_IPTARTNO CHAR(6))
RETURNS (
VAR_ARTNAME CHAR(10))
AS
begin
for select v_name1 from snart where v_artNo=:var_iptartno into :var_artname do
suspend;
end
8.自动增长字段的使用(autoincrement)
firebird有个发生器(generator)的东东,在发生器里记录值的增长,
再用触发器实现
begin
if (new.i_seqno is null) then
begin
NEW.i_seqno = GEN_ID(GEN_T_DB_ARTSEQNO_ID,1);
end
end
//GEN_T_DB_ARTSEQNO_ID就是创建的发生器,看到没有,也就是说不同的表不同的字段可以共用一个发生器,gen_id相当于identity,看起来比mssql复杂,其实也很简单。
9.发生器重置 mssql里自动增加的字段要重置好像很麻烦,较难控制,
firebird可以这样(存储过程中)
agenerator=Gen_ID(GEN_T_DB_ARTSEQNO_ID,Gen_ID(GEN_T_DB_ARTSEQNO_ID,0)*-1+1);
//agenerator是一个整形变量,好像一定要装gen_id的值符给一个变量才行,不知道有没有更好的办法,不用定义一个多余的变量
可参考如下网址:http://www.fingerbird.de/generatorguide_body.htm
10 通过一个表更改另一个表的数据
mssql:update table1 set cname=b.cname from table1 a inner join table2 as b where a.id=b.id
firebird:update table1 a set cname=(select cname from table 2 b where b where a.id=b.id)
Firebird 更新日志
Firebird 2.5.5
2015年11月18日更新:
在这个版本改进:
时间戳和运行时统计数据中选择可用GBAK输出。
更好的验证和修正GFIX丢失的数据页。
Firebird 2.5.4
2015年3月30日更新:
在这个版本改进:
在线验证用户定义的表和索引。
优化处理内部临时blob。
Firebird 2.5.3
2014年7月17日更新:
在这个版本改进:
新的上下文变量添加到系统的名称空间。
增加一些限制:
最大连接数SuperServer / SuperClassic提出从1024年到2048年连接。
最大数量的输入参数为用户定义函数(udf)从10到15。
错误报告的改进。
物理备份提高处理性能和可靠性问题。
设置数据不再块并发连接。
更新或插入语句,返回子句添加到嵌入式SQL。
- PC官方版
- 安卓官方手机版
- IOS官方手机版