SQL Serverでコメントを活用する方法【初級編】

SQL Serverでクエリを書いていると、後から見返したときに「なぜこの結合を入れたのか?」「この条件は何を意味しているのか?」と悩むことがあります。

そんなときに役立つのが「コメント」です。

本記事では、SQL Serverのコメントの基本から使い方、ベストプラクティス、さらに学んだ内容を確認する演習問題まで、初級レベルでやさしく解説します。


コメントとは?

コメントとは、プログラムのソースコード中に書かれる「説明文」です。SQL Serverに限らず多くの言語で使われ、実行エンジンはコメント部分を無視して処理を行います。コメントを活用することで、以下のようなメリットがあります。

  • コードの意図や仕様を明確に残せる
  • テスト中のクエリを一時的に無効化できる
  • 複数人開発や将来のメンテナンスがしやすくなる

SQL Serverにおけるコメントの種類

SQL Serverでは大きく分けて シングルラインコメント複数行コメント の2種類があります。

シングルラインコメント

行の途中から行末までをコメントとして扱います。記号は –(ハイフン2つ)です。

  • 開始記号--
  • 終了:行末まで
  • 用途:クエリの説明や、テスト中の一時的な無効化
-- これはシングルラインコメント
SELECT * FROM Employees;  -- ここにもコメントを書ける

複数行コメント

複数の行にわたるコメントを一括で記述できます。記号は /* から */ までです。

  • 開始記号/*
  • 終了記号*/
  • 用途:長文の説明、複数行のコードをまとめて無効化
/*
  これは複数行コメントの例です。
  複数行にわたって詳細な説明を書けます。
*/
SELECT * FROM Orders;

コメントの活用例

クエリの目的を明確にする

-- 社員の在籍年数を計算し、5年以上の社員を抽出
SELECT 
    EmployeeID,
    DATEDIFF(YEAR, HireDate, GETDATE()) AS YearsEmployed
FROM Employees
WHERE DATEDIFF(YEAR, HireDate, GETDATE()) >= 5;

デバッグやテスト用にコードを一時的に無効化

SELECT * FROM Products;
/*
SELECT * 
FROM Products
WHERE Discontinued = 0;
*/

注意点・ベストプラクティス

  1. ネストしたコメントはできない
    SQL Serverでは /* … /* … */ … */ のようなネストはサポートされません。誤ってネストするとエラーになります。
  2. コメントは簡潔に
    長文すぎるコメントはかえって読みづらくなります。要点を絞って記述しましょう。
  3. 実行計画への影響はないが、可読性重視
    コメントは実行計画やパフォーマンスには影響しません。可読性と保守性を高めるために適切に活用しましょう。
  4. 不要になったコメントは削除
    過去の古いコメントが残っていると混乱のもとになります。定期的に見直し、不要なものは消しましょう。

演習問題

以下の演習問題に取り組んで、コメントの使い方をマスターしましょう。

  1. 問題1
    顧客テーブル Customers から、国(Country)が「Japan」の顧客を抽出するクエリを作成し、シングルラインコメントで「日本の顧客を取得」と説明を付けてください。
  2. 問題2
    テーブル Orders から注文日(OrderDate)が2025年1月1日以降の注文を抽出するクエリを、複数行コメントで「2025年以降の注文取得クエリ」として囲んでください。
  3. 問題3
    以下の2つのクエリを、コメントを使って交互に有効化/無効化できるようにしてください。
    • クエリA: SELECT * FROM Employees WHERE DepartmentID = 1;
    • クエリB: SELECT * FROM Employees WHERE DepartmentID = 2;
  4. 問題4
    複数行コメントの中にシングルラインコメント -- を書いたとき、どのように扱われるか実際に試して説明してください。
  5. 問題5
    コメントを使って、自分が理解しづらかった部分にメモを残す例を考え、サンプルクエリとともに示してください。

解答例

問題1 解答例
-- 日本の顧客を取得
SELECT *
FROM Customers
WHERE Country = 'Japan';
問題2 解答例
/*
  2025年以降の注文取得クエリ
*/
SELECT *
FROM Orders
WHERE OrderDate >= '2025-01-01';
問題3 解答例
/*
-- クエリA: 部門1の社員取得
SELECT * FROM Employees WHERE DepartmentID = 1;
*/

-- クエリB: 部門2の社員取得
SELECT * FROM Employees WHERE DepartmentID = 2;

上記のように、/* … */ の中にクエリAを入れると無効化され、クエリBだけが実行されます。逆に、/* と */ の位置を入れ替えればクエリAだけが実行されます。

問題4 解答例
/*
  複数行コメント内の例
  -- この行はシングルラインコメントのように見えますが
  実際には複数行コメントの一部として扱われます
*/
SELECT 1;

→ /* … */ の範囲内はすべてコメントとして扱われ、– は特別な意味を持ちません。

問題5 解答例
-- TODO: インデックスが効いているか要確認
SELECT *
FROM Sales
WHERE SaleDate BETWEEN '2024-01-01' AND '2024-12-31';

上記のように、TODO: を使って後で見直すべきポイントをメモできます。


まとめ

本記事では、SQL Serverでコメントを使うメリットと基本構文、シングルライン/複数行コメントの書き方、ベストプラクティスを解説しました。

適切なコメントはコードの可読性・保守性を大きく向上させます。ぜひ演習問題に取り組んで、日々のSQL開発にコメントを取り入れてみてください!