当名称不包含特殊字符时,为什么在node-sqlite3中使用反引号?

时间:2018-03-18 11:08:02

标签: sqlite node-sqlite3

我正在为codeacademy pro密集进行顶点(不可审核)项目。

本课程中提供了一个示例。

    db.serialize(function() {
      db.run('CREATE TABLE IF NOT EXISTS `Artist` ( ' +
              IF NOT EXISTS  NOT NULL, ' +
               '`name` TEXT NOT NULL, ' +
               '`date_of_birth` TEXT NOT NULL, ' +
               '`biography` TEXT NOT NULL, ' +
               '`is_currently_employed` INTEGER NOT NULL DEFAULT 1, ' +
               'PRIMARY KEY(`id`) )');

      db.run('CREATE TABLE IF NOT EXISTS `Series` ( ' +
               '`id` INTEGER NOT NULL, ' +
               '`name` TEXT NOT NULL, ' +
               '`description` TEXT NOT NULL, ' +
               'PRIMARY KEY(`id`) )');

      db.run('CREATE TABLE IF NOT EXISTS `Issue` ( ' +
               '`id` INTEGER NOT NULL, ' +
               '`name` TEXT NOT NULL, ' +
               '`issue_number` INTEGER NOT NULL, ' +
               '`publication_date` TEXT NOT NULL, ' +
               '`artist_id` INTEGER NOT NULL, ' +
               '`series_id` INTEGER NOT NULL, ' +
               'PRIMARY KEY(`id`), ' +
               'FOREIGN KEY(`artist_id`) REFERENCES `Artist`(`id`), ' +
               'FOREIGN KEY(`series_id`) REFERENCES `Series`(`id`) )');
    });

我理解反引号的es6概念,sqlite3中的反引号用于替代字符,如空格。然而,在这个例子中,我不明白为什么反叛是必要的,例如。 Artistname等?

请你帮忙,我还在学习。

1 个答案:

答案 0 :(得分:2)

SQL标准和SQLite对引用的标识符使用双引号。 SQLite仅支持与MySQL兼容的反引号。

您是正确的,不需要引用这些标识符。

(我认为Artistid列所在的垃圾只是一个复制/粘贴错误。)