在 MySQL 中使用的 "no" 关键字是什么?
What is the "no" keyword used for in MySQL?
我只是偶然发现“no”是Mysql中的保留word/keyword。
我在 Google 上搜索了它的用途,但找不到答案。
有人可以解释或有任何 link 文章解释每个 Mysql 的保留关键字用法吗?
NO
是ANSI SQL中的保留字,但目前在MySQL中不作为关键字使用。它已经这样定义,因此在以后的扩展中可以添加语义用法。
语言定义中的一种常见做法是,保留但不使用某些词,因为在语言的早期状态不需要它们,甚至以后可能不需要使用它.
但是,稍后将保留关键字添加到现有语言中总是很痛苦,因为现有脚本中可能有具有该名称的变量,并且您需要 update/rewrite 它们才能与语言更新兼容(哪些语言更新尽量防止向后兼容并简化更新过程)。这就是为什么语言设计者首先根据需要保留更多关键字,以便稍后更灵活地将它们添加到语言中而不会破坏向后兼容性。
我搜索了 MySQL 8.0 grammar file,发现 NO
令牌的使用方式如下:
在级联外键声明中,可以使用ON {UPDATE|DELETE} NO ACTION
.
在NO SQL
特征中为stored routines。
COMMIT
语句的一个选项,意思是do not在提交当前事务后自动启动一个新的事务或者释放session。
COMMIT AND NO CHAIN;
COMMIT AND NO RELEASE;
https://dev.mysql.com/doc/refman/8.0/en/commit.html 说:
Including the NO
keyword suppresses CHAIN
or RELEASE
completion, which can be useful if the completion_type
system variable is set to cause chaining or release completion by default.
作为合并插入类型,当使用 CREATE TABLE
进行 MERGE table 时,这是一个 table 选项。如果将 table 声明为:
,则插入将被禁用
CREATE TABLE mytable (...) ENGINE=MERGE UNION=(...) INSERT_METHOD=NO;
就其价值而言,NO
关键字不是 保留 关键字。在您链接到的关键字文档页面中,保留关键字标有“(R)”,但 NO
没有该注释。因此,您可以使用 NO
作为标识符,而不必在反引号中对其进行定界。
mysql> create table no ( i int);
Query OK, 0 rows affected (0.05 sec)
我只是偶然发现“no”是Mysql中的保留word/keyword。
我在 Google 上搜索了它的用途,但找不到答案。
有人可以解释或有任何 link 文章解释每个 Mysql 的保留关键字用法吗?
NO
是ANSI SQL中的保留字,但目前在MySQL中不作为关键字使用。它已经这样定义,因此在以后的扩展中可以添加语义用法。
语言定义中的一种常见做法是,保留但不使用某些词,因为在语言的早期状态不需要它们,甚至以后可能不需要使用它.
但是,稍后将保留关键字添加到现有语言中总是很痛苦,因为现有脚本中可能有具有该名称的变量,并且您需要 update/rewrite 它们才能与语言更新兼容(哪些语言更新尽量防止向后兼容并简化更新过程)。这就是为什么语言设计者首先根据需要保留更多关键字,以便稍后更灵活地将它们添加到语言中而不会破坏向后兼容性。
我搜索了 MySQL 8.0 grammar file,发现 NO
令牌的使用方式如下:
在级联外键声明中,可以使用
ON {UPDATE|DELETE} NO ACTION
.在
NO SQL
特征中为stored routines。COMMIT
语句的一个选项,意思是do not在提交当前事务后自动启动一个新的事务或者释放session。COMMIT AND NO CHAIN; COMMIT AND NO RELEASE;
https://dev.mysql.com/doc/refman/8.0/en/commit.html 说:
Including the
NO
keyword suppressesCHAIN
orRELEASE
completion, which can be useful if thecompletion_type
system variable is set to cause chaining or release completion by default.作为合并插入类型,当使用
,则插入将被禁用CREATE TABLE
进行 MERGE table 时,这是一个 table 选项。如果将 table 声明为:CREATE TABLE mytable (...) ENGINE=MERGE UNION=(...) INSERT_METHOD=NO;
就其价值而言,NO
关键字不是 保留 关键字。在您链接到的关键字文档页面中,保留关键字标有“(R)”,但 NO
没有该注释。因此,您可以使用 NO
作为标识符,而不必在反引号中对其进行定界。
mysql> create table no ( i int);
Query OK, 0 rows affected (0.05 sec)