据我所知,从关系数据库理论来看,一个select没有order by条款的陈述应该被认为没有特别的顺序.但实际上在SQL Server和Oracle中(我在这两个平台上进行了测试),如果我从没有order by多次子句的表中查询,我总是以相同的顺序得到结果.这种行为是否可以依赖?有人可以帮忙解释一下吗?
我读过很多SQL代码,似乎开发人员假定默认排序顺序始终存在.例如,在构建HTML选择列表时,他们只会SELECT id, name FROM table发布一个ORDER BY子句.
根据我自己的经验,似乎dbms ORDER BY总是使用FIFO命令数据,如果没有给出子句而没有索引.但是,订单无法保证.但是,如果表没有变化,我从未见过dbms重新排序数据.
如果表没有变化,您是否曾经历过以非确定性顺序选择数据的dbms?
始终放置ORDER BY子句是最佳做法吗?
假设向MySQL数据库发出以下查询:
SELECT * FROM table_name;
Run Code Online (Sandbox Code Playgroud)
请注意,没有 ORDER BY给出任何条款.
我的问题是:
MySQL是否给出了结果集行的顺序保证?
更具体地说,我可以假设行将按插入顺序返回吗?这与行插入表中的顺序相同.
我正在使用plsql过程,我正在使用insert-select语句.我需要以有序的方式插入表中.但我在select sql中使用的顺序不起作用.
在oracle中是否有任何特定的方式以有序的方式插入行?
如果我执行a select * from mytable,将以哪种顺序显示记录?它会采用第一列还是通过某种元数据进行排序?
我正在使用Oracle数据库.