SQL-92 标准的由来:
“ SQL" 的名称是 Structured Query Language(结构化查询语言)的缩写。 在 1974 年,Donald Chamberlin 和其他人在 IBM 的研究所定义了语言 SEQUEL (Structured English Query Language)(结构化英语查询语言)。 这种语言在 1974-75 年首先在一种叫 SEUEL-XRM 的 IBM 的原型里面实现。 到了1976-77 年,定义了一种叫 SEQUEL/2 的 SEQUEL 改进版, 并且名称也因此改成 SQL。
在 1977 年,IBM 开发了一种新的叫 System R 的原型语言。 System R 实现了 SEQUEL/2 (现在的 SQL)的很大一部分子集,并且在项目过程中对 SQL 做了许多修改。 System R 被安装到了许多用户节点上, 包括 IBM 的节点和许多经过选择的客户节点上。 多亏了在 System R 那些用户节点上的成功,IBM 开始开发基于 System R 技术的 SQL 语言的商业产品。
再过了一年,IBM 和许多其他提供商宣布了许多 SQL 产品,例如 SQL/DS(IBM), DB2(IBM), ORACLE(Oracle Corp.), DG/SQL(Data General Corp.), 和 SYBASE(Sybase Inc.).
SQL 现在还是一个官方标准。在 1982 年,美国国家标准局 (ANSI)公布了数据库委员会宪章(DatabaseCommittee)X3H2, 建议发展一种标准的关系语言。 这个建议在 1986 年被批准并且认为实际上就是 IBM 版本的 SQL。在 1987 年,这个ANSI 标准也被国际标准化组织 (ISO)接受为国际标准。这个最初的 SQL 版本的标准经常非正式的被称为 "SQL/86". 到了 1989 年,对那个最初的标准进行了扩展, 并且这个新的标准被经常地非正式的称为"SQL/89"。 同样在 1989 年,一个相关的标准,发展了称之为 数据库语言嵌入SQL (Database LanguageEmbedded SQL) (ESQL)。
ISO 和 ANSI 委员会已经在一个大大地扩展了最初的标准的新版本的定义上工作了好几年, 常被非正式的称之为 SQL2 和 SQL/92 。这个版本成为一个批准了的标准 - "International Standard ISO/IEC 9075:1992, Database Language SQL - 在1992 年晚些时候。 SQL/92 通常是人们说 "SQL标准" 时所指的版本。在 Date and Darwen, 1997里有 SQL/92 详细的描述。
(1)SQL-92 标准要求在对null 值进行等于(=)或者不等于(<>)的时候取值FALSE。当 set Ansi_null 为 on 的时候,即使这一个column 中包含空值,使用select where column_name=null 返回的也是零,即使这一列column 不包含空值,使用 select column<>
null 返回的也是零。
(2) 当set ANSC_NULL 设置为off 的时候,规则不尊从sql-92 标准,当 select where column=null 的时候,返回=null 的列。
当<>null 的时候,返回不等于null 的列。
讨论一下is null 和=null ,is not null 和<> null 的区别
(1) 当 set ansi_nulls on 的时候 ;
where column is null 返回 为null 的值。where column is not null 的时候返回不为空的值
where column=null 和 where column <>null 返回的都是零
(2) 当 set ansi_null off 的时候:
where column is null 和 where column =null 返回的结果是一样的。
where column is not null 和where column <> null 返回的结果是一样的。
(3) SET QUOTED_IDENTIFIER ON 的时候 标识符由双引号分割,文字用单引号分割。
select * from color_dup where "colorcode"='01W'
当SET QUOTED_IDENTIFIER ON 的时候 标识符 colorcode 可以用双引号分割,或者不加双引号,用单引号的话返回的是空的。
o1W必须用单引号括起来。
(4) SET QUOTED_IDENTIFIER OFF的时候,标识符不可以加引号,且必须符合所有 Transact-SQL 标识符规则
当set quoted_identifier off 的时候 标识符不可以加引号,文字可以用单引号和双引号。
select * from color_dup where colorcode='01W'
select * from color_dup where colorcode="01W"