1、- 1 -FireBird Database (快速入门)学习数据库基础是在 sql 的语法应用(请参考:firebird 网站的说明文件最好把这份文件印出来,在写程序时可以参考其语,虽然大部份都是 sql-92 兼容,但是有差异,还有一些专有的语法) 当你需要的资料找不到时可以找寻 interbase 的相关资料(因为 firebird 是由 interbase 释放原始码所衍生的) 有一本电子书INTERBASE70 应用开发指南 ,姚启红可以下载到,还有一本电子工业出版社任颂华(也就是论坛上的 TR)写的基于 InterBase 的数据库开发 ,李维作序。两本侧重点不同,虽然都是 int
2、erbase,但也 99%兼通 FB,建议必读 。 目录索引前言 程序架构 下载及安装 设定 使用者管理(console) 数据库管理(console) 联机方式(档案/tcpip) 数据库/使用者 管理(gui) 设定 ODBC 数据库安全(备份/回存)(console) 数据库安全(备份/回存)(gui) 数据型态 blob 使用者自定函式(UDF) -前言它是 Borland 之前推出 interbase 数据库,并将其开放原始码的免费数据库软件,目前版本是 1.5.4,它比 mysql, postgresql 更适合于 windows 操作系统,它并不是使用 cygwin 的方式移植到
3、 windows 上,而是真正的 windows 软件,我们一般将其比较于 Ms- sql server,是一个小而美数据库,最大的优点在于它是免费的(ms-sql server 五人版至将近三万元),其实它也支持不同作业平台(含 inux),对于 linux 上我还是建议大家 postgresql 或是 mysql 因为 firebird 若要用 php 的话就有点难了.,你要根据网站文件来作一些修改编译的动作,日前 postgresql 8.0 释放已经支持 windwos 的原始档(不使用 cygwin 来执行),但很可惜不支持 98/me 因目前还是有人使用 win98 单机使用的数据
4、库,如果你单机上使用 nt 系统(2000/xp)等可以使用 postgresql,因为 postgresql 比起 firebird 来讲某方面确实比较强,而使用者也- 2 -比较多架构firebird 数据库软件有三种套件,并而支持不同作业平台 (windows 系列,linux,freebsd 等.)Super Server-无法直接存取数据库档案 ,必须透过 socket 来和服务器沟通 Classic-直接存取数据库的档案,多个程序可以同时存取一个档案,有点像 vfp,dbase embedded-专为一些小型系统的嵌入式数据库 (pda) -下载及安装主网站:http:/ rela
5、tional database直接点两下就可以安装,请照步骤,根据自己的需求来安装预设安装路径windows:c:program filesfirebirdfirebird_1_5linux:/opt/firebird 两个操作系统下的目录结构非常像根目录下:firebird.conf-设定档 aliases.conf -别名档friebird.log -记录文件SYSDBA.password -linux 才有,管理者的名称及密码在里面 ,windows 则预设: 名称:sysdba,密码:masterkeywindows 直接使用 security.fdb 来存 sysdba 的密码注意:
6、使用者名称不分大小写,但密码有分目录/bin:则是一些必要的主要及工具程序-设定 firebird 主要的设定档firebird.conf 预设 tcp/ip 会启动 port:3050你可以使用 telnet ip 3050 来测试aliases.conf设定数据库的别名数据库联机时一般要指定路径,有时路径太长时你可以指定,在 aliases.conf 中使用别名来存取它是位于你安装 firebird 的根目录,以下为内建范例# 别名 = 原始路径employee.fdb = /opt/firebird/examples/employee.fdb其中#为批注,而 windows 及 linu
7、x 的路径是有所不同:# fbdb1 在 Windows 服务器:fbdb1 = c:FirebirdsampleEmployee.fdb# fbdb2 在 Linux 服务器:fbdb2 = /opt/databases/killergames.fdb数据库执行时可以编辑这个档案,不需要重新启动服务器- 3 -联机别名的方式:Server_name:aliasname-使用者管理(consloe 接口 )1.预设管理者名称 sysdba,密码 masterkey2.密码文件 security.fdb,位于 firebird 安装目录下3.管理程序 gsec 安装目录下bin4.密码长度限制在
8、 8 码用法:本地主机(数据库 server 在本台计算机)gsec -user sysdba -password options远程主机(数据库 server 在别台计算机)gsec -user sysdba -password -database gsec 命令display显示所有使用者display 显示某使用者add -pw options新增使用者modify options修改使用者delete 删除使用者help求助?同上quit离开 gsecz显示版本options-password 管理者的密码-user 使用者名称-pw 使用者密码-fname 英文名字有,三个部份-mn
9、ame -lname - 4 -范例有两种方式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 masterkey -modify sysdba -pw mykey37修改远程服务器 linux 的 sysdba 密码gsec -user sysdba -pa
10、ssword 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 hannover修改远程服务器使用 tcp port 3050gsec -user sysdba -password masterkey -datab
11、ase 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 -pw londo 删除本地使用者gsec -user sysdba -password masterkey -delete
12、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;COUNTRY CUSTOMERDEPARTMENT EMPLOYEEEMPLOYEE_PROJECT JOBPHONE_LI
13、ST PROJECTPROJ_DEPT_BUDGET SALARY_HISTORYSALESSQL select * from country ;COUNTRY CURRENCY- 5 -= =USA DollarEngland PoundCanada CdnDlrSQLquit;建立数据库1.建立数据库 create database 2.建立数据表格 create table (sql 指令)3.删除资枓表格 drop table (sql 指令)4.查询数据库中所含表格 show table 5.查询表格中的结构 show table 表格名称6.新增,删除,更新(insert,dele
14、te,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(3);SQL show table friend ;FIRSTNAME CHAR(15)
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,告诉你延续之前的命令SQLcreate table friend CON(FIRSTNAME CHAR(13
16、),CON LASTNAME CHAR(40),CON STATE CHAR(2),CON AGE INTEGER );同下- 6 -SQLcreate table friend (FIRSTNAME CHAR(13),LASTNAME CHAR(40),STATE CHAR(2),AGE INTEGER);每一个数据库有一个特殊数据库-系统数据库,包含了使用者权限等.SQL show system;RDB$CHARACTER_SETS RDB$CHECK_CONSTRAINTSRDB$COLLATIONS RDB$DATABASERDB$DEPENDENCIES RDB$EXCEPTIONS
17、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 无法输入中文,因此无法使用在中文输入数据*在 linux 下由于可能会有同名的 isql(unixODBC 套
18、件),而 linux 安装在/opt/firebird,因此必须使用绝对路径来执行 ,另数据库的管理者名称可以不固定,至于密码在安装时会自动产生在档案 SYSDBA.password 中-联机方式(档案/tcpip)程序支持两种联机方式1.使用完整路径联机c:abcd.2.使用 tcpip 联机,在路径前加主机的名称或 IP主机:c:abcd.我们可以根据切换这两种windows 下的路径如有空白,有时必须使用“ “ 将路径框起来才可以用-数据库/使用者管理(gui)- 7 -我有试过几个免费的 windows 端的软件 选择 ibeasy+: 容易管理,必须有数据库的观念;推荐 FlameR
19、obin,介绍:Firebird的好工具FlameRobinibeasy+使用者管理接口 :server-users management(输入管理者的名称及密码,进入下一个窗口)(你就可以管理你的使用者)IBExpert、EMS IBManager 更强大,但都是商业软件。-设定 odbc 在 firebird-download -odbc下载后安装odbc Database 1.完整路径-c:databaseabc.fdb2.tcp/ip-ip:完整路径 (127.0.0.1:c:databaseabc.fdb)-数据库的安全(备份/回存)(console)GBAK:命令列工具,命令有两个
20、状态,备份/回存(-b / -c) 语法 gbak -user -password 1.备份gbak -b 是你要备份的数据库来源, 是备份的目的地档名.一般的延伸附檔名 是 .fbk .只有 SYSDBA 或是数据库的拥有者可以执行备份工作. 对于多个档案的数据库,只需指定第一个档案的名称来当数据库的名称. 2.回存 gbak -c 是先前备份的档案而 是数据库的名称选项 (中括号内的是非必要,也就是命令可以使用中括号前的缩写,或是含中括号内为长参数)参数 说明 功能- 8 -backup_database 备份 备份 -buffers Set cache size for restored
21、 database 回存 -create_database 回存 (必要参数) 回存 -convert 转换外部表格到内部表格 s 备份 -expand 建立一个非压缩的备份 备份 -factor n 磁带机的区块系数 备份 -garbage collect 备份时不清空已删除的数据 备份 -inactive 所有的索引将回存为 INACTIVE 回存 -ignore 备份时不做 checksum 错误检查 备份 -kill 在不建立定义备份中的 shadows 回存 -limbo 备份时忽略 limbo transactions 备份 - 9 -metadata只备份数据表格的 metada
22、ta (schema).不备份资料备份-mode read_write 回存一个 可读/写的数据库(预设)回存-mode read_only 回存一个只读写数据库 回存 -no_validity 不回存 validity constraints.也就是回存数据不回存 constraints 回存 -nt 非兼容性的格式(只使用在相同作业平台,及 firebird 版本)备份-one_at_a_time 一次回存一个表格.你可以分别分次回存表格 回存 -old_descriptions 旧的格式 备份 -page_size 设定 page size of new database.可以是 102
23、4, 2048, 4096, 8192.预设 1024. 回存 -password 数据库的密码 -replace_database 回存在一个存在的数据库上.只能在拥有本数据库的使用者可以操作 这是覆写,不要执行在使用中的数据库! 回存 -role 使用某一群组(role )来联机 - 10 -service :service_mgr 备份: 建立,使用服务管理.回存: 回存,使用服务管理.-transportable 建立可转移的备份(不同操作系统及 firebird 版本) 备份 -user 数据库使用者的名字 -use_all_space 正常,回存,数据库页会填满 80% 只读才会写
24、回 100%(因为不用预留修改的空间) 回存 -verbose 显示所有 gbak 执行的详细动作 -y 重导所有的输出到一个档案 .注意:命令执行之前不可以存在档名! -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 SYSDBA -password masterkey c:backupswarehouse.fbk dbserver:/db/warehouse2.fdb回存到一个已存在的数据库: