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;
*/
注意点・ベストプラクティス
- ネストしたコメントはできない
SQL Serverでは /* … /* … */ … */ のようなネストはサポートされません。誤ってネストするとエラーになります。 - コメントは簡潔に
長文すぎるコメントはかえって読みづらくなります。要点を絞って記述しましょう。 - 実行計画への影響はないが、可読性重視
コメントは実行計画やパフォーマンスには影響しません。可読性と保守性を高めるために適切に活用しましょう。 - 不要になったコメントは削除
過去の古いコメントが残っていると混乱のもとになります。定期的に見直し、不要なものは消しましょう。
演習問題
以下の演習問題に取り組んで、コメントの使い方をマスターしましょう。
- 問題1
顧客テーブル Customers から、国(Country)が「Japan」の顧客を抽出するクエリを作成し、シングルラインコメントで「日本の顧客を取得」と説明を付けてください。 - 問題2
テーブル Orders から注文日(OrderDate)が2025年1月1日以降の注文を抽出するクエリを、複数行コメントで「2025年以降の注文取得クエリ」として囲んでください。 - 問題3
以下の2つのクエリを、コメントを使って交互に有効化/無効化できるようにしてください。- クエリA: SELECT * FROM Employees WHERE DepartmentID = 1;
- クエリB: SELECT * FROM Employees WHERE DepartmentID = 2;
- 問題4
複数行コメントの中にシングルラインコメント--
を書いたとき、どのように扱われるか実際に試して説明してください。 - 問題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開発にコメントを取り入れてみてください!