收藏 分销(赏)

firebird_database_(快速入门).doc

上传人:pc****0 文档编号:7824719 上传时间:2025-01-19 格式:DOC 页数:18 大小:112.50KB 下载积分:10 金币
下载 相关 举报
firebird_database_(快速入门).doc_第1页
第1页 / 共18页
firebird_database_(快速入门).doc_第2页
第2页 / 共18页


点击查看更多>>
资源描述
FireBird Database (快速入门) 学习数据库基础是在sql的语法应用(请参考:firebird 网站的说明文件最好把这份文件印出来,在写程序时可以参考其语,虽然大部份都是sql-92兼容,但是有差异,还有一些专有的语法) 当你需要的资料找不到时可以找寻interbase的相关资料(因为firebird是由 interbase释放原始码所衍生的) 有一本电子书《INTERBASE7.0 应用开发指南 ,姚启红》可以下载到,还有一本电子工业出版社任颂华(也就是论坛上的TR)写的《基于InterBase的数据库开发》,李维作序。两本侧重点不同,虽然都是interbase,但也99%兼通FB,建议必读 。 目录索引 前言 程序架构 下载及安装 设定 使用者管理(console) 数据库管理(console) 联机方式(档案/tcpip) 数据库/使用者 管理(gui) 设定ODBC 数据库安全(备份/回存)(console) 数据库安全(备份/回存)(gui) 数据型态 blob 使用者自定函式(UDF) -------------------------------------------------------------------------------- 前言 它是Borland之前推出interbase数据库,并将其开放原始码的免费数据库软件,目前版本是1.5.4,它比mysql, postgresql 更适合于windows操作系统,它并不是使用cygwin的方式移植到windows上,而是真正的windows软件,我们一般将其比较于Ms- sql server,是一个小而美数据库,最大的优点在于它是免费的(ms-sql server五人版至将近三万元),其实它也支持不同作业平台(含inux),对于linux上我还是建议大家postgresql或是mysql因为firebird若要用php的话就有点难了...,你要根据网站文件来作一些修改编译的动作,#日前postgresql 8.0释放已经支持windwos的原始档(不使用cygwin来执行),但很可惜不支持98/me因目前还是有人使用win98单机使用的数据库,如果你单机上使用nt系统(2000/xp)等可以使用postgresql,因为postgresql 比起firebird来讲某方面确实比较强,而使用者也比较多 架构 firebird 数据库软件有三种套件,并而支持不同作业平台(windows系列,linux,freebsd等...)Super Server-无法直接存取数据库档案,必须透过socket来和服务器沟通 Classic-直接存取数据库的档案,多个程序可以同时存取一个档案,有点像vfp,dbase embedded-专为一些小型系统的嵌入式数据库 (pda) -------------------------------------------------------------------------------- 下载及安装 主网站: Download->Firebird relational database 直接点两下就可以安装,请照步骤,根据自己的需求来安装 预设安装路径 windows:c:\program files\firebird\firebird_1_5 linux:/opt/firebird 两个操作系统下的目录结构非常像 根目录下: firebird.conf-设定档 aliases.conf -别名档 friebird.log -记录文件 SYSDBA.password -linux才有,管理者的名称及密码在里面,windows则预设:名称:sysdba,密码:masterkey windows直接使用security.fdb来存sysdba的密码 注意:使用者名称不分大小写,但密码有分 目录/bin: 则是一些必要的主要及工具程序 ------------------------------------------------------------------------------- 设定 firebird 主要的设定档 firebird.conf 预设tcp/ip会启动port:3050 你可以使用telnet ip 3050来测试 aliases.conf 设定数据库的别名 数据库联机时一般要指定路径,有时路径太长时你可以指定,在aliases.conf中使用别名来存取 它是位于你安装firebird的根目录,以下为内建范例 # 别名 = 原始路径 employee.fdb = /opt/firebird/examples/employee.fdb 其中#为批注,而windows及linux的路径是有所不同: # fbdb1 在Windows服务器: fbdb1 = c:\Firebird\sample\Employee.fdb # fbdb2 在Linux服务器: fbdb2 = /opt/databases/killergames.fdb 数据库执行时可以编辑这个档案,不需要重新启动服务器 联机别名的方式: Server_name:aliasname -------------------------------------------------------------------------------- 使用者管理(consloe接口) 1.预设管理者名称sysdba,密码masterkey 2.密码文件security.fdb,位于firebird安装目录下 3.管理程序gsec 安装目录下\bin 4.密码长度限制在8码 用法: 本地主机(数据库server在本台计算机) gsec -user sysdba -password <password> [options] 远程主机(数据库server在别台计算机) gsec -user sysdba -password <password> -database <databasename> gsec命令 di[splay] 显示所有使用者 di[splay] <username> 显示某使用者 a[dd] <username> -pw <password> [options] 新增使用者 mo[dify] <username> [options] 修改使用者 de[lete] <username> 删除使用者 h[elp] 求助 ? 同上 q[uit] 离开gsec z 显示版本 options -pa[ssword] <password> 管理者的密码 -user <username> 使用者名称 -pw <password> 使用者密码 -fname <first name> 英文名字有,三个部份 -mname <middle name> -lname <last name> 范例 有两种方式 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 -password masterkey -database harry:/opt/firebird/security.fbd -modify sysdba -pw hamburg 修改远程服务器windows的sysdba密码 gsec -user sysdba -password masterkey -database sally:"c:\Program files\Firebird\security.fdb" -modify sysdba -pw hannover 修改远程服务器使用tcp port 3050 gsec -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 files\firebird\firebird_1_5\security.fdb -modiyf sysdba -pw londo 删除本地使用者 gsec -user sysdba -password masterkey -delete joe -------------------------------------------------------------------------------- 数据库管理(console) 程序isql位于安装目录下的bin 以下是一个操作范例: c:\Program files\firebird\firebird_1_5\bin\>isql -user sysdba -password masterkey Use CONNECT or CREATE DATABASE to specify a database SQL> connect test; Database: test, User: sysdba SQL> show table; COUNTRY CUSTOMER DEPARTMENT EMPLOYEE EMPLOYEE_PROJECT JOB PHONE_LIST PROJECT PROJ_DEPT_BUDGET SALARY_HISTORY SALES SQL> select * from country ; COUNTRY CURRENCY =============== ========== USA Dollar England Pound Canada CdnDlr SQL>quit; 建立数据库 1.建立数据库create database 2.建立数据表格create table (sql指令) 3.删除资枓表格drop table (sql指令) 4.查询数据库中所含表格 show table 5.查询表格中的结构 show table 表格名称 6.新增,删除,更新(insert,delete,update)均为sql指令 7.SQL命令交付,在新增或删除时,数据库并未直接变更,要使用sql指命commit 或commit work来更新 isql -user sysdba -password masterkey Use CONNECT or CREATE DATABASE to specify a database SQL> create database 'c:\temp\test.fdb'; SQL> create table abc (name char(12),age numeric(3)); SQL> show table friend ; FIRSTNAME CHAR(15) Nullable LASTNAME CHAR(20) Nullable CITY CHAR(15) Nullable STATE CHAR(2) Nullable AGE INTEGER Nullable SQL> insert into abc (name ,age) values( 'cschen',34); SQL> select * from abc; NAME AGE ============ ======= cschen 34 以上的操作主要是sql指令 命令的结尾必需使用";", 如果没有使用";"提示会由SQL>变为CON>,告诉你延续之前的命令 SQL>create table friend CON>(FIRSTNAME CHAR(13), CON> LASTNAME CHAR(40), CON> STATE CHAR(2), CON> AGE INTEGER ); 同下 SQL>create 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$DATABASE RDB$DEPENDENCIES RDB$EXCEPTIONS RDB$FIELDS RDB$FIELD_DIMENSIONS .................. .................. 使用者权限 1.GRANT 授予使用者权限 GRANT 权限 ON 对象 TO 对象 [with grant option] 2.REVOKE 撤消使用者权限 REVOKE 权限 ON 对象 FROM 对象 权限:SELECT ,INSERT ,UPDATE,DELETE, ALL 物件:TABLE,VIEW 对象:使用者,PUBLIC(代表全部) with grant option 让该名使用者有设定别的使用者的权限 *因为isql无法输入中文,因此无法使用在中文输入数据 *在linux下由于可能会有同名的isql(unixODBC套件),而linux安装在/opt/firebird,因此必须使用绝对路径来执行,另数据库的管理者名称可以不固定,至于密码在安装时会自动产生在档案SYSDBA.password中 -------------------------------------------------------------------------------- 联机方式(档案/tcpip) 程序支持两种联机方式 1.使用完整路径联机 c:\abcd..... 2.使用tcpip联机,在路径前加主机的名称或IP 主机:c:\abcd.... 我们可以根据切换这两种 windows 下的路径如有空白,有时必须使用" "将路径框起来才可以用 -------------------------------------------------------------------------------- 数据库/使用者管理(gui) 我有试过几个免费的windows端的软件 选择ibeasy+: 容易管理,必须有数据库的观念;推荐FlameRobin,介绍:Firebird的好工具——FlameRobin ibeasy+使用者管理接口: server->users management (输入管理者的名称及密码,进入下一个窗口) (你就可以管理你的使用者) IBExpert、EMS IBManager更强大,但都是商业软件。 -------------------------------------------------------------------------------- 设定odbc 在firebird->download ->odbc 下载后安装 odbc Database 1.完整路径-c:\database\abc.fdb 2.tcp/ip-ip:完整路径(127.0.0.1:c:\database\abc.fdb) -------------------------------------------------------------------------------- 数据库的安全(备份/回存)(console) GBAK:命令列工具,命令有两个状态,备份/回存(-b / -c) 语法 gbak <options> -user <username> -password <password> <source> <destination> 1.备份 gbak -b <source> 是你要备份的数据库来源, <destination>是备份的目的地档名.一般的延伸附檔名 是 .fbk . 只有SYSDBA 或是数据库的拥有者可以执行备份工作. 对于多个档案的数据库,只需指定第一个档案的名称来当数据库的名称. 2.回存 gbak -c <source> 是先前备份的档案而<destination> 是数据库的名称 选项 (中括号内的是非必要,也就是命令可以使用中括号前的缩写,或是含中括号内为长参数) 参数 说明 功能 -b[ackup_database] 备份 备份 -bu[ffers] Set cache size for restored database 回存 -c[reate_database] 回存 (必要参数) 回存 -co[nvert] 转换外部表格到内部表格s 备份 -e[xpand] 建立一个非压缩的备份 备份 -fa[ctor] n 磁带机的区块系数 备份 -g[arbage collect] 备份时不清空已删除的数据 备份 -i[nactive] 所有的索引将回存为INACTIVE 回存 -ig[nore] 备份时不做checksum错误检查 备份 -k[ill] 在不建立定义备份中的shadows 回存 -l[imbo] 备份时忽略limbo transactions 备份 -m[etadata] 只备份数据表格的metadata (schema).不备份资料 备份 -mo[de] read_write 回存一个 可读/写的数据库(预设) 回存 -mo[de] read_only 回存一个只读写数据库 回存 -n[o_validity] 不回存validity constraints.也就是回存数据不回存 constraints 回存 -nt 非兼容性的格式(只使用在相同作业平台,及firebird版本) 备份 -o[ne_at_a_time] 一次回存一个表格.你可以分别分次回存表格 回存 -ol[d_descriptions] 旧的格式 备份 -p[age_size] <size> 设定page size of new database. <size> 可以是 1024, 2048, 4096, 8192.预设1024. 回存 -pa[ssword] <password> 数据库的密码 -r[eplace_database] 回存在一个存在的数据库上.只能在拥有本数据库的使用者可以操作 这是覆写,不要执行在使用中的数据库! 回存 -role <role> 使用某一群组(role )来联机 -se[rvice] <hostname>:service_mgr 备份: 建立,使用服务管理. 回存: 回存,使用服务管理. -t[ransportable] 建立可转移的备份(不同操作系统及firebird版本) 备份 -u[ser] <username> 数据库使用者的名字 -use_[all_space] 正常,回存,数据库页会填满80% 只读才会写回100%(因为不用预留修改的空间) 回存 -v[erbose] 显示所有gbak执行的详细动作 -y <filename> 重导所有的输出到一个档案 <filename>. 注意:命令执行之前不可以存在档名! -y suppress_output Quiet mode -z 显示版本 范例: 正常的备份: gbak -v -t -user SYSDBA -password "masterkey" dbserver:/db/warehouse.fdb c:\backups\warehouse.fbk 备份并记录所有备份时的输出讯息: gbak -v -t -user SYSDBA -password masterkey -y c:\backups\warehouse.log dbserver:/db/warehouse.fdb c:\backups\warehouse.fbk 正常的回存: gbak -c -v -user SYSDBA -password masterkey c:\backups\warehouse.fbk dbserver:/db/warehouse2.fdb 回存到一个已存在的数据库: gbak -c -r -v -user SYSDBA -password masterkey c:\backups\warehouse.fbk dbserver:/db/warehouse.fdb 回存一个只读的数据库: gbak -c -v -mode read_only -use_all_space -user SYSDBA -password masterkey c:\backups\warehouse.fbk c:\files\warehousedb.fdb 多重档案备份 当数据库很大时,要备份有点困难,因此我们将数据库备份成许多小的档案,如此储存时比较方便 备份语法: gbak [options] <database> <target file 1> <size 1> <target file 2> <size 2> ... <target file n> 注意: 不要指定最后一个档案的大小.因我们不一定知道最后一个档案需要多少空间来储存,所以它将自动依据大小来储存.至于其它档案的大小可以是 bytes (8192), kilbytes (1024k), megabytes (5m), 或 gigabytes (2g) 回存语法: gbak -c [options] <source file 1> <source file 2> ... <source file n> <database> 回存到一个多个档案的数据库 有些系统的档案系统有限制,或是为了效能的因素,因此单一数据库,可分成多个小的数据库 gbak -c [options] <source file> <db file 1> <size 1> <db file 2> <size 2> ... <db file n> 注意:不要指定最后数据库的大小.它可以无限制的依据回存的档案来变更大小. Size can be given in bytes (8192), kilbytes (1024k), megabytes (5m), or gigabytes (2g) 由备份多个档案回存到多个档案的数据库: gbak -c [options] <source file 1> <source file 2> ... <source file n> <db file 1> <size 1> <db file 2> <size 2> ... <db file n> -------------------------------------------------------------------------------- 数据库安全(备份/ 回存)(gui) (ibeasy+,参考hlp檔) 选项 (Database | Save Database) 你可以简单复制数据库文件(如一般的指令copy) 但是无法确定数据库的安全. 优点: 改善效能经由排除不完整的(eliminating 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 可以回存数据库到不同的操作系统. - Convert to tables 转换外部档案到内部表格. 选项: (Database | Restore Database) 执行这个操作,必须是这个数据库的拥有者或是有执行管理系统的权限: SYSDBA. 一个数据备份的数据库可以回存 执行时必要参数: 备份文件的名称 数据库全名 可用的参数 - Page size 变更数据库每页的大小,可以改善效能.说实在,所有数据库在一页中会比较快. - Rebuild Indices. 重建索引 - Create database image Allow the recovery of a database in case of disk 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 be 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%. -------------------------------------------------------------------------------- 数据型态 名称 大小 范围 /精度 描述 Blob 不固定 blob段大小限于64K 动态变长度二进制类型,用于存放大量数据的情况,如图片、音乐、视频、多媒体等。其基本结构单位为段,它的子类型描述了存储数据的详细信息 Boolean 16位 True False Unkown 代表了逻辑上的(真、假、不确定)与Dialect无关。 (IB7以后支持,FB暂不支持!) Char(N) n个字符 1到32767个字节。双字符集除2 固定长度的字符或字符串 Date 64位 从公元后100年一月一日到32768年二月29日 日期类型。只有年月日,不带时间 Decimal(P,S) 变数(16、32或64位) 精度p从1到18:指定数字的总长度;标度s从0到18:指定小数点后的位数。 定点小数。例如decimal(5,3)可以存储的数字形式为:pp.sss Double Precision 64位 从2.225×10的-308 次方 到1.797×10的308次方 IEEE双精度浮点数,15位长度 Float 32位 从1.175×10的-38 次方 到3.402×0的38次方 IEEE单精度浮点数,7位长度 Integer 32位 从-2147483648 到2147483647 整数 Numeric(P,S) 变长(16、32或64位) 精度p从1到18:指定数字的总长度;标度s从0到18:指定小数点后的位数。 定点小数。例如decimal(10,3)可以存储的数字形式为:ppppppp.sss Smallint 16位 从-32768到32767 短整数 Time 64位 从0:00 AM到23:59.9999 PM 时间类型 Timestamp 64位 从公元后100年一月一日到32768年二月29日 带有时间的日期类型 Varchar(N) n个字符 1到32767个字节。字符集决定了其能容纳的最大字符数 #Blob blob sub_type segment 这是一个特有的数据型态,是用于储存比较大量的数据,类似其它数据库的text或是memo数据型态,在定义时有两个附加参数是sub_type, segment sub_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_f_sub_type) TYPE ("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,nam_f_sub_type) 文字,类似memo,而数据型态varchar限制 32K 二位数据(图片,影音文件等) 1,2是我们常用的,其它的很少使用 ------------------------------------------------------------------------------- generator(计数器) 计数器可以我们帮助产生循序的数字,你可以将其看成如一个公共变量,使用gen_id(generator名称,step)来取得一个值并加step create generator my_gen num=gen_id(my_gen,1) 则 num 问题 如果纯粹使用generator来填入,如果是uniqe或primary key,当generator最大值是264(18446744073709551616) 如果超过会重回到0 由于generator的最大值264 是很大数字要产生重复的机率很小 要不要使用日期来配合产生? 如果配合日期则会产生重复的机率会减少(发票,传票等) 年月日+流水号 20040303004 而generator 只要产生流水号,但是流水号每天都是从1开始,并且一般会限制数字的宽度如四位数或三位数 如此造成重复性会增加 目前数据库并无法处理这个问题,你必须自己设计一个表格来储存这个值,配合sql指令来取得最后的值 (建议:不要浪费时间在使用在数据库端的解决方法) 填入的字段要字符串或是数字? 如果是单独使用generator,最好是用数字的格式比较好 #注意:integer只有32位 范例: create generator test_gen ; CREATE TABLE test1 (serial_no char(3) not null primary key,name char(15)); 建立触发来自动取得ID(new.字段名称 ,这个变量是可以被sql指令时自动引用) set term !!; create trigger test for test1 active before insert as begin new.serial_no=cast(gen_id(test_gen,1) as char(3))
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服