【发布时间】:2011-05-02 20:25:34
【问题描述】:
对于像我这样的初学者,使用基本的选择语句等,MySQL 和 PostgreSQL 之间是否有很大区别,还是使用更高级的查询的主要区别?
【问题讨论】:
标签: mysql database postgresql
对于像我这样的初学者,使用基本的选择语句等,MySQL 和 PostgreSQL 之间是否有很大区别,还是使用更高级的查询的主要区别?
【问题讨论】:
标签: mysql database postgresql
已经有很多支持 PostgreSQL 的好点,但我要再补充 1 点:
PostgreSQL 拥有the best documentation 我使用过的任何数据库产品。
这就是文档脱颖而出的原因:
其他供应商应该为他们的尝试和作为文档的假冒感到羞耻。
【讨论】:
您经常听到 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 一样——但他们仍然生存并茁壮成长。这是有原因的——他们只是工作,他们只是把事情做好。但归根结底,您应该玩转所有这些并做出自己的决定。
【讨论】:
我会向初学者推荐 PostgreSQL,因为它的惊喜比 MySQL 少得多。
以下是人们在使用 MySQL 时遇到的一些问题:
同时,PostgreSQL 在大多数情况下完全按照您的预期去做,而且当它做一些意想不到的事情时通常有很好的理由。
【讨论】:
我通常在 MySQL 之前建议 PostgreSQL 的原因是因为 MySQL 远非标准(SQL 方面)。它不支持使用窗口函数(8.4 版本)、公用表表达式(8.4)、CHECK 约束、EXCEPT/MINUS 运算符,甚至 FULL OUTER JOIN... 即使你可能从未听说过在这些词中,您将不得不在某些时候使用这些概念。
我强烈建议您从 PostgreSQL 开始,然后您可以了解什么是“真正的”SQL。然后,您可以决定 MySQL 是否足够。
附:我从 MySQL 开始,我后悔了。我现在使用 PostgreSQL,我喜欢它。
【讨论】:
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 **
虽然您刚刚开始,但我认为您会比我为 MySQL 尝试过的工具更喜欢 PostgreSQL 的 pgadminIII GUI 工具。不过,这可能只是我的偏好。
当您掌握了基础知识后,您肯定会想要利用 PostgreSQL 从 8.4 版开始对window functions 的支持
我实际上推荐 PostgreSQL 而不是 MySQL 单独用于窗口函数。请注意,有一些方法可以在 MySQL 中模拟窗口函数。
【讨论】:
PostgreSQL 支持更高级的查询,它在复杂查询上表现更好,但更难管理。
MySQL 速度快、易于管理,但您可能会遇到它在高级查询、存储过程等方面的限制。
它们非常相似,我建议从 MySQL 开始,但同时学习 PostgreSQL。
【讨论】: