欢迎光临散文网 会员登陆 & 注册

Firebird Cookbook 2:数据选择

2022-02-04 21:06 作者:CSDN首席喷子  | 我要投稿

数据库使用SELECT语句提取数据。注意,Firebird 2.5及之前版本没有类似MySQL的AutoIncrement列,如果要创建自增列,只能为每个表创建一个触发器和生成器:

CREATE TABLE STUDENTS (SID INTEGER NOT NULL, SNAME VARCHAR (128) NOT NULL, PRIMARY KEY(SID));

 

CREATE GENERATOR GEN_STUDENTS;

SET GENERATOR GEN_STUDENTS TO 0;

 

SET TERM !!;

CREATE TRIGGER STUDENTS_GEN FOR STUDENTS

ACTIVE BEFORE INSERT POSITION 0

AS BEGIN

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_STUDENTS, 1);

END!!

SET TERM ; !!

3.1  显式指定查询列

诚然使用

SELECT * FROM STUDENTS;

必然能够获得所有的列。但是,不同的数据库系统、同一系统的不同版本处理星号的方法并不同,也就不能保证获取的都是同样的列、同样的顺序。最好还是指定查询哪些列:

SELECT SID, SNAME FROM STUDENTS;

3.2  设置选择范围

使用first m skip n语句可指定数据的选择范围:

SELECT FIRST 5 SKIP 10 SID, SNAME FROM STUDENTS;

会选择第11~15行的数据。

3.3  处理空值

有些行可能包含NULL值,NULL值的实际含义是“未指定”,因此任何数据和NULL的比较都会得到NULL。可以考虑使用IS NULL、IS NOT NULL来判断:

SELECT * FROM STUDENTS WHERE SID IS NOT NULL;

3.4  视图

视图是预定义的只读表,可以将选择操作封装起来,并使用视图大大增强数据库的安全性:

CREATE VIEW STUDENT_NAMES AS SELECT SNAME FROM STUDENTS;

注意后面的选择操作描述绝不能带括号,如

... (AS SELECT SNAME FROM STUDENTS);

否则报错。

 


Firebird Cookbook 2:数据选择的评论 (共 条)

分享到微博请遵守国家法律