Ето кратък преглед на разликата между SQL и T-SQL (Transact-SQL). Не толкова разликите като такъв, но по-скоро обяснение на T-SQL и къде се намира по отношение на SQL.
Ако сте правили някаква разработка или администриране на база данни, вероятно сте запознати с SQL. SQL, което означава Structured Query Language, е стандартен език за заявки за работа с бази данни. Повечето от основните системи за управление на релационни бази данни като MySQL, Oracle, SQL Server, PostgreSQL и т.н. поддържат SQL по един или друг начин.
Въпреки това, докато стандартът SQL предоставя ясни спецификации, той също така позволява на доставчиците на бази данни да добавят свои собствени разширения. Това позволява на доставчиците да предоставят допълнителни функции и функционалност за своите клиенти, които може да не се предлагат от техните конкуренти.
Тук идва T-SQL.
Какво е Transact-SQL?
Transact-SQL, често съкратен на T-SQL или дори TSQL, е собствено разширение на Microsoft и Sybase към SQL. Transact-SQL разширява стандарта SQL, за да включва допълнителни функции, които не са включени в стандарта SQL.
Въпреки че Transact-SQL (и SQL Server) е най-често известен като нещо на Microsoft, той всъщност е резултат от партньорство между Microsoft и Sybase, което започна през 1987 г. Това партньорство беше прекратено през 1994 г. След това T-SQL продължи да бъде поддържан от продукти за бази данни, пуснати от двете компании, но всяка компания развива своите продукти за бази данни в собствена посока. Следователно има някои разлики между Sybase T-SQL и Microsoft T-SQL.
Transact-SQL е централен за SQL Server. Повечето операции в SQL Server се извършват с T-SQL. Това е вярно, дори ако използвате GUI инструмент (като SSMS или DBeaver) и всъщност не правите никакво програмиране. Всеки път, когато използвате приложение за взаимодействие със SQL Server, приложението използва T-SQL зад кулисите, за да изпълни посочената задача.
Но SQL Server не е единствената система за управление на база данни, която поддържа Transact-SQL. Базата данни на Microsoft Azure SQL също поддържа T-SQL. Повечето T-SQL функции, използвани от приложенията, се поддържат напълно както в Microsoft SQL Server, така и в Azure SQL база данни (въпреки че има някои изключения).
Функции на T-SQL
Някои от характеристиките на T-SQL включват:
- Процедурно програмиране
- Локални променливи
- Различни поддържащи функции за обработка на низове, обработка на дати, математика и т.н.
- Промени в
DELETE
иUPDATE
изявления. По-специално, те позволяват добавяне на клауза FROM, която позволява включването на съединения. - T-SQL има
BULK INSERT
изявление, което ви позволява да импортирате файл с данни в таблица на база данни или преглед в зададен от потребителя формат.
Едно от основните предимства на горните разширения е, че имате много повече програмируемост, когато използвате T-SQL срещу SQL. Съхранените процедури например ви позволяват да включите програмна логика във вашата база данни. Можете да предадете един или повече параметри на съхранена процедура и съхранената процедура ще върне изход, който варира в зависимост от стойностите на параметрите.
Относно командата GO
Всеки, който е използвал T-SQL, вероятно ще е запознат с GO
команда. Тази ключова дума често се поставя в края на пакет от изявления.
Въпреки това, GO
командата всъщност не е част от Transact-SQL. Всъщност GO
командата не може дори да заема същия ред като Transact-SQL оператор.
GO
е една от командите, които се разпознават от sqlcmd и osql помощни програми, както и SQL Server Management Studio Code Editor за улесняване на четимостта и изпълнението на пакети и скриптове. GO
командата сигнализира за края на партида Transact-SQL изрази на помощните програми на SQL Server.
Помощните програми на SQL Server интерпретират GO
като сигнал, че те трябва да изпратят текущата партида Transact-SQL оператори на екземпляр на SQL Server. Текущата партида отчети се състои от всички въведени отчети след последния GO
, или от началото на ad hoc сесията или скрипта, ако това е първият GO
.
Други собствени SQL разширения
Transact-SQL не е единственото разширение на SQL стандарта. Различните системи за бази данни имат свои собствени разширения. Например Oracle използва собствен процедурен език, наречен PL/SQL, а PostgreSQL използва процедурен език, наречен PL/pgSQL.
Въпреки че патентованите SQL разширения имат своите предимства (като разширена функционалност), те имат своите недостатъци. Един основен недостатък е, че те могат да затруднят нещата, ако някога се наложи да пренесете база данни от една система в друга. Например, ако вашата организация изведнъж реши, че ще използва Oracle вместо SQL Server, може да се наложи да преминете през целия код на SQL Server и да го пренапишете за Oracle. Това също изисква от вас да се запознаете със синтаксиса на двете системи.