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 发布时的文档吧,这里有个链接!http://www.mesig.com/forum/th-abb-1

Firebird数据库相关备忘录的更多相关文章

  1. Firebird数据库相关操作

    Firebird常用SQL 一.分页写法小例: 1 select first 10 templateid,code,name from template ; 2 select first 10 ski ...

  2. python面试题包含基础和Linux操作以及数据库相关

    今天面试了一家公司,感觉表现的不是很好,记录一下面试的试题. python基础部分 python 是一门什么样的语言面向对象的语言有那些,python的面向对象和Java面向对象的区别 Python是 ...

  3. Android数据库相关整理

    今天对Android中数据库相关的操作和代码做了一个整理,便于自己之后的查阅.主要内容有: 1.原生数据库写法 2.终端进sqlite的操作 3.第三方库 4.事务处理 5.权限和路径 一.原生数据库 ...

  4. MySQL查看数据库相关信息

    使用MySQL时,需要了解当前数据库的情况,例如当前的数据库大小.字符集.用户等等.下面总结了一些查看数据库相关信息的命令   1:查看显示所有数据库 mysql> show databases ...

  5. sqlite数据库相关总结

    1. sqlite是轻量型.关系型管理系统,是嵌入式的,占用资源低.可移植性强,比mySql处理速度快,现在主流的版本是sqlite3 2. sqlite中的数据类型有TEXT(字符串,采用UTF-8 ...

  6. Atitit  基于meta的orm,提升加速数据库相关应用的开发

    Atitit  基于meta的orm,提升加速数据库相关应用的开发 1.1. Overview概论1 1.2. Function & Feature功能特性1 1.2.1. meta api2 ...

  7. 使用SQLAlchemy对Firebird数据库进行操作

    来这个公司已经一周了,度过了开始的无聊日子准备正式准备做点东西了,这几天接触了一下文件数据库InterBase,尝试在Ubuntu上连接其开源版本Firebird,因为公司使用的是SQLAlchemy ...

  8. 阿里云OneinStack数据库相关

    阿里云OneinStack数据库相关必须进入oneinstack目录下执行相关命令 ===================================源码安装目录: Nginx:/usr/loca ...

  9. oschina数据库相关

    数据库相关 110数据库服务器 233NoSQL数据库 18MySQL衍生版 6开源XML数据库 311数据库管理工具 117数据库调整和优化 274数据库驱动程序 41数据库建模

随机推荐

  1. Phong光照以及其他

        在说光照之前,有必要先弄清法线的变换,假设Mworld 将物体的定点一一变换到世界空间,如果我们对法线实施同样的变化,,以为能将法线变换到世界空间,但世界上变换之后的法线不再与表面垂直,就像下 ...

  2. android系统启动时自动运行自己的程序

    android系统在Manifest.permission中有这样一条RECEIVE_BOOT_COMPLETED的定义,当你自己的程序加 入这个权限后,就可以在系统启动完毕后收到一条系统的广播,这个 ...

  3. Shell学习笔记 - Shell变量

    一.变量的命名 变量名必须以字母或下划线开头,由字母.数字.或下划线组成,变量名的长度不能超过255个字符. 二.变量的分类 1. 用户自定义变量 2. 环境变量 3. 位置参数变量 4. 预定义变量 ...

  4. hdu 4271 动态规划

    思路:考的是字符串的编辑距离.在蓝桥杯2012年决赛上出现过. #include<iostream> #include<cstdio> #include<cstring& ...

  5. BZOJ 3725

    Description 有一堵长度为n的墙需要刷漆,你有一把长度为k的刷子.墙和刷子都被均匀划分成单位长度的小格,刷子的每一格中都沾有某种颜色(纯色)的漆.你需要用这把刷子在墙上每一个可能的位置(只要 ...

  6. 数据库自定义表值函数Split(@LongStr, @SplitStr, @IsDistinct )

    CREATE FUNCTION [dbo].[F3_Split](@LongStr VARCHAR(MAX),@SplitStr VARCHAR(100),@IsDistinct BIT)RETURN ...

  7. 基础面试题——Javascript

    1.介绍js的基本数据类型 Undefined.Null.Boolean.Number.String 2.js有哪些内置对象? 数据封装类对象:Object.Array.Boolean.Number ...

  8. 解决方案:Error:Execution failed for task ':app:compileDebugAidl'. > aidl is missing

    也许有朋友最初在用Android Studio创建新工程的时候会碰到这个错误,其实这个问题是由于版本不兼容导致的,解决方法很简单,只需要把编译工具的版本改一下就可以了: 1.选左侧的工程根目录app, ...

  9. Part 82 to 85 Talking about Generic queue, stack collection class

    Part 82   Generic queue collection class Part 83   Generic stack collection class Part 84   Real tim ...

  10. javascript将浮点数转换成整数的三个方法

    浮点数转换成整数方法有很多,本例为大家介绍常用的三个方法,如果读者想到其他好用方法,也可以交流一下   Summary 暂时我就想到3个方法而已.如果读者想到其他好用方法,也可以交流一下 parseI ...