sql-MySQL中列名“ order”的替代

当我创建一个需要用户定义排序的新表时,我的第一个主意总是转到列名“ order”。 当然,这不是好字,因为它是保留字。

您要为数据库模型中的该列指定哪个名称?

谢谢你的帮助。

Cyril N. asked 2019-10-15T11:30:31Z
5个解决方案
72 votes

我用“位置”代替“顺序”

CIRCLE answered 2019-10-15T11:31:05Z
47 votes

我经常使用简单的同义词,例如“ sort”。

eageranalyst answered 2019-10-15T11:30:42Z
11 votes

只需在表和列的名称周围添加对号`,例如:

  CREATE TABLE `order`
  (
         `order#` char(4) NOT NULL,
         `ord_date` DATE,
         Primary Key (`order#`)
  )
  ENGINE=InnoDB;

这允许使用特殊字符和关键字,至少这对于当前版本的MySql有效。

Chris answered 2019-10-15T11:31:35Z
4 votes

至少,SQL Server允许您使用方括号括起来的关键字,尽管我同意这不是一个好主意。

我相信上一次这样做时,我使用了SortOrder作为名称。 但是,我经常使用反映该表的前缀,例如UsrSortOrder,因此这并不总是一个问题。

Jonathan Wood answered 2019-10-15T11:32:06Z
3 votes

在ANSI / ISO SQL中,当用作列名时,双引号分隔关键词。 字符串文字用单引号分隔:

select "from" = 'from' from foo

Microsoft SQL Server还允许使用方括号代替双引号:

select [from] = 'from' from foo

但是,无论哪种方式,它都会使您的代码更糟(请尝试将以上内容读给别人。)

如果我需要一列用于排序结果,通常将其称为“ sequence_number”或“ sort_sequence”。

Nicholas Carey answered 2019-10-15T11:32:51Z
translate from https://stackoverflow.com:/questions/4716201/alternative-to-column-name-order-in-mysql