Ответ
На проектах с SQL Server активно использовал следующий функционал T-SQL:
- Хранимые процедуры и функции: Для инкапсуляции бизнес-логики, повышения безопасности и производительности.
- Триггеры (DML): В основном для аудита изменений и поддержания сложной целостности данных, с осторожностью из-за влияния на производительность.
- CTE (Common Table Expressions) и рекурсивные запросы: Для работы с иерархическими данными и построения сложных, читаемых запросов.
- Оконные функции:
ROW_NUMBER(),RANK(),SUM() OVER()для аналитики без группировки исходных строк. - Динамический SQL: Для построения гибких запросов, где структура запроса зависит от параметров. Всегда с параметризацией для защиты от SQL-инъекций.
DECLARE @TableName sysname = 'Users', @Id INT = 5; DECLARE @Sql NVARCHAR(MAX); SET @Sql = N'SELECT * FROM ' + QUOTENAME(@TableName) + ' WHERE Id = @ParamId'; EXEC sp_executesql @Sql, N'@ParamId INT', @ParamId = @Id; - Явное управление транзакциями:
BEGIN TRAN,COMMIT,ROLLBACKдля атомарности операций. - Временные таблицы (#temp) и табличные переменные (@table): Для хранения промежуточных результатов.
- Оператор
MERGE: Для выполнения операций "upsert" (обновить или вставить) одной командой. - PIVOT/UNPIVOT: Для преобразования данных из строк в столбцы и обратно.