Firebird,中文名就是火鳥(niǎo)數(shù)據(jù)庫(kù),它提供了ANSI SQL特性支持,并且可以完美運(yùn)行于Linux、Windows和Unix平臺(tái)。Firebird數(shù)據(jù)庫(kù)有著優(yōu)秀的并發(fā)特性和強(qiáng)大的存儲(chǔ)過(guò)程和觸發(fā)器的語(yǔ)言,需要的朋友下載試試吧!
火鳥(niǎo)數(shù)據(jù)庫(kù)是什么
火鳥(niǎo)數(shù)據(jù)庫(kù)是開(kāi)源數(shù)據(jù)庫(kù),數(shù)據(jù)安全性比較好,費(fèi)用也比較低,操作和維護(hù)就比較簡(jiǎn)單。
如果需要卸載的話,雙擊安裝程序包,如果你已安裝的話就會(huì)彈出1個(gè)窗口,上面有修復(fù)和卸載兩個(gè)選擇,選擇卸載就能夠進(jìn)行卸載了。
功能特性:
支持原子性,并發(fā)性,隔離性等概念。
支持事務(wù)的多個(gè)版本功能。
支持存儲(chǔ)過(guò)程。
支持事件:存儲(chǔ)過(guò)程和觸發(fā)器可以引發(fā)事件,這個(gè)事件可以被客戶端程序監(jiān)聽(tīng)到。
生成子:生成子也稱為序列,它可以很容易的實(shí)現(xiàn)自動(dòng)增加的字段。它是一個(gè)INT64的長(zhǎng)度,因此,它可以用在一個(gè)事務(wù)中,也可以用在其它很多方面。
只讀數(shù)據(jù)庫(kù):我們可以把數(shù)據(jù)庫(kù)存放在CD中,形成一個(gè)只讀數(shù)據(jù)庫(kù)。如果我們的應(yīng)用程序也在光盤上,再加上嵌入式的FB數(shù)據(jù)庫(kù)服務(wù)器,便可以得到一個(gè)無(wú)與倫比的 CDLIVE(即只用光盤就可以運(yùn)行起來(lái))應(yīng)用。
全事務(wù)控制:一個(gè)客戶端可以存在多個(gè)并發(fā)的事務(wù)。并且每一個(gè)事務(wù)都可以獨(dú)立的進(jìn)行控制,兩段提交功能可以保證數(shù)據(jù)庫(kù)的一致性。鎖優(yōu)化機(jī)制也支持多個(gè)事務(wù)的保存點(diǎn)。
觸發(fā)器:每一個(gè)表可以有多個(gè)并發(fā)的行級(jí)觸發(fā)器,可以在插入前,插入后,更新前,更新后,刪除前,刪除后進(jìn)行觸發(fā)。我們可以在觸發(fā)器中寫入PSQL語(yǔ)句,默認(rèn)值,產(chǎn)生異常,firebird現(xiàn)在支持統(tǒng)一觸發(fā)器,即可以一個(gè)觸發(fā)器中,一次性管理插入,更新,刪除的操作。
字符集:Firebird實(shí)現(xiàn)了很多國(guó)際標(biāo)準(zhǔn)的字符集,包括Unicode。
擴(kuò)展函數(shù):可以使用C語(yǔ)言,C++,DELPHI寫UDF,使用UDF(用戶定義函數(shù)庫(kù))可以很容易的掛入數(shù)據(jù)庫(kù)引擎中以擴(kuò)展我們需要的功能.
SQL標(biāo)準(zhǔn)兼容:Firebird 實(shí)現(xiàn)了全部SQL92所要求的功能,實(shí)現(xiàn)了SQL99最常用的的要求。包括但不限于"FULL/LEFT/RIGHT [OUTER] JOIN , UNION, DISTINCT , 子查詢 (IN, EXISTS),內(nèi)部函數(shù) (AVG, SUM, MIN, MAX, COALESCE, CASE, ..), 主鍵,外鍵,唯一索引以及所有通用的數(shù)據(jù)類型。
在線備份:不需要停止數(shù)據(jù)庫(kù)即可進(jìn)行備份,一個(gè)備份進(jìn)程產(chǎn)生一個(gè)數(shù)據(jù)庫(kù)當(dāng)前的快照。因此,用戶可以在備份期間持續(xù)的工作,即實(shí)現(xiàn)24x7(每天24小時(shí),每周7天) 的操作。
Firebird還實(shí)現(xiàn)了域,字段級(jí)別的約束,視圖,異常,規(guī)則和權(quán)限管理
協(xié)議:Firebird協(xié)議使用IPL(interbase public license)和IDPL(Initial Developer's Public License),這種協(xié)議類似于Mozilla協(xié)議。你可以完全的自由使用并且可以自由的布署在你的客戶應(yīng)用上。
包含三個(gè)版本:(a)標(biāo)準(zhǔn)服務(wù)器:每一個(gè)客戶連接將引發(fā)一個(gè)服務(wù)器進(jìn)程(支持多處理器) ;(b)超級(jí)服務(wù)器:一相服務(wù)器進(jìn)程模塊管理所有的客戶端連接,當(dāng)前不支持多處理器;(c)嵌入服務(wù)器:整個(gè)服務(wù)器引擎就是一個(gè)動(dòng)態(tài)庫(kù),只支持本地通過(guò)IO進(jìn)行調(diào)用;
NET C# 和 Java 的支持:官方提供了.NET Data Provider 和 JDBC Driver 。
Firebird數(shù)據(jù)庫(kù)如何打開(kāi)
Firebird安裝使用教程
1.自定義函數(shù)問(wèn)題.Access to UDF library "rfunc.dll" is denied by server administrator
花了很長(zhǎng)時(shí)間,不明白為何,將rfunc.dll拷到udf目錄,bin目錄,windows\system32目錄都不能解決問(wèn)題,google一下,網(wǎng)上有同樣的問(wèn)題,但沒(méi)有解決方案,結(jié)果我重裝了一下firebird就解決了.
2.存儲(chǔ)過(guò)程中變量的定義
ms sql存儲(chǔ)過(guò)程中無(wú)論在哪都可以定義新的變量,但在firebird中,只能在as 與begin之間進(jìn)行定義.firebird的變量不能用@符號(hào),我將@全部變成a就好了.
3.存儲(chǔ)過(guò)程中變量的使用
select @i=count(*) from table1 //ms sql
select count(*) from table1 into :i//firebird引用變量使用冒號(hào)
4.嵌入式sql,
firebird支持select * from table exists (select ...) 或 select * from table in (select ...)
但不支持select * from (select * from ...) a,
我是將這類改寫成視圖解決的
5.case語(yǔ)句
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.返回?cái)?shù)據(jù)集的存儲(chǔ)過(guò)程寫法(firebird寫法有點(diǎn)麻煩)
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.自動(dòng)增長(zhǎng)字段的使用(autoincrement)
firebird有個(gè)發(fā)生器(generator)的東東,在發(fā)生器里記錄值的增長(zhǎng),
再用觸發(fā)器實(shí)現(xiàn)
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就是創(chuàng)建的發(fā)生器,看到?jīng)]有,也就是說(shuō)不同的表不同的字段可以共用一個(gè)發(fā)生器,gen_id相當(dāng)于identity,看起來(lái)比mssql復(fù)雜,其實(shí)也很簡(jiǎn)單。
9.發(fā)生器重置 mssql里自動(dòng)增加的字段要重置好像很麻煩,較難控制,
firebird可以這樣(存儲(chǔ)過(guò)程中)
agenerator=Gen_ID(GEN_T_DB_ARTSEQNO_ID,Gen_ID(GEN_T_DB_ARTSEQNO_ID,0)*-1+1);
//agenerator是一個(gè)整形變量,好像一定要裝gen_id的值符給一個(gè)變量才行,不知道有沒(méi)有更好的辦法,不用定義一個(gè)多余的變量
可參考如下網(wǎng)址:http://www.fingerbird.de/generatorguide_body.htm
10 通過(guò)一個(gè)表更改另一個(gè)表的數(shù)據(jù)
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日更新:
在這個(gè)版本改進(jìn):
時(shí)間戳和運(yùn)行時(shí)統(tǒng)計(jì)數(shù)據(jù)中選擇可用GBAK輸出。
更好的驗(yàn)證和修正GFIX丟失的數(shù)據(jù)頁(yè)。
Firebird 2.5.4
2015年3月30日更新:
在這個(gè)版本改進(jìn):
在線驗(yàn)證用戶定義的表和索引。
優(yōu)化處理內(nèi)部臨時(shí)blob。
Firebird 2.5.3
2014年7月17日更新:
在這個(gè)版本改進(jìn):
新的上下文變量添加到系統(tǒng)的名稱空間。
增加一些限制:
最大連接數(shù)SuperServer / SuperClassic提出從1024年到2048年連接。
最大數(shù)量的輸入?yún)?shù)為用戶定義函數(shù)(udf)從10到15。
錯(cuò)誤報(bào)告的改進(jìn)。
物理備份提高處理性能和可靠性問(wèn)題。
設(shè)置數(shù)據(jù)不再塊并發(fā)連接。
更新或插入語(yǔ)句,返回子句添加到嵌入式SQL。
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版