替代MySQL中的列名"order"

Cyr*_* N. 65 mysql sql

当我创建一个需要用户定义的排序的新表时,我的第一个想法总是转到列名"order".当然,这不是好事,因为它是一个保留字.

您在数据库模型中为该列提供了哪个名称?

谢谢你的帮助.

CIR*_*CLE 79

我用"位置"代替"订单"

  • +1"ORDER BY position"肯定比"ORDER BY sort"更好 - 而"sort"可能与"type"混淆. (7认同)
  • `position` 的问题在于它在某些 SQL 风格中被视为保留字。见[这个](https://www.postgresql.org/docs/8.3/static/sql-keywords-appendix.html)。 (2认同)

eag*_*yst 48

我经常使用简单的同义词,例如"排序".


小智 11

只需在表和列的名称周围添加刻度线',例如:

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

这允许使用特殊字符和关键字,至少这适用于当前版本的MySql.


Nic*_*rey 7

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

select "from" = 'from' from foo
Run Code Online (Sandbox Code Playgroud)

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

select [from] = 'from' from foo
Run Code Online (Sandbox Code Playgroud)

但无论哪种方式,它都会使您的代码变得一团糟(尝试将上面的内容读给某人听。)

如果我需要一个列来对结果进行排序,我通常将其称为“sequence_number”或“sort_sequence”。


Jon*_*ood 5

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

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