1

SQL は標準化されることを意図していますが、異なるデータベースでは異なる方法で実装されていることを読んだことがあります。データベースには MySQL しか使用したことがありません。

私が知りたいのは、他のデータベースが同じ構文を共有していることです。私は現在 PDO を使用しています。フラグを設定して、ユーザーが使用するデータベースを指定できるようにしたいと考えています。

私の一般的なMySQLクエリのほとんど(すべてではないにしても)を処理する「安全な」データベースはどれか知りたいです。主にSELECT、INSERT、UPDATE、DROP、DELETE。

ありがとう

4

3 に答える 3

3

と呼ばれるものにはいくつかのリビジョンがありますANSI SQL

すべての主要なデータベース エンジン (つまり、、、Oracleおよび)は、理論的には をサポートする必要がありMS SQLます。PostgreSQLMySQLSQL-92

これには、複雑な句を使用しない限り、あなたが言及したすべてが含まれます: SELECT, INSERT, UPDATE, DROP, 。DELETE

実際には:

  1. すべてのデータベースが の完全なセットをサポートしているわけではありませんSQL-92

    SQLでさえクロスプラットフォームを書くにSQL-92は、多くのテストが必要です。

  2. 行を挿入し、クエリを最適化する必要がある場合、プラットフォームの非依存性はSQL終わります。1001st

    StackOverflowタグ付けされた質問を少しSQL参照すると、それらのほとんどが「このクエリを最適化するのを手伝ってください」と言っており、ほとんどの回答が「このプラットフォーム依存のハックを使用してください」と言っていることがわかります。

于 2009-02-26T10:53:35.850 に答える
1

たとえば、mysql はブール値を 1 と 0 として保存し、postgres はそれらを 't' と 'f' として保存します。

データベース クラスがデータを変換する必要性を認識している限り、問題はありません。おそらく、毎日の CRUD の 96.3482% が全面的にうまく機能します。

PDO を直接呼び出すデータベース クラスを作成した場合でも、後でデータ変換またはクエリ変更のためのロジックを追加できます。

データベース抽象化レイヤーADOdbを使用できます。(それは植物が切望するものを手に入れました)

必要のない機能の開発に多くの時間を費やす前に、どのデータベースを実行する必要があるかについて顧客が実際にくだらないことを言っていることを確認することをお勧めします。

于 2009-02-26T11:15:21.087 に答える
0

標準化されたSQL92は、すべての RDBMS でほとんど同じです。違いは、たとえばLIMIT日時処理関数やもちろん手続き型言語など、標準で定義されていない部分にあります。PHP で人気のある DB については、SQL を MySQL、SQLite、および PostgreSQL 間で移植可能にすることはそれほど難しくありません。Oracle、Sybase、および DB/2 では、それほど簡単ではありません。

于 2009-02-26T11:15:40.053 に答える