|
||||||||||||||||||
| 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(); → 現在時刻を抽出する
また、Oracle Databaseを利用している方はよくご存知だと思いますが、上記の例のようにテーブルアクセスを必要としないSELECT文の場合、DUAL表と呼ぶ仮想のテーブルをFROM句の部分に使用することがあります。
select now() from DUAL; → 現在時刻を抽出する
このDUAL表を使用したSELECT文は、Oracle Databaseの他にMySQLでもサポートしていますが、PostgreSQLはサポートしていません。このため、Oracle用に開発されたアプリケーションをPostgreSQL用に修正する時は注意が必要です。 |
||||||||||||||||||
|
1 2 3 次のページ |
||||||||||||||||||
|
|
||||||||||||||||||
|
|
||||||||||||||||||
|
||||||||||||||||||
|
|
||||||||||||||||||
|
||||||||||||||||||
|
|
||||||||||||||||||
|
||||||||||||||||||

