Está en la página 1de 19

Tabla de Contenidos

1. TRANSACT-SQL ................................................................................................................. 2
1.1. Definición .................................................................................................................. 2
2. CLASIFICACIÓN ................................................................................................................. 3
2.1. El DDL (Data Description Language) ......................................................................... 3
2.2. El DML (Data Manipulation Language) ..................................................................... 4
2.3. El DCL (Data Control Language) ................................................................................ 5
3. OPERADORES .................................................................................................................... 6
3.1. Operadores aritméticos ............................................................................................ 6
3.2. Operadores de Asignación ........................................................................................ 6
3.3. Operadores de comparación .................................................................................... 7
3.4. Operadores lógicos ................................................................................................... 8
4. FUNCIONES ....................................................................................................................... 9
4.1. Funciones para el manejo de fechas......................................................................... 9
4.2. Funciones para el manejo de cadenas .................................................................... 10
4.3. Funciones de conversión ........................................................................................ 11
5. VARIABLES ...................................................................................................................... 12
5.1. Definición ................................................................................................................ 12
5.2. Asignar variables ..................................................................................................... 12
6. ESTRUCTURAS DE CONTROL .......................................................................................... 14
6.1. Estructura condicional IF......................................................................................... 14
6.2. Estructura condicional CASE ................................................................................... 15
6.3. Bucle WHILE ............................................................................................................ 16
6.4. TRY CATCH............................................................................................................... 17
7. BIBLIOGRAFÍA ................................................................................................................. 17
SESIÓN
05

DESCRIPCIÓN

Transact-SQL o T-SQL es un lenguaje muy potente que permite definir casi cualquier tarea que se
quiera efectuar sobre la base de datos, va más allá de un lenguaje SQL cualquiera ya que incluye
características propias de cualquier lenguaje de programación, características que permiten definir
la lógica necesaria para el tratamiento de la información.

CAPACIDAD

Implementa consultas con Transact-SQL.

TEMÁTICA

 Transact-SQL.
 Clasificación
 Operadores.
 Funciones.
 Variables
 Estructuras de control.
1. TRANSACT-SQL

1.1. Definición

Transact-SQL es el lenguaje de programación que proporciona Microsoft SQL Server para ampliar
el SQL estándar con otro tipo de instrucciones y elementos propios de los lenguajes de
programación.

El Transact-SQL permite:

➢ Definir bloques de instrucciones SQL que se tratan como unidades de ejecución.


➢ Realizar ejecuciones condicionales.
➢ Realizar ejecuciones iterativas o repetitivas.
➢ Garantizar el tratamiento modular con la declaración de variables locales y el uso de
procedimientos almacenados.
➢ Manipular tupla a tupla el resultado de una consulta.

Sin embargo no permite:

➢ Crear interfaces de usuario.


➢ Crear aplicaciones ejecutables, sino elementos que en algún momento llegarán al servidor
de datos y serán ejecutados.

Debido a estas restricciones se emplea generalmente para crear procedimientos almacenados,


triggers y funciones de usuario. Puede ser utilizado como cualquier SQL como lenguaje embebido
en aplicaciones desarrolladas en otros lenguajes de programación como Visual Basic, C, Java, etc.

2
2. CLASIFICACIÓN

Las instrucciones SQL se clasifican según su propósito en tres grupos:

➢ El DDL (Data Description Language) Lenguaje de Descripción de Datos.


➢ El DML (Data Manipulation Language) Lenguaje de Manipulación de Datos.
➢ El DCL (Data Control Language) Lenguaje de Control de Datos.

2.1. El DDL (Data Description Language)

Es la parte del SQL dedicada a la definición de la base de datos, consta de sentencias para definir la
estructura de la base de datos, permiten crear la base de datos, crear, modificar o eliminar la
estructura de las tablas, crear índices, definir reglas de validación de datos, relaciones entre las
tablas, etc. Permite definir gran parte del nivel interno de la base de datos. Por este motivo estas
sentencias serán utilizadas normalmente por el administrador de la base de datos.

Son comandos propios de este lenguaje:

Comandos DDL
Para crear objetos en la base de datos (Bases
CREATE
de datos, tablas, vistas, etc.).
Elimina objetos de la base de datos (Bases de
DROP
datos, tablas, vistas, etc.).
Modifica la estructura de la base de datos
ALTER
(Bases de datos, tablas, vistas, etc.).

A continuación, algunos ejemplos de la utilización de los comandos DDL.

Para crear una base de datos llamada mibase, a continuación, escribiremos las demás cláusulas que
completarán la acción, en este caso dónde se almacenará la base de datos, cuánto ocupará, etc:

CREATE DATABASE mibase

Para crear una nueva tabla llamada mitabla, entre paréntesis completaremos la acción indicando
la definición de las columnas de la tabla:

CREATE TABLE mitabla (.....)

Para crear un índice:

CREATE INDEX miindex.....

Para borrar, eliminar la base de datos mibase:

DROP DATABASE mibase


3
Para elimina la tabla mitabla:

DROP TABLE mitabla

Para modificar la definición de la tabla mitabla:

ALTER TABLE mitabla

Ejemplo para crear una tabla EMPLEADO con sus campos para almacenar a los empleados de la
base de datos NEGOCIOS:

USE NEGOCIOS
GO
CREATE TABLE EMPLEADO (
IDEMPLEADO INT NOT NULL,
NOMEMPLEADO VARCHAR (50) NOT NULL,
APEEMPLEADO VARCHAR (50) NOT NULL,
FONOEMPLEADO VARCHAR (15) NULL,
DIREMPLEADO VARCHAR (100) NOT NULL,
IDDISTRITO INT NOT NULL,
PRIMARY KEY (IDEMPLEADO)
)
GO

2.2. El DML (Data Manipulation Language)

Se compone de las instrucciones para el manejo de los datos, para insertar nuevos datos, modificar
datos existentes, para eliminar datos y la más utilizada, para recuperar datos de la base de datos.
Veremos que una sola instrucción de recuperación de datos es tan potente que permite recuperar
datos de varias tablas a la vez, realizar cálculos sobre estos datos y obtener resúmenes.

Comandos DML

SELECT Para obtener datos de una base de datos.

INSERT Para insertar datos a una tabla.

Para modificar datos existentes dentro de una


UPDATE
tabla.
Elimina todos los registros de la tabla; no
DELETE
borra los espacios asignados a los registros.

4
A continuación, algunos ejemplos de la utilización de los comandos DML.

Para insertar nuevas filas en mitabla:

INSERT INTO mitabla VALUES (….)

Para eliminar filas de mitabla:

DELETE FROM mitabla

Para actualizar un dato de mitabla:

UPDATE mitabla SET campo = ….

Para mostrar el código y nombre de los clientes en la ciudad de Trujillo:

SELECT codigo, nombre


FROM Clientes
WHERE ciudad=’Valencia’

2.3. El DCL (Data Control Language)

Se compone de instrucciones que permiten: Ejercer un control sobre los datos tal como la
asignación de privilegios de acceso a los datos (GRANT/REVOKE). La gestión de transacciones
(COMMIT/ROLLBACK). Una transacción se puede definir como un conjunto de acciones que se
tienen que realizar todas o ninguna para preservar la integridad de la base de datos.

Comandos DML

GRANT Otorgar derechos o privilegios.

DENY Denegar privilegios aún no existen.

REVOKE Revocar derechos o privilegios.

Para otorgar permisos de manipulación de datos DE la tabla Empleado al usuario Admin:

GRANT SELECT, INSERT, UPDATE, DELETE ON EMPLEADO TO Admin

Para revocar permisos de inserción de datos DE la tabla Empleado al usuario Admin:

REVOKE INSERT ON EMPLEADO TO Admin

Para denegar permisos de actualización de datos DE la tabla Empleado al usuario Admin:

DENY UPDATE ON EMPLEADO TO Admin


5
3. OPERADORES

Un operador es un símbolo que especifica una acción que se realiza en una o más expresiones. A
continuación, detallamos las categorías de operadores que se utilizan en SQL Server.

3.1. Operadores aritméticos

Son aquellos que realizan operaciones matemáticas entre dos expresiones numéricas.

Los operadores de suma (+) y resta (-) son utilizados para realizar operaciones aritméticas
sobre valores datetime y smalldatetime.

3.2. Operadores de Asignación

El operador (=) es sólo el operador de asignación del SQL Server. En el siguiente ejemplo,
definimos la variable @num, asigne un valor a dicha variable.

DECLARE @NUM INT


SET @NUM=15
PRINT 'EL NUMERO INGRESADO ES:' + STR(@NUM)

6
3.3. Operadores de comparación

Los operadores de comparación permiten comprobar dos expresiones retornando un valor


verdadero o falso, es decir, un dato Boolean. Se pueden utilizar en todas las expresiones
excepto en las de los tipos de datos text, ntext o image. En la siguiente tabla, se presentan
los operadores de comparación Transact-SQL.

OPERADOR DE
SIGNIFICADO
COMPARACIÓN

= Igual a

> Mayor que

< Menor que

>= Mayor o igual que

<= Menor o igual que

<> No es igual a

No es igual a (no es del


!=
estándar ISO)
No es menor que (no es del
!<
estándar ISO)
No es mayor que (no es del
!>
estándar ISO)

7
3.4. Operadores lógicos

Los operadores lógicos comprueban la veracidad de alguna condición. Éstos, como los
operadores de comparación, devuelven el tipo de datos Boolean con el valor TRUE, FALSE
o UNKNOWN.

OPERADOR SIGNIFICADO

ALL TRUE si el conjunto completo de comparaciones es TRUE.

AND TRUE si ambas expresiones booleanas son TRUE.

TRUE si cualquier miembro del conjunto de comparaciones es


ANY
TRUE.

BETWEEN TRUE si el operando está dentro de un intervalo.

EXISTS TRUE si una subconsulta contiene cualquiera de las filas.

IN TRUE si el operando es igual a uno de la lista de expresiones.

LIKE TRUE si el operando coincide con un patrón.

NOT Invierte el valor de cualquier otro operador booleano.

OR TRUE si cualquiera de las dos expresiones booleanas es TRUE.

SOME TRUE si alguna de las comparaciones de un conjunto es TRUE.

8
4. FUNCIONES

4.1. Funciones para el manejo de fechas

FUNCIÓN DESCRIPCIÓN

Devuelve un valor date con el intervalo number especificado, agregado a un


valor datepart especificado de ese valor date.
DATEADD (datepart , number , date )
DECLARE @FECHA DATE = '1-8-2011'
SELECT 'YEAR' 'PERIODO ', DATEADD(YEAR,1,@FECHA) 'NUEVA FECHA'
UNION ALL
SELECT 'QUARTER',DATEADD(QUARTER,1,@FECHA)
DATEADD
UNION ALL
SELECT 'MONTH',DATEADD(MONTH,1,@FECHA)
UNION ALL
SELECT 'DAY',DATEADD(DAY,1,@FECHA)
UNION ALL
SELECT 'WEEK',DATEADD(WEEK,1,@FECHA)
GO
Devuelve el número de límites datepart de fecha y hora entre dos fechas
especificadas.
DATEDIFF ( datepart , startdate , enddate )
DATEDIFF SET DATEFORMAT DMY
DECLARE @FECHAINICIAL DATE = '01-08-2011';
DECLARE @FECHAFINAL DATE = '01-09-2011';
SELECT DATEDIFF(DAY, @FECHAINICIAL,@FECHAFINAL) AS 'DURACION'
Devuelve una cadena de caracteres que representa el datepart especificado de
la fecha especificada.
DATENAME
DATENAME ( datepart , date )
SELECT DATENAME(MONTH, GETDATE()) AS 'MES';
Devuelve un entero que representa el datepart especificado del date
especificado.
DATEPART
DATEPART ( datepart , date )
SELECT DATEPART(MONTH, GETDATE()) AS 'MES';

9
Devuelve un entero que representa la parte del día datepart de la fecha
DAY especificada.
SELECT DAY('01/9/2011') AS 'DÍA DEL MES';
Devuelve la fecha del sistema
GETDATE
SELECT GETDATE() 'FECHA DEL SISTEMA';
Devuelve un entero que representa el mes de date especificado.

MONTH MONTH devuelve el mismo valor que DATEPART (month, date).


SELECT MONTH(GETDATE()) AS 'MES DE LA FECHA DE SISTEMA';

Devuelve un entero que representa el año de date especificado.


YEAR YEAR devuelve el mismo valor que DATEPART (year, date).
SELECT YEAR(GETDATE()) AS 'AÑO DE LA FECHA DE SISTEMA';

4.2. Funciones para el manejo de cadenas

FUNCIÓN DESCRIPCIÓN

Devuelve la parte izquierda de una cadena de caracteres con el número de


LEFT caracteres especificado.
LEFT ( character_expression , integer_expression )
Devuelve el número de caracteres de la expresión de cadena especificad,
LEN excluidos los espacios en blanco finales.
LEN ( string_expression )
Devuelve una expresión de caracteres después de convertir en minúsculas los
LOWER datos de caracteres en mayúsculas.
LOWER ( character_expression )
Devuelve una expresión de caracteres tras quitar todos los espacios iniciales
LTRIM en blanco.
LTRIM ( character_expression )
Devuelve una cadena de caracteres después de truncar todos los espacios en
RTRIM blanco finales.
RTRIM ( character_expression )
Devuelve parte de una expresión de caracteres, binaria, de texto o de

SUBSTRING imagen. Para obtener más información acerca de los tipos de datos válidos
de SQL Server que se pueden usar con esta función.

10
SUBSTRING (value_expression, start_expression, length_expression)

Devuelve una expresión de caracteres con datos de caracteres en minúsculas

UPPER convertidos a mayúsculas.


UPPER ( character_expression )

Ejemplo:
-- MANEJO DE CADENAS: RETORNA LA EXPRESION BASE CONVERTIDA EN MAYÚSCULAS
DECLARE @CADENA VARCHAR(30)
SELECT @CADENA = ' BASE DE DATOS AVANZADO ';
SELECT LEFT(UPPER(LTRIM(@CADENA)),4) AS 'CADENA RESULTANTE' GO

4.3. Funciones de conversión

Convierte una expresión de un tipo de datos en otro tipo de dato definido en SQL Server.

FUNCIÓN DESCRIPCIÓN
Convierte una expresión a un tipo de datos
CAST
CAST (expresión AS tipo_dato[(longitud)])
Convierte una expresión a un tipo de datos indicando un estilo.
CONVERT
CONVERT (tipo_dato [(longitud)], expresión [, estilo])

Ejemplo:
USE NEGOCIOS
GO
SELECT DISTINCT CAST(P.NOMPRODUCTO AS CHAR(15)) AS NOMBRE,
CONVERT(DECIMAL(10,2),P.PRECIOUNIDAD) AS 'PRECIO UNITARIO'
FROM COMPRA.PRODUCTOS
WHERE P.NOMPRODUCTO LIKE 'PAN%';
GO

11
5. VARIABLES

5.1. Definición

Una variable es un valor identificado por un nombre (identificador) sobre el que podemos
realizar modificaciones. En Transact SQL los identificadores de variables deben comenzar
por el caracter @, es decir, el nombre de una variable debe comenzar por @.

Para declarar variables en Transact SQL debemos utilizar la palabra clave declare, seguido
del identificador y tipo de datos de la variable.

-- Esto es un comentario de línea simple


/*
Este es un comentario con varias líneas.
Conjunto de Líneas.
*/
Declare @nombre varchar(50)-- declare declara una variable @nombre es el
--identificador de la variable de tipo varchar
set @nombre = 'JUAN PEREZ' -- El signo = es un operador
-- JUAN PEREZ es un literal
print @Nombre -- Imprime por pantalla el valor de @nombre.
-- No diferencia mayúsculas ni minúsculas

5.2. Asignar variables

En Transact SQL podemos asignar valores a una variable de varias formas:

➢ A través de la instrucción set.

➢ Utilizando una sentencia SELECT.

➢ Realizando un FETCH de un cursor.

El siguiente ejemplo muestra como asignar una variable utilizando la instrucción SET.

DECLARE @nombre VARCHAR(100)


-- La consulta debe devolver un único registro
SET @nombre = (SELECT nombre FROM CLIENTES WHERE ID = 1)
PRINT @nombre

12
El siguiente ejemplo muestra como asignar variables utilizando una sentencia SELECT.

DECLARE @nombre VARCHAR(100), @apellido1 VARCHAR(100), @apellido2 VARCHAR(100)


SELECT @nombre=nombre , @apellido1=Apellido1, @apellido2=Apellido2
FROM CLIENTES
WHERE ID = 1
PRINT @nombre
PRINT @apellido1
PRINT @apellido2

Un punto a tener en cuenta cuando asignamos variables de este modo, es que, si la consulta
SELECT devuelve más de un registro, las variables quedarán asignadas con los valores de
la última fila devuelta.

Por último, veamos como asignar variables a través de un cursor.

DECLARE @nombre VARCHAR(100), @apellido1 VARCHAR(100), @apellido2 VARCHAR(100)


DECLARE CDATOS CURSOR
FOR
SELECT nombre , Apellido1, Apellido2
FROM CLIENTES
OPEN CDATOS
FETCH CDATOS INTO @nombre, @apellido1, @apellido2
WHILE (@@FETCH_STATUS = 0)
BEGIN
PRINT @nombre
PRINT @apellido1
PRINT @apellido2
FETCH CDATOS INTO @nombre, @apellido1, @apellido2
END
CLOSE CDATOS
DEALLOCATE CDATOS

13
6. ESTRUCTURAS DE CONTROL

6.1. Estructura condicional IF

La estructura condicional IF permite evaluar una expresión booleana (resultado SI - NO),


y ejecutar las operaciones contenidas en el bloque formado por BEGIN END.

IF (<expresion>)
BEGIN
...
END
ELSE IF (<expresion>)
BEGIN
...
END
ELSE
BEGIN
...
END

Ejemplo de la estructura condicional IF.

DECLARE @Condicion varchar(8)


SET @Condicion = 'APROBADO'
IF @Condicion = 'APROBADO'
BEGIN
PRINT 'PASA DE NIVEL'
END
ELSE
BEGIN
PRINT 'REPITE DE NIVEL'
END

La estructura IF admite el uso de subconsultas:

DECLARE @coPais int, @descripcion varchar(255)


set @coPais = 5
set @descripcion = 'PERU'
IF EXISTS(SELECT * FROM PAISES WHERE CO_PAIS = @coPais)
BEGIN
UPDATE PAISES SET DESCRIPCION = @descripcion WHERE CO_PAIS = @coPais
END
ELSE
BEGIN
INSERT INTO PAISES (CO_PAIS, DESCRIPCION) VALUES (@coPais, @descripcion)
END

14
6.2. Estructura condicional CASE

La estructura condicional CASE permite evaluar una expresión y devolver un valor u otro.
La sintaxis general de case es:

CASE <expresion>
WHEN <valor_expresion> THEN <valor_devuelto>
WHEN <valor_expresion> THEN <valor_devuelto>
ELSE <valor_devuelto> -- Valor por defecto
END

Ejemplo de CASE.

DECLARE @Web varchar(100),


@ZONA varchar(3)
SET @ZONA = 'SUR'
SET @Web = (CASE @diminutivo
WHEN 'SUR' THEN 'LIMA'
WHEN 'NOR' THEN 'LA LIBERTAD'
ELSE 'SAN MARTIN'
END)
PRINT @Web

Otra sintaxis de CASE nos permite evaluar diferentes expresiones:

CASE
WHEN <expresion> = <valor_expresion> THEN <valor_devuelto>
WHEN <expresion> = <valor_expresion> THEN <valor_devuelto>
ELSE <valor_devuelto> -- Valor por defecto
END

El mismo ejemplo aplicando esta sintaxis:

DECLARE @Web varchar(100),


@diminutivo varchar(3)
SET @diminutivo = 'DJK'

SET @Web = (CASE


WHEN @diminutivo = 'DJK' THEN 'www.devjoker.com'
WHEN @diminutivo = 'ALM' THEN 'www.aleamedia.com'
ELSE 'www.devjoker.com'
END)
PRINT @Web

15
6.3. Bucle WHILE

El bucle WHILE se repite mientras expresión se evalué como verdadero. Es el único tipo
de bucle del que dispone Transact SQL.

WHILE <expresion>
BEGIN
...
END

Un ejemplo del bucle WHILE.

DECLARE @contador int


SET @contador = 0
WHILE (@contador < 100)
BEGIN
SET @contador = @contador + 1

PRINT 'Iteracion del bucle ' + cast(@contador AS varchar)


END

Podemos pasar a la siguiente iteración del bucle utilizando CONTINUE.

DECLARE @contador int


SET @contador = 0
WHILE (@contador < 100)
BEGIN
SET @contador = @contador + 1
IF (@contador % 2 = 0)
CONTINUE
PRINT 'Iteracion del bucle ' + cast(@contador AS varchar)
END

El bucle se dejará de repetir con la instrucción BREAK.

DECLARE @contador int


SET @contador = 0
WHILE (1 = 1)
BEGIN
SET @contador = @contador + 1
IF (@contador % 50 = 0)
BREAK
PRINT 'Iteracion del bucle ' + cast(@contador AS varchar)
END

16
6.4. TRY CATCH

Estas nuevas instrucciones suponen un gran paso adelante en el control de errores


en SQL Server, un tanto precario en las versiones anteriores. La sintaxis es la siguiente:

BEGIN TRY
...
END TRY
BEGIN CATCH
...
END CATCH

El siguiente ejemplo ilustra el uso de TRY - CATCH.

BEGIN TRY
DECLARE @divisor int , @dividendo int, @resultado int
SET @dividendo = 100
SET @divisor = 0
-- Esta línea provoca un error de división por 0
SET @resultado = @dividendo/@divisor
PRINT 'No hay error'
END TRY
BEGIN CATCH
PRINT 'Se ha producido un error'
END CATCH

7. BIBLIOGRAFÍA

• Gabillaud, J. (2015). Diseño y creación de una base de datos. España: Eni

SITIOS WEB
https://www.ediciones-eni.com/libro/sql-server-2014-sql-transact-sql-diseno-y-creacion-de-una-
base-de-datos-con-ejercicios-practicos-corregidos-9782746095526#TabStrip_infos
http://www.tutorialesprogramacionya.com/sqlserverya/

17

También podría gustarte