关键字

SQL里有保留字和非保留字之分。根据标准,保留字决不能用做其他标识符。非保留字只是在特定的环境里有特殊的含义,而在其他环境里是可以用做标识符的。

标识符的命名需要遵守如下规范:

  • 标识符需要为字母、下划线、数字(0-9)或美元符号($)。

  • 标识符必须以字母(a-z)或下划线(_)开头。

    说明:

    • 此命名规范为建议项,非强制项。

    • 特殊情况下可以使用双引号或者反引号(`)规避特殊字符报错。

相比于原始的openGauss,dolphin对于关键字的修改主要为:

  1. 新增MEDIUMINT,AST,AUTOEXTEND_SIZE,AVG_ROW_LENGTH,CHECKSUM,COMPRESSION,CONTAINS,DATABASES,DELAY_KEY_WRITE,DESCRIBE,DISK,ENGINE,ENGINE_ATTRIBUTE,EXPANSION,EXTENDED,FLUSH,HOSTS,INPLACE,INSERT_METHOD,KEY_BLOCK_SIZE,KEYS,LOGS,LONGTEXT,MAX_ROWS,MEMORY,MIN_ROWS,MOD,MODIFIES,NGRAM,OPTIMIZE,PACK_KEYS,PARTITIONING,PROCESSLIST,PROXY,QUARTER,QUICK,READS,REORGANIZE,REPAIR,ROUTINE,ROW_FORMAT,SCHEMAS,SQL,STATS_AUTO_RECALC,STATS_PERSISTENT,STATS_SAMPLE_PAGES,STATUS,TEMPTABLE,TINYTEXT,MEDIUMTEXT,TRIGGERS,UNDEFINED,USE,YEAR_MONTH,ZEROFILL,COUNT,作为非保留关键字。
  2. 关键字DATE可以作为函数使用。
  3. 新增LAST_DAY,作为保留关键字,用于在语法层面区别openGauss原有LAST_DAY函数和dolphin中LAST_DAY函数。
  4. 新增GET_FORMAT,作为非保留关键字,用于在语法上识别GET_FORMAT函数。
  5. 新增DAY_HOUR,DAY_MINUTE,DAY_SECOND,DAY_MICROSECOND,HOUR_MINUTE,HOUR_SECOND,HOUR_MICROSECOND,MINUTE_SECOND,MINUTE_MICROSECOND,SECOND_MICROSECOND,作为非保留关键字,用于EXTRACT函数在语法上识别对应单位。
  6. 改变关键字AUTHID等级,由保留关键字变为非保留(不能是函数或类型)关键字,使其可以作为表名列名使用。
  7. 改变关键字BODY、ENUM等级,由非保留关键字变为保留关键字。
  8. 新增DUAL,CURTIME,DELAYED,DISTINCTROW,LAST_DAY,LOW_PRIORITY,NOW,UTC_DATE,UTC_TIME,UTC_TIMESTAMP,作为保留关键字。
  9. 新增AGAINST,DIV,FULLTEXT,REGEXP,RLIKE,SOUNDS,XOR,作为保留(可以是函数或类型)关键字。
  10. 改变关键字BINARY等级,由保留(可以是函数或类型)变为非保留(不能是函数或类型)关键字。
  11. 新增CONVERT,DATETIME,FORMAT,IFNULL,JSON_OBJECT,LOCATE,MEDIUMINT,MID,NO_WRITE_TO_BINLOG,SUBSTR,TIMESTAMPADD,UNSIGNED,VARBINARY,作为非保留(不能是函数或类型)关键字。
  12. 改变关键字FIXED、IF、TEXT等级,由非保留关键字变为非保留(不能是函数或类型)关键字。
  13. 改变关键字IGNORE、INDEX等级,由非保留关键字变为保留(可以是函数或类型)。
  14. 改变关键字CAST、LAST_DAY、SYSDATE、ANY等级,由保留字调整为非保留(不能是函数或类型)关键字。
  15. 改变关键字REJECT、LESS、MODEIFY、USER、COLLATION、FREEZE、VERBOSE、DO、END由保留字调整为非保留关键字。
  16. 改变关键字RECYCLEBIN、NOTNULL、BODY由保留(可以是函数或类型)变为非保留关键字。
  17. 移除关键字ANALYSE、BUCKETS、ROWNUM、EXCLUDED、MINUS
  18. 移除关键字COMPACT,由保留(可以是函数或类型)调整为非关键字。
  19. 新增关键字WEEK_P
  20. 改变关键字SHRINK、PERFORMANCE等级,由保留关键字调整为非保留关键字。
  21. 新增STRAIGHT_JOIN,作为保留关键字。
  22. 为实现建表时指定KEY来创建索引,关键字KEY无法作为列名,但可以做表名、函数名等。

表 1 SQL关键字

关键字

openGauss

SQL:1999

SQL-92

ABORT

非保留

-

-

ABS

-

非保留

-

ABSOLUTE

非保留

保留

保留

ACCESS

非保留

-

-

ACCOUNT

非保留

-

-

ACTION

非保留

保留

保留

ADA

-

非保留

非保留

ADD

非保留

保留

保留

ADMIN

非保留

保留

-

AFTER

非保留

保留

-

AGAINST保留(可以是函数或类型)--

AGGREGATE

非保留

保留

-

ALGORITHM

非保留

-

-

ALIAS

-

保留

-

ALL

保留

保留

保留

ALLOCATE

-

保留

保留

ALSO

非保留

-

-

ALTER

非保留

保留

保留

ALWAYS

非保留

-

-

ANALYZE

保留

-

-

AND

保留

保留

保留

ANY

非保留(不能是函数或类型)

保留

保留

APP

非保留

-

-

APPEND

非保留

-

-

ARCHIVE

非保留

-

-

ARE

-

保留

保留

ARRAY

保留

保留

-

AS

保留

保留

保留

ASC

保留

保留

保留

ASENSITIVE

-

非保留

-

ASSERTION

非保留

保留

保留

ASSIGNMENT

非保留

非保留

-

AST非保留--

ASYMMETRIC

保留

非保留

-

AT

非保留

保留

保留

ATOMIC

-

非保留

-

ATTRIBUTE

非保留

-

-

AUDIT

非保留

-

-

AUTHID

非保留(不能是函数或类型)

-

-

AUTHORIZATION

保留(可以是函数或类型)

保留

保留

AUTOEXTEND

非保留

-

-

AUTOEXTEND_SIZE非保留--

AUTOMAPPED

非保留

-

-

AVG_ROW_LENGTH非保留--

AVG

-

非保留

保留

BACKWARD

非保留

-

-

BARRIER

非保留

-

-

BEFORE

非保留

保留

-

BEGIN

非保留

保留

保留

BEGIN_NON_ANOYBLOCK

非保留

-

-

BETWEEN

非保留(不能是函数或类型)

非保留

保留

BIGINT

非保留(不能是函数或类型)

-

-

BINARY

非保留(不能是函数或类型)

保留

-

BINARY_DOUBLE

非保留(不能是函数或类型)

-

-

BINARY_INTEGER

非保留(不能是函数或类型)

-

-

BIT

非保留(不能是函数或类型)

保留

保留

BITVAR

-

非保留

-

BIT_LENGTH

-

非保留

保留

BLANKS

非保留

-

-

BLOB

非保留

保留

-

BLOCKCHAIN

非保留

-

-

BODY

非保留

-

-

BOOLEAN

非保留(不能是函数或类型)

保留

-

BOTH

保留

保留

保留

BUCKETCNT

非保留(不能是函数或类型)

-

-

BREADTH

-

保留

-

BY

非保留

保留

保留

BYTEAWITHOUTORDER

非保留(不能是函数或类型)

-

-

BYTEAWITHOUTORDERWITHEQUAL

非保留(不能是函数或类型)

-

-

C

-

非保留

非保留

CACHE

非保留

-

-

CALL

非保留

保留

-

CALLED

非保留

非保留

-

CANCELABLE

非保留

-

-

CARDINALITY

-

非保留

-

CASCADE

非保留

保留

保留

CASCADED

非保留

保留

保留

CASE

保留

保留

保留

CAST

非保留(不能是函数或类型)

保留

保留

CATALOG

非保留

保留

保留

CATALOG_NAME

-

非保留

非保留

CHAIN

非保留

非保留

-

CHAR

非保留(不能是函数或类型)

保留

保留

CHARACTER

非保留(不能是函数或类型)

保留

保留

CHARACTERISTICS

非保留

-

-

CHARACTERSET

非保留

-

-

CHARACTER_LENGTH

-

非保留

保留

CHARACTER_SET_CATALOG

-

非保留

非保留

CHARACTER_SET_NAME

-

非保留

非保留

CHARACTER_SET_SCHEMA

-

非保留

非保留

CHAR_LENGTH

-

非保留

保留

CHECK

保留

保留

保留

CHECKED

-

非保留

-

CHECKPOINT

非保留

-

-

CHECKSUM非保留--

CLASS

非保留

保留

-

CLEAN

非保留

-

-

CLASS_ORIGIN

-

非保留

非保留

CLIENT

非保留

-

-

CLIENT_MASTER_KEY

非保留

-

-

CLIENT_MASTER_KEYS

非保留

-

-

CLOB

非保留

保留

-

CLOSE

非保留

保留

保留

CLUSTER

非保留

-

-

COALESCE

非保留(不能是函数或类型)

非保留

保留

COBOL

-

非保留

非保留

COLLATE

保留

保留

保留

COLLATION

非保留

保留

保留

COLLATION_CATALOG

-

非保留

非保留

COLLATION_NAME

-

非保留

非保留

COLLATION_SCHEMA

-

非保留

非保留

COLUMN

保留

保留

保留

COLUMN_ENCRYPTION_KEY

非保留

-

-

COLUMN_ENCRYPTION_KEYS

非保留

-

-

COLUMN_NAME

-

非保留

非保留

COMPATIBLE_ILLEGAL_CHARS

非保留

-

-

COMMAND_FUNCTION

-

非保留

非保留

COMPLETE

非保留

-

-

COMMAND_FUNCTION_CODE

-

非保留

-

COMMENT

非保留

-

-

COMMENTS

非保留

-

-

COMMIT

非保留

保留

保留

COMMITTED

非保留

非保留

非保留

COMPRESS

非保留

-

-

COMPRESSION非保留--

COMPLETION

-

保留

-

CONCURRENTLY

保留(可以是函数或类型)

-

-

CONDITION

非保留

-

-

CONDITION_NUMBER

-

非保留

非保留

CONFIGURATION

非保留

-

-

CONNECT

非保留

保留

保留

CONNECTION

非保留

保留

保留

CONNECTION_NAME

-

非保留

非保留

CONSTANT

非保留

-

-

CONSTRAINT

保留

保留

保留

CONSTRAINTS

非保留

保留

保留

CONTAINS非保留--

CONSTRAINT_CATALOG

-

非保留

非保留

CONSTRAINT_NAME

-

非保留

非保留

CONSTRAINT_SCHEMA

-

非保留

非保留

CONSTRUCTOR

-

保留

-

CONTAINS

-

非保留

-

CONTENT

非保留

-

-

CONTINUE

非保留

保留

保留

CONTVIEW

非保留

-

-

CONVERSION

非保留

-

-

CONVERT非保留(不能是函数或类型)--

CONVERT

-

非保留

保留

COORDINATOR

非保留

-

-

COORDINATORS

非保留

-

-

COPY

非保留

-

-

CORRESPONDING

-

保留

保留

COST

非保留

-

-

COUNT

非保留

非保留

保留

CREATE

保留

保留

保留

CROSS

保留(可以是函数或类型)

保留

保留

CSN

保留(可以是函数或类型)

-

-

CSV

非保留

-

-

CUBE

非保留

保留

-

CURRENT

非保留

保留

保留

CURRENT_CATALOG

保留

-

-

CURRENT_DATE

保留

保留

保留

CURRENT_PATH

-

保留

-

CURRENT_ROLE

保留

保留

-

CURRENT_SCHEMA

保留(可以是函数或类型)

-

-

CURRENT_TIME

保留

保留

保留

CURRENT_TIMESTAMP

保留

保留

保留

CURRENT_USER

保留

保留

保留

CURSOR

非保留

保留

保留

CURTIME保留--

CURSOR_NAME

-

非保留

非保留

CYCLE

非保留

保留

-

DATA

非保留

保留

非保留

DATABASE

非保留

-

-

DATABASES非保留--

DATAFILE

非保留

-

-

DATANODE

非保留

-

-

DATANODES

非保留

-

-

DATE_FORMAT

非保留

-

-

DATETIME非保留(不能是函数或类型)--

DATATYPE_CL

非保留

-

-

DATE

非保留(不能是函数或类型)

保留

保留

DELTAMERGE

保留(可以是函数或类型)

-

-

DATETIME_INTERVAL_CODE

-

非保留

非保留

DATETIME_INTERVAL_PRECISION

-

非保留

非保留

DAY

非保留

保留

保留

DAY_HOUR非保留--
DAY_MICROSECOND非保留--
DAY_MINUTE非保留--
DAY_SECOND非保留--

DBCOMPATIBILITY

非保留

-

-

DEALLOCATE

非保留

保留

保留

DEC

非保留(不能是函数或类型)

保留

保留

DECIMAL

非保留(不能是函数或类型)

保留

保留

DECLARE

非保留

保留

保留

DECODE

非保留(不能是函数或类型)

-

-

DEFAULT

保留

保留

保留

DEFAULTS

非保留

-

-

DEFERRABLE

保留

保留

保留

DEFERRED

非保留

保留

保留

DEFINED

-

非保留

-

DEFINER

非保留

非保留

-

DELAY_KEY_WRITE非保留--
DELAYED保留--

DELETE

非保留

保留

保留

DELIMITER

非保留

-

-

DELIMITERS

非保留

-

-

DELTA

非保留

-

-

DEPTH

-

保留

-

DEREF

-

保留

-

DESC

保留

保留

保留

DESCRIBE

非保留

保留

保留

DESCRIPTOR

-

保留

保留

DESTROY

-

保留

-

DESTRUCTOR

-

保留

-

DETERMINISTIC

非保留

保留

-

DIAGNOSTICS

-

保留

保留

DICTIONARY

非保留

保留

-

DIRECT

非保留

-

-

DIRECTORY

非保留

-

-

DISABLE

非保留

-

-

DISCARD

非保留

-

-

DISCONNECT

非保留

保留

保留

DISK非保留--

DISPATCH

-

非保留

-

DISTINCT

保留

保留

保留

DISTINCTROW保留--

DISTRIBUTE

非保留

-

-

DISTRIBUTION

非保留

-

-

DIV保留(可以是函数或类型)--

DO

非保留

-

-

DOCUMENT

非保留

-

-

DOMAIN

非保留

保留

保留

DOUBLE

非保留

保留

保留

DROP

非保留

保留

保留

DUAL保留--

DUMPFILE

非保留

-

-

DUPLICATE

非保留

-

-

DYNAMIC

-

保留

-

DYNAMIC_FUNCTION

-

非保留

非保留

DYNAMIC_FUNCTION_CODE

-

非保留

-

EACH

非保留

保留

-

ELSE

保留

保留

保留

ELASTIC

非保留

-

-

ENABLE

非保留

-

-

ENCLOSED

非保留

-

-

ENCODING

非保留

-

-

ENCRYPTED

非保留

-

-

ENCRYPTED_VALUE

非保留

-

-

ENCRYPTION

非保留

-

-

ENCRYPTION_TYPE

非保留

-

-

END

非保留

保留

保留

END-EXEC

-

保留

保留

ENFORCED

非保留

-

-

ENGINE非保留--
ENGINE_ATTRIBUTE非保留--

ENUM

保留

-

-

EOL

非保留

-

-

ERRORS

非保留

-

-

EQUALS

-

保留

-

ESCAPED

非保留

-

保留

ESCAPE

非保留

保留

保留

ESCAPING

非保留

-

-

EVERY

非保留

保留

-

EXCEPT

保留

保留

保留

EXCEPTION

-

保留

保留

EXCHANGE

非保留

-

-

EXCLUDE

非保留

-

-

EXCLUDING

非保留

-

-

EXCLUSIVE

非保留

-

-

EXEC

-

保留

保留

EXECUTE

非保留

保留

保留

EXISTING

-

非保留

-

EXISTS

非保留(不能是函数或类型)

非保留

保留

EXTENDED非保留--

EXPIRED_P

非保留

-

-

EXPLAIN

非保留

-

-

Extension

非保留

-

-

EXTERNAL

非保留

保留

保留

EXTRACT

非保留(不能是函数或类型)

非保留

保留

FALSE

保留

保留

保留

FAMILY

非保留

-

-

FAST

非保留

-

-

FEATURES

非保留

-

-

FETCH

保留

保留

保留

FENCED

保留

-

-

FIELDS

非保留

-

-

FILEHEADER

非保留

-

-

FILLER

非保留

-

-

FILTER

非保留

保留

保留

FINAL

-

非保留

-

FIRST

非保留

保留

保留

FIXED

非保留(不能是函数或类型)

保留

保留

FILL_MISSING_FIELDS

非保留

-

-

FLOAT

非保留(不能是函数或类型)

保留

保留

FLUSH非保留--

FOLLOWING

非保留

-

-

FOR

保留

保留

保留

FORCE

非保留

-

-

FOREIGN

保留

保留

保留

FORMAT非保留(不能是函数或类型)--

FORMATTER

非保留

-

-

FORTRAN

-

非保留

非保留

FORWARD

非保留

-

-

FOUND

-

保留

保留

FREE

-

保留

-

FREEZE

非保留

-

-

FROM

保留

保留

保留

FULL

保留(可以是函数或类型)

保留

保留

FULLTEXT保留(可以是函数或类型)--

FUNCTION

非保留

保留

-

FUNCTIONS

非保留

-

-

G

-

非保留

-

GENERAL

-

保留

-

GENERATED

非保留

非保留

-

GET_FORMAT非保留(不能是函数或类型)--

GET

-

保留

保留

GLOBAL

非保留

保留

保留

GO

-

保留

保留

GOTO

-

保留

保留

GRANT

保留

保留

保留

GRANTED

非保留

非保留

-

GRANTS非保留--

GREATEST

非保留(不能是函数或类型)

-

-

GROUP

保留

保留

保留

GROUPING

非保留(不能是函数或类型)

保留

-

GROUPPARENT

保留

-

-

HANDLER

非保留

-

-

HAVING

保留

保留

保留

HDFSDIRECTORY

保留(可以是函数或类型)

-

-

HEADER

非保留

-

-

HIERARCHY

-

非保留

-

HOLD

非保留

非保留

-

HOST

-

保留

-

HOSTS非保留--

HOUR

非保留

保留

保留

HOUR_MICROSECOND非保留--
HOUR_MINUTE非保留--
HOUR_SECOND非保留--

IDENTIFIED

非保留

-

-

IDENTITY

非保留

保留

保留

IF

非保留(不能是函数或类型)

-

-

IFNULL非保留(不能是函数或类型)--

IGNORE

保留(可以是函数或类型)

保留

-

IGNORE_EXTRA_DATA

非保留

-

-

ILIKE

保留(可以是函数或类型)

-

-

IMMEDIATE

非保留

保留

保留

IMMUTABLE

非保留

-

-

IMPLEMENTATION

-

非保留

-

IMPLICIT

非保留

-

-

IN

保留

保留

保留

INTERNAL

非保留

-

-

INCLUDE

非保留

-

-

INCLUDING

非保留

-

-

INCREMENT

非保留

-

-

INCREMENTAL

非保留

-

-

INDEX

保留(可以是函数或类型)

-

-

INDEXES

非保留

-

-

INDICATOR

-

保留

保留

INFILE

非保留

-

-

INFIX

-

非保留

-

INHERIT

非保留

-

-

INHERITS

非保留

-

-

INITIAL

非保留

-

-

INITIALIZE

-

保留

-

INITIALLY

保留

保留

保留

INITRANS

非保留

-

-

INLINE

非保留

-

-

INNER

保留(可以是函数或类型)

保留

保留

INOUT

非保留(不能是函数或类型)

保留

-

INPLACE非保留--

INPUT

非保留

保留

保留

INSENSITIVE

非保留

非保留

保留

INSERT

非保留

保留

保留

INSERT_METHOD保留--

INSTANCE

-

非保留

-

INSTANTIABLE

-

非保留

-

INSTEAD

非保留

-

-

INT

非保留(不能是函数或类型)

保留

保留

INTEGER

非保留(不能是函数或类型)

保留

保留

INTERSECT

保留

保留

保留

INTERVAL

非保留(不能是函数或类型)

保留

保留

INTO

保留

保留

保留

INVOKER

非保留

非保留

-

IP

非保留

-

-

IS

保留

保留

保留

ISNULL

非保留

-

-

ISOLATION

非保留

保留

保留

ITERATE

-

保留

-

JOIN

保留(可以是函数或类型)

保留

保留

JSON_OBJECT非保留(不能是函数或类型)--

K

-

非保留

-

KEY

非保留

保留

保留

KEY_BLOCK_SIZE非保留--

KEY_PATH

非保留

-

-

KEY_MEMBER

-

非保留

-

KEY_STORE

非保留

-

-

KEY_TYPE

-

非保留

-

KEYS非保留--

KILL

非保留

-

-

LABEL

非保留

-

-

LANGUAGE

非保留

保留

保留

LARGE

非保留

保留

-

LAST

非保留

保留

保留

LAST_DAY非保留(不能是函数或类型)--

LATERAL

-

保留

-

LC_COLLATE

非保留

-

-

LC_CTYPE

非保留

-

-

LEADING

保留

保留

保留

LEAKPROOF

非保留

-

-

LEAST

非保留(不能是函数或类型)

-

-

LEFT

保留(可以是函数或类型)

保留

保留

LENGTH

-

非保留

非保留

LESS

非保留

保留

-

LEVEL

非保留

保留

保留

LIKE

保留(可以是函数或类型)

保留

保留

LIMIT

保留

保留

-

LIST

非保留

-

-

LINES

非保留

-

-

LISTEN

非保留

-

-

LOAD

非保留

-

-

LOCAL

非保留

保留

保留

LOCALTIME

保留

保留

-

LOCALTIMESTAMP

保留

保留

-

LOCATE非保留(不能是函数或类型)--

LOCATION

非保留

-

-

LOCATOR

-

保留

-

LOCK

非保留

-

-

LOG

非保留