PostgreSQL之SQL语法(一)词法结构
常量
1.字符串常量
在SQL中,一个字符串常量是一个由单引号('
)包围的任意字符序列,例如'This is a string'
。为了在一个字符串中包括一个单引号,可以写两个相连的单引号,例如'Dianne''s horse'
。注意这和一个双引号("
)不同。
2.美元引用的字符串常量
虽然用于指定字符串常量的标准语法通常都很方便,但是当字符串中包含了很多单引号或反斜线时很难理解它,因为每一个都需要被双写。要在这种情形下允许可读性更好的查询,PostgreSQL提供了另一种被称为“美元引用”的方式来书写字符串常量。一个美元引用的字符串常量由一个美元符号($
)、一个可选的零个或更多字符的“标签”、另一个美元符号、一个构成字符串内容的任意字符序列、一个美元符号、开始这个美元引用的相同标签和一个美元符号组成。
例如,这里有两种不同的方法使用美元引用指定字符串“Dianne's horse”:
$$Dianne's horse$$
$SomeTag$Dianne's horse$SomeTag$
注意在美元引用字符串中,单引号可以在不被转义的情况下使用。事实上,在一个美元引用字符串中不需要对字符进行转义:字符串内容总是按其字面意思写出。反斜线不是特殊的,并且美元符号也不是特殊的,除非它们是匹配开标签的一个序列的一部分。
一个美元引用字符串的标签(如果有)遵循一个未被引用标识符的相同规则,除了它不能包含一个美元符号之外。标签是大小写敏感的,因此$tag$String content$tag$
是正确的,但是$TAG$String content$tag$
不正确。
特殊字符
一些不是数字字母的字符有一种不同于作为操作符的特殊含义。
- 跟随在一个美元符号($)后面的数字被用来表示在一个函数定义或一个预备语句中的位置参数。在其他上下文中该美元符号可以作为一个标识符或者一个美元引用字符串常量的一部分。
- 圆括号(())具有它们通常的含义,用来分组表达式并且强制优先。在某些情况中,圆括号被要求作为一个特定 SQL 命令的固定语法的一部分。
- 方括号([])被用来选择一个数组中的元素。
- 逗号(,)被用在某些语法结构中来分割一个列表的元素。
- 分号(;)结束一个 SQL 命令。它不能出现在一个命令中间的任何位置,除了在一个字符串常量中或者一个被引用的标识符中。
- 冒号(:)被用来从数组中选择“切片”。在某些 SQL 的“方言”(例如嵌入式 SQL)中,冒号被用来作为变量名的前缀。
- 双冒号(::)类型转换。
- 星号(*)被用在某些上下文中标记一个表的所有域或者组合值。当它被用作一个聚集函数的参数时,它还有一种特殊的含义,即该聚集不要求任何显式参数。
- 句点(.)被用在数字常量中,并且被用来分割模式、表和列名。