Запах кода SQL

Не могли бы вы перечислить некоторые из плохих практик в SQL, которые новички делают?

Я нашел использование цикла WHILE в сценариях, которые можно было бы решить с помощью операций набора.

Другим примером является вставка данных только в том случае, если они не существуют. Это может быть достигнуто с помощью LEFT OUTER JOIN. Некоторые люди идут на "IF"

Любые другие мысли?

Изменить: то, что я ищу, – это конкретные сценарии (как упоминалось в вопросе), которые могут быть достигнуты с использованием SQL без использования процедурных конструкций

благодаря

Lijo

Вот некоторые из них, которые я видел:

  • Использование курсоров вместо эквивалентных (и более быстрых) операций установки (объединения и т. Д.).
  • Динамический SQL для всего.
  • Код, открытый для атак SQL Injection.
  • Полное внешнее соединение, даже если оно не требуется.
  • Огромные хранимые процедуры (сотни / тысячи строк).
  • Без комментариев.

Размещение ODBC или динамических SQL-вызовов по всему коду.

Часто лучше определить уровень абстракции данных, обеспечивающий доступ к базам данных. Весь код SQL может скрываться в этом слое. Это часто позволяет избежать повторения подобных запросов и упрощает работу с новыми моделями данных.

Лично для меня: все, что не является простым выражением INSERT, UPDATE, DELETE или SELECT

Я не люблю логику в SQL.