【问题标题】:Default Order of Table List in Sqlite?Sqlite中表列表的默认顺序?
【发布时间】:2020-04-16 09:22:30
【问题描述】:

sqlite中表格列表的默认顺序是什么?

我有一个来自 syslog-ng (Linux syslog) 的数据库文件。 我实际上想根据它们的创建顺序列出这些表。

SELECT name FROM sqlite_master WHERE type='table'

当我通过 shell 脚本执行此命令时,我会按创建它们的顺序获取表列表。但是,我想确定这是否是保证的行为?或者有没有可能我会以随机顺序获得表格列表? 知道这一点对我来说很重要,因为我想保留最新的表格并删除最旧的表格。

【问题讨论】:

  • 保证 SELECT 语句输出的特定顺序的唯一方法是使用 ORDER BY - 没有其他选择。所以除非 SQLite 存储了创建时间,否则你就不走运了

标签: sql sqlite sql-order-by information-schema


【解决方案1】:

我想确定这是否是保证的行为?或者有没有可能我会以随机顺序获得表格列表?

SQL 表代表无序 行集,这意味着没有任何内在的排序。如果没有order by 子句,则返回行的顺序是undefined,这意味着数据库可以随意对行进行排序。

因此,无法保证在同一查询的后续执行中返回行的顺序是一致的。

就问题而言,sqlite_master 不存储每个表的创建日期——而且我不知道任何其他 SQLite 系统表会保存此信息。

在大多数数据库中,一种选择是在create table 语句上设置触发器并将信息存储在一些自定义表中,但我认为 SQLite 也不支持这种类型的触发器。

【讨论】:

  • 我的问题只是关于表格列表顺序或顺序。我不关心表格中的行。
  • @Usman.3D:是的,我明白了。 sqlite_master 本身就是一个表,所以当你从它select 时,上述限制确实适用。
猜你喜欢
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
  • 2014-01-17
  • 1970-01-01
  • 2012-12-15
  • 2015-04-27
  • 2017-10-30
  • 2012-05-12
相关资源
最近更新 更多