Módulo 2: Introducción A La Programación de SQL Server: Contenido
Módulo 2: Introducción A La Programación de SQL Server: Contenido
Módulo 2: Introducción A La Programación de SQL Server: Contenido
a la programación de
SQL Server
Contenido
Introducción 1
Diseño de la arquitectura de
aplicaciones corporativas 2
Herramientas de programación de
SQL Server 7
El lenguaje de programación
Transact-SQL 10
Elementos de Transact-SQL 11
Elementos adicionales del lenguaje 19
Formas de ejecutar instrucciones
Transact-SQL 32
Procedimientos recomendados 43
Práctica A: Introducción a Transact-SQL 44
Repaso 52
La información contenida en este documento está sujeta a modificaciones sin previo aviso. A
menos que se indique lo contrario, los nombres de las compañías, productos, personas, personajes
y datos mencionados son ficticios, y no representan de ningún modo a ninguna persona, compañía,
producto o acontecimiento reales. Es responsabilidad del usuario el cumplimiento de todas las
leyes de derechos de autor aplicables. Ninguna parte de este documento puede ser reproducida o
transmitida de ninguna forma, ni por ningún medio, ya sea electrónico o mecánico, con ningún
propósito, sin la previa autorización por escrito de Microsoft Corporation. Sin embargo, si su único
medio de acceso es electrónico, se le concede permiso para imprimir una copia.
Microsoft puede ser titular de patentes, solicitudes de patentes, marcas, derechos de autor y otros
derechos de propiedad intelectual sobre el contenido de este documento. El suministro de este
documento no le otorga ninguna licencia sobre estas patentes, marcas, derechos de autor, u otros
derechos de propiedad intelectual, a menos que ello se prevea en un contrato por escrito de licencia
de Microsoft.
Microsoft, ActiveX, BackOffice, MS-DOS, PowerPoint, Visual Basic, Visual C++, Visual Studio,
Windows y Windows NT son marcas comerciales registradas o marcas comerciales de Microsoft
Corporation en los Estados Unidos o en otros países.
Otros nombres de productos y compañías mencionados aquí pueden ser marcas comerciales de sus
respectivos propietarios.
Material y preparación
Esta sección proporciona el material y las tareas de preparación que se
necesitan para impartir este módulo.
Material necesario
Para impartir este módulo, necesitará el material siguiente:
Archivo 2329A_02.ppt de Microsoft PowerPoint®.
Archivo de ejemplo C:\Moc\2329A\Demo\D02_Ex.sql, que contiene todas
las secuencias de comandos de ejemplo del módulo, excepto cuando se
indique lo contrario.
Tareas de preparación
Para preparar este módulo, deberá:
Leer todo el material del mismo.
Completar la práctica.
Completar todas las demostraciones.
Practicar la presentación.
Revisar las notas del producto relevantes incluidas en el disco compacto
Material del instructor.
iv Módulo 2: Introducción a la programación de SQL Server
Información de personalización
En esta sección se identifican los requisitos de instalación de las prácticas para
un módulo y los cambios de configuración que ocurren en los equipos de los
alumnos durante estas prácticas. Esta información pretende ayudarle a duplicar
o personalizar el material del curso de Microsoft Official Curriculum (MOC).
Preparación de la práctica
No hay requisitos de preparación de la práctica que afecten a la duplicación o
personalización.
Introducción
Objetivo del tema
Proporcionar una
introducción a los temas
y objetivos del módulo. Diseño de la arquitectura de aplicaciones corporativas
Explicación previa Herramientas de programación de SQL Server
En este módulo, aprenderá
acerca de la arquitectura El lenguaje de programación Transact-SQL
de aplicaciones de nivel
empresarial y acerca de Elementos de Transact-SQL
Transact-SQL como
lenguaje de programación. Elementos adicionales del lenguaje
Formas de ejecutar instrucciones Transact-SQL
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Después de completar este módulo, el alumno será capaz de:
Describir los conceptos relacionados con la arquitectura de aplicaciones de
nivel empresarial.
Describir las herramientas principales de programación de Microsoft®
SQL Server™ 2000.
Explicar la diferencia entre las dos principales herramientas de
programación de SQL Server.
Describir los elementos básicos de Transact-SQL.
Describir el uso de variables locales, operadores, funciones, instrucciones
de control de flujo y comentarios.
Describir las diversas formas de ejecutar instrucciones Transact-SQL.
2 Módulo 2: Introducción a la programación de SQL Server
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
SQL Server suele formar parte de una aplicación distribuida. El diseño de una
implementación de SQL Server para una solución empresarial dependerá de la
arquitectura que elija y de cómo va a distribuir la lógica entre las aplicaciones.
Módulo 2: Introducción a la programación de SQL Server 3
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
La arquitectura de aplicaciones corporativas contiene capas lógicas.
Las capas representan la presentación de los datos, la lógica de la aplicación
y los servicios de datos.
IIS Componentes
Lógica de
Presentación de datos la aplicación Servicios de datos
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Existen diversas formas en que pueden colocarse físicamente capas lógicas en
un entorno distribuido. Aunque todas las capas lógicas pueden residir en un
equipo, por lo general se distribuyen en un modelo de dos capas o en uno de
múltiples capas. Esto permite implementar la lógica, las reglas empresariales y
el procesamiento allí donde son más efectivos.
Acceso a datos
Objetivo del tema Aplicaciones
Aplicaciones yy componentes
componentes Explorador
Explorador
Ilustrar las diversas formas
de tener acceso a los datos. Cliente
Access Excel personalizado IIS
IIS
Explicación previa Datos
Puede tener acceso a datos Consumi- ActiveX
ActiveX Data
Data Objects
Objects (ADO)
(ADO)
corporativos mediante dores
clientes previamente
creados o clientes Datos Proveedores
Proveedores de
de datos
datos OLE
OLE DB
DB (Servicios)
(Servicios)
personalizados. Proveedores
Procesadores Servicios
Cursores de consultas empresariales
Proveedores
Proveedores de
de datos
datos OLE
OLE DB
DB (Datos)
(Datos)
Active Otros proveedores
ODBC SQL Server Jet Directory Exchange Excel de OLE DB
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las tecnologías de Microsoft le permiten tener acceso a datos corporativos
mediante una amplia gama de clientes ya creados o clientes personalizados
que utilizan una interfaz de programación de acceso a datos.
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
SQL Server 2000 ofrece varias herramientas de programación, que incluyen el
Analizador de consultas SQL y la herramienta osql. El Analizador de consultas
de SQL Server es una aplicación basada en Windows y osql es una herramienta
que se puede ejecutar desde el símbolo del sistema.
(continuación)
Argumento Descripción
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL******
Transact-SQL es la implementación de SQL Server del estándar de nivel
de entrada ANSI-SQL de la Organización internacional de estándares
(ISO, International Standards Organization). Los elementos del lenguaje
Transact-SQL compatibles con ANSI-SQL se pueden ejecutar desde cualquier
producto de nivel de entrada compatible con ANSI-SQL. Transact-SQL
contiene también elementos adicionales del lenguaje que son únicos.
Elementos de Transact-SQL
Objetivo del tema
Presentar los elementos
básicos del lenguaje de
programación Instrucciones del Lenguaje de control de datos
Transact-SQL.
Instrucciones del Lenguaje de definición de datos
Explicación previa
Cuando escriba y ejecute Instrucciones del Lenguaje de tratamiento de datos
instrucciones Transact-SQL,
utilizará algunos de estos Nombres de los objetos de SQL Server
elementos del lenguaje.
Directrices de denominación
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Cuando escriba y ejecute instrucciones Transact-SQL, utilizará instrucciones
de lenguajes diferentes, que se utilizan para determinar quién puede ver o
modificar los datos, crear objetos en la base de datos, y consultar o modificar
los datos. Debe seguir las reglas de asignación de nombres a objetos de
SQL Server y familiarizarse con las directrices de denominación de los objetos
de la base de datos.
12 Módulo 2: Introducción a la programación de SQL Server
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las instrucciones del Lenguaje de control de datos (DCL, Data Control
Sugerencia Language) se utilizan para cambiar los permisos asociados con un usuario o
Para obtener más
información acerca de
función de la base de datos. En la tabla siguiente se describen las instrucciones
las instrucciones DDL, de DCL.
consulte el curso 2323A,
Instrucción Descripción
Administración de una
base de datos Microsoft GRANT Crea una entrada en el sistema de seguridad que permite a un usuario
SQL Server 2000. trabajar con datos o ejecutar determinadas instrucciones Transact-SQL.
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 función herede
el permiso a través de su pertenencia a grupos o funciones.
REVOKE Quita un permiso concedido o denegado previamente.
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las instrucciones del Lenguaje de definición de datos (DDL, Data Definition
Language) definen la base de datos mediante la creación de bases de datos,
tablas y tipos de datos definidos por el usuario. Las instrucciones de DDL se
utilizan también para administrar los objetos de la base de datos. Algunas
instrucciones de DDL son:
CREATE tipoObjeto nombreObjeto
ALTER tipoObjeto nombreObjeto
DROP tipoObjeto nombreObjeto
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las instrucciones de DML trabajan con los datos de la base de datos.
Mediante estas instrucciones puede cambiar los datos o recuperar información.
Las instrucciones de DML incluyen:
SELECT
INSERT
UPDATE
DELETE
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
SQL Server proporciona varias reglas estándar de denominación para los
Sugerencia identificadores de objetos y un método para utilizar delimitadores con los
Demuestre cómo el
Analizador de consultas
identificadores que no son estándar. Si es posible, se recomienda utilizar los
SQL codifica con colores caracteres estándar de los identificadores para asignar nombres a los objetos.
los elementos de las
instrucciones para mostrar Identificadores estándar
palabras reservadas, Los identificadores estándar pueden contener de uno a 128 caracteres, incluidos
cadenas, etc. letras, símbolos (_, @, o #) y números. En los identificadores estándar no se
permite incluir espacios. Debe tener en cuenta las siguientes reglas para utilizar
identificadores:
El primer carácter debe ser un carácter alfabético de la “a” a la “z” o de la
“A” a la “Z”.
Después del primer carácter, los identificadores pueden incluir letras,
números o los símbolos @, $, # o _.
Los nombres de los identificadores que comienzan con un símbolo tienen
usos especiales:
• Un identificador que comience con el símbolo @ indica una variable o
parámetro local.
• Un identificador que comience con el símbolo de almohadilla (#) indica
una tabla o procedimiento temporal.
• Un identificador que comience con una almohadilla doble (##) indica un
objeto global temporal.
Nota Los nombres de los objetos temporales no deben superar los 116
caracteres, con el símbolo de almohadilla (#) o el de doble almohadilla (##)
incluidos, porque SQL Server asigna a los objetos temporales un sufijo
numérico interno.
Módulo 2: Introducción a la programación de SQL Server 17
Identificadores delimitados
Si un identificador cumple todas las reglas de formato de los identificadores, se
puede utilizar con o sin delimitadores. Si un identificador no cumple alguna de
las reglas de formato de los identificadores, siempre debe estar delimitado.
Los identificadores delimitados se pueden utilizar en las situaciones siguientes:
Cuando los nombres contienen espacios incrustados.
Cuando se utilizan palabras reservadas en los nombres de los objetos o en
partes de los nombres de los objetos.
Directrices de denominación
Objetivo del tema
Presentar sugerencias
de directrices de Utilizar nombres significativos cuando sea posible
denominación.
Poner nombres cortos
Explicación previa
Las directrices de denomi- Utilizar una convención de denominación clara y
nación de objetos de la sencilla
base de datos son
importantes para identificar
Elegir un identificador que distinga los tipos de objetos
el tipo de objeto y para Vistas
facilitar la resolución de
problemas y la depuración. Procedimientos almacenados
Cuando asigne nombres a
los objetos de la base de Hacer que los nombres de los objetos y de los usuarios
datos, debe… sean únicos
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las directrices de denominación de objetos de la base de datos son importantes
para identificar el tipo de objeto y para facilitar la resolución de problemas y la
depuración. Cuando asigne nombres a los objetos de la base de datos, debe:
Utilizar nombres significativos cuando sea posible.
Por ejemplo, podría asignar el nombre Chr_Name_Of_Customer a una
columna que contiene el nombre de los clientes. Un prefijo de Chr en el
nombre de la columna indica un tipo de datos character.
Poner nombres cortos.
Por ejemplo, aunque el nombre de la columna Chr_Name_Of_Customer
es significativo, podría acortarlo a Name o Chr_Name.
Utilizar una convención de denominación clara y sencilla.
Decida qué funciona mejor en su situación y sea coherente. Evite
convenciones de denominación demasiado complejas, ya que pueden
ser difíciles de recordar. Por ejemplo, puede quitar las vocales si el nombre
de un objeto es similar a una palabra clave (como un procedimiento
almacenado de copia de seguridad denominado Bckup).
Elegir un identificador que distinga el tipo de objeto, especialmente para las
vistas y los procedimientos almacenados.
A menudo, los administradores de sistemas confunden las vistas con las
tablas, un descuido que puede causar problemas inesperados. Por ejemplo,
si crea una vista que combina dos tablas, podría asignarle el nombre
SoldView.
Hacer que los nombres de los objetos y de los usuarios sean únicos.
Por ejemplo, evite crear una tabla Sales y una función sales en la misma
base de datos.
Módulo 2: Introducción a la programación de SQL Server 19
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Algunos de los elementos adicionales del lenguaje Transact-SQL incluyen
variables locales, operadores, funciones, instrucciones de control de flujo y
comentarios.
20 Módulo 2: Introducción a la programación de SQL Server
Variables locales
Objetivo del tema
Definir una variable y
describir cómo utilizarla.
Explicación previa Usuario definido con la instrucción DECLARE
Las variables locales se Valores asignados con la instrucción SET o Select
declaran en el cuerpo de
un programa por lotes o
procedimiento mediante la
instrucción DECLARE, y se DECLARE
DECLARE @vLastName
@vLastName char(20),
char(20),
les asignan valores con una @vFirstName
@vFirstName varchar(11)
varchar(11)
instrucción SET o SELECT. SET
SET @vLastName
@vLastName == 'Dodsworth'
'Dodsworth'
SELECT
SELECT @vFirstName
@vFirstName == FirstName
FirstName
FROM
FROM Northwind..Employees
Northwind..Employees
WHERE
WHERE LastName
LastName == @vLastName
@vLastName
PRINT
PRINT @vFirstName
@vFirstName ++ '' '' ++ @vLastName
@vLastName
GO
GO
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las variables son elementos del lenguaje con valores asignados.
Sugerencia En Transact-SQL se pueden utilizar variables locales.
Demuestre esto con el
Analizador de consultas Se puede definir una variable local en una instrucción DECLARE y, luego,
SQL. asignarle un valor inicial con la instrucción SET o SELECT. La instrucción
SET se utiliza cuando se conoce el valor deseado. La instrucción SELECT
se utiliza cuando hay que buscar el valor deseado en una tabla. Una vez
establecido el valor de la variable, puede utilizarse en la instrucción, proceso
por lotes o procedimiento en el que se declaró. Un lote es un conjunto de
instrucciones Transact-SQL que se emiten juntas y se ejecutan como un grupo.
Una variable local se muestra con un símbolo @ delante del nombre.
Sintaxis DECLARE {@variableLocal tipoDatos} [,...n]
SET @nombreVariableLocal = expresión
Ejemplo En el ejemplo siguiente se declaran dos variables. La instrucción SET se utiliza
para establecer el valor de la variable @vLastName y la instrucción SELECT
para buscar el valor de la variable @vFirstName. Después se imprimen ambas
variables.
DECLARE @vLastName char(20),
@vFirstName varchar(11)
SET @vLastName = 'Dodsworth'
SELECT @vFirstName = FirstName
FROM Northwind..Employees
WHERE LastName = @vLastName
PRINT @vFirstName + ' ' + @vLastName
GO
Operadores
Objetivo del tema
Mostrar cómo se utilizan los
operadores para tratar los
conjuntos de resultados. Tipos de operadores
Explicación previa Aritmético
Los operadores se pueden
utilizar para realizar cálculos Comparación
o comparar valores.
Concatenación de cadenas
Lógico
Niveles de precedencia de los operadores
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Los operadores son símbolos que realizan cálculos matemáticos,
concatenaciones de cadenas y comparaciones entre columnas, constantes
y variables. Puede combinarlos y utilizarlos en condiciones de búsqueda.
Cuando se combinan, el orden en el que SQL Server procesa los operadores
se basa en una precedencia predefinida.
Sintaxis parcial {constante | nombreColumna | función | (subconsulta)}
[{operadorAritmético | operadorCadena |
AND | OR | NOT}
{constante | nombreColumna | función | (subconsulta)}…]
Tipos de operadores
SQL Server admite cuatro tipos de operadores: aritmético, comparación,
concatenación de cadenas y lógico.
Sugerencia Aritmético
Transact-SQL admite Los operadores aritméticos realizan cálculos con columnas numéricas o
además operadores constantes. Transact-SQL admite operadores multiplicativos, que incluyen la
binarios. Se omiten aquí multiplicación (*), división (/) y módulo (%) (el número entero que queda al
porque su uso es poco dividir números enteros), y los operadores aditivos de adición (+) y
frecuente.
sustracción (-).
22 Módulo 2: Introducción a la programación de SQL Server
Comparación
Los operadores de comparación comparan dos expresiones. Las comparaciones
se pueden realizar entre variables, columnas y expresiones de tipo similar. La
siguiente tabla define los operadores de comparación de Transact-SQL.
Operador Significado
= Igual que
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
<> No igual que
Concatenación de cadenas
El operador de concatenación de cadenas (+) concatena valores de cadena. Las
funciones de cadena controlan todas las demás manipulaciones de la cadena.
Lógico
Los operadores lógicos AND, OR y NOT conectan las condiciones de búsqueda
de las cláusulas WHERE.
SQL Server resuelve primero las expresiones que se encuentran en la parte más
interna de la anidación. Además, si todos los operadores aritméticos de una
expresión comparten el mismo nivel de precedencia, el orden es de izquierda a
derecha.
Módulo 2: Introducción a la programación de SQL Server 23
Funciones
Objetivo del tema
Proporcionar información Funciones de agregado
general acerca de las
funciones disponibles en SELECT
SELECT AVG
AVG (UnitPrice)
(UnitPrice) FROM
FROM Products
Products
SQL Server.
Explicación previa
Transact-SQL proporciona Funciones escalares
muchas funciones que
devuelven información,
entre las que se incluyen… SELECT
SELECT DB_NAME()
DB_NAME() AS
AS 'database'
'database'
SELECT
SELECT **
FROM
FROM OPENQUERY
OPENQUERY
(OracleSvr,
(OracleSvr, 'SELECT
'SELECT ENAME,
ENAME, EMPNO
EMPNO FROM
FROM SCOTT.EMP')
SCOTT.EMP')
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Transact-SQL proporciona muchas funciones que devuelven información.
Sugerencia Las funciones toman parámetros de entrada y devuelven valores que se pueden
Mencione que los alumnos
pueden utilizar funciones en
utilizar en expresiones. El lenguaje de programación Transact-SQL proporciona
cualquier lugar en el que se tres tipos de funciones: de agregado, escalares y de conjunto de filas.
permita una expresión en
una instrucción SELECT. Funciones de agregado
Las funciones de agregado se ejecutan en una colección de valores, aunque
devuelven un único valor de resumen.
Ejemplo 1 En este ejemplo se determina el promedio de la columna UnitPrice de todos los
productos de la tabla Products.
SELECT AVG(UnitPrice) FROM Products
Resultado Products
28.8663
(1 filas afectadas)
24 Módulo 2: Introducción a la programación de SQL Server
Funciones escalares
Las funciones escalares se ejecutan con un único valor y devuelven también un
valor único. Estas funciones se pueden utilizar en todos aquellos lugares en los
que es válida una expresión. Las funciones escalares se pueden agrupar en las
categorías de la tabla siguiente.
Categoría de función Descripción
Resultado Database
Northwind
(1 filas afectadas)
Ejemplos de funciones
Objetivo del tema
Mostrar algunos de los
usos más comunes de
las funciones. SELECT
SELECT 'ANSI:'
'ANSI:' AS
AS Region,
Region,
CONVERT(varchar(30),
CONVERT(varchar(30), GETDATE(),
GETDATE(), 102)
102) AS
AS Style
Style
Explicación previa UNION
UNION
SELECT
SELECT 'European:',
'European:', CONVERT(varchar(30),
CONVERT(varchar(30), GETDATE(),
GETDATE(), 113)
113)
Las funciones se suelen UNION
UNION
utilizar para convertir datos SELECT 'Japanese:', CONVERT(varchar(30), GETDATE(),
SELECT 'Japanese:', CONVERT(varchar(30), GETDATE(), 111) 111)
de fecha del formato de un
país al de otro país. Resultado
Region Style
Style
ANSI:
ANSI: 2000.03.22
11
2000.03.22
European:
European: 22
22Mar
11 2000
Mar 200014:20:00:010
14:20:00:010
Japanese:
Japanese: 2000/03/22
2000/03/22
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las funciones se suelen utilizar para convertir datos de fecha del formato de un
Sugerencia país al de otro país.
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 función CONVERT
elija resalte las opciones de con la opción de estilo para determinar el formato de fecha que se devolverá.
estilo.
Ejemplo 1 En este ejemplo se demuestra cómo puede convertir fechas a distintos estilos.
SELECT 'ANSI:' AS Region,
CONVERT (varchar(30), GETDATE(), 102) AS Style
UNION
SELECT 'European:', CONVERT(varchar(30), GETDATE(), 113)
UNION
SELECT 'Japanese:', CONVERT(varchar(30), GETDATE(), 111)
(1 filas afectadas)
Ejemplo 3 En este ejemplo se devuelve el nombre del usuario actual y la aplicación que
está utilizando en la sesión o conexión actual. El usuario de este ejemplo es
miembro de la función sysadmin.
USE Northwind
SELECT user_name(), app_name()
(1 filas afectadas)
Resultado 0
(1 filas afectadas)
Módulo 2: Introducción a la programación de SQL Server 27
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Transact-SQL contiene varios elementos de lenguaje que controlan el flujo de
la lógica de una instrucción. También contiene la expresión CASE, que permite
utilizar la lógica condicional en una única fila cada vez dentro de una
instrucción SELECT o UPDATE.
Nivel de instrucción
Los siguientes elementos del lenguaje permiten controlar el flujo de la lógica en
una secuencia de comandos:
Bloques IF … ELSE Estos elementos especifican que SQL Server debe ejecutar
la primera alternativa si una condición es verdadera. En caso contrario,
SQL Server debe ejecutar la segunda alternativa.
Nivel de fila
Una expresión CASE enumera predicados, asigna un valor a cada uno y, a
continuación, prueba cada uno de ellos. Si la expresión devuelve un
valor verdadero, la expresión CASE devuelve el valor de la cláusula
WHEN. Si la expresión es falsa y ha especificado una cláusula ELSE,
SQL Server devuelve el valor de la cláusula ELSE. Puede utilizar una
expresión CASE en cualquier lugar en el que pueda utilizar una
expresión.
Sintaxis CASE expresión
{WHEN expresión THEN resultado} [,…n]
[ELSE resultado]
END
Ejemplo El siguiente ejemplo repasa el estado del inventario de los productos de la tabla
Products y devuelve mensajes basados en las cantidades disponibles, las
cantidades de pedidos efectuados y en si se ha interrumpido el suministro del
producto.
SELECT ProductID, 'Product Inventory Status' =
CASE
WHEN (UnitsInStock < UnitsOnOrder AND Discontinued = 0)
THEN 'Negative Inventory - Order Now!'
WHEN ((UnitsInStock-UnitsOnOrder) < ReorderLevel AND
Discontinued = 0)
THEN 'Reorder level reached- Place Order'
WHEN (Discontinued = 1) THEN '***Discontinued***'
ELSE 'In Stock'
END
FROM Northwind..Products
Módulo 2: Introducción a la programación de SQL Server 29
Comentarios
Objetivo del tema
Presentar a los alumnos Comentarios de línea
el uso común de los
comentarios. SELECT
SELECT ProductName,
ProductName,
(UnitsInStock
(UnitsInStock ++ UnitsOnOrder)
UnitsOnOrder) AS
AS Max
Max --
-- Calculates
Calculates inventory
inventory
Explicación previa ,, SupplierID
SupplierID
Los comentarios son FROM Products
FROM Products
cadenas que no se ejecutan
y que puede colocar en las
instrucciones para realizar
Comentarios de bloque
anotaciones o deshabilitar /*
/*
una parte de las mismas **
** This
This code
code retrieves
retrieves all
all rows
rows of
of the
the products
products table
table
durante las pruebas. **
** and
and displays
displays the
the unit
unit price,
price, the
the unit
unit price
price increased
increased
**
** by
by 10
10 percent,
percent, and
and the
the name
name of
of the
the product.
product.
*/
*/
SELECT
SELECT UnitPrice,
UnitPrice, (UnitPrice
(UnitPrice ** 1.1),
1.1), ProductName
ProductName
FROM
FROM Products
Products
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Los comentarios son cadenas de texto que no se ejecutan y que puede colocar
en las instrucciones para describir la acción que la instrucción está realizando o
para deshabilitar una o varias líneas de la instrucción. Se pueden utilizar de una
de estas dos formas: en una línea de una instrucción o como un bloque.
Comentarios de línea
Se pueden crear comentarios en una línea mediante dos guiones (--) para
establecer un comentario aparte de una instrucción. Transact-SQL pasa por alto
el texto situado a la derecha de los caracteres de comentario. Este carácter de
comentario se puede utilizar también para deshabilitar líneas de una instrucción.
Ejemplo 1 En este ejemplo se utiliza un comentario de línea para explicar qué está
haciendo el cálculo.
SELECT ProductName
,(UnitsInStock + UnitsOnOrder) AS Max -- Calculates inventory
, SupplierID
FROM Products
Comentarios de bloque
Para crear bloques de varias líneas de comentarios, coloque un carácter de
comentario (/*) al comienzo del texto del comentario, escriba sus anotaciones y,
después, concluya el comentario con un carácter de cierre de comentario (*/).
Utilice este indicador de carácter para crear una o varias líneas 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 creación y de la última modificación de la secuencia de
comandos, información de la versión y una descripción de la acción que realiza
la instrucción.
Ejemplo 4 Esta sección 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
*/
32 Módulo 2: Introducción a la programación de SQL Server
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Puede ejecutar instrucciones Transact-SQL mediante instrucciones generadas
dinámicamente, lotes, secuencias de comandos y transacciones. También puede
utilizar el Lenguaje de marcado extensible (XML, Extensible Markup
Language) para presentar datos en páginas Web.
Módulo 2: Introducción a la programación de SQL Server 33
EXECUTE
EXECUTE
('USE
('USE '' ++ @dbname
@dbname ++ '' SELECT
SELECT ** FROM
FROM '+
'+ @tblname)
@tblname)
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Se pueden generar instrucciones dinámicamente, con lo que se crean al mismo
tiempo que SQL Server ejecuta la secuencia de comandos.
Para crear una instrucción dinámicamente, utilice la instrucción EXECUTE
con un conjunto de literales de cadena y variables que se resuelven en tiempo
de ejecución.
Las instrucciones creadas dinámicamente son útiles cuando desea que
SQL Server asigne el valor de la variable al ejecutarse la instrucción.
Por ejemplo, puede crear una instrucción dinámica que ejecute la misma
acción sobre un conjunto de objetos de la base de datos.
Sintaxis EXECUTE ({@varCadena | 'cadenaTsql'} + [{@varCadena |
'cadenaTsql'}...])}
Las opciones se establecen dinámicamente y las variables y las tablas
temporales que se crean dinámicamente duran sólo el tiempo que SQL Server
tarda en ejecutar la instrucción.
Tenga en cuenta los siguientes hechos acerca de la instrucción EXECUTE:
La instrucción EXECUTE ejecuta instrucciones compuestas de cadenas de
caracteres en un lote de Transact-SQL. Como se trata de literales de cadena,
asegúrese de agregar espacios en los lugares adecuados para garantizar una
concatenación adecuada.
La instrucción EXECUTE puede incluir un literal de cadena, una variable
local de cadena o una concatenación de ambas.
Todos los elementos de la cadena EXECUTE deben constar de datos de
caracteres; debe convertir todos los datos numéricos antes de utilizar la
instrucción EXECUTE.
34 Módulo 2: Introducción a la programación de SQL Server
Ejemplo 1 Este ejemplo muestra cómo se pueden utilizar las instrucciones ejecutadas
dinámicamente para especificar un contexto de base de datos distinto de aquél
en el que se encuentra en la actualidad y, después, emplearlo para seleccionar
todas las columnas y filas de una tabla especificada. En este ejemplo, el cambio
del contexto de la base de datos a Northwind sólo se prolonga durante el
tiempo que dure la consulta. El contexto de la base de datos actual no se
cambia.
Mediante un procedimiento almacenado, el usuario podría pasar la información
de la base de datos y de la tabla a la instrucción como parámetros y, después,
consultar una tabla específica de una base de datos.
DECLARE @dbname varchar(30), @tablename varchar(30)
SET @dbname = 'Northwind'
SET @tablename = 'Products'
EXECUTE
('USE ' + @dbname +
' SELECT ProductName FROM ' + @tablename)
Resultado ProductName
Chai
Chang
Aniseed Syrup
...
Ejemplo 2 Este ejemplo muestra cómo se puede utilizar una instrucción ejecutada
dinámicamente para cambiar una opción de base de datos durante la ejecución
de la instrucción. La instrucción siguiente no devuelve un recuento del número
de filas afectadas.
EXECUTE ('SET NOCOUNT ON '+ 'SELECT LastName, ReportsTo
FROM Employees WHERE ReportsTo IS NULL')
Uso de lotes
Objetivo del tema
Explicar a los alumnos el Una o varias instrucciones Transact-SQL emitidas
uso de los lotes. juntas
Explicación previa
Un lote es un conjunto de
Definición de un lote con la instrucción GO
instrucciones Transact-SQL Cómo procesa SQL Server los lotes
que se emiten juntas y se
ejecutan como un grupo. Instrucciones que no se pueden combinar en un lote
CREATE PROCEDURE
CREATE VIEW
CREATE TRIGGER
CREATE RULE
CREATE DEFAULT
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
En un lote se puede emitir una o varias instrucciones.
Ejemplo 1 Si desea utilizar más de una instrucción que no se puede combinar, debe enviar
varios lotes, tal como indica la siguiente secuencia de comandos.
CREATE DATABASE ...
CREATE TABLE ...
GO
Ejemplo 3 El siguiente ejemplo muestra cómo agrupar las mismas instrucciones del
ejemplo 2 para que se ejecuten correctamente.
CREATE DATABASE ...
CREATE TABLE ...
GO
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las secuencias de comandos son una de las formas más comunes de ejecutar
instrucciones Transact-SQL. Una secuencia de comandos consta de una o más
instrucciones Transact-SQL que se guardan como un archivo.
Las secuencias de comandos se pueden escribir y guardar en el Analizador de
consultas SQL o en cualquier procesador de texto, como Bloc de notas. El
archivo de comandos se guarda con la extensión de nombre de archivo .sql.
Puede abrir y ejecutar el archivo de comandos en el Analizador de consultas
SQL o con la herramienta osql (u otra herramienta de consulta).
Las secuencias de comandos guardadas son muy útiles al volver a crear bases
de datos u objetos de datos, o cuando se debe utilizar un conjunto de
instrucciones de forma repetida.
Dé a las instrucciones Transact-SQL un formato que otras personas puedan leer.
Utilice sangrías para indicar los niveles de relaciones.
38 Módulo 2: Introducción a la programación de SQL Server
Uso de transacciones
Objetivo del tema
Presentar a los alumnos
las transacciones. Se procesan como lotes
Explicación previa Se garantiza la integridad de los datos
Las transacciones se
procesan como lotes Los cambios en la base de datos se aplican o deshacen
pero con unas cuantas conjuntamente
diferencias importantes…
BEGIN
BEGIN TRANSACTION
TRANSACTION
UPDATE
UPDATE savings
savings SET
SET amount
amount == (amount
(amount -- 100)
100)
WHERE
WHERE custid
custid == 78910
78910
…… <Rollback
<Rollback transaction
transaction if
if error>
error>
UPDATE
UPDATE checking
checking SET
SET amount
amount == (amount
(amount ++ 100)
100)
WHERE
WHERE custid
custid == 78910
78910
…… <Rollback
<Rollback transaction
transaction if
if error>
error>
COMMIT TRANSACTION
COMMIT TRANSACTION
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las transacciones, al igual que los lotes, son grupos de instrucciones que se
Sugerencia envían como un conjunto. Sin embargo, SQL Server trata las transacciones
Las tablas Savings y
Checking utilizadas en
como una única unidad de trabajo, y la transacción funciona o produce un error
los ejemplos de este tema como una sola unidad. Este proceso mantiene la integridad de los datos. Las
son ficticias. transacciones pueden abarcar varios lotes.
Las transacciones se preceden de una instrucción BEGIN TRANSACTION y
se terminan con una instrucción COMMIT TRANSACTION o ROLLBACK
TRANSACTION.
Cuando se confirma una transacción, SQL Server convierte los cambios a esa
transacción en definitivos. Cuando se deshace una transacción, SQL Server
devuelve todas las filas afectadas por la transacción al estado en que se
encontraban antes de la transacción.
Sintaxis parcial BEGIN TRANSACTION
COMMIT / ROLLBACK TRANSACTION
Módulo 2: Introducción a la programación de SQL Server 39
Uso de XML
Objetivos de la
diapositiva
Presentar XML y cómo
una consulta puede Permitir que el explorador cliente dé formato a los datos
devolver datos con formato
XML bien constituido. Especificación de la opción FOR XML AUTO
Explicación previa Especificación de la opción FOR XML RAW
XML es un lenguaje de
programación que los Identificación de las limitaciones en el uso de la
programadores de Web cláusula FOR XML
pueden utilizar para
presentar datos de
una base de datos de
SQL Server en páginas
Web.
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
XML es un lenguaje de programación que los programadores de Web pueden
utilizar para presentar datos de una base de datos de SQL Server en páginas
Web.
Resultado XML_F52E2B61-18A1-11d1-B105-00805F49916B
--------------------------------------------
<Orders OrderID="10248" CustomerID="VINET">
<Shippers CompanyName="Federal Shipping"/>
</Orders>
<Orders OrderID="10249" CustomerID="TOMSP">
<Shippers CompanyName="Speedy Express"/>
</Orders>
Nota SQL Server vuelve a ordenar el conjunto de resultados para agrupar las
columnas por nombre de tabla.
Resultado XML_F52E2B61-18A1-11d1-B105-00805F49916B
----------------------------------------
<row OrderID="10248"
CompanyName="Federal Shipping"
CustomerID="VINET"/>
<row OrderID="10249"
CompanyName="Speedy Express"
CustomerID="TOMSP"/>
42 Módulo 2: Introducción a la programación de SQL Server
Procedimientos recomendados
Objetivo del tema
Presentar las recomenda- Mantenga
Mantenga la
la lógica
lógica empresarial
empresarial en
en el
el servidor
servidor como
como
ciones para programar procedimientos
procedimientos almacenados
almacenados
con Transact-SQL.
Explicación previa Utilice
Las siguientes son Utilice la
la sintaxis
sintaxis ANSI
ANSI SQL
SQL
recomendaciones
para programar con
Transact-SQL. Elija
Elija la
la convención
convención de
de denominación
denominación apropiada
apropiada
Guarde
Guarde las
las instrucciones
instrucciones como
como secuencias
secuencias de
de comandos
comandos yy
coméntelas
coméntelas detalladamente
detalladamente
Dé
Dé aa las
las instrucciones
instrucciones Transact-SQL
Transact-SQL un
un formato
formato que
que otras
otras
personas
personas puedan
puedan leer
leer
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las siguientes recomendaciones le ayudarán a crear secuencias de comandos
más claras en Transact-SQL:
Mantenga la lógica empresarial en el servidor como procedimientos
almacenados.
Cuando sea posible, utilice la sintaxis ANSI SQL para asegurar que las
secuencias de comandos sean lo más compatibles y portables posible.
Elija la convención de denominación apropiada y asigne nombres a los
elementos de forma coherente.
Guarde las instrucciones como secuencias de comandos y coméntelas
detalladamente.
Dé a las instrucciones Transact-SQL un formato que otras personas puedan
leer. Utilice sangrías para indicar los niveles de relaciones.
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Explique los objetivos de la
práctica. Objetivos
Después de realizar esta práctica, el alumno será capaz de:
Escribir instrucciones SELECT básicas que devuelvan conjuntos de
resultados ordenados y limitados.
Modificar y ejecutar una secuencia de comandos.
Ejecutar una secuencia de comandos con la herramienta osql.
Utilizar las funciones del sistema para recuperar información del sistema.
Requisitos previos
Antes de trabajar en esta práctica, debe tener:
Los archivos de comandos de la práctica que se encuentran en
C:\Moc\2329A\Labfiles\L02.
Los archivos de respuestas de la práctica que se encuentran en
C:\Moc\2329A\Labfiles\L02\Answers.
Más información
Si necesita ayuda sobre la ejecución de archivos, busque el título “Ejecutar
instrucciones SQL” en la Ayuda del Analizador de consultas SQL.
Otros recursos que puede utilizar son:
El esquema de base de datos Northwind.
Los Libros en pantalla de Microsoft SQL Server.
Módulo 2: Introducción a la programación de SQL Server 45
Situación de ejemplo
La organización del aula pretende simular la de una empresa dedicada al
comercio mundial llamada Northwind Traders. Su nombre de dominio ficticio
es nwtraders.msft. El servidor DNS principal para nwtraders.msft es el equipo
del instructor, cuya dirección de Protocolo Internet (IP) es 192.168.x.200
(donde x es el número del aula que tiene asignado). El nombre del equipo del
instructor es London.
En la tabla siguiente se muestran el nombre de usuario, el nombre de equipo y
la dirección IP del equipo de cada alumno en el dominio ficticio nwtraders.msft.
Busque el nombre de usuario correspondiente a su equipo y anótelo.
Nombre de Nombre del
usuario equipo Dirección IP
Ejercicio 1
Escribir instrucciones SELECT básicas
En este ejercicio, escribirá varias instrucciones que devuelven filas de la tabla
Products de la base de datos Northwind.
Ejercicio 2
Modificar un archivo de comandos
En este ejercicio, va a modificar, guardar y ejecutar un archivo de comandos
sencillo.
Ejercicio 3
Uso de las funciones del sistema
En este ejercicio, va a recopilar información del sistema mediante las funciones
del sistema.
____________________________________________________________
52 Módulo 2: Introducción a la programación de SQL Server
Repaso
Objetivo del tema
Reforzar los objetivos del
módulo mediante el repaso
de los puntos clave. Diseño de la arquitectura de aplicaciones corporativas
Explicación previa Herramientas de programación de SQL Server
Las preguntas de repaso
abarcan algunos de los El lenguaje de programación Transact-SQL
conceptos clave impartidos
en el módulo. Elementos de Transact-SQL
Elementos adicionales del lenguaje
Formas de ejecutar instrucciones Transact-SQL
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
1. Está diseñando una aplicación de múltiples capas con una interfaz Web.
Esta aplicación debe actualizar con frecuencia una tabla de la base de datos.
¿Cómo y dónde implementaría la lógica para realizar la actualización?
Probablemente obtendrá el mayor rendimiento si crea un
procedimiento almacenado en SQL Server para realizar la
actualización. Este procedimiento almacenado se invoca desde un
componente de la capa intermedia.