如何使用SQL中的保留字作为表名或列名?

问题描述 投票:0回答:1

使用此查询时:

INSERT INTO order (order_quantity)
           VALUES ('50')

我收到错误:

您的 SQL 语法有错误;检查手册 对应于您的 MariaDB 服务器版本,以便使用正确的语法 第 146 行的“order (order_quantity) VALUES('50')”附近

我的查询有什么问题吗?

sql mariadb
1个回答
19
投票

不建议使用保留字作为数据库、表、列、变量或其他对象名称。如果您希望使用保留字作为 ANSI 标准语法中的对象名称,则必须将其括在双引号中,以允许关系引擎(无论是哪个)将该字用作对象而不是用作给定上下文中的关键字。

以下是针对不同 SQL 引擎的一些示例:

order
是一个SQL关键字,用于对结果进行排序(
ORDER BY ...
)

如果您使用 MySQLMaria DB

,请用反引号括起来
INSERT INTO `order` (order_quantity) VALUES ('50');

如果您使用的是 MS SQL Server

,请用括号括起来
INSERT INTO [order] (order_quantity) VALUES ('50');

如果您使用pgSQL

,请用双引号引起来
INSERT INTO "order" (order_quantity) VALUES ('50');

例如,没有什么(除了常识)阻止您创建名为

INSERT
的数据库,其中表
INTO
具有列
VALUE(42)

enter image description here

是的,这个查询有效:

USE [INSERT];
SELECT [INTO].[VALUE(42)] FROM [INTO];
© www.soinside.com 2019 - 2024. All rights reserved.