火鸟Firebird数据库的中文参考资料■firebird标准连接串Driver=Firebird/InterBase(r)driver;Uid=SYSDBA;Pwd=masterkey;DbName=C:\document.andSettings\Administrator\桌面\data\demo.fdb;defaultcharactersetgbk;使用中文时在创建数据库语句中就应该加这句,并且连接文本中也要用这句。.NET-Firebird.NetDataProvider连接串User=SYSDBA;Password=masterkey;Database=SampleDatabase.fdb;DataSource=localhost;Port=3050;Dialect=3;Charset=NONE;Role=;Connectionlifetime=15;Pooling=true;MinPoolSize=0;MaxPoolSize=50;PacketSize=8192;ServerType=0;■Firebird除了可见的表外,还隐藏了系统表具体可用(注意以下语句中的中的文本区分大小写)查询所有的表和视图(包括系统表和系统视图)SELECTRDB$RELATION_NAMEFROMRDB$RELATIONS;这样我们就能看到rdb$开头的系统表,如约束信息表:rdb$relation_constraints及与其相关的RDB$CHECK_CONSTRAINTSRDB$INDEX_SEGMENTS一、分页写法小例:selectfirst10templateid,code,namefromtemplate;selectfirst10skip10templateid,code,namefromtemplate;select*fromshoprows1to10;--firebird2.0支持这种写法二、showshowtables;showtabletablename;三、D:\firebird2\binisql-usysdba-pmasterkeyconnectE:\company\xmwsoft\newxmwsoft\c2\db\cts2.fdb;四、--更新字段注释updateRDB$RELATION_FIELDSsetRDB$DESCRIPTION=描述信息where(RDB$RELATION_NAME=SHOP)and(RDB$FIELD_NAME=CREDIT_BUY)五、--显示字段注释selectRDB$FIELD_NAME,RDB$DESCRIPTIONfromRDB$RELATION_FIELDSwhere(RDB$RELATION_NAME=SHOP)and(RDB$FIELD_NAME=CREDIT_BUY)六、--更新表注释updateRDB$RELATIONSsetRDB$DESCRIPTION=描述信息whereRDB$RELATION_NAME=TABLE_NAME八、--查询所有的用户表和用户视图SELECTRDB$RELATION_NAMEFROMRDB$RELATIONSWHERERDB$SYSTEM_FLAG=0;九、--查询所有的用户表SELECTRDB$RELATION_NAMEFROMRDB$RELATIONSWHERERDB$SYSTEM_FLAG=0ANDRDB$VIEW_BLRISNULL十、查所有用户表、用户视图所有字段及相关定义SELECTa.RDB$RELATION_NAME,b.RDB$FIELD_NAME,b.RDB$FIELD_ID,d.RDB$TYPE_NAME,c.RDB$FIELD_LENGTH,c.RDB$FIELD_SCALEFROMRDB$RELATIONSaINNERJOINRDB$RELATION_FIELDSbONa.RDB$RELATION_NAME=b.RDB$RELATION_NAMEINNERJOINRDB$FIELDScONb.RDB$FIELD_SOURCE=c.RDB$FIELD_NAMEINNERJOINRDB$TYPESdONc.RDB$FIELD_TYPE=d.RDB$TYPEWHEREa.RDB$SYSTEM_FLAG=0ANDd.RDB$FIELD_NAME=RDB$FIELD_TYPEORDERBYa.RDB$RELATION_NAME,b.RDB$FIELD_ID十一、查找某表的所有字段及相关定义SELECTA.RDB$FIELD_NAME,B.RDB$FIELD_TYPE,B.RDB$FIELD_LENGTH,B.RDB$FIELD_PRECISION,B.RDB$FIELD_SCALEFROMRDB$RELATION_FIELDSA,RDB$FIELDSBWHEREA.RDB$RELATION_NAME=tablenameANDA.RDB$FIELD_SOURCE=B.RDB$FIELD_NAMEORDERBYA.RDB$FIELD_POSITION十二、查找某表的主键定义字段selectA.RDB$FIELD_NAMEFROMRDB$INDEX_SEGMENTSA,RDB$RELATION_CONSTRAINTSBWHEREB.RDB$CONSTRAINT_TYPE=PRIMARYKEYANDB.RDB$RELATION_NAME=tablenameANDA.RDB$INDEX_NAME=B.RDB$INDEX_NAMEORDERBYA.RDB$FIELD_POSITION十三、查找某表的外键定义selectr1.RDB$CONSTRAINT_NAME,rind.RDB$FIELD_NAME,r2.RDB$RELATION_NAMEFROMRDB$RELATION_CONSTRAINTSr1,RDB$RELATION_CONSTRAINTSr2,RDB$REF_CONSTRAINTSref,RDB$INDEX_SEGMENTSrindwherer1.RDB$RELATION_NAME=tablenameandr1.RDB$CONSTRAINT_TYPE=FOREIGNKEYandr1.RDB$CONSTRAINT_NAME=ref.RDB$CONSTRAINT_NAMEandref.RDB$CONST_NAME_UQ=r2.RDB$CONSTRAINT_NAMEandr1.RDB$INDEX_NAME=rind.RDB$INDEX_NAME十四、添加主键等约束altertabletablenameaddconstraintPK_tablenameprimarykey(FIELDname)altertabletablenameaddconstraintuq_FIELDunique(FIELDname)或altertabletablenameaddunique(FIELDname)添加NOTNULL约束比较特殊updateRDB$RELATION_FIELDSsetRDB$NULL_FLAG=1where(RDB$FIELD_NAME='FIELDNAME')and(RDB$RELATION_NAME='TN')insertintoRDB$RELATION_constraintsvalues('NN_FIELD','NOTNULL','WFW','NO','NO','')insertintoRDB$CHECK_constraintsvalues('NN_FIELD','FIELD')十五、删除主键等约束先查这个表的主键名selectRDB$CONSTRAINT_NAMEfromRDB$RELATION_CONSTRAINTSwhereRDB$CONSTRAINT_TYPE='PRIMARYKEY'andRDB$RELATION_NAME='tablename'然后altertabletablenamedropconstraint主键名(主键名一般在隐藏的系统表中,每个约束一个名。)十六、创建数据库CreateDatabase'D:\Mydb.fdb'user'sysdba'password'masterkey'[defaultcharactersetgbk]十七、查指定字段NotNull约束SELECTa.rdb$trigger_name,b.rdb$constraint_name,b.rdb$constraint_typeFROMRDB$CHECK_CONSTRAINTSa,rdb$relation_constraintsbwherea.rdb$constraint_name=b.rdb$constraint_nameandb.rdb$constraint_type='NOTNULL'andb.RDB$RELATION_NAME='表名'anda.rdb$trigger_name='字段名'十八、查指定表所有unique约束和主键约束SELECTa.RDB$FIELD_NAME,b.rdb$constraint_name,b.rdb$constraint_typeFROMRDB$INDEX_SEGMENTSa,rdb$relation_constraintsbwherea.RDB$INDEX_NAME=b.RDB$INDEX_NAMEandb.RDB$RELATION_NAME='tablename'十九、修改字段类型ALTERTABLETABLENAMEALTERFIELDNAMETYPEFLOAT二十、改字段名altertableTABLENAMEalteroldFIELDnametonewFIELDname■Firebird的基本数据类型由于排版关系,取幂将用[],比如10[5],表示10的5次方。INTEGER:长整型,取值范围:-2147483648至2147483647FLOAT:单精度浮点型,取值范围:1.175*10[-38]至3.402*10[38]DOUBLEPRECISION:双精度浮点型,取值范围:2.225*10[-308]至1.797*10[308]DECIMAL:小数型,可指定有效位数最大为18位或小数点后18位。比如DECIMAL(5,2),就是指有5位数字,不含小数点,形如123.45NUMERIC:小数型,与DECIMAL类似,稍后讲它们的区别。注意,当数据含小数部分时,请尽量用DECIMAL,因为浮点型有精度问题,除非数值特别大,才用浮点型!DECIMAL与NUMERIC的区别:比如,DECIMAL(5,2)与NUMERIC(5,2)所分别定义的字段,DECIMAL(5,2)指的是至少有5位数字,还可以更多!而NUMERIC(5,2)指的是,就是5位,不多也不少。SMALLINT:短整型,取值范围:-32768至32767,数值确定比较小时,可以使用,可以节省磁盘空间与提升效率CHAR:字符型,最多32767个字符,注意,使用CHAR类型,即使字符数没有达到指定字段的宽度,也会用空字符补满!取值时,请注意用TRIM()等函数去掉多余空字符。除非确定每条记录的字符数不变,否则请用VARCHAR类型。VARCHAR:可变长度字符型,最多32767个字符,存储时,会根据内容长度自动改变存储位数,不会产生多余空字符。当字符数超过32767时,请用BLOB型。TIME:时间型,取值范围:00:00至23:59.9999TIMESTAMP:日期时间型,取值范围:公元100年1月1日至公元32768年2月29日,同时包含日期与时间信息。DATE:日期型,取值范围:公元100年1月1日至公元32768年2月29日。,注意,建库时需选择DIALECT3级别才支持DATE型,否则就是TIMESTAMP型。BLOB:大二进制型,可支持Text(文本)、BinaryData(二进制型,比如图片,声音等)等子类型。取值范围:64KB以内。BOOLEAN:逻辑型,Firebird2.0引