TOPサーバ構築・運用> SQL文の違い
徹底比較!! PostgreSQL vs MySQLパート2
徹底比較!! PostgreSQL vs MySQLパート2

第2回:拡張部分によって違いがでてくるSQL文
著者:NTTデータ   藤塚 勤也   2007/4/18
1   2  3  次のページ
SQL文の違い

   SQL文はデータベースへアクセスするための言語で、標準化が行われています。しかしRDBMSごとに、標準仕様から拡張されている部分が多く存在します。その拡張部分の影響で、あるRDBMSで使えたSQL文が他のRDBMSで使えないといったことがよくあります。そこで今回は、PostgreSQLとMySQLのSQL文でどうような部分に違いがあるのかを、具体的な例を用いながら説明していきます。

   SQL文は、DDL(Data Difinition Languege:データ定義言語)とDML(Data Manipulation Language:データ操作言語)の2種類に分かれています。今回は、アプリケーションからよく使用されるDML(SELECT、INSERT、UPDATE、DELETE)に絞って説明します。

SELECT文

   SELECT文はDMLの中でも非常に言語仕様が複雑で、様々なバリエーションがあります。よって、RDBMSごとに異なる部分が多いSQL文の1つだと思います。PostgreSQLとMySQLにおいても様々な部分で違いがありますが、その中のいくつかを取り上げて説明します。


FROM句のないSELECT文

   PostgreSQL、MySQLともにFROM句のないSELECT文の実行が可能です。例えば、以下のようにテーブルアクセスをすることなく結果を導きだすことのできるSELECT文の場合、FROM句を必要としません。

select now(); → 現在時刻を抽出する
PostgreSQL、MySQLともに正常終了

   また、Oracle Databaseを利用している方はよくご存知だと思いますが、上記の例のようにテーブルアクセスを必要としないSELECT文の場合、DUAL表と呼ぶ仮想のテーブルをFROM句の部分に使用することがあります。

select now() from DUAL; → 現在時刻を抽出する
MySQLは正常終了
PostgreSQLはDUAL表が存在しないというエラー


   このDUAL表を使用したSELECT文は、Oracle Databaseの他にMySQLでもサポートしていますが、PostgreSQLはサポートしていません。このため、Oracle用に開発されたアプリケーションをPostgreSQL用に修正する時は注意が必要です。

1   2  3  次のページ


NTTデータ  藤塚 勤也
著者プロフィール
株式会社NTTデータ   藤塚 勤也
基盤システム事業本部 オープンソース開発センタ シニアスペシャリスト。
日本タンデムコンピューターズ(現日本HP)を経て、2003年よりNTTデータにてOSS分野に参画。日頃はオリジナルOSSの開発や、OSSを用いたシステム構築への技術支援に従事。「RDBMS解剖学」(翔泳社)を共著。

INDEX
第2回:拡張部分によって違いがでてくるSQL文
SQL文の違い
  JOIN
  INSERT文