Какому стандарту кодирования SQL вы следуете?

Я знаю, что это долго, но programming-style потерпите, это важно. Этот sql-select вопрос открыл кучу червей. А sql-select если вам не нравятся блоки clean-code базы данных, читайте дальше.

И, прежде coding-convention чем кто-либо подумает о том, чтобы coding-standards сбить мой ответ, пожалуйста прочтите sql-syntax следующую статью и связанные sql с ней статьи о блокировке sql и перекомпиляции; два наиболее sql-select разрушительных попадания clean-code ресурсов в базу данных SQL.

http://support.microsoft.com/kb/263889

Я coding-convention могу печатать довольно быстро, и sql-query мне нравится печатать не sql-syntax больше, чем другим людям. Но coding-convention за пунктами ниже я слежу coding-style очень внимательно, даже если coding-standards это больше печатает. Настолько coding-standards много, что я создал свои sql-select собственные приложения SP, чтобы clean-code делать это за меня.

Вопросы, о programming-style которых я говорю, действительно sqlselect важны! Вы можете даже сказать code-style себе: «Вы шутите, это не coding-style проблема», ну, тогда вы не sql-statement читали статьи выше. И, совершенно sql-select глупо, что M $ поместил эти coding-standards точки в ЗАПИСИ. Эти вопросы coding-style для меня должны быть СМЕНЫМИ sql-query и КРИЧАТЬ.

Я также много пишу sql для создания своих базовых sql-syntax сценариев с использованием coding-standards приложений C# для ускорения sqlselect разработки, и эти методы clean-code очень надежны (на 10 лет), чтобы clean-code упростить и особенно ускорить coding-standards создание сценариев SP.

Есть coding-standards еще кое-что, но это то, что clean-code я делаю в течение первых sql-syntax 60% всего.


Рекомендации

  • Используйте скобки вокруг объектов, чтобы обработчик запросов точно знал поле, когда он его видит.
  • Используйте ОДИН СЛУЧАЙ в качестве имен объектов таблицы и полей.
  • При вызове SP из приложения используйте полное имя [dbo]. [procName] с правильным владельцем И регистром. Без шуток! Прочтите статьи выше!
  • Ссылайтесь на владельца объекта, чтобы безопасность была известна явно, и ее не нужно было выяснять.
  • НЕ используйте sp_, поскольку это относится к хранимым в системе процессам и накладным расходам.
  • Используйте SET NOCOUNT ON и SET NOCOUNT OFF, чтобы исключить дополнительные накладные расходы, чтобы отслеживать, сколько записей обновляется в сохраненной процедуре, если они вам не нужны. Обычно вы этого не делаете, и вы можете значительно повысить производительность.

Настройки

  • Префикс сохраненных процедур с помощью proc
  • Суффикс каждой сохраненной процедуры с помощью SEL, UPD, DEL, INS (или SELECT, UPDATE, DELETE, INSERT).
  • Используйте заглавные буквы зарезервированных слов.
  • Основные ключевые слова в новой строке (сценарии)
  • Используйте запятые перед столбцами (сценарии)
  • Представления с префиксом vw
  • Не используйте префиксы для таблиц.
  • Имена таблиц в единственном числе
  • Добавьте суффикс к стандартным именам, таким как «_ByPK», «_OrderByLastName» или «_Top15Orders», для вариантов стандартного SP.

Выбрать

CREATE PROC [dbo].[procTable_SEL]
AS
SET NOCOUNT ON
SELECT
    [Column1] = T1.[col1]
  , [Column2] = T1.[col2]
  , [Column3] = T2.[col3]
FROM [dbo].[Table] T1    
INNER JOIN ON [dbo].[Table2] T2 ON T1.ID = T2.ID
WHERE
      T1.[col1] = 'xxx'
  AND T2.[Col3] = 'yyy'
SET NOCOUNT OFF
GO

Обновить

CREATE PROC [dbo].[procTable_UPD]
AS
SET NOCOUNT ON
UPDATE t1 SET
    [Column1] = @Value1
  , [Column2] = @Value2
  , [Column3] = @Value3
FROM [dbo].[Table1] T1
INNER JOIN ON [dbo].[Table2] T2 ON T1.[ID] = T2.[ID]
WHERE
      T1.[col1] = 'xxx'
  AND T2.[Col3] = 'yyy'
SET NOCOUNT OFF
GO

Вставить

CREATE PROC [dbo].[procTable_INS]
AS
SET NOCOUNT ON
INSERT INTO [Table1] (
[Column1]
  , [Column2]
  , [Column3]
)
VALUES (
    @Value1
  , @Value2
  , @Value3
)
SET NOCOUNT OFF
GO

ИЛИ

CREATE PROC dbo.procTable_INS
AS
SET NOCOUNT ON
INSERT INTO [table1] (
    [Column1]
  , [Column2]
  , [Column3]
)
SELECT
    [Column1] = T1.col1
  , [Column2] = T1.col2
  , [Column3] = T2.col3
FROM dbo.Table1 T1    
INNER JOIN ON Table2 T2 ON T1.ID = T2.ID
WHERE
      T1.[col1] = 'xxx'
  AND T2.[Col3] = 'yyy'
SET NOCOUNT OFF
GO

Удалить

CREATE PROC dbo.procTable_DEL
AS
SET NOCOUNT ON
DELETE
FROM [dbo].[Table1] T1
INNER JOIN ON [dbo].[Table2] T2 ON T1.[ID] = T2.[ID]
WHERE
      T1.[col1] = 'xxx'
  AND T2.[Col3] = 'yyy'
SET NOCOUNT OFF
GO

sql

coding-style

2022-10-11T13:29:30+00:00