49

我想玩一个更大的数据库来测试我对 SQL 的了解。

是否有一个巨大的 .sql 可以用来处理 SQL 查询?

4

7 回答 7

40

你可以试试经典的MySQL 世界数据库

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

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

只需向下滚动到示例数据库,您就会找到它。

于 2009-04-05T16:38:00.067 回答
6

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

你也可以在这里下载它的转储:

https://archive.org/download/stackexchange

于 2015-02-01T00:45:55.167 回答
4

查看Microsoft SQL Server 社区项目和示例的 CodePlex

第三方编辑

在上面的链接之上,您可能会查看

于 2009-04-05T16:40:38.377 回答
3

为什么不下载英文维基百科?有各种大小的压缩 SQL 文件,当然对你来说应该足够大

主要文章是 XML,因此将它们插入数据库有点问题,但您可能会发现那里还有其他适合您的文件。例如,页间链接 SQL 文件是 2.3GB 压缩的。查看https://en.wikipedia.org/wiki/Wikipedia:Database_download了解更多信息。

奥斯卡

于 2009-04-05T17:24:54.510 回答
2

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

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

第三方编辑

根据 launchpad.net,数据库已移至 github

该数据库包含大约 300,000 条员工记录和 280 万条工资条目。导出数据为 167 MB,虽然不算大,但对于测试来说足够重。

数据是生成的,因此存在不一致和微妙的问题。我们没有删除它们,而是决定保持内容不变,并将这些问题用作数据清理练习。

于 2013-04-15T23:35:38.813 回答
1

如果你想要一个真实数据的大型数据库,你可以报名参加Netflix Prize 竞赛并访问他们的数据,这些数据非常大(几场参赛作品)。

第三方编辑

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

于 2009-04-05T16:48:00.713 回答
-6

你想要巨大的吗?

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

插入 foo(废话) 值 ('');

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

再运行二十次,你就有超过一百万行可以玩。

是的,如果他正在寻找要导航的关系,这不是答案。但是,如果他的意思是测试性能和优化能力,这将做到这一点。我正是这样做(然后用随机值更新)来测试我对另一个问题的潜在答案。(并且没有回答,因为我想不出比那个提问者更好的表现。)

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

因为你不需要巨大的东西来玩表格和关系。考虑一个表,它本身没有可以为空的列。可以有多少不同的行?只有一个,因为所有列都必须有一些值,因为没有一个可以为空。

每个可为空的列乘以可能的不同类型的行数:该列为空的行,不为空的行。

现在考虑表格,而不是孤立地考虑。考虑一个作为子表的表:对于每个对父表具有 FK 的子表,即多对一,可以有 0、1 或多个子表。所以我们乘以我们在上一步中得到的计数的三倍(零没有行,正好一行,多行两行)。对于父母是很多人的任何祖父母,另外三个。

对于多对多关系,我们可以没有关系、一对一、一对多、多对一或多对多。因此,对于我们可以从表格中到达的每个多对多,我们将行乘以九——或者就像两个一对多。如果多对多也有数据,我们乘以可空性数。

我们无法在图表中访问的表——那些我们没有直接或间接 FK 的表,不要将表中的行相乘。

通过递归地乘以我们可以到达的每个表,我们可以得出提供每种“种类”所需的行数,并且我们只需要那些来测试我们模式中每个可能的关系。而且我们离巨大还差得很远。

于 2009-04-05T16:42:55.030 回答