名称是MySQL中的保留字吗?

时间:2009-04-10 16:12:27

标签: mysql

我可以在mysql表中命名列name吗?

6 个答案:

答案 0 :(得分:16)

为什么不尝试呢?

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

你也可以用``。

引用任何名字
mysql> select `from` from `from`;
+------+
| from |
+------+
|    1 |
+------+

答案 1 :(得分:4)

你应该好好调用一个列'name'。查看http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html以获取有关如何处理保留字的更多详细信息。

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

答案 2 :(得分:4)

即使是人名,我也建议 FirstName FullName 作为更具体的列名{{3 }}

答案 3 :(得分:4)

无论您是否可以,您可能都希望首先考虑为什么。什么名字?什么名字?几年之后,如果你看一下数据库模式,你还会记得这些细节吗?

我建议将列名称与处理任何变量名称相同,并为其指定一个描述性名称符合您的最佳利益。未来几年,你(或任何维护你代码的人)都会感谢你。

答案 4 :(得分:0)

CREATE TABLE mytest (name INT);

SELECT  *
FROM    mytest;

name
--------

在可疑的情况下,您可以将姓名括在严重的口音中:

CREATE TABLE `CREATE TABLE` (name INT);

SELECT  *
FROM    `CREATE TABLE`;

name
--------

答案 5 :(得分:0)

这里只是提醒一句。由于字段名称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