sql >> Base de Datos >  >> RDS >> Database

T-SQL frente a SQL

Aquí hay una descripción general rápida de la diferencia entre SQL y T-SQL (Transact-SQL). No tanto las diferencias como tal, pero más una explicación de T-SQL y dónde se encuentra en relación con SQL.

Si ha desarrollado o administrado alguna base de datos, probablemente esté familiarizado con SQL. SQL, que significa Lenguaje de consulta estructurado, es un lenguaje de consulta estándar para trabajar con bases de datos. La mayoría de los principales sistemas de administración de bases de datos relacionales como MySQL, Oracle, SQL Server, PostgreSQL, etc. admiten SQL de una forma u otra.

Sin embargo, aunque el estándar SQL proporciona especificaciones claras, también permite que los proveedores de bases de datos agreguen sus propias extensiones. Esto permite a los proveedores proporcionar características y funcionalidades adicionales para sus clientes que sus competidores podrían no ofrecer.

Aquí es donde entra en juego T-SQL.

¿Qué es Transact-SQL?

Transact-SQL, a menudo abreviado como T-SQL o incluso TSQL, es la extensión propiedad de Microsoft y Sybase para SQL. Transact-SQL expande el estándar SQL para incluir características adicionales que no están incluidas en el estándar SQL.

Aunque Transact-SQL (y SQL Server) se conoce más comúnmente como algo de Microsoft, en realidad es el resultado de una asociación entre Microsoft y Sybase que comenzó en 1987. Esta asociación se disolvió en 1994. Después de esto, T-SQL continuó siendo apoyado por productos de base de datos lanzados por ambas compañías, sin embargo, cada compañía desarrolló sus productos de base de datos en su propia dirección. Por lo tanto, existen algunas diferencias entre Sybase T-SQL y Microsoft T-SQL.

Transact-SQL es fundamental para SQL Server. La mayoría de las operaciones en SQL Server se realizan utilizando T-SQL. Esto es cierto incluso si usa una herramienta GUI (como SSMS o DBeaver) y en realidad no hace ninguna programación. Cada vez que usa una aplicación para interactuar con SQL Server, la aplicación usa T-SQL en segundo plano para llevar a cabo la tarea especificada.

Pero SQL Server no es el único sistema de administración de bases de datos que admite Transact-SQL. Microsoft Azure SQL Database también es compatible con T-SQL. La mayoría de las características de T-SQL que usan las aplicaciones son totalmente compatibles con Microsoft SQL Server y Azure SQL Database (aunque hay algunas excepciones).

Características de T-SQL

Algunas de las características de T-SQL incluyen:

  • Programación de procedimientos
  • Variables locales
  • Varias funciones de soporte para procesamiento de cadenas, procesamiento de fechas, matemáticas, etc.
  • Cambios en DELETE y UPDATE declaraciones. En particular, permiten agregar una cláusula FROM, lo que permite incluir uniones.
  • T-SQL tiene un BULK INSERT declaración que le permite importar un archivo de datos en una tabla de base de datos o ver en un formato especificado por el usuario.

Uno de los principales beneficios de las extensiones anteriores es que tiene mucha más capacidad de programación cuando usa T-SQL que SQL. Los procedimientos almacenados, por ejemplo, le permiten incorporar lógica de programación en su base de datos. Puede pasar uno o más parámetros a un procedimiento almacenado, y el procedimiento almacenado devolverá una salida que varía según los valores de los parámetros.

Acerca del comando GO

Cualquiera que haya usado T-SQL probablemente estará familiarizado con GO dominio. Esta palabra clave a menudo se coloca al final de un lote de declaraciones.

Sin embargo, el GO El comando no es en realidad parte de Transact-SQL. De hecho, el GO El comando ni siquiera puede ocupar la misma línea que una instrucción Transact-SQL.

GO es uno de los comandos reconocidos por sqlcmd y osql utilidades, así como SQL Server Management Studio Code Editor para facilitar la legibilidad y la ejecución de lotes y scripts. El GO El comando señala el final de un lote de instrucciones Transact-SQL a las utilidades de SQL Server.

Las utilidades de SQL Server interpretan GO como una señal de que deben enviar el lote actual de instrucciones Transact-SQL a una instancia de SQL Server. El lote actual de declaraciones se compone de todas las declaraciones ingresadas desde el último GO , o desde el inicio de la sesión ad hoc o secuencia de comandos si este es el primer GO .

Otras extensiones SQL patentadas

Transact-SQL no es la única extensión del estándar SQL. Varios sistemas de bases de datos tienen sus propias extensiones. Por ejemplo, Oracle usa un lenguaje de procedimientos patentado llamado PL/SQL y PostgreSQL usa un lenguaje de procedimientos llamado PL/pgSQL.

Aunque las extensiones SQL propietarias tienen sus ventajas (como la funcionalidad extendida), también tienen sus desventajas. Una gran desventaja es que pueden dificultar las cosas si alguna vez necesita transferir una base de datos de un sistema a otro. Por ejemplo, si su organización decide repentinamente que utilizará Oracle en lugar de SQL Server, es posible que deba revisar todo el código de SQL Server y volver a escribirlo para Oracle. Esto también requiere que se ponga al día con la sintaxis de ambos sistemas.