Oracle
 sql >> база данни >  >> RDS >> Oracle

PostgreSQL mysql оракул разлики

Преди няколко години трябваше да напиша машина за превод; захранвате го с един набор sql и той се превежда на диалекта на текущо свързания двигател. Моят двигател работи на Postgres (известен още като PostgreSql), Ingres, DB2, Informix, Sybase и Oracle - о, и ANTS. Честно казано, Oracle е най-малко любимият ми (повече за това по-долу)... За ваше съжаление, mySql и SQL Server не са в списъка (по това време нито един от тях не се смяташе за сериозна RDBMS - но времената се променят).

Без оглед на качеството или производителността на двигателя - и лекотата на правене и възстановяване на резервни копия - ето основните области на разлика:

  • типове данни
  • ограничения
  • невалидни
  • запазени думи
  • нулева семантика (вижте по-долу)
  • семантика на кавички (единични кавички, двойни кавички или едно от двете)
  • семантика на завършване на оператор
  • семантика на функциите
  • обработка на дата (включително постоянни ключови думи като 'сега' и формати за вход/изход)
  • дали са разрешени вградени коментари
  • максимални дължини на атрибута
  • максимален брой атрибути
  • семантика на връзката/парадигма за сигурност.

Без да ви отегчавам с всички данни за конверсията, ето извадка за един тип данни, lvarchar:

oracle=varchar(%x) sybase=text db2="long varchar" informix=lvarchar postgres=varchar(%x) ants=varchar(%x) ingres=varchar(%x,%y)

Най-голямата сделка от всичко, според мен, е нулевата обработка; Oracle Мълчаливо преобразува празните входни низове в нулеви стойности. ...Някъде, преди много време, прочетох запис, който някой беше направил за "Седемнадесетте значения на нула" или нещо подобно и истинската идея е, че нулевите стойности са много ценни и разликата между нулев низ и празен низ е полезно и нетривиално! Мисля, че Oracle направи огромна грешка в това; никой от другите няма това поведение (което някога съм виждал).

Вторият ми най-малко фаворит беше ANTS, защото за разлика от всички останали, те ПРИЛОЖИХА глупавите правила за перфектен синтаксис, които абсолютно никой друг не прави, и макар че може да са единствената DB компания, която осигурява перфектно придържане към стандарта, те също са кралска болка в дупето за писане на код.

Далеч моят любим е Postgres; много е бърз в ситуации от _реалния_свят_, има страхотна поддръжка и е с отворен код / ​​безплатен.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Премахване на водещи нули от varchar sql developer

  2. Какъв е еквивалентът на varchar(max) в Oracle?

  3. Функция POWER() в Oracle

  4. ORA-04021:възникна изчакване при изчакване за заключване на обекта

  5. 12c колони IDENTITY