Postgres的哪些特性在MySQL中不可用?
是否有一些您无法轻易做到的疑问?或者主要区别在于您存储数据的方式?
答案 0 :(得分:4)
我想说最大的两个差异是WITH queries和window functions - 标准SQL功能(来自SQL-99标准),这些功能在其他主要SQL实现中也可用(例如Oracle ,DB2,SQL Server,...),但不在MySQL中。
当然有很多小事,例如:
MySQL有一些非标准的便利,比如PostgreSQL缺少的INSERT IGNORE
和REPLACE
。 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的稳定版本中实现。