我想使用更大的数据库来测试我对SQL的了解。
那里有一个巨大的.sql,我可以用它来玩SQL查询吗?
答案 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
您也可以在此处下载其转储:
答案 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的表格,不会将表格中的行相乘。
通过递归地乘以我们可以到达的每个表,我们可以得出提供每种“种类”之一所需的行数,并且我们只需要测试我们的模式中每个可能的关系。而且我们还远远不够。