Сводка

Завершено

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

Вы узнали, как:

  • Написание общих табличных выражений (CTEs) для организации сложных запросов и использования рекурсивных шаблонов для обхода иерархических структур данных
  • Применение функций окна для ранжирования, подсчета промежуточных итогов, скользящих средних и аналитических вычислений, сохраняющих детализацию на уровне строк.
  • Использование функций JSON, включая JSON_OBJECT, JSON_ARRAY, JSON_ARRAYAGGOPENJSONи JSON_VALUE для анализа, создания и преобразования данных JSON
  • Реализуйте регулярные выражения с REGEXP_LIKE, REGEXP_REPLACE, REGEXP_SUBSTR и связанных функций для сопоставления шаблонов и обработки текста.
  • Поиск приблизительных совпадений с помощью нечетких строковых функций, таких как EDIT_DISTANCE, EDIT_DISTANCE_SIMILARITYи JARO_WINKLER_DISTANCE
  • Создайте таблицы графов и напишите запросы с помощью MATCH оператора и SHORTEST_PATH для траверсирования связей
  • Написать коррелированные подзапросы для построчного сравнения, проверки существования и вычислений для каждой строки
  • Реализуйте структурированную обработку ошибок с помощью TRY...CATCH функций для обработки ошибок, THROW и надлежащего управления транзакциями.

Основные выводы

  • Рекурсивные CTE являются стандартным подходом для обхода иерархических данных, таких как организационные диаграммы или структуры спецификаций материалов
  • Функции окна с OVER предложениями позволяют аналитические вычисления без сворачивания строк. Используйте их вместо самосоединений для вычисления накопительных итогов и ранжирования
  • JSON_OBJECT и JSON_ARRAYAGG создают JSON из реляционных данных, в то время как OPENJSON разбирает JSON на реляционные строки
  • JARO_WINKLER_DISTANCE оптимизирован для сопоставления имен; EDIT_DISTANCE_SIMILARITY лучше подходит для более длинных строк
  • Всегда проверяйте @@TRANCOUNT перед блоками ROLLBACK в CATCH, чтобы обрабатывать случаи, когда транзакция неактивна.
  • Объедините SET XACT_ABORT ON с TRY...CATCH для полной защиты транзакций.

Узнать больше