写点什么

YashanDB 标识符

作者:YashanDB
  • 2025-03-25
    广东
  • 本文字数:1129 字

    阅读完需:约 4 分钟

YashanDB 中包括两类标识符:

  • 作为语法关键字,用于定界 SQL 语法树的位置;作为系统保留语法关键字将不能作为数据库对象的名称。

  • 作为数据库对象的名称,用于表名、列名、别名等用途,但需满足下述命名规范。

#命名规范

标识符作为名称时存在如下规则和约束:(不使用双引号时)

  • 支持所有的大小写字母和数字,且大小写不敏感。

  • 不能出现特殊字符'\0'     ','     ' '     '+'      '-'     '*'     '/'    '|'      '('       '%'    ':'       '?'    '.'    '\t'       '\r'      '\n'     '='      '\\'        '!'      '>'        '<'     ';'      '&'      '^'     '"' '~' ''' '{' '}' '[' ']'等。

  • 不能使用系统保留语法关键字作为名称(包括大小写)。

当在标识符前后使用双引号时:

  • 不受上述约束限制,即名称内可以出现特殊字符,可以非字母开头,并可以使用系统保留语法关键字作为名称。

  • 对大小写的处理需满足下表规则:(同时需满足双引号的通用规则



使用示例

-- 符合约束的标识符作为名称,定义时使用双引号CREATE TABLE "CREATE01" (c1 INT);             -- 按全大写定义名称Succeed.INSERT INTO Create01 VALUES(1);               -- 不加双引号引用时,不区分大小写1 row affected.INSERT INTO "Create01" VALUES(1);             -- 加双引号引用时,严格区分大小写[1:12]YAS-02012 table or view does not exist  DROP TABLE Create01;Succeed.CREATE TABLE "CREATe01" (c1 INT);             -- 按非全大写定义名称时,引用名称时必须使用双引号,且严格区分大小写Succeed.INSERT INTO CREATE01 VALUES(1);[1:12]YAS-02012 table or view does not existINSERT INTO "CREATE01" VALUES(1);[1:12]YAS-02012 table or view does not existINSERT INTO "CREATe01" VALUES(1);1 row affected.  -- 违反约束的标识符作为名称,定义和引用都必须使用双引号CREATE TABLE "CREATE" (c1 INT);         -- 按全大写定义名称时,引用时严格区分大小写Succeed.INSERT INTO CREATE VALUES(1);[1:12]YAS-04202 missing or invalid table nameINSERT INTO "CREATE" VALUES(1);1 row affected.INSERT INTO "Create" VALUES(1);[1:12]YAS-02012 table or view does not exist  DROP TABLE "CREATE";Succeed.CREATE TABLE "Create" (c1 INT);         -- 按非全大写定义名称时,引用时严格区分大小写Succeed.INSERT INTO Create VALUES(1);[1:12]YAS-04202 missing or invalid table nameINSERT INTO "CREATE" VALUES(1);[1:12]YAS-02012 table or view does not existINSERT INTO "Create" VALUES(1);1 row affected.
复制代码


发布于: 2 小时前阅读数: 7
用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
YashanDB标识符_数据库_YashanDB_InfoQ写作社区