掲示板お問い合わせランダムジャンプ

Top Index
Yahooは検索方式が変わったせいか、うまくサイト内検索できないなぁ。つーわけでグーグルに変更。


2005年05月12日
SQL文の字下げ目安
SQLは1行で構成される為、処理によっては非常に長文となります。
長ければ長いほど読みにくくなってしまうので、
読み易い書き方のルールみたいなものはないかと検索してみましたが、それらしいものはないみたいです。

SQL ServerのEnterprise ManagerはSQLを整形はしてくれますが・・・
いや、結構きれいになるんですけど、いまいちですね。

ということで、Enterprise Managerの整形方法を元に整形方法をまとめてみた。
予約語(関数以外)があれば改行、字下げ

SELECT
    TableA.ColumnA, TableA.ColumnB
FROM
    TableA


列をたくさん表示する場合、適当なところで「,」をつけて改行

SELECT
    TableA.ColumnA, TableA.ColumnB,
    TableA.ColumnC
FROM
    TableA


リレーションの予約語も改行して字下げ

SELECT
    TableA.ColumnA, TableB.ColumnB
FROM
    TableA
INNER JOIN
    TableB
ON
    TableA.ColumnA = TableB.ColumnA


サブクエリも字下げ

SELECT
    SubQueryC.ColumnA
FROM (
    SELECT
        TableA.ColumnA
    FROM
        TableA
    GROUP BY
        TableA.ColumnA
) AS SubQueryC


特にサブクエリを1行にまとめて書くと、区切りが不明瞭になる為、上記のように整形するかどうかはともかく、なんらかの配慮をしないとデバッグに時間がかかります。
[ 投稿者:mk3008 at 23:51 | ADO.NET Tips | コメント(4) | トラックバック(0) ]

この記事へのコメント
私と一緒ですね。
私とほとんど同じです。
フィールドは 1 つずつカンマの位置で改行しますね。
サブクエリも字下げします。

また短い SQL 文は 1 行でまとめて書くようにしています。
投稿者: じゃんぬねっと at 2005-05-16 12:43:12
SQL整形あれこれ
>フィールドは 1 つずつカンマの位置で改行しますね。
そういう修正方法もあるみたいですね。

そちらのほうが見やすそうですけど、凄まじく行数を取りそうだったので、とりあえず上記のようにしてみました。

>また短い SQL 文は 1 行でまとめて書くようにしています。
簡単なDELETE文などは、そちらにした方がよさそうです。
投稿者: mk3008 at 2005-05-16 21:18:09
無題
>>列をたくさん表示する場合、適当なところで「,」をつけて改行
これ最悪です。UNIONするときとか特に…
マジで氏ねっておもいます(笑)
投稿者: インデントマニア at 2009-01-10 11:12:40
SQLインデント2008
>インデントマニアさん
こんにちは。コメントありがとうございます。
「適当なところで・・・改行」ってところの否定コメント・・・ですよね?
自分で書いておいてなんですが、たしかに「適当」ってのはよくないですね(^^;

いまは
    1列ごとに改行
を基本とし、
    極端に短いクエリ(サブクエリ含め)の場合、クエリを改行せず1文で記述
の2つでやっております。

具体的にはこんな感じ。

SELECT
  COLUMN_A,
   COLUMN_B,
  COLUMN_C
FROM
  TABLE_A
INNER JOIN
  TABLE_B
ON
  TABLE_A.COLUMN_A = TABLE_B.COLUMN_A AND
  TABLE_A.COLUMN_B = TABLE_B.COLUMN_B

(余談)
本題では取り扱ってませんが、改行をどこの位置で入れるか?
っていうも意見が分かれそうなので自分なりの解釈をつけときます。

私は、カンマ、ANDをつけてから改行していますが、
こういう風に記述する人もいます。

SELECT
  COLUMN_A
 , COLUMN_B
 , COLUMN_C
FROM
  TABLE_A

この場合ですと、
コメントアウトがしやすい
という利点がありますが、
書きづらい(2つ目以降のカラムのインデントが書きにくい)
カラムに注目しづらい(頭に余計な文字がついているので視認性が悪いと思う)
ので、私はこの書き方はしていません。
投稿者: mk3008 at 2009-01-10 16:07:03

この記事へのトラックバック

この記事へのトラックバックURL
http://shinshu.fm/MHz/88.44/a03231/0000049011.trackback

この記事の固定URL
http://shinshu.fm/MHz/88.44/archives/0000049011.html

記事へのコメント
 
認証コード:
画像に表示されるコードを半角英数字で入力して下さい。画像が読み難い場合はこちら
簡単演算認証: 5 + 2 =
足し算の答えを半角英数字で入力して下さい。
名前: [必須]
URL/Email:
タイトル:
コメント: