名称在MySQL中是保留字吗?

名称在MySQL中是保留字吗?,mysql,Mysql,我可以在我的mysql表中命名一个列吗?您可以调用一个列“name”。查看更多关于如何处理保留字的详细信息 将列名包装在(`)字符中可以确保即使是保留的字也不会被误解。是即使是人名,我建议将FirstName或FullName作为列名,以便更加具体 在可疑的情况下,您可以将姓名用严肃的口音括起来: CREATE TABLE `CREATE TABLE` (name INT); SELECT * FROM `CREATE TABLE`; name -------- 为什么不试试呢 m

我可以在我的mysql表中命名一个列吗?

您可以调用一个列“name”。查看更多关于如何处理保留字的详细信息


将列名包装在(`)字符中可以确保即使是保留的字也不会被误解。

即使是人名,我建议将FirstName或FullName作为列名,以便更加具体

在可疑的情况下,您可以将姓名用严肃的口音括起来:

CREATE TABLE `CREATE TABLE` (name INT);

SELECT  *
FROM    `CREATE TABLE`;

name
--------
为什么不试试呢

mysql> select name from name;
+------+
| name |
+------+
|    1 |
+------+
您还可以用“`”引用任何名称

mysql> select `from` from `from`;
+------+
| from |
+------+
|    1 |
+------+

不管你是否能,你可能首先想知道为什么要做这件事。什么名字?什么名字?几年后,如果您查看数据库模式,您还会记得这些细节吗


我建议您最好像对待任何变量名一样对待列名,并给它一个描述性名称。几年后,你(或任何维护你的代码的人)都会感谢你。

这里只需要提醒一下。因为字段名
name
可以

但是,在存储过程中,变量名为做了其他事情

考虑以下步骤。当我调用这个过程时,它总是会改变配置数据库中的第一条记录。一旦我将名为name的变量重命名为其他变量,情况就很好了

PROCEDURE `updateConfig`(IN name VARCHAR(255), IN val VARCHAR(255))
BEGIN
UPDATE LOW_PRIORITY `config`
  SET `value`=val
  WHERE `name` = name
  LIMIT 1;
END

没有什么比简单的尝试更重要的了!为了回答OP的标题问题,文档中指出,
name
是一个MySQL关键字,也就是说,它在SQL中有意义,但它不是保留关键字,因此您可以使用它,而不必使用反勾号。好吧,在“公司”表中有一个名为“名称”的列是不言自明的…@ceejayoz不,它不会。全名是。因为人们通常有名字和姓氏。有时甚至是中间名。所以这个名字根本就不是那么自明的。@直到这个表被命名为
companys
(正如我在评论中所说的那样),我可能不会期望它充满了人事记录。我可能希望它充满了公司记录,没有名字和姓氏。如果我想仔细检查一下,我可以看几行。再说一次,“公司”表中名为“name”的列对任何通情达理的人来说都是完全可以理解的。事实上,如果称它为
全名
,会更让人困惑,因为这样你会期望公司有一个“短名称”或其他什么。如果没有,你就只能挠头了。太棒了。这里的链接是404,找不到
PROCEDURE `updateConfig`(IN name VARCHAR(255), IN val VARCHAR(255))
BEGIN
UPDATE LOW_PRIORITY `config`
  SET `value`=val
  WHERE `name` = name
  LIMIT 1;
END