mysql 保留字能作为表字段吗_由于在MySQL中使用保留字作为表或列名而导致的语法错误...

小编典典

问题

在MySQL中,某些字词SELECT(INSERT,DELETE等等)是保留字。由于它们具有特殊含义,因此每当您将它们用作表名,列名或其他类型的标识符时,MySQL都会将其视为语法错误-

除非您用反引号将标识符引起来。

如官方文档中所述,在10.2模式对象名称

(添加了重点)中:

MySQL中的某些对象,包括数据库,表,索引,列,别名,视图,存储过程,分区,表空间和其他对象名,称为 标识符 。

如果标识符包含特殊字符或为 保留字 ,则在引用标识符时 必须将其 引用。

标识符引号是 反引号 (“ ```”):

有关关键字和保留字的完整列表,请参见第10.3 节“

关键字和保留字”

。在该页面中,后跟“(R)”的单词是保留单词。下面列出了一些保留字,包括许多容易引起此问题的字。

之前

通过

呼叫

案件

健康)状况

删除

数据中心

描述

指数

间隔

喜欢

限制

比赛

选项

要么

订购

划分

参考资料

选择

更新

哪里

解决方案

您有两个选择。

1.不要使用保留字作为标识符

最简单的解决方案是避免使用保留字作为标识符。您可能会为您的列找到另一个合理的名称,该名称不是保留字。

这样做有两个优点:

它消除了您或其他使用数据库的开发人员由于忘记(或不知道)特定标识符是保留字而意外写入语法错误的可能性。MySQL中有许多保留字,大多数开发人员不太可能全部了解。通过首先不使用这些词,可以避免为自己或将来的开发人员留下陷阱。

SQL方言中引用标识符的方式不同。虽然MySQL使用反引号在默认情况下,符合ANSI标准SQL引用标识符(实际上在MySQL ANSI SQL模式,如注意这里)用来引用标识符双引号。这样,用反引号引起来的标识符查询不易移植到其他SQL方言中。

纯粹是为了减少将来发生错误的风险,这通常比反引号引用标识符更明智。

2.使用反引号

如果无法重命名表或列,请```按照10.2架构对象名称

前面的报价中的描述,将有问题的标识符包装在反引号()中。

演示用法的示例(摘自10.3关键字和保留字):

mysql> **CREATE TABLE interval (begin INT, end INT);**

ERROR 1064 (42000): You have an error in your SQL syntax.

near 'interval (begin INT, end INT)'

mysql> **CREATE TABLE `interval` (begin INT, end INT);**

Query OK, 0 rows affected (0.01 sec)

同样,可以通过将关键字包装key在反引号中来固定问题的查询,如下所示:

INSERT INTO user_details (username, location, `key`)

VALUES ('Tim', 'Florida', 42)"; ^ ^

2020-05-17

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值