我希望能够使用更大的数据库来测试自己在SQL方面的知识。
是否有一个庞大的.sql文件可供使用,以便练习SQL查询?
我希望能够使用更大的数据库来测试自己在SQL方面的知识。
是否有一个庞大的.sql文件可供使用,以便练习SQL查询?
这是一个在线数据库,但你可以尝试使用stackoverflow数据库:
https://data.stackexchange.com/stackoverflow/query/new你也可以在这里下载它的备份文件:
https://archive.org/download/stackexchange请查看CodePlex上的Microsoft SQL Server社区项目和样例
除了上面的链接,您还可以查看:
上面的URL不再包含数据集(2016年10月)。Netflix Prize的维基百科页面报告称,有关隐私问题的诉讼已经解决。
你想要巨大的吗?
这里有一个小表:create table foo (id int not null primary key auto_increment, crap char(2000));
insert into foo(crap) values ('');
-- 每次运行下一行,foo中的行数就会翻倍。 insert into foo( crap ) select * from foo;
再运行二十次,你就有超过一百万行可以使用了。
是的,如果他正在寻找关系导航的外观,那么这不是答案。但是,如果他所说的“巨大”是指测试性能和优化能力,那么这将做到。我正是这样做的(然后用随机值进行更新),以测试我对另一个问题的潜在答案。 (并没有回答它,因为我无法提供比那个问答者更好的性能。)
如果他要求“复杂”,我会给出不同的答案。对我来说,“巨大”意味着“很多行”。
因为你不需要巨大的表和关系来玩。考虑一个表,它本身没有可空列。可能有多少不同的类型的行?只有一种,因为所有列都必须具有某些值,因为没有一个可以为空。
每个可空列都会使得可能的行数翻倍:一个是该列为空,另一个是该列不为空。
现在考虑表格,不是孤立的。考虑一个作为子表格的表格:对于每个具有指向父表格的FK的子表格,即多对一关系,可以有0、1或多个子表格。因此,我们将在前一步骤中得到的计数乘以三倍(零行对应于零,恰好一个对应于一,多个对应于两行)。对于任何父表格是多对一关系的祖父表格,再乘以三。
对于多对多关系,我们可以没有关系,一对一,一对多,多对一或多对多。因此,对于从表格中可以到达的每个多对多关系,我们将行数乘以九——或者就像两个一对多关系。如果多对多还有数据,则乘以可空性数字。
我们无法在图形中到达的表格——那些我们没有直接或间接FK的表格,在我们的表格中不会增加行数。
通过递归乘以我们可以到达的每个表,我们可以得出需要提供每种“类型”所需的行数,我们只需要这些行来测试我们模式中的每个可能的关系。而且我们远远没有达到巨大的程度。