mysql和pgsql的语法区别如下:
1. 数据类型
- 在pgsql中,除了和mysql相同的数据类型外,还有其他数据类型,如范围类型(range)、条件类型(condition)、图像类型(image)等,用于不同的应用场景。
- 在pgsql中,整数数据类型有INT2、INT4、INT8等等。而mysql只有INT。
- 在pgsql中,浮点数数据类型有FLOAT4、FLOAT8等等。而mysql只有FLOAT、DOUBLE。
- 在pgsql中,日期时间类型可以直接存储时区信息。而mysql需要单独存储时区。
2. 函数
- PgSQL支持预定义的复杂数据类型(例如范围类型),而 MySQL 不支持。
- PgSQL 给函数的实参预留了名字空间,可以通过这种方式来指定参数。同时,PgSQL(psql)允许在调用函数时使用语义上的标签(标记),从而更精确地指定函数参数。
- PgSQL 允许函数有多个返回值,也可以在一组参数中返回一个复合值,而一个 MySQL 函数只能返回一个值。
3. 数据库工具
- MySQL比PgSQL更适合处理模式更简单和查询的读取约束遵循主流的业界标准的一些场合。
4. 外键
- PgSQL先定义数据类型,然后定义主/外键。而 MySQL是相反的,先定义主/外键,再定义数据类型。
5. 事务处理
- MySQL中,两个事务同时更新同一记录时,一个事务会等待另一个事务完成。而在PgSQL中,两个事务同时更新同一记录时,其中一个事务将被阻止,需要手动解锁才能保持事务。
6. 条件控制语句
- PostgreSQL中可以使用一些比较高级的技术,如CASE 表达式、操作符重载、复杂条件控制等。而MySQL运算符不支持重载,转化和比较限制比较明显。
7. 语法和规范
- MySQL中的语法比较松散,更加灵活,允许在不同的情况下使用不同的语法,而PgSQL更加严格,更加遵循SQL标准。
- PgSQL使用一组LO族函数来操作大型二进制数据对象LOB(即Large OBject), 这些函数在功能和语句方面都有所改进。
总结:
当多个项目类型上较为紧密,数据库(DBMS)开销较大时,PgSQL更具优势,适合大多数项目类型。但是,如果处理原始数据或其它用途,例如存档或网页应用程序时,MySQL会更适合大多数项目类型。此外,对于大数据挖掘和分析等应用,通常推荐使用PgSQL。
区别有:在pgsql上的功能实现比mysql严谨,对表的连接支持更加完整;pgsql的优化器功能完整,支持索引类型多,而mysql的优化器比较简单,适用于简单的查询操作