山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

MySQLとOracleのSQLの違い

オイシックスではBIのデータストアとして

MySQLを使っています。その関係で最近は

MySQLSQLを書くことが多いです。

徐々にOracleSQLとの違いがわかってきました。

まとめたいと思います。


・外部結合

Oracleでは

where t1.todoufuken_id=t2.todoufuken_id(+)

という書き方ができましたがこれはOracle特有の

書き方です。

Oracle以外ではleft joinと記述します。


・関数

これは当然ですね。


・テーブル名の大文字小文字

Linuxサーバー上のMySQLではテーブル名は大文字

小文字を区別します。

Windowsだと区別しないとか、サーバー設定により

区別しないようにもできるようです。


・group by

Oracleだとcountやsumを使ってgroup byがないと

エラーになりますがMySQLだとエラーになりません。

結果はgroup byを指定しないフィールドについては

どういう値が出ているのかはよくわかりません。

とにかくエラーにならず結果が返ってきます。


・group byに列の別名が使える

Oracleだと関数を使ったときなどgroup byでまとめたい

とき関数を全部記述する必要があります。

case whenなどを使ったときはとても冗長になります。

その点MySQLではasで指定した別名が使えるので

簡潔に記述できます。