练习用的样例数据库

50

我希望能够使用更大的数据库来测试自己在SQL方面的知识。

是否有一个庞大的.sql文件可供使用,以便练习SQL查询?


“Huge”是相当主观的。能否提供一些更客观的指导方针? - Bill the Lizard
还有,“play”是什么意思?您想要一个模式+数据,以便在本地复制并根据需要进行修改吗?还是您只想连接并编写查询? - duffymo
一个庞大的样本数据库;http://www.seanlahman.com/baseball-archive/statistics/ - Ken Vors
我找到了一个包含10到1百万行的虚拟数据库。这是链接:http://www.sample-videos.com/download-sample-sql.php - Miral Viroja
在 https://github.com/cristiscu/employees-test-database 上提供了十几个 SQL 脚本和数据库文件,用于一个小型的雇员数据库。 - Cristian Scutaru
7个回答

41

1
我已经编辑了答案,指定了world.sql文件的位置。 - karim79
2
似乎已经移动到这里:http://dev.mysql.com/doc/index-other.html - cbednarski

6

已添加下载转储文件的链接。希望这样可以。 - miracle173

4

3
为什么不下载英文维基百科?有各种大小的压缩SQL文件,它肯定足够大。主要文章是XML格式,因此将它们插入到数据库中可能会更麻烦,但您可能会发现那里有其他适合您的文件。例如,页面间链接的SQL文件经过压缩后达到了2.3GB。请查看https://en.wikipedia.org/wiki/Wikipedia:Database_download以获取更多信息。Oskar

2
这是我用来学习SQL的内容:employees-db
这是一个带有综合测试套件的示例数据库,用于测试应用程序和数据库服务器。
第三方编辑:
根据launchpad.net的说法,数据库已经转移到了Github上
该数据库包含约300,000个员工记录和280万条薪资记录。导出数据为167 MB,虽然不算巨大,但对于测试而言仍然足够复杂。
数据是由生成器生成的,因此存在一些不一致和微妙的问题。我们决定保留内容并将这些问题作为数据清理练习。

1
如果你想要一个大型真实数据的数据库来进行操作,你可以注册Netflix Prize contest并获得他们的数据访问权,这个数据相当大(几个G的条目)。

第三方编辑

上面的URL不再包含数据集(2016年10月)。Netflix Prize的维基百科页面报告称,有关隐私问题的诉讼已经解决。


Netflix奖竞赛的数据集似乎不再可用。它由17770部电影和480189个匿名用户的5星评级组成。总评分数是100480507;其中有1408395条探测数据是其子集。数据来源:GrandPrize2009_BPC_BigChaos Bob Bell、Martin Chabbert、Michael Jahrer、Yehuda Koren、Martin Piotte、Andreas Töscher和Chris Volinsky组成的获胜团队获得了奖金。附带说明:下载Netflix论坛 - surfmuggle

-6

你想要巨大的吗?

这里有一个小表: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的表格,在我们的表格中不会增加行数。

通过递归乘以我们可以到达的每个表,我们可以得出需要提供每种“类型”所需的行数,我们只需要这些行来测试我们模式中的每个可能的关系。而且我们远远没有达到巨大的程度。

1
我认为他可能正在寻找一些更现实的内容,其中包含模拟数据和关系,而不仅仅是一张庞大的空表。 - TheTXI
1
但是它确实很大,你必须承认这一点 :) - Joey
-1 看起来 OP 正在寻找大量的 SQL 代码用于阅读,而不是重复的单行代码。 - bendewey
1
如果他想测试性能和优化能力,这个方法可以做到。我曾经完全按照这种方式(然后使用随机值进行更新)来测试我对另一个问题的潜在答案。 - tpdi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接