SQLのコメントアウト完全ガイド|3つの書き方と使い分けを初心者向けに解説

データベース・SQL
スポンサーリンク
  1. コメントアウトって何?なぜ必要なの?
  2. SQLのコメントアウト3つの書き方
    1. 方法1:– (ハイフン2つ)単行コメント
    2. 方法2:/* */ 複数行コメント
    3. 方法3:# (シャープ)単行コメント
  3. コメントアウトの実践的な使い方
    1. 使い方1:複雑なクエリの説明
    2. 使い方2:条件の意図を明確にする
    3. 使い方3:一時的にコードを無効化する(デバッグ)
    4. 使い方4:バージョン管理の記録
    5. 使い方5:テスト用データの切り替え
    6. 使い方6:ToDo(やることリスト)
  4. よくある間違いと注意点
    1. 間違い1:ハイフンの後にスペースを入れ忘れ
    2. 間違い2:複数行コメントの閉じ忘れ
    3. 間違い3:コメントの中にコメント終了記号
    4. 間違い4:文字列の中のコメント記号
    5. 間違い5:重要な情報をコメントに書く
  5. コメントを書くべき場所と書かないべき場所
    1. コメントを書くべき場所
    2. コメントを書かないべき場所
  6. データベース別のコメント対応表
    1. 対応表
    2. おすすめの使い分け
  7. 便利なコメントテンプレート
    1. テンプレート1:クエリの説明用
    2. テンプレート2:修正履歴用
    3. テンプレート3:セクション区切り用
    4. テンプレート4:注意事項用
  8. ツール別:コメントアウトのショートカット
    1. phpMyAdmin
    2. MySQL Workbench
    3. Visual Studio Code (SQL拡張機能)
    4. DBeaver
  9. コメントの書き方のベストプラクティス
    1. ルール1:「何を」ではなく「なぜ」を書く
    2. ルール2:簡潔に書く
    3. ルール3:最新の状態に保つ
    4. ルール4:日本語と英語を混ぜない
    5. ルール5:個人情報は書かない
  10. まとめ:コメントアウトでSQLを読みやすくしよう

コメントアウトって何?なぜ必要なの?

データベースを操作する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、履歴記録
  • 書くべき場所 → 複雑なロジック、パフォーマンスの理由、将来の変更予定
  • 書かないべき場所 → 当たり前のこと、不要な古いコード
  • ベストプラクティス → 「なぜ」を書く、簡潔に、最新に保つ

コメントを書く習慣をつけると:

  • 後で見返した時にすぐ理解できる
  • チームメンバーとの共有がスムーズ
  • バグの原因を見つけやすい
  • メンテナンスが楽になる

最初は面倒に感じるかもしれませんが、必ず自分を助けてくれます。

明日の自分、そしてチームメンバーのために、適切なコメントを書く習慣をつけましょう!

コメント

タイトルとURLをコピーしました