Firebird數據庫中有一些很特別的東西,很好用,但因爲平時用的很少,記在這裏,以備之後用到時查詢。 sql
一、以ADO 的OLE ODBC驅動方式訪問 Firebird,可使用以下鏈接串:數據庫
FBConn:='Provider=MSDASQL.1;Driver=Firebird/InterBase(r) driver;Dbname=F:\TEST.FDB;CHARSET=NONE;UID=SYSDBA;PWD=masterkey'; ide
二、序列生成器,值是bigint 類型函數
在作自增長字段時使用,標準教程上都是寫在觸發器中,我以爲寫在用戶SQL中使用更方便,也就是從前臺調用序列生成器,生成ID值,而後從前臺更新到後臺去。後臺的ID字段只要是普通的int值便可。spa
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');
三、內建了IIF函數,IIF (<search_condition>, <value1>, <value2>),做爲case的快捷方式。code
四、ROWS 語法,特別適合分頁使用blog
SELECT ...教程
[ORDER BY <expr_list>]文檔
ROWS <expr1> [TO <expr2>]get
還有相似的語法,與上述ROWS相似的語句是:
FIRST (<expr2>-<expr1>+1) SKIP (<expr1> - 1)
五、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
六、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};
七、衍生表
MS MSQL 叫在線視圖吧,語法相似於:
select * from (select * from tbl) as a inner join tbl2 b on a.id=b.id
查詢結果做爲表來使用。
八、FB2.0 發佈時的文檔吧,這裏有個連接!http://www.mesig.com/forum/th-abb-1