2010-01-01 23 views

回答

4

我想说两个最大的区别是WITH querieswindow functions - 其他主要SQL实现(如Oracle,DB2,SQL Server等)中也可用的标准SQL功能(来自SQL-99标准)。 ..),但不在MySQL中。当然

很多小事情,例如:

MySQL有一些非标准的便利设施,如INSERT IGNOREREPLACE,这PostgreSQL的缺乏。 PostgreSQL的存储过程和触发器可以使用多种语言中的任何一种(比如Python,Java,Perl,...),MySQL(比如DB2)在这里使用SQL'03标准语法。除了标准之外,PostgreSQL还有许多独特的数据类型(包括用户定义类型和多维数组),MySQL有无符号整数。

+1

关于无符号整数:这些可以很容易地使用PostgreSQL中的CHECK约束建模。 – Nate 2010-01-06 00:52:40

0

Postgres的哪些特定功能在MySQL中不可用?

许多,但最重要的是:当插入错误的数据错误提出---客户端无法禁用完整性检查,而不是:

mysql> create table foo (id tinyint not null check id > 100); 
Query OK, 0 rows affected (0.01 sec) 

mysql> insert into foo values (null), ('abc'), (128), ('1'); 
Query OK, 4 rows affected, 3 warnings (0.00 sec) 
Records: 4 Duplicates: 0 Warnings: 2 

mysql> select * from foo; 
+-----+ 
| id | 
+-----+ 
| 0 | 
| 0 | 
| 127 | 
| 1 | 
+-----+ 
4 rows in set (0.00 sec) 

是否有一些问题会让你无法轻松完成?

复杂的查询,有很多加入的:PostgreSQL的查询优化器大大更好,嵌套循环不是唯一可用的连接算法。此外,它可以使查询的FROM-部分中的子查询变平。这些目前已经在MySQL的稳定版本中实现。