练习样本数据库

时间:2009-04-05 16:33:02

标签: sql test-data sample-data

我想使用更大的数据库来测试我对SQL的了解。

那里有一个巨大的.sql,我可以用它来玩SQL查询吗?

7 个答案:

答案 0 :(得分:37)

您可以尝试使用经典MySQL world database

可以在此处下载world.sql文件:

http://dev.mysql.com/doc/index-other.html

只需向下滚动到示例数据库即可找到它。

答案 1 :(得分:5)

这是一个在线数据库,但您可以尝试使用stackoverflow数据库: http://data.stackexchange.com/stackoverflow/query/new

您也可以在此处下载其转储:

https://archive.org/download/stackexchange

答案 2 :(得分:4)

查看Microsoft SQL Server Community Projects & Samples

的CodePlex

第三方编辑

在上面的链接之上,你可能会看到

答案 3 :(得分:3)

为什么不下载英文维基百科?有各种大小的压缩SQL文件,它应该足够大了

主要文章是XML,因此将它们插入到数据库中是一个问题,但您可能会发现其他文件适合您。例如,页面间链接SQL文件是2.3GB压缩。有关详细信息,请查看https://en.wikipedia.org/wiki/Wikipedia:Database_download

奥斯卡

答案 4 :(得分:2)

这是我用来学习sql:employees-db

  

这是一个带有集成测试套件的示例数据库,用于测试   您的应用程序和数据库服务器

第三方编辑

根据launchpad.net的database has moved to github

  

该数据库包含约300,000个员工记录,包含280万个   工资条目。导出数据是167 MB,这不是很大,但是   对于测试而言,这非常重要。

     

生成了数据,因此存在不一致性   微妙的问题。而不是删除它们,我们决定离开   内容未受影响,并将这些问题用作数据清理练习。

答案 5 :(得分:1)

如果你想要一个真实数据的大数据库,你可以注册Netflix Prize contest并访问他们的数据,这是非常大的(一些条目)。

第三方编辑

上面的URL不再包含数据集(2016年10月)。 wikipedia page about the Netflix Prize报告了有关隐私问题的法律诉讼已经解决。

答案 6 :(得分:-6)

你想要巨大吗?

这是一个小表:create table foo(id int not null primary key auto_increment,crap char(2000));

插入foo(crap)值('');

- 每次运行下一行时,foo中的行数加倍。 插入foo(crap)select * from foo;

再跑20次,你有超过一百万行可以玩。

是的,如果他正在寻找导航关系的外观,这不是答案。但是,如果通过巨大的意义来测试性能和他的优化能力,那么就可以做到这一点。我做了这个(然后用随机值更新)来测试我对另一个问题的潜在答案。 (并没有回答,因为我无法提出比提问者更好的表现。)

如果他要求“复杂”,我会有一个不同的答案。对我来说,“巨大”意味着“很多行”。

因为你不需要巨大的玩桌子和关系。单独考虑一个表,没有可空列。可以有多少行行?只有一个,因为所有列都必须有一些值,因为none都不能为空。

每个可空列可以将可能行的不同种类的数量乘以2:该列为空的行,不为空的行。

现在考虑一下这个表,而不是孤立的。考虑一个子表的表:对于父对象具有FK的每个子对象,该对象是多对一的,可以有0,1个或多个子对象。所以我们乘以前一步得到的计数的三倍(没有行为零,一行为一,两行为多)。对于父母是多少的祖父母,另外三个。

对于多对多关系,我们可以没有关系,一对一,一对多,多对一或多对多。因此,对于每个多对多,我们可以从表中的图表中找到,我们将行乘以9 - 或者就像两个一对一到manys。如果多对多也有数据,我们乘以可空性数。

我们无法在图表中显示的表格 - 我们没有直接或间接FK的表格,不会将表格中的行相乘。

通过递归地乘以我们可以到达的每个表,我们可以得出提供每种“种类”之一所需的行数,并且我们只需要测试我们的模式中每个可能的关系。而且我们还远远不够。