有没有正确的SQL格式模式?

时间:2012-10-25 04:18:22

标签: sql formatting

我想写正确的SQL查询,我需要知道SQL格式的标准。我的意思不是逻辑或效率,我的意思是右缩进和空格。在命令的情况下我也很有趣。

是否有正确的SQL格式模式(标准)?

2 个答案:

答案 0 :(得分:1)

看看Database Coding Standard and Guideline。它自2008年以来已经过时,但我找不到更好的东西了。几个月前我正在寻找这个,看起来真的很棒。

我正在寻找oracle和mysql网站,但“怪物”从未发表过正式文件。

答案 1 :(得分:1)

我现在没有开始讨论大写表名,但大多数情况下你会考虑如何格式化select / update / insert / delete语句。在Pablo Dominguez的文档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

updatedelete语句中,我总是尝试编写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

另一条规则 - 始终对列和表/视图/表函数使用别名。将来修改语句会更容易,它可以帮助您在更改表模式时避免一些令人讨厌的错误。