MySQL、Oracle和Postgresql之间一些用法的区别

368 阅读1分钟

最近在一个Python项目中做多个数据库之间(主要是MySQL、Oracle和Postgresql)的sql语句兼容,整理了一下它们之间的区别。

总结如下:

时间区别

MySQLPostgreSQLOracle
时间转字符串date_format(NOW(),’%Y-%m-%d’)to_char(sysdate, ‘YYYY-MM-DD’)同postgresql
字符串转时间str_to_date(str, '%Y-%m-%d')to_date('dateString', '%Y-%m-%d')同postgresql

单双引号

MySQLPostgreSQLOracle
单引号表示值,用于字符串和日期表示值,用于字符串用于字符串或者转义
双引号作用同单引号用于标识表名或列名用于字段名、schema、别名和关键字等。用双引号则严格区分大小写。
反引号用于标识表名或列名

空值

mysql有null和'',而postgresql和Oracle则是null。

limit用法

mysql和postgresql有limit的用法,但Oracle无法直接使用,需要借助内置的rownum去计算行数

SELECT * FROM TABLE_NAME WHERE rownum<20 and rownum>=10;

模式

MySQLPostgreSQLOracle
模式(schema)缺省时为用户名(同数据库名)缺省时,模式为public由一个数据库用户拥有,并与用户名具有相同的名称。Oracle不能新建一个schema,只能通过创建一个用户来新建schema