今回は第232回 MySQL Shell for VS Codeをインストールしてみるで紹介したMySQL Shell for VS Code[1]を使い、基本的なデータを取得する方法を紹介していきます。
検証環境
今回はDockerで建てたMySQLを使用します。以下のコマンドでDockerを建てて、ローカルからアクセスします。
% docker run --platform linux/x86_64 -p 127.0.0.1:3307:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_USER=kk2170 -e MYSQL_PASSWORD=my-secret-pw -d mysql:8.4.3 --secure-file-priv='/tmp'
今回はMySQL Shellをインストールして実行していきますが、いったん従来のmysqlクライアントでアクセスが可能であることを確認しましょう。方法は以下の通りです。
% mysql -uroot -pmy-secret-pw -h127.0.0.1 -P3307
執筆時点では、以下の通りMySQL 8.
mysql> select version(); +-----------+ | version() | +-----------+ | 8.4.3 | +-----------+ 1 row in set (0.01 sec)
今回はテストデータとして、第2回 MySQLにはじめてのデータを入れてみるで紹介されている--secure-file-priv='/tmp'
を指定しています。
コンテナ内にunzipが入っていないため、unzipからiconvまでのコマンドをローカルで実行し、docker cp
でファイルを事前に送り、その後LOAD DATA INFILE
を実行しています。
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statemen
tというエラーが表示された場合は、KEN_--secure-file-priv
で指定している'/tmp'配下にあるか確認してみてください。
VS Codeのインストールに関しては省略しますが、公式サイトからダウンロードしてインストールを行います。
SQLの結果を取り出したい
MySQL Shell for VS Codeを使用して取得した結果を任意の形式に変換して、取得することができます。今回は、北海道が都道府県として設定されている行をすべて表示したい場合を考えます。
クエリとしてはSELECT * FROM zipcode WHERE prefecture = '北海道';
のようなものを使用します。このクエリをNotebookに入力して結果を取得してみましょう。
実行方法に関しては、第232回 MySQL Shell for VS Codeをインストールしてみるにありますので、実際に試す場合は参照してください。

このように取得できました。が、results以下の部分を見てもらうと1000件となってます。

北海道の郵便番号は1000件しかない可能性もあるので、試してみましょう。
SELECT COUNT(*) FROM zipcode WHERE prefecture = '北海道';
を入力して実行してみます。

結果を確認すると8201件あります。残りの7000件近くはどこへ行ってしまったのだろう、と思う方もいるかもしれません。実はMySQL Shell for VS Codeではデフォルトでは1000件までのlimitを付けてくれます。これは非常に大きなテーブルに対してlimitを付けそびれた時などにありがたい機能です。
でも次の取得をしたい場合どうしたらよいいいのかといえば、resultの画面の下の方に

一気に結果を取得したい場合
LIMIT句で上書きをする
件数が1000件超えるのもわかってるけど、一括で取得したいこともあると思います。その場合は方法が2つあります。まずそのクエリだけで設定したい場合は、LIMIT句をつけましょう。LIMIT句を指定した場合はその件数で取得してくれます。
たとえば、先ほどのクエリにLIMIT 5000
を追加して実行してみましょう。結果を見ると5000件取得できていることがわかります。

クエリごとにLIMIT句を指定すれば、特定のクエリだけ一定の件数で取得ができるようになりました。
プラグインの設定を変更する
では、サーバもPCもスペックに余裕があってもっと大きな数を指定したい場合はどうしたらよいでしょうか? その場合はMySQL Shell for VS Codeの設定を変更しましょう。設定はVS Codeの左側のExtensionをクリックします。

次にMySQL Shell for VS Codeの歯車アイコンを選択します。

そうすると設定画面が開きます。

今回の自動的にLimitを付ける機能に関しては、

デフォルトは先ほど触ってわかった通り1000件になっていて、これを操作することで任意の件数取得することができます。
また、無制限に取得したい場合は、0を入力することでクエリ通りに取得することができます。

ただ件数が増えると不安定になるため、やはり1000件程度に表示をとどめておいた方が良いかもしれません。
まとめ
今回はMySQL Shell for VS Codeの結果取得件数のデフォルトと、その変更方法に関して解説をしていきました。今後もMySQL Shell for VS Codeの基本的な機能を紹介していきます。正式リリースとなったMySQL Shell for VS Codeを使用してみてはいかがでしょうか。