Найти в Дзене
ГАУС IT

Несколько отличий postgres от oracle

Всем привет. В этой статье мы посмотрим на отличия двух СУБД это Oracle и Postgres, но сразу сделаю оговорку мы рассмотрим не все отличия, а лишь небольшую часть, с чем сталкивался я и что чаще встречается. Типы данных Первое отличие это типы данных. Вот не большая часть типов данных которые отличаются: NVARCHAR2 => VARCHAR VARCHAR2 => VARCHAR CLOB => TEXT NUMBER => NUMERIC Если вы хотите посмотреть полный список то переходите по ссылке. Функции и синтаксис В Oracle можно использовать 2 функции и nvl и coalesce, о которых мы рассказывали в предыдущем уроке, а в Postgres все nvlнадо заменить на coalesce nvl => coalesce Если в Oracle синтаксис не такой жесткий и мы можем в delete опустить слово from, то вот в Postgres так делать нельзя delete TABLE_NAME => delete from TABLE_NAME Вот еще пару различий в синтаксисе: rownum => ROW_NUMBER() OVER(ORDER BY столбец сортировки) from DUAL; => ; FLOOR(sysdate - TO_DATE('01011900','ddmmyyyy')) => CURRENT_DATE - TO_DATE(
Оглавление

Всем привет.

В этой статье мы посмотрим на отличия двух СУБД это Oracle и Postgres, но сразу сделаю оговорку мы рассмотрим не все отличия, а лишь небольшую часть, с чем сталкивался я и что чаще встречается.

Типы данных

Первое отличие это типы данных. Вот не большая часть типов данных которые отличаются:

NVARCHAR2 => VARCHAR
VARCHAR2 => VARCHAR
CLOB => TEXT
NUMBER => NUMERIC

Если вы хотите посмотреть полный список то переходите по ссылке.

Функции и синтаксис

В Oracle можно использовать 2 функции и nvl и coalesce, о которых мы рассказывали в предыдущем уроке, а в Postgres все nvlнадо заменить на coalesce

nvl => coalesce

Если в Oracle синтаксис не такой жесткий и мы можем в delete опустить слово from, то вот в Postgres так делать нельзя

delete TABLE_NAME => delete from TABLE_NAME

Вот еще пару различий в синтаксисе:

rownum => ROW_NUMBER() OVER(ORDER BY столбец сортировки)
from DUAL; => ;
FLOOR(sysdate - TO_DATE('01011900','ddmmyyyy')) => CURRENT_DATE - TO_DATE('01011900','ddmmyyyy')

В следующем примере ситуация такова, что если в Oracle мы в UPDATE будем использовать алеасы, можно сказать даже избыточные, то в Postgres лучше так не делать.

UPDATE TABLE_NAME en set en.NAME = ... => UPDATE TABLE_NAME set NAME = ...

А вот в подзапросах на Postgres алеас обязателен.

FROM (SELECT ...) => FROM (SELECT ...) foo

Это вроде все различия, что я хотел вам показать.

Если статья была Вам полезна, ставьте пальцы вверх и подписывайтесь. Оставляйте свои пожелания и вопросы в комментариях, с удовольствием отвечу.

#it #sql #обучение #курс #программирование