Transact-SQL, muitas vezes abreviado para T-SQL ou mesmo TSQL, é a extensão proprietária da Microsoft e Sybase para SQL. O Transact-SQL expande o padrão SQL para incluir recursos extras que não estão incluídos no padrão SQL.
Aqui está um exemplo de uma instrução T-SQL simples:
CREATE DATABASE Movies;
Isso é tão simples quanto um exemplo de T-SQL poderia ser. Isso cria um novo banco de dados chamado
Movies
. No entanto, o T-SQL fornece outras opções a serem incluídas nesta instrução, como onde os arquivos de banco de dados devem estar localizados, o tamanho desses arquivos, qual deve ser seu tamanho máximo e muito mais.
Recursos T-SQL
Alguns dos recursos do T-SQL incluem:
- Programação processual
- Variáveis locais
- Várias funções de suporte para processamento de strings, processamento de datas, matemática etc.
- Alterações no
DELETE
eUPDATE
declarações. Em particular, eles permitem que uma cláusula FROM seja adicionada, o que permite a inclusão de junções. - T-SQL tem um
BULK INSERT
instrução que permite importar um arquivo de dados para uma tabela ou visualização de banco de dados em um formato especificado pelo usuário.
Um dos principais benefícios das extensões acima é que você tem muito mais programabilidade ao usar T-SQL vs SQL. Os procedimentos armazenados, por exemplo, permitem que você incorpore lógica de programação em seu banco de dados. Você pode passar um ou mais parâmetros para um procedimento armazenado e o procedimento armazenado retornará uma saída que varia dependendo dos valores dos parâmetros.
O T-SQL também inclui um grande número de funções internas, além de oferecer suporte a funções definidas pelo usuário.
Um exemplo de uma função incorporada
Aqui está outro exemplo básico, desta vez usando uma das funções internas do T-SQL:
SELECT GETDATE();
Resultado:
2018-05-06 23:30:37.003
Neste caso, usamos o
GETDATE()
do T-SQL função para retornar a data e hora atuais. Isso é usado junto com o SELECT
instrução, que é uma instrução SQL comum para retornar dados. Também podemos usar essa função como argumento para outra função. Aqui está um exemplo:
SELECT FORMAT(GETDATE(), 'MMM');
Resultado:
May
Neste caso usamos o T-SQL
FORMAT()
para extrair apenas a parte do mês da data e apresentá-la em um determinado formato. Você pode ver mais exemplos de data/hora em Como formatar a data e a hora no SQL Server. Histórico do T-SQL
Embora o Transact-SQL (e SQL Server) seja mais conhecido como uma coisa da Microsoft, na verdade é o resultado de uma parceria entre a Microsoft e a Sybase que começou em 1987. Essa parceria foi dissolvida em 1994.
Depois disso, o T-SQL continuou a ser suportado por produtos de banco de dados lançados por ambas as empresas, no entanto, cada empresa desenvolveu seus produtos de banco de dados em sua própria direção. Portanto, existem algumas diferenças entre o Sybase T-SQL e o Microsoft T-SQL.
Ferramentas T-SQL e GUI
O Transact-SQL é central para o SQL Server. A maioria das operações no SQL Server são feitas usando T-SQL. Isso é verdade mesmo se você usar uma ferramenta GUI (como SSMS ou DBeaver) e não fizer nenhuma programação. Sempre que você usa um aplicativo para interagir com o SQL Server, o aplicativo usa o T-SQL nos bastidores para realizar a tarefa especificada.
Mas o SQL Server não é o único sistema de gerenciamento de banco de dados que oferece suporte ao Transact-SQL. O Banco de Dados SQL do Microsoft Azure também oferece suporte a T-SQL. A maioria dos recursos T-SQL que os aplicativos usam são totalmente compatíveis com o Microsoft SQL Server e o Banco de Dados SQL do Azure (embora haja algumas exceções).
Sobre o Comando GO
Qualquer um que tenha usado T-SQL provavelmente estará familiarizado com o
GO
comando. Essa palavra-chave geralmente é colocada no final de um lote de instruções. Por exemplo, o primeiro exemplo acima também poderia ser escrito assim:CREATE DATABASE Movies; GO
No entanto, o
GO
comando não é realmente parte do Transact-SQL. Na verdade, o GO
O comando não pode nem ocupar a mesma linha que uma instrução Transact-SQL. GO
é um dos comandos reconhecidos pelo sqlcmd e osql utilitários, bem como o SQL Server Management Studio Code Editor para facilitar a legibilidade e a execução de lotes e scripts. O GO
O comando sinaliza o fim de um lote de instruções Transact-SQL para os utilitários do SQL Server. Os utilitários do SQL Server interpretam
GO
como um sinal de que eles devem enviar o lote atual de instruções Transact-SQL para uma instância do SQL Server. O lote atual de instruções é composto por todas as instruções inseridas desde o último GO
, ou desde o início da sessão ou script ad hoc se este for o primeiro GO
. Outras extensões SQL proprietárias
O Transact-SQL não é a única extensão do padrão SQL. Vários sistemas de banco de dados têm suas próprias extensões. Por exemplo, a Oracle usa uma linguagem procedural proprietária chamada PL/SQL, e o PostgreSQL usa uma linguagem procedural chamada PL/pgSQL.
Embora as extensões SQL proprietárias tenham suas vantagens (como funcionalidade estendida), elas têm suas desvantagens. Uma grande desvantagem é que eles podem dificultar as coisas se você precisar portar um banco de dados de um sistema para outro. Por exemplo, se sua organização de repente decidir que vai usar o Oracle em vez do SQL Server, talvez seja necessário passar por todo o código do SQL Server e reescrevê-lo para o Oracle. Isso também exige que você se acostume com a sintaxe de ambos os sistemas.