sql >> Databáze >  >> RDS >> Oracle

rozdíly v postgreSQL mysql Oracle

Před několika lety jsem musel napsat překladový stroj; dáte mu jednu sadu SQL a přeloží se do dialektu aktuálně připojeného enginu. Můj engine funguje na Postgres (AKA PostgreSql), Ingres, DB2, Informix, Sybase a Oracle - oh, a ANTS. Upřímně řečeno, Oracle je můj nejméně oblíbený (více o tom níže)... Bohužel pro vás, mySql a SQL Server nejsou na seznamu (v té době nebyl ani jeden považován za seriózní RDBMS - ale časy se mění).

Bez ohledu na kvalitu nebo výkon motoru - a snadnost vytváření a obnovy záloh - zde jsou hlavní oblasti rozdílu:

  • datové typy
  • omezení
  • neplatné
  • rezervovaná slova
  • nulová sémantika (viz níže)
  • sémantika uvozovek (jednoduché uvozovky, dvojité uvozovky nebo obojí)
  • sémantika dokončení příkazu
  • sémantika funkcí
  • zpracování data (včetně konstantních klíčových slov jako 'nyní' a formátů vstupních/výstupních funkcí)
  • zda jsou povoleny vložené komentáře
  • maximální délky atributů
  • maximální počet atributů
  • sémantika připojení / paradigma zabezpečení.

Aniž bych vás nudil všemi údaji o konverzích, zde je ukázka jednoho datového typu, lvarchar:

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

Největší problém ze všeho je podle mého názoru nulová manipulace; Oracle SILENTLY převádí prázdné vstupní řetězce na hodnoty null. ...Někde, kdysi dávno, jsem četl článek, který někdo napsal o "The Seventeen Meanings of Null" nebo o něčem takovém a skutečným bodem je, že hodnoty null jsou velmi cenné a rozdíl mezi řetězcem null a prázdným řetězcem je užitečné a netriviální! Myslím, že Oracle v tomto udělal obrovskou chybu; žádný z ostatních nemá toto chování (jaké jsem kdy viděl).

Mým druhým nejméně oblíbeným bylo ANTS, protože na rozdíl od všech ostatních VYNUCOVALI hloupá pravidla pro dokonalou syntaxi, která absolutně nikdo nedělá, a i když jsou možná jedinou DB společností, která poskytuje dokonalé dodržování standardu, jsou také královskou bolestí v zadek pro psaní kódu.

Zdaleka můj oblíbený je Postgres; je velmi rychlý v situacích _real_world_, má skvělou podporu a je open source / zdarma.



  1. Instalace ovladačů MySQL JDBC v nástrojích Pentaho Data Integration a BA Server

  2. Použití rozšířených událostí k protokolování zastaralých funkcí používaných v instanci serveru SQL (příklad T-SQL)

  3. Jak se připojit k MySQL a Postgres v živém materializovaném zobrazení

  4. Jak nainstalovat SQLcl na Windows?