このトピックでは、SQLコーディングの基本的なガイドラインと詳細な仕様について説明します。
コーディングガイドライン
SQLコードを記述する際は、以下のガイドラインに注意してください。
- コードは包括的です。
- コード行は明確で、整然としており、整理され、構造化されています。
- SQLコーディング中は、最適な実行速度が考慮されます。
- 必要に応じて、コードの可読性を高めるためにコメントを追加する必要があります。
- ガイドラインは、開発者のコーディング動作に強制力のない制約を課します。実際には、開発者が一般的なルールに従っている場合は、合理的な逸脱が許容されます。
- すべての SQLキーワードと予約語は、select/SELECT、from/FROM、where/WHERE、and/AND、or/OR、union/UNION、insert/INSERT、delete/DELETE、group/GROUP、having/HAVING、count/COUNTなど、すべて大文字または小文字にする必要があります。Select や seLECT などの大文字と小文字が混在する文字は使用しないでください。
- 1 つのインデント単位には 4 つのスペースが含まれます。すべてのインデントは、1 つのインデント単位の整数倍である必要があります。コードは、その階層に基づいて配置されます。
SELECT *ステートメントは禁止されています。すべてのステートメントで列名を指定する必要があります。- 対応する開始括弧と閉じ括弧は同じ列に配置する必要があります。
SQLコーディング仕様
SQLコードを記述する際は、以下の仕様に注意してください。
- コードヘッダー
コードヘッダーには、件名、説明、作成者、日付などの情報が含まれます。ユーザーが後で変更レコードを追加できるように、変更ログとタイトル行の行を予約します。各行には最大 80 文字を含めることができます。次のコードは、サンプルテンプレートを示しています。
-- MaxCompute(ODPS) SQL --************************************************************************** -- ** 件名: トランザクション -- ** 説明: トランザクションの払い戻し分析 -- ** 作成者: Youma -- ** 作成日: 20170616 -- ** 変更ログ: -- ** 変更日 変更者 内容 -- yyyymmdd 名前 コメント -- 20170831 Wuma biz_type=1234 トランザクションに関するコメントを追加 --************************************************************************** - フィールドの配置
- SELECTステートメントで選択されたフィールドごとに 1 行使用します。
- SELECTという単語と最初に選択されたフィールドの間に 1 つのインデント単位を予約します。
- 各フィールド名は、新しい行で 2 つのインデント単位とコンマ (,) で開始します。
- 2 つのフィールドの間にコンマ (,) を 2 番目のフィールドの直前に配置します。
- ASステートメントを対応するフィールドと同じ行に配置し、複数のフィールドのASステートメントを同じ列に保持します。

- INSERTステートメントの句の配置
INSERTステートメントの句を同じ行に配置します。
- SELECTステートメントの句の配置 SELECTステートメントのFROM、WHERE、GROUP BY、HAVING、ORDER BY、JOIN、UNION などの句は、次の要件に従って配置する必要があります。
- 句ごとに 1 行使用します。
- 句は SELECTステートメントと同じ左揃えにします。
- 句の最初の単語とその内容の間に 2 つのインデント単位を予約します。
- WHERE句の論理演算子 and と or は、キーワード WHERE と同じ左揃えにする必要があります。
- ORDER BY や GROUP BY などの句名の長さが 2 つのインデント単位を超える場合は、句名とその内容の間にスペースを追加します。

- 演算子の前後のスペース 各算術演算子と論理演算子の前後に 1 つのスペースを予約します。コードの長さが 80 文字を超えない限り、すべての演算子を同じ行に保持します。

- SELECT CASEステートメントの配置 SELECT CASEステートメントは、変数の値を評価するために使用されます。SELECT CASEステートメントに関する以下の仕様に注意してください。
- WHEN句をCASEステートメントの 1 つのインデント後に同じ行に記述します。
- WHEN句ごとに 1 行使用します。句が長すぎる場合は、行を折り返します。

- CASEステートメントには ELSE句を含める必要があります。ELSE句は WHEN句と同じ左揃えにする必要があります。
- 入れ子になったクエリ 入れ子になったクエリは、データウェアハウスシステムの抽出、変換、ロード (ETL) 操作を実装するためによく使用されます。次の図は、入れ子になったクエリの配置例を示しています。

- テーブルエイリアス
- SELECTステートメントでテーブルのエイリアスが定義されている場合は、ステートメントでテーブルを参照するたびにエイリアスを使用する必要があります。SELECTステートメントの各テーブルにエイリアスを指定します。
- テーブルエイリアスはアルファベット順に定義することをお勧めします。また、エイリアスにキーワードを使用しないでください。
- 入れ子になったクエリでは、SQLステートメントのレベル 1 ~ 4 は、part、segment、unit、detail という名前で、それぞれ P、S、U、D と省略されます。レベル 1 ~ 4 を表すために a、b、c、d を使用することもできます。同じレベルの複数の句を区別するには、レベルを表す文字の後に 1、2、3、4 などの数字を追加します。必要に応じて、テーブルエイリアスにコメントを追加します。

- SQLコメント
- 各SQLステートメントにコメントを追加します。
- 各SQLステートメントのコメントには別の行を使用し、コメントをSQLステートメントの前に配置します。
- フィールドのコメントは、フィールドの直後に配置します。
- 理解しにくい句にはコメントを追加します。
- 重要なコードにコメントを追加します。
- ステートメントが長い場合は、各セグメントの目的に基づいてコメントを追加することをお勧めします。
- 定数または変数の説明が必要です。有効な値範囲のコメントはオプションです。
- SQLステートメントにコメントを追加するには、SQLステートメントの最後にマウスカーソルを置き、
Ctrl+/またはcmd+/を押します。複数行のコードにコメントするには、コメントを追加するコードを選択し、Ctrl+/またはcmd+/を押します。説明- コンピューターで Windows オペレーティングシステムを実行している場合は、
Ctrl+/を押して SQLステートメントにコメントを追加します。 - コンピューターで macOS を実行している場合は、
cmd+/を押して SQLステートメントにコメントを追加します。
- コンピューターで Windows オペレーティングシステムを実行している場合は、