本ページでは、SQL コーディングの基本的なガイドラインと詳細な仕様について説明します。
SQL コーディングのガイドライン
SQL コーディングでは、次のガイドラインの点にご注意ください。
- コードが包括的であることを確認します。
- コード行が明確で、きちんとしていて、よく整理され、構造化されていることを確認します。
- SQL コーディングでは、最適な実行速度を考慮します。
- コードの可読性を高めるために、必要に応じてコメントを記載します。
- ガイドラインは、開発者のコーディング作業に対し、必須ではない制約を課しています。 実際には、開発者が一般的な規則に従う場合、理解可能な逸脱が許可されます。
- すべてのキーワードと予約語には小文字を使用してください。 キーワードと予約語にはSELECT、FROM、WHERE、AND、OR 、UNION、INSERT、DELETE、GROUP、HAVING、COUNT が含まれます 。
- キーワードと予約語に加えて、フィールド名やテーブルエイリアスなどのその他のコードも小文字にします。
- インデントの単位にはスペースが 4 つ含まれます。 すべてのインデントは、インデント単位の整数倍でなければなりません。 コードは、その階層に従って整列されます。
SELECT *
文は禁止されています。 列名はすべてのステートメントについて指定する必要があります。- 対になっている開きかっこと閉じかっこは同じ列に配置する必要があります。
SQL コーディング仕様
SQL コーディングでは、次の仕様にご注意ください。
- コードヘッダー
コードヘッダーには、件名、説明、作成者、日付などの情報が含まれています。 変更ログ用の行とタイトル行を予約して、後のユーザーが変更レコードを追加できるようにします。 各行は、80 文字まで含むことができます。 次のテンプレートをご参照ください。
-- MaxCompute(ODPS) SQL --************************************************************************** -- ** Subject: Transaction -- ** Description: Transaction refund analysis -- ** Author: Youma -- ** Created on: 20170616 -- ** Change log: -- ** Modified on Modified by Content -- yyyymmdd name comment -- 20170831 Wuma Add a comment on the biz_type=1234 transaction --**************************************************************************
- フィールド配置
- SELECT ステートメント用に選択された各フィールドに行を使用します。
- SELECT という単語と最初に選択したフィールドの間のインデントを1単位予約します。
- 2 単位のインデントとコンマ ( , ) を使用して、他の各フィールド名を新しい行で開始します。
- 2 つのフィールド間には、2 つ目のフィールドの直前にコンマ ( , ) を記述します。
- AS ステートメントを対応するフィールドと同じ行に配置し、複数のフィールドの AS ステートメントを同じ列に保持します。
- INSERT ステートメントの句の配置
INSERT ステートメントの句を同じ行に配置します。
- SELECT ステートメントの句の配置
SELECT ステートメント中の FROM、WHERE、GROUP BY、HAVING、ORDER BY、JOIN、そして UNION などの句は、次の要件に従って配置する必要があります。
- 各句に行を使用します。
- 句が SELECT ステートメントと左揃えになっていることを確認します。
- 句の最初の単語とその内容の間に 2 単位のインデントを予約します。
- WHERE 句で、AND や OR などの論理演算子をWHERE という単語と左揃えに保持します。
- 句名の長さが ORDER BY や GROUP BY のようにインデントの 2 単位を超える場合 、句名とその内容の間にスペースを追加します。
- 演算子の前後の間隔
各算術演算子と論理演算子の前後にスペースを 1 つずつ予約します。 コードの長さが 80 文字を超えない限り、すべての演算子を同じ行に入れます。
- SELECT CASE ステートメントの配置
SELECT CASE ステートメントは、変数の値を評価するために使用されます。 SELECT CASE ステートメントに関する以下の仕様に注意してください。
- WHEN 句 は、同じ行の CASE ステートメントから 1 インデント単位だけ後に記述します。
- WHEN 句ごとに行を使用します。 句が長すぎる場合は、行を折り返します。
- CASE ステートメントには ELSE 句が含まれている必要があります。 ELSE 句は、WHEN 句と揃える必要があります。
- 入れ子になったクエリ
入れ子になったクエリは、データウェアハウスシステムの抽出、変換、および読み込み ( ETL ) プロセスの実装でよく使用されます。 次の図は、入れ子になったクエリを配置する例を示しています。
- テーブルエイリアス
- SELECT ステートメントでテーブルにエイリアスが定義されたら、ステートメントでテーブルを参照するときは常にエイリアスを使用する必要があります。 SELECT ステートメントで各テーブルのエイリアスを指定します。
- アルファベット順の文字を使用して、テーブルエイリアスを定義することを推奨します。
- 入れ子になったクエリでは、SQL ステートメントのレベル 1~4 はそれぞれ part、segment、unit、detail という名前で P、S、U、D と略されます。a、b、c、d
を使用して、レベル 1~4 を表すこともできます。
同じレベルで複数の句を区別するには、レベルを表す文字の後に 1、2、3、4 などの数字を追加します。
- SQL コメント
- 各 SQL ステートメントにコメントを追加します。
- 各 SQL ステートメントのコメントに個別の行を使用し、コメントを SQL ステートメントの前に配置します。
- フィールドの直後にフィールドのコメントを配置します。
- 理解しにくい句にコメントを追加します。
- 重要なコードにコメントを追加します。
- ステートメントが長い場合は、各セグメントの目的に基づいてコメントを追加することを推奨します。
- 定数または変数には、説明が必要です。 有効な値の範囲に関するコメントは任意です。