SQL の書式設定は、さまざまな相違点や意見の相違がある領域です... しかし、fwiw、私は読みやすさに焦点を当てるのが好きであり、何をするにしても、読みやすさを低下させる規則に一貫して準拠することは、古い決まり文句にあるように、 「愚かな一貫性」(「愚かな一貫性は、単純な心のホブゴブリンです」)
したがって、それらをルールと呼ぶ代わりに、いくつかのガイドラインを示します。SQL ステートメント (Select、Insert、Delete、From、Where、Having、Group BY、Order By など) の各主要句は、簡単に識別できるはずです。したがって、私は通常、それらを最高レベルでインデントします。次に、各句内で、次の論理サブ構造を均等にインデントします...など..しかし、個々のケースでそうする方が読みやすい場合は、パターンを自由に変更します(そして頻繁に行います)...複雑な Case ステートメントが良い例です。水平スクロールを必要とするものは読みやすさを大幅に低下させるため、複雑な (入れ子になった) Case 式を複数行で記述することがよくあります。その場合、SQL ステートメント内の論理的な場所に基づいて、そのようなステートメントの先頭をぶら下げインデントに保つようにします。
SQL データベースのコードは、コンピュータが小文字を使用するようになる前から長い間存在していたため、大文字のキーワードが好まれる歴史がありますが、私は伝統よりも読みやすさを好みます... (そして、私が使用するすべてのツールは現在、キーワードを色分けしています)とりあえず)
また、テーブル エイリアスを使用して、クエリの構造を理解するために目でスキャンしなければならないテキストの量を減らします (エイリアスが混乱を引き起こさない限り)。テーブルが 3 つまたは 4 つ未満のクエリでは、1 文字のエイリアスで問題ありません。すべてのテーブルが異なる文字で始まる場合は、テーブルの最初の文字を使用することがよくあります。最後に、データベースがサポートしている場合、キーワードの多くはオプションです ("Inner"、"Outer"、エイリアスの "As" など)。"Into" (Insert Into から) は Sql Server ではオプションですが、そうではありません。 Oracle の場合) したがって、コードをプラットフォームに依存しないようにする必要がある場合は、これを使用することに注意してください...
あなたの例、私は次のように書きます:
Select column1, column2
From table1 T1
Where column3 In (Select Top(1) column4
From table2 T2
Join table3 T3
On T2.column1 = T3.column1)
または
Select column1, column2
From table1 T1
Where column3 In
(Select Top(1) column4
From table2 T2
Join table3 T3
On T2.column1 = T3.column1)
select句にさらに多くの列がある場合は、2行目以降をインデントします...垂直方向にスクロールすると、水平方向にスクロールするのと同じくらい読みやすさが悪いため、通常、厳密な(行ごとに1列)種類のルールには従いません特に、画面の最初の 10 列だけにテキストがある場合)
Select column1, column2, Col3, Col4, column5,
column6, Column7, isNull(Column8, 'FedEx') Shipper,
Case Upper(Column9)
When 'EAST' Then 'JFK'
When 'SOUTH' Then 'ATL'
When 'WEST' Then 'LAX'
When 'NORTH' Then 'CHI' End HubPoint
From table1 T1
Where column3 In
(Select Top(1) column4
From table2 T2
Join table3 T3
On T2.column1 = T3.column1)
最も読みやすい方法でコードをフォーマットします...