phpMyAdminで試してみよう!MySQLのwith句を含むSQLの使い方について
  • facebookページ
  • twitterページ
  • 2020.06.30

    phpMyAdminで試してみよう!MySQLのwith句を含むSQLの使い方について

    MySQLで、サブクエリーの結果を共通で使えるwith句が使えるのをご存じでしょうか。しかし、コマンドラインのMySQLクライアントツールで、with句を含む複雑なSQLのデバックは容易ではありません。GUIな管理ツールが必要です。そこで、比較的簡単に使えるMySQLの管理ツール、phpMyAdminを使ったwith句を含むSQLの実行手順を紹介します。

    SQLにおけるwith句とは

    Oracle SQLやDB2といったエンタープライズ用途向けのSQLに慣れたベテランエンジニアなら、複数のサブクエリーを使う複雑なSQLでも、with句を使ってスマートに書いています。しかし、以前のMySQLではwith句が使えませんでした。しかし、最新のMySQLなら、withが使えます。

    エンタープライズ用途向けのSQLをフリーのデータベースで利用するなら、ぜひ、MySQLのバージョン8以降の利用を検討してください。MySQLのバージョン8では、Oracle SQLやDB2などのエンタープライズ用途向けだった多くの機能が導入されており、with句も使えるようになりました。まずは、MySQLで使えるようになったwith句について解説します。

    SQLのwith句とは

    with句は、1つのSQL文の中で共通したテーブルを簡略的に呼び出す機能です。そして、with句で呼び出すテーブルのことを、再帰共通表式(テーブル)と呼びます。

    なお、with句がよく使われるのはサブクエリーです。サブクエリーとは、クエリーの中でデータベースに格納されたテーブルの代わりに、クエリーによって作られたテーブルを使うための機能で、SQLの中に幾つものサブクエリーを記述することが可能です。

    そのため、サブクエリーが入れ子になるなど、複雑なSQLが使われるケースがあり、その中には同じサブクエリーを幾つも使っていることも珍しくありません。そのような場合、同じサブクエリーをwith句で共通化することで、複雑なSQLをシンプルに書くことが可能です。

    MySQLの8.0以降ではwith句が使える

    ただし、with句は全てのデータベース管理ソフトで使えた訳ではありません。MySQLのバージョン5では、使えませんでした。しかし、MySQLのバージョン8にからは、それまで使えなかったエンタープライズ向けの機能が使えるようになりました。そして、使えるようになった機能の一つが、再帰共通表式(テーブル)を定義するwith句です。

    なお、MySQLは、開発していた会社がエンタープライズ向けデータベース管理ソフトで有名なOracleに買収されたことで、Oracle社が開発するMySQLとオープンソースのmariadbに分かれました。残念ながらオープンソースのmariadbの最新版は、MySQLの最新版との完全な互換性はありません。とはいえ、mariadb最新版なら、with句をサポートしています。ぜひ、そちらのも利用も検討してください。

    with句の使用例

    次にwith句の使用例を紹介します。

    この例では、1行目のwith句でサブクエリーを宣言しています。そして、その検索結果のw1を使って平均値と最大値を計算し、テーブルに格納されたデータといっしょに出力します。

    上記のSQLをwith句を使わないで書いた場合、次のようになります。

    with句を使うことで、サブクエリーを共通化できることから、簡潔に書くことが可能です。

    MySQLを試すならphpMyAdminが最適

    MySQLに限らず、SQLが使えるデータベース管理ソフトを学ぼうとしたら、以前は、コマンドラインから専用のクライアントツールを実行するのが一般的でした。具体的には、MySQLならmysqlコマンドです。

    しかし、mysqlコマンドは、使いやすいとは言えません。MySQLを学ぶなら、格納されたデータが見やすく、SQLを実行できるグラフィカルな管理システムの利用をお勧めします。中でも無料で比較的簡単に使えるのがphpMyAdminです。次から、phpMyAdminを使ってSQLを実行する方法についてご紹介します。

    phpMyAdminはWebブラウザで使う

    phpMyAdminは、Webサービスの構築によく利用されるプログラム言語のPHPで実装されたMySQL専用の管理ツールです。そして、主にLinuxで構築されたWebサーバーに設置して利用します。また、WordPressが使えるレンタルサーバーでは標準で使えることが多いことから、身近なMySQLの管理ツールと言えるでしょう。

    なお、phpMyAdminを利用するには、WebブラウザからphpMyAdminのURLを指定して、MySQLのアカウントでログインする必要があります。ただし、Webブラウザで利用することから、通信できるデータの量に制限があり、全てのデータが表示できなかったり、大きなテーブルをファイル書き出せない、などの制限があります。

    phpMyAdminでSQLを実行する

    phpMyAdminはデータベースに格納されたデータを直接編集する機能の他、SQLを実行し、その結果を表示する機能も備えています。

    SQLを実行するには、phpMyAdminにログイン後、左側のタブでデータベースを選択して、右側の「SQL」タグを選んでください。画面が切り替わり、SQLを実行するための画面が表示されます。そこに、SQLを書くか、メモ帳などのテキストエディタに書いたSQLをコピーしてください。そして、実行ボタンを押すと、SQLが実行されます。その実行結果は、テーブル形式で表示されます。

    ただし、SQLを書くエリアは、SQL専用のエディタではありません。さらにファイルに保存する機能の無いので、with句を含むSQLのようなサブクエリーを幾つも使ったSQLのデバックには向いていません。そのため、別のエディタでSQLを編集に、コピーして実行するという使い方をおすすめします。

    SQLのwith構文をphpMyAdminで試してみる

    次から、MySQLでも使えるようになったwith構文を使ったSQLを、phpMyAdminのSQL実行環境で実行する手順を紹介します。

    まずはデータベースを選択する

    phpMyAdminにログインすると左側にデータベースの一覧が表示され、右側にシステム情報などが表示されます。しかし、この状態では、まだ、データベースが選択されていません。SQLの編集画面を表示できますが、この状態でSQLを書き、実行ボタンを押してもエラーになるので注意しましょう。

    まずは、操作対象となるデータベースを選んでください。データベースを選ぶと、画面右側の上部に、サーバー名をデータベース名が表示されます。必ずこの状態で、SQLタブで画面を切り替えてください。

    SQLを書いて実行する

    phpMyAdminのSQLタブをクリックして切り替えた画面には、SQLを編集するエリアと、各種スイッチなどが表示されます。もちろん、ここでSQLをゼロから書くことも可能ですが、ファイルに保存する機能がありません。あらかじめテキストエディタで作っておき、ファイルに保存してからコピーするようにしましょう。

    SQLが書けたら画面下部にある実行ボタンを押してください。SQLの実行結果が表示されます。また、SQLにエラーがあれば、コンソールに表示されるのと同じメッセージが表示されるので、SQLを修正して再度実行してください。

    phpMyAdminでのデバック方法

    今回実行するwith構文を含んだ複雑なSQLは、予定している結果が出るまでに何度もSQLを書き直すのが一般的です。そういったSQLのデバックにphpMyAdminのSQL実行環境を利用する場合は、「クエリボックスを保持する」スイッチを利用し、SQLと実行結果を同時に表示する機能を利用しましょう。

    また、どうしてもエラーが見つけられない場合は、フォーマットボタンを利用してSQLを整形してみてください。間違いが見つけられやすくなります。

    さらにSQLの実行結果が大きい場合は、「クリップボードにコピー」を利用しましょう。これを使って表計算ソフトなどにコピーすれば、チェックが簡単になります。

    まとめ

    MySQLのwith句は、複雑なSQLを解り易く作れる便利な機能です。しかし、それをコマンドラインでデバックするのは、簡単ではありません。それなら、比較的簡単に使えるMySQLの管理ツールのphpMyAdminを活用しましょう。phpMyAdminは、データベース管理ソフトとしては機能が少なく制限も多いものの、無料で設置が容易などのメリットがあり、SQLのデバックなどにも使えます。ぜひ、phpMyAdminを利用して、複雑なwith構文を含むSQLをマスターしましょう。



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア

    関連ワード

    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE