Database
 sql >> Base de Dados >  >> RDS >> Database

T-SQL vs SQL


Aqui está uma visão geral rápida da diferença entre SQL e T-SQL (Transact-SQL). Não tanto as diferenças como tal, mas mais uma explicação do T-SQL e onde ele se situa em relação ao SQL.

Se você já fez algum desenvolvimento ou administração de banco de dados, provavelmente está familiarizado com SQL. SQL, que significa Structured Query Language, é uma linguagem de consulta padrão para trabalhar com bancos de dados. A maioria dos principais sistemas de gerenciamento de banco de dados relacional, como MySQL, Oracle, SQL Server, PostgreSQL, etc, suportam SQL de uma forma ou de outra.

No entanto, embora o padrão SQL forneça especificações claras, ele também permite que os fornecedores de banco de dados adicionem suas próprias extensões. Isso permite que os fornecedores forneçam recursos e funcionalidades extras para seus clientes que podem não ser oferecidos por seus concorrentes.

É aí que entra o T-SQL.


O que é Transact-SQL?


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.

Embora o Transact-SQL (e SQL Server) seja mais comumente 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.

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).

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 e UPDATE 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.

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.

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.