表C-1列出了所由在 SQL 标准和 PostgreSQL 8.2.3 里是关键字的记号。
SQL 里有保留字和非保留字之分。根据标准,保留字是那些真正的关键字;决不能用它们做标识符。非保留字只是在特定的环境里有特殊的含义,而在其它环境里是可以用做标识符的。大多数非保留字实际上都是 SQL 声明的内建表和函数的名字。而非保留字的概念实质上只是用来表示在某些场合里,在一个字上附加了一些预先定义的含义。
在 PostgreSQL 里,分析器的工作有些复杂。因为存在好几种不同范畴的记号,从那些永远不可能用做标识符的到那些和普通标识符比较起来在分析器里完全没有任何特殊状态的(后者通常都是 SQL 声明的函数)。即使保留关键字在 PostgreSQL 里都没有完全保留,而是可以用做字段标签。比如,虽然 CHECK 是保留关键字,但是 SELECT 55 AS CHECK 语句完全行得通。
在表C-1的"PostgreSQL"字段里,我们把那些分析器明确知道,但是可以在大多数需要标识符的环境里用做标识符的关键字分类为"非保留"。虽然一些关键字是非保留的,但是却不能用做函数或者数据类型名字,我们对这些关键字相应做了的标记。大多数这类记号代表有特殊语法的内置函数或者数据类型。仍然可以使用这些函数或者类型,但是用户不能重新定义它们。标记为"保留"的都是那些只允许出现在"AS"字段标签名里面(以及少数几个其它环境)的记号。有些保留关键字还可以用做函数的名字;这点在表中也显示出来了。
一条通用的规则是:如果你看到任何古怪的分析错,说命令包含任何这里列出的关键字做标识符,那么你可以先试试用双引号把那个标识符括起来,看看问题是否消失。
在开始学习表C-1之前还要理解的一件重要的事情是:一个关键字在 PostgreSQL 中没有保留并不意味着与该关键字相关的特性没有实现。同样,关键字的存在也并不表明某个特性就一定存在。
表C-1. SQL 关键字
Python学习网,大量的免费,欢迎在线学习!
伴沃教育还为您提供以下相关内容希望对您有帮助:
怎样设置PostgreSQL中字段和表名对大小写敏感
譬如您的数据库中有名为 TUser 的表,您在 PostgreSQL 自带的图形化查询工具中必须使用类似这样的查询语句才能正确执行:SELECT * FROM "TUser",当然它对 SQL 标准中的保留字和关键字是不区分大小写的,所以写成 select * From "TUser" 这样也是完全可以的。另外,PostgreSQL 对数据也是大小写敏感...
oracle移植到mysql注意事项
再举个例子,不同的数据库对分页查询作了扩展,postgresql有offset,limit,oracle就没有。2、 避免数据库大小写敏感的问题。选择数据库表名和字段名采用大写还是小写,并且在数据库的设计和编码过程中完全统一。3、 保留字。要求数据库设计者尽量不使用保留字作表名和字段名。也有很多人有这种用法,在表...
postgresql怎样重载 = 运算符
运算符是一个保留字或字符主要用于PostgreSQL的语句的WHERE子句中执行操作,如比较和算术运算。运算符用于指定一个PostgreSQL表中的条件,并在一份声明中多个条件作为连词。算术运算符 比较操作符 逻辑运算符 位运算符 PostgreSQL算术运算符:假设变量a的值为2,而变量b的值为3:
数据从MySQL迁移到Oracle 需要注意什么
再举个例子,不同的数据库对分页查询作了扩展,postgresql有offset,limit,oracle就没有。2、保留字。要求数据库设计者尽量不使用保留字作表名和字段名。也有很多人有这种用法,在表名和字段名前加‘_',像这样:create table _tablename ( _id integer)。这样永远不会出现保留字引起的问题。3、避免...
数据从MySQL迁移到Oracle需要注意什么
ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记)INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL2. 单引号的处理MYSQL...