Firebird中的NULL

Firebird对于NULL的处理有很多需要注意的地方: 1,定义表中的列是否可以为Null,语法是:create table MyTable ( i int not null )

2,判断值是否为Null,用"is"关键字,例如 a is null/ a is not null

3,对值赋予Null,用"="关键字,例如Update tablename set a = null where .....

4,[A] is/is not distinct from [B],
     例如if ( A is distinct from B ) then...,
     需要注意下,distinct返回true的条件是A和B有不同的值,或一个为NULL,一个有值
 not distinct返回true的条件是A和B的值相同,或者都为空

5,Null在运算中的用法
     在数字和字符串的运算中出现NULL的时候,它们的结果都会返回NULL,例如
1 + 2 + 3 + NULL    //null
'Home ' || 'sweet ' || NULL    //null
MyField = NULL    //null

6,Boolean运算符
not NULL = NULL
NULL or false = NULL
NULL or true = true
NULL or NULL = NULL
NULL and false = false
NULL and true = NULL
NULL and NULL = NULL

7,在IN表达式中的NULL
     A IN ( Expr1, Expr2, ..., ExprN ) ,相当与A=Expr1 or A=Expr2 or ... or A=ExprN,所以如果A为NULL,返回的结果一定都为NULL,但是在(Expr1,...)这个列表中如果有值为NULL的时候,则如果列表中存在A的值,那么“A IN( Expr1, Expr2, ..., ExprN )” returns true
“A NOT IN( Expr1, Expr2, ..., ExprN )” returns false
     如果列表中不存在A的值
“A IN( Expr1, Expr2, ..., ExprN )” returns NULL
“A NOT IN( Expr1, Expr2, ..., ExprN )” returns NULL

8,在Exists和SINGULAR(是否只有一条记录)表达式中的NULL
     Exists和SINGULAR的结果只返回true或false

9,当ORDER BY中的列有NULL的时候,NULL被当作是最小的值来处理,如果是asc,就排列在最前面,如果是desc,就排列在最后面

10,当在sum,count,MAX, MIN,AVG这些内在函数的时候都会忽略为NULL的行,特别要注意的是Count,count(*)和count(columnname)返回的结果是不一样的.count(columnname)会忽略掉为NULL的行

11,在约束条件check设置的时候,例如check (a > 1);这里对NULL是不进行检测的,如果要去掉NULL,就要加上a is not null.

12,SELECT DISTINCT中的NULL,会被当作相等的值来处理,例如SELECT DISTINCT name from dt,如果name有两行为NULL,那么这里就只能获取一行。

13,nullif(express),例如nullif(name, 'a'),当name='a'的时候,它就转换为Null.
PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES,现在已经更名为PostgreSQL. PostgreSQL支持大部分SQL标准并且提供了许多其它现代特性:复杂查询、外键、触发器、视图、事务完整性等。 PostgreSQL 是一个免费的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和专有系统(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server)之外的另一种选择。 事实上, PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;其次,PostgreSQL 是全功能的自由软件数据库,很长时间以来,PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统(MVCC)、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。 Inprise 的 InterBase 以及SAP等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。最后,PostgreSQL拥有一支非常活跃的开发队伍,而且在许多黑客的努力下,PostgreSQL 的质量日益提高。从技术角度来讲,PostgreSQL 采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由数据库服务器提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个 C 接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等, 同时也要指出的是,PostgreSQL 对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是 PostgreSQL 一大优点。 本课程作为PostgreSQL数据库管理之三,主要讲解以下内容:1.     PostgreSQL约束讲解和剖析2.     PostgreSQL数据类型3.     PostgreSQL的结构管理4.     PostgreSQL条件表达式和操作5.     PostgreSQL使用小技巧
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值