2009-02-26 4 views
1

私は、SQLは標準化されることを意図していますが、異なるデータベースなどで実装されていますが、私は今までデータベース用にMySQLを使用してきました。PHPで使用されるデータベースは、同じ(またはほとんどの)SQL構文を共有しますか?

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

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

おかげ

答えて

3

ANSI SQLと呼ばれるように、いくつかのリビジョンがあります。

理論のサポートSQL-92のすべての主要なデータベースエンジン(つまりOracleMS SQLPostgreSQLMySQLである)べき(はず)。限り、あなたは彼らと複雑な句を使用していないとして、SELECTINSERTUPDATEDROPDELETE

これは、あなたが言及したすべてのものを含んでいます。実際に

  1. すべてのデータベースがSQL-92のフルセットをサポートするわけではありません。

    SQL-92であっても、クロスプラットフォームSQLを書き込むには、多くのテストが必要です。

  2. SQLのプラットフォームの独立性は、1001st行を挿入してクエリを最適化する必要があるときに終了します。

    あなたは少しStackOverflow以上の質問を参照する場合はSQLをタグ付け、あなたはそれらのほとんどは「このクエリを最適化するために私を助けて」、そしてほとんどの答えは「使用このプラットフォームに依存するハック

  3. を言うと言うことがわかります
1

データベースストアのデータ型によって、mysqlはブール値を1と0に格納し、postgresはそれらを 't'と 'f'として格納することがあります。

データベースクラスでデータを変換する必要があることを認識している限り、毎日のCRUDの96.3482%がうまく機能します。

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

データベース抽象化レイヤーADOdbを使用できます。 (植物が欲しいものを持っている)

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

+0

これがなぜ落とされたのかよく分かりません。 –

0

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

関連する問題