对于初学者来说,MySQL和PostgreSQL之间是不是有很大区别[关闭]

Posted

技术标签:

【中文标题】对于初学者来说,MySQL和PostgreSQL之间是不是有很大区别[关闭]【英文标题】:For a beginner, is there much difference between MySQL and PostgreSQL [closed]对于初学者来说,MySQL和PostgreSQL之间是否有很大区别[关闭] 【发布时间】:2011-05-02 20:25:34 【问题描述】:

对于像我这样的初学者,使用基本的选择语句等,mysql 和 PostgreSQL 之间是否有很大区别,还是使用更高级的查询的主要区别?

【问题讨论】:

【参考方案1】:

已经有很多支持 PostgreSQL 的好点,但我要再补充 1 点:

PostgreSQL 拥有the best documentation 我使用过的任何数据库产品。

这就是文档脱颖而出的原因:

它实际上教你 SQL 的基础知识 通俗易懂 有很好的例子 组织得很好 这不仅仅是技术说明的功能列表 到处都是,写得很好

其他供应商应该为他们的尝试和作为文档的假冒感到羞耻。

【讨论】:

每次我必须去查找有关 Sybase 的信息时,我都想哭泣和尖叫。 PostgreSQL 的文档确实令人难以置信。 文档链接在哪里 @WebDeveloper,你试过谷歌吗?这是“PostreSQL 文档”的第一个结果。【参考方案2】:

您经常听到 PostgreSQL 爱好者争辩说它是“真正的”RDBMS,而 MySQL 不是。这种势利对新人来说是危险的,因为它是在多年的特定经历与某种性格类型产生某种摩擦之后产生的。如果您想了解哪些知识对初学者最有利,那么您更有可能发现在野外使用 MySQL 的人比使用 PostgreSQL 的人要多得多。围绕开源软件构建的大型网站在很大程度上选择 MySQL 而不是 PostgreSQL。

就我个人而言,我喜欢 MySQL,因为它符合我的开发风格 - 它只是完成任务。我不使用外键。我绝对不使用存储过程。但是 MySQL 所做的,它做得很好,它做得很快,它同时给了我一种快乐的“好的,这是有道理的”的感觉,我没有使用 PostgreSQL(我已经广泛使用了这两种方法)。 MySQL 有良好的社区支持和优秀的文档。如果您需要进行复制(谁不需要?)MySQL 无疑是赢家,没有任何问题。

如果您切换到容错性较低的数据库,MySQL 允许您执行某些操作可能会导致不良习惯。但这就是问题 - 所有这些都在谈论您需要准备如何立即从 RDBMS X 跳转到 RDBMS Y。以我的经验,这种情况很少发生,而且当它发生时,一个数据库与另一个数据库之间总是存在奇怪的差异。 MySQL 不同于 PostgreSQL,它不同于 Oracle,它不同于 SQL Server,它不同于 sqlite 等等。我已经使用了上面列出的所有 dbs,但我一直在使用的那个,对我来说,最容易、最灵活地完成工作的是 MySQL。

DBA 喜欢放弃 MySQL,就像编程语言爱好者喜欢抨击 php 一样——但他们仍然生存并茁壮成长。这是有原因的——他们只是工作,他们只是把事情做好。但归根结底,您应该玩转所有这些并做出自己的决定。

【讨论】:

您能详细说明一下“把事情做好”吗?这听起来像是在说:这是我遇到并忍受的第一件事。我个人使用 PHP/MySQL 是因为这两个词在我的脑海中是相互关联的。【参考方案3】:

我会向初学者推荐 PostgreSQL,因为它的惊喜比 MySQL 少得多。

以下是人们在使用 MySQL 时遇到的一些问题:

http://blog.amber.org/2005/09/27/least-common-denominator/ http://arstechnica.com/civis/viewtopic.php?f=20&t=92525 http://exortech.com/blog/2009/11/30/weekly-release-53-environment-bug-bites/

同时,PostgreSQL 在大多数情况下完全按照您的预期去做,而且当它做一些意想不到的事情时通常有很好的理由。

【讨论】:

【参考方案4】:

我通常在 MySQL 之前建议 PostgreSQL 的原因是因为 MySQL 远非标准(SQL 方面)。它不支持使用窗口函数(8.4 版本)、公用表表达式(8.4)、CHECK 约束、EXCEPT/MINUS 运算符,甚至 FULL OUTER JOIN... 即使你可能从未听说过在这些词中,您将不得不在某些时候使用这些概念。

我强烈建议您从 PostgreSQL 开始,然后您可以了解什么是“真正的”SQL。然后,您可以决定 MySQL 是否足够。

附:我从 MySQL 开始,我后悔了。我现在使用 PostgreSQL,我喜欢它。

【讨论】:

好,具体的信息。性能结果不利于 PostgreSQL,有时使用轻量级 SQL 是个好主意,特别是如果您不需要额外的膨胀,但您想要仍然是 SQL 的东西,而不是使用 NoSQL 数据存储范例 关于 MySQL 比 PostgreSQL 快的神话已经有好几年了。特别是从 8.3 开始,PostgreSQL 在高事务写入场景中的扩展性更好。当涉及到复杂的语句时,优化器要聪明得多。带有 MyISAM 的 MySQL 可能仍然更快,然后您将失去 DBMS 的所有优势,例如事务和(外键)约束 EXCEPT 是 ANSI 而MINUS 不是。我很少看到需要FULL OUTER JOIN,可以使用更常见的 OUTER 连接和 UNION 来复制它。我还要指出您在谈论 PostgreSQL 8.4+,因为窗口/分析对 PostgreSQL 来说相对较新。 ** The biggest reason to me for a beginner to use PostgreSQL would be because of MySQL's hidden column in the GROUP BY ** 我知道您可以模拟 FULL OUTER JOIN(和除外),但是当您可以使用它们时,语法会更加清晰。您对 PostgreSQL 8.4 的看法是对的,我将编辑我的帖子。 哇!我们已经设法提供了相当多的信息 :) 我认为最大的收获是这两个 SQL 确实针对不同的市场,而且都很好了解。无论您使用哪种统计数据都是您的偏好,无论您在现实世界中使用哪种都取决于您的需求(是的,DBMS 很整洁,有时它是一种矫枉过正。请参阅我对另一个答案的评论 - 许多企业会根据要求同时使用这两种方法) 【参考方案5】:

虽然您刚刚开始,但我认为您会比我为 MySQL 尝试过的工具更喜欢 PostgreSQL 的 pgadminIII GUI 工具。不过,这可能只是我的偏好。

当您掌握了基础知识后,您肯定会想要利用 PostgreSQL 从 8.4 版开始对window functions 的支持

我实际上推荐 PostgreSQL 而不是 MySQL 单独用于窗口函数。请注意,有一些方法可以在 MySQL 中模拟窗口函数。

【讨论】:

我完全同意。递归公用表表达式只是选择 Postgres 而不是 MySQL 的另一个原因。并且更好地遵守标准......并检查约束......和可延迟约束...... 我讨厌 ctrl-c 在 MySQL 中退出控制台。在 psql 中它只是取消当前命令。 缺少窗口功能一直困扰着我:(【参考方案6】:

PostgreSQL 支持更高级的查询,它在复杂查询上表现更好,但更难管理。

MySQL 速度快、易于管理,但您可能会遇到它在高级查询、存储过程等方面的限制。

它们非常相似,我建议从 MySQL 开始,但同时学习 PostgreSQL。

【讨论】:

我最近尝试了 Windows 上 PostgrSQL 9.0 的当前安装程序。安装过程非常轻松,包括管理 GUI pgADMIN。 是的,但是一旦您尝试进行主/从复制,集群.. 它变得棘手:( MySQL 和 PostgreSQL 的安装很简单,让它高效运行是一个痛苦对接。在实际应用程序中(我曾经为大型社交网站运行研发)两者都有用 - 我们使用 PostgreSQL 来处理我们的复杂数据(社交信息、分析),我们使用 MySQL 来处理琐碎的非结构化数据的巨大存储库(用户消息)。MySQL 快速轻松地复制和集群,并且易于维护。

以上是关于对于初学者来说,MySQL和PostgreSQL之间是不是有很大区别[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

抓到一个适合初学者的 [PostgreSQL教程]

构建之法阅读笔记三

PostgreSQL之SQL函数介绍及实践

对于 PostgreSQL 表来说有多大?

《前端之路》之 初识 JavaScript

“王者对战”之 MySQL 8 vs PostgreSQL 10