@cevheri

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

SQLエディタで複数のSQLを実行するとき、どんな操作が理想ですか?

現在、LibreDB Studio というオープンソースのSQLエディタを開発しています。

開発中に、ボランティアのコントリビューターから「エディタに複数のSQL文が書かれている場合、ユーザーが Run を押したら何を実行するのが自然なのか?」という話題が出ました。

例えば、次のようなSQLを書いているとします。

CREATE TABLE users (...);

INSERT INTO users VALUES (...);

SELECT * FROM users;

ここで、ユーザーが何も選択せずに Run を押した場合、皆さんはどのような動作を期待しますか?


よくある考え方

カーソル位置を基準にする

  • カーソルがあるSQL文だけを実行する
  • SQLが長い場合でも、必要な文だけすぐ実行できる
  • 選択した場合は、その部分だけを実行する

エディタ全体を基準にする

  • 選択なし → エディタ内のSQLを上から順番に実行
  • 選択あり → 選択範囲だけを実行
  • 実際に何が実行されるのかを判断しやすい

操作を明確に分ける

  • Run
  • Run Selection
  • Run All

のように、それぞれの操作の意味を明確にする方法もあります。


ここで少し気になっていること

単に「どれが好きか」だけではなく、実際のSQL開発では次のようなケースがあります。

  • SQL文の途中にカーソルがあるとき、「現在のSQL文」をどう判定するのがよいか
  • セミコロンがないSQLや、編集中でまだ不完全なSQLをどう扱うか
  • 10個のSQL文を実行して、7個目でエラーになった場合にどうするか
  • 複数のSQL文を実行するとき、トランザクションをどのように扱うべきか
  • 複数のSELECTがある場合、それぞれの結果セットをどのように表示すると使いやすいか
  • キーボードショートカットはどのような操作体系が使いやすいか

私はこれまでDBeaver、DataGrip、SSMS、PL/SQL Developer、Toadなど、いくつかのデータベースツールを使ってきましたが、ツールによってかなり考え方が違うと感じています。

そこで、実際にSQLを日常的に書いている方に聞いてみたいです。

皆さんが普段使っているSQLエディタでは、どのような実行方法が一番使いやすいですか?

「この操作が好き」「この挙動は怖い」「こうなっていると助かる」など、実際の経験を教えていただけるとうれしいです。

このテーマについては、現在GitHubでも議論しています。興味があれば、こちらもご覧ください。

0 likes

すべてのステートメントを上から順に実行することを期待します。
複数のSQL文を書いている状況は多くの場合「スクリプトとしてまとめて実行したい」と考えられるためです。
これにはエディタの実装がシンプルになる(テキスト全体をそのままバックエンドに投げるだけ)という開発側のメリットもあります。

1Like

Your answer might help someone💌