PostgreSQL
两个数据库都支持 ACID 事务,Postgres 提供更强大的事务支持
Postgres 的查询优化器更优秀,详情参考此吐槽:https://news.ycombinator.com/item?id=29455852
易用性 Usability
Postgres 更加严格,而 MySQL 更加宽容:
- MySQL 允许在使用 GROUP BY 子句的 SELECT 语句中包含非聚合列;而 Postgres 则不允许。
- MySQL 默认情况下是大小写不敏感的;而 Postgres 默认情况下是大小写敏感的。
- MySQL 允许 JOIN 来自不同数据库的表;而 Postgres 只能连接单个数据库内部的表,除非使用 FDW 扩展。
1.数据类型差异(对比MySQL)
MySQL中的TEXT数据类型最大存储容量为64KB,而PostgreSQL中的TEXT数据类型没有此限制
MySQL中使用TINYINT、MEDIUMINT和INT表示不同大小的整数,而PostgreSQL使用SMALLINT、INT和BIGINT
2.字符串引号
MySQL中可以使用单引号或双引号来表示字符串,而PostgreSQL只接受单引号来表示字符串
PostgreSQL使用E’…’ 来表示带有转义序列的字符串
3.字符串连接
在MySQL中,可以使用"+“或CONCAT函数来连接字符串,而在PostgreSQL中,可以使用”||"来连接字符串
4.日期和时间函数差异
MySQL使用NOW()来获取当前日期时间,而PostgreSQL使用CURRENT_TIMESTAMP或CURRENT_DATE来获取
MySQL使用DATE_ADD()、DATE_SUB()等函数来添加或减少日期时间,而PostgreSQL使用INTERVAL进行类似操作
5.LIMIT子句差异
在MySQL中,LIMIT子句用于限制结果集中返回的记录数,语法为"LIMIT offset, count",offset为起始位置,count为返回记录数。
在PostgreSQL中,LIMIT子句用于限制结果集中返回的记录数,语法为"LIMIT count OFFSET offset",count为返回记录数,offset为起始位置
6.NULL值处理
在MySQL中,使用"= NULL"或"IS NULL"来检查NULL值,使用"IS NOT NULL"来检查非NULL值
在PostgreSQL中,使用"IS NULL"来检查NULL值,使用"IS NOT NULL"来检查非NULL值
7.自增主键列
在MySQL中,可以使用AUTO_INCREMENT关键字将主键列设置为自增列
在PostgreSQL中,可以使用SERIAL或BIGSERIAL类型来创建自增主键列
8.变量和参数差异
MySQL使用@符号来声明和使用用户变量,使用?来作为占位符来传递参数
PostgreSQL使用冒号(:)来声明和使用变量,使用$1、$2等占位符来传递参数
9.连接查询
在MySQL中,可以使用JOIN、LEFT JOIN、RIGHT JOIN和INNER JOIN来进行不同类型的连接。
在PostgreSQL中,使用JOIN来进行内连接,使用LEFT JOIN和RIGHT JOIN来进行左连接和右连接。
这里列举了一些常见的MySQL和PostgreSQL之间的语法区别,但并不是全部。因此,使用时需要仔细阅读相应的文档以了解具体的差异和特性。