是否可以在CREATE TABLE语句中使用“When”作为列名?

是否可以在CREATE TABLE语句中使用“When”作为列名?

在进行CREATE TABLE语句操作时,往往需要为表中的每一列指定列名,列名的要求是必须是一个合法的标识符。那么问题来了,是否可以在列名中使用“When”这个词汇呢?

在SQL语言的标准中,并没有对于列名的具体限制做出明确规定,但是考虑到当下使用SQL语言的场景,我们可以推测出“The WHEN”将不会被作为一个合法的列名而存在于CREATE TABLE语句中。那么这个推测是否是正确的呢?接下来,我们来通过实验验证一下。

阅读更多:MySQL 教程

实验过程

首先,我们在MySQL客户端中新建一个数据库“test”。然后,我们利用下面这个命令在“test”数据库中新建一张表,“When”作为列名。

CREATE TABLE test_table (
    id INT,
    name VARCHAR(10),
    When VARCHAR(20)
);

接下来插入一些数据。

INSERT INTO test_table VALUES (1, 'monkey', '2021-01-01'), (2, 'cat', '2021-02-05');

尝试查询数据。

SELECT * FROM test_table;

在MySQL客户端执行查询语句后,你会得到如下错误提示:

ERROR 1064 (42000): You have an error in
your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax to use near 'When VARCHAR(20))' at line 3

这意味着我们 上面的CREATE TABLE语句并没有被成功地解析/执行系统在处理我们的SQL语句时,将”When”视为关键字,而不是标识符的一部分。因此,我们的CREATE TABLE语句没有创建任何表,因为它不符合标准。

解决方案

我们可以通过在列名两侧加上反引号`来避免使用关键字的情况。

所以,如果我们使用以下语句,我们的CREATE TABLE语句将得以成功执行。

CREATE TABLE test_table (
    id INT,
    name VARCHAR(10),
    `When` VARCHAR(20)
);

在这个例子中,使用了反引号将”When”括起来表示它是一个标识符而非关键字,这样就解决了使用”When”作为列名的问题。

结论

在CREATE TABLE语句中,使用”When”作为列名是不可行的,因为”When”是作为SQL的一个关键字而存在的。我们需要使用反引号来将其括起来作为标识符,这样就可以在列名中使用”When”了。针对这个问题,也是应该从语言使用者的角度理解略显特殊词汇及其背后的意义,以规范合理的方式来使用和定义我们的代码。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程