Transact SQL

Transact-SQL es la implementación SQL Server del estándar ANSI SQL. Este define elementos del lenguaje SQL.

transact sql

Transact-SQL es la implementación SQL Server del estándar ANSI SQL. Este define elementos del lenguaje SQL que pueden ejecutarse desde cualquier aplicación frontal.

Transact-SQL también contiene elementos del lenguaje que son únicos en él (extensiones Transact-SQL).
Es recomendable que al escribir aplicaciones para las bases de datos se utilicen sentencias ANSI SQL para aumentar la compatibilidad de las bases de datos y de las aplicaciones

Elementos de Transact SQL

  • Al escribir y ejecutar sentencias Transact-SQL usará:
  • Declaraciones del Data Control Language (DCL) que se utilizan para determinar quién ve o modifica los datos.
  • Declaraciones del Data Definition Language (DDL) que se usan para crear los objetos en la base de datos.
  • Declaraciones del Data Manipulation Language (DML) que se usan para consultar y modificar los datos.
  • Elementos adicionales del lenguaje como: variables, operadores, funciones, sentencias de control de flujo, y comentarios.

Declaraciones del Data Control Language (DCL)

Las declaraciones del DCL se usan para cambiar los permisos o roles asociados con un usuario de la base de datos. La tabla siguiente describe las declaraciones de DCL.

Por defecto, sólo miembros con roles sysadmin, dbcreator, db_owner o db_securityadmin pueden ejecutar las declaraciones DCL.EjemploEste ejemplo concede permiso para leer la tabla products al rol public.

USE northwind   
GRANT SELECT ON products TO public

Las declaraciones de DDL permiten crear bases de datos, tablas, y tipos de datos definidos por usuarios. También se usan para manejar los objetos de la base de datos. Algunas declaraciones de DDL son:

CREATE nombre_objeto
ALTER nombre_objeto
DROP nombre_objeto

Por defecto, solo miembros de los roles sysadmin, dbcreator, db_owner, o db_ddladmin pueden ejecutar las declaraciones DDL. En general, se recomienda que ninguna otra cuenta se use para crear los objetos de la base de datos. Si diferentes usuarios crean sus propios objetos en una base de datos, cada dueño de objeto debe conceder los permisos apropiados a cada usuario de esos objetos. Esto causa una sobrecarga administrativa y debe evitarse.

Ejemplo:
El siguiente ejemplo crea una tabla llamada customer en la base de datos northwind. Esta incluye las columnas cust_id, company, contact, y phone.

USE northwind CREATE TABLE customer(
cust_id int,
company varchar (40),  
contact varchar (30),  
phone char (12) )

La declaraciones DML trabajan con la data de la base de datos. Las declaraciones DML incluyen:
SELECT
INSERT
UPDATE
DELETE

Por defecto solamente miembros de los roles sysadmin, dbcreator, db_owner o db_datawriter pueden ejecutar sentencias DML.

Ejemplo
Este ejemplo recupera las columnas categoryid, productname, productid, y unitprice de la tabla products de la base de datos northwind.
SELECT categoryíd, producname, productid, unitprice
FROM northwind..products

Variables locales y globales

Las variables son los elementos del lenguaje a los que se puede asignar valores. Pue den ser locales o globales.

Variable local (definida por el usuario)

Una variable local se define en una sentencia DECLARE, se le asigna un valor inicial en una declaración SET, y se utiliza dentro de la declaración, batch, o procedimiento en la que fue declarada. Una variable local se identifica con un símbolo @ que precede a su nombre.

DECLARE @nombre_variable tipo_dato ,…
SET @nombre_variable = expresión

Ejemplo
El ejemplo siguiente crea la variable local @vlname, le asigna un valor, y consulta a la base de datos para recuperar las filas que contienen el valor de la variable.

DECLARE @vlname char(20)
SET @vlname = ‘Dodsworth’
SELECT lastname, firstname, title
  FROM northwind..employees
  WHERE lastname = @vlname

Variable global (proporcionada por el sistema)

Las variables globales son predefinidas y mantenidas por SQL Server. El usuario no puede asignar o cambiar directamente los valores de las variables globales. Muchas de las variables globales reportan al sistema la actividad que ha tenido lugar desde la última vez que SQL Server fue iniciado, otras reportan información sobre una conexión. Una variable global es identificada con dos símbolos @ precediendo su nombre.

Las variables globales son útiles para verificar la seguridad o condiciones del entorno actual de SQL Server. Por ejemplo, si quiere verificar el número de versión de SQL Server, puede realizar la consulta a la variable global versión. La consulta devuelve el número de la versión del SQL Server que está ejecutando.

Ejemplo
El ejemplo siguiente usa la variable global @@trancount para determinar si existe alguna transacción abierta antes de ejecutar una consulta o procedimiento almacenado. La variable @@trancount retorna un numero que representa el número de transacciones que se tiene abiertas actualmente.  

If ( @@trancount > 0 )  
Begin
Raiserror ( ‘la tarea no puede ejecutarse dentro de una   transacción’,10,1)  
Return  
End  

Operadores

Los operadores son símbolos que indican la ejecución de operaciones matemáticas, encadenamientos de cadenas, y comparaciones entre las columnas, constantes y variables.

Los operadores pueden combinarse y utilizarse en las expresiones de búsqueda. Cuando los combina, el orden en que los operadores se procesan se basa en una jerarquía predefinida.

Tipos de operadores

SQL Server soporta cuatro tipos de operadores: aritméticos, de comparación, de cadenas, y lógicos.

Operadores aritméticos

Los operadores aritméticos realizan cálculos con las columnas numéricas o las constantes.Transact-SQL soporta los operadores multiplicativos: producto (*), división (/), y módulo (%) – el resto después de la división entera – y los operadores aditivos: suma (+), y substracción (-).

Operadores de comparación

Estos operadores comparan dos expresiones. Las comparaciones pueden realizarse entre las variables, columnas, y expresiones de tipo similar. Los operadores de comparación incluyen a: menor que (<), mayor que (>), igual a (=), y todas las combinaciones posibles.

Operador de concatenación de cadenas

El operador de concatenación de cadenas (+) encadena los valores de tipo string.
Por defecto, una cadena vacía («) se interpreta como un espacio en blanco. Por ejemplo, ‘abc’ + » + ‘def’ es almacenada como ‘abc def’. La cadena vacía nunca se evalúa como un valor nulo.

Operadores lógicos

Los operadores lógicos AND, 0R y NOT se utilizan para construir expresiones lógicas (expresiones cuyo resultado es verdadero o falso), y se utilizan mucho en las operaciones de búsqueda.

La sentencia SELECT

Puede crear consultas para recuperar información de su base de datos utilizando el Analizador de consultas (Query Analyzer) de SQL Server desde o fuera del Administrador corporativo (Enterprise Manager) de SQL Server, así como utilitarios de línea de comandos como osql. Hay otros utilitarios que también pueden hacerlo, entre los que se incluyen MSQuery y English Query.

También dispone de herramientas y utilitarios de otros fabricantes.

Hay tres componentes básicos en la instrucción SELECT: SELECT, FROM y
WHERE. A continuación la sintáxis básica.
SELECT * | lista_columnas
FROM tabla
[ WHERE condición_filas ]

  • lista_columnas es la lista de columnas a mostrar en el resultado de la consulta. Si se especifica * se mostrarán todas las columnas de la tabla.
  • condición_filas es una expresión lógica que indica que las filas a mostrar son aquellas para las que el valor de la expresión es verdadero.

A continuación se muestra la sintáxis completa.

Ejemplo 1
SELECT * FROM usuario
Muestra todas las columnas y todas las filas de la tabla usuario.

Ejemplo 2
SELECT usu_cod , usu_pat , usu_tel
FROM usuario
Muestra las columnas usu_cod, usu_pat y usu_tel de la tabla usuario.

Operadores de condición_filas

En la expresión lógica que especifica la condición_filas se pueden utilizar, además de los operadores relacionales o de comparación, los siguientes operadores SQL:

Ejemplo 1
SELECT * FROM publicacion
WHERE tem_cod = 2
Muestra una lista de todas las publicaciones cuyo código de tema es igual a 2.

Ejemplo 2
SELECT pub_cod , pub_nom FROM publicacion
WHERE pub_nom LIKE ‘%SQL%’
Muestra el código y el título de las publicaciones cuyo título contiene la cadena
‘SQL’.

Ejemplo 3
SELECT * FROM usuario
WHERE usu_cod BETWEEN ‘971010’ AND ‘971020’
Muestra una lista de todos los usuarios cuyo código se encuentra entre 971010
y 971020.

Ejemplo 4
SELECT pub_cod , pub_nom FROM publicacion
WHERE pub_aut IN ( ‘MICROSOFT’ , ‘CATAPULT, INC.’ )
Muestra el código y el título de las publicaciones cuyo autor es MICROSOFT o
CATAPULT, INC.

Funciones

Transact-SQL proporciona muchas funciones que devuelven información de las bases de datos o del sistema. Una función recibe parámetros como valores de entrada y retorna un valor que puede utilizarse en las expresiones.
La siguiente es la sintáxis para obtener el resultado de una función con la
sentencia SELECT:
SELECT nombre_función( parámetros )

Ejemplo 1
Este ejemplo demuestra cómo puede convertir las fechas a diferentes
formatos.
SELECT ‘ANSI: ‘, CONVERT( varchar(30), GETDATE(), 102 ) As Formato
UNION
SELECT ‘JAPANESE: ‘, CONVERT( varchar(30), GETDATE(), 111 )
UNION
SELECT ‘EUROPEAN: ‘, CONVERT( varchar(30), GETDATE(), 113 )

Resultado
Style
ANSl: 1999.07.23
JAPANESE: 1999/07/23
EUROPEAN: 23 Jul 1999 16:34:40:616
(3 row(s) affected)

Ejemplo 2
Este ejemplo usa la opción DATEFORMAT en la declaración SET para especificar el formato de fecha a utilizar en la sesión o conexión actual. El servidor lee las fechas en el formato especificado independientemente de la configuración del formato de fecha en el servidor.
SET DATEFORMAT ymd
SELECT GETDATE ()

Resultado
2002-07-23 16: 44: 23.947
(1 row(s) affected)

Funciones de resumen (aggregate)
Son funciones que permiten efectuar una operación aritmética que resume los valores de una columna de toda la tabla, o que resume los valores de la columna agrupados según según determinado criterio. La función produce un solo valor que es el resumen de la tabla, o de cada uno de los grupos.

Puede usar las funciones de resumen con la declaración SELECT o en combinación con la cláusula GROUP BY.
Con excepción de la función COUNT(), todas las funciones de resumen retornan NULL si ninguna fila satisface la cláusula WHERE. La función COUNT() retorna un valor de cero si ninguna fila satisface la cláusula WHERE.
Ejemplo 1
Este ejemplo calcula el precio unitario (unitprice) promedio de todos los productos en la tabla products.
USE northwind
SELECT AVG( unitprice ) FROM products

Ejemplo 2
Este ejemplo totaliza la columna cantidad (quantity) en la tabla order details.
USE northwind
SELECT SUM( quantity ) FROM [order details]

Sentencias de control de flujo

Los siguientes elementos del lenguaje le permiten controlar el flujo de la lógica dentro de un script:
BEGIN…END
Establece que las declaraciones de sentencias Transact-SQL colocadas entre BEGIN y END deben tratarse como una unidad.

IF…ELSE
Establece un condicional con dos alternativas. Si el condicional resulta verdadero, se ejecuta la primera alternativa, en caso contrario, se ejecuta la segunda alternativa.

WHILE
Las declaraciones colocadas en WHILE deben ejecutarse repetidamente
mientras que la condición especificada se cumpla. Las sentencias BREAK y CONTlNUE controlan el flujo de las sentencias dentro de un WHILE.

Ejemplo
Este ejemplo determina si un cliente tiene registrada una orden antes de eliminar al cliente de la tabla customer.

La estructura CASE

CASE evalúa una expresión, y de acuerdo al resultado de ella ejecuta alguna operación específica. CASE es un condicional que permite definir múltiples alternativas.
CASE expresión
WHEN expresión THEN resultado ,…
ELSE resultado]
END

Ejemplo
El ejemplo siguiente repasa el estado del inventario de productos en la tabla products y devuelve un mensaje basado en la cantidades disponibles, las cantidades pedidas, y si el producto está descontinuado.

Contenido relacionado:

Te puede interesar

Deja una respuesta

Tu dirección de correo electrónico no será publicada.