Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Transact-SQL ( T-SQL ) - это проприетарное расширение Microsoft и Sybase для языка SQL (язык структурированных запросов), используемого для взаимодействия с реляционными базами данных . T-SQL расширяет стандарт SQL и включает процедурное программирование , локальные переменные , различные вспомогательные функции для обработки строк, обработки дат, математики и т. Д., А также изменения в операторах DELETE и UPDATE .

Transact-SQL играет центральную роль в использовании Microsoft SQL Server . Все приложения, которые взаимодействуют с экземпляром SQL Server, делают это, отправляя операторы Transact-SQL на сервер, независимо от пользовательского интерфейса приложения.

Хранимые процедуры в SQL Server - это исполняемые процедуры на стороне сервера. Преимущество хранимых процедур - возможность передавать параметры.

Переменные [ править ]

Transact-SQL предоставляет следующие операторы декларировать и набор локальных переменных: DECLARE, SETи SELECT.

DECLARE @ var1 NVARCHAR ( 30 );  SET @ var1 = 'Некоторое имя' ;   ВЫБЕРИТЕ @ var1 = Имя    ОТ ПРОДАЖ . Магазин  ГДЕ CustomerID = 100 ;   

Управление потоком [ править ]

Ключевые слова для управления потоком данных в Transact-SQL включают в себя BEGINи END, BREAK, CONTINUE, GOTO, IFи ELSE, RETURN, WAITFOR, и WHILE.

IFи ELSEразрешить условное исполнение. Этот пакетный оператор напечатает «Сейчас выходные», если текущая дата - выходной день, или «Это будний день», если текущая дата - будний день. (Примечание: этот код предполагает, что воскресенье настроено как первый день недели в @@DATEFIRSTнастройке.)

ЕСЛИ DATEPART ( dw , GETDATE ()) = 7 OR DATEPART ( dw , GETDATE ()) = 1          ПЕЧАТЬ «Это выходные». ; ЕЩЕ ПЕЧАТЬ «Это будний день». ; 

BEGINи ENDотметьте блок утверждений . Если условное выражение в приведенном выше примере должно управляться более чем одним оператором, мы можем использовать BEGINи ENDвот так:

ЕСЛИ DATEPART ( dw , GETDATE ()) = 7 OR DATEPART ( dw , GETDATE ()) = 1         НАЧИНАТЬ ПЕЧАТЬ «Это выходные». ;  ПЕЧАТЬ "Отдохни на выходных!" ; КОНЕЦ ;ЕЩЕНАЧИНАТЬ ПЕЧАТЬ «Это будний день». ;  ПЕЧАТЬ «На работу в будний день!» ; КОНЕЦ ;

WAITFORбудет ждать заданное время или до определенного времени суток. Оператор может использоваться для задержек или для блокировки выполнения до установленного времени.

RETURNиспользуется для немедленного возврата из хранимой процедуры или функции.

BREAKзавершает охватывающий WHILEцикл, а CONTINUEвызывает выполнение следующей итерации цикла. Пример WHILEцикла приведен ниже.

DECLARE @i INT ;  УСТАНОВИТЬ @i = 0 ;   ПОКА @i < 5   НАЧИНАТЬ ПЕЧАТЬ "Hello world". ;  НАБОР @i = @i + 1 ;     КОНЕЦ ;

Изменения в операторах DELETE и UPDATE [ править ]

В Transact-SQL, как DELETEи UPDATEутверждения расширены для включения данных из другой таблицы , которые будут использоваться в операции, без необходимости подзапроса:

  • DELETEпринимает объединенные таблицы в FROMпредложении аналогично SELECT. Когда это будет сделано, имя или псевдоним, из которого должна быть удалена таблица в объединении, помещается между DELETEи FROM.
  • UPDATEпозволяет добавить FROMпункт. Обновляемая таблица может быть либо объединена в FROMпредложении и на нее можно ссылаться по псевдониму, либо на нее можно ссылаться только в начале оператора в соответствии со стандартным SQL.

В этом примере удаляются все, usersкто отмечен флажком «Idle».

УДАЛИТЬ у  ОТ пользователей AS u    ВНУТРЕННЕЕ СОЕДИНЕНИЕ user_flags AS f     НА u . id = f . я бы    ГДЕ f . name = 'простаивает' ;   

BULK INSERT [ править ]

BULK- это оператор Transact-SQL, который реализует процесс массовой загрузки данных, вставляя несколько строк в таблицу, считывая данные из внешнего последовательного файла. Использование BULK INSERTрезультатов обеспечивает лучшую производительность, чем процессы, которые выдают отдельные INSERTоператоры для каждой добавляемой строки. Дополнительные сведения доступны в MSDN .

ПОПРОБОВАТЬ [ править ]

Начиная с SQL Server 2005 [1] Microsoft представила дополнительную TRY CATCHлогику для поддержки поведения типа исключения. Такое поведение позволяет разработчикам упростить свой код и исключить @@ERRORпроверку после каждого оператора выполнения SQL.

- начать транзакцию  НАЧАТЬ ТРАН ; НАЧАТЬ ПОПРОБОВАТЬ  - выполнить каждое заявление    INSERT INTO MYTABLE ( NAME ) VALUES ( 'ABC' );     ВСТАВИТЬ НА MYTABLE ( ИМЯ ) ЗНАЧЕНИЯ ( '123' );     - совершить на сделку    COMMIT TRAN ; КОНЕЦ ПОПЫТКИ НАЧАТЬ ЛОВ  - рулет назад сделка из - за из ошибки        ROLLBACK TRAN ; КОНЕЦ ЗАХВАТ ; 

См. Также [ править ]

Ссылки [ править ]

  1. ^ «Улучшения T-SQL в SQL Server 2012» , Джонатан Аллен, 19 марта 2012 г., infoq.com

Внешние ссылки [ править ]

  • Руководство пользователя Sybase Transact-SQL
  • Справочник по Transact-SQL для SQL Server 2000 (MSDN)
  • Справочник по Transact-SQL для SQL Server 2005 (MSDN)
  • Справочник по Transact-SQL для SQL Server 2008 (MSDN)
  • Справочник по Transact-SQL для SQL Server 2012 (MSDN)
  • Примеры Transact-SQL
  • Справочник по Transact-SQL (ядро СУБД)