sato

2014.01.17

MySQLの記述方法で便利に感じたこと

はじめまして。
先月(2013年12月)アライドアーキテクツに入社しました、佐藤 知明と申します。
現在はモニプラ for Facebookの開発を担当しております。

前職では業務系パッケージシステムの開発・保守を担当しており、
PL/SQLを使用してきました。
今回のブログでは、今までOracleSQLを使用していた私が、
MySQLを使ってみて便利だと感じたことを2つほど書いてみました。

私と同じようにOracleSQLを使っていた人がMySQLを使い始める場合、
参考にしていただければと思います。

1,複数行をまとめたINSERT文

以下のテーブルに3レコードINSERTしてみようと思います。

person

id name status
1 test1 9
2 test2 9
3 test3 8

MySQLでは複数行のINSERT文は下記のようにレコード毎にカンマ区切りで記載できます。

実行結果

ところが同じSQL文をOracleSQLで実行すると、

下記のようにエラーが発生します。

OracleSQLで複数行のINSERT文を発行するためには、

のように記述する必要があり、
「INTO test_table (id, name, status) VALUES」の部分が毎行必須となるため、
MySQLのようにカンマ区切りでINSERT文が発行できてちょっと楽になったと感じました。

2,MySQLではGROUP BYに列番号や列別名を指定できる

1のINSERT文から話は変わるのですが、
もうひとつ、GROUP BYの使い方にMySQLとOracleSQLの違いがありました。

OracleSQLでは、GROUP BY句に列番号も列別名も使えないため、
以下のSQLではともにエラーが発生します。

実行結果

OracleSQLでは、以下のようにselect句とgroup by句に同じ記述を書く必要があります。

実行結果

ところが、MySQLではgroup by句に列番号や列別名を指定してもエラーが発生しません。

実際のコーディングでは、
group by句に列番号を入れるとどの列のことを指しているのか
後から分かりづらくなるために使わない方がいいと思いますが、
調べ事をする際にちょっとSQLを打つ際などには、
列番号や列別名をGROUP BY句に使用できるのは便利かと思います。

他にもOracleSQLに比べてMySQLの便利な点は多々あると思いますので、
今後調べてみようと思います。

今回は以上になります。
アライドアーキテクツではエンジニアを随時募集しております。
興味があればぜひこちらの採用サイトからご応募ください。