PostgreSQL特定的SQL关键字

时间:2010-01-01 21:21:08

标签: mysql postgresql comparison

Postgres的哪些特性在MySQL中不可用?

是否有一些您无法轻易做到的疑问?或者主要区别在于您存储数据的方式?

2 个答案:

答案 0 :(得分:4)

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

当然有很多小事,例如:

MySQL有一些非标准的便利,比如PostgreSQL缺少的INSERT IGNOREREPLACE。 PostgreSQL的存储过程和触发器可以使用多种语言中的任何一种(如Python,Java,Perl等),MySQL(如DB2)在这里使用SQL'03标准语法。

同样在标准之外,PostgreSQL有许多特殊的数据类型(包括用户定义的类型和多维数组),MySQL有无符号整数。

答案 1 :(得分: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的稳定版本中实现。