コメント -- / # / /* */
クエリの意図を記録したり、一時的に実行を無効化したりするためのコメント構文です。『SQL』では一行コメントとブロックコメントの2種類が使用できます。
構文
-- 一行コメント:行末まで無視されます。 SELECT * FROM fighters; # 一行コメント(MySQL専用):MySQLではハッシュ記号も使用できます。 SELECT * FROM fighters; /* ブロックコメント: 複数行にまたがって記述できます。 */ SELECT * FROM fighters; SELECT name /* インラインコメント */ FROM fighters;
構文一覧
| 構文 | 概要 |
|---|---|
| -- コメント | 行末までをコメントとして無視します。標準SQLで定義されており、すべての主要なRDBMSで使用できます。 |
| # コメント | 行末までをコメントとして無視します。MySQL専用の構文です。PostgreSQL・Oracle・SQL Serverでは使用できません。 |
| /* コメント */ | 開始記号と終了記号の間をコメントとして無視します。複数行にまたがって記述でき、行の途中にも挿入できます。 |
DBMSごとの対応表
| DBMS | -- コメント | # コメント | /* */ コメント |
|---|---|---|---|
| MySQL | 使用可。 | 使用可。 | 使用可。 |
| PostgreSQL | 使用可。 | 使用不可。 | 使用可。 |
| Oracle | 使用可。 | 使用不可。 | 使用可。 |
| SQL Server | 使用可。 | 使用不可。 | 使用可。 |
| SQLite | 使用可。 | 使用不可。 | 使用可。 |
サンプルコード
SQL
-- fighters テーブルの作成(KOFキャラクターのサンプルデータ)。
CREATE TABLE fighters (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL, -- キャラクター名
team VARCHAR(50), -- 所属チーム
power INT -- 戦闘力スコア
);
/* 初期データを挿入します。
KOFを代表するキャラクターを5名登録します。 */
INSERT INTO fighters (id, name, team, power) VALUES
(1, 'テリー・ボガード', 'チームアメリカ', 92),
(2, '草薙京', 'チーム草薙', 95),
(3, '八神庵', 'チーム八神', 94),
(4, '不知火舞', 'チーム不知火', 88),
(5, 'ロック・ハワード', 'チームガロ', 90);
-- 戦闘力が90以上のキャラクターを取得します。
SELECT
id,
name,
team,
power
FROM fighters
WHERE power >= 90 -- 閾値:90点以上を強キャラとして分類
ORDER BY power DESC;
実行結果
-- SELECT id, name, team, power FROM fighters WHERE power >= 90 ORDER BY power DESC; の結果例 -- +----+--------------------+--------------------+-------+ -- | id | name | team | power | -- +----+--------------------+--------------------+-------+ -- | 2 | 草薙京 | チーム草薙 | 95 | -- | 3 | 八神庵 | チーム八神 | 94 | -- | 1 | テリー・ボガード | チームアメリカ | 92 | -- | 5 | ロック・ハワード | チームガロ | 90 | -- +----+--------------------+--------------------+-------+
デバッグ用コメントアウトの例
SQL
-- 条件を一時的に無効化してデバッグします。
SELECT name, team, power
FROM fighters
WHERE 1 = 1
-- AND team = 'チーム草薙' -- チーム絞り込み(一時的に無効)
AND power >= 88
ORDER BY power DESC;
/* 別の並び順で確認したい場合はこちらを使います(テスト用)。
SELECT name, team, power
FROM fighters
ORDER BY name ASC;
*/
ストアドプロシージャでの使い方
SQL
/* ストアドプロシージャ:指定チームのキャラクター一覧を取得します。
引数:
p_team VARCHAR(50) -- 検索するチーム名
*/
DELIMITER //
CREATE PROCEDURE get_fighters_by_team(
IN p_team VARCHAR(50) -- 検索対象のチーム名を受け取ります
)
BEGIN
-- 指定チームのキャラクターを戦闘力の高い順に返します。
SELECT
id,
name,
power
FROM fighters
WHERE team = p_team -- 引数のチーム名でフィルタします
ORDER BY power DESC; -- 戦闘力の降順で並べます
END //
DELIMITER ;
-- プロシージャを呼び出します。
CALL get_fighters_by_team('チーム草薙');
実行結果
-- CALL get_fighters_by_team('チーム草薙'); の結果例
-- +----+-----------+-------+
-- | id | name | power |
-- +----+-----------+-------+
-- | 2 | 草薙京 | 95 |
-- +----+-----------+-------+
データベース別の書き方
移植性を考慮する場合は、どのRDBMSでも動作する『--』と『/* */』のみを使用することを推奨します。
-- MySQL:3種類すべて使用できます。 -- SELECT * FROM fighters; # SELECT * FROM fighters; /* SELECT * FROM fighters; */ -- PostgreSQL / Oracle / SQL Server / SQLite:-- と /* */ のみ使用できます。 -- SELECT * FROM fighters; /* SELECT * FROM fighters; */
概要
コメントはSQLの実行に影響を与えず、クエリの意図を記録したり不要な処理を一時的に無効化したりするために使用します。チーム開発では、複雑なJOINや条件式の意図をコメントで補足しておくと保守性が向上します。
MySQLの『#』コメントはMySQL専用の構文です。他のRDBMSとの互換性を保つためには使用を控え、標準の『--』を使用することを推奨します。
ストアドプロシージャや複雑なビューでは、『/* */』ブロックコメントを使って引数の説明・処理のフロー・注意事項を記録しておくと、後からコードを読んだときに理解しやすくなります。コメントの活用は『VIEW』や『WITH / CTE』と組み合わせると特に効果的です。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。