適切な SQL クエリを作成したいので、SQL フォーマットの標準を知る必要があります。ロジックや効率性を意味するのではなく、正しいインデントとスペースを意味します。また、コマンドの場合も興味深いです。
適切な SQL 書式設定パターン (標準) はありますか?
適切な SQL クエリを作成したいので、SQL フォーマットの標準を知る必要があります。ロジックや効率性を意味するのではなく、正しいインデントとスペースを意味します。また、コマンドの場合も興味深いです。
適切な SQL 書式設定パターン (標準) はありますか?
データベースコーディング標準とガイドラインを見てください。2008年以降は古くなっていますが、まだ良いものは見つかりません。私は数ヶ月前にこれを探していて、本当にいいようです。
私はoracleサイトとmysqlサイトを見ていましたが、「モンスター」が正式な論文を発表することはありませんでした。
今は大文字のテーブル名についての議論を始めていませんが、ほとんどの場合、SELECT / UPDATE / INSERT / DELETE ステートメントをフォーマットする方法について考えるでしょう。パブロ・ドミンゲスによるドキュメントgibenでは、このように選択をフォーマットすることを提案しています
select t.Task_Id,
t.Course_Id,
t.Due_Dt,
t.Start_Time,
t.End_Time,
t.Name,
et.Completed_Flag,
et.Completed_Dt
from BusyWork.dbo.TB_TASK t
inner join BusyWork.dbo.ENROLLMENTTASK et
on t.Task_Id = et.Task_Id
where t.Due_Dt >= @pStartDate
and t.Due_Dt <= @pEndDate
and et.Member_Id = @pMemberId
order by t.Due_Dt,
t.Start_Time
そのようなスクリプト、特にその部分を読むのは(私にとって)非常に難しいと言えますfrom
。そのため、私たちのシステムでは、このような規則を使用しています
select
t.Task_Id,
t.Course_Id,
t.Due_Dt,
t.Start_Time,
t.End_Time,
t.Name,
et.Completed_Flag,
et.Completed_Dt
from BusyWork.dbo.TB_TASK as t
inner join BusyWork.dbo.ENROLLMENTTASK as et on t.Task_Id = et.Task_Id
where
t.Due_Dt >= @pStartDate and t.Due_Dt <= @pEndDate and
et.Member_Id = @pMemberId
order by t.Due_Dt, t.Start_Time
update
,delete
ステートメントでは、私は常に句を記述しようとしているので、 /にfrom
簡単に書き直してテストできますupdate
delete
select
update BusyWork.dbo.TB_TASK set
Due_Dt = getdate(),
Name = 'updated'
from BusyWork.dbo.TB_TASK as T
inner join BusyWork.dbo.ENROLLMENTTASK as et on t.Task_Id = et.Task_Id
where
t.Due_Dt >= @pStartDate and t.Due_Dt <= @pEndDate
delete BusyWork.dbo.TB_TASK
from BusyWork.dbo.TB_TASK as T
inner join BusyWork.dbo.ENROLLMENTTASK as et on t.Task_Id = et.Task_Id
where
t.Due_Dt >= @pStartDate and t.Due_Dt <= @pEndDate
ステートメントでは、節insert
を避けようとしているので、ステートメントをプレーンに簡単に書き換えることもできます。テーブルからフィールドを追加/削除した後の問題を回避するために、常に挿入で列を明示的に指定します。また、列名にエイリアスを使用してみてください。プレーンでテストするときに正しい値を確認できますvalues
select
select
insert into BusyWork.dbo.TB_TASK
(
Due_Dt,
Name
)
select
getdate() as Due_Dt,
'New' as Name
もう 1 つのルール - 列とテーブル/ビュー/テーブル関数には常にエイリアスを使用します。将来的にステートメントを変更するのが簡単になり、テーブル スキーマを変更する際の厄介なバグを回避するのに役立ちます。