我想玩一个更大的数据库来测试我对 SQL 的了解。
是否有一个巨大的 .sql 可以用来处理 SQL 查询?
你可以试试经典的MySQL 世界数据库。
world.sql 文件可在此处下载:
http://dev.mysql.com/doc/index-other.html
只需向下滚动到示例数据库,您就会找到它。
这是一个在线数据库,但您可以尝试使用 stackoverflow 数据库: https ://data.stackexchange.com/stackoverflow/query/new
你也可以在这里下载它的转储:
查看Microsoft SQL Server 社区项目和示例的 CodePlex
在上面的链接之上,您可能会查看
为什么不下载英文维基百科?有各种大小的压缩 SQL 文件,当然对你来说应该足够大
主要文章是 XML,因此将它们插入数据库有点问题,但您可能会发现那里还有其他适合您的文件。例如,页间链接 SQL 文件是 2.3GB 压缩的。查看https://en.wikipedia.org/wiki/Wikipedia:Database_download了解更多信息。
奥斯卡
这是我用来学习 sql 的:employees-db
这是一个带有集成测试套件的示例数据库,用于测试您的应用程序和数据库服务器
根据 launchpad.net,数据库已移至 github。
该数据库包含大约 300,000 条员工记录和 280 万条工资条目。导出数据为 167 MB,虽然不算大,但对于测试来说足够重。
数据是生成的,因此存在不一致和微妙的问题。我们没有删除它们,而是决定保持内容不变,并将这些问题用作数据清理练习。
如果你想要一个真实数据的大型数据库,你可以报名参加Netflix Prize 竞赛并访问他们的数据,这些数据非常大(几场参赛作品)。
上面的 URL 不再包含数据集(2016 年 10 月)。关于 Netflix Prize 的维基百科页面报道称,关于隐私问题的诉讼已经解决。
你想要巨大的吗?
这是一个小表: create table foo (id int not null primary key auto_increment, crap char(2000));
插入 foo(废话) 值 ('');
-- 每次运行下一行时, foo 中的行数加倍。插入 foo( 废话 ) select * from foo;
再运行二十次,你就有超过一百万行可以玩。
是的,如果他正在寻找要导航的关系,这不是答案。但是,如果他的意思是测试性能和优化能力,这将做到这一点。我正是这样做(然后用随机值更新)来测试我对另一个问题的潜在答案。(并且没有回答,因为我想不出比那个提问者更好的表现。)
如果他要求“复杂”,我会有不同的答案。对我来说,“巨大”意味着“很多行”。
因为你不需要巨大的东西来玩表格和关系。考虑一个表,它本身没有可以为空的列。可以有多少种不同的行?只有一个,因为所有列都必须有一些值,因为没有一个可以为空。
每个可为空的列乘以可能的不同类型的行数:该列为空的行,不为空的行。
现在考虑表格,而不是孤立地考虑。考虑一个作为子表的表:对于每个对父表具有 FK 的子表,即多对一,可以有 0、1 或多个子表。所以我们乘以我们在上一步中得到的计数的三倍(零没有行,正好一行,多行两行)。对于父母是很多人的任何祖父母,另外三个。
对于多对多关系,我们可以没有关系、一对一、一对多、多对一或多对多。因此,对于我们可以从表格中到达的每个多对多,我们将行乘以九——或者就像两个一对多。如果多对多也有数据,我们乘以可空性数。
我们无法在图表中访问的表——那些我们没有直接或间接 FK 的表,不要将表中的行相乘。
通过递归地乘以我们可以到达的每个表,我们可以得出提供每种“种类”所需的行数,并且我们只需要那些来测试我们模式中每个可能的关系。而且我们离巨大还差得很远。