FireBird数据库使用指南_第1页
FireBird数据库使用指南_第2页
FireBird数据库使用指南_第3页
FireBird数据库使用指南_第4页
FireBird数据库使用指南_第5页
免费预览已结束,剩余26页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、FireBird数据库简介Firebird是一个跨平台的关系数据库系统,目前能够运行在Windowslinux和各种Unix操作系统上,提供了大部分SQL-99标准的功能。它既能作为多用户环境下的数据库服务器运行,也提供嵌入式数据库的实现。Firebird提供良好的并发性,高效的执行,强大的语言支持存储过程和触发器。从1981年起,它已经被许多商业公司运用于许多的产品系统中。Firebird脱胎于Borland公司的开源版数据库Interbase6.0,是一个完全非商业化的产品,用C和C+开发。由于与interbase的血缘关系,大部分interbase的开发工具可以直接应用到Firebi

2、rd开发中。Firebird和原Borland的InterBase有着相同的血脉,其作为一个开源项目在2000年7月25日前遵循InterBasePublicLicenseV.1.0协议。Firebird使用MozillaPublicLicensev.1.1许可证发行。Firebird特性介绍:firebird是一个全功能的,强大高效的,轻量级,免维护的数据库。它很容易让您从单用户,单数据库升级到企业级的应用。一个firebird数据库服务器能够管理多个独立的数据库,每一个数据库同时可支持多个客户端连结。总之:它是一个开源的,强大在,可以自由使用的数据库(即使是商业上的使用)关键特性:支持原子

3、性,并发性,隔离性等概念。MGA:支持事务的多个版本功能,存储过程:使用PSQL(ProcedureSQL),你可以创建强大的存储过程来处理服务上的所有数据,你可以使用selectStoredProcedure的形式,使用存储过程,以得到一个虚拟的表结构的结果。这样的话,你就可以很容易的在报表中使用它。事件:存储过程和触发器可以引发事件,这个事件可以被客户端程序监听到生成子:Fire ird数据库使用指南生成子也称为序列,它可以很容易的实现自动增加的字段。它是一个因此,它可以用在一个事务中,也可以用在其它很多方面。只读数据库:我们可以把数据库存放在CD中,形成一个只读数据库。如果我们的应用程序

4、也在光盘上,再加上嵌入式的FB数据库服务器,便可以得到一个无与伦比的CDLIVE(即只用光盘就可以运行起来)应用。全事务控制:一个客户端可以存在多个并发的事务。并且每一个事务都可以独立的进行控制,两段提交功能可以保证数据库的一致性。锁优化机制也支持多个事务的保存点。在线备份:不需要停止数据库即可进行备份,一个备份进程产生一个数据库当前的快照。因此,用户可以在备份期间持续的工作,即实现24x7(每天24小时,每周7天)的操作。触发器:每一个表可以有多个并发的行级触发器,可以在插入前,插入后,更新前,更新后,删除前,删除后进行触发。我们可以在触发器中写入PSQL语句,默认值,产生异常,firebi

5、rd现在支持统一触发器,即可以一个触发器中,一次性管理插入,更新,删除的操作。扩展函数:可以使用C语言,C+,DELPHI写UDF,使用UDF(用户定义函数库)可以很容易的挂入数据库引擎中以扩展我们需要的功能字符集:Firebird实现了很多国际标准的字符集,包括Unicode。SQL标准兼容:Firebird实现了全部SQL92所要求的功能,实现了SQL99最常用的的要求。包括但不限 于FULL/LEFT/RIGHTOUTERJOIN,UNION,DISTINCT,子 查 询( IN,EXISTS ) ,内 部 函 数(AVG,SUM,MIN,MAX,COALESCE,CASE,.),主键,

6、外键,唯一索引以及所有通用的数据类型。Firebird还实现了域,字段级别的约束,视图,异常,规则和权限管理,更多的详细信息,请参考Firebird发布通知和参考手册。硬件需求:Firebird可以工作最常见的硬件环境中,甚至非常差的硬件中,也能很好的工作,当然,硬件的要求依赖于你想做什么,例如你有多个并发用户等等。INT64的长度,有效的平台支持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(interbasepubliclicense)和IDPL(InitialDevelopersPublicLicense),这种协议类似于Mozilla协议。你可以完全的自由使用并且可以自由的布署在你的客户应用上。你不需要公开你的源代码。当然,如果你修改和数据库引擎,你应该公布源代码。工具有很多的工具支持Fi

9、rebird.包括自由的,免费的和商业的。包括开发工具,管理工具,诊断工具等等。支持和资源在Firebird的官方网站上(),有很多关于这个项目的有用的信息。IPPhonex公司也提供专业的商业支持。在他们网站上,也有很多有用的专业信息及常见问题的解答等。团队Firebird有一系列的用户支持的团队和新闻组, 您可以寻求在线支持。 您可以查看项目主页上的全部新闻组列表。历史Firebird基于开源Interbase6.0,它是Borland公司200。年发布的一个开源版本。关于Interbase的最早历史可以追溯到1984年,因此,这个数据库已经有20岁了

10、。特点1、Firebird是一个真正的关系数据库,支持存储过程、视图、触发器、事务等大型关系数据库的所有特性;2、Firebird支持SQL92的绝大部分命令,并且支持大部分SQL99命令,新版Firebird2.0对SQL99的支持更完整;3、Firebird源码基于成熟的商业数据库Interbase,有良好的稳定性,与Interbase有良好的兼容性;4、不用考虑授权费用(免费),不用当心将来有一天你或你的客户因为使用盗版而被数据库开发商告上法庭;5、发布简易,安装文件只有几M,且高度可定制,客户端的分发也很简单,只需一个DLL文件;6、Firebird的一嵌入式服务器版本,不用安装,直接

11、运行,基于单机开发首选;7、Firebird的运行效率非常高;8、具备高度可移植性,可在Linux,Unix,MacOS,Windows,Solaris系统下运行,而且数据库格式完全一样,不用修改;9、开发环境支持良好,Delphi,C+Builder不用通过ODBC连接,直接用原生开发接口开发基于Firebird的程序。二、FireBird数据库的安装架情firebird 资料颜耀!有三槿套件,3t 而支援不同作 H 平台(windows 系歹!J,linux,freebsd 等.)1. SuperServer-瓢法直接存取资料案,必犯透谩 socket 来和伺服器潢通2. Classic-

12、直接存取资料的槽案,多他 I 程式可以同畤存取一他槽案,有黑占像vfp,dbase3. embeddedWS一些小型系统的嵌入式资料 J*(pda)下载及安装主女周站:http:/ at 自己的需求来安装5ats 安装路彳至windows:c:programfilesfirebirdfirebird_1_5linux:/opt/firebird雨他作渠系统下的目金泉结情非常像根目金录下:firebird.conf-段定槽aliases.conf-别名槽friebird.log-言己金泉槽SYSDBA.password-linux 才有,管理者的名耦及密礁在裹面,windows 刖 5H 鼓:名

13、租|:sysdba,密礁:masterkeywindows 直接使用 security.fdb 来存 sysdba 的密礁注意:使用者名耦不分大小 H,但密礁有分目金录/bin:JW 是一些必要的主要及工具程式段定 firebird主要的 IS 定槽firebird.conf55 段:tcp/ip 创诙 S&port:3050你可以使用 telnetip3050 来测就aliases.confIS 定资料的别名资料#逋畤一般要指定路彳至,有畤路彳至太辰畤你可以指定,在 aliases.conf 中使用别名来存取它是位於你安装 firebird 的根目金景,以下悬内建靶例#别名=原始路彳

14、至employee.fdb=/opt/firebird/examples/employee.fdb其中#U 解,而 windows 及 linux 的路彳至是有所不同:# fbdbl 在 Windows 伺服器:fbdbl=c:FirebirdsampleEmployee.fdb# fbdb2 在 Linux 伺服器:fbdb2=/opt/databases/killergames.fdb资料制行畤可以褊辑道他槽案,不需要重新改勤伺服器别名的方式:Server_name:aliasname使用者管理(consloe 介面)1.5H 鼓:管理上名耦 sysdba,密礁 masterkey2 .密

15、礁槽 security.fdb,位於 firebird 安装目金录下3 .管理程式 gsec安装目金录下bin4 .密礁 hl 度限制在 8W用法:本地主 H(资料server 在本台)gsec-usersysdba-passwordoptions速端主 H(资料 J*server 在别台 S)gsec-usersysdba-password-databasegsec 命令display示所有使用者displayH 不某使用者add-pwoptions新增使用者modifyoptions修改使用者delete删除使用者help求助?同上quitgsecz示版本options-password管

16、理者的密礁-user使用者名耦-pw使用者密礁-fname英文名字有,三彳固部份-mname-Iname靶例有雨槿方式1 .直接下在命令列-2 .迤入互勤式的命令列-额外的命令新增使用者gsec-usersysdba-passwordmasterkeygsecaddelvis-pwelvis-fnameelvis-lnmaepresley修改密礁gsecmodifyelvis-pwchunk修改 sysdba 密礁gsec-usersysdba-passwordmasterkey-modifysysdba-pwmykey37修改速端伺服器 linux 的 sysdba 密礁gsec-users

17、ysdba-passwordmasterkey-databaseharry:/opt/firebird/security.fbd-modifysysdba-pwhamburg修改速端伺服器 windows 的 sysdba 密礁gsec-usersysdba-passwordmasterkey-databasesally:c:ProgramfilesFirebirdsecurity.fdb-modifysysdba-pwhannover修改速端伺服器使用 tcpport3050gsec-usersysdba-passwordmasterkey-databasejack/3050:/opt/fi

18、rebird/security.fdb-modifysysdba-pwlondo修改速端 windows 伺服器 ip(a.b.c.d)使用 tcpport3050gsec-usersysdba-passwordmasterkey-databasea.b.c.d/3050:c:programfilesfirebirdfirebird_1_5security.fdb-modiyfsysdba-pwlondo删除本地使用者gsec-usersysdba-passwordmasterkey-deletejoe资料 J*管理(console)程式 isql 位於安装目金录下的 bin以下是一他操作靶例

19、UseCONNECTorCREATEDATABASEtospecifyadatabasec:Programfilesfirebirdfirebird_1_5binisql-usersysdba-passwordmasterkeySQLconnecttest;Database:test,User:sysdbaSQLshowtable;COUNTRYDEPARTMENTEMPLOYEE_PROJECTPHONE_LISTPROJ_DEPT_BUDGETSALESSQLselect*fromcountry;COUNTRYCURRENCYCUSTOMEREMPLOYEEJOBPROJECTSALARY

20、_HISTORYUSADollarEnglandPoundCanadaCdnDlrSQLquit;建立资料1 .建立 SBWcreatedatabase2 .建立资料表格 createtable(sql 指令)3 .删除资料表格 droptable(sql 指令)4 .查 mt 料 J*中所含表格 showtable5 .查言旬表格中的结 showtable 表格名耦6 .新增,删除,更新(insert,delete,update)均悬 sql 指令7.SQL 命令交付,在新增或删除畤,资料 J*3t 未直接建更,要使用 sql 指命 commit 或commitwork 来更新isql-us

21、ersysdba-passwordmasterkeyUseCONNECTorCREATEDATABASEtospecifyadatabaseSQLcreatedatabasec:temptest.fdb;SQLcreatetableabc(namechar(12),agenumeric(3);SQLshowtablefriend;FIRSTNAMECHAR(15)NullableLASTNAMECHAR(20)NullableCITYCHAR(15)NullableSTATECHAR(2)NullableAGEINTEGERNullableSQLinsertintoabc(name,age)v

22、alues(cschen,34);SQLselect*fromabc;NAMEAGEcschen34以上的操作主要是 sql 指令命令的结尾必需使用;,如果没有使用;提示曾由 SQL 燮蔚CON告甑你延之前的命令SQLcreatetablefriendCON(FIRSTNAMECHAR(13),CONLASTNAMECHAR(40),CONSTATECHAR(2),CONAGEINTEGER);同下SQLcreatetablefriend(FIRSTNAMECHAR(13),LASTNAMECHAR(40),STATECHAR(2),AGEINTEGER);使用者榷限1 .GRANT 授予使用

23、者榷限GRANT 榷限 ON 物件 TO 封象withgrantoption2 .REVOKEB 消使用者榷限REVOKE 榔艮 ON 物件 FROM 封象榷限:SELECT,INSERT,UPDATE,DELETE,ALL物件:TABLE,VIEW封象:使用者,PUBLIC(代表全部)withgrantoption 名使用者有意:定别的使用者的榷(限*因悬 isql 瓢法输入中文,因此瓢法使用在中文输入资料*在 linux 下由於可能 11r有同名的 isql(unixODBC 套件),而 linux 安装在/opt/firebird,因此必 i(使用路彳至来就行,另资料的管理者名耦可以不周

24、定,至於密礁在安装畤 1r自助生在槽案 SYSDBA.passworcfr方式(槽案/tcpip)程式支援雨槿逋方式1 .使用完整路彳c:abcd.2 .使用 tcpip 逋,在路彳至前加主械的名耦或 IP 主 H:c:abcd.我伸号可以根 at 切换造雨槿windows 下的路彳至如有空白,有畤必须使用符路彳至框起来才可以用资料/使用者管理(gui)我有被戈 08(0 免费的 windows 端的颜耀!逗撵 ibeasy+:非常容易管理,必 i(有资料的觐念另外可配合 marathon 使用ibeasy+使用者管理介面:server-usersmanagement每一他 I 资料有一他 I

25、 特殊国&SQLshowsystem;RDB$CHARACTER_SETSRDB$COLLATIONSRDB$DEPENDENCIESRDB$FIELDS-系统资料,包含了使用者榷限等RDB$CHECK_CONSTRAINTSRDB$DATABASERDB$EXCEPTIONSRDB$FIELD_DIMENSIONS(输入管理者的名耦及密礁,迤入下一他 I 视窗)(你就可以管理你的使用者)段定 odbc在 firebird-download-odbc下载彳爰安装odbcFir&BiHODBCSetupDataSourceNameDSNOliverfirebirdDatabase

26、1127.0.0?l:D:ProgramFilesFirebirdFiretnrdClient|D赤2g2mFilesWi归bMF帕bird_Qb而bcgnEI尸咬|DatabaseAccounlPasswordRole|SYSDBA13*CharacterSet|N0NETestconnectionI-OptionsExtendpropertyidentifierp-quotedidentifier厂$en$itiveidentifierautoquotedidentifierH-lp|OKC.ncel|Database1 .完整路彳至-c:databaseabc.fdb2 .tcp/ip-

27、ip:完整路彳至(:c:databaseabc.fdb)资料的安全(份/回存)(console)GBAK 命令列工具,命令有雨他 I 状!18,份/回存(-b/-c)言吾法gbak-user-password1 .借份gbak-b是你要借份的资料 J#来源/destination是借份的目的地槽名.一般的延伸附槽名是.fbk.只有 SYSDBAE 是资料的掩有者可以就行借份工作.封於多他槽案的资料,只需指定第一他槽案的名耦来常资料的名耦.2 .回存gbak-c是先前借份的槽案而destination是资料的名耦和(中括虢内的是非必要,也就是命令可以使用中括虢前的缩瘾,或是含中

28、括虢内悬 O数)明功能-backup_database借份借份InitiallingtransactionDialect厂maddefaultwrite;3nowait(deJaultuail1l_5examp-buffersSetcachesizeforrestoreddatabase回存-create_database回存(必要参数)回存-convert斡换外部表格到内部表格 s借份-expand建立一彳固非 fO 宿的催 H 分借份-factorn磁带械的 I现系数借份-garbagecollect借份畤不清空已删除的资料借份-inactive所有的索引符回存悬 INACTIVE回存-i

29、gnore催 H 分日寺不做 checksum查借份-kill在不建立定 H 借份中的 shadows回存-limbo借份日寺忽略 limbotransactions借份-metadata只催 H 分资料表格的 metadata(schema).不催 H 分资料借份-moderead_write回存一偃 1 可 H/嘉的 100t(Stt)回存-moderead_only回存一偃 1 唯回存-no_validity不回存 validityconstraints.也就是回存 U 料不回存constraints回存-nt非相谷性的格式(只使用在相同作 11 平台,及 firebird 版本)借份-

30、one_at_a_time一次回存一偃 1 表格.你可以分别分次回存表格回存-old_descriptions的格式借份-page_size定 pagesizeofnewdatabase.可以是 1024,2048,4096,8192.1024.回存-passwordpassword资料康的密礁-replace_database回存在一彳固存在的 U 料上.只能在挑有本资料廛的使用者可以操作道是覆 K,不要轨行在使用中的资料廛!回存-role使用某一群(role)来速-service:service_mgr彳箱彳%:建立,使用服矜管理.回存:回存,使用服矜管理.-transportable建立

31、可斡移的借份(不同作 H系统及firebird 版本)借份-user资料康使用者的名字-use_all_space止常,回存,资料廛 K 曾填满 80%唯!才曹嘉回 100%(因悬不用留修改的空)回存-verboseI!示所有 gbak 孰行的辞区田勤作-yfilename重醇所有的输出到一彳固槽案filename.注思:而轨行之前不可以存在棺名!-ysuppress_outputQuietmode-z示版本靶例:正常的借份:gbak-v-t-userSYSDBA-passwordmasterkeydbserver:/db/warehouse.fdbc:backupswarehouse.fbk

32、彳希份加言曙泉所有彳莆份日寺的输出息:gbak-v-t-userSYSDBA-passwordmasterkey-yc:backupswarehouse.logdbserver:/db/warehouse.fdbc:backupswarehouse.fbk正常的回存:gbak-c-v-userSYSDBA-passwordmasterkeyc:backupswarehouse.fbkdbserver:/db/warehouse2.fdb回存到一彳固已存在的资料廛:gbak-c-r-v-userSYSDBA-passwordmasterkeyc:backupswarehouse.fbkdbser

33、ver:/db/warehouse.fdb回存一偃 I 唯!的 100t:gbak-c-v-moderead_only-use_all_space-userSYSDBA-passwordmasterkeyc:backupswarehouse.fbkc:fileswarehousedb.fdb多重槽案借份常资料很大畤,要借份有黑占困 I8,因此我伸 M 各资料份成 if 多小的槽案,如此楹 I 存畤比敕方便借份言吾法:gbakoptions.注意: 不要指定最彳爰一他槽案的大小.因我伸号不一定知道最彳爰一他槽案需要多少空存,所以它符自勤依摞大小来存.至於其它槽案的大小可以是bytes(8192)

34、,kilbytes(1024k),megabytes(5m),或 gigabytes(2g)回存言吾法:gbak-coptions.回存到一瓶 I 多他槽案的资料有些系统的槽案系统有限制,或是悬了效能的因素,因此 h 一资料,可分成多他小的资料gbak-coptions.注意:不要指定最彳爰资料的大小.它可以瓢限制的依 at 回存的槽案来建更大小Sizecanbegiveninbytes(8192),kilbytes(1024k),megabytes(5m),orgigabytes(2g)由借份多他槽案回存到多他槽案的资料:gbak-coptions.资料安全(份/回存)(gui)(ibeas

35、y+,参考 hlp 槽)改善效能由排除不完整的(eliminatingincomplete)金泉减少资料的大小-移除删除的言己金录力蜀立的借份和回存的功能和作渠系统瓢信制就行畤必要 1m:资料全名借份槽案的名耦,可包含大小等特性.交易和谩期的言己S(Database|SaveDatabase)Theoptionswhichmustbeappliedatthetimeofbackup-Checksums 检查资料的完整.-Endtransactions-Metadataonly 只存结情不存资料.-Eliminategarbage 予 if 释放售版本言已金泉的空 IW.-Olddataform

36、at-Transportabledatabase 可以回存资料 J*到不同的作 It 系统-Converttotables 樽换外部槽案到内部表格.S:(Database|RestoreDatabase)Restoredatabase回卬BackupfilesOptionsPagesize|lu24FIIRebuildindexesYesCreatedatabaseimageYesValiditycondbomYesCommitaftertableNo.ReplacedatabaseNoUatabseCreateonewdatabaseYesServerU$eallspaceNo1Databa

37、seDAdatabasecoppsHdbCancel1就行道他操作,必 i(是造他资料的掩有者或是有就行管理系统的榷限:SYSDBA.就行畤必要 1m:借份槽案的名耦资料全名可用的 1m-Pagesize 建更资料每 JC 的大小,可以改善效能.茨;K 在,所有资料在一真中曾比敕快.-RebuildIndices.重建索引-CreatedatabaseimageAllowtherecoveryofadatabaseincaseofdiskcrash.-ValidityconditionsAllowwhendataarenotvalidanymore,followingforexampleamo

38、dificationoftheintegrityconstraints,tobeunawareoftheintegrityconstraints.-Commitaftereachtable-ReplacedatabaseInthiscase,thedatabasemustbeclosedbeforehand,andnousermustbeconnected.-CreateanewdatabaseThisoptionisexclusivecomparedtotheprecedingoption-Useallspacetorecreatethedatabase.Bydefault,atthetim

39、eoftherestorationofadatabase,thepagesarefilledoutto80%.Thisoptionmakesitpossibletofillthemto100%.名耦大小乾圉/精度描述Blob不固定blob 段大小限於 64K勤熊燮 II 度二迤位(型,用於存放大量 It 料的情况,如 g1 片、音飨榭翼多媒等。其基本结横罩位卷段,它的子型描述了存 HU料的辞区田Boolean16 位TrueFalseUnkown代表了暹辑上的(真、假、不碓定)典Dialect 瓢信司。Char(N)n 偃 1 字元1 到 32767 偃 1 位元1。 曼字元集除 2固定 II

40、 度的字元或字串Date64 位彳是西元彳爰 100 年一月一日到 32768 年二月 29 日日期型。只有年月日,不带畤Decimal(P,S)燮数(16、32 或 64位)精度p优1到18:指定数字的穗 M 度;檄度 s 优 0 到 18:指定小数黑占彳爰的位数。定黑占小数。例如 decimal(5,3)可以存II 的数位形式悬:pp.sssDoublePrecision64 位优 2.225X10 的-308 次k到 1.797X10 的 308 次方IEEEt!精度浮黑占数,15 位晨度Float32 位优 1.175X10 的-38 次k到 3.402X0 的 38 次方IEEE 罩

41、精碓度浮黑占数,7 位晨度nteger32 位优-2147483648到 2147483647整数Numeric(P,S)夔员(16、32 或 64位)精度p优1到18:指定数字的穗 M 度;檄度 s 优 0 到 18:指定小数黑占彳爰的位数。定黑占小数。例如 decimal(10,3)可以存II 的数位形式悬:ppppppp.sssSmallint16 位优-32768 到 32767短整数Time64 位彳於0:00AM 到 23:59.9999PM日寺型Timestamp64 位彳是西元彳爰 100 年一月一带有畴的日期型日到 32768 年二月 29 日Varchar(N)n 偃 1

42、字元1 到 32767 偃 I 位元1。字元集 7 夬定了其能容区内的最大字元数#Blobblobsub_typesegment造是一他特有的资料型熊,是用於存比敕大量的资料,1似其它资料的 text或是 memcft 料型!18,在定羲畤有 WK0 附加数是 sub_type,segmentsubtype 是 blob 的资料型,以下是它的 types.h 中的定 U定羲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_f_sub_type)TYPE

43、(SUMMARY,5,nam_f_sub_type)TYPE(FORMAT,6,nam_f_sub_type)TYPE(TRANSACTION_DESCRIPTION,7,nam_f_sub_type)TYPE(EXTERNAL_FILE_DESCRIPTION,8,namfsubtype)1,2 是我伸号常用的,其它的很少使用 generator(tW 器)言十数器可以我伸 Wt 助崖生循序的数字,你可以招其看成如一他公共建数,使用gen_id(generator 名耦,step)来取得一(0 值 3t 加 stepcreategeneratormy_gennum=gen_id(my_gen

44、,1)JW 一一numI如果粹使用 generator 来填入,如果是 uniqe 或 primarykey,常 generator 最大值是 264(18446744073709551616)如果超谩 1r重回到 0由於 generator 的最大值 264是很大数字要生重褪的 ft 率很小要不要使用日期来配合生?如果配合日期刖生重褪的械率 1r减少(彝票,停票等)年月日+流水虢20040303004而 generator 只要生流水虢,但是流水虢每天都是优 1K 始,且一般 1r限制数字的 SE度如四位数或三位数如此造成重褪性 1r增加目前资料瓢法虑理道他的题,你必 i(自己段言十一他表格

45、来存道他值,配合 sql 指令来取得最彳爰的值(建 st:不要浪费畤在使用在资料端的解决方法)填入的楠位要字用或是数字?如果是覃力蜀使用 generator,最好是用数字的格式比敕好# 注意:integer 只有 32 位元靶例:文字,i(似 memo 而资料型憨varchar 限制 32K二位元资料(圃片,影音槽等)自勤展示creategeneratortest_gen;CREATETABLEtestl(serial_nochar(3)notnullprimarykey,namechar(15);建立斶彝来自勤取得 ID(new.楠位名耦,道他建数是可以被 sql 指令畤自勤引用)sette

46、rm!;createtriggertestfortest1activebeforeinsertasbeginnew.serial_no=cast(gen_id(test_gen,1)aschar(3);end!setterm;!# 金性寸本身楠位建更方法:斶彝包含了三槿 sql 指令及二槿状熊就行前/新行彳爰在insert 的新行前, 所有的插入到被斶彝的表格的楠位, 你可以使用 new.楠位名耦来存取,只要建更值就可以自勤建更新增到表格中的楠位值# 在建立 trigger 畤由於 trigger 中的;(分虢)11r混淆结束符虢,因此使用 sql 指令或在 isql 中新增 triggert

47、Mt 更具结尾符虢, 是 setterm 结尾符虢,55 段的结尾符虢;,因此做完要彳复原 setterm;!流水虢每日重置流水虢使用表格楠位来言己金荣日期,检查若日期不同 JW 瘾入新日期亚力各 generator 营帚零(setgenerator 名耦 to0),但瓢法使用在楹 I 存函式中在新增之前斶彝道他功能,比上述更曾罩(尚未)createtriggertest2fortestactivebeforeinsertasdeclarevariabletemp_datedate;declarevariableserial_nochar(3);beginifcurrent_date=t_da

48、tethen#取得流水虢serial_no=cast(gen_id(generator 名殖 1)aschar(3);else#符流水虢置悬 0,使用相减=GENID(MyGenerator,-GENID(MyGenerator)#取得流水虢endifend#current_dateselectcurrent_datefromrdb$database楹 f 存函式或斶彝呼叫其它的楹 f 存函式executeprocedure 名耦(燮数 1,建数 2.)RETURNING_VALUES(燮数1,建数 2.)最曾罩的呼叫(不停值,也不停回值)直接就行 EXECUTEPROCEDU 窟琳羽跳函式的

49、新行或 GENERATOR 结果1 .建立一 HGENERATORCREATEGENERATORTESTGEN2 .建立一他存函式(只是符 GENERATE 院)createprocedureTESTasDECLAREVARIABLEMYFLOAT;BEGINMY=GEN_ID(TESTGEN,1);END3 .直接就行命令EXECUTETEST4 .查 HGENERATORS 是 2函式中自己宣告的 K 域建数1 .直接引用-不需任何前置符虢2 .用在 sql 言吾法中-必前置:言己金泉使用者CURRENT_USERCURRENT_ROLE畤 O 建数current_time,current

50、_date,current_timestampudf 自定函式的内建函式55 段有内建函式放在在安装目金录下的 udf中含有的函式瓷制 1 在 fbudf.sql、ib_udf.sql,但真正函式是在 fbudf.dll、ib_udf.dll在 firebird 中使用者自定函式,和其它的 sql-server 有很大的不同在 firebird 中 udf 一般是以 c 或 c+:B 成函式,然彳爰褊。睾成悬模黜1.windows-.dll 槽2.linux-.so 槽再来符其放在安装目金泉的 UDF 目金下,一般曾符其宣告槽放在同一目金泉下,如果不是放在 58tg 的目金录下,你必 i(在

51、firebird 的琪境槽中 IS 定,但是曾有安全的曲.如果你不曾也不想嘉自定函式,但是想要用别人瘾好的函式要使用宣告命令declareexternalfunction其言吾法如下:declareexternalfunction名殖伸入的燮数型魅列表returns 回伸建数型;1gFREE_ITentry_point函式名 ST模黜名 ST;如果在不知道有那些函式可以使用,可以参考 UDF 目金录下的.sql以下是完整抄自 ib_udf.sqlDECLAREEXTERNALFUNCTIONltrimCSTRING(255)RETURNSCSTRING(255)FREE_ITENTRY_POI

52、NTIB_UDF_ltrimMODULE_NAMEib_udf;你必 i(在 isql 遍料完罩彳爰就行上述而命令(/其它管理程式),即以函式就曾随资料可以被呼叫使用,FREE_IT 是在函式伸回值之彳爰清掉所配置的言出.他 I 人 fg 悬目前 client 所提供的函式速多於 server 端,因此除非必要否 JW 儒量使用client 端的函式#ibeasy+不提供 UDF 的管理#marthon 提供安全性(建立多低料借份槽)createshadow一旦使用上述命令 JW 曾建立一他同步的资料在其它的存 IS 借上,适可以保障常资料或的存介面揖壤畤,有一(WS 份的资料可以即畤取代重建

53、索引alterindex 索弓 I 名租 Iinactivealterindex 索弓 I 名耦 active上述命令可以用在重建索引,或是资料回存畤想要加速其就行速度,不要回存畤遏回存遏建立索引, 先制行 inactive 刖回存畤索引 11r失去作用, 等资料回存完 IW 寺再新行 active 的勤作,U 曾重建索引,常然只有在没有人使用料 10 寺才可以使用三、FireBird.conf配置文件常用参数I.RootDirectory写上Firebird服务器的安装路径如果不对FbServer服务是企动会出错的.2 .DatabaseAcces指的是访问Firebird数据库白路径,可以

54、用相对路径,也可以用绝对路径.如果是访问整个服务器的磁盘空间写:DatabaseAcces=Full3 .ExternalFileAccess外部表文件存放的路径.缺省值是non,也就是不允许你建外部表文件.如可以把外部表文件保存在C:ExternalTables,可以这样设定:ExternalFileAccess=C:ExternalTables.4 .UdfAccess外部涵数的位置,如不指定,默认是:RestrictUDF,也就是数据服务器安装目录下的UDF目录.如我们也把外部函数放到c:udf,可以这样写UdfAccess=c:udf5 TempDirectories临时目录的路径,可

55、以指定其大小如TempDirectories=userdata50000000就表示在firebird的根目录的userdata目录限定一个50MB大小目录作临时目录用.默认的是以FIREBIRD_TMP,TMP等系统变量指定的值.6 DefaultDbCachePages指定数据络存的页数,如不指定SuperServer模式默认是2048页.classic模式默认是75页.相当于gfix-bufferXXX指信令。一般设个10000页较好。对服务器性能提高很重要。7 SortMemBlockSize查询是索引排序的大小,以Byte为单位默认为1M.如果表的记录数可以把他加大些。8 SortM

56、emUpperLimit索引排序内存大小限制,如设定SortMemUpperLimit=8388608(8MB)那么就不能起过个大小。对superserver指全部,对classic是针对每client.(建议以8M为好)如不高定这个值,对服务器性能有影响。9 OldParameterOrdering默认为0,如果是以1.5新开发应用程序只能写0.10 CompleteBooleanEvaluation对于条件表达式(and与or运算)是短路判断还是全部判定。系统默认是短路(0),这样可以加快过程与触发器的运行速度。11 DeadlockTimeout单位为秒。当两个客户端同时修改一个对象发生

57、冲空时,而让其等待不报告错误的最大时间。默认是10秒。太低很容易使很多修改不成功。太高又占资源。12 MaxUnflushedWrites在win服务器平台,对于关闭强制写选项时,这个很有少。为什么很多人用异步写方式出现数据损坏的Bug,就是没有设定这个值。可以设100页,当有100页数据时系统就会提交到磁盘。13 MaxUnflushedWriteTime在win服务器平台,对于关闭强制写选项时,这个很有少。为什么很多人用异步写方式出现数据损坏的Bug,就是没有设定这个值,以秒为单位可设5少。当与12有冲空时,以13为准进行处理。14 BugcheckAbort15 ConnectionTi

58、meout客户端连接超时设定16 DummyPacketInterval单位是秒。客户端如不动,需要保持连接的时间。TCP/IP连接不能用。17RemoteServiceName指定服务名如RemoteServiceName=gds_dbRemoteServicePort=3050相当天在services文件中写了一行gds305018 RemoteAuxPort服务器提供的端口,如是0,随机选。如为了不与旧冲空,FB可以设在成507819 TcpRemoteBufferSize对于远程连接可用。用tcp/ip连接后,s/c的缓存包数。20 RemoteBindAddress固定了IP21 L

59、ockMemSize=262144锁处理大小win缺省256KLinux16K.以byte为单位。可以加大四、Firebird预定义函数的安装更多的预定义函数在Firebird的UDF子目录中的fbudf.dll和ib_udf.dll中,其接口描述在fbudf.sql和ib_udf.sql中,用户必须自己导入这些函数。导入工作很简单,只要执行这两个.sql文件就行了。如果你跟我一样喜欢用旧Expert操作数据库,按下列步骤操作就行了:第一步:在连接上数据库之后,按Ctrl+F12或选中图示的菜单,把执行命令的窗口调出来。第二步:按图中右上角的按钮,打开OpenSQLfile窗口,在Firebi

60、rd的UDF子目录找到前面提到的.sql:等3“切勒现囹一它用3T我地Mg处音Datdbajes|FrojectJrdoiwRecentBrierHberstringB3)43DomahK(3LETabletnB_6LANK_5TCKAGEBB_EN5URE_ITWBftCTHejMPAl.TRANSACT第三步:选中工具条上的Usecurrentconnnect选项,然后点击执行按钮。OK!现在我们就有了完整的Firebird预定义函数集了!五、Firebird的基本数据类型由于排版关系,取嘉将用口,比如105,表示10的5次方。INTEGER:长整型,取值范围:-2147483648至2147483647FLOAT:单精度浮点型,取值范围

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论