sql >> データベース >  >> RDS >> Oracle

postgreSQLmysqloracleの違い

    数年前、私は翻訳エンジンを書かなければなりませんでした。 1セットのSQLをフィードすると、現在接続されているエンジンの方言に変換されます。私のエンジンは、Postgres(AKA PostgreSql)、Ingres、DB2、Informix、Sybase、Oracle、そしてANTSで動作します。率直に言って、Oracleは私の最も嫌いなものです(詳細は以下を参照)...残念ながら、mySqlとSQL Serverはリストに含まれていません(当時、どちらも深刻なRDBMSとは見なされていませんでしたが、時代は変わります)。

    エンジンの品質やパフォーマンス、およびバックアップの作成と復元の容易さに関係なく、主な違いは次のとおりです。

    • データ型
    • 制限
    • 無効
    • 予約語
    • nullセマンティクス(以下を参照)
    • 引用セマンティクス(一重引用符'、二重引用符 "、またはそのいずれか)
    • ステートメント完了セマンティクス
    • 関数のセマンティクス
    • 日付処理(「now」などの定数キーワードや入出力関数形式を含む)
    • インラインコメントが許可されているかどうか
    • 属性の最大長
    • 属性の最大数
    • 接続セマンティクス/セキュリティパラダイム。

    すべての変換データに飽きることなく、1つのデータ型lvarcharのサンプルを次に示します。

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

    私の見解では、すべての最大の問題はヌル処理です。 Oracleは、空白の入力文字列をnull値にサイレントに変換します。 ...どこかで、ずっと前に、誰かが「ヌルの17の意味」などについて行った記事を読みました。本当のポイントは、ヌルは非常に価値があり、ヌル文字列と空の文字列の違いは便利で自明ではありません!オラクルはこれについて大きな間違いを犯したと思います。他の誰もこの振る舞いをしていません(私が今まで見たことがあります)。

    私の2番目に嫌いなのはANTSでした。他のすべてとは異なり、ANTSは、他の誰も絶対にやらない完璧な構文の愚かなルールを強制しました。また、標準に完全に準拠する唯一のDB企業である可能性がありますが、コードを書くためのお尻。

    私のお気に入りはPostgresです。 _real_world_の状況では非常に高速で、優れたサポートがあり、オープンソース/無料です。



    1. Oracleclob列で特定の文字列を検索します

    2. Oracleセッションの日付形式を確認する方法

    3. システム統計関数を使用してSQLServer統計情報を取得する方法

    4. NodeJSMySQLダンプ