mysql - postgreSQL mysql oracle 差异

标签 mysql oracle postgresql

我必须开始构建数据库项目的架构,但我真的不知道引擎之间的区别。

谁能解释一下这三种引擎各自的优缺点?我们必须从中选择一个,而我对它们的唯一了解是:

  • Mysql 和 Postgres:
    • 免费但不如 oracle
    • Mysql 作为安全问题(这是真的吗?)
  • 甲骨文:
    • 世界上最好的数据库引擎

有人可以清除它们之间的其他差异吗?这是一个低预算的中/大型(我们考虑大约 100 到 200 table )项目,您会选择什么?预算更高?

最佳答案

几年前我不得不写一个翻译引擎;你给它提供一组 sql,它翻译成当前连接引擎的方言。我的引擎适用于 Postgres(又名 PostgreSql)、Ingres、DB2、Informix、Sybase 和 Oracle - 哦,还有 ANTS。坦率地说,Oracle 是我最不喜欢的(更多内容见下文)...不幸的是,mySql 和 SQL Server 不在列表中(当时两者都未被视为重要的 RDBMS - 但时代在改变)。

不考虑引擎的质量或性能——以及制作和恢复备份的难易程度——以下是主要的区别:

  • 数据类型
  • 限制
  • 残疾人
  • 保留字
  • 空语义(见下文)
  • 引用语义(单引号 '、双引号 "或两者之一)
  • 语句完成语义
  • 函数语义
  • 日期处理(包括常量关键字,如“now”和输入/输出函数格式)
  • 是否允许行内评论
  • 最大属性长度
  • 最大属性数
  • 连接语义/安全范例。

为了让您对所有转换数据感到厌烦,这里有一个数据类型 lvarchar 的示例:

oracle=varchar(%x) sybase=text db2="long varchar"informix=lvarchar postgres=varchar(%x) ants=varchar(%x) ingres=varchar(%x,%y)

在我看来,最重要的是空值处理; Oracle SILENTLY 将空白输入字符串转换为空值。 ...很久以前的某个地方,我读了一篇关于“空值的十七种含义”或类似内容的文章,真正的重点是空值非常有值(value),空字符串和空字符串之间的区别是有用且不平凡!我认为 Oracle 在这一点上犯了一个巨大的错误;其他人都没有这种行为(我见过)。

我第二不喜欢的是 ANTS,因为与其他所有公司不同,他们强制执行愚蠢的完美语法规则,绝对没有其他人这样做,虽然他们可能是唯一一家提供完美遵守标准的数据库公司,但他们也是为之编写代码实在是太痛苦了。

我最喜欢的是 Postgres;它在 _real_world_ 情况下非常快,有很好的支持,并且是开源/免费的。

关于mysql - postgreSQL mysql oracle 差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/216601/

相关文章:

php - 为什么循环在第一个循环中中断

php - OpenCart 用户数据库 [BLOB - 198B]

oracle - ClassNotFoundException使用Jetty/Gradle加载Oracle驱动程序

mysql - 如何使用 Tableau 处理非常大的数据

java - 在 Java 中创建 bytea 数组以传递给 Postgresql 存储过程

python - 如何管理数据库连接,尤其是在多线程的情况下

java - Oozie 无法通过 Cloudera Manager 创建 MySQL 数据库 : java. lang.ClassNotFoundException : com. mysql.jdbc.Driver

sql - 一个表 ORACLE SQL 中多个字段的不同值

sql - 如何使用 SQL 在字符串中获取奇数字符

postgresql - 查找一周的前一天