要创建表使用运算符名称,但需要正确的语法

问题描述 投票:1回答:3
CREATE TABLE sales (
ID INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
[Item Type] VARCHAR(30) NULL,
[Sales Channel] VARCHAR(30) NULL,
[Order Priority] VARCHAR(30) NULL,
[Order Date] DATE NULL,
[Order ID] DECIMAL NULL,
[Ship Date] DATE NULL
)

[亲爱的,请介绍如何正确使用表格列的语法:例如项目类型-这里“类型”已经存在于mysql中,销售渠道-这里“通道”已经存在于mysql中作为操作员名称。但我需要用作表的列名。谢谢!

mysql sql
3个回答
2
投票

如果表名或列​​名是keyword包含空格,而您仍要使用该名称,请在反引号'`'之间加引号。因此您的查询应如下所示:

CREATE TABLE sales (
    ID INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    `Item Type` VARCHAR(30) NULL,
    `Sales Channel` VARCHAR(30) NULL,
    `Order Priority` VARCHAR(30) NULL,
    `Order Date` DATE NULL,
    `Order ID` DECIMAL NULL,
    `Ship Date` DATE NULL
);

在SQL Fiddle上尝试一下:http://sqlfiddle.com/#!9/0332f0


1
投票

有不同的方法可以做到这一点。

  1. 您可以使用双引号(“)来跳过保留关键字。
  2. 您可以使用反引号(`)
  3. 您可以在模式名称前加上前缀(仅用于表),例如myschema.Table。

一个很好的参考是here


0
投票

固定您的列名,这样就不必对其进行转义!这将使所有后续工作变得更加简单:

CREATE TABLE sales (
    SalesID INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    ItemType VARCHAR(30) NULL,
    SalesChannel VARCHAR(30) NULL,
    OrderPriority VARCHAR(30) NULL,
    OrderDate DATE NULL,
    OrderID DECIMAL NULL,
    ShipDate DATE NULL
);

我建议将表名用于id。另外,您正在使用没有精度或小数位数的DECIMAL。高度不推荐。不依赖于数据库默认值(您甚至知道它们是什么吗?)。

您还应该包括外键引用。因此,您应该对订单表具有外键约束。

© www.soinside.com 2019 - 2024. All rights reserved.