博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Firebird数据库相关备忘录
阅读量:5243 次
发布时间:2019-06-14

本文共 2033 字,大约阅读时间需要 6 分钟。

 

Firebird数据库中有一些很特别的东西,很好用,但由于平时用的不多,记在这里,以备以后用到时查询。

 

 

1、以ADO 的OLE ODBC驱动方式访问 Firebird,可以使用如下连接串:

FBConn:='Provider=MSDASQL.1;Driver=Firebird/InterBase(r) driver;Dbname=F:\TEST.FDB;CHARSET=NONE;UID=SYSDBA;PWD=masterkey';

 

 

 

2、序列生成器,值是bigint 类型

 

 

在做自增加字段时使用,标准教程上都是写在触发器中,我觉得写在用户SQL中使用更方便,也就是从前台调用序列生成器,生成ID值,然后从前台更新到后台去。后台的ID字段只要是普通的int值即可。

create sequence CUSTOMER;set GENERATOR CUSTOMER to 200;select gen_id(CUSTOMER, 1) from RDB$DATABASE;GENERATOR 是 遗留保留字,sql-99支持 sequence 关键字,fb也是支持的。CREATE { SEQUENCE | GENERATOR } 
<名字>
DROP { SEQUENCE | GENERATOR }
<名字>
SET GENERATOR
<名字>
TO
<起始值>
这个好象不符合SQL语法的精神,下面的alter才是标准的语感ALTER SEQUENCE
<名字>
RESTART WITH
<起始值>
GEN_ID (
<名字>
,
<增长值>
)NEXT value FOR
<名字>
NEXT value FOR 语法也是标准SQL语法,可以用的序列生成器上:INSERT INTO EMPLOYEE (ID, NAME)valueS (NEXT value FOR S_EMPLOYEE, 'John Smith');

 

 

 

3、内建了IIF函数,IIF (<search_condition>, <value1>, <value2>),作为case的快捷方式。

 

 

4、ROWS 语法,特别适合分页使用

 

SELECT ...

[ORDER BY <expr_list>]

ROWS <expr1> [TO <expr2>]

 

 

还有类似的语法,与上述ROWS类似的语句是:

FIRST (<expr2>-<expr1>+1) SKIP (<expr1> - 1)

 

 

5、EXECUTE BLOCK 语句

 

这个语句相当于动态建立与执行一个存储过程。或者说动态执行一个类似于存储过程的语句块。

 

 

SQL语言的扩展语句 EXECUTE BLOCK 使得在 SELECT 语句规范中可以使用"动态 PSQL"。它有这样的效果,如果是存储过程中的话,将允许一个PSQL自包含代码动态SQL语句中执行。

 

语法格式:

 

 

EXECUTE BLOCK [ (param datatype = ?, param datatype = ?, ...) ]

[ RETURNS (param datatype, param datatype, ...) }

AS

[DECLARE VARIABLE var datatype; ...]

BEGIN

...

END

 

 

例如:

 

 

EXECUTE BLOCK (X INTEGER = :X)

RETURNS (Y VARCHAR)

AS

DECLARE V INTEGER;

BEGIN

INSERT INTO T(...) valueS (... :X ...);

SELECT ... FROM T INTO :Y;

SUSPEND;

END

 

 

6、COMMENT 语句

COMMENT 语句,用来设置元数据描述,这个非常有意思。
语法格式:
COMMENT ON DATABASE IS {'txt'|NULL};
COMMENT ON <basic_type> name IS {'txt'|NULL};
COMMENT ON COLUMN tblviewname.fieldname IS {'文字内容'|NULL};
COMMENT ON PARAMETER procname.parname IS {'txt'|NULL};

 

 

7、衍生表

 

MS MSQL 叫在线视图吧,语法类似于:

 

select * from (select * from tbl) as a inner join tbl2 b on a.id=b.id

 

查询结果作为表来使用。

 

 

8、FB2.0 发布时的文档吧,这里有个链接!

转载于:https://www.cnblogs.com/inhesoft/p/4175851.html

你可能感兴趣的文章
前端各种mate积累
查看>>
jQuery 1.7 发布了
查看>>
Python(软件目录结构规范)
查看>>
Windows多线程入门のCreateThread与_beginthreadex本质区别(转)
查看>>
Nginx配置文件(nginx.conf)配置详解1
查看>>
linux php编译安装
查看>>
name phone email正则表达式
查看>>
721. Accounts Merge
查看>>
「Unity」委托 将方法作为参数传递
查看>>
重置GNOME-TERMINAL
查看>>
redis哨兵集群、docker入门
查看>>
hihoCoder 1233 : Boxes(盒子)
查看>>
oracle中anyData数据类型的使用实例
查看>>
C++对vector里面的元素排序及取任意重叠区间
查看>>
软件测试——性能测试总结
查看>>
12.4站立会议
查看>>
Java Concurrentmodificationexception异常原因和解决方法
查看>>
客户端访问浏览器的流程
查看>>
codeforces水题100道 第二十二题 Codeforces Beta Round #89 (Div. 2) A. String Task (strings)
查看>>
c++||template
查看>>