《FireBird数据库使用指南.doc》由会员分享,可在线阅读,更多相关《FireBird数据库使用指南.doc(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-FireBird数据库使用指南一、FireBird数据库简介Firebird是一个跨平台的关系数据库系统,目前能够运行在Windows、linux和各种Unix操作系统上,提供了大部分SQL-99标准的功能。它既能作为多用户环境下的数据库服务器运行,也提供嵌入式数据库的实现。Firebird提供良好的并发性,高效的执行,强大的语言支持存储过程和触发器。从1981年起,它已经被许多商业公司运用于许多的产品系统中。 Firebird脱胎于Borland公司的开源版数据库Interbase6.0,是一个完全非商业化的产品,用C和C+开发。由于与interbase的血缘关系,大部分interbase
2、的开发工具可以直接应用到Firebird开发中。Firebird和原Borland的InterBase有着相同的血脉,其作为一个开源项目在2000年7月25日前遵循InterBase Public License V.1.0协议。Firebird使用Mozilla Public License v.1.1许可证发行。 Firebird特性介绍:firebird是一个全功能的,强大高效的,轻量级,免维护的数据库。它很容易让您从单用户,单数据库升级到企业级的应用。一个firebird数据库服务器能够管理多个独立的数据库,每一个数据库同时可支持多个客户端连结。总之:它是一个开源的,强大在,可以自由使
3、用的数据库(即使是商业上的使用) 关键特性:支持原子性,并发性,隔离性等概念。 MGA:支持事务的多个版本功能, 存储过程:使用PSQL(Procedure SQL),你可以创建强大的存储过程来处理服务上的所有数据,你可以使用select Stored Procedure的形式,使用存储过程,以得到一个虚拟的表结构的结果。这样的话,你就可以很容易的在报表中使用它。 事件:存储过程和触发器可以引发事件,这个事件可以被客户端程序监听到 生成子:生成子也称为序列,它可以很容易的实现自动增加的字段。它是一个INT64的长度,因此,它可以用在一个事务中,也可以用在其它很多方面。只读数据库:我们可以把数据
4、库存放在CD中,形成一个只读数据库。如果我们的应用程序也在光盘上,再加上嵌入式的FB数据库服务器,便可以得到一个无与伦比的 CDLIVE(即只用光盘就可以运行起来)应用。 全事务控制:一个客户端可以存在多个并发的事务。并且每一个事务都可以独立的进行控制,两段提交功能可以保证数据库的一致性。锁优化机制也支持多个事务的保存点。在线备份:不需要停止数据库即可进行备份,一个备份进程产生一个数据库当前的快照。因此,用户可以在备份期间持续的工作,即实现24x7(每天24小时,每周7天)的操作。 触发器:每一个表可以有多个并发的行级触发器,可以在插入前,插入后,更新前,更新后,删除前,删除后进行触发。我们可
5、以在触发器中写入PSQL语句,默认值,产生异常,firebird现在支持统一触发器,即可以一个触发器中,一次性管理插入,更新,删除的操作。 扩展函数:可以使用C语言,C+,DELPHI写UDF,使用UDF(用户定义函数库)可以很容易的挂入数据库引擎中以扩展我们需要的功能字符集:Firebird实现了很多国际标准的字符集,包括Unicode。 SQL标准兼容:Firebird 实现了全部SQL92所要求的功能,实现了SQL99最常用的的要求。包括但不限于FULL/LEFT/RIGHT OUTER JOIN , UNION, DISTINCT , 子查询 (IN, EXISTS),内部函数 (AV
6、G, SUM, MIN, MAX, COALESCE, CASE, .), 主键,外键,唯一索引以及所有通用的数据类型。 Firebird还实现了域,字段级别的约束,视图,异常,规则和权限管理,更多的详细信息,请参考Firebird发布通知和参考手册。 硬件需求:Firebird可以工作最常见的硬件环境中,甚至非常差的硬件中,也能很好的工作,当然,硬件的要求依赖于你想做什么,例如你有多个并发用户等等。 有效的平台支持Firebrid在常见的平台上都可运行,如Linux和Windows(包括Windows终端服务器)其它支持的平台包括(MACOS(苹果机),Solaris及HP-UX)把数据库从
7、一个平台转到另一个平台,非常的容易,只要备份数据库,然后,再到另一个平台上恢复即可可连接性Firebird 支持一系列的连接方法,目前,可以通过原生的DELPHI,C+组件连接,也可以通过ODBC,JDBC,PHP,OLEDB,DbExpress进行连接。原生的联连提供了直接调用Firebird的API函数库(fbclient.dll/.so)进行调用的能力。物理限制Firebird支持非常巨大的数据库,数据库可以分成多个物理文件。每个文件的大小依赖于操作系统的限制。当前一个数据库文件最大的理论限制是64T(即64000G),因此,常见的限制通常是操作系统的限制以及磁盘空间的限制。 服务器引擎
8、版本当前有三个服务器版本。 标准服务器:每一个客户连接将引发一个服务器进程(支持多处理器) 超级服务器:一相服务器进程模块管理所有的客户端连接,当前不支持多处理器。 嵌入服务器:整个服务器引擎就是一个动态库,只支持本地通过IO进行调用。 但是,所有的服务器都使用一种数据库格式,因此,你可以很方便的在不同的引擎之间共享数据库文件的数据。协议Firebird协议使用IPL(interbase public license)和IDPL(Initial Developers Public License),这种协议类似于Mozilla协议。你可以完全的自由使用并且可以自由的布署在你的客户应用上。你不需
9、要公开你的源代码。当然,如果你修改和数据库引擎,你应该公布源代码。 工具有很多的工具支持Firebird.包括自由的,免费的和商业的。包括开发工具,管理工具,诊断工具等等。 支持和资源在Firebird的官方网站上(www.firebirdsql.org),有很多关于这个项目的有用的信息。IPPhonex公司也提供专业的商业支持。在他们网站上,也有很多有用的专业信息及常见问题的解答等。 团队Firebird有一系列的用户支持的团队和新闻组,您可以寻求在线支持。您可以查看项目主页上的全部新闻组列表。 历史Firebird基于开源Interbase6.0,它是Borland公司年发布的一个开源版本
10、。关于Interbase的最早历史可以追溯到1984年,因此,这个数据库已经有20岁了。 特点1、Firebird是一个真正的关系数据库,支持存储过程、视图、触发器、事务等大型关系数据库的所有特性; 2、Firebird支持SQL92的绝大部分命令,并且支持大部分SQL99命令,新版Firebird 2.0对SQL99的支持更完整; 3、Firebird源码基于成熟的商业数据库Interbase,有良好的稳定性,与Interbase有良好的兼容性; 4、不用考虑授权费用(免费),不用当心将来有一天你或你的客户因为使用盗版而被数据库开发商告上法庭; 5、发布简易,安装文件只有几M,且高度可定制,
11、客户端的分发也很简单,只需一个DLL文件; 6、Firebird的一嵌入式服务器版本,不用安装,直接运行,基于单机开发首选; 7、Firebird的运行效率非常高;8、具备高度可移植性,可在Linux,Unix,MacOS,Windows,Solaris系统下运行,而且数据库格式完全一样,不用修改; 9、开发环境支持良好,Delphi,C+Builder不用通过ODBC连接,直接用原生开发接口开发基于Firebird的程序。 二、FireBird数据库的安装架構firebird 資料庫軟體有三種套件,並而支援不同作業平台(windows系列,linux,freebsd等.)1. Super S
12、erver-無法直接存取資料庫檔案,必須透過socket來和伺服器溝通 2. Classic-直接存取資料庫的檔案,多個程式可以同時存取一個檔案,有點像vfp,dbase 3. embedded-專為一些小型系統的嵌入式資料庫 (pda)下載及安裝主網站:http:/ relational database直接點兩下就可以安裝,請照步驟,根據自己的需求來安裝預設安裝路徑windows:c:program filesfirebirdfirebird_1_5linux:/opt/firebird 兩個作業系統下的目錄結構非常像根目錄下:firebird.conf-設定檔 aliases.conf
13、-別名檔friebird.log -記錄檔SYSDBA.password -linux才有,管理者的名稱及密碼在裏面,windows則預設:名稱:sysdba,密碼:masterkeywindows直接使用security.fdb來存sysdba的密碼注意:使用者名稱不分大小寫,但密碼有分目錄/bin:則是一些必要的主要及工具程式設定 firebird 主要的設定檔firebird.conf 預設tcp/ip會啟動port:3050你可以使用telnet ip 3050來測試aliases.conf設定資料庫的別名資料庫連線時一般要指定路徑,有時路徑太長時你可以指定,在aliases.conf
14、中使用別名來存取它是位於你安裝firebird的根目錄,以下為內建範例# 別名 = 原始路徑employee.fdb = /opt/firebird/examples/employee.fdb其中#為註解,而windows及linux的路徑是有所不同:# fbdb1 在Windows伺服器:fbdb1 = c:FirebirdsampleEmployee.fdb# fbdb2 在Linux伺服器:fbdb2 = /opt/databases/killergames.fdb資料庫執行時可以編輯這個檔案,不需要重新啟動伺服器連線別名的方式:Server_name:aliasname使用者管理(co
15、nsloe介面)1.預設管理者名稱sysdba,密碼masterkey2.密碼檔security.fdb,位於firebird安裝目錄下3.管理程式gsec 安裝目錄下bin4.密碼長度限制在8碼用法:本地主機(資料庫server在本台電腦)gsec -user sysdba -password options遠端主機(資料庫server在別台電腦)gsec -user sysdba -password -database gsec命令display顯示所有使用者display 顯示某使用者add -pw options新增使用者modify options修改使用者delete 刪除使用者h
16、elp求助?同上quit離開gsecz顯示版本options-password 管理者的密碼-user 使用者名稱-pw 使用者密碼-fname 英文名字有,三個部份-mname -lname 範例有兩種方式1.直接下在命令列-2.進入互動式的命令列-額外的命令新增使用者gsec -user sysdba -password masterkey gsec add elvis -pw elvis -fname elvis -lnmae presley 修改密碼gsec modify elvis -pw chunk 修改sysdba密碼gsec -user sysdba -password mas
17、terkey -modify sysdba -pw mykey37修改遠端伺服器linux的sysdba密碼gsec -user sysdba -password masterkey -database harry:/opt/firebird/security.fbd -modify sysdba -pw hamburg 修改遠端伺服器windows的sysdba密碼gsec -user sysdba -password masterkey -database sally:c:Program filesFirebirdsecurity.fdb -modify sysdba -pw hannov
18、er修改遠端伺服器使用tcp port 3050gsec -user sysdba -password masterkey -database jack/3050:/opt/firebird/security.fdb -modify sysdba -pw londo修改遠端windows伺服器ip( a.b.c.d)使用tcp port 3050 gsec -user sysdba -password masterkey -database a.b.c.d/3050:c:program filesfirebirdfirebird_1_5security.fdb -modiyf sysdba -
19、pw londo 刪除本地使用者gsec -user sysdba -password masterkey -delete joe 資料庫管理(console)程式isql位於安裝目錄下的bin以下是一個操作範例:c:Program filesfirebirdfirebird_1_5binisql -user sysdba -password masterkey Use CONNECT or CREATE DATABASE to specify a databaseSQL connect test;Database: test, User: sysdbaSQL show table; COUN
20、TRY CUSTOMER DEPARTMENT EMPLOYEE EMPLOYEE_PROJECT JOB PHONE_LIST PROJECT PROJ_DEPT_BUDGET SALARY_HISTORY SALESSQL select * from country ;COUNTRY CURRENCY= =USA DollarEngland PoundCanada CdnDlrSQLquit;建立資料庫1.建立資料庫create database 2.建立資料表格create table (sql指令)3.刪除資枓表格drop table (sql指令)4.查詢資料庫中所含表格 show
21、table 5.查詢表格中的結構 show table 表格名稱6.新增,刪除,更新(insert,delete,update)均為sql指令7.SQL命令交付,在新增或刪除時,資料庫並未直接變更,要使用sql指命commit 或commit work來更新isql -user sysdba -password masterkeyUse CONNECT or CREATE DATABASE to specify a databaseSQL create database c:temptest.fdb;SQL create table abc (name char(12),age numeric
22、(3);SQL show table friend ;FIRSTNAME CHAR(15) NullableLASTNAME CHAR(20) NullableCITY CHAR(15) NullableSTATE CHAR(2) NullableAGE INTEGER NullableSQL insert into abc (name ,age) values( cschen,34);SQL select * from abc;NAME AGE= =cschen 34 以上的操作主要是sql指令命令的結尾必需使用;, 如果沒有使用;提示會由SQL變為CON,告訴你延續之前的命令SQLcrea
23、te table friend CON(FIRSTNAME CHAR(13),CON LASTNAME CHAR(40),CON STATE CHAR(2),CON AGE INTEGER );同下SQLcreate table friend (FIRSTNAME CHAR(13),LASTNAME CHAR(40),STATE CHAR(2),AGE INTEGER);每一個資料庫有一個特殊資料庫-系統資料庫,包含了使用者權限等.SQL show system; RDB$CHARACTER_SETS RDB$CHECK_CONSTRAINTS RDB$COLLATIONS RDB$DATAB
24、ASE RDB$DEPENDENCIES RDB$EXCEPTIONS RDB$FIELDS RDB$FIELD_DIMENSIONS . .使用者權限1.GRANT 授予使用者權限 GRANT 權限 ON 物件 TO 對象 with grant option2.REVOKE 撤消使用者權限 REVOKE 權限 ON 物件 FROM 對象權限:SELECT ,INSERT ,UPDATE,DELETE, ALL物件:TABLE,VIEW對象:使用者,PUBLIC(代表全部)with grant option 讓該名使用者有設定別的使用者的權限 *因為isql無法輸入中文,因此無法使用在中文輸入
25、資料*在linux下由於可能會有同名的isql(unixODBC套件),而linux安裝在/opt/firebird,因此必須使用絕對路徑來執行,另資料庫的管理者名稱可以不固定,至於密碼在安裝時會自動產生在檔案SYSDBA.password中連線方式(檔案/tcpip)程式支援兩種連線方式1.使用完整路徑連線 c:abcd.2.使用tcpip連線,在路徑前加主機的名稱或IP 主機:c:abcd.我們可以根據切換這兩種windows 下的路徑如有空白,有時必須使用 將路徑框起來才可以用資料庫/使用者管理(gui) 我有試過幾個免費的windows端的軟體 選擇ibeasy+: 非常容易管理,必須
26、有資料庫的觀念另外可配合marathon使用ibeasy+使用者管理介面:server-users management(輸入管理者的名稱及密碼,進入下一個視窗)(你就可以管理你的使用者)設定odbc 在firebird-download -odbc下載後安裝odbc Database 1.完整路徑-c:databaseabc.fdb2.tcp/ip-ip:完整路徑(127.0.0.1:c:databaseabc.fdb)資料庫的安全(備份/回存)(console)GBAK:命令列工具,命令有兩個狀態,備份/回存(-b / -c) 語法 gbak -user -password 1.備份gba
27、k -b 是你要備份的資料庫來源, 是備份的目的地檔名.一般的延伸附檔名 是 .fbk .只有SYSDBA 或是資料庫的擁有者可以執行備份工作. 對於多個檔案的資料庫,只需指定第一個檔案的名稱來當資料庫的名稱. 2.回存 gbak -c 是先前備份的檔案而 是資料庫的名稱選項 (中括號內的是非必要,也就是命令可以使用中括號前的縮寫,或是含中括號內為長參數)參數 說明 功能-backup_database 備份 備份 -buffers Set cache size for restored database 回存 -create_database 回存 (必要參數) 回存 -convert 轉換
28、外部表格到內部表格s 備份 -expand 建立一個非壓縮的備份 備份 -factor n 磁帶機的區塊系數 備份 -garbage collect 備份時不清空已刪除的資料 備份 -inactive 所有的索引將回存為INACTIVE 回存 -ignore 備份時不做checksum錯誤檢查 備份 -kill 在不建立定義備份中的shadows 回存 -limbo 備份時忽略limbo transactions 備份 -metadata只備份資料表格的metadata (schema).不備份資料備份-mode read_write 回存一個 可讀/寫的資料庫(預設)回存-mode read
29、_only 回存一個唯讀寫資料庫 回存 -no_validity 不回存validity constraints.也就是回存資料不回存 constraints 回存 -nt 非相容性的格式(只使用在相同作業平台,及firebird版本)備份-one_at_a_time 一次回存一個表格.你可以分別分次回存表格回存 -old_descriptions 舊的格式 備份 -page_size 設定page size of new database. 可以是 1024, 2048, 4096, 8192.預設1024. 回存 -password 資料庫的密碼 -replace_database 回存在
30、一個存在的資料庫上.只能在擁有本資料庫的使用者可以操作 這是覆寫,不要執行在使用中的資料庫! 回存 -role 使用某一群組(role )來連線 -service :service_mgr 備份: 建立,使用服務管理.回存: 回存,使用服務管理.-transportable 建立可轉移的備份(不同作業系統及firebird版本) 備份 -user 資料庫使用者的名字-use_all_space 正常,回存,資料庫頁會填滿80% 唯讀才會寫回100%(因為不用預留修改的空間) 回存 -verbose 顯示所有gbak執行的詳細動作-y 重導所有的輸出到一個檔案 .注意:命令執行之前不可以存在檔名
31、! -y suppress_output Quiet mode -z 顯示版本範例:正常的備份:gbak -v -t -user SYSDBA -password masterkey dbserver:/db/warehouse.fdb c:backupswarehouse.fbk備份並記錄所有備份時的輸出訊息:gbak -v -t -user SYSDBA -password masterkey -y c:backupswarehouse.log dbserver:/db/warehouse.fdb c:backupswarehouse.fbk正常的回存:gbak -c -v -user S
32、YSDBA -password masterkey c:backupswarehouse.fbk dbserver:/db/warehouse2.fdb回存到一個已存在的資料庫:gbak -c -r -v -user SYSDBA -password masterkey c:backupswarehouse.fbk dbserver:/db/warehouse.fdb回存一個唯讀的資料庫:gbak -c -v -mode read_only -use_all_space -user SYSDBA -password masterkey c:backupswarehouse.fbk c:file
33、swarehousedb.fdb多重檔案備份當資料庫很大時,要備份有點困難,因此我們將資料庫備份成許多小的檔案,如此儲存時比較方便 備份語法:gbak options . 注意: 不要指定最後一個檔案的大小.因我們不一定知道最後一個檔案需要多少空間來儲存,所以它將自動依據大小來儲存.至於其它檔案的大小可以是 bytes (8192), kilbytes (1024k), megabytes (5m), 或 gigabytes (2g) 回存語法:gbak -c options . 回存到一個多個檔案的資料庫有些系統的檔案系統有限制,或是為了效能的因素,因此單一資料庫,可分成多個小的資料庫gba
34、k -c options . 注意:不要指定最後資料庫的大小.它可以無限制的依據回存的檔案來變更大小.Size can be given in bytes (8192), kilbytes (1024k), megabytes (5m), or gigabytes (2g) 由備份多個檔案回存到多個檔案的資料庫:gbak -c options . . 資料庫安全(備份/ 回存)(gui)(ibeasy+,參考hlp檔)選項 (Database | Save Database)你可以簡單複製資料庫檔(如一般的指令copy) 但是無法確定資料庫的安全.優點: 改善效能經由排除不完整的(elimin
35、ating incomplete)交易和過期的記錄 減少資料庫的大小-移除刪除的記錄 獨立的備份和回存的功能和作業系統無關 執行時必要參數: 資料庫全名 備份檔案的名稱,可包含大小等特性. The options which must be applied at the time of back up- Checksums 檢查資料的完整. - End transactions - Metadata only 只存結構不存資料. - Eliminate garbage 予許釋放舊版本記錄的空間. - Old data format- Transportable database 可以回存資料庫
36、到不同的作業系統. - Convert to tables 轉換外部檔案到內部表格. 選項: (Database | Restore Database)執行這個操作,必須是這個資料庫的擁有者或是有執行管理系統的權限: SYSDBA.一個資料備份的資料庫可以回存執行時必要參數: 備份檔案的名稱 資料庫全名 可用的參數 - Page size 變更資料庫每頁的大小,可以改善效能.說實在,所有資料庫在一頁中會比較快.- Rebuild Indices. 重建索引- Create database image Allow the recovery of a database in case of di
37、sk crash. - Validity conditions Allow when data are not valid any more, following for example a modification of the integrity constraints, to be unaware of the integrity constraints. - Commit after each table - Replace database In this case, the database must be closed beforehand, and no user must b
38、e connected. - Create a new database This option is exclusive compared to the preceding option - Use all space to recreate the database. By default, at the time of the restoration of a database, the pages are filled out to 80%. This option makes it possible to fill them to 100%.資料型態名稱 大小 範圍 /精度 描述 B
39、lob 不固定blob段大小限於64K 動態變長度二進位類型,用於存放大量資料的情況,如圖片、音樂、視頻、多媒體等。其基本結構單位為段,它的子類型描述了存儲資料的詳細資訊 Boolean 16位 TrueFalseUnkown 代表了邏輯上的(真、假、不確定)與Dialect無關。 Char(N) n個字元 1到32767個位元組。雙字元集除2 固定長度的字元或字串 Date 64位 從西元後100年一月一日到32768年二月29日 日期類型。只有年月日,不帶時間 Decimal(P,S) 變數(16、32或64位) 精度p從1到18:指定數字的總長度;標度s從0到18:指定小數點後的位數。
40、定點小數。例如decimal(5,3)可以存儲的數位形式為:pp.sss Double Precision 64位 從2.22510的-308 次方到1.79710的308次方 IEEE雙精度浮點數,15位長度 Float 32位 從1.17510的-38 次方到3.4020的38次方 IEEE單精確度浮點數,7位長度 Integer 32位 從-2147483648到2147483647 整數 Numeric(P,S) 變長(16、32或64位) 精度p從1到18:指定數字的總長度;標度s從0到18:指定小數點後的位數。 定點小數。例如decimal(10,3)可以存儲的數位形式為:pppp
41、ppp.sss Smallint 16位 從-32768到32767 短整數 Time 64位 從0:00 AM到23:59.9999 PM 時間類型 Timestamp 64位 從西元後100年一月一日到32768年二月29日 帶有時間的日期類型 Varchar(N) n個字元 1到32767個位元組。字元集決定了其能容納的最大字元數 #Blobblob sub_type segment 這是一個特有的資料型態,是用於儲存比較大量的資料,類似其它資料庫的text或是memo資料型態,在定義時有兩個附加參數是sub_type, segmentsub_type是blob的資料類型,以下是它的types.h中的定義定義說明TYPE (TEXT, 1,nam_f_sub_type)TYPE (BLR, 2,nam_f_sub_type)TYPE (ACL, 3,nam_f_sub_type)TYPE (RANGES, 4,nam_