Какому стандарту кодирования 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
Какому стандарту кодирования SQL вы следуете?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.