MySQL Shell 8.0

このページは機械翻訳したものです。

5.2 対話型コードの実行

MySQL Shell のデフォルトモードでは、コマンドプロンプトで入力したデータベース操作を対話形式で実行できます。 これらの操作は、現在の セクション5.1「アクティブな言語」 に応じて、JavaScript、Python または SQL で記述できます。 実行されると、操作の結果が画面に表示されます。

他の言語インタプリタと同様に、MySQL Shell は構文に関して非常に厳格です。 たとえば、次の JavaScript スニペットは、MySQL サーバーへのセッションを開き、コレクション内のドキュメントを読み取って出力します:

var mySession = mysqlx.getSession('user:pwd@localhost');
var result = mySession.getSchema('world_x').getCollection('countryinfo').find().execute();
var record = result.fetchOne();
while(record){
  print(record);
  record = result.fetchOne();
}

前述のように、find() へのコールの後に execute() 関数が続きます。 CRUD データベースコマンドは、実際には execute() がコールされたときに MySQL Server でのみ実行されます。 ただし、MySQL Shell を対話形式で操作する場合は、ステートメントで Return を押すたびに execute() が暗黙的にコールされます。 その後、操作の結果がフェッチされ、画面に表示されます。 execute() をコールする必要があるかどうかのルールは、次のとおりです:

前述のルールに基づいて、コレクション内のドキュメントのセッション、クエリーおよび印刷を確立するために対話モードの MySQL Shell で必要なステートメントは次のとおりです:

mysql-js> var mySession = mysqlx.getSession('user:pwd@localhost');
mysql-js> mySession.getSchema('world_x').getCollection('countryinfo').find();

execute() をコールする必要はなく、Result オブジェクトが自動的に出力されます。

複数行のサポート

複数行にまたがるステートメントを指定できます。 Python または JavaScript モードでは、関数定義、if/then ステートメント、for ループなどでステートメントのブロックが開始されると、複数行モードが自動的に有効になります。 SQL モードでは、コマンド\が発行されると、複数行モードが開始されます。

複数行モードが開始されると、その後に入力されるステートメントがキャッシュされます。

例:

mysql-sql> \
... create procedure get_actors()
... begin
...   select first_name from sakila.actor;
... end
...
	  
注記

クエリーで\sql コマンドを使用して、別の言語がアクティブなときに単一の SQL ステートメントを実行する場合、複数行モードは使用できません。 このコマンドは、単一行の単一の SQL クエリーのみを受け入れます。