コメントアウトって何?なぜ必要なの?
データベースを操作するSQL文を書いていると、「このコードは何をしているんだっけ?」と後で困ることがありますよね。
特に、複雑なクエリや長いSQL文になると、自分で書いたコードなのに意味が分からなくなることも。
そんな時に役立つのが「コメントアウト」です。
コメントアウトとは:
プログラムの中にメモや説明を書き込むこと。コメント部分は実行されないので、何を書いても動作に影響しません。
この記事では、SQLでコメントを書く3つの方法と、実際の使い方を初心者にもわかりやすく解説します。
SQLのコメントアウト3つの書き方
SQLには、コメントを書く方法が3種類あります。状況に応じて使い分けましょう。
方法1:– (ハイフン2つ)単行コメント
最もよく使われる方法です。
書き方:
-- これはコメントです
SELECT * FROM users;
特徴:
- ハイフン2つ(
--
)の後ろがコメントになる - その行の最後まで有効
- 1行だけコメントにしたい時に便利
実例:
-- ユーザー情報を取得
SELECT
user_id, -- ユーザーID
user_name, -- ユーザー名
email -- メールアドレス
FROM users
WHERE status = 'active'; -- アクティブなユーザーのみ
注意点:
ハイフンの後に必ずスペースを入れてください。
- 正しい:
-- コメント
- 間違い:
--コメント
スペースがないとエラーになる場合があります。
方法2:/* */ 複数行コメント
複数行にわたってコメントを書きたい時に使います。
書き方:
/*
これは
複数行の
コメントです
*/
SELECT * FROM users;
特徴:
/*
で始まり*/
で終わる- 間に何行でも書ける
- 長い説明を書く時に便利
実例:
/*
このクエリは、2024年1月に登録された
アクティブなユーザーの一覧を取得します。
作成日:2024-12-15
作成者:田中太郎
*/
SELECT
user_id,
user_name,
created_at
FROM users
WHERE
created_at >= '2024-01-01'
AND created_at < '2024-02-01'
AND status = 'active';
便利な使い方:
コードの一部を一時的に無効化することもできます。
SELECT
user_id,
user_name
/* email は今回不要なので非表示
, email
, phone
*/
FROM users;
方法3:# (シャープ)単行コメント
MySQLとMariaDBだけで使える方法です。
書き方:
# これはコメントです
SELECT * FROM users;
特徴:
#
の後ろがコメントになる- MySQLとMariaDB専用
- PostgreSQLやOracleでは使えない
実例:
# 2024年のデータを取得
SELECT * FROM sales
WHERE YEAR(sale_date) = 2024;
おすすめしない理由:
他のデータベースシステムに移行した時に使えなくなります。--
を使った方が汎用性が高いので、特別な理由がない限り --
を使いましょう。
コメントアウトの実践的な使い方
ただの説明だけでなく、実務で役立つ使い方を紹介します。
使い方1:複雑なクエリの説明
何をしているのか後で分かるように説明を書きます。
例:集計クエリの説明
-- 部署ごとの平均給与と従業員数を計算
SELECT
department, -- 部署名
COUNT(*) AS employee_count, -- 従業員数
AVG(salary) AS average_salary, -- 平均給与
MAX(salary) AS max_salary -- 最高給与
FROM employees
WHERE status = 'active' -- 在職中の社員のみ
GROUP BY department -- 部署でグループ化
HAVING COUNT(*) >= 5 -- 5人以上の部署のみ
ORDER BY average_salary DESC; -- 平均給与の高い順
使い方2:条件の意図を明確にする
WHEREやJOINの条件が複雑な時、なぜその条件なのかを書きます。
例:複雑な絞り込み条件
SELECT
o.order_id,
o.customer_id,
o.total_amount
FROM orders o
WHERE
-- 2024年の注文
o.order_date >= '2024-01-01'
AND o.order_date < '2025-01-01'
-- 1万円以上の注文(送料無料対象)
AND o.total_amount >= 10000
-- キャンセルされていない
AND o.status != 'cancelled'
-- テスト注文を除外
AND o.customer_id != 9999;
使い方3:一時的にコードを無効化する(デバッグ)
エラーの原因を探る時、一部のコードをコメントアウトして試します。
例:問題の切り分け
SELECT
user_id,
user_name,
email
FROM users
WHERE
status = 'active'
-- 以下の条件を一時的に無効化して確認
-- AND last_login >= DATE_SUB(NOW(), INTERVAL 30 DAY)
-- AND email_verified = 1
;
コメントアウトして動いたら、その条件に問題があることが分かります。
使い方4:バージョン管理の記録
いつ、誰が、なぜ変更したのかを記録します。
例:変更履歴の記載
/*
変更履歴:
2024-12-01: 初版作成 (田中)
2024-12-10: パフォーマンス改善のためINDEXを追加 (鈴木)
2024-12-15: 削除フラグの条件を追加 (佐藤)
*/
SELECT * FROM products
WHERE
category = 'electronics'
AND deleted_at IS NULL; -- 2024-12-15 追加
使い方5:テスト用データの切り替え
開発環境と本番環境で使うデータを切り替える時に便利です。
例:環境に応じた切り替え
-- 本番環境用
SELECT * FROM products WHERE store_id = 100;
-- テスト環境用(本番では下記をコメントアウト)
-- SELECT * FROM products WHERE store_id = 999;
使い方6:ToDo(やることリスト)
後でやるべきことを書いておきます。
例:改善ポイントの記録
SELECT
order_id,
customer_name,
total_amount
FROM orders
WHERE order_date >= '2024-01-01'
-- TODO: ここにインデックスを追加してパフォーマンス改善
-- TODO: customer_nameはJOINで取得するように変更
;
よくある間違いと注意点
コメントアウトで失敗しないための注意事項です。
間違い1:ハイフンの後にスペースを入れ忘れ
ダメな例:
--これはエラーになる可能性がある
SELECT * FROM users;
正しい例:
-- これは正しい
SELECT * FROM users;
必ずハイフンの後にスペースを入れましょう。
間違い2:複数行コメントの閉じ忘れ
ダメな例:
/* コメント開始
SELECT * FROM users;
-- 閉じ忘れ!
これだとSELECT文もコメントになってしまい、何も実行されません。
正しい例:
/* コメント */
SELECT * FROM users;
間違い3:コメントの中にコメント終了記号
ダメな例:
/* コメントの中に */ があるとエラー */
SELECT * FROM users;
コメント内に */
があると、そこでコメントが終わってしまいます。
対処法:
/* コメントの中に終了記号は書かない */
SELECT * FROM users;
または
-- コメントの中に /* */ を書く場合は単行コメントで
SELECT * FROM users;
間違い4:文字列の中のコメント記号
注意が必要な例:
-- 検索キーワードに「--」が含まれる場合
SELECT * FROM articles
WHERE title LIKE '%SQL--基礎%';
これは問題ありません。文字列(シングルクォートで囲まれた部分)の中はコメントになりません。
間違い5:重要な情報をコメントに書く
ダメな例:
-- パスワード: admin123
-- データベースサーバー: db.example.com
SELECT * FROM users;
セキュリティ上重要な情報は、コメントに書かないでください。SQLファイルが外部に漏れた時に危険です。
コメントを書くべき場所と書かないべき場所
すべてにコメントを書けば良いわけではありません。
コメントを書くべき場所
1. 複雑なビジネスロジック
-- 会員ランクの判定ロジック:
-- ゴールド: 累計購入額50万円以上
-- シルバー: 累計購入額10万円以上
-- ブロンズ: それ以外
SELECT
customer_id,
CASE
WHEN total_purchase >= 500000 THEN 'ゴールド'
WHEN total_purchase >= 100000 THEN 'シルバー'
ELSE 'ブロンズ'
END AS rank
FROM customer_summary;
2. パフォーマンスに関する理由
-- ORDER BY を使わずにサブクエリで最新レコードを取得
-- (大量データでのソート回避のため)
SELECT * FROM (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at DESC) AS rn
FROM user_actions
) sub
WHERE rn = 1;
3. 将来の変更予定
-- 注意: この列は2025年3月に削除予定
-- 新しいコードでは new_column を使用してください
SELECT old_column FROM legacy_table;
コメントを書かないべき場所
1. 当たり前のことを説明
ダメな例:
-- ユーザーテーブルからデータを取得
SELECT * FROM users;
-- IDが1のユーザーを取得
SELECT * FROM users WHERE user_id = 1;
コードを見れば分かることは書かなくてOKです。
2. 使われていない古いコード
ダメな例:
/*
-- 以前のバージョン(使わない)
SELECT * FROM old_users;
*/
-- 現在のバージョン
SELECT * FROM users;
不要なコードは削除しましょう。バージョン管理システム(Gitなど)があれば、履歴から復元できます。
データベース別のコメント対応表
使っているデータベースによって、使えるコメント記号が異なります。
対応表
データベース | -- | /* */ | # |
---|---|---|---|
MySQL | ○ | ○ | ○ |
MariaDB | ○ | ○ | ○ |
PostgreSQL | ○ | ○ | × |
Oracle | ○ | ○ | × |
SQL Server | ○ | ○ | × |
SQLite | ○ | ○ | × |
おすすめの使い分け
どのデータベースでも使える方法:
--
(ハイフン2つ)/* */
(スラッシュ・アスタリスク)
この2つを使えば、どの環境でも動きます。
MySQL専用の機能を使う時だけ #
を使い、それ以外は --
を使うのが安全です。
便利なコメントテンプレート
実務で使えるテンプレートを紹介します。コピーして使ってください。
テンプレート1:クエリの説明用
/*
目的: [このクエリが何をするのか]
対象: [どのデータを扱うか]
条件: [重要な絞り込み条件]
作成日: YYYY-MM-DD
作成者: [名前]
*/
SELECT
-- カラムの説明
FROM テーブル名
WHERE 条件;
テンプレート2:修正履歴用
/*
修正履歴:
[YYYY-MM-DD] [担当者名]: 初版作成
[YYYY-MM-DD] [担当者名]: [変更内容]
[YYYY-MM-DD] [担当者名]: [変更内容]
*/
-- メインのクエリ
テンプレート3:セクション区切り用
-- ============================================
-- 1. データ取得
-- ============================================
SELECT * FROM users;
-- ============================================
-- 2. データ集計
-- ============================================
SELECT COUNT(*) FROM users;
テンプレート4:注意事項用
/*
【重要】このクエリを実行する前の注意事項:
1. 必ずバックアップを取得してください
2. 本番環境では実行しないでください
3. 実行時間が長くなる可能性があります(約5分)
*/
-- 実際のクエリ
ツール別:コメントアウトのショートカット
効率よくコメントアウトするためのショートカットキーです。
phpMyAdmin
単行コメント:
- Windows:
Ctrl + /
- Mac:
Command + /
選択した行が --
でコメントアウトされます。
複数行コメント:
- 範囲を選択して
Ctrl + Shift + /
(Windows) /* */
で囲まれます
MySQL Workbench
コメント化:
- Windows:
Ctrl + /
- Mac:
Command + /
コメント解除:
- 同じショートカットをもう一度押す
Visual Studio Code (SQL拡張機能)
コメント化:
- Windows:
Ctrl + /
- Mac:
Command + /
ブロックコメント:
- Windows:
Shift + Alt + A
- Mac:
Shift + Option + A
DBeaver
コメント化/解除:
- Windows:
Ctrl + /
- Mac:
Command + /
複数行コメント:
- Windows:
Ctrl + Shift + /
- Mac:
Command + Shift + /
コメントの書き方のベストプラクティス
良いコメントを書くための5つのルールです。
ルール1:「何を」ではなく「なぜ」を書く
ダメな例:
-- user_idとnameを取得
SELECT user_id, name FROM users;
良い例:
-- メール送信用に、アクティブユーザーの基本情報のみ取得
-- (パフォーマンス考慮で全カラムは取得しない)
SELECT user_id, name FROM users WHERE status = 'active';
ルール2:簡潔に書く
ダメな例:
-- このクエリは、ユーザーテーブルから、ステータスがアクティブである
-- すべてのユーザーの情報を取得するためのものです。
SELECT * FROM users WHERE status = 'active';
良い例:
-- アクティブユーザーを取得
SELECT * FROM users WHERE status = 'active';
ルール3:最新の状態に保つ
コードを変更したら、コメントも更新しましょう。
ダメな例:
-- 全ユーザーを取得
SELECT * FROM users WHERE status = 'active'; -- 実際は条件付き
コメントとコードが矛盾しています。
ルール4:日本語と英語を混ぜない
チームの方針に合わせて、どちらかに統一しましょう。
日本語で統一:
-- アクティブなユーザーを取得
SELECT * FROM users WHERE status = 'active';
英語で統一:
-- Get active users
SELECT * FROM users WHERE status = 'active';
ルール5:個人情報は書かない
コメントに個人情報やパスワードを書くのは厳禁です。
ダメな例:
-- テストユーザー: test@example.com / password: test123
SELECT * FROM users WHERE email = 'test@example.com';
まとめ:コメントアウトでSQLを読みやすくしよう
コメントアウトは、SQLを書く上で欠かせないテクニックです。
この記事の重要ポイント:
- 3つの書き方 →
--
、/* */
、#
(MySQLのみ) - 推奨は
--
と/* */
→ どのデータベースでも使える - 実践的な使い方 → 説明、デバッグ、ToDo、履歴記録
- 書くべき場所 → 複雑なロジック、パフォーマンスの理由、将来の変更予定
- 書かないべき場所 → 当たり前のこと、不要な古いコード
- ベストプラクティス → 「なぜ」を書く、簡潔に、最新に保つ
コメントを書く習慣をつけると:
- 後で見返した時にすぐ理解できる
- チームメンバーとの共有がスムーズ
- バグの原因を見つけやすい
- メンテナンスが楽になる
最初は面倒に感じるかもしれませんが、必ず自分を助けてくれます。
明日の自分、そしてチームメンバーのために、適切なコメントを書く習慣をつけましょう!
コメント