Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccion A Transact-SQL PDF
Introduccion A Transact-SQL PDF
Contenido
Introduccin 1
El lenguaje de programacin Transact-SQL 2
Tipos de instrucciones de Transact-SQL 3
Elementos de la sintaxis de Transact-SQL 7
Introduccin a Transact-SQL i
Introduccin
Objetivos de la
diapositiva
Proporcionar una introduc-
cin a los temas y objetivos El lenguaje de programacin Transact-SQL
del mdulo.
Tipos de instrucciones de Transact-SQL
Explicacin previa
En este mdulo aprender Elementos de la sintaxis de Transact-SQL
acerca de Transact-SQL.
Una consulta es una peticin que se hace para obtener datos almacenados en
Sugerencia SQL Server. Todas las consultas presentan al usuario el conjunto de resultados
Resalte que este curso se
centra especialmente en el
de una instruccin SELECT. Un conjunto de resultados es una tabla que
uso de las instrucciones de muestra los datos obtenidos mediante la instruccin SELECT. La tabla tiene
Lenguaje de tratamiento de filas y columnas.
datos (DML)
La escritura y ejecucin de instrucciones de Transact-SQL es una de las formas
en que se puede realizar una consulta en SQL Server. Cuando escriba y ejecute
instrucciones de Transact-SQL, utilizar:
Instrucciones del Lenguaje de definicin de datos (DDL), que se utilizan
para crear objetos en la base de datos.
Instrucciones del Lenguaje de control de datos (DCL), que se utilizan para
determinar quin puede ver o modificar los datos.
Instrucciones del Lenguaje de tratamiento de datos (DML), que se utilizan
para consultar y modificar los datos.
USE
USE northwind
northwind
GRANT
GRANT SELECT
SELECT ON
ON products
products TO
TO public
public
GO
GO
Las instrucciones de DCL se utilizan para cambiar los permisos asociados con
Sugerencia un usuario o funcin de la base de datos. En la tabla siguiente se describen las
Para obtener ms
informacin acerca de las
instrucciones de DCL.
instrucciones de DCL, Instruccin Descripcin
consulte el curso 2323A,
Administracin de una base GRANT Crea una entrada en el sistema de seguridad que permite a un usuario
de datos Microsoft SQL trabajar con datos o ejecutar ciertas instrucciones de Transact-SQL.
Server 2000.
DENY Crea una entrada en el sistema de seguridad que deniega un permiso de
una cuenta de seguridad e impide que el usuario, grupo o funcin herede
el permiso a travs de su pertenencia a grupos o funciones.
REVOKE Quita un permiso concedido o denegado previamente.
USE
USE northwind
northwind
SELECT
SELECT categoryid,
categoryid, productname,
productname, productid,
productid, unitprice
unitprice
FROM
FROM products
products
GO
GO
GO
Las utilidades de SQL Server interpretan el comando GO como una seal para
iniciar el envo del lote actual de instrucciones de Transact-SQL a SQL Server.
Un comando GO enva lotes de instrucciones de Transact-SQL a las
herramientas y utilidades. No se trata, realmente, de una instruccin de
Transact-SQL.
Al usar el comando GO debe tener en cuenta estas cuestiones:
El lote actual de instrucciones incluye todas las que se han escrito desde
el comando GO anterior o desde el inicio de la sesin (o secuencia de
comandos, si se trata del primer comando GO).
Una instruccin de Transact-SQL no puede ocupar la misma lnea que el
comando GO, aunque esa lnea s puede contener comentarios.
Los usuarios deben seguir las normas aplicables a los lotes.
Por ejemplo, algunas instrucciones del Lenguaje de definicin de datos
(DDL) deben ejecutarse de forma independiente de otras instrucciones de
Transact-SQL, por lo que se separan unas de otras por medio de un
comando GO.
El mbito de las variables locales (definidas por el usuario) se limita a
un lote, con lo que no se puede hacer referencia a ellas despus de un
comando GO.
EXEC
La directiva EXEC se usa para ejecutar una funcin definida por el usuario,
un procedimiento de sistema, un procedimiento almacenado definido por el
usuario o un procedimiento almacenado extendido. Tambin puede controlar
la ejecucin de una cadena de caracteres dentro de un lote de Transact-SQL.
Se pueden pasar parmetros en forma de argumentos y tambin se puede
asignar un estado de retorno.
10 Introduccin a Transact-SQL
Comentarios
Objetivos de la
diapositiva Comentarios de lnea Ejemplo
Ejemplo 11
Presentar a los alumnos SELECT
SELECT productname
productname
el uso comn de los ,, (unitsinstock
(unitsinstock -- unitsonorder)
unitsonorder) --
-- Calcula
Calcula el
el inventario
inventario
comentarios. ,, supplierID
supplierID
FROM
FROM products
products
Explicacin previa GO
GO
Los comentarios son
cadenas que no se ejecutan
y que puede colocar en las Comentarios de bloque Ejemplo
Ejemplo 33
instrucciones para realizar /*
/*
anotaciones o deshabilitar Este
Este cdigo
cdigo devuelve
devuelve todas
todas las
las filas
filas de
de la
la tabla
tabla
una parte de las mismas products
products yy muestra
muestra el
el precio
precio por
por unidad,
unidad, el
el precio
precio
durante las pruebas. aumentado
aumentado en
en un
un 10
10 por
por ciento
ciento yy el
el nombre
nombre del
del producto.
producto.
*/
*/
USE
USE northwind
northwind
SELECT
SELECT unitprice,
unitprice, (unitprice
(unitprice ** 1.1),
1.1), productname
productname
FROM
FROM products
products
GO
GO
Comentarios de bloque
Para crear bloques de varias lneas de comentarios, coloque un carcter de
comentario (/*) al comienzo del texto del comentario, escriba sus anotaciones y,
despus, concluya el comentario con un carcter de cierre de comentario (*/).
Utilice este indicador de carcter para crear una o varias lneas de comentarios o
encabezados de comentarios (texto descriptivo que documenta las instrucciones
que le siguen). A menudo, los encabezados de comentario incluyen el nombre
del autor, la fecha de creacin y de la ltima modificacin de la secuencia de
comandos, informacin de la versin y una descripcin de la accin que realiza
la instruccin.
Ejemplo 3 En este ejemplo se muestra un encabezado de comentario que abarca varias
lneas.
/*
Este cdigo devuelve todas las filas de la tabla
products y muestra el precio por unidad, el precio
aumentado en un 10 por ciento y el nombre del producto.
*/
USE northwind
SELECT unitprice, (unitprice * 1.1), productname
FROM products
GO
Ejemplo 4 Esta seccin de una secuencia de comandos est comentada para evitar que se
ejecute. Esto puede resultar til cuando se depura o se solucionan problemas de
un archivo de comandos.
/*
DECLARE @v1 int
SET @v1 = 0
WHILE @v1 < 100
BEGIN
SELECT @v1 = (@v1 + 1)
SELECT @v1
END
*/
12 Introduccin a Transact-SQL
Identificadores
Objetivos de la
diapositiva Identificadores estndar
Presentar las reglas de
denominacin de los objetos
z El primer carcter debe ser un carcter alfabtico
de SQL Server (reglas de z Otros caracteres pueden incluir letras, nmeros o smbolos
identificadores).
Explicacin previa z Los identificadores que comienzan con un smbolo tienen
SQL Server proporciona usos especiales
varias reglas estndar de Identificadores delimitados
denominacin para los
identificadores de objetos y z Se utilizan cuando los nombres contienen espacios
un mtodo para utilizar incrustados
delimitadores con los
identificadores que no son z Se utilizan cuando partes de los nombres incluyen
estndar. palabras reservadas
z Deben encerrarse entre corchetes ([ ]) o dobles comillas (" ")
Nota Los nombres de los objetos temporales no deben superar los 116
caracteres, con el smbolo de almohadilla (#) o la doble almohadilla (##)
incluidos, porque SQL Server asigna a los objetos temporales un sufijo
numrico interno.
Introduccin a Transact-SQL 13
Tipos de datos
Objetivos de la
diapositiva
Describir los tipos de datos
bsicos de Transact-SQL. Nmeros Variaciones de SQL
Explicacin previa Fechas Texto e imagen
Los tipos de datos limitan
los tipos de valores que se Caracteres Tablas
pueden almacenar en una
base de datos. Binario Cursores
Identificadores nicos Tipos de datos definidos
(GUID) por el usuario
Los tipos de datos limitan los tipos de valores que se pueden almacenar en
Sugerencia una base de datos. Son atributos que especifican el tipo de informacin que se
Los tipos de datos ms
sencillos y relativamente
puede guardar en una columna, parmetro o variable. La mayor parte de las
normales aparecen en la instrucciones de Transact-SQL no hacen referencia explcita a ningn tipo de
columna izquierda de la datos, pero los resultados de la mayor parte de las instrucciones se ven influidos
diapositiva, mientras que los por las interacciones entre los tipos de datos de los objetos a los que se hace
ms complejos estn en la referencia en la instruccin.
columna derecha.
SQL Server proporciona tipos de datos suministrados por el sistema (bsicos),
aunque puede crear otros tipos de datos adicionales. stos son algunos ejemplos
de tipos de datos bsicos:
Nmeros
Este tipo de datos corresponde a los valores numricos e incluye enteros como
int, tinyint, smallint y bigint. Tambin incluye valores decimales especficos
como numeric, decimal, money y smallmoney. Y, finalmente, incluye valores
de coma flotante como float y real.
Fechas
Este tipo de datos representa fechas o intervalos de tiempo. Los dos tipos de
datos de fechas son datetime, que tiene una precisin de 0,333 milisegundos, y
smalldatetime, que tiene una precisin de 1 minuto.
Caracteres
Este tipo de datos se usa para representar datos formados por caracteres o
cadenas de caracteres. Incluye tipos de datos para cadenas de caracteres de
ancho fijo, como char y nchar, as como tipos de datos para cadenas de
caracteres de ancho variable, como varchar y nvarchar.
16 Introduccin a Transact-SQL
Para su informacin
Binario
El tipo de datos rowversion Este tipo de datos es muy similar a los tipos de datos de caracteres en cuanto a
es el alias que usa almacenamiento y estructura, la diferencia es que los datos que contiene se
SQL Server 2000 para el tratan como si fueran una serie de valores de byte (octeto). Los tipos de datos
tipo de datos timestamp. binarios incluyen binary y varbinary. El tipo de datos bit indica un valor de
El tipo de datos rowversion un solo bit, es decir cero o uno. El tipo de datos rowversion indica un valor
tiene las mismas funciones binario especial de 8 bytes que es nico dentro de una base de datos.
que timestamp. La defini-
cin de timestamp se
cambiar en una versin
Identificadores nicos
futura de SQL Server para Este tipo especial de datos, uniqueidentifier, representa un identificador global
que coincida con la defini- nico (GUID) que es un valor hexadecimal de 16 bytes que debe ser siempre
cin de timestamp en nico.
SQL-99.
Variaciones de SQL
Este tipo de datos puede representar valores de diversos tipos de datos
compatibles con SQL Server, exceptuando text, ntext, rowversion y otros
valores sql_variant.
Texto e imagen
Estos tipos de datos corresponden a estructuras de objetos binarios grandes
(BLOB, Binary Large Object) que representan tipos de datos de longitud fija y
variable en los que se pueden guardar datos binarios y caracteres Unicode y no
Unicode, como image, text y ntext.
Tablas
Este tipo de datos representa una estructura de tabla. En SQL Server 2000 es
posible guardar una tabla dentro de un campo.
Cursores
Este tipo de datos se usa para programar dentro de procedimientos almacenados
y con interfaces de cliente de bajo nivel. El tipo de datos cursor no se usa nunca
en una instruccin DDL.
Variables
Objetivos de la
diapositiva Variable definida por el usuario en una instruccin
Definir una variable y DECLARE @
describir cmo utilizarla.
Valores asignados con una instruccin SET o SELECT @
Explicacin previa
Las variables locales se Las variables tienen el mbito Local o Global
declaran en el cuerpo de un
programa por lotes o
procedimiento mediante la USE
USE northwind
northwind
instruccin DECLARE, y se DECLARE
DECLARE @EmpID
@EmpID varchar(11)
varchar(11)
les asignan valores con una ,@vlName
,@vlName char(20)
char(20)
instruccin SELECT. SET
SET @vlname
@vlname == 'Dodsworth'
'Dodsworth'
SELECT
SELECT @EmpID
@EmpID == employeeid
employeeid
FROM
FROM employees
employees
WHERE
WHERE LastName
LastName == @vlname
@vlname
SELECT
SELECT @EmpID
@EmpID AS
AS EmployeeID
EmployeeID
GO
GO
Resultado EmployeeID
9
(1 fila afectada)
Introduccin a Transact-SQL 19
Resultado AvgPrice
28.8663
(1 fila afectada)
20 Introduccin a Transact-SQL
Resultado database
Northwind
(1 fila afectada)
Las funciones del sistema se suelen utilizar para convertir datos de fecha del
Sugerencia formato de un pas al de otro pas.
Vaya al tema acerca de
CONVERT de los Libros
en pantalla de SQL Server y Nota Para cambiar los formatos de fecha, debe utilizar la funcin CONVERT
resalte las opciones de con la opcin de estilo para determinar el formato de fecha que se devolver.
estilo.
Ejemplo 1 En este ejemplo se demuestra cmo puede convertir fechas a distintos estilos.
SELECT 'ANSI:', CONVERT (varchar(30), GETDATE(), 102) AS Style
UNION
SELECT 'Japanese:', CONVERT(varchar(30), GETDATE(), 111)
UNION
SELECT 'European:', CONVERT(varchar(30), GETDATE(), 113)
GO
Resultado Style
European: 19 Mar 1998 16:34:40:616
Japanese: 1998/03/19
ANSI: 1998.03.19
(1 fila afectada)
Ejemplo 3 En este ejemplo se devuelve el nombre del usuario actual y la aplicacin que
est utilizando en la sesin o conexin actual. El usuario de este ejemplo es
miembro de la funcin sysadmin.
USE library
SELECT user_name(), app_name()
GO
(1 fila afectada)
Resultado 0
(1 fila afectada)
Introduccin a Transact-SQL 23
Operadores
Objetivos de la
diapositiva
Mostrar cmo se utilizan los
operadores para tratar los Tipos de operadores
conjuntos de resultados.
z Aritmtico
Explicacin previa
Los operadores se pueden z Comparacin
utilizar para realizar clculos
o comparar valores. z Concatenacin de cadenas
z Lgico
Niveles de precedencia de los operadores
Tipos de operadores
SQL Server admite cuatro tipos de operadores: aritmtico, comparacin,
concatenacin de cadenas y lgico.
Sugerencia Aritmtico
Transact-SQL admite Los operadores aritmticos realizan clculos con columnas numricas o
adems operadores constantes. Transact-SQL admite operadores multiplicativos, que incluyen la
binarios. Se omiten aqu multiplicacin (*), divisin (/) y mdulo (%) (el nmero entero que queda al
porque se usan con poca dividir nmeros enteros), y los operadores aditivos de adicin (+) y
frecuencia.
sustraccin (-).
24 Introduccin a Transact-SQL
Comparacin
Los operadores de comparacin comparan dos expresiones. Las comparaciones
se pueden realizar entre variables, columnas y expresiones de tipo similar. Los
operadores de comparacin se incluyen en la tabla siguiente.
Operador Significado
= Igual que
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
<> No igual que
Concatenacin de cadenas
El operador de concatenacin de cadenas (+) concatena valores de cadena. El
resto de las operaciones con cadenas se controla mediante las funciones de
cadena. Las cadenas vacas no se evalan nunca como un valor NULL.
Lgico
Los operadores lgicos AND, OR y NOT conectan las condiciones de bsqueda
de las clusulas WHERE.
Nota Los niveles de precedencia de los operadores lgicos en SQL Server son
distintos a los que se usan en otros lenguajes de programacin.
Introduccin a Transact-SQL 25
Expresiones
Objetivos de la
diapositiva
Presentar a los alumnos las
expresiones. Combinacin de smbolos y operadores
Explicacin previa Evaluacin de valores escalares simples
Las expresiones son
combinaciones de smbolos El tipo de datos del resultado depende de los
y operadores que dan como elementos que forman la expresin
resultado un nico valor.
SELECT
SELECT OrderID,
OrderID, ProductID
ProductID
,(UnitPrice
,(UnitPrice ** Quantity)
Quantity) as
as ExtendedAmount
ExtendedAmount
FROM
FROM [Order
[Order Details]
Details]
WHERE
WHERE (UnitPrice
(UnitPrice ** Quantity)
Quantity) >> 10000
10000
GO
GO
(6 filas afectadas)
26 Introduccin a Transact-SQL
Nivel de instruccin
Los siguientes elementos del lenguaje permiten controlar el flujo de la lgica en
una secuencia de comandos:
Bloques IF ELSE Estos elementos especifican que SQL Server debe ejecutar
la primera alternativa si una condicin es verdadera. En caso contrario, SQL
Server debe ejecutar la segunda alternativa.
Nivel de fila
Una expresin CASE enumera predicados, asigna un valor a cada uno y, a
continuacin, prueba cada uno de ellos. Si la expresin devuelve un valor
verdadero, la expresin CASE devuelve el valor de la clusula WHEN. Si la
expresin es falsa y ha especificado una clusula ELSE, SQL Server devuelve
el valor de la clusula ELSE. Puede utilizar una expresin CASE en cualquier
lugar en el que pueda utilizar una expresin.
Sintaxis CASE expresin
{WHEN expresin THEN resultado} [,n]
[ELSE resultado]
END
Ejemplo 2 En el ejemplo siguiente se declara una variable local, se comprueba si su valor
es 4, 5 6, y si lo es, se pasa ese nmero de veces por un bucle WHILE para
determinar si el valor actual es un nmero par o impar.
DECLARE @n tinyint
Sugerencia SET @n = 5
Seale que las sangras
IF (@n BETWEEN 4 and 6)
de bloque que se usan
BEGIN
en el ejemplo 2 mejoran
la legibilidad. WHILE (@n > 0)
BEGIN
SELECT @n AS 'Number'
,CASE
WHEN (@n % 2) = 1
THEN 'ODD'
ELSE 'EVEN'
END AS 'Type'
SET @n = @n - 1
END
END
ELSE
PRINT 'NO ANALYSIS'
GO
28 Introduccin a Transact-SQL
(1 fila afectada)
Number Type
4 EVEN
(1 fila afectada)
Number Type
3 ODD
(1 fila afectada)
Number Type
2 EVEN
(1 fila afectada)
Number Type
1 ODD
(1 fila afectada)
Introduccin a Transact-SQL 29
SQL Server tiene reservadas determinadas palabras clave para su uso exclusivo.
Sugerencia Por ejemplo, si se usan las palabras clave DUMP o BACKUP en una sesin de
Muestre la amplia lista de
palabras clave que aparece
osql o del Analizador de consultas de SQL, se estar indicando a SQL Server
en los Libros en pantalla de que debe realizar una copia de seguridad total o parcial de la base de datos, o
SQL Server. una copia de seguridad del registro.
No se pueden incluir palabras clave reservadas en ningn lugar dentro de una
instruccin de Transact-SQL, excepto en los casos que define SQL Server.
Debe evitar usar una palabra clave reservada como nombre de un objeto. Si el
nombre de un objeto coincide con una palabra clave, cada vez que se haga
referencia al objeto debe aparecer entre identificadores delimitadores, como
dobles comillas ( ) o corchetes ([ ]).
La persona que asume las funciones de administrador de base de datos o del
sistema, o el creador de la base de datos, suele ser responsable de comprobar
que no se usan palabras clave reservadas en las instrucciones de Transact-SQL
ni en los nombres de las bases de datos.