MySQLで複数行のステートメントを記述する方法|セミコロンが文の終わりを決める仕組みを解説
MySQLでは、1つのSQLステートメントを複数行に分けて記述することができます。その理由は、MySQLがステートメントの終わりを「入力行の終わり」ではなく「終端のセミコロン(;)」によって判断しているためです。つまり、セミコロンが現れるまでは、MySQLは入力された行を継続中のステートメントとして扱います。
複数行ステートメントの記述例
以下の例では、単一のSELECTクエリを複数行に分けて入力しています。
mysql> Select *
-> from
-> stock_item;
+------------+-------+----------+
| item_name | Value | Quantity |
+------------+-------+----------+
| Calculator | 15 | 89 |
| Notebooks | 63 | 40 |
| Pencil | 15 | 40 |
| Pens | 65 | 32 |
| Shirts | 13 | 29 |
| Shoes | 15 | 29 |
| Trousers | 15 | 29 |
+------------+-------+----------+
7 rows in set (0.00 sec)この動作のポイント
上記の例では、「Select *」「from」「stock_item;」と3行に分けて入力していますが、MySQLは最後のセミコロンを受け取った時点で初めてクエリを実行し、結果を返しています。
このことから、MySQLはいわゆるフリーフォーマット(自由形式)の入力を受け付けることが分かります。MySQLは入力された各行を順次収集していきますが、セミコロンによる終端記号を検出するまでは実行を行いません。
実務上のメリット
- 可読性の向上: 長いクエリでも、SELECT句・FROM句・WHERE句などを分けて書くことで構造が把握しやすくなります。
- 保守性の向上: 後から条件を追加・修正する際に、該当箇所を見つけやすくなります。
- チーム開発での共有: 整形されたクエリはレビューや引き継ぎの際にも理解しやすくなります。
なお、注意点として、文字列リテラルの中にセミコロンを含めたい場合はエスケープが必要になるなど、セミコロンの扱いには留意してください。通常のステートメント記述においては、セミコロンを入力してEnterキーを押すまで、MySQLはクエリの実行を待機し続けます。
-
MySQLでprintステートメントをシミュレートする方法|SELECT文を使った文字列・数値の出力
MySQLには、他のプログラミング言語のようなprintステートメントが用意されていません。しかし、SELECT文を活用することで、同じように値を画面に出力できます。デバッグや動作確認の際に非常に便利なテクニックなので、ぜひ覚えておきましょう。基本的な構文MySQLでprintのように出力するには、以下の構文を使用します。SELECT 任意の文字列や数値 AS ;AS の部分は列名(エイリアス)を空にする指定です。これにより、余計な列名を表示せずに出力結果だけを見やすくすることができます。ケース1:文字列を出力するまず、文字列を出力する基本例を確認してみましょう。mysql> SEL
-
MySQLの終了ステートメント(デリミタ)を変更する方法
```html MySQLでは、ストアドプロシージャやトリガーなどを作成する際、処理の中にセミコロン(;)が含まれるため、デフォルトの終了記号のままでは正しく実行できないことがあります。そんなときは、DELIMITERコマンドを使って、文の終了記号を任意の記号に変更しましょう。DELIMITERコマンドの基本構文DELIMITER 任意の記号上記の「任意の記号」の部分には、自由に設定したい記号を指定できます。デフォルトの終了記号は「;」(セミコロン)で、一般的には「//」や「$$」などがよく使われます。実際の使用例それでは、まず終了記号を「//」に変更してテーブルを作成してみましょう。mysq