Vous êtes sur la page 1sur 119

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .

c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


1
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8












T
T
r
r
a
a
b
b
a
a
j
j
a
a
n
n
d
d
o
o
y
y
C
C
o
o
n
n
o
o
c
c
i
i
e
e
n
n
d
d
o
o
S
S
Q
Q
L
L

S
S
e
e
r
r
v
v
e
e
r
r
2
2
0
0
0
0
8
8





I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


2
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
I IN NT TR RO OD DU UC CC CI IO ON N A A L LA AS S B BA AS SE ES S D DE E D DA AT TO OS S

Q QU U E ES S U UN NA A B BA AS SE E D DE E D DA AT TO OS S? ?

En la vida cotidiana se interacciona continuamente con entidades tales como personas, documentos u
otros. En una empresa, las entidades estn representadas por los operarios, los empleados, los clientes, los
proveedores, las facturas. En un hospital nos encontraramos con los mdicos, pacientes, enfermeras,
cuadros clnicos, etc. Puesto que en cada caso se debe trabajar con una gran cantidad de datos, surge la
necesidad de almacenarlos de manera que nos resulten de fcil acceso en cada momento y, por
consiguiente, tiles a nuestras actividades. Si por ejemplo cada da debemos gestionar varias decenas de
clientes y facturas, utilizaremos un sistema para memorizar los datos como, por ejemplo, un archivo, ms
bien antes que recurrir nicamente a la memoria de su computador.

Las fichas aparecen reagrupadas en archivos, cada uno de los cuales contiene en general las fichas de un
slo tipo, las de los proveedores o las de los productos. Este sistema recibe el nombre de base de datos,
que no es ninguna otra cosa ms que una coleccin de informaciones tales como el catlogo de los ficheros
de una biblioteca, un listn telefnico o una enciclopedia. Los programas de gestin de base de datos
(Database) estn programados para realizar operaciones que nos permiten acceder y, eventualmente,
modificar los datos almacenados. Estas operaciones consisten en: Introduccin, cancelacin, modificacin y
bsqueda de informacin a partir de los criterios seleccionados por el usuario de orden, clasificacin e
impresin de los listados, por ejemplo, bajo el formato de etiquetas adhesivas para sobres.

E ES ST TR RU UC CT TU UR RA A D DE E L LA AS S B BA AS SE ES S D DE E D DA AT TO OS S

Una vez se ha instalado Microsoft SQL Server 2005 y se ha diseado una distribucin de bases de datos y
discos, se est preparado para crear una base de datos. SQL Server 2005 hace uso de los mtodos
mejorados de almacenamiento de datos y administracin del espacio que se presentaron en SQL Server
2000. Las versiones anteriores del producto utilizaban dispositivos lgicos y segmentos de un tamao fijo
para el almacenamiento de los datos; SQL Server 2005 usa archivos y grupos de archivos que pueden ser
configurados para que crezcan o decrezcan automticamente.

B BA AS SE ES S D DE E D DA AT TO OS S D DE E S SQ QL L S SE ER RV VE ER R

SQL Server soporta bases de datos del sistema y bases de datos del usuario.
Las bases de datos del sistema, almacenan informacin que permite operar y administrar el sistema,
mientras que las de usuario almacenan los datos requeridos por las operaciones del cliente.
Las bases de datos del sistema son:



I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


3
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
M Ma as st te er r

La base de datos master se compone de las tablas de sistema que realizan el seguimiento de la instalacin
del servidor y de todas las bases de datos que se creen posteriormente. Asimismo controla las asignaciones
de archivos, los parmetros de configuracin que afectan al sistema, las cuentas de inicio de sesin. Esta
base de datos es crtica para el sistema, as que es bueno tener siempre una copia de seguridad actualizada.

T Te em mp pd db b

Es una base de datos temporal, fundamentalmente un espacio de trabajo, es diferente a las dems bases
de datos, puesto que se regenera cada vez que arranca SQL Server. Se emplea para las tablas temporales
creadas explcitamente por los usuarios, para las tablas de trabajo intermedias de SQL Server durante el
procesamiento y la ordenacin de las consultas.

M Mo od de el l

Se utiliza como plantilla para todas las bases de datos creadas en un sistema.
Cuando se emite una instruccin CREATE DATABASE, la primera parte de la base de datos se crea copiando
el contenido de la base de datos model, el resto de la nueva base de datos se llena con pginas vacas.

M Ms sd db b

Es empleada por el servicio SQL Server Agent para guardar informacin con respecto a tareas de
automatizacin como por ejemplo copias de seguridad y tareas de duplicacin, asimismo solucin a
problemas.

La informacin contenida en las tablas que contiene esta base de datos, es fcilmente accedida desde el
Administrador Empresarial, as que se debe tener cuidado de modificar esta informacin directamente a
menos que se conozca muy bien lo que se est haciendo.

D Di is st tr ri ib bu ut ti io on n

Almacena toda la informacin referente a la distribucin de datos basada en un proceso de replicacin.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


4
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
Las T Ta ab bl la as s son objetos de la base de datos que contienen la informacin de los usuarios, estos datos estn
organizados en filas y columnas, similar al de una hoja de clculo. Cada columna representa un dato aislado
y en bruto que por s solo no brinda informacin, por lo tanto estas columnas se deben agrupar y formar
una fila para obtener conocimiento acerca del objeto tratado en la tabla. Por ejemplo, puede definir una
tabla que contenga los datos de los productos ofertados por una tienda, cada producto estara
representado por una fila mientras que las columnas podran identificar los detalles como el cdigo del
producto, la descripcin, el precio, las unidades en stock, etc.

Una Vista es un objeto definido por una consulta. Similar a tabla, la vista muestra un conjunto de columnas
y filas de datos con un nombre, sin embargo, en la vista no existen datos, estos son obtenidos desde las
tablas subyacentes a la consulta. De esta forma si la informacin cambia en las tablas, estos cambios
tambin sern observados desde la vista. Fundamental emplean para mostrar la informacin relevante
para el usuario y ocultar la complejidad de las consultas.

Los tipos de datos especifican que tipo de valores son permitidos en cada una de las columnas que
conforman la estructura de la fila. Por ejemplo, si desea almacenar precios de productos en una columna
debera especificar que el tipo de datos sea Money, si desea almacenar nombres debe escoger un tipo de
dato que permita almacenar informacin de tipo carcter.

SQL Server nos ofrece un conjunto de tipos de datos predefinidos, pero tambin existe la posibilidad de
definir tipos de datos de usuario.

Un Procedimiento Almacenado es una serie de instrucciones SQL pre compiladas las cuales organizadas
lgicamente permiten llevar a cabo una operacin transaccional o de control. Un Procedimiento
almacenado siempre se ejecuta en el lado del Servidor y no en la mquina Cliente desde la cual se hace el
requerimiento. Para ejecutarlos deben ser invocados explcitamente por los usuarios.

Un Desencadenador es un Procedimiento Almacenado especial el cual se invoca automticamente ante
una operacin de Insert, Update o Delete sobre una tabla. Un Desencadenador puede consultar otras
tablas y puede incluir complejas instrucciones SQL, se emplean para mantener la integridad referencial,
preservando las relaciones definidas entre las tablas cuando se ingresa o borra registros de aquellas tablas.

Los Valores Predeterminados especifican el valor que SQL Server insertar en una columna cuando el
usuario no ingresa un dato especfico. Por ejemplo, si se desconoce el apellido materno de un empleado
SQL Server podra incluir automticamente la cadena NN para identificar este campo.

Las Reglas son objetos que especifican los valores aceptables que pueden ser ingresados dentro de una
columna particular. Las Reglas son asociadas a una columna o a un tipo de dato definido por el usuario. Una
columna o un Tipo de dato pueden tener solamente una Regla asociada con l.

Las Restricciones son restricciones que se asignan a las columnas de una tabla y son controladas
automticamente por SQL Server.

Esto nos provee las siguientes ventajas:

Se puede asociar mltiples c co on ns st tr ra ai in nt ts s a una columna, y tambin se puede asociar un constraints a
mltiples columnas.

Se pueden crear los Restricciones al momento de crear la tabla CREATE TABLE.

Los Restricciones conforman el standars ANSI para la creacin y alteracin de tablas, estos no son
extensiones del Transact SQL.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


5
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
Se puede usar un constraints para forzar la integridad referencial, el cual es el proceso de mantener
relaciones definidas entre tablas cuando se ingresa o elimina registros en aquellas tablas.

Los ndices de SQL Server son similares a los ndices de un libro que nos permiten llegar rpidamente a las
pginas deseadas sin necesidad de pasar hoja por hoja, de forma similar los ndices de una tabla nos
permitirn buscar informacin rpidamente sin necesidad de recorrer registro por registro por toda la
tabla. Un ndice contiene valores y punteros a las filas donde estos valores se encuentran.


C Cr re ea ac ci i n n d de e B Ba as se e d de e D Da at to os s

En trminos sencillos una base de datos de SQL Server es una coleccin de objetos que contiene y
administra datos. Antes de crear una base de datos es importante entender como es que SQL Server
almacena la informacin.



I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


6
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
P P g gi in na as s y y e ex xt te en ns si io on ne es s

Antes de crear una base de datos con SQL Server 2000, debemos tomar en cuenta que la unidad bsica de
almacenamiento en SQL Server es la pgina (data page), el tamao de cada padre es de 8 KB, lo cual
representa un total de 128 pginas por cada megabyte.

El comienzo de cada pgina es una cabecera de 96 bytes que se utiliza para almacenar informacin de
cabecera tal como el tipo de pgina, la cantidad de espacio libre de la pgina y el Id. Del objeto propietario
de la pgina.

Existen ocho tipos de pginas en los archivos de datos de una base de datos SQL Server 2000.


Tipo de pgina Contenido
Datos
Filas con todos los datos excepto los de tipo text,
ntext e image.
ndice Entradas de ndices
Texto o imagen Datos de tipo text, ntexte image.
Mapa de asignacin global/
Mapa de asignacin global Informacin acerca de las extensiones asignadas.
Secundario
Espacio libre en la pgina
Informacin acerca del espacio libre disponible en
las pginas.
Mapa
ndice.
de asignacin de Informacin acerca de las extensiones utilizadas por
un tabla o ndice
Bulk
Changed
Map
Bulk Ma
Bul
Informacin de los extends modificados por
Operacin bulk desde el ltimo backup del log.



Los archivos de registro (LOG) no contienen pginas, contienen series de registros.
Las pginas de datos contienen todos los datos de las filas de datos excepto los datos text, ntext e image,
que estn almacenados en pginas separadas. Las filas de datos se colocan en las pginas una a
continuacin de otra, empezando inmediatamente despus de la cabecera, al final de cada pgina se
encuentra una tabla de posiciones de filas que contiene una entrada por cada fila de la pgina y cada
entrada registra la posicin, desde el principio de la pgina, del primer byte de la fila. Las entradas de la
tabla de posiciones de filas estn en orden inverso a la secuencia de las filas de la pgina.



I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


7
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
En SQL Server, las filas no pueden continuar en otras pginas.

Las extensiones son la unidad bsica de asignacin de espacio a las tablas e ndices.

Consta de 8 pginas contiguas, es decir 64 KB. Lo cual representa 16 extensiones por MB.

Para hacer que la asignacin de espacio sea eficiente, SQL Server 2000 no asigna extensiones
enteras a tablas con poca cantidad de datos. SQL Server 2000 tiene dos tipos de extensiones:

Las extensiones uniformes son propiedad de un nico objeto; slo el objeto propietario puede
utilizar las ocho pginas de la extensin.

Extensiones mixtas, pueden estar compartidas por hasta ocho objetos.


Las tablas o ndices nuevos son asignados a pginas de extensiones mixtas. Cuando la tabla o el ndice
crecen hasta el punto de ocupar ocho pginas, se pasan a extensiones uniformes.

Archivos y grupos de archivos fsicos de la base de datos

Un archivo de base de datos no es ms que un archivo del sistema operativo. Una base de datos se
distribuye en por lo menos dos archivos, aunque es muy probable que sean varios los archivos de base de
datos que se especifican al crear o al modificar una base de datos.

Principalmente SQL Server divide su trabajo en un archivo para datos y otro para el registro de las
transacciones (log).

SQL Server 2000 permite los tres siguientes tipos de archivos:

Archivos de datos primarios
Toda base de datos tiene un archivo de datos primario que realiza el seguimiento de todos los dems
archivos, adems de almacenar datos. Por convenio este archivo tiene la extensin MDF.

Archivos de datos secundarios
Una base de datos puede tener cero o varios archivos de datos secundarios. Por convenio la extensin
recomendada para los archivos de datos secundarios es NDF.

Archivos de registro (LOG)
Todas las bases de datos por lo menos tendrn un archivo de registro que contiene la informacin
necesaria para recuperar todas las transacciones que suceden sobre la misma. Por convenio la extensin de
este archivo es LDF.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


8
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
Por lo tanto al crear una base de datos, debemos considerar las siguientes premisas y reglas para el
almacenamiento de los datos:

1. Todas las Bases de Datos tienen un archivo de base de datos primario (.mdf) y uno para el Log de
Transacciones (.ldf). Adems puede tener archivos de datos secundarios (.ndf).

2. Cuando se crea una Base de Datos, una copia de la Base de Datos Model, la cual incluye tablas del
sistema, es copiada en la Nueva Base de Datos.

3. La Data es almacenada en bloques de 8-kilobytes (KB) de espacio de disco contiguo llamado
pginas.

4. Las filas o registros no pueden atravesar pginas. Esto, es, que la mxima cantidad de datos en una
fila de datos simple es de 8060 bytes.

5. Las tablas y los ndices son almacenados en Extents. Un Extents consta de ocho pginas contiguas, o
sea 64 KB.

6. El Log de Transacciones lleva toda la informacin necesaria para la recuperacin de la Base de
Datos en una eventual cada del sistema. Por default, el tamao del Log de Transacciones es del
25% del tamao de los archivos de datos. Use esta configuracin como punto de partida y ajuste de
acuerdo a las necesidades de su aplicacin.


A Ar rc ch hi iv vo os s d de e R Re eg gi is st tr ro o ( (L LO OG G d de e T Tr ra an ns sa ac cc ci io on ne es s) )

El LOG de transacciones archiva todas las modificaciones de los datos tal cual son ejecutados. El proceso es
como sigue:

1. Una modificacin de datos es enviada por la aplicacin cliente.
2. Cuando una modificacin es ejecutada, las pginas afectadas son ledas del disco a memoria (Buffer
Cache), provista de las pginas que no estn todava en la Data Cache del Query previo.
3. Cada comando de modificacin de datos es archivado en el LOG. El cambio siempre es archivado en
el LOG y es escrito en el disco antes que el cambio sea hecho en la Base de Datos. Este tipo de LOG
es llamado LOG de tipo write-ahead.
4. Una vez que las pginas de datos residen en el Buffer Cache, y las pginas de LOG son archivadas
sobre el disco en el archivo del LOG, el proceso de CHECKPOINT, escribe todas las transacciones
completas a la Base de Datos en el disco.

Si el sistema falla, automticamente el proceso de recuperacin usa el LOG de Transacciones para llevar
hacia delante todas las transacciones comprometidas (COMMIT) y llevar hacia atrs alguna transaccin
incompleta (ROLLBACK).


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


9
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8

Los marcadores de transaccin en el LOG son usados durante la recuperacin automtica para determinar
los puntos de inicio y el fin de una transaccin. Una transaccin es considerada completa cuando el
marcador BEGIN TRANSACTION tiene un marcador asociado COMMIT TRANSACTION. Las pginas de datos
son escritas al disco cuando ocurre el CHECKPOINT.


C Cr re ea ac ci i n n d de e u un na a B Ba as se e d de e D Da at to os s U Ut ti il li iz za an nd do o e el l l le en ng gu ua aj je e S SQ QL L

Otra de las formas de crear una base de datos es a travs del Analizador de Consultas, donde emplearemos
la sentencia CREATE DATABASE, cuya sintaxis reducida es la siguiente:

CREATE DATABASE NombreBaseDatos
[ ON [PRIMARY
NAME = nombreArchivoLgico,
FILENAME = 'nombreArchivoSO',
SIZE = tamao,
MAXSIZE = { tamaoMximo | UNLIMITED } ,
FILEGROWTH = incrementoCrecimiento) [,n]
]
[ LOG ON
NAME = nombreArchivoLgico,
FILENAME = 'nombreArchivoSO',
SIZE = tamao,
MAXSIZE = { tamaoMximo | UNLIMITED } ,
FILEGROWTH = incrementoCrecimiento) [,n]

[COLLATE nombre_collation] [ FOR LOAD | FOR ATTACH ]


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


10
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
A Ar rg gu um me en nt to os s

N NO OM MB BR RE EB BA AS SE ED DA AT TO OS S
Es el nombre de la nueva base de datos, deben ser nicos en un servidor y pueden tener hasta 128
caracteres, a menos que no se especifique ningn nombre lgico para el registro. Si no se especifica ningn
nombre lgico de archivo de registro, SQL Server genera un nombre lgico al anexar un sufijo a
nombreBaseDatos.

O ON N
Especifica que los archivos de disco utilizados para almacenar la parte de datos (archivos de datos) se han
definido explcitamente. La palabra clave va seguida de una lista delimitada por comas de elementos que
definen los archivos de datos del grupo de archivos principal.

P PR RI IM MA AR RY Y
Especifica que la lista de archivos est asociada al grupo principal. Este grupo contiene todas las tablas del
sistema de base de datos. Tambin contiene todos los objetos no asignados a los grupos de archivos de
usuario. El primer archivo especificado pasa a ser el archivo principal, el cual contiene el inicio lgico de la
base de datos y de las tablas del sistema. Una base de datos slo puede tener un archivo principal. Si no se
especifica PRIMARY, el primer archivo enumerado en la instruccin CREATE DATABASE se convierte en el
archivo principal.

L LO OG G O ON N
Especifica que los archivos de registro de la base de datos (archivos de registro) se han definido
explcitamente. La palabra clave va seguida de una lista delimitada por comas la cual define las
caractersticas de los archivos de registro. Si no se especifica LOG ON, se crea automticamente un nico
archivo de registro con un nombre generado por el sistema y un tamao que es el 25% de la suma de los
tamaos de todos los archivos de datos de la base de datos.

F FO OR R L LO OA AD D
Clusula que se mantiene por compatibilidad con versiones anteriores de SQL Server.
La base de datos se crea con la opcin de base de datos dbo use only activada y el estado se establece en
"cargando". En realida esto no es necesario en SQL Server 7.0 porque la instruccin RESTORE puede volver
a crear la base de datos como parte de la operacin de restauracin.

F FO OR R A AT TT TA AC CH H
Crea la base de datos desde un conjunto existente de archivos del sistema operativo.
Debe existir una entrada de archivos que determine cul es el archivo principal, las otras entradas son
necesarias si existen archivos creados en una ruta de acceso distinta de cuando se cre la base de datos por
primera vez o se adjunt por ltima vez.

Utilice el procedimiento almacenado del sistema sp_attach_db en lugar de emplear
C CR RE EA AT TE E D DA AT TA AB BA AS SE E F FO OR R A AT TT TA AC CH H directamente, esto deber emplearlo si debe especificar ms de 16
archivos.

C CO OL LL LA AT TE E
Especifica el conjunto de caracteres que se emplear para almacenar informacin en la base de datos, se
puede emplear un conjunto de caracteres especificado por Windows o por SQL Server. De no especificarse
se emplear el conjunto de caracteres seleccionado en el momento de la instalacin

N NA AM ME E
Especifica el nombre lgico del archivo.
No se requiere este parmetro cuando se especifica FOR ATTACH.
Este nombre es el utilizado para referenciar al archivo en las sentencias del Transact-
SQL que se ejecuten despus.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


11
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
F FI IL LE EN NA AM ME E
Especifica el nombre de archivo del sistema (archivo fsico).
Se debe especificar la ruta de acceso y nombre de archivo que el sistema operativo utiliza cuando crea la
base de datos. La ruta de acceso debe especificar un directorio en el servidor sobre el que se instalo SQL
Server.
No se puede especificar un directorio en un sistema comprimido de archivos.

S SI IZ ZE E
Especifica el tamao para el archivo. De no hacerlo SQL Server utiliza el tamao del archivo principal de la
base de datos model.

Cuando este parmetro no es especificado para un archivo secundario o de registro SQL
Server automticamente le asigna 1 MB.
El valor mnimo a asignar es de 512 KB. Si no se especifica tamao, el valor predeterminado es 1 MB. El
tamao especificado para el archivo principal debe tener al menos el tamao del archivo principal de la
base de datos model.

M MA AX XS SI IZ ZE E
Especifica el tamao mximo de crecimiento del archivo. Se pueden utilizar los sufijos KB y MB, el valor
predeterminado es MB. Especifique un nmero entero; no incluya decimales. Si no se especifica, el archivo
aumenta hasta que el disco est lleno.

U UN NL LI IM MI IT TE ED D
Especifica que el archivo aumenta de tamao hasta que el disco est lleno.

F FI IL LE EG GR RO OW WT TH H
Especifica el incremento de crecimiento del archivo, este valor no puede exceder el valor MAXSIZE. Emplee
un nmero entero. Un valor 0 indica que no hay crecimiento.
El valor se puede especificar en MB, KB o %, el valor predeterminado es MB. Cuando se especifica %, el
tamao de incremento de crecimiento es el porcentaje especificado del tamao del archivo en el momento
en que tiene lugar el incremento. De no emplear FILEGROWTH, el valor predeterminado es 10% y el valor
mnimo es 64 KB. El tamao especificado se redondea al mltiplo de 64 KB ms cercano.

O Ob bs se er rv va ac ci io on ne es s

Emplee CREATE DATABASE para crear una base de datos y los archivos que almacenan sta. SQL Server
implementa CREATE DATABASE en dos pasos:

SQL Server utiliza una copia de model para inicializar la base de datos y sus metadatos.
SQL Server rellena el resto de la base de datos con pginas vacas, excepto las pginas que tengan datos
internos que registren cmo se emplea el espacio en la base de datos.
Cualquier objeto definido por el usuario en model se copiar a todas las bases de datos recin creadas.
Cada base de datos nueva hereda los valores opcionales de la base de datos model (a menos que se
especifique FOR ATTACH).

En un servidor se puede especificar un mximo de 32,767 bases de datos.
Cuando especfica una instruccin CREATE DATABASE nombreBaseDatos sin parmetros adicionales, la
base de datos se crea con el mismo tamao que model.
Cada base de datos tiene un propietario con capacidad para realizar actividades especiales. El propietario
es el usuario que crea la base de datos, este propietario se puede cambiar mediante sp_changedbowner

Para mostrar un informe de una base de datos o de todas las bases de datos de un servidor con SQL Server,
ejecute sp_helpdb. Para obtener un informe acerca del espacio utilizado en una base de datos, emplee

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


12
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
sp_spaceused. Para obtener un informe de los grupos de archivos de una base de datos, utilice
sp_helpfilegroup, y utilice sp_helpfile para obtener el informe de los archivos de la base de datos.

Q Qu ui i n ne es s p pu ue ed de en n c cr re ea ar r b ba as se es s d de e d da at to os s? ?

En forma predeterminada podrn hacerlos los usuarios que pertenecen al rol sysadmin y dbcreator. Los
miembros de las funciones fijas de servidor sysadmin y SecurityAdmin pueden conceder permisos CREATE
DATABASE a otros inicios de sesin. Los miembros de las funciones fijas de servidor sysadmin y dbcreator
pueden agregar otros inicios de sesin a la funcin dbcreator. El permiso CREATE DATABASE debe
concederse explcitamente; no se concede mediante la instruccin GRANT ALL.

Estos permisos se limitan a unos cuantos inicios de sesin para mantener el control de la utilizacin de los
discos del equipo que ejecuta SQL Server.

Ejemplos de creacin de base de datos empleando el Analizador de Consultas Primero ingrese al Analizador
de Consultas para ello primero debe especificar el tipo de autentificacin a realizar del sistema o estndar,
vea la siguiente figura:


H Ha ab bi il li it ta ar r l lo os s s se er rv vi ic ci io os s d de e S SQ QL L s se er rv ve er r

Q Qu u p pr ro oc ce ed di im mi ie en nt to o s si ig gu ui i p pa ar ra a h ha ab bi il li it ta ar r l lo os s s se er rv vi ic ci io os s? ?









I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


13
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
I In ng gr re es sa ar r a a S SQ QL L S Se er rv ve er r 2 20 00 05 5

1. Hacer clic en el botn I In ni ic ci io o > E Ej je ec cu ut ta ar r.
2. Dentro de ejecutar digitar lo siguiente sqlwb.exe.



3. Una vez que all indicado el programa aparecer un cuadro de dialogo don uno tiene que asignar el
nombre de usuario y la contrasea O Autenticacin de Windows dependiendo de cmo all
estado instalado SQL Server.
4. Hacer clic en Conectar.



5. Una vez que usted halla ingresado al programa como podr observar al lado izquierdo del
programa se muestra el Explorador de Objetos.

Q Qu u c co on nt ti ie en ne e e el l e ex xp pl lo or ra ad do or r d de e O Ob bj je et to os s? ?









I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


14
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
6. Como usted puede observar se muestran los objetos que se encuentran dentro del Explorador de
Objetos.



7. Desplegar la carpeta base de datos.
8. Luego desplegar la carpeta base de datos del sistema.



D De es sc cr ri ib bi ir r c ca ad da a u un na a d de e l la a b ba as se e d de e d da at to os s, , q qu ue e s se e e en nc cu ue en nt tr ra an n d de en nt tr ro o d de e l la a C Ca ar rp pe et ta a b ba as se e d de e
d da at to os s d de el l s si is st te em ma a? ?








C Cr re ea ac ci i n n d de e u un na a B Ba as se e d de e d da at to os s V V a a D Di is se e o o

9. Pulsar el botn derecho dl mouse sobre la carpeta Bases de datos.
10. Seleccionar la opcin Nueva base de Datos.



I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


15
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
11. Aparecer un cuadro de dialogo donde se tiene que asignar el nombre de la base de datos.
12. Asignar el Nombre de Computronic.
13. Como usted puede observar el tamao inicial de la base de datos es 1MB.
14. Hacer clic en Aceptar.




T Ti ip po os s d de e D Da at to os s d de e S SQ QL L S Se er rv ve er r 2 20 00 05 5

SQL Server brinda una serie de tipos de datos para almacenar la informacin, la correcta seleccin del tipo
de dato es simplemente una cuestin de determinar qu valores desea almacenar, como por ejemplo
carcter, enteros, binario, fechas, etc. Los siguientes objetos tienen tipos de datos:
Columnas de tablas y vistas. Parmetros de procedimientos almacenados. Variables.

Funciones de T Tr ra an ns sa ac ct t-SQL que devuelve uno o ms valores de datos de un tipo de datos especfico.

Procedimientos almacenados que devuelven un cdigo, que siempre es de tipo integer.
Al asignar un tipo de datos a un objeto se definen cuatro atributos del objeto:
La clase de datos que contiene el objeto, por ejemplo, carcter, entero o binario.
La longitud del valor almacenado o su tamao.
La precisin del nmero (slo tipos de datos numricos).
La precisin es el nmero de dgitos que puede contener el nmero. Por ejemplo, un objeto
smallint puede contener hasta 5 dgitos, con lo que tiene una precisin de 5.
La escala del nmero (slo tipos de datos numricos).

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


16
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
La escala es el mximo nmero de dgitos a la derecha del separador decimal. Por ejemplo, un objeto int no
puede aceptar un separador decimal y tiene una escala de 0. Un objeto money puede tener hasta 4 dgitos
a la derecha del separador decimal y tiene una escala de 4.
Si un objeto se define como money, puede contener hasta 19 dgitos y 4 de ellos pueden estar a la derecha
del decimal. El objeto usa 8 bytes para almacenar los datos. Por tanto, el tipo de datos money tiene una
precisin de 19, una escala de 4 y una longitud de 8.

U Ut ti il li iz za ar r d da at to os s b bi in na ar ri io os s

Los tipos de datos binary y varbinary almacenan cadenas de bits. Mientras que los datos de carcter se
interpretan segn la pgina de cdigos de SQL Server, los datos binary y varbinary son, simplemente, un
flujo de bits. Los datos binary y varbinary pueden tener una longitud de hasta 8.000 bytes.
Las constantes binarias tienen un 0x (un cero y una letra x en minsculas) a la izquierda, seguido de la
representacin hexadecimal del patrn de bits. Por ejemplo, 0x2A especifica el valor hexadecimal 2A, que
es equivalente al valor decimal 42 o un patrn de bits de un byte de 00101010.


Categora Descripcin Tipo de Dato Descripcin
Binario
Almacenan cadenas de
bits. La data consiste de
nmeros hexadecimales.
Por ejemplo el decimal 245
es F5 en hexadecimal.
binary
La data debe tener una longitud fija
(hasta 8 KB).
varbinary
Los datos pueden variar en el nmero
de dgitos hexadecimales (hasta 8
KB).
image
La data puede tener una longitud
variable y exceder los 8Kb.
Consisten de una
combinacin de letras,
char
Los datos deben tener una longitud
fija (Hasta 8 KB).
Caracter smbolos y nmeros. Por
ejemplo las combinaciones
"John928" y
"(0*&(%B99nh jkJ".
varchar
La data puede variar en el nmero de
caracteres (Hasta 8 KB.)
text
Los datos pueden ser caracteres ASCII
que excedan los 8 KB.
Consisten en Fechas en el rango 01 Ene
combinaciones vlidas de Datetime 1753 hasta el 31 Dic 9999 (Se
Fecha y Hora estos datos. No puede
separar en tipos distintos
el almacenamiento de slo
fechas o slo horas.
requiere 8 bytes por valor).
smalldatetime
Fechas en el rango 01 Ene 1900 hasta
06 Jun 2079 (Se requiere requires 4
bytes por valor).
Consisten en informacin Los datos pueden tener hasta 38
que almacena dgitos, todos los cuales podran
informacin significativa
despus del punto
decimal
estar a la derecha del punto decimal.
Este tipo de dato
Decimal decimal. guarda un valor exacto del
nmero y no una aproximacin.
Para SQL Server, el tipo de
numeric dato numeric es equivalente al
tipo de datos decimal.
Punto Flotante
Nmeros aproximados
(Punto flotante).
float
Datos en el rango de 1.79E + 308
hasta 1.79E + 308.
real
Datos en el rango de 3.40E + 38 hasta
3.40E + 38.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


17
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
Consiste en informacin Datos en el rango de 2^63 (
numrica positiva o 9223372036854775808) hasta
Enteros
negativa como por
ejemplo 5, 0 y 25.
bigint
2^631 (9223372036854775807). Se
requieren de 8 bytes para
Almacenar estos valores.
Datos en el rango de - 2,147,483,648
hasta
int 2,147,483,647. Se requieren de
4 bytes para almacenar estos valores.

Categora Descripcin Tipo de Dato Descripcin
Datos en el rango de 32,768
smallint Hasta 32,767. Se requieren 2 bytes
por cada valor de este tipo.
tinyint
Datos entre 0 y 255, se requiere de 1
byte.
Cantidades monetarias Datos monetarios entre
positivas o negativas. 922,337,203,685,477.5808 y
money +922, 337, 203, 685,477.5807 (Se
requieren 8 bytes por Valor).
Monetario
Datos monetarios entre

smallmoney
214,748.3648 y 214,748.3647 (Se
requieren de 4 bytes por
Valor).
Consisten en informacin
que no recae en ninguna
de las categoras
anteriormente
mencionadas.
bit
Datos que consisten de 1 o 0.
Emplear este tipo de dato para
representar TRUE o FALSE YES o
NO.
cursor
Este tipo de dato es empleado por
variables o procedimientos
almacenados que emplean
parmetros OUTPUT referenciados a
un cursor.
Este tipo de dato es empleado para
indicar la actividad que
timestamp Ocurre sobre una fila. La secuencia
de este nmero se
Especiales
Incrementa en formato binario.
Consiste en un nmero hexadecimal
que especifica un

uniqueidentifier
globally unique identifier (GUID), es
til cuando se desea
asegurar la unicidad de una fila
Entre muchas otras.
Almacena varios tipos de datos,
SQL_variant a excepcin de text, ntext,
timestamp, image y sql_variant.
Almacena un resultado de una

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


18
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
consulta para su posterior
procesamiento. Se puede
table emplear para definir variables
locales de tipo table o para retornar
los valores devueltos
por una funcin del usuario.
Unicode
Al emplear este tipo de
datos se puede
almacenar
Sobre una columna
valores que incluyan este
conjunto de caracteres.
Hay que recordar que los
datos Unicode emplean
dos bytes por cada
carcter a representar.
nchar
Datos con longitud fija, hasta 4000
caracteres Unicode.
nvarchar
Datos que pueden variar, hasta 4000
caracteres Unicode.
ntext
Datos que exceden los 4000
caracteres Unicode.


E Em mp pl le eo o d de e C Co om ma an nd do os s D DD DL LL L ( (D Da at ta a D De ef fi in ni it ti io on n L La an ng gu ua ag ge e) )

SQL Server 2000 emplea las tablas como objetos de almacenamiento de datos que los usuarios manipulan a
travs de sus aplicaciones o va web.
Las tablas son objetos compuestos por una estructura (conjunto de columnas) que almacenan informacin
interrelacionada (filas) acerca de algn objeto en general.
Las tablas se definen para los objetos crticos de una base de datos, por ejemplo CLIENTES y su estructura
estara conformada por cada uno de los atributos que se requieran de los clientes para poder obtener
informacin de ellos, como por ejemplo: nombres, direcciones, telfonos, celular, ruc, etc.
Cada uno de estos atributos tiene un tipo de dato definido y adems la tabla debe permitir asegurar que
cada cdigo de producto es nico en la misma, para asegurarse de no almacenar la informacin del mismo
cliente dos veces.
Las tablas suelen estar relacionadas entre s, para facilitar el hecho de consultas entre mltiples tablas.
Podemos distinguir los siguientes tipos de tablas:

T Ta ab bl la as s d de el l S Si is st te em ma a

La informacin usada por SQL Server y sus componentes son almacenadas en tablas especiales
denominadas como tablas del sistema. Estas tablas no deben alterarse directamente por el usuario
Si desea obtener informacin almacenada en las tablas del sistema debe usar:
Informacin de la vista esquema (schema view).
Procedimientos Almacenados de sistema.
Instrucciones Transact-SQL y funciones.
SQL-DMO.
Catlogo de funciones API.
Las tablas del sistema almacenan informacin, llamada Metadata, acerca del sistema y de los objetos de las
bases de datos. Todas las tablas del sistema comienzan con el prefijo SYS.


T Ta ab bl la as s d de el l U Us su ua ar ri io o

P Pe er rm ma an ne en nt te es s
Son las tablas donde se almacena la informacin que los usuarios utilizan para sus operaciones. Esta
informacin existir hasta que se elimine explcitamente.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


19
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
T Te em mp po or ra al le es s
Estas son tablas similares a las permanentes que se graban en tempdb, y son eliminadas automticamente
cuando ya no son usadas.
Hay dos tipos de tablas temporales, locales y globales, difieren una de la otra en sus nombres, su visibilidad
y su mbito de vida.

Tablas Temporales Locales. El primer carcter del nombre de #, su visibilidad es solamente para la
conexin actual del usuario y son eliminadas cuando el usuario se desconecta.

Tablas Temporales Globales. Su nombre comienza con ##, su visibilidad es para cualquier usuario, y son
eliminadas luego que todos los usuarios que la referencian se desconectan del SQL Server.

C Cr re ea ac ci i n n d de e t ta ab bl la as s

Cuando se crea una tabla debe asignarle un nombre a la misma, un nombre a cada columna adems de un
tipo de datos y de ser necesaria una longitud.
Adicional a las caractersticas antes mencionadas, SQL Server 2000 nos brinda la posibilidad de
implementar columnas calculadas, definindolas como frmulas.
Los nombres de las columnas deben ser nicos en la tabla

C Co on ns si id de er ra ac ci io on ne es s a al l c cr re ea ar r t ta ab bl la as s

Billones de tablas por base de datos.
1024 columnas por tabla.
8060 es el tamao mximo de registro (sin considerar datos image, text y ntext).
Al momento de definir una columna se puede especificar si la columna soporta o no valores NULL.
Para crear tablas debe utilizar la sentencia CREATE TABLE, cuya sintaxis es la siguiente:

CREATE TABLE <Nombre de Tabla>
( Nom_Columna1 Tipo_de_Dato [NULL l NOT NULL],
Nom_Columna2 Tipo_de_Dato [NULL l NOT NULL],
Nom_Columna3 As formula ...)
GO

C Cr re ea ac ci i n n d de e u un na a T Ta ab bl la a V V a a A As si is st te en nt te e

15. Desplegar las carpetas que ahora se encuentran dentro de la base de datos Computronic.
16. Pulsar el botn derecho sobre la carpeta con el nombre de Tablas y seleccionar la opcin Nueva
Tabla.



17. Como usted puede observar al lado derecho se muestra un cuadro.
18. Dentro de este cuadro se puede asignar el nombre de la Columna y el tipo de Dato de la columna e
indicar si los valores son nulos o no.
19. Digitar las siguientes columnas para esta nueva Tabla.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


20
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
20. Indicar el tipo de Dato para cada columna y por ultimo asignar si es nulo o no.
21. La estructura de la tabla tiene que quedar tal como se muestra en la siguiente figura.



22. Hacer clic en el botn guardar.

23. Guardar con el nombre de Alumnos.


24. Como usted puede observar en el Explorador de Objetos.
25. Dentro de la carpeta base de datos y dentro de la base de datos Computronic.
26. Se encuentra la carpeta Tablas, dentro de ella se encuentra la tabla Alumnos.


I In ng gr re es sa ar r R Re eg gi is st tr ro os s a a l la a T Ta ab bl la a
27. Seleccionar la Tabla alumnos.
28. Pulsar el botn derecho y seleccionar la opcin abrir Tabla.


29. Como usted puede observar al lado derecho se muestra la Tabla alumnos.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


21
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
30. Ingresar 2 a ms a la tabla Registros ala Tabla.


E El li im mi in na ac ci i n n d de e R Re eg gi is st tr ro os s d de e u un na a T Ta ab bl la a
31. Seleccionar la columna que desee eliminar, pulsar el botn derecho del mouse y seleccionar la
opcin Eliminar

32. Aparcera un cuadro de dialogo donde usted tiene que confirmar que si se desea eliminar el
registro seleccionado.

M Mo od di if fi ic ca ac ci i n n d de e l la a E Es st tr ru uc ct tu ur ra a d de e u un na a t ta ab bl la a. .
33. Seleccionar la tabla Alumnos.
34. Pulsar el botn derecho del mouse y seleccionar la opcin Modificar.

35. Como usted podr observar se vuelve a mostrar la estructura de la tabla Alumnos.
36. Seleccionar el Campo Id.
37. Y en el panel propiedades de Columna.
38. Habilitar la opcin Identidad, establecer que si desea Identidad.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


22
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8

39. Ahora guarde la modificacin.
40. Ingrese un nuevo registro en la tabla, pero esta vez ya no asigne el cdigo, como usted ver el
cdigo se genera automticamente.

41. Seleccionar la tabla y pulsar el botn Derecho del mouse.
42. Seleccionar la opcin propiedades.
43. Aparecer un cuadro de dialogo.
44. Dentro de ese cuadro de dialogo, se indica quien ha creado la tabla, la fecha de Creacin, servidor,
etc.
45. Tal como lo puede apreciar en la siguiente figura.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


23
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8

E El li im mi in na ar r u un na a b ba as se e d de e d da at to os s
46. Seleccionar la base de datos con el nombre de Computronic.
47. Pulsar el botn derecho y seleccionar la opcin eliminar.
48. Aparecer un cuadro de dialogo donde habilitara la opcin Cerrar conexiones Existentes.
49. Finalmente hacer clic en aceptar.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


24
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
U Ut ti il li iz za ac ci i n n d de el l A An na al li iz za ad do or r d de e C Co on ns su ul lt ta as s
50. Hacer clic en Nueva Consulta.

C Cr re ea ac ci i n n d de e u un na a b ba as se e d de e D Da at to os s v v a a c c d di ig go o S SQ QL L
Para crear un objeto dentro S SQ QL L s se er rv ve er r, , o dentro de una base de datos se utiliza la s se en nt te en nc ci ia a
C Cr re ea at te e, seguido del O Ob bj je et to o a a C Cr re ea ar r ( (B Ba as se e d de e D Da at to os s, , T Ta ab bl la as s, , P Pr ro oc ce ed di im mi ie en nt to os s A Al lm ma ac ce en na ad do os s, , V Vi is st ta as s, ,
e et tc c. .) ). .
51. Escribir el siguiente Script (cdigo SQL).

52. Seleccionar el Script digitado, y pulsar la tecla F5, para ejecutar la sentencia.
53. Explicar el Script utilizado, en la sentencia SQL anterior.
FileName._______________________________________________________________________
Size.___________________________________________________________________________
MaxSize.________________________________________________________________________
Filegrowth.______________________________________________________________________
54. Como usted puede observar la base de datos con el nombre de Computronic ha sido creada.
55. Si usted verifica la unidad C C de la unidad M PC, se han creado 2 archivos correspondientes a la
base de datos.
56. Uno es el *log y el otro es el archivo *mdf.

C Cu u l l e es s l la a d di if fe er re en nc ci ia a e en nt tr re e e el l a ar rc ch hi iv vo o * *l lo og g y y * *M Md df f? ?



I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


25
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
A Ab br ri ir r u un na a b ba as se e d de e d da at to os s v v a a S Sc cr ri ip pt t
Para abrir una base de datos se utiliza la sentencia U Us se e. .
C Cr re ea ac ci i n n d de e u un na a T Ta ab bl la a V V a a S Sc cr ri ip pt t
57. Digitar el siguiente Script, para crear una nueva tabla.

M Mo od di if fi ic ca ar r u un na a T Ta ab bl la a V V a a S Sc cr ri ip pt t
58. Se desea agregar una nueva columna a la tabla.

59. Se desea modificar el tipo de dato de la columna Nombre.

60. Se desea eliminar una columna de la tabla Alumnos.

V Va al lo or re es s a au ut to og ge en ne er ra ad do os s p pa ar ra a l la as s c co ol lu um mn na as s
En SQL Server 2005 se puede definir columnas que obtengan valores generados por el sistema, para ello
podemos hacer uso de:

P Pr ro op pi ie ed da ad d I Id de en nt ti it ty y

Permite generar valores secuenciales del sistema, este tipo de valores pueden ser utilizados en columnas
que sern empleadas como primary key.
Para emplear esta propiedad debe especificar un valor de inicio y uno de incremento.
Recuerde que este tipo de columnas no son editables.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


26
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
61. Primero tiene que eliminar la columna que usted desea que contenga el valor autogenerado.

62. Luego tiene que crear la nueva columna y esta vez agregar la propiedad I Id de en nt ti it ty y. .

Qu es lo que hace la propiedad I Id de en nt ti it ty y a a u un na a c co ol lu um mn na a? ?




M Ma an nt te en ni im mi ie en nt to o a a u un na a t ta ab bl la a I In ns se er rt ta ar r, , E El li im mi in na ar r y y A Ac ct tu ua al li iz za ar r
Si desea insertar un Nuevo Registro, Se utiliza la Sentencia Insert into.
Sintaxis:
I In ns se er rt t I In nt to o N No om mb br re e T Ta ab bl la a ( (C Ca am mp po os s d de e l la a T Ta ab bl la a) ) V Va al lu ue es s ( (V Va al lo or re es s a a I In ng gr re es sa ar r) )
63. Se desea agregar 5 registros a la tabla alumnos.
64. Digitar el siguiente Script.

A Al l m mo om me en nt to o d de e i in ng gr re es sa ar r l lo os s r re eg gi is st tr ro os s, , q qu ue e t ti ip po o d de e d da at to o v va an n c co on n c co om mi il ll la a s si im mp pl le e y y q qu u
t ti ip po o d de e d da at to o n no o v va an n c co on n c co om mi il ll la a s si im mp pl le e? ?


Si desea Eliminar un Registro, Se utiliza la Sentencia Delete.
Sintaxis:
D De el le et te e N No om mb br re e T Ta ab bl la a W Wh he er re e C Ca am mp po o = =C Co on nd di ic ci i n n
65. Se desea eliminar de la tabla alumno, el alumno de cdigo 2.
66. Digitar el siguiente Script.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


27
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
Si desea Actualizar un Registro, Se utiliza la Sentencia Update.
Sintaxis:
U Up pd da at te e N No om mb br re e T Ta ab bl la a s se et t c ca am mp po o1 1= = v va al lo or r1 1, , c ca am mp po o2 2 = = v va al lo or r2 2 W Wh he er re e C Ca am mp po o = =C Co on nd di ic ci i n n

67. Se desea Actualizar de la tabla alumno, el alumno de cdigo 3.
68. Digitar el siguiente Script.


E Ej je er rc ci ic ci io os s
Generar el Script de una base de datos llamada Prueba2 con un archivo de datos de 10 Mb, un
tamao mximo de 20 Mb y un crecimiento de 1Mb., el archivo de registro debe asumir los valores
por default de una base de datos. (Guardar con el Nombre de Prueba01)










Generar una base de datos llamada Titulacin, crear un archivo primario, secundario y de
transacciones, crear la base de datos en la unidad D de Mi PC. (Guardar con el Nombre de
Prueba02)









Generar una base de datos, que su ruta sea la unidad D de Mi PC. (Guardar con el Nombre de
Prueba02)









I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


28
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
Generar el siguiente Script de la tabla que se muestra a continuacin, tener en cuenta los tipos de
datos.( Guardar con el Nombre de Proveedor)














Generar el siguiente Script de la tabla que se muestra a continuacin, tener en cuenta los tipos de
datos.( Guardar con el Nombre de Factura)




I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


29
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8





Generar el siguiente Script de la tabla que se muestra a continuacin, tener en cuenta los tipos de
datos.(Guardar con el Nombre de Producto)








Describir los siguientes Tipos de datos:
N Nv va ar rc ch ha ar r. .- -
M Mo on ne ey y. .- -
S Sm ma al ll lD Da at te eT Ti im me e. .- -
N Nt te ex xt t. .- -
I Im ma ag ge e. .- -





I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


30
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
R Re es st tr ri ic cc ci io on ne es s ( (C Co on ns st ta ai in nt ts s) )
Las restricciones son un mtodo declarativo de definicin de la integridad de datos ya que en ellas se
definen al momento de crear una tabla con la sentencia create Table, o al momento de modificar la
definicin de la tabla (con la sentencia Alter Table).
En otras palabras, una restriccin forma parte de la definicin de la tabla. Las restricciones son el mtodo
preferido para dar fuerza a la integridad de los datos.
T Ti ip po os s d de e R Re es st tr ri ic cc ci io on ne es s
Las restricciones son un mtodo estndar ANSI para forzar la integridad de los tipos de datos.
Garantizan que los datos ingresados en las columnas sean valores validos y que se mantengan las
relaciones entre las tablas.
La tabla siguiente descrbelos diferentes tipos de restricciones.
T Ti ip po o d de e R Re es st tr ri ic cc ci i n n D De es sc cr ri ip pc ci i n n
PRIMARY KEY
(Clave primaria)
Garantiza que cada fila o registro en una tabla es nico(a). la
columna o combinacin de columnas definida como clave
primaria no permite valores duplicados
UNIQUE
(Valor no duplicado)
Garantiza que cada valor en una columna es nico. Permite
valores nicos
FOREIGN KEY
(Clave Fornea)
Define la columna o combinacin de columnas de una tabla
secundaria cuyos valores dependen de la clave primaria de la
Tabla primaria.
DEFALULT
(Valor Predeterminado)
Establece el valor predeterminado para una columna cuando
al insertar una fila no se especifica el valor para dicha
columna
CHECK
(Regla de Validacin)
Establece una regla que debe cumplir un valor para que sea
un valor aceptable en una Columna

P Pa ar ra a r re ea al li iz za ar r e es st to os s e ej je er rc ci ic ci io os s u us st te ed d t ti ie en ne e q qu ue e c cr re ea ar r l la as s s si ig gu ui ie en nt te es s T Ta ab bl la as s y y
b ba as se e d de e D Da at to os s
C Cr re ea ar r l la a b ba as se e d de e D Da at to os s C Co ol le eg gi io o

C Cr re ea ar r l la as s s si ig gu ui ie en nt te es s T Ta ab bl la as s
T Ta ab bl la a A Al lu um mn no os s


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


31
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
T Ta ab bl la a N No ot ta as s

T Ta ab bl la a C Cu us so o


C Cr re ea ac ci i n n d de e u un na a C Cl la av ve e P Pr ri im ma ar ri ia a ( (P PK K) )
S Si in nt ta ax xi is s
A Al lt te er r T Ta ab bl le e N No om mb br re e_ _T Ta ab bl la a
A Ad dd d c co on ns st tr ra ai in nt t P Pk k_ _N No om mb br re e_ _T Ta ab bl la a
P Pr ri im ma ar ry y K Ke ey y ( (C Co ol lu um mn na aX X, ,C Co ol lu um mn na aP P, , ) )
PK_nombre_Tabla es el nombre de la restriccin clave primaria. Se recomienda definir como nombre de
la clave primaria, el nombre de la tabla con el prefijo PK_. Si no se especifica el nombre de la restriccin,
SQL Server le asigna un nombre.
Columnax, ColumnaP es la columna o combinacin de columnas que se define como Clave primaria. Las
columnas involucradas no deben permitir valores nulos, y adems, no deben tener valores duplicados. En el
caso de una combinacin de columnas, la combinacin vista como una unidad no debe tener valores
duplicados.
1. Asignar llave primaria todas las tablas creadas anteriormente.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


32
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
2. Establecer llave Primaria a las dems Tablas.
3. Digitar el Script utilizado para la Creacin de las llaves Primarias en las dems Tablas.








.
C Cr re ea ac ci i n n d de e u un na a L Ll la av ve e F Fo or r n ne ea a ( (F FK K) )
S Si in nt ta ax xi is s
A Al lt te er r T Ta ab bl le e n no om mb br re e_ _T Ta ab bl la a
A Ad dd d C Co on ns st tr ra ai in nt t F Fk k_ _N No om mb br re e_ _T Ta ab bl la a_ _T Ta ab bl la a_ _R Re ef fe er re en nc ci ia ad da a
F Fo or re ei ig gn n K Ke ey y ( (C Co ol lu um mn nn na aX X, , C Co ol lu um mn na aP P) )
F Fk k_ _n no om mb br re e_ _T Ta ab bl la a_ _T Ta ab bl la a_ _r re ef fe er re en nc ci ia ad da a es el nombre de la restriccin clave fornea. Se recomienda
definir como nombre de la clave fornea, el nombre de la tabla seguido del nombre de la tabla
referenciada, todo con el prefijo FK_. Si no se especifica el nombre de la restriccin, SQL Server le asigna un
nombre.
C Co ol lu um mn na aX X, , C Co ol lu um mn na aP P, , es la columna O Combinacin de columnas que se define como clave fornea.
T Ta ab bl la a_ _R Re ef fe er re en nc ci ia a, , es el nombre de la tabla primaria con la que se relaciona con la tabla secundaria que
tiene la clave fornea. De modo predeterminado la clave fornea hace referencia la clave primaria de la
Tabla primaria.
1. Asignar llave fornea todas las tablas creadas anteriormente.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


33
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
2. Establecer llave fornea a las dems Tablas.
3. Digitar el Script utilizado para la Creacin de las Llave Fornea en las dems Tablas.







.
C Cr re ea ac ci i n n d de e r re es st tr ri ic cc ci i n n V Va al lo or r n no o D Du up pl li ic ca ad do o ( (U Un ni iq qu ue e) )
S Si in nt ta ax xi is s
A Al lt te er r T Ta ab bl le e N No om mb br re e_ _T Ta ab bl la a
A Ad dd d C Co on ns st tr ra ai in nt t U U_ _n no om mb br re e_ _t ta ab bl la a_ _n no om mb br re e_ _C Co ol lu um mn na a
U UN NI IQ QU UE E ( (C Co ol lu um mn na a X X, , C Co ol lu um mn na a P P, , . .) )
U U_ _n no om mb br re e_ _t ta ab bl la a_ _n no om mb br re e_ _c co ol lu um mn na a es el nombre de la restriccin valor no duplicado o UNIQUE. Se
recomienda definir como nombre de la restriccin, el nombre de la tabla seguido del nombre de la
columna afectada, todo con el prefijo U_. Si no se especifica el nombre de la restriccin, SQL Server le
asigna un nombre.
C Co ol lu um mn na aX X, , C Co ol lu um mn na aP P, , es la columna O combinacin de columnas a la que se aplica la restriccin.
1. Asignar la propiedad Unique al Campo Curso de la tabla Curso.

C Cr re ea ac ci i n n d de e V Va al lo or r p pr re ed de et te er rm mi in na ad do o ( (D DE EF FA AU UL LT T) )
S Si in nt ta ax xi is s
A Al lt te er r T Ta ab bl le e n no om mb br re e_ _T Ta ab bl la a
A Ad dd d C Co on ns st tr ra ai in nt t D DF F_ _N No om mb br re e_ _T Ta ab bl la a_ _N No om mb br re e_ _C Co ol lu um mn na a
D De ef fa au ul lt t v va al lo or r_ _p pr re ed de et te er rm mi in na ad do o f fo or r C Co ol lu um mn na aX X

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


34
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
D Df f_ _n no om mb br re e_ _t ta ab bl la a_ _n no om mb br re e_ _C Co ol lu um mn na a es el nombre de la restriccin valor predeterminado O Default.
Se recomienda definir como nombre de la restriccin, el nombre de la tabla seguido del nombre de la
columna afectada, todo con el prefijo DF_. Si no es especifico el nombre de la restriccin, SQL server le
asigna un nombre.
V Va al lo or r_ _P Pr re ed de et te er rm mi in na ad do o es el valor que se almacena en columna X cuando al insertar una fila no se
especifica el valor para esa columna.
ColumnaX es la Columna a la que se aplica la restriccin.
1. Se desea asignar valores por defecto a la Columna FechaInscripcion de la Tabla Alumnos.
2. En dicha campo se guardara la Fecha actual del sistema, al momento de ingresar un nuevo registro.

3. Insertar algunos valores dentro de la Tabla Alumnos.

C Cr re ea ac ci i n n d de e u un na a R Re eg gl la a d de e V Va al li id da ac ci io on ne es s ( (C CH HE EC CK K) )
S SI IN NT TA AX XI IS S
A Al lt te er r T Ta ab bl le e n no om mb br re e_ _T Ta ab bl la a
A Ad dd d c co on ns st tr ra ai in nt t C CK K_ _n no om mb br re e_ _T Ta ab bl la a_ _n no om mb br re e_ _C Co ol lu um mn na a
C Ch he ec ck k ( (C Co on nd di ic ci i n n) )

C CK K_ _n no om mb br re e_ _t ta ab bl la a_ _n no om mb br re e_ _C Co ol lu um mn na a es el nombre de la restriccin regla de validacin O Check. Se
recomienda definir como nombre de la restriccin, el nombre de la Tabla Seguido del nombre de la
columna afectada, todo con el prefijo CK_. Si no se especifica el nombre de la restriccin, SQL SERVER le
asigna un nombre.
C Co on nd di ic ci i n n es la expresin que determina como debe ser el valor a ingresar en la columna afectada por la
restriccin.
1. Se desea validar los datos del campo nota de la Tabla Notas.
2. En dicho campo se validara la entrada de cada Nota ingresada, esta nota esta en promedio de 0 a
20.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


35
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8

3. Insertar algunos valores en la tabla.

4. Insertar un valor en la columna nota, que no este dentro del rango establecido.

5 5. . Como usted puede observar en el panel resumen aparece un error.

Q Qu u e es s l lo o q qu ue e q qu ui ie er re e d de ec ci ir r e es se e e er rr ro or r? ?


A Ac ct tu ua al li iz za ac ci i n n y y b bo or rr ra ad do o e en n c ca as sc ca ad da a
El actualizar y/o eliminar registros en cascada, son opciones que se definen cuando definimos la clave
fornea y que le indican al sistema gestor qu hacer en los casos comentados en el punto anterior.
A Ac ct tu ua al li iz za ar r r re eg gi is st tr ro os s e en n c ca as sc ca ad da a: :

Esta opcin le indica al sistema gestor de la base de datos que cuando se cambie un valor del campo
clave de la tabla principal, automticamente cambiar el valor de la clave fornea de los registros
relacionados en la tabla secundaria.
Por ejemplo, si cambiamos en la tabla de poblaciones (la tabla principal) el valor 1 por el valor 10 en el
campo cdigo (la clave principal), automticamente se actualizan todos los habitantes (en la tabla
secundaria) que tienen el valor 1 en el campo poblacin (en la clave ajena) dejando 10 en vez de 1.
Si no se tiene definida esta opcin, no se puede cambiar los valores de la clave principal de la tabla
principal. En este caso, si intentamos cambiar el valor 1 del cdigo de la tabla de poblaciones, no se
produce el cambio y el sistema nos devuelve un error o un mensaje que los registros no se han podido
modificar por infracciones de clave.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


36
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
C Co on ns su ul lt ta as s S Se en nc ci il ll la as s
A Ad dj ju un nt ta ar r u un na a B Ba as se e d de e D Da at to os s
1. Copiar la carpeta BaseDatos a la unidad C: de MiPc.
2. Ingresar al SQL Server.
3. Hacer clic en el Botn de Nueva consulta .
4. Escribir el siguiente Script dentro del analizador de consulta.

E Es st tu ud di io o d de e l la a B Ba as se e d de e D Da at to os s P Po os se ei id d n n
5. Actualizar el Explorador de Objetos .
6. Como usted puede observar se ha generado una nueva Base de Datos llamada Poseidn.
7. Desplegar la Carpeta Tablas.
8. Como usted puede observar la base de datos contiene 7 tablas.

C Cr re ea ac ci i n n d de e u un n D Di ia ag gr ra am ma a d de e b ba as se e d de e d da at to os s
9. Pulsar el botn derecho sobre la carpeta Diagrama de Base de Datos.
10. Seleccionar la opcin Nuevo Diagrama de base de Datos.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


37
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
11. En el cuadro de dialogo Agregar Tabla, agregar todas las tablas que desee mostrar en el
diagrama.
12. Agregar todas las Tablas de la base de datos Poseidn.

13. Establecer el siguiente diagrama.

14. Guardar el diagrama con el nombre de Diagrama Poseidn.

15. Como usted puede observar se ha creado un nuevo diagrama en la base de datos Poseidn.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


38
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
L LA A S SE EN NT TE EN NC CI IA A S SE EL LE EC CT T
La sentencia Select es una sentencia SQL, que pertenece al conjunto del Lenguaje de Manipulacin de
Datos, y que sirve para recuperar registros de una o varias tablas, de una o varias bases de datos.
Su sintaxis es la siguiente:
SELECT <atributos> FROM <tablas>
[WHERE <condicion>]
[GROUP BY <atributos>]
[HAVING <condicin>]
[ORDER BY <atributos>]
Donde las maysculas representan palabras reservadas, y lo encerrado entre corchetes es opcional, puede
ser omitido. Una vez vista la anterior forma de representacin, vamos a detenernos en la sintaxis de la
sentencia Select. Se compone de tres partes:
SELECT <atributos>: permite hacer una proyeccin de las tablas, es decir, seleccionar los campos
que deseamos recuperar de la base de datos, separados por comas. Si se especifica el smbolo *, se
obtendrn todos los campos de la tabla.
FROM <tablas>: permite especificar la tabla de la cual se desean obtener los datos. Si se especifica
ms de una tabla, stas irn separadas por comas.
WHERE <condicin>: permite establecer una condicin de recuperacin de las filas de la/s tabla/s.
Slo se obtendrn aquellas Registros que verifiquen dicha condicin, que ser opcional.
En el caso de que se omita esta parte, se recuperarn todas las filas.
GROUP BY <atributos>: permite establecer una seleccin de campos cuando se utilizan funciones
escalares o de conteo (ya se ver ms adelante lo que significa.
HAVING <condicin>: establece una condicin para los atributos obtenidos como resultado de la
aplicacin de funciones escalares.
ORDER BY <atributos>: permite obtener el resultado de la consulta ordenado por los atributos
especificados.

E Ej je er rc ci ic ci io os s d de e C Co on ns su ul lt ta as s
E Ej je er rc ci ic ci io o N N# # 1 1
1. Se desea visualizar todos los registros de la tabla Clientes de la base de datos Poseidn.
2. Digitar el siguiente Script.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


39
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
3. Seleccionar el Script y ejecutar la consulta (pulsar la Tecla F5).

E Ej je er rc ci ic ci io o N N# # 2 2
1. Se desea visualizar todas las Fechas del Campo FechaPedido de la Tabla Pedidos.
2. Digitar el siguiente Script.



3. Seleccionar el Script y ejecutar la consulta (pulsar la Tecla F5).

E Ej je er rc ci ic ci io o N N# # 3 3
1. Se desea visualizar los siguientes campos IdCliente, NombreCompaa de la Tabla Clientes.
2. Se desea cambiar el nombre de la Columna IdCliente al Nombre de Cdigo, NombreCompaa al
nombre Empresa.
3. Digitar el siguiente Script.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


40
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
4. Seleccionar el Script y ejecutar la consulta (pulsar la Tecla F5).

D De ef fi in ni ic ci i n n d de e C Co ol lu um mn na as s C Co om mp pu ut ta ad da as s
Una columna computada es una columna que se muestra en el resultado de una consulta, pero que no
existe fsicamente como tal en la tabla. La columna computada muestra el resultado de ejecutar alguna
operacin con las columnas de la tabla.
E Ej je er rc ci ic ci io o N N# # 4 4
1. Se desea obtener el 10 % de descuento de cada producto.
2. Digitar el siguiente Script.

3. Seleccionar el Script y ejecutar la consulta (pulsar la Tecla F5).



I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


41
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
C Co on nc ca at te en na an nd do o C Ca ad de en na as s
E Ej je er rc ci ic ci io o N N# # 5 5
1. Se desea Mostar en una Consulta de los Campos Apellidos y Nombres en una sola columna, estos
campos son de la Tabla Empleados.
2. Digitar el siguiente Script.

3. Seleccionar el Script y ejecutar la consulta (pulsar la Tecla F5).

Q Qu u s s m mb bo ol lo o s se e u ut ti il li iz zo o p pa ar ra a c co on nc ca at te en na ar r l lo os s c ca am mp po os s d de e u un na a T Ta ab bl la a? ?


D De ef fi in ni ic ci i n n d de e f fi il lt tr ro os s d de e f fi il la a e en n S Se el le ec ct t
En la clausula where, condicin_filas es una expresin lgica que establece la condicin que debe cumplir
las filas a mostrar en el resultado de la consulta. Para construir la expresin lgica utilice operadores
relacionales O de comparacin y operadores lgicos SQL como Like, Between e In.
O Op pe er ra ad do or re es s e en n T Tr ra an ns sa ac ct t S SQ QL L
La siguiente tabla ilustra los operadores de Transact SQL.
Tipo de operador Operadores
Operador de asignacin =
Operadores aritmticos + (suma)
- (resta)
* (multiplicacin)
/ (divisin)

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


42
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
** (exponente)
% (modulo)
Operadores relacionales o
de comparacin
= (igual a)
<> (distinto de)
!= (distinto de)
< (menor que)
> (mayor que)
>= (mayor o igual a)
<= (menor o igual a)
!> (no mayor a)
!< (no menor a)
Operadores lgicos AND (y lgico)
NOT (negacin)
OR (o lgico)
& (AND a nivel de bit)
| (OR a nivel de bit)
^ (OR exclusivo a nivel de bit)
Operador de
concatenacin
+
Otros ALL (Devuelve TRUE si el conjunto completo de comparaciones es TRUE)
ANY(Devuelve TRUE si cualquier elemento del conjunto de
comparaciones es TRUE)
BETWEEN (Devuelve TRUE si el operando est dentro del intervalo)
EXISTS (TRUE si una sub consulta contiene filas)
IN (TRUE si el operando est en la lista)
LIKE (TRUE si el operando coincide con un patrn)
NOT (Invierte el valor de cualquier operador booleano)
SOME(Devuelve TRUE si alguna de las comparaciones de un conjunto es
TRUE)

E Ej je er rc ci ic ci io os s d de e C Co on ns su ul lt ta as s u ut ti il li iz za an nd do o F Fi il lt tr ro os s
E Ej je er rc ci ic ci io o N N# # 6 6
1. Se desea Mostar todos los productos de la Categora 2.
2. Digitar el siguiente Script.

3. Seleccionar el Script y ejecutar la consulta (pulsar la Tecla F5).


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


43
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
E Ej je er rc ci ic ci io o N N# # 7 7
1. Se desea Mostar todos los productos de la Categora 2 y que el Precio Unitario sea mayor igual a
20.
2. Digitar el siguiente Script.

4. Seleccionar el Script y ejecutar la consulta (pulsar la Tecla F5).


E Ej je er rc ci ic ci io o N N# # 8 8
1. Se desea Mostar todos los productos, menos de la categora 2 y que sean mayores e iguales a 30.
2. Digitar el siguiente Script.

3. Seleccionar el Script y ejecutar la consulta (pulsar la Tecla F5).


E Ej je er rc ci ic ci io o N N# # 9 9
1. Se desea Mostar todos los productos, de la Categora 5 y 7 de la tabla productos.
2. Digitar el siguiente Script.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


44
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
3. Seleccionar el Script y ejecutar la consulta (pulsar la Tecla F5).

M Ma an ni ip pu ul la ac ci i n n d de e D Da at to os s d de e t ti ip po o F Fe ec ch ha a - - H Ho or ra a
E Ej je er rc ci ic ci io o N N# # 1 10 0
1. Ejecute la siguiente sentencia.

2. La lista muestra varios pedidos realizados el 8 de Agosto de 1994.

3. Se desea mostrar los pedidos con la fecha 1992/08/08.

4. Como usted puede observar no se muestra nada en la lista.



I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


45
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
Cul cree usted que sea el problema?
El problema no es el formato de fecha ya que previamente se le informo al servidor que la cadena de fecha
se le esta enviando en formato dmy.
La columna FechaPedido es de tipo fecha-hora; por lo tanto almacena la fecha adems la hora, es decir,
que representa un instante en el tiempo.
La instruccin Select que se ha enviado no especifica la hora, por lo que el motor de bsqueda asume que
estamos buscando la fecha 08/08/1994 00:00:00:00.
5. Ahora ejecute la siguiente sentencia.

6. El listado resultante muestra los pedidos cuya fecha es anterior al 08 de Agosto de 1994.


U Us so o d de e l la a f fu un nc ci i n n C CO ON NV VE ER RT T ( () ) c co on n d da at to os s d de e t ti ip po o F Fe ec ch ha a- - H Ho or ra a
S Si in nt ta ax xi is s
Convert (Char(n),expresin_Fecha,estilo)
Convierte expresin_fecha a una cadena de formato de fecha. La cadena tiene longitud n y el formato del
dato se establece con el valor de estilo.
Char(n), es el tipo y la longitud de la cadena con formato de fecha resultante.
expresin_fecha, representa la fecha cuyo formato de representacin se desea cambiar.
Estilo, indica el formato de presentacin de la cadena resultante.
El siguiente cuadro muestra algunos valores de estilo para la funcin CONVERT.
Ao con 2 dgitos Ao con 4 Dgitos Formato Salida
1 101 USA Mm/dd/aa
2 102 ANSI aa.mm.dd
3 103 Britnico / Francs Dd/mm/aa
4 104 Alemn dd.mm.aa
5 105 Italiano dd-mm-aa
6 106 Dd mes dd
7 107 Mes dd, aa



I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


46
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
B B s sq qu ue ed da a b ba as sa ad da a e en n F Fe ec ch ha a
Se desea obtener el listado de los pedidos cuya fecha de pedido es anterior O igual al 8 de Agosto de 1994
E Ej je er rc ci ic ci io o N N# # 1 11 1
1. Escribir el siguiente Script.

2. Seleccionar el Script y ejecutar la consulta (pulsar la Tecla F5).



B B s sq qu ue ed da a b ba as sa ad da a e en n c ca ad de en na a d de e c ca ar ra ac ct te er re es s
O Op pe er ra ad do or r L Li ik ke e
S Si in nt ta ax xi is s
S Se el le ec ct t * *I I l li is st ta a_ _C Co ol lu um mn na as s f fr ro om m n no om mb br re e_ _t ta ab bl la a
W Wh he er re e c co ol lu um mn na a L LI IK KE E e ex xp pr re es si i n n_ _c ca ad de en na a_ _a a_ _b bu us sc ca ar r
C Co ol lu um mn na a, , es la columna en la que se busca la cadena de caracteres.
E Ex xp pr re es si io on n_ _C Ca ad de en na a_ _a a_ _b bu us sc ca ar r, , indica como debe ser la cadena que se esta buscando en columna. La
expresin admite comodines.
L Lo os s C Co om mo od di in ne es s d de el l O Op pe er ra ad do or r L Li ik ke e
El siguiente cuadro muestra los comodines que puede utilizar con el Operador Like
Comodn Descripcin
% % Indica que en la posicin del comodn puede ir cualquier cadena de caracteres, incluso una
cadena nula
- - Indica que en la posicin del comodn puede ir cualquier carcter no nulo.
[ [a ab bc c] ] Establece el conjunto de caracteres validos en la posicin no nulo.
[ [a a- -b b] ] Establece el rango de caracteres validos en la posicin del comodn.
^ ^ Excluir, indica que carcter o conjunto de caracteres no irn en la lista de resultado.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


47
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
E Ej je er rc ci ic ci io o N N# # 1 12 2
Lista de productos cuyo nombre contenga la palabra vino
Select * from productos where nombreproducto like '%vino%'
Luego procedemos a ejecutar la aplicacin.

El smbolo % representa a cualquier cadena de caracteres, inclusive la cadena nula.
E Ej je er rc ci ic ci io o N N# # 1 13 3
Lista de productos cuya primera letea empieza con la letra a.
Select * from productos where nombreproducto like '[a] %'

E Ej je er rc ci ic ci io o N N# # 1 14 4
Lista de productos cuya primera letea empieza con la letra a y la tercera con la letra e.
Select * from productos where nombreproducto like '[a]%[e]'

E Ej je er rc ci ic ci io o N N# # 1 15 5
Lista de productos cuyo nombre empieza con cualquier carcter que va en el rango de la M a la T.
Select * from productos where nombreproducto like '[m-t]%'


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


48
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
E Ej je er rc ci ic ci io o N N# # 1 16 6
Lista de productos cuyo nombre empieza con A con cualquier carcter en el rango que va de U a
la Adems, el segundo carcter no debe ser la letra r.
Select * from productos where nombreproducto like '[^b-t][^r]%'

El Carcter ^ significa Excluir.
El Carcter % representa cualquier cadena de caracteres, inclusive la cadena nula
El Carcter _ Representa cualquier carcter imprimible no puede ser nulo.
E Ej je er rc ci ic ci io o N N# # 1 17 7
Lista de productos cuyo nombre empieza con la palabra Queso.
Select * from productos where nombreproducto like 'queso%'

E Ej je er rc ci ic ci io o N N# # 1 18 8
Lista productos cuyo segundo carcter empiece con la letra e.
Select * from productos where nombreproducto like '_e%'




I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


49
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
E Ej je er rc ci ic ci io o N N# # 1 19 9
Lista de productos cuyo nombre empiece con C, M R.
Select * from productos where nombreproducto like [cmr] %'

E Ej je er rc ci ic ci io o N N# # 2 20 0
Lista de productos cuyo nombre empiece con C, M R. El segundo Carcter debe ser A.
Select * from productos where nombreproducto like [cmr] a%'

El comodn [cmr], representa el conjunto de caracteres validos en la posicin en la que aparecer el
comodn.
E Ej je er rc ci ic ci io o N N# # 2 21 1
Seleccionar todos los productos que termine con la letra Z
Select * from productos where nombreproducto like '%z'





I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


50
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
E Ej je er rc ci ic ci io o N N# # 2 22 2
Mostrar todos los productos cuya cuarta letra sea A
Select * from productos where nombreproducto like '___a%'

O Op pe er ra ad do or r B Be et tw we ee en n
Permite seleccionar en base a un rango de valores numricos.
S Si in nt ta ax xi is s
S Se el le ec ct t * *I I l li is st ta a_ _C Co ol lu um mn na as s f fr ro om m n no om mb br re e_ _t ta ab bl la a
W Wh he er re e c co ol lu um mn na a B Be et tw we ee en n V Va al lo or r_ _i in ni ic ci ia al l A AN ND D V Va al lo or r_ _F Fi in na al l
Between indica que el valor de la columna debe encontrarse en el rango definido por Valor_inicial y
Valor_Final. .
Columna, es la columna en la que se busca segn el rango especificado por Valor_inicial y Valor_Final.
Valor_inicial , Valor_Final, Establecen los limites del rango de valores en la que se basa la bsqueda.
E Ej je er rc ci ic ci io o N N# # 2 23 3
Lista de productos cuyo precio se encuentra en el rango que va de 15 a 21 nuevos soles.
Select * from productos where preciounidad between 15 and 21




I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


51
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
E Ej je er rc ci ic ci io o N N# # 2 24 4
Lista de productos cuyo nombre se encuentren en el rango de Cerveza y galletas
Select * from productos where nombreproducto between 'cerveza' and 'galletas'

E Ej je er rc ci ic ci io o N N# # 2 25 5
Se desea visualizar un listado de todos los pedidos realizados en el ao de 1996.
select * from pedidos where FechaPedido not between '01/01/1994' and '31/12/1995'

O Op pe er ra ad do or r I IN N
Permite seleccionar en base a un conjunto de valores
E Ej je er rc ci ic ci io o N N# # 2 26 6
Lista de proveedores ubicados en las ciudades de Londres, Paris, Tokyo.
Select * from proveedores where ciudad in ('londres','Pars','Tokyo')


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


52
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
M Ma an ni ip pu ul la ac ci i n n d de e v va al lo or re es s N Nu ul ll l
Un valor Null indica que el valor es desconocido, no aplicable o que simplemente se registra
posteriormente. Un valor Null es distinto a un a cadena vaca o al valor cero (0) y tambin es distinto a
cualquier otro valor.
La comparacin operacin entre valores Null o entre un valor Null y cualquier otro valor retorna un valor
desconocido (otro valor Null), ya que cada valor Null es desconocido.
E Ej je er rc ci ic ci io o N N# # 2 27 7
Lista de Clientes que no tengan Fax.
select * from clientes where fax is null

E Ej je er rc ci ic ci io o N N# # 2 28 8
Lista de Clientes que tengan Fax.
select * from clientes where fax is not null






I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


53
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
F Fu un nc ci io on ne es s d de e F Fe ec ch ha a y y H Ho or ra a
La siguiente tabla muestra las funciones de fecha y hora disponibles en SQL server.
F Fu un nc ci i n n R Re es su ul lt ta ad do o
GETDATE() Retorna la fecha y hora del sistema
DATEADD(partefecha,n,fecha) Retorna una nueva fecha aadiendo n unidades de
partefecha a fecha
DATEDIFF(parteFecha,fecha1,fecha2) Retorna la diferencia en parteFecha entre fecha1 y fecha2.
DATENAME(partefecha,fecha) Retorna la cadena correspondiente a partefecha en fecha
DATEPART(partefecha,fecha) Retorna el nmero correspondiente a partefecha y fecha
DAY(fecha) Retorna el nmero correspondiente a la parte del da de
fecha
MONTH(fecha) Retorna el nmero correspondiente a la parte del mes de
fecha
YEAR(fecha) Retorna el nmero correspondiente a la parte del ao de
fecha
GETUTCDATE() Retorna la fecha y hora del meridiano de Greenwich

La siguiente tabla muestra los valores de parte fecha que podemos utilizar.
P Pa ar rt te e f fe ec ch ha a A Ab br re ev vi ia at tu ur ra a
Year Yy, yyyy
Quarter Qq ,q
Month Mm, m
Dayofyear Dy, y
Day Dd, d
Week Wk, ww
weekday Dw
Hour Hh
minute Mi, n
second Ss, s
milisecond Ms


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


54
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
D Da at te eN Na am me e
Devuelve una cadena de caracteres que representa la parte de la fecha especificada de la fecha
especificada
Los clculos para las horas no son exactos cuando se trata de SmallDateTime, por lo que devuelve
0.
E Ej je er rc ci ic ci io o N N# # 2 29 9
Select IdPedido, DateName (Month, FechaPedido) as 'Nombre del mes' from Pedidos where IdPedido =
10352 diciembre



E Ej je er rc ci ic ci io o N N# # 3 30 0
Select IdPedido, DateName (week, FechaPedido) as 'Numero de Semana' from Pedidos where IdPedido =
1035251


E Ej je er rc ci ic ci io o N N# # 3 31 1
Select IdPedido, datename (weekday, FechaPedido) as 'Da De Semana' from Pedidos where IdPedido =
10352 Martes

H Ho or ra as s: :

E Ej je er rc ci ic ci io o N N# # 3 32 2
Select IdPedido, datename (mi, FechaPedido) as 'Minutos' from Pedidos where IdPedido = 10352

E Ej je er rc ci ic ci io o N N# # 3 33 3
Select DateName (minute, getdate ()) as 'minutos'

E Ej je er rc ci ic ci io o N N# # 3 34 4
Select DateName (Hh, FechaPedido) as 'hora' from Pedidos where IdPedido = 10352

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


55
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8

E Ej je er rc ci ic ci io o N N# # 3 35 5
Select DateName (Hour, getdate ()) as 'hora'-->18

E Ej je er rc ci ic ci io o N N# # 3 36 6
Select DateName (Hh, getdate ()) as 'hora'-->18

D Da at te eP Pa ar rt t
Devuelve la parte de la fecha u hora indicada. Sintaxis:

Datepart (Valor devolver, fecha)
E Ej je er rc ci ic ci io o N N# # 3 37 7
Select IdPedido, datepart (mm, FechaPedido) as 'Mes' from Pedidos where IdPedido = 10352

E Ej je er rc ci ic ci io o N N# # 3 38 8
Select Datepart (Hh, getdate ()) as 'Hora'-->17

E Ej je er rc ci ic ci io o N N# # 3 39 9
Select Datepart (mi, getdate ()) as 'Minutos'-->54

N No om mb br re es s d de e F Fe ec ch ha as s
Day (fecha)
Devuelve UN INT, equivale a Datepart
Select day (getdate ()) as da-->6 (da en la que se ejecuta la sentencia)
Select Datepart (dd, getdate ()) -->6 (da en la que se ejecuta la sentencia)

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


56
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
Select Month (getdate ()) -->1 (Mes en la que se ejecuta la sentencia)
Select Datepart (mm, getdate ()) -->1 (Mes en la que se ejecuta la sentencia)
Select Year (getdate ()) -->2008 (Ao en la que se ejecuta la sentencia)
E Ej je er rc ci ic ci io o N N# # 4 40 0
Select year (FechaPedido) as 'Ao' from Pedidos where IdPedido = 10352

E Ej je er rc ci ic ci io o N N# # 4 41 1
Select datediff (yyyy, FechaPedido, getdate()) as 'Dia' from Pedidos where IdPedido = 10352

D Da at te eA Ad dd d
DateAdd (Datepart, number, date)
Aade un nmero a la fecha puesta
DatePart es el formato de lo que queremos aadir.
Number es el nmero que queremos incrementar la fecha expuesta.
Select convert (datetime,'1-1-02')
Select dateadd (dd, 7,'1-1-02')
D Da at te eD Di if ff f

Devuelve la diferencia entre dos fechas en el intervalo que le indiquemos. Sintaxis:
DateDiff (DatoqueDevuelve, Fecha1, Fecha2)
o Datoquedevuelve: Indicamos como queremos que haga la comparacin y el tipo de dato
que nos devolver, aos, das, minutos etc.

E Ej je er rc ci ic ci io o N N# # 4 42 2
Select datediff (yyyy, FechaPedido, getdate ()) as 'Dia' from Pedidos where IdPedido = 10352





I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


57
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
E Ej je er rc ci ic ci io os s d de e f fu un nc ci io on ne es s d de e F Fe ec ch ha a

E Ej je er rc ci ic ci io o N N# # 4 43 3
Lista de pedidos emitidos en febrero de 1996.

Select * from Pedidos where month (FechaPedido) =2 and year (FechaPedido) =1996


E Ej je er rc ci ic ci io o N N# # 4 44 4
Lista de Pedidos mostrando la diferencia en das entre la fecha del pedido y la fecha de Envi.

Select IdPedido, FechaPedido, FechaEnvo, das =datediff (day, FechaPedido, FechaEnvo) from pedidos


E Ej je er rc ci ic ci io o N N# # 4 45 5
Genere un listado de pedidos en el que la fecha del pedido se muestre en el formato nombre del da,
da de mes ao.

Select IdPedido, FechaPedido, Fecha=datename (dw, FechaPedido)+ ', ' + str (datepart (dd, FechaPedido)
,2)+' de '+datename (mm, FechaPedido)+' de '+str (datepart (yy, FechaPedido) ,4) from pedidos



I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


58
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
E Ej je er rc ci ic ci io o N N# # 4 46 6
Mostrar de la tabla pedidos la fecha de pedidos en fecha corta.

Select IdPedido, convert (varchar (30), FechaPedido, 106) as [Fecha Corta] from pedidos

A Ag gr ru up pa ar r y y r re es su um mi ir r d da at to os s

Sacar los n primeros valores
SELECT TOP n Nombre, Apellido... (Sacar los n primeros valores)
SELECT TOP n PERCENT Nombre, Apellido... (Sacar el n por ciento)
SELECT TOP n ORDER BY (Saca los n primeros ordenados por lo que sea y con coincidencias en el valor n.)
E Ej je er rc ci ic ci io o N N# # 4 47 7
Se desea obtener los 5 primeros productos de la tabla productos.

Select top 5 * from productos


E Ej je er rc ci ic ci io o N N# # 4 48 8
Se desea obtener el 50 % de la cantidad total de los productos.

Select top 50 percent * from productos



I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


59
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
E Ej je er rc ci ic ci io os s d de e R Re ep pa as so o
E Ej je er rc ci ic ci io o N N# # 4 49 9
Mostrar todos los datos de los empleados de nuestra tabla Empleados.

Select * from empleados



E Ej je er rc ci ic ci io o N N# # 4 49 9
Mostrar todos los datos de los Clientes ordenados por Ciudad.

Select * from clientes order by ciudad

P Pa ar ra a q qu ue e s se e u ut ti il li iz za a e el l O Or rd de er r B By y y y q qu ue e s si ig gn ni if fi ic ca a? ?


E Ej je er rc ci ic ci io o N N# # 5 50 0
Mostrar todos los productos donde IdCategora no sea 3.

Select * from productos where IdCategora<> 3

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


60
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8

E Ej je er rc ci ic ci io o N N# # 5 51 1
Mostrar los distintos IdPedido de la Tabla Pedidos.

Select distinct IdPedido from [detalles de pedidos]

E Ej je er rc ci ic ci io o N N# # 5 52 2
Mostrar de la Tabla producto los que no son de la Categora (1,2,3).

Select * from productos where IdCategora not in (1, 2, 3) order by IdProducto








I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


61
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
E Ej je er rc ci ic ci io o N N# # 5 53 3
Mostrar los pedidos entregados entre el 18/6/95 y el 25/12/97.

Select idpedido,idcliente,fechapedido,fechaentrega,cargo from pedidos where fechapedido between
'18/06/95' and '25/12/97'



E Ej je er rc ci ic ci io o N N# # 5 54 4
Mostrar los productos cuyo nombre empiecen con las letras Que .

Select idproducto,nombreproducto,preciounidad from productos where nombreproducto like 'que%'



E Ej je er rc ci ic ci io o N N# # 5 55 5
Mostrar los productos que empiecen con las letras A,B,C,D.

Select idproducto,nombreproducto,preciounidad from productos where nombreproducto like '[a-d]%'



I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


62
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
E Ej je er rc ci ic ci io o N N# # 5 56 6
Mostrar los clientes cuyo nombre termine en la letra S.

Select idcliente,nombrecompaa,direccin from clientes where nombrecompaa like '%s'




E Ej je er rc ci ic ci io o N N# # 5 57 7
Mostrar un listado de productos ordenado por precio en forma Ascendente.

Select idproducto,nombreproducto,preciounidad from productos order by nombreproducto



E Ej je er rc ci ic ci io o N N# # 5 58 8
Mostrar un listado de productos ordenado por precio en forma Descendente.

Select idproducto,nombreproducto,preciounidad from productos order by nombreproducto desc



I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


63
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
E Ej je er rc ci ic ci io o N N# # 5 59 9
Mostrar los 3 productos ms Caros.

Select top 3 idproducto,nombreproducto,preciounidad,cantidadporunidad from productos order by
preciounidad desc



E Ej je er rc ci ic ci io o N N# # 6 60 0
Mostrar los 3 productos ms Baratos.

Select top 3 idproducto,nombreproducto,preciounidad,cantidadporunidad from productos order by
preciounidad




E Ej je er rc ci ic ci io o N N# # 6 61 1
Mostrar los productos que tengan un precio menor o igual a 50 y su unidadesenexistencia se
encuentre entre 60 y 80.

Select nombreproducto,preciounidad,unidadesenexistencia from productos where (preciounidad <=50) and
(unidadesenexistencia>=60 and unidadesenexistencia<=80)




E Ej je er rc ci ic ci io o N N# # 6 62 2
Mostrar los clientes cuyo pas sea igual Alemania o Francia.

Select nombrecompaa,pas from clientes where pas='alemania' or pas='francia'



I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


64
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
E Ej je er rc ci ic ci io o N N# # 6 63 3
Mostrar los clientes cuyo pas sea Italia, Brasil, Francia, Irlanda, Espaa y Suecia.

Select nombrecompaa,pas from clientes Where pas in('italia','brasil','francia','irlanda','espaa','suecia')




E Ej je er rc ci ic ci io o N N# # 6 64 4
Mostrar los pedidos del cliente cuyo cdigo es Anton o bonap y la fecha de los pedidos sea
mayor a 11/5/95.

Select idpedido,idcliente,fechapedido from pedidos where (idcliente='anton' or idcliente='bonap') and
(fechapedido>'11/5/95')


P PR RO OC CE ED DI IM MI IE EN NT TO OS S P PA AR RA A A AG GR RU UP PA AR R Y Y R RE ES SU UM MI IR R D DA AT TO OS S

C Co on ns su ul lt ta a M Mu ul lt ti it ta ab bl la a

En este tema vamos a estudiar las consultas multitabla llamadas as porque estn basadas en ms de una
tabla. El SQL de Microsoft Jet 4.x soporta dos grupos de consultas multitabla:

la unin de tablas
la composicin de tablas.



I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


65
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
L La a u un ni i n n d de e t ta ab bl la as s

Esta operacin se utiliza cuando tenemos dos tablas con las mismas columnas y queremos obtener una
nueva tabla con las filas de la primera y las filas de la segunda.
En este caso la tabla resultante tiene las mismas columnas que la primera tabla (que son las mismas que
las de la segunda tabla).

Existen distintos tipos de composicin, aprenderemos a utilizarlos todos y a elegir el tipo ms apropiado a
cada caso.

Los tipos de composicin de tablas son:

El INNER JOIN
El LEFT / RIGHT JOIN

Combinamos todos los pedidos con todos los clientes pero luego seleccionamos los que cumplan que el
cdigo de cliente de la tabla de pedidos sea igual al cdigo de cliente de la tabla de clientes, por lo tanto
nos quedamos con los pedidos combinados con los datos del cliente correspondiente. Las columnas que
aparecen en la clusula WHERE de nuestra consulta anterior se denominan columnas de emparejamiento
ya que permiten emparejar las filas de las dos tablas. Las columnas de emparejamiento no tienen por qu
estar incluidas en la lista de seleccin. Normalmente emparejamos tablas que estn relacionadas entre s y
una de las columnas de emparejamiento es clave principal, pues en este caso, cuando una de las columnas
de emparejamiento tiene un ndice definido es ms eficiente utilizar otro tipo de composicin, el INNER
JOIN.

E EL L I IN NN NE ER R J JO OI IN N

El INNER JOIN es otro tipo de composicin de tablas, permite emparejar filas de distintas tablas de forma
ms eficiente que con el producto cartesiano cuando una de las columnas de emparejamiento est
indexada. Ya que en vez de hacer el producto cartesiano completo y luego seleccionar la filas que cumplen
la condicin de emparejamiento, para cada fila de una de las tablas busca directamente en la otra tabla las
filas que cumplen la condicin, con lo cual se emparejan slo las filas que luego aparecen en el resultado.

La sintaxis es la siguiente:

S Se el le ec ct t * * f fr ro om m t ta ab bl la a1 1 i in nn ne er r j jo oi in n t ta ab bl la a2 2 o on n t ta ab bl la a1 1. .c ca am mp po o1 1= =t ta ab bl la a1 1. .c ca am mp po o1 1

E El l L LE EF FT T J JO OI IN N y y R RI IG GH HT T J JO OI IN N

LEFT JOIN y RIGHT JOIN son otro tipo de composicin de tablas, tambin denominada composicin
externa. Son una extensin del INNER JOIN. INNER JOIN es una composicin interna ya que todos los
valores de las filas del resultado son valores que estn en las tablas que se combinan. Con una composicin
interna slo se obtienen las filas que tienen al menos una fila de la otra tabla que cumpla la condicin.


E Ej je er rc ci ic ci io os s d de e J JO OI IN N. .

C Ca as so o 1 1
1. Mostrar Nombre del Producto, PrecioUnidad del producto, Nombre de la Categoria, Nombre del
Proveedor y stock de los productos.

S So ol lu uc ci i n n c co on n W Wh he er re e. .


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


66
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
S Se el le ec ct t p pr ro od du uc ct to os s. .n no om mb br re ep pr ro od du uc ct to o, ,p pr ro od du uc ct to os s. .p pr re ec ci io ou un ni id da ad d, ,
c ca at te eg go or r a as s. .n no om mb br re ec ca at te eg go or r a a, , p pr ro ov ve ee ed do or re es s. .n no om mb br re ec co om mp pa a a a, ,c ca an nt ti id da ad dp po or ru un ni id da ad d f fr ro om m p pr ro od du uc ct to os s, ,
c ca at te eg go or r a as s, , p pr ro ov ve ee ed do or re es s w wh he er re e p pr ro od du uc ct to os s. .i id dc ca at te eg go or r a a= =c ca at te eg go or r a as s. .i id dc ca at te eg go or r a a a an nd d
p pr ro od du uc ct to os s. .i id dp pr ro ov ve ee ed do or r= =p pr ro ov ve ee ed do or re es s. .i id dp pr ro ov ve ee ed do or r

Ejecutar Script.




S So ol lu uc ci i n n c co on n J Jo oi in n. .

S Se el le ec ct t p pr ro od du uc ct to os s. .n no om mb br re ep pr ro od du uc ct to o, ,p pr ro od du uc ct to os s. .p pr re ec ci io ou un ni id da ad d, ,
C Ca at te eg go or r a as s. .n no om mb br re ec ca at te eg go or r a a, ,p pr ro ov ve ee ed do or re es s. .n no om mb br re ec co om mp pa a a a, ,c ca an nt ti id da ad dp po or ru un ni id da ad d f fr ro om m
P Pr ro od du uc ct to os s i in nn ne er r j jo oi in n c ca at te eg go or r a as s o on n p pr ro od du uc ct to os s. .i id dc ca at te eg go or r a a= =c ca at te eg go or r a as s. .i id dc ca at te eg go or r a a
I In nn ne er r j jo oi in n p pr ro ov ve ee ed do or re es s o on n p pr ro od du uc ct to os s. .i id dp pr ro ov ve ee ed do or r= =p pr ro ov ve ee ed do or re es s. .i id dp pr ro ov ve ee ed do or r

Ejecutar Script.




C Ca as so o 2 2

1. Mostrar los pedidos con los siguientes datos idpedido, fechapedido, nombre del cliente, el nombre
del empleado y el cargo de pedido.

S Se el le ec ct t p pe ed di id do os s. .i id dp pe ed di id do o, ,p pe ed di id do os s. .f fe ec ch ha ap pe ed di id do o, ,c cl li ie en nt te es s. .n no om mb br re ec co om mp pa a a a, ,
E Em mp pl le ea ad do os s. .a ap pe el ll li id do os s+ + ' '' ' + + e em mp pl le ea ad do os s. .n no om mb br re e, ,p pe ed di id do os s. .c ca ar rg go o f fr ro om m p pe ed di id do os s i in nn ne er r j jo oi in n c cl li ie en nt te es s

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


67
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
O On n p pe ed di id do os s. .i id dc cl li ie en nt te e= =c cl li ie en nt te es s. .i id dc cl li ie en nt te e i in nn ne er r j jo oi in n e em mp pl le ea ad do os s o on n
p pe ed di id do os s. .i id de em mp pl le ea ad do o= =e em mp pl le ea ad do os s. .i id de em mp pl le ea ad do o

Ejecutar Script.


C Ca as so o 3 3

1. Mostrar la cantidad de productos por categora.

S Se el le ec ct t C Ca at te eg go or r a as s. .I Id dC Ca at te eg go or r a a, , C Ca at te eg go or r a as s. .N No om mb br re eC Ca at te eg go or r a a, , [ [T To ot ta al l d de e P Pr ro od du uc ct to o] ]= =s su um m
( (U Un ni id da ad de es sE En nE Ex xi is st te en nc ci ia a) ) f fr ro om m C Ca at te eg go or r a as s i in nn ne er r j jo oi in n P Pr ro od du uc ct to os s o on n
C Ca at te eg go or r a as s. .I Id dC Ca at te eg go or r a a= =p pr ro od du uc ct to os s. .I Id dC Ca at te eg go or r a a G Gr ro ou up p b by y C Ca at te eg go or r a as s. .I Id dC Ca at te eg go or r a a, ,
C Ca at te eg go or r a as s. .N No om mb br re eC Ca at te eg go or r a a
Ejecutar Script.


C Ca as so o 4 4

1. Calcular cuantas ventas tiene cada uno de los vendedores.

S Se el le ec ct t e em mp pl le ea ad do os s. .I Id dE Em mp pl le ea ad do o, , e em mp pl le ea ad do os s. .N No om mb br re e, , e em mp pl le ea ad do os s. .A Ap pe el ll li id do os s, , [ [T To ot ta al l d de e v ve en nt ta as s] ]= =c co ou un nt t
( (p pe ed di id do os s. .I Id dP Pe ed di id do o) ) f fr ro om m e em mp pl le ea ad do os s I In nn ne er r j jo oi in n P Pe ed di id do os s o on n e em mp pl le ea ad do os s. .I Id dE Em mp pl le ea ad do o= =p pe ed di id do os s. .I Id dE Em mp pl le ea ad do o
G Gr ro ou up p b by y e em mp pl le ea ad do os s. .I Id dE Em mp pl le ea ad do o, , e em mp pl le ea ad do os s. .N No om mb br re e, , e em mp pl le ea ad do os s. .A Ap pe el ll li id do os s
Ejecutar Script.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


68
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
C Ca as so o 5 5

1. Mostrar el pedidos completo con el idpedido='10248'.

S Se el le ec ct t p pe ed di id do os s. .I Id dP Pe ed di id do o, , p pe ed di id do os s. .I Id dC Cl li ie en nt te e, ,T To ot ta al l= =s su um m ( ([ [d de et ta al ll le es s d de e p pe ed di id do os s] ]. .P Pr re ec ci io ou un ni id da ad d* *[ [d de et ta al ll le es s d de e
p pe ed di id do os s] ]. .C Ca an nt ti id da ad d) ) F Fr ro om m [ [d de et ta al ll le es s d de e p pe ed di id do os s] ] i in nn ne er r j jo oi in n p pe ed di id do os s o on n [ [D De et ta al ll le es s d de e
p pe ed di id do os s] ]. .I Id dP Pe ed di id do o= =p pe ed di id do os s. .I Id dP Pe ed di id do o w wh he er re e p pe ed di id do os s. .I Id dP Pe ed di id do o= =' '1 10 02 24 48 8' ' G Gr ro ou up p b by y p pe ed di id do os s. .I Id dP Pe ed di id do o, ,
p pe ed di id do os s. .I Id dC Cl li ie en nt te e
Ejecutar Script.

C Ca as so o 6 6

1. Mostrar de la tabla pedidos y detalle de pedidos el total de cada compra realizada de cada uno de
los pedidos.

S Se el le ec ct t d di is st ti in nc ct t p pe ed di id do os s. .I Id dP Pe ed di id do o, , p pe ed di id do os s. .I Id dC Cl li ie en nt te e, , T To ot ta al l= =s su um m ( ([ [d de et ta al ll le es s d de e
p pe ed di id do os s] ]. .P Pr re ec ci io ou un ni id da ad d* *[ [d de et ta al ll le es s d de e p pe ed di id do os s] ]. .C Ca an nt ti id da ad d) ) F Fr ro om m [ [d de et ta al ll le es s d de e p pe ed di id do os s] ] i in nn ne er r j jo oi in n p pe ed di id do os s o on n
[ [d de et ta al ll le es s d de e p pe ed di id do os s] ]. .I Id dP Pe ed di id do o= =p pe ed di id do os s. . I Id dP Pe ed di id do o G Gr ro ou up p b by y p pe ed di id do os s. .I Id dP Pe ed di id do o, , p pe ed di id do os s. .I Id dC Cl li ie en nt te e o or rd de er r b by y
p pe ed di id do os s. . I Id dP Pe ed di id do o
Ejecutar Script.


O OP PE ER RA AD DO OR R U UN NI IO ON N

Es un operador que combina un conjunto de resultados, por ejemplo, una sentencia SELECT con OTRA.
C Ca as so o 7 7
1. Mostrar los 5 primeros proveedores seguido de los 5 primeros pedidos en una misma consulta.
S Se el le ec ct t t to op p 5 5 I Id dP Pr ro ov ve ee ed do or r, , N No om mb br re eC Co om mp pa a a a, , C C d dP Po os st ta al l f fr ro om m p pr ro ov ve ee ed do or re es s u un ni io on n s se el le ec ct t t to op p 5 5 I Id dP Pe ed di id do o, ,
I Id dC Cl li ie en nt te e, , D De es st ti in na at ta ar ri io o f fr ro om m p pe ed di id do os s
Ejecutar Script.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


69
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8

Recomendaciones a la hora de usar las combinaciones:
Combinar tablas en funcin de claves principales y externas
Limite el nmero de tablas de las combinaciones.

S SU UB BC CO ON NS SU UL LT TA AS S
Es una SELECT anidada en una instruccin INSERT, DELETE, SELECT o UPDATE.
C Ca as so o 8 8
1. Necesitamos conocer el precio promedio de todos los productos. La siguiente consulta nos la
entrega.

S Se el le ec ct t a av vg g ( (P Pr re ec ci io ou un ni id da ad d) ) f fr ro om m p pr ro od du uc ct to os s
Ejecutar Script.


Pero si en este caso le agregamos que la tabla nos muestre todos los productos que sean mayores al precio
promedio.
S Se el le ec ct t I Id dP Pr ro od du uc ct to o, , N No om mb br re eP Pr ro od du uc ct to o, , P Pr re ec ci io oU Un ni id da ad d f fr ro om m p pr ro od du uc ct to os s w wh he er re e P Pr re ec ci io oU Un ni id da ad d > > ( (s se el le ec ct t a av vg g
( (P Pr re ec ci io ou un ni id da ad d) ) f fr ro om m p pr ro od du uc ct to os s) ) o or rd de er r b by y I Id dP Pr ro od du uc ct to o
Ejecutar Script.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


70
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
C Ca as so o 9 9
1. Los productos que se registran salida del almacn, son aquellos cuyo cdigo de producto no figura
en la tabla [detalle de pedidos].

S Se el le ec ct t I Id dP Pr ro od du uc ct to o, , N No om mb br re ep pr ro od du uc ct to o f fr ro om m p pr ro od du uc ct to os s w wh he er re e I Id dP Pr ro od du uc ct to o i in n ( (s se el le ec ct t I Id dP Pr ro od du uc ct to o f fr ro om m [ [d de et ta al ll le es s
d de e p pe ed di id do os s] ]) )
Ejecutar Script.

Para correlacionar datos:

- Expresin dinmica que cambia en cada fila de una consulta externa
- Es una combinacin entre la subconsulta y la fila de la consulta externa.
- Dividen consultas complejas con dos o ms consultas simples relacionadas.

S Su ub b c co on ns su ul lt ta a c co or rr re el la ac ci io on na ad da a

C Ca as so o 1 10 0

1. Necesitamos conocer el precio promedio de todos los productos de la Categora 2.
S Se el le ec ct t I Id dP Pr ro od du uc ct to o, , N No om mb br re eP Pr ro od du uc ct to o, , P Pr re ec ci io oU Un ni id da ad d f fr ro om m p pr ro od du uc ct to os s W Wh he er re e P Pr re ec ci io ou un ni id da ad d > > ( (s se el le ec ct t a av vg g
( (P Pr re ec ci io ou un ni id da ad d) ) F Fr ro om m p pr ro od du uc ct to os s) ) a an nd d I Id dC Ca at te eg go or r a a = =2 2 o or rd de er r b by y I Id dP Pr ro od du uc ct to o
Ejecutar Script.






I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


71
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
E Ej je er rc ci ic ci io os s d de e S SU UB BC CO ON NS SU UL LT TA AS S
C Ca as so o 1 10 0
1. Mostrar el pedido y la fecha ms antiguo de la tabla pedidos y detalle de pedidos.

S Se el le ec ct t p pe ed di id do os s. .I Id dP Pe ed di id do o, , p pe ed di id do os s. .I Id dC Cl li ie en nt te e, , p pe ed di id do os s. .I Id dE Em mp pl le ea ad do o, , p pe ed di id do os s. .F Fe ec ch ha aP Pe ed di id do o, , [ [d de et ta al ll le es s d de e
p pe ed di id do os s] ]. .I Id dP Pr ro od du uc ct to o, ,[ [d de et ta al ll le es s d de e p pe ed di id do os s] ]. .P Pr re ec ci io ou un ni id da ad d, ,[ [d de et ta al ll le es s d de e p pe ed di id do os s] ]. .C Ca an nt ti id da ad d f fr ro om m p pe ed di id do os s I In nn ne er r
j jo oi in n [ [d de et ta al ll le es s d de e p pe ed di id do os s] ] o on n [ [d de et ta al ll le es s d de e p pe ed di id do os s] ]. .I Id dP Pe ed di id do o= =p pe ed di id do os s. . I Id dP Pe ed di id do o w wh he er re e p pe ed di id do os s. .
F Fe ec ch ha aP Pe ed di id do o = = ( (s se el le ec ct t m mi in n ( (F Fe ec ch ha aP Pe ed di id do o) ) f fr ro om m p pe ed di id do os s) )
Ejecutar Script.

C Ca as so o 1 11 1
1. Queremos saber los pedidos vendidos en la fecha mnima de las compras realizadas por el cliente
ALFKI.

S Se el le ec ct t p pe ed di id do os s. .I Id dP Pe ed di id do o, , p pe ed di id do os s. .I Id dC Cl li ie en nt te e, , p pe ed di id do os s. .I Id dE Em mp pl le ea ad do o, , p pe ed di id do os s. .F Fe ec ch ha aP Pe ed di id do o, , [ [D De et ta al ll le es s d de e
p pe ed di id do os s] ]. .I Id dP Pr ro od du uc ct to o, , [ [d de et ta al ll le es s d de e p pe ed di id do os s] ]. .P Pr re ec ci io ou un ni id da ad d, , [ [D De et ta al ll le es s d de e p pe ed di id do os s] ]. .C Ca an nt ti id da ad d f fr ro om m p pe ed di id do os s
I In nn ne er r j jo oi in n [ [d de et ta al ll le es s d de e p pe ed di id do os s] ] o on n [ [d de et ta al ll le es s d de e p pe ed di id do os s] ]. .I Id dP Pe ed di id do o= =p pe ed di id do os s. . I Id dP Pe ed di id do o W Wh he er re e p pe ed di id do os s. .
F Fe ec ch ha aP Pe ed di id do o = = ( (s se el le ec ct t m mi in n ( (F Fe ec ch ha aP Pe ed di id do o) ) f fr ro om m p pe ed di id do os s w wh he er re e I Id dC Cl li ie en nt te e= =' 'A AL LF FK KI I' ') )
Ejecutar Script.









I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


72
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
D DI IA AG GR RA AM MA A D DE E L LA A T TA AB BL LA A P PU UB BS S


E EJ JE ER RC CI IC CI IO OS S C CO ON N C CO OM MB BI IN NA AC CI IO ON NE ES S I IN NT TE ER RN NA AS S Y Y E EX XT TE ER RN NA AS S
C Ca as so o 1 12 2
1. Realizar una consulta que muestre los nombres de los autores y editores ubicados en la misma
ciudad
SOLUCION:
S Se el le ec ct t a a. .a au u_ _f fn na am me e a as s [ [N NO OM MB BR RE E] ], ,a a. .a au u_ _l ln na am me e a as s [ [A AP PE EL LL LI ID DO O] ] , ,p p. .p pu ub b_ _n na am me e a as s [ [E ED DI IT TO OR R] ] F Fr ro om m a au ut th ho or rs s a as s a a
i in nn ne er r j jo oi in n p pu ub bl li is sh he er rs s a as s p p o on n a a. .c ci it ty y = = p p. .c ci it ty y
Ejecutar Script.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


73
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
C Ca as so o 1 13 3
1. Obtener todos los nombres y editores de todos los libros cuyos anticipos pagados son superiores a
7500.

SOLUCION:
S Se el le ec ct t t t. .t ti it tl le e a as s [ [T TI IT TU UL LO O] ] , ,p p. .p pu ub b_ _n na am me e a as s [ [E ED DI IT TO OR R] ] , ,t t. .a ad dv va an nc ce e a as s [ [A AN NT TI IC CI IP PO O] ] F Fr ro om m t ti it tl le es s a as s t t i in nn ne er r j jo oi in n
p pu ub bl li is sh he er rs s a as s p p o on n t t. .p pu ub b_ _i id d= =p p. .p pu ub b_ _i id d w wh he er re e t t. .a ad dv va an nc ce e> >7 75 50 00 0
Ejecutar Script.

C Ca as so o 1 14 4
1. Seleccionar todos los ttulos, nombre y apellidos del autor de todos los libros de cocina tradicional.

SOLUCION:
S Se el le ec ct t a a. .a au u_ _l ln na am me e a as s [ [N NO OM MB BR RE E] ] , ,a a. .a au u_ _f fn na am me e a as s [ [A AP PE EL LL LI ID DO O] ] , ,t t. .t ti it tl le e a as s [ [T TI IT TU UL LO O] ] F Fr ro om m a au ut th ho or rs s a as s a a i in nn ne er r j jo oi in n
t ti it tl le ea au ut th ho or r a as s t ta a o on n a a. .a au u_ _i id d= =t ta a. .a au u_ _i id d I In nn ne er r j jo oi in n t ti it tl le es s a as s t t o on n t ta a. .t ti it tl le e_ _i id d= =t t. .t ti it tl le e_ _i id d w wh he er re e t t. .t ty yp pe e= = ' 't tr ra ad d_ _c co oo ok k' '
Ejecutar Script.

C Ca as so o 1 15 5
1. Seleccione nombre, apellido de los autores y el nombre de la editorial de todos aquellos escritores
cuya ciudad sea la misma que la de la editorial. Pero en la consulta tambin se incluirn los dems
autores de la tabla authors.

SOLUCION:
S Se el le ec ct t a a. .a au u_ _l ln na am me e a as s [ [N NO OM MB BR RE E] ], , a a. .a au u_ _f fn na am me e a as s [ [A AP PE EL LL LI ID DO O] ], , p p. .p pu ub b_ _n na am me e a as s [ [E ED DI IT TO OR R] ] F Fr ro om m a au ut th ho or rs s a as s a a
l le ef ft t j jo oi in n p pu ub bl li is sh he er rs s a as s p p o on n a a. .c ci it ty y= =p p. .c ci it ty y
Ejecutar Script.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


74
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8

C Ca as so o 1 16 6
1. Recuperar los ttulos y el ndice del almacn de todos los libros que vendieron ms de 25 unidades.

SOLUCION:
S Se el le ec ct t s s. .s st to or r_ _i id d a as s [ [A AL LM MA AC CE EN N I ID D] ], ,t t. .t ti it tl le e a as s [ [T TI IT TU UL LO O] ] f fr ro om m t ti it tl le es s a as s t t I In nn ne er r j jo oi in n s sa al le es s a as s s s o on n t t. .t ti it tl le e_ _i id d = =
s s. .t ti it tl le e_ _i id d w wh he er re e s s. .q qt ty y> >2 25 5
Ejecutar Script.

C Ca as so o 1 17 7
1. Modificacin al ejercicio anterior: incluir tambin los ttulos de aquellos libros que no superaron las
25 unidades en sus ventas.
SOLUCION:
S Se el le ec ct t s s. .s st to or r_ _i id d a as s [ [A AL LM MA AC CE EN N I ID D] ], ,t t. .t ti it tl le e a as s [ [T TI IT TU UL LO O] ] f fr ro om m t ti it tl le es s a as s t t L Le ef ft t j jo oi in n s sa al le es s a as s s s o on n t t. .t ti it tl le e_ _i id d = =
s s. .t ti it tl le e_ _i id d a an nd d s s. .q qt ty y> >2 25 5
Ejecutar Script.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


75
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
C Ca as so o 1 18 8
1. Realizar una consulta que devuelva el titulo, editorial y autor de cada libro.
SOLUCION:
S Se el le ec ct t t t. .t ti it tl le e a as s [ [T TI IT TU UL LO O] ], ,a a. .a au u_ _l ln na am me e a as s [ [A AU UT TO OR R] ], ,p p. .p pu ub b_ _n na am me e a as s [ [E ED DI IT TO OR R] ] F Fr ro om m p pu ub bl li is sh he er rs s a as s p p i in nn ne er r j jo oi in n
t ti it tl le es s a as s t t o on n t t. .p pu ub b_ _i id d = = p p. .p pu ub b_ _i id d I In nn ne er r j jo oi in n t ti it tl le ea au ut th ho or r a as s t ta a o on n t ta a. .t ti it tl le e_ _i id d = = t t. .t ti it tl le e_ _i id d I In nn ne er r j jo oi in n a au ut th ho or rs s a as s a a
o on n t ta a. .a au u_ _i id d = = a a. .a au u_ _i id d
Ejecutar Script.

L La a c cl la au us su ul la a c co om mp pu ut te e

Esta clausula aade una fila en el conjunto de datos que se est recuperando, se utiliza para realizar
clculos en campos numricos. COMPUTE acta siempre sobre un campo o expresin del conjunto de
resultados y esta expresin debe figurar exactamente igual en la clausula SELECT y siempre se debe
ordenar el resultado por la misma o al menos agrupar el resultado. Esta expresin no puede utilizar ningn
Alias.

C Ca as so o 1 19 9
1. Se desea mostrar todos los registros de la tabla detalles de pedidos, adems mostrar el total de la
compra de cada uno de ellos.
2. Digitar el Siguiente Script.

Select idpedido,cantidadporunidad,nombreproducto,[detalles de pedidos].preciounidad,[detalles de
pedidos].cantidad,
[detalles de pedidos].cantidad*[detalles de pedidos].preciounidad as total from [detalles de pedidos]
inner join productos on [detalles de pedidos].idproducto=productos.idproducto
order by idpedido compute sum([detalles de pedidos].cantidad*[detalles de pedidos].preciounidad) by
idpedido

3. Ejecutar el Script.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


76
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
P PR RO OC CE ED DI IM MI IE EN NT TO OS S P PA AR RA A A AG GR RU UP PA AR R Y Y R RE ES SU UM MI IR R D DA AT TO OS S
R RO OL LL LU UP P

Se usa para presentar resmenes de datos. A de usarse junto con la clausula group by, lo que hace es
realizar un resumen de los campos incluidos en el rollup.
C Ca as so o 2 20 0
1. Se desea mostrar el campo idproducto, idpedido y adems la suma del total de cada pedido.
2. Digitar el siguiente Script.
Select idproducto, idpedido, Sum(preciounidad*cantidad) As Cantidad_Total From [detalles de pedidos]
Group by idproducto, idpedido with Rollup Order by idproducto, idpedido
3. Ejecutar el script.

Este ejemplo suma todas las cantidades, y mediante rollup, muestra una fila con la suma de todas las
cantidades de cada producto, y adems, otra fila con la suma de todas las cantidades de todos los
productos. El resultado de este ejemplo, sera el que muestra la imagen:
C Ca as so o 2 21 1
1. Se desea mostrar el total de la compra de cada pedido realizado.
2. Digitar el siguiente Script.

Select idproducto, idpedido,Sum(preciounidad*cantidad) As Cantidad_Total
From [detalles de pedidos] Group by idproducto, idpedido
with Rollup Order by idproducto, idpedido
3. Ejecutar el script.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


77
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
C CU UB BE E

Al igual que Rollup realiza resmenes de campos agrupados. Pero en este caso muestra un resumen con
cada combinacin posible de los campos agrupados.
C Ca as so o 2 22 2
1. Se desea mostrar el total de la compra de cada pedido realizado.
2. Digitar el siguiente Script.

Select idproducto, idpedido,Sum(preciounidad*cantidad) As Cantidad_Total
From [detalles de pedidos] where idpedido > 10250
Group by idproducto, idpedido with Cube Order by idproducto, idpedido
3. Ejecutar el script.

En este caso como vemos en la imagen, hace un resumen con la suma de la cantidad de cada combinacin
posible entre el idproducto y el idpedido

G GR RO OU UP PI IN NG G

Indica si el resultado de un campo es el que hay en la propia tabla o se ha introducido mediante una
clusula de resumen, es decir, para saber por ejemplo si un Null de una celda es de la propia tabla o ha es
debido a una clausula Cube o Rollup.
C Ca as so o 2 23 3
1. Se desea mostrar el total de la compra de cada pedido realizado, y ademas mostrar en los valores
nulos un cero y si hay algun valor mostrar 1.
2. Digitar el siguiente Script.

Select idproducto, grouping(idproducto), idpedido, grouping(idpedido),
Sum(preciounidad*cantidad) As Cantidad_Total From [detalles de pedidos]
where idpedido > 10250 Group by idproducto, idpedido with Cube Order by idproducto, idpedido

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


78
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
3. Ejecutar el script.


Vemos que por cada grouping que hemos puesto, sale una columna, 1 indica que el Null es creado por la
clausula Cube y 0 indica que es de la tabla.
Ponindole un alias al grouping saldra el nombre de columna que le indiquemos.

C CO OM MP PU UT TE E

Realiza un resumen en una columna aparte con el resultado de la funcin de agregado indicada. Su formato
sera Compute funcin (campo). No se puede utilizar en aplicaciones cliente / servidor, es una clausula
meramente informativa. Tampoco se le pueden poner alias a los resmenes.
C Ca as so o 2 24 4
1. Se desea hacer una consulta que nos muestre el total de las compras realizada y adems mostrar
dicho campo en una celda aparte.
2. Digitar el siguiente Script.
Select idproducto, idpedido, preciounidad From [detalles de pedidos] order by idproducto, idpedido
compute Sum(preciounidad)
3. Ejecutar el script.

Vemos que muestra la columna con la suma total de todas las cantidades.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


79
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
E Ej je er rc ci ic ci io os s d de e R RO OL LL LU UP P, , G GR RO OU UP PI IN NG G y y C CU UB BE E
Ejercicio 1
Realizar una consulta que resuma la cantidad de artculos pedidos por cada ndice de producto y nmero de
pedido. Realizando un clculo acumulativo.



Ejercicio 2
Modificacin al ejercicio anterior: Realizar el mismo resumen pero nicamente para el producto cuyo id es
50.


Ejercicio 3
Realizar un resumen por medio de CUBE y de GROUPING sobre la modificacin del ejercicio anterior de tal
manera que sea posible obtener un resumen por producto y por pedido.



U Us so o d de e P Pr ro oc ce ed di im mi ie en nt to os s A Al lm ma ac ce en na ad do os s y y V Vi is st ta as s
P Pr ro og gr ra am ma ac ci i n n e en n e el l S Se er rv vi id do or r S SQ QL L
V Va ar ri ia ab bl le es s
Definidas en una instruccin D DE EC CL LA AR RE E (Con una sola @ @).
Valores asignados con instruccin S SE ET T o S SE EL LE EC CT T (Con una sola @ @).
mbito g gl lo ob ba al l o l lo oc ca al l.
Sintaxis: DECLARE @VariableLocal TipoDato,...
SET @VariableLocal = expression
SELECT @VariableLocal = Nombre from Empleados WHERE Id = 5
BUCLES
Nivel de instruccin:
Bloques BEGIN......END
Bloques IF.............ELSE

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


80
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
Construcciones WHILE

Sacar Nmeros pares con IF
--IF
declare @n int
set @n = 5
if (@n % 2)= 0
print 'PAR'
else
print 'IMPAR'

--BUCLES
Declare @n int
set @n = 0
while @n < 10
begin
if (@n % 2) = 0
select @n as Numero
set @n = @n + 1
end




I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


81
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
N Ni iv ve el l D De e f fi il la a
Las expresiones a nivel de fila evalan un resultado devuelto por la consulta y dependiendo de los valores
que utilicemos lo sustituyen para mejorar la presentacin de los datos.
CASE expression
WHEN valor1 THEN resultado1
ELSE resultadoN
END
CASE
WHEN verdadero THEN resultado1
ELSE resultado2
END
W WH HI IL LE E
Permite establecer una condicin para la ejecucin repetida de una instruccin O bloque de instrucciones
SQL.las instrucciones se ejecutan repetidamente mientras la condicin especificada se cumple.las palabras
claves break y contine permiten controlar el flujo de ejecucin de un bucle while.
W Wh hi il le e e ex xp pr re es si i n nB Bo oo ol le ea an na a
I In ns st tr ru uc cc ci i n n S SQ QL L B Bl lo oq qu ue ed de eI In ns st tr ru uc cc ci io on nS SQ QL L
[ [B BR RE EA AK K] ]
I In ns st tr ru uc cc ci i n n S SQ QL L B Bl lo oq qu ue ed de eI In ns st tr ru uc cc ci io on nS SQ QL L
[ [C CO ON NT TI IN NU UE E] ]
I In ns st tr ru uc cc ci i n n S SQ QL L B Bl lo oq qu ue ed de eI In ns st tr ru uc cc ci io on nS SQ QL L
ExpresinBooleana.- Establece la condicin a evaluar durante la ejecucin del bucle While.
BREAK.-Interrumpe la ejecucin del bucle haciendo que el control se transfiera fuera de l.
CONTINUE.-Fuerza la repeticin del bucle ignorado cualquier instruccin que se encuentra despus de
CONTINUE.
C Ca as so o 1 1
En el siguiente ejemplo muestra los nmeros del 1 al 99 indicando si es par o impar.

D DE EC CL LA AR RE E @ @N N I IN NT T
S SE ET T @ @N N = = 1 1

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


82
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
W WH HI IL LE E ( (@ @N N< <1 10 00 0) )
B BE EG GI IN N
S SE EL LE EC CT T @ @N N A AS S ' 'N NU UM ME ER RO O' ', , C CA AS SE E W WH HE EN N ( (@ @N N % % 2 2) ) = = 1 1 T TH HE EN N ' 'I IM MP PA AR R' '
E EL LS SE E ' 'P PA AR R' ' E EN ND D A AS S ' 'T TI IP PO O' '
S SE ET T @ @N N = = @ @N N + + 1 1
E EN ND D

C Ca as so o 2 2
Esto se puede utilizar tambin para inicializar variables. Es el mismo caso pero utilizando el CASE
para inicializar una variable.

D DE EC CL LA AR RE E @ @N N I IN NT T, ,@ @T TI IP PO O C CH HA AR R ( (1 10 0) ), , @ @V VA AL LO OR R C CH HA AR R ( (1 11 1) )
S SE ET T @ @N N = = 1 1
W WH HI IL LE E ( (@ @N N < < 1 10 00 0) )
B BE EG GI IN N
I IF F ( (@ @N N < < 5 50 0) )
S SE ET T @ @V VA AL LO OR R = = ' 'M ME EN NO OR R D DE E 5 50 0' '
E EL LS SE E
S SE ET T @ @V VA AL LO OR R = = ' 'M MA AY YO OR R D DE E 5 50 0' '
S SE ET T @ @T TI IP PO O = = C CA AS SE E ( (@ @N N % % 2 2) )
W WH HE EN N 1 1 T TH HE EN N ' 'I IM MP PA AR R' '
E EL LS SE E ' 'P PA AR R' '
E EN ND D
S SE EL LE EC CT T @ @N N A AS S ' 'N NU UM ME ER RO O' ', , @ @T TI IP PO O A AS S ' 'T TI IP PO O' ', , @ @V VA AL LO OR R A AS S V VA AL LO OR R
S SE ET T @ @N N = = @ @N N + + 1 1
E EN ND D

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


83
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8


C CO ON NV VE ER RT T se usa para convertir el numero a una cadena de dos caracteres y lo concatenamos con @tipo.
C CA AS ST T realiza lo mismo que CONVERT
D DE EC CL LA AR RE E @ @N N I IN NT T, ,@ @T TI IP PO O C CH HA AR R ( (1 10 0) )
S SE ET T @ @N N = = 5 5
I IF F ( (@ @N N B BE ET TW WE EE EN N 4 4 A AN ND D 6 6) )
B BE EG GI IN N
W WH HI IL LE E ( (@ @N N > > 0 0) )
B BE EG GI IN N
S SE ET T @ @T TI IP PO O = = C CA AS SE E ( (@ @N N % % 2 2) )
W WH HE EN N 1 1 T TH HE EN N ' 'I IM MP PA AR R' '
E EL LS SE E ' 'P PA AR R' '
E EN ND D
S SE EL LE EC CT T @ @N N A AS S ' 'N NU UM ME ER RO O' ', , @ @T TI IP PO O A AS S ' 'T TI IP PO O' '
P PR RI IN NT T C CO ON NV VE ER RT T ( (C CH HA AR R( (2 2) ), ,@ @N N) ) + + @ @T TI IP PO O
P PR RI IN NT T C CA AS ST T ( (@ @N N A AS S C CH HA AR R ( (2 2) )) ) + + @ @T TI IP PO O
S SE ET T @ @N N = = @ @N N - - 1 1
E EN ND D
E EN ND D


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


84
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8

Ponemos C Ca as st t y C Co on nv ve er rt t para poder concatenar un valor de tipo I In nt t con un valor de tipo C Ch ha ar r, sino
intentara sumarlos y dara error.

E EJ JE ER RC CI IC CI IO OS S C CO ON N S SE EN NT TE EN NC CI IA AS S
C Ca as so o 3 3
Queremos saber a qu proveedor eliminaramos si quitsemos el pas de Brasil y cuales se
mantendran. Mostrar un informe con el apellido, salario, oficio y fechas de alta en la empresa.

s se el le ec ct t I Id dP Pr ro ov ve ee ed do or r, ,N No om mb br re eC Co om mp pa a a a, ,N No om mb br re eC Co on nt ta ac ct to o, ,P Pa a s s, ,' 'A Ac cc ci io on n' '= =c ca as se e
w wh he en n P Pa a s s< <> >' 'b br ra as si il l' ' t th he en n ' 'S Se e M Ma an nt ti ie en ne e' ' e el ls se e ' 'P Pr ro ov ve ee ed do or r d de e b ba aj ja a' ' e en nd d f fr ro om m P Pr ro ov ve ee ed do or re es s

C Ca as so o 4 4
El siguiente ejemplo determina que da de la semana es hoy.
s se el le ec ct t c ca as se e d da at te ep pa ar rt t( (w we ee ek kD Da ay y, ,g ge et td da at te e( () )) )
w wh he en n 1 1 t th he en n ' 'L Lu un ne es s' '
w wh he en n 2 2 t th he en n ' 'M Ma ar rt te es s' ' w wh he en n 3 3 t th he en n ' 'M Mi ie er rc co ol le es s' '

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


85
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
w wh he en n 4 4 t th he en n ' 'J Ju ue ev ve es s' ' w wh he en n 5 5 t th he en n ' 'V Vi ie er rn ne es s' '
w wh he en n 6 6 t th he en n ' 'S Sa ab ba ad do o' '
e el ls se e ' 'D Do om mi in ng go o' ' e en nd d a as s ' ' Q Qu ue e d di ia a e es s h ho oy y? ?' '

C Ca as so o 5 5
Queremos saber el nombre de cada uno de las categoras de la tabla productos.

s se el le ec ct t I Id dP Pr ro od du uc ct to o, ,N No om mb br re eP Pr ro od du uc ct to o, ,C Ca an nt ti id da ad dP Po or rU Un ni id da ad d, ,
' 'N No om mb br re e d de e C Ca at te eg go or ri ia a' '= = c ca as se e w wh he en n I Id dC Ca at te eg go or r a a= =' '1 1' ' t th he en n ' 'B Be eb bi id da as s' ' w wh he en n I Id dC Ca at te eg go or r a a= =' '2 2' ' t th he en n ' 'C Co on nd di im me en nt to os s' '
w wh he en n I Id dC Ca at te eg go or r a a= =' '3 3' ' t th he en n ' 'R Re ep po os st te er ri ia a' ' w wh he en n I Id dC Ca at te eg go or r a a= =' '4 4' ' t th he en n ' 'L La ac ct te eo os s' ' w wh he en n I Id dC Ca at te eg go or r a a= =' '5 5' ' t th he en n
' 'G Gr ra an no os s/ /C Ce er re ea al le es s' ' w wh he en n I Id dC Ca at te eg go or r a a= =' '6 6' ' t th he en n ' 'C Ca ar rn ne es s' ' w wh he en n I Id dC Ca at te eg go or r a a= =' '7 7' ' t th he en n ' 'F Fr ru ut ta as s/ /V Ve er rd du ur ra as s' '
w wh he en n I Id dC Ca at te eg go or r a a= =' '8 8' ' t th he en n ' 'P Pe es sc ca ad do o/ /M Ma ar ri is sc co o' ' e en nd d f fr ro om m p pr ro od du uc ct to os s

C Ca as so o 6 6
De la tabla clientes, se sabe que de la ciudad de Londres abra cambio de localidad y del resto no
abra.

s se el le ec ct t N No om mb br re eC Co om mp pa a a a, ,N No om mb br re eC Co on nt ta ac ct to o, ,C Ci iu ud da ad d, ,' 'C Ca am mb bi ia ar r' '= =c ca as se e w wh he en n C Ci iu ud da ad d= =' 'l lo on nd dr re es s' ' t th he en n ' 'C Ca am mb bi io o d de e
L Lo oc ca al li id da ad d' ' e el ls se e ' 'N No o h ha ay y C Ca am mb bi io o' ' e en nd d f fr ro om m c cl li ie en nt te es s


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


86
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
C Ca as so o 7 7
De la tabla productos hacer un comentario respectivo al stock actual de los productos.

S Se el le ec ct t I Id dP Pr ro od du uc ct to o, ,N No om mb br re eP Pr ro od du uc ct to o, ,C Ca an nt ti id da ad dP Po or rU Un ni id da ad d, , ' 'E Es st ta ad do o d de e S St to oc ck k' '= =c ca as se e w wh he en n
U Un ni id da ad de es sE En nE Ex xi is st te en nc ci ia a< <1 1 t th he en n ' 'U Ur rg ge en nt te e R Re ep po on ne er r M Me er rc ca ad de er ri ia a' ' w wh he en n U Un ni id da ad de es sE En nE Ex xi is st te en nc ci ia a < < 1 11 1 t th he en n
' 'C Co om mp pr ra ar r' ' e el ls se e ' 'S St to oc ck k O Ok k' ' e en nd d f fr ro om m p pr ro od du uc ct to os s

C Ca as so o 8 8
Si deseamos obtener los ttulos almacenados cuando stos superen las 10 unidades, y el nmero de
ellos cuando no lo superen.
I IF F ( (S SE EL LE EC CT T c co ou un nt t( (* *) ) F FR RO OM M P Pr ro od du uc ct to os s) ) > > 1 10 0
B BE EG GI IN N
S SE EL LE EC CT T N No om mb br re eP Pr ro od du uc ct to o F FR RO OM M P Pr ro od du uc ct to os s
E EN ND D
E EL LS SE E
B BE EG GI IN N
S SE EL LE EC CT T c co ou un nt t( (* *) ) F FR RO OM M P Pr ro od du uc ct to os s E EN ND D

C Ca as so o 9 9
si el promedio de precio es menor de 30 $, el bucle WHILE dobla los precios y, a continuacin,
selecciona el precio mximo. Si el precio mximo es menor o igual que 50 $, el bucle WHILE se
reinicia y dobla los precios de nuevo. Este bucle contina la duplicacin de precios hasta que el
precio mximo sea mayor que 50 $ y, a continuacin, sale del bucle WHILE e imprime un mensaje.
W WH HI IL LE E ( (S SE EL LE EC CT T A AV VG G( (P Pr re ec ci io oU Un ni id da ad d) ) F FR RO OM M P Pr ro od du uc ct to os s) ) < < $ $3 30 0
B BE EG GI IN N

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


87
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
U UP PD DA AT TE E P Pr ro od du uc ct to os s S SE ET T P Pr re ec ci io oU Un ni id da ad d = = P Pr re ec ci io oU Un ni id da ad d * * 2 2 S SE EL LE EC CT T M MA AX X( (P Pr re ec ci io oU Un ni id da ad d) ) F FR RO OM M P Pr ro od du uc ct to os s
I IF F ( (S SE EL LE EC CT T M MA AX X( (P Pr re ec ci io oU Un ni id da ad d) ) F FR RO OM M P Pr ro od du uc ct to os s) ) > > $ $5 50 0 B BR RE EA AK K
E EL LS SE E C CO ON NT TI IN NU UE E E EN ND D P PR RI IN NT T ' '! !! !! !R Re eg gi is st tr ro os s a ac ct tu ua al li iz za ad do os s c co on n e ex xi it to o! !! !! !' '

P PR RO OC CE ED DI IM MI IE EN NT TO OS S A AL LM MA AC CE EN NA AD DO OS S

Los procedimientos almacenados son conjuntos de sentencias en leguaje Transact SQL que pueden
almacenarse en el propio servidor.

Los procedimientos almacenados de SQL Server, son ms potentes, porque permiten almacenar funciones y
procedimientos compuestos por varias instrucciones, introducir saltos, bucles, etc. Tambin se pueden
compilar procedimiento escritos en lenguaje C, para ampliar su potencia modularmente.

Por ejemplo, podemos crear un procedimiento para recuperar el nombre de un Cliente, cuyo cdigo se
pasa por parmetro.
C CR RE EA AT TE E P PR RO OC CE ED DU UR RE E O Ob bt te en ne er rN No om mb br re e
@ @I ID DC CL LI IE EN NT TE E v va ar rc ch ha ar r( (1 11 1) )
A AS S
S SE EL LE EC CT T N NO OM MB BR RE EC CO OM MP PA A A A F FR RO OM M C CL LI IE EN NT TE ES S W WH HE ER RE E I ID DC CL LI IE EN NT TE E = = @ @I ID DC CL LI IE EN NT TE E
Con esta sentencia, se crea un procedimiento almacenado, de nombre ObtenerNombre, al que se le pasa
un parmetro, llamado @idcliente, de tipo varchar(11), que realiza una consulta para obtener el nombre de
la tabla clientes, cuyo cdigo coincida con el parmetro.

De esta forma, si queremos obtener el nombre del cliente cuyo cdigo sea 'anton', deberemos ejecutar el
procedimiento pasndole como argumento este valor:
Las llamadas a procedimientos almacenados se pueden realizar de las siguientes formas:
Pasando los argumentos en el mismo orden que en el que se han declarado.
Exec ObtenerNombre 'anton' esta sentencia produce la siguiente la salida:

C Ca as so o 1 10 0
Se desea saber el total de productos por categoria.
C Cr re ea at te e P Pr ro oc ce ed du ur re e n nu um mp pr ro od du uc ct to os s
@ @n nc ca at te eg go or ri ia a i in nt t
a as s

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


88
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
s se el le ec ct t c co ou un nt t( (* *) ) a as s [ [N Nu um m d de e P Pr ro od du uc ct to os s] ]
f fr ro om m P Pr ro od du uc ct to os s
w wh he er re e I Id dC Ca at te eg go or r a a = = @ @n nc ca at te eg go or ri ia a

Crea el procedimiento numproductos con el parmetro @ncategoria que es tipo int.
El procedimiento hace una select que realiza grupos por nmero de productos y cuenta cuantos productos
que hay en cada Categora.
E Ex xe ec c n nu um mp pr ro od du uc ct to os s 2 2
Ejecuta el procedimiento introduciendo el valor 2 para el parmetro @ncategoria, con lo que hara la select
sobre la categora 2.

P PR RO OC CE ED DI IM MI IE EN NT TO OS S A AL LM MA AC CE EN NA AD DO OS S C CO ON N P PA AR R M ME ET TR RO OS S C CO ON N V VA AL LO OR RE ES S P PO OR R
D DE EF FE EC CT TO O

Sintaxis:
C Cr re ea at te e P Pr ro oc ce ed du ur re e N No om mb br re e
@ @V Va ar ri ia ab bl le e t ti ip po o = = V Va al lo or r
A As s
I In ns st tr ru uc cc ci io on ne es s
Donde Valor es el valor que le damos por defecto, este valor puede almacenar comodines (como % que
equivale a *).
C Ca as so o 1 11 1
Crea un procedimiento con el parmetro nproveedores y le da por defecto valor 10.
C Cr re ea at te e P Pr ro oc ce ed du ur re e n np pr ro ov ve ee ed do or re es s
@ @i id d i in nt t = = 1 10 0
a as s
s se el le ec ct t * * f fr ro om m p pr ro ov ve ee ed do or re es s w wh he er re e I Id dP Pr ro ov ve ee ed do or r= =@ @i id d
ejecutamos el procedimiento.
E Ex xe ec c n np pr ro ov ve ee ed do or re es s

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


89
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8

C Ca as so o 1 12 2
Crear el Procedimiento con el parmetro nvino y dar por defecto Lista de productos cuyo nombre
contenga la palabra vino
C Cr re ea at te e P Pr ro oc ce ed du ur re e c cp pr ro od du uc ct to o0 02 2
@ @ N Nv vi in no o n nv va ar rc ch ha ar r( (2 20 0) ) = = ' 'v vi in no o% %' '
a as s
S Se el le ec ct t * * f fr ro om m p pr ro od du uc ct to os s w wh he er re e n no om mb br re ep pr ro od du uc ct to o l li ik ke e @ @n nv vi in no o
Luego procedemos a ejecutar la aplicacin.
Exec cproducto02

C Ca as so o 1 13 3
Crear el Procedimiento con el parmetro na y dar por defecto Lista de productos cuya primera
letra empieza con la letra a.
C Cr re ea at te e P Pr ro oc ce ed du ur re e c cp pr ro od du uc ct to o0 03 3
@ @n na a n nv va ar rc ch ha ar r( (2 20 0) ) = = ' '[ [a a] ]% %' '
A As s
S Se el le ec ct t * * f fr ro om m p pr ro od du uc ct to os s w wh he er re e n no om mb br re ep pr ro od du uc ct to o l li ik ke e @ @n na a
Luego procedemos a ejecutar la aplicacin.
E Ex xe ec c c cp pr ro od du uc ct to o0 03 3

C Ca as so o 1 14 4
Crear el Procedimiento con el parmetro nqueso y dar por defecto Lista de productos cuyo nombre
empieza con la palabra Queso.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


90
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
C Cr re ea at te e P Pr ro oc ce ed du ur re e c cp pr ro od du uc ct to o0 04 4
@ @n nq qu ue es so o n nv va ar rc ch ha ar r( (2 20 0) ) = = ' 'q qu ue es so o% %' '
a as s
S Se el le ec ct t * * f fr ro om m p pr ro od du uc ct to os s w wh he er re e n no om mb br re ep pr ro od du uc ct to o l li ik ke e @ @n nq qu ue es so o
Luego procedemos a ejecutar la aplicacin.
E Ex xe ec c c cp pr ro od du uc ct to o0 04 4

C Ca as so o 1 15 5
Crear un Procedimiento y dar Lista de productos cuyo precio se encuentra en el rango que va de 15
a 21 nuevos soles.
C Cr re ea at te e P Pr ro oc ce ed du ur re e c cp pr ro od du uc ct to o0 05 5
@ @p pr re ec ci io o1 1 m mo on ne ey y= = 1 15 5, ,
@ @p pr re ec ci io o2 2 m mo on ne ey y= = 3 32 2
a as s
S Se el le ec ct t * * f fr ro om m p pr ro od du uc ct to os s w wh he er re e p pr re ec ci io ou un ni id da ad d b be et tw we ee en n @ @p pr re ec ci io o1 1 a an nd d @ @p pr re ec ci io o2 2
Luego procedemos a ejecutar la aplicacin.
E Ex xe ec c c cp pr ro od du uc ct to o0 05 5




I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


91
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
C Ca as so o 1 16 6
Crear procedimiento de un mantenimiento a la tabla categora.

P Pr ro oc ce ed di im mi ie en nt to o q qu ue e p pe er rm mi it te e I In ns se er rt ta ar r u un na a n nu ue ev va a C Ca at te eg go or ri ia a
C CR RE EA AT TE E P PR RO OC CE ED DU UR RE E [ [I In ns se er rt ta ar r c ca at te eg go or ri ia a] ]
@ @N No om mb br re eC Ca at te eg go or r a a n nv va ar rc ch ha ar r( (1 15 5) ), ,
@ @D De es sc cr ri ip pc ci i n n n nt te ex xt t
A AS S
i in ns se er rt t i in nt to o C Ca at te eg go or r a as s ( (N No om mb br re eC Ca at te eg go or r a a, ,D De es sc cr ri ip pc ci i n n) ) v va al lu ue es s
( (@ @N No om mb br re eC Ca at te eg go or r a a, ,@ @D De es sc cr ri ip pc ci i n n) )
P Pr ro oc ce ed di im mi ie en nt to o q qu ue e p pe er rm mi it te e E El li im mi in na ar r u un na a C Ca at te eg go or ri ia a
C CR RE EA AT TE E P PR RO OC CE ED DU UR RE E [ [E El li im mi in na ar r c ca at te eg go or ri ia a] ]
@ @i id d i in nt t
A AS S
d de el le et te e f fr ro om m C Ca at te eg go or r a as s w wh he er re e I Id dC Ca at te eg go or r a a= =@ @i id d

P Pr ro oc ce ed di im mi ie en nt to o q qu ue e p pe er rm mi it te e M Mo od di if fi ic ca ar r C Ca at te eg go or ri ia a
C CR RE EA AT TE E P PR RO OC CE ED DU UR RE E [ [M Mo od di if fi ic ca ar r c ca at te eg go or ri ia a] ]
@ @i id d i in nt t, ,
@ @N No om mb br re eC Ca at te eg go or r a a n nv va ar rc ch ha ar r( (1 15 5) ), ,
@ @D De es sc cr ri ip pc ci i n n n nt te ex xt t
A AS S
u up pd da at te e C Ca at te eg go or r a as s s se et t N No om mb br re eC Ca at te eg go or r a a= =@ @N No om mb br re eC Ca at te eg go or r a a, ,D De es sc cr ri ip pc ci i n n= =@ @D De es sc cr ri ip pc ci i n n
w wh he er re e I Id dC Ca at te eg go or r a a= =@ @i id d


D DE EC CL LA AR RA AC CI I N N D DE E V VA AR RI IA AB BL LE ES S E EN N P PR RO OC CE ED DI IM MI IE EN NT TO OS S A AL LM MA AC CE EN NA AD DO OS S

Sintaxis de declaracin
Declare @nombre tipo_dato
Sintaxis de asignacin directa
Set @nombre = valor

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


92
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
Sintaxis de asignacin mediante consulta
Select @nombre = campo from tabla

P PA AR R M ME ET TR RO OS S P PO OR R R RE EF FE ER RE EN NC CI IA A

Si ejecutamos las anteriores sentencias, obtendremos el resultado directamente en la ventana
que tengamos abierta en S SQ QL L S Se er rv ve er r. Pero Que pasa si queremos obtener un parmetro de salida,
como resultado de la ejecucin del procedimiento?.

La solucin para este caso es utilizar la palabra reservada OUTPUT para los argumentos de salida. Si por
ejemplo, queremos obtener el nmero de clientes y el nmero de productos que tenemos en la base de
datos, crearemos el procedimiento almacenado que muestra el Cdigo fuente.
C Ca as so o 1 17 7
Se desea visualizar un listado de la tabla clientes y productos.
C CR RE EA AT TE E P PR RO OC CE ED DU UR RE E n nu um m_ _c cl li ie en nt te es s_ _p pr ro od du uc ct to os s
@ @c cl li ie en nt te es s i in nt t O OU UT TP PU UT T, ,
@ @P Pr ro od du uc ct to os s i in nt t O OU UT TP PU UT T
A AS S
S SE EL LE EC CT T * * F FR RO OM M c cl li ie en nt te es s S SE EL LE EC CT T @ @c cl li ie en nt te es s = = @ @@ @R RO OW WC CO OU UN NT T
S SE EL LE EC CT T * * F FR RO OM M p pr ro od du uc ct to os s S SE EL LE EC CT T @ @p pr ro od du uc ct to os s = = @ @@ @R RO OW WC CO OU UN NT T
R RE ET TU UR RN N ( (0 0) )
Ejecutar el procedmiento almacenado.
d de ec cl la ar re e @ @c cl li ie en nt te es s i in nt t
d de ec cl la ar re e @ @P Pr ro od du uc ct to os s i in nt t
E EX XE EC C n nu um m_ _c cl li ie en nt te es s_ _p pr ro od du uc ct to os s @ @c cl li ie en nt te es s O OU UT TP PU UT T, , @ @P Pr ro od du uc ct to os s O OU UT TP PU UT T




V Va am mo os s a a e es st tu ud di ia ar r e el l a an nt te er ri io or r e ej je em mp pl lo o. .

Bsicamente es similar al anterior. Detrs de la palabra reservada PROCEDURE damos el nombre del
procedimiento almacenado, y a continuacin proporcionamos los parmetros, junto con su tipo (que en
este caso es entero), y diremos sin stos son de salida, en cuyo caso especificamos la palabra reservada
OUTPUT a continuacin.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


93
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
Tras la palabra reservada AS se codifica el cuerpo del procedimiento. Primero contamos todas las filas de la
tabla clientes, realizando un SELECT * FROM clientes. A continuacin devolvemos en el parmetro
@clientes el valor obtenido, utilizando @@ROWCOUNT.

Acto seguido se realiza lo mismo para la tabla Productos. Ntese como la forma de asignar un valor a un
atributo es mediante una sentencia SELECT, igualando el parmetro al valor.

La funcin @@ROWCOUNT devuelve el nmero de filas que se han seleccionado.

Es equivalente a la sentencia que aparece en el Cdigo fuente SELECT COUNT(*) FROM Productos Se
podra sustituir por Cdigo fuente.
C Ca as so o 1 18 8
Se desea saber el total de registros que hay en la tabla clientes y productos.

C CR RE EA AT TE E P PR RO OC CE ED DU UR RE E n nu um m_ _c cl li ie en nt te es s_ _p pr ro od du uc ct to os s0 02 2
@ @c cl li ie en nt te es s i in nt t O OU UT TP PU UT T, ,
@ @p pr ro od du uc ct to os s i in nt t O OU UT TP PU UT T
A AS S
S SE EL LE EC CT T @ @c cl li ie en nt te es s = = ( (S SE EL LE EC CT T C CO OU UN NT T( (* *) ) F FR RO OM M c cl li ie en nt te es s) )
S SE EL LE EC CT T @ @p pr ro od du uc ct to os s= = ( (S SE EL LE EC CT T C CO OU UN NT T( (* *) ) F FR RO OM M P Pr ro od du uc ct to os s) )
R RE ET TU UR RN N ( (0 0) )
Ejecutar el procedmiento almacenado.

- -- -S Se e d de ec cl la ar ra an n 2 2 v va ar ri ia ab bl le es s d de e t ti ip po o i in nt t
D DE EC CL LA AR RE E @ @n nu um m_ _c cl li ie en nt te es s i in nt t D DE EC CL LA AR RE E @ @n nu um m_ _P Pr ro od du uc ct to os s i in nt t
- -- -c ca ad da a u un na a d de e e es sa as s v va ar ri ia ab bl le es s t to om ma a c ca ad da a u un no o d de e l lo os s v va al lo or re es s d de ev vu ue el lt to os s p po or r e el l p pr ro oc ce ed di im mi ie en nt to o
- -- -a al lm ma ac ce en na ad do o
E EX XE EC C n nu um m_ _c cl li ie en nt te es s_ _p pr ro od du uc ct to os s0 02 2 @ @n nu um m_ _c cl li ie en nt te es s O OU UT TP PU UT T, , @ @n nu um m_ _p pr ro od du uc ct to os s O OU UT TP PU UT T
- -- -M Me ed di ia an nt te e u un n s se el le ec ct t s se e m mu ue es st tr ra a e el l t to ot ta al l d de e c ca ad da a u un na a d de e l la as s f fi il la as s
S SE EL LE EC CT T c cl li ie en nt te es s = = @ @n nu um m_ _c cl li ie en nt te es s, , p pr ro od du uc ct to os s = = @ @n nu um m_ _p pr ro od du uc ct to os s


E Ex xp pl li ic ca ac ci io on n d de el l C Co od di ig go o

Para ejecutar el anterior procedimiento, seguiremos los siguientes pasos: Declarar las variables que
vamos a utilizar para llamar al procedimiento. La sintaxis para declarar una variable es utilizar la
palabra reservada DECLARE, seguido del nombre de la variable y el tipo.

D DE EC CL LA AR RE E @ @n nu um m_ _c cl li ie en nt te es s i in nt t D DE EC CL LA AR RE E @ @n nu um m_ _P Pr ro od du uc ct to os s i in nt t

Ejecutar el procedimiento. La sintaxis es utilizar la palabra reservada EXEC, seguida del nombre del
procedimiento, y los parmetros, separados por comas, especificando si son de retorno.

E EX XE EC C n nu um m_ _c cl li ie en nt te es s_ _p pr ro od du uc ct to os s0 02 2 @ @n nu um m_ _c cl li ie en nt te es s O OU UT TP PU UT T, , @ @n nu um m_ _p pr ro od du uc ct to os s O OU UT TP PU UT T

Mostrar los resultados.

S SE EL LE EC CT T c cl li ie en nt te es s = = @ @n nu um m_ _c cl li ie en nt te es s, , p pr ro od du uc ct to os s = = @ @n nu um m_ _p pr ro od du uc ct to os s

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


94
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
C Ca as so o 1 19 9
Este procedimiento permite insertar un registro a la tabla empleados pero antes verifica si existe
algun empleado con el mismo nombre y apellido en ese caso lo rechaza no se toma en cuenta el
campo idempleado porque es autonumerico.
Digitar el siguiente script.

C CR RE EA AT TE E P PR RO OC CE ED DU UR RE E I IN NS SE ER RT TA AE EM MP PL LE EA AD DO O
( ( @ @N NO OM MB BR RE E V VA AR RC CH HA AR R( (5 50 0) ), ,
@ @A AP PE EL LL LI ID DO OS S V VA AR RC CH HA AR R( (5 50 0) ), ,
@ @C CA AR RG GO O V VA AR RC CH HA AR R( (2 25 5) ), ,
@ @F FE EC CH HA AC CO ON NT TR RA AT TA AC CI IO ON N S SM MA AL LL LD DA AT TE ET TI IM ME E, ,
@ @F FE EC CH HA AN NA AC CI IM MI IE EN NT TO O S SM MA AL LL LD DA AT TE ET TI IM ME E, ,
@ @D DI IR RE EC CC CI IO ON N V VA AR RC CH HA AR R( (5 50 0) ), ,
@ @C CI IU UD DA AD D V VA AR RC CH HA AR R( (5 50 0) ), ,
@ @P PA AI IS S V VA AR RC CH HA AR R( (5 50 0) ), ,
@ @F FO ON NO O V VA AR RC CH HA AR R( (7 7) )) )
A AS S
I IF F ( (S SE EL LE EC CT T C CO OU UN NT T( (* *) ) F FR RO OM M E EM MP PL LE EA AD DO OS S W WH HE ER RE E A AP PE EL LL LI ID DO OS S= =@ @A AP PE EL LL LI ID DO OS S A AN ND D N NO OM MB BR RE E= =@ @N NO OM MB BR RE E) )> >0 0
B BE EG GI IN N
P PR RI IN NT T E EL L E EM MP PL LE EA AD DO O C CO ON N E ES SE E N NO OM MB BR RE E Y YA A E EX XI IS ST TE E
E EN ND D
E EL LS SE E
B BE EG GI IN N
I IN NS SE ER RT T I IN NT TO O
E EM MP PL LE EA AD DO OS S( (A AP PE EL LL LI ID DO OS S, ,N NO OM MB BR RE E, ,C CA AR RG GO O, ,F FE EC CH HA AN NA AC CI IM MI IE EN NT TO O, ,F FE EC CH HA AC CO ON NT TR RA AT TA AC CI I N N, ,D DI IR RE EC CC CI IO ON N, ,
C CI IU UD DA AD D, ,P PA A S S, ,F FO ON NO O) )
V VA AL LU UE ES S( (@ @A AP PE EL LL LI ID DO OS S, ,@ @N NO OM MB BR RE E, ,@ @C CA AR RG GO O, ,@ @F FE EC CH HA AN NA AC CI IM MI IE EN NT TO O, ,@ @F FE EC CH HA AC CO ON NT TR RA AT TA AC CI IO ON N, ,@ @D DI IR RE EC CC CI IO ON N, ,
@ @C CI IU UD DA AD D, , @ @P PA AI IS S, ,@ @F FO ON NO O) )
E EN ND D
G GO O

Ejecutar la sentencia e insertar un nuevo empleado.
Insertar algunos registros.

E EX XE EC CU UT TE E I IN NS SE ER RT TA AE EM MP PL LE EA AD DO O ' 'c cu ue ev va a v va al lv ve er rd de e , ,' 'd di ie eg go o' ', ,' 'D DO OC CE EN NT TE E' ', ,' '2 22 2/ /0 09 9/ /2 20 00 05 5' ', ,' '2 27 7/ /0 04 4/ /8 87 7' ', ,' 'l lo os s
o ol li iv vo os s' ', , L LI IM MA A , , P PE ER RU U , ,' '5 54 40 02 29 97 72 2' '



I IM MP PL LE EM ME EN NT TA AC CI I N N D DE E V VI IS ST TA AS S

Las vistas son consultas ya realizadas, pueden ser de una sola tabla o de varias. Muy tiles si por ejemplo
queremos que un usuario solo tenga acceso a unas determinadas columnas de una tabla pero no a otras,
para eso crearemos una vista con las columnas que puede ver. Las vistas tienen la propiedad que si
cambiamos el nombre de las tablas o columnas a las que hace referencia, automticamente se cambian en
esta.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


95
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
C Cr re ea at te e V Vi ie ew w

Crea una vista. Sintaxis:
Create View NombreVista
As
Sentencia SQL
C Ca as so o 1 19 9
Crea una vista llamada Vista cliente que contiene el nombre del cliente, y datos personales del cliente,
fecha de Pedido, y cdigo de Empleado.

C CR RE EA AT TE E V VI IE EW W V Vi is st ta ac cl li ie en nt te e
A As s
s se el le ec ct t c cl li ie en nt te es s. .N No om mb br re eC Co om mp pa a a a, ,c cl li ie en nt te es s. .N No om mb br re eC Co on nt ta ac ct to o, ,
c cl li ie en nt te es s. .C Ca ar rg go oC Co on nt ta ac ct to o, ,c cl li ie en nt te es s. .D Di ir re ec cc ci i n n, ,c cl li ie en nt te es s. .C Ci iu ud da ad d, ,
c cl li ie en nt te es s. .R Re eg gi i n n, ,P Pe ed di id do os s. .I Id dE Em mp pl le ea ad do o, ,P Pe ed di id do os s. .F Fe ec ch ha aP Pe ed di id do o
f fr ro om m c cl li ie en nt te es s I In nn ne er r J Jo oi in n P Pe ed di id do os s o on n
c cl li ie en nt te es s. .I Id dC Cl li ie en nt te e= =P Pe ed di id do os s. .I Id dC Cl li ie en nt te e
Ejecutar la Vista.

S Se el le ec ct t * * f fr ro om m v vi is st ta ac cl li ie en nt te e



C Ca as so o 2 20 0
Crear una vista que nos permita visualizar las ventas realizadas en todo el ao 1994.
D Dr ro op p V Vi ie ew w. .- - Borra una Vista. Sintaxis:

Drop View NombreVista
Ejemplo:


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


96
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
Drop View Vistacliente
S SP P_ _H He el lp pT Te ex xt t

Muestra la consulta que realiza la vista. Sintaxis:

SP_HelpText Vista
Ejemplo
SP_HelpText Vistacliente
S SP P_ _D De ep pe en nd ds s

Muestra las tablas, campos e incluso vistas de las que depende una vista. Sintaxis:
S SP P_ _D De ep pe en nd ds s Vista

Ejemplo:
SP_Depends Vistacliente


C Cr re ea at te e V Vi ie ew w W Wi it th h E En nc cr ry yp pt ti io on n

Crea una Vista encriptado, de forma que si hacemos una consulta con Sp_HelpText o SP_Depends
solo nos devuelve un mensaje indicando que la vista est encriptado.
Sintaxis:
C Cr re ea at te e V Vi ie ew w N No om mb br re eV Vi is st ta a
W Wi it th h E En nc cr ry yp pt ti io on n
A As s
S Se en nt te en nc ci ia as s S SQ QL L

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


97
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
C Ca as so o 2 21 1
Se desea encriptar la siguiente vista.
C Cr re ea at te e V Vi ie ew w e en nc cr ri ip pt ta ac ci io on n
W Wi it th h e en nc cr ry yp pt ti io on n
a as s
s se el le ec ct t t to op p 5 5 I Id dC Cl li ie en nt te e, ,N No om mb br re eC Co om mp pa a a a, ,N No om mb br re eC Co on nt ta ac ct to o f fr ro om m c cl li ie en nt te es s
u un ni io on n
s se el le ec ct t t to op p 5 5 I Id dP Pr ro ov ve ee ed do or r, ,N No om mb br re eC Co om mp pa a a a, ,N No om mb br re eC Co on nt ta ac ct to o f fr ro om m p pr ro ov ve ee ed do or re es s
u un ni io on n
s se el le ec ct t t to op p 5 5 D De es st ti in na at ta ar ri io o, ,D Di ir re ec cc ci i n nD De es st ti in na at ta ar ri io o, ,C Ci iu ud da ad dD De es st ti in na at ta ar ri io o f fr ro om m f fa ac ct tu ur ra as s
Se procede a encriptar la vista.
S Sp p_ _h he el lp pt te ex xt t e en nc cr ri ip pt ta ac ci io on n

C Cr re ea at te e V Vi ie ew w w wi it th h C Ch he ec ck k O Op pt ti io on n

Crea una vista cuyos datos a los que hace referencia, no se pueden modificar o borrar, para que los
resultados de la vista no se vean afectados. Esto es muy prctico en caso de que por ejemplo hagamos una
vista con una consulta que usa where.
Sintaxis:
C Cr re ea at te e V Vi ie ew w N No om mb br re eV Vi is st ta a
A As s
S Se en nt te en nc ci ia a S SQ QL L
W Wi it th h C Ch he ec ck k O Op pt ti io on n
C Ca as so o 2 22 2
Se desea crear una vista que contenga todos los empleados de la ciudad de Londres y que adems
dicha vista no se pueda modificar.
c cr re ea at te e v vi ie ew w v vi is st ta aE Em mp pl le ea ad do os s
a as s

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


98
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
s se el le ec ct t * * f fr ro om m E Em mp pl le ea ad do os s w wh he er re e c ci iu ud da ad d= =' 'L Lo on nd dr re es s' '
W Wi it th h C Ch he ec ck k O Op pt ti io on n
Ejecutamos la vista.

E Ej je er rc ci ic ci io os s d de e P Pr ro oc ce ed di im mi ie en nt to os s a al lm ma ac ce en na ad do os s
1. Disee un algoritmo que lea 3 nmeros y me muestre el menor de los 3.
2. Elaborar un programa que me ingrese 3 nmeros y me muestre el nmero intermedio.
3. El promedio de prcticas de un curso se calcula en base a cuatro prcticas calificadas de las cuales se
elimina la nota menor y se promedian las tres notas ms altas. Disee un algoritmo que determine la
nota eliminada y el promedio de prcticas de un estudiante.
4. Disee un algoritmo que lea tres longitudes y determine si forman o no un tringulo. Si es un
tringulo determine de qu tipo de tringulo se trata entre: equiltero, issceles o escaleno.
Considere que para formar un tringulo se requiere que: "el lado mayor sea menor que la suma de los
otros dos lados".
5. Disee un algoritmo que lea tres nmeros y los imprima de mayor a menor y de menor a mayor.
6. Dado el monto de una compra mostrar y calcular el descuento considerado:
Descuento es el 10% si el monto es mayor a $100.
Descuento es el 2% si el monto es mayor a $50 y menor o igual a $100
No hay descuento si el monto es menor o igual $50
7. Se necesita un sistema que tenga tres opciones, si se selecciona la primera se calcula el permetro de
un cuadrado, si la opcin es la dos se calcula el permetro de un triangulo equiltero, y cuando se elija
la tres se calcula el permetro de un crculo, adems de que mandara un mensaje de error en caso
de presionar cualquier otro nmero.
8. Hacer un programa que permita calcular la media aritmtica de 10 nmeros negativos y que muestre
la media aritmtica en la pantalla.
9. Dado un monto calcular el descuento.
Descuento:
25% si m>=300
20% si 150<=m<300
No hay descuento si m<150
10. A un trabajador le descuentan de su sueldo el 10% si su sueldo es menor o igual a 1000.Por encima
de1000 y hasta 2000 el 5% del adicional y por encima de 2000 el 3 % del adicional.
Calcular el descuento y sueldo neto que recibe el trabajador dado su sueldo.


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


99
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
T Tr ra an ns sa ac cc ci io on ne es s y y F Fu un nc ci io on ne es s e en n S SQ QL L
I In nt tr ro od du uc cc ci i n n
Una transaccin es un conjunto de operaciones que van a ser tratadas como una nica unidad. Estas
transacciones deben cumplir 4 propiedades fundamentales comnmente conocidas como ACID
(atomicidad, coherencia, asilamiento y durabilidad).
Q Qu u e es s a at to om mi ic ci id da ad d? ?


Q Qu u e es s c co oh he er re en nc ci ia a? ?

Q Qu u e es s a as si il la am mi ie en nt to o? ?

Q Qu u e es s d du ur ra ab bi il li id da ad d? ?

La transaccin ms simple en S SQ QL L S Se er rv ve er r es una nica sentencia S SQ QL L. Por ejemplo una sentencia como esta:
UPDATE Productos SET PrecioUnidad=20 WHERE NombreProducto='Chai'
Cuando enviamos esta sentencia al S SQ QL L S Se er rv ve er r se escribe en el fichero de transacciones lo que va a ocurrir y
a continuacin realiza los cambios necesarios en la base de datos. Si hay algn tipo de problema al hacer
esta operacin el S SQ QL L S Se er rv ve er r puede leer en el fichero de transacciones lo que se estaba haciendo y si es
necesario puede devolver la base de datos al estado en el que se encontraba antes de recibir la sentencia.
Por supuesto este tipo de transacciones no requieren de nuestra intervencin puesto que el sistema se
encarga de todo. Sin embargo si hay que realizar varias operaciones y queremos que sean tratadas como
una unidad tenemos que crear esas transacciones de manera explcita.
S Se en nt te en nc ci ia as s p pa ar ra a u un na a t tr ra an ns sa ac cc ci i n n
Como decamos una transaccin es un conjunto de operaciones tratadas como una sola.
Este conjunto de operaciones debe marcarse como transaccin para que todas las operaciones que la
conforman tengan xito o todas fracasen.
La sentencia que se utiliza para indicar el comienzo de una transaccin es 'BEGIN TRAN'. Si alguna de las
operaciones de una transaccin falla hay que deshacer la transaccin en su totalidad para volver al estado
inicial en el que estaba la base de datos antes de empezar. Esto se consigue con la sentencia 'ROLLBACK
TRAN'.
Si todas las operaciones de una transaccin se completan con xito hay que marcar el fin de una
transaccin para que la base de datos vuelva a estar en un estado consistente con la sentencia 'COMMIT
TRAN'.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


100
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
Caso 1
1. Trabajaremos con la base de datos P Po os se ei id d n n en nuestros ejemplos. Vamos a realizar una
transaccin que modifica el precio de dos productos de la base de datos.
U US SE E p po os se ei id do on n
- -- -c cr re ea am mo os s u un n p pr ro oc ce ed di im mi ie en nt to o a al lm ma ac ce en na ad do o q qu ue e n no os s p pe er rm mi it ta a i in ns se er rt ta ar r u un n r re eg gi is st tr ro o e en n l la a t ta ab bl la a
- -- -E Em mp pr re es sa a
c cr re ea at te e p pr ro oc ce ed du ur re e i in ns se er rt ta ar r_ _t tr ra an ns sa ac cc ci io on n
@ @n no om mb br re e n nv va ar rc ch ha ar r( (4 40 0) ), ,
@ @t te el le ef fo on no o n nv va ar rc ch ha ar r( (2 24 4) )
a as s
B BE EG GI IN N T TR RA AN N
- -- -I In ni ic ci ia am mo os s l la a t tr ra an ns sa ac cc ci i n n
i in ns se er rt t i in nt to o e em mp pr re es sa a ( (N No om mb br re eC Co om mp pa a a a, ,T Te el l f fo on no o) ) v va al lu ue es s ( (@ @n no om mb br re e, ,@ @t te el le ef fo on no o) )
i if f @ @@ @e er rr ro or r = =0 0
c co om mm mi it t t tr ra an n
e el ls se e
r ro ol ll lb ba ac ck k t tr ra an n
r re et tu ur rn n @ @@ @i id de en nt ti it ty y
C Co om mo o s se e p pu ue ed de e v ve er r p pa ar ra a cada sentencia que se ejecuta miramos si se ha producido o no un error, y si
detectamos un error ejecutamos el bloque de cdigo que deshace la t tr ra an ns sa ac cc ci i n n.
Hay una interpretacin incorrecta en cuanto al funcionamiento de las transacciones que est bastante
extendida. Mucha gente cree que si tenemos varias sentencias dentro de una transaccin y una de
ellas falla, la transaccin se aborta en su totalidad.
Nada ms lejos de la realidad! Si tenemos dos sentencias dentro de una t tr ra an ns sa ac cc ci i n n.
T Tr ra an ns sa ac cc ci io on ne es s a an ni id da ad da as s
Otra de las posibilidades que nos ofrece el SQL Server es utilizar transacciones anidadas. Esto quiere decir
que podemos tener transacciones dentro de transacciones, es decir, podemos empezar una nueva
transaccin sin haber terminado la anterior.
Asociada a esta idea de anidamiento existe una variable global @@TRANCOUNT que tiene valor 0 si no
existe ningn nivel de anidamiento, 1 si hay una transaccin anidada, 2 si estamos en el segundo nivel de
anidamiento. y as sucesivamente.
La dificultad de trabajar con transacciones anidadas est en el comportamiento que tienen ahora las
sentencias ' 'C CO OM MM MI IT T T TR RA AN N' ' y ' 'R RO OL LL LB BA AC CK K T TR RA AN N' '. .
R RO OL LL LB BA AC CK K T TR RA AN N: Dentro de una transaccin anidada esta sentencia deshace todas las
transacciones internas hasta la instruccin BEGIN TRANSACTION ms externa.
C CO OM MM MI IT T T TR RA AN N: : Dentro de una transaccin anidada esta sentencia nicamente reduce en 1 el valor
de @@TRANCOUNT, pero no "finaliza" ninguna transaccin ni "guarda" los cambios. En el caso en
el que @@TRANCOUNT=1 (cuando estamos en la ltima transaccin) COMMIT TRAN hace que
todas las modificaciones efectuadas sobre los datos desde el inicio de la transaccin sean parte
permanente de la base de datos, libera los recursos mantenidos por la conexin y reduce
@@TRANCOUNT a 0.
Caso 2
1. Crear una tabla insertar algunos registros utilizando transacciones.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


101
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
2. Digitar el siguiente scritp.

C CR RE EA AT TE E T TA AB BL LE E T Te es st t ( (C Co ol lu um mn na a i in nt t) )
G GO O
B BE EG GI IN N T TR RA AN N T Tr ra an nE Ex xt te er rn na a - -- - @ @@ @T TR RA AN NC CO OU UN NT T a ah ho or ra a e es s 1 1
S SE EL LE EC CT T ' 'E El l n ni iv ve el l d de e a an ni id da am mi ie en nt to o e es s' ', , @ @@ @T TR RA AN NC CO OU UN NT T
I IN NS SE ER RT T I IN NT TO O T Te es st t V VA AL LU UE ES S ( (1 1) )
B BE EG GI IN N T TR RA AN N T Tr ra an nI In nt te er rn na a1 1 - -- - @ @@ @T TR RA AN NC CO OU UN NT T a ah ho or ra a e es s 2 2. .
S SE EL LE EC CT T ' 'E El l n ni iv ve el l d de e a an ni id da am mi ie en nt to o e es s' ', , @ @@ @T TR RA AN NC CO OU UN NT T
I IN NS SE ER RT T I IN NT TO O T Te es st t V VA AL LU UE ES S ( (2 2) )
B BE EG GI IN N T TR RA AN N T Tr ra an nI In nt te er rn na a2 2 - -- - @ @@ @T TR RA AN NC CO OU UN NT T a ah ho or ra a e es s 3 3. .
S SE EL LE EC CT T ' 'E El l n ni iv ve el l d de e a an ni id da am mi ie en nt to o e es s' ', , @ @@ @T TR RA AN NC CO OU UN NT T
I IN NS SE ER RT T I IN NT TO O T Te es st t V VA AL LU UE ES S ( (3 3) )
C CO OM MM MI IT T T TR RA AN N T Tr ra an nI In nt te er rn na a2 2 - -- - R Re ed du uc ce e @ @@ @T TR RA AN NC CO OU UN NT T a a 2 2. .
- -- - P Pe er ro o n no o s se e g gu ua ar rd da a n na ad da a e en n l la a b ba as se e d de e d da at to os s. .
S SE EL LE EC CT T ' 'E El l n ni iv ve el l d de e a an ni id da am mi ie en nt to o e es s' ', , @ @@ @T TR RA AN NC CO OU UN NT T
C CO OM MM MI IT T T TR RA AN N T Tr ra an nI In nt te er rn na a1 1 - -- - R Re ed du uc ce e @ @@ @T TR RA AN NC CO OU UN NT T a a 1 1. .
- -- - P Pe er ro o n no o s se e g gu ua ar rd da a n na ad da a e en n l la a b ba as se e d de e d da at to os s. .
S SE EL LE EC CT T ' 'E El l n ni iv ve el l d de e a an ni id da am mi ie en nt to o e es s' ', , @ @@ @T TR RA AN NC CO OU UN NT T
C CO OM MM MI IT T T TR RA AN N T Tr ra an nE Ex xt te er rn na a - -- - R Re ed du uc ce e @ @@ @T TR RA AN NC CO OU UN NT T a a 0 0. .
- -- - S Se e l ll le ev va a a a c ca ab bo o l la a t tr ra an ns sa ac cc ci i n n e ex xt te er rn na a y y t to od do o l lo o q qu ue e c co on nl ll le ev va a. .
S SE EL LE EC CT T ' 'E El l n ni iv ve el l d de e a an ni id da am mi ie en nt to o e es s' ', , @ @@ @T TR RA AN NC CO OU UN NT T
S SE EL LE EC CT T * * F FR RO OM M T Te es st t
Por cierto que lo de usar nombre para las transacciones es por claridad, puesto que C CO OM MM MI IT T T TR RA AN N como
ya hemos dicho solamente reduce en 1 el valor de @ @@ @T TR RA AN NC CO OU UN NT T.
Caso 3
1. Veamos ahora un ejemplo de transaccin anidada con R RO OL LL LB BA AC CK K T TR RA AN N. .
B BE EG GI IN N T TR RA AN N T Tr ra an nE Ex xt te er rn na a - -- - @ @@ @T TR RA AN NC CO OU UN NT T a ah ho or ra a e es s 1 1
S SE EL LE EC CT T ' 'E El l n ni iv ve el l d de e a an ni id da am mi ie en nt to o e es s' ', , @ @@ @T TR RA AN NC CO OU UN NT T
I IN NS SE ER RT T I IN NT TO O T Te es st t V VA AL LU UE ES S ( (1 1) )
B BE EG GI IN N T TR RA AN N T Tr ra an nI In nt te er rn na a1 1 - -- - @ @@ @T TR RA AN NC CO OU UN NT T a ah ho or ra a e es s 2 2. .
S SE EL LE EC CT T ' 'E El l n ni iv ve el l d de e a an ni id da am mi ie en nt to o e es s' ', , @ @@ @T TR RA AN NC CO OU UN NT T
I IN NS SE ER RT T I IN NT TO O T Te es st t V VA AL LU UE ES S ( (2 2) )
B BE EG GI IN N T TR RA AN N T Tr ra an nI In nt te er rn na a2 2 - -- - @ @@ @T TR RA AN NC CO OU UN NT T a ah ho or ra a e es s 3 3. .
S SE EL LE EC CT T ' 'E El l n ni iv ve el l d de e a an ni id da am mi ie en nt to o e es s' ', , @ @@ @T TR RA AN NC CO OU UN NT T
I IN NS SE ER RT T I IN NT TO O T Te es st t V VA AL LU UE ES S ( (3 3) )
R RO OL LL LB BA AC CK K T TR RA AN N - -- -@ @@ @T TR RA AN NC CO OU UN NT T e es s 0 0 y y s se e d de es sh ha ac ce e
- -- -l la a t tr ra an ns sa ac cc ci i n n e ex xt te er rn na a y y t to od da as s l la as s i in nt te er rn na as s
S SE EL LE EC CT T ' 'E El l n ni iv ve el l d de e a an ni id da am mi ie en nt to o e es s' ', , @ @@ @T TR RA AN NC CO OU UN NT T
S SE EL LE EC CT T * * F FR RO OM M T Te es st t
En este caso no se inserta nada puesto que el R RO OL LL LB BA AC CK K T TR RA AN N deshace todas las transacciones dentro de
nuestro anidamiento hasta la transaccin ms externa y adems hace @ @@ @T TR RA AN NC CO OU UN NT T= =0 0. .
Supone este funcionamiento asimtrico del C CO OM MM MI IT T y del R RO OL LL LB BA AC CK K un problema? Pues la verdad es que
no. La manera de tratar las transacciones por el SQL Server es la que nos permite programar de manera

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


102
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
natural los anidamientos. De todos modos, si queremos ir un poco ms lejos hay una cuarta sentencia para
trabajar con transacciones: S SA AV VE E T TR RA AN N. .
S Sa av ve e T Tr ra an n
Esta sentencia crea un punto de almacenamiento dentro de una transaccin. Esta marca sirve para
deshacer una transaccin en curso slo hasta ese punto. Por supuesto nuestra transaccin debe continuar
y terminar con un C CO OM MM MI IN N T TR RA AN N (o los que hagan falta) para que todo se guarde o con un R RO OL LL LB BA AC CK K
T TR RA AN N para volver al estado previo al primer B BE EG GI IN N T TR RA AN N.
Caso 4
1. Veamos ahora un ejemplo de transaccin anidada con B BE EG GI IN N T TR RA AN N. .
2. Digitar el siguiente script.

B BE EG GI IN N T TR RA AN N T Tr ra an nE Ex xt te er rn na a - -- - @ @@ @T TR RA AN NC CO OU UN NT T a ah ho or ra a e es s 1 1
S SE EL LE EC CT T ' 'E El l n ni iv ve el l d de e a an ni id da am mi ie en nt to o e es s' ', , @ @@ @T TR RA AN NC CO OU UN NT T
I IN NS SE ER RT T I IN NT TO O T Te es st t V VA AL LU UE ES S ( (1 1) )
B BE EG GI IN N T TR RA AN N T Tr ra an nI In nt te er rn na a1 1 - -- - @ @@ @T TR RA AN NC CO OU UN NT T a ah ho or ra a e es s 2 2. .
S SE EL LE EC CT T ' 'E El l n ni iv ve el l d de e a an ni id da am mi ie en nt to o e es s' ', , @ @@ @T TR RA AN NC CO OU UN NT T
I IN NS SE ER RT T I IN NT TO O T Te es st t V VA AL LU UE ES S ( (2 2) )
S SA AV VE E T TR RA AN N G Gu ua ad da ad da a
B BE EG GI IN N T TR RA AN N T Tr ra an nI In nt te er rn na a2 2 - -- - @ @@ @T TR RA AN NC CO OU UN NT T a ah ho or ra a e es s 3 3. .
S SE EL LE EC CT T ' 'E El l n ni iv ve el l d de e a an ni id da am mi ie en nt to o e es s' ', , @ @@ @T TR RA AN NC CO OU UN NT T
I IN NS SE ER RT T I IN NT TO O T Te es st t V VA AL LU UE ES S ( (3 3) )
R RO OL LL LB BA AC CK K T TR RA AN N G Gu ua ad da ad da a - -- - s se e d de es sh ha ac ce e l lo o h he ec ch ho o e el l p pu un nt to o g gu ua ar rd da ad do o. .
S SE EL LE EC CT T ' 'E El l n ni iv ve el l d de e a an ni id da am mi ie en nt to o e es s' ', , @ @@ @T TR RA AN NC CO OU UN NT T
- -- -A Ah ho or ra a p po od de em mo os s d de ec ci id di ir r s si i l la a t tr ra an ns sa ac cc ci i n n s se e l ll le ev va a a a c ca ab bo o
- -- -o o s se e d de es sh ha ac ce e c co om mp pl le et ta am me en nt te e
- -- -P Pa ar ra a d de es sh ha ac ce er rl la a u un n R RO OL LL LB BA AC CK K b ba as st ta ar r c co om mo o h he em mo os s v vi is st to o
- -- -P Pe er ro o p pa ar ra a g gu ua ar rd da ar r l la a t tr ra an ns sa ac cc ci i n n h ha ac ce e f fa al lt ta a r re ed du uc ci ir r @ @@ @T TR RA AN NC CO OU UN NT T a a 0 0
C CO OM MM MI IT T T TR RA AN N T Tr ra an nI In nt te er rn na a1 1 - -- - R Re ed du uc ce e @ @@ @T TR RA AN NC CO OU UN NT T a a 2 2. .
S SE EL LE EC CT T ' 'E El l n ni iv ve el l d de e a an ni id da am mi ie en nt to o e es s' ', , @ @@ @T TR RA AN NC CO OU UN NT T
C CO OM MM MI IT T T TR RA AN N T Tr ra an nI In nt te er rn na a1 1 - -- - R Re ed du uc ce e @ @@ @T TR RA AN NC CO OU UN NT T a a 1 1. .
- -- - P Pe er ro o n no o s se e g gu ua ar rd da a n na ad da a e en n l la a b ba as se e d de e d da at to os s. .
S SE EL LE EC CT T ' 'E El l n ni iv ve el l d de e a an ni id da am mi ie en nt to o e es s' ', , @ @@ @T TR RA AN NC CO OU UN NT T
C CO OM MM MI IT T T TR RA AN N T Tr ra an nE Ex xt te er rn na a - -- - R Re ed du uc ce e @ @@ @T TR RA AN NC CO OU UN NT T a a 0 0. .
- -- - S Se e l ll le ev va a a a c ca ab bo o l la a t tr ra an ns sa ac cc ci i n n e ex xt te er rn na a y y t to od do o l lo o q qu ue e c co on nl ll le ev va a. .
S SE EL LE EC CT T ' 'E El l n ni iv ve el l d de e a an ni id da am mi ie en nt to o e es s' ', , @ @@ @T TR RA AN NC CO OU UN NT T
S SE EL LE EC CT T * * F FR RO OM M T Te es st t
Si no ponemos el nombre del punto salvado con S SA AV VE E T TR RA AN N al hacer un R RO OL LL LB BA AC CK K T TR RA AN N se deshace la
transaccin ms externa y @ @@ @T TR RA AN NC CO OU UN NT T se pone a 0.
Como podemos ver el uso de transacciones no es complicado, e incluso las transacciones anidadas si se
tratan con cuidado son fciles de manejar.
Caso 5
1. Veamos otro par de ejemplos para dejar claro cmo funcionan las sentencias B BE EG GI IN N, C CO OM MM MI IT T y S SA AV VE E. .
B BE EG GI IN N T TR RA AN N

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


103
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
- -- - P Pr ri im me er r B BE EG GI IN N T TR RA AN N y y a ah ho or ra a @ @@ @T TR RA AN NC CO OU UN NT T = = 1 1
B BE EG GI IN N T TR RA AN N
- -- - A Ah ho or ra a @ @@ @T TR RA AN NC CO OU UN NT T = = 2 2
C CO OM MM MI IT T T TR RA AN N
- -- - V Vo ol lv ve em mo os s a a @ @@ @T TR RA AN NC CO OU UN NT T = = 1 1
- -- - P Pe er ro o n no o s se e g gu ua ar rd da a n na ad da a n ni i s se e h ha ac ce en n e ef fe ec ct ti iv vo os s l lo os s p po os si ib bl le es s c ca am mb bi io os s
C CO OM MM MI IT T T TR RA AN N
- -- - P Po or r f fi in n @ @@ @T TR RA AN NC CO OU UN NT T = = 0 0
- -- - S Si i h hu ub bi ie er ra a c ca am mb bi io os s p pe en nd di ie en nt te es s s se e l ll le ev va an n a a l la a b ba as se e d de e d da at to os s
- -- - Y Y v vo ol lv ve em mo os s a a u un n e es st ta ad do o n no or rm ma al l c co on n l la a t tr ra an ns sa ac cc ci i n n a ac ca ab ba ad da a
Caso 6
1. Veamos un ejemplo para dejar claro cmo funciona la sentencia como el C CO OM MM MI IT T.
2. Digitar el siguiente script.
B BE EG GI IN N T TR RA AN N
- -- - P Pr ri im me er r B BE EG GI IN N T TR RA AN N y y @ @@ @T TR RA AN NC CO OU UN NT T = = 1 1
B BE EG GI IN N T TR RA AN N
- -- - A Ah ho or ra a @ @@ @T TR RA AN NC CO OU UN NT T = = 2 2
C CO OM MM MI IT T T TR RA AN N
- -- - C Co om mo o a an nt te es s @ @@ @T TR RA AN NC CO OU UN NT T = = 1 1
- -- -Y Y c co om mo o a an nt te es s n na ad da a s se e g gu ua ar rd da a
R RO OL LL LB BA AC CK K T TR RA AN N
- -- - S Se e c ca an nc ce el la a T TO OD DA A l la a t tr ra an ns sa ac cc ci i n n. . R Re ec co or rd de em mo os s q qu ue e e el l C CO OM MM MI IT T
- -- - d de e a an nt te es s n no o g gu ua ar rd do o n na ad da a, , s so ol lo o r re ed du uj jo o @ @@ @T TR RA AN NC CO OU UN NT T
- -- - A Ah ho or ra a @ @@ @T TR RA AN NC CO OU UN NT T = = 0 0
C CO OM MM MI IT T T TR RA AN N
- -- - N No o v va al le e p pa ar ra a n na ad da a p po or rq qu ue e @ @@ @T TR RA AN NC CO OU UN NT T e es s 0 0 p po or r e el l e ef fe ec ct to o d de el l R RO OL LL LB BA AC CK K
Caso 7
1. Veamos un ejemplo para dejar claro cmo funciona la sentencia como el R RO OL LL LB BA AC CK K. .
2. En cuanto al S SA AV VE E T TR RA AN N podemos recordarlo con el siguiente ejemplo:
3. Digitar el siguiente script.
C CR RE EA AT TE E T TA AB BL LE E T Ta ab bl la a1 1 ( (C Co ol lu um mn na a1 1 v va ar rc ch ha ar r( (5 50 0) )) )
G GO O

B BE EG GI IN N T TR RA AN N
I IN NS SE ER RT T I IN NT TO O T Ta ab bl la a1 1 V VA AL LU UE ES S ( (' 'P Pr ri im me er r v va al lo or r' ') )
S SA AV VE E T TR RA AN N P Pu un nt to o1 1
I IN NS SE ER RT T I IN NT TO O T Ta ab bl la a1 1 V VA AL LU UE ES S ( (' 'S Se eg gu un nd do o v va al lo or r' ') )
R RO OL LL LB BA AC CK K T TR RA AN N P Pu un nt to o1 1
I IN NS SE ER RT T I IN NT TO O T Ta ab bl la a1 1 V VA AL LU UE ES S ( (' 'T Te er rc ce er r v va al lo or r' ') )
C CO OM MM MI IT T T TR RA AN N
S SE EL LE EC CT T * * F FR RO OM M T Ta ab bl la a1 1
4. Ejecutar la sentencia.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


104
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8

Un R RO OL LL LB BA AC CK K a un S SA AV VE E T TR RA AN N no deshace la transaccin en curso ni modifica @ @@ @T TR RA AN NC CO OU UN NT T,
simplemente cancela lo ocurrido desde el ' 'S SA AV VE E T TR RA AN N nombre' hasta su ' 'R RO OL LL LB BA AC CK K T TR RA AN N nombre'

T Tr ra an ns sa ac cc ci io on ne es s y y p pr ro oc ce ed di im mi ie en nt to os s a al lm ma ac ce en na ad do os s. .
Cuando trabajamos con procedimientos almacenados debemos recordar que cada procedimiento
almacenado es una unidad. Cuando se ejecuta lo hace de manera independiente de quien lo llama. Sin
embargo si tenemos un R RO OL LL LB BA AC CK K T TR RA AN N dentro de un procedimiento almacenado cancelaremos la
transaccin en curso, pero si hay una transaccin externa al procedimiento en el que estamos trabajando
se cancelar esa transaccin externa.
Con esto no quiero decir que no se pueda usar, simplemente que hay que tener muy claras las 4 normas
sobre las sentencias B BE EG GI IN N, R RO OL LL LB BA AC CK K y C CO OM MM MI IT T que comentamos al principio de este artculo. Veamos
cmo se comporta una transaccin en un procedimiento almacenado llamado desde una transaccin.
Caso 8
1. Veamos un ejemplo de cmo crear un procedimiento almacenado y adems combinar una
transaccin.
C CR RE EA AT TE E P PR RO OC CE ED DU UR RE E I In ns se er rt ta a2 2
A AS S
B BE EG GI IN N T TR RA AN N - -- -U Un no o
I IN NS SE ER RT T I IN NT TO O T Ta ab bl la a1 1 V VA AL LU UE ES S ( (' 'V Va al lo or r2 2' ') )
R RO OL LL LB BA AC CK K T TR RA AN N - -- -U Un no o
G GO O
2. Veamos otro ejemplo de como utilizar transaccion dentro de un procedimiento almacenado.
C CR RE EA AT TE E P PR RO OC CE ED DU UR RE E I In ns se er rt ta a1 1
A AS S
B BE EG GI IN N T TR RA AN N - -- -D Do os s
I IN NS SE ER RT T I IN NT TO O T Ta ab bl la a1 1 V VA AL LU UE ES S ( (' 'V Va al lo or r 1 1' ') )
E EX XE EC C I In ns se er rt ta a2 2
I IN NS SE ER RT T I IN NT TO O T Ta ab bl la a1 1 V VA AL LU UE ES S ( (' 'V Va al lo or r3 3' ') )
C CO OM MM MI IT T T TR RA AN N - -- -D Do os s
G GO O
3. En principio parece que si ejecutamos el procedimiento 'Inserta1' el resultado sera:
E EX XE EC CU UT TE E i in ns se er rt ta a1 1
S SE EL LE EC CT T * * F FR RO OM M t ta ab bl la a1 1
- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
V Va al lo or r1 1
V Va al lo or r3 3
( (2 2 f fi il la as s a af fe ec ct ta ad da as s) )

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


105
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
Pero lo que obtenemos es:
E EX XE EC CU UT TE E i in ns se er rt ta a1 1
S SE EL LE EC CT T * * F FR RO OM M t ta ab bl la a1 1

( (1 1 f fi il la as s a af fe ec ct ta ad da as s) )
( (1 1 f fi il la as s a af fe ec ct ta ad da as s) )
S Se er rv vi id do or r: : m me en ns sa aj je e 2 26 66 6, , n ni iv ve el l 1 16 6, , e es st ta ad do o 2 2, , p pr ro oc ce ed di im mi ie en nt to o I In ns se er rt ta a2 2, , l l n ne ea a 8 8
E El l r re ec cu ue en nt to o d de e t tr ra an ns sa ac cc ci io on ne es s d de es sp pu u s s d de e E EX XE EC CU UT TE E
i in nd di ic ca a q qu ue e f fa al lt ta a u un na a i in ns st tr ru uc cc ci i n n C CO OM MM MI IT T o o R RO OL LL LB BA AC CK K T TR RA AN NS SA AC CT TI IO ON N. .
R Re ec cu ue en nt to o a an nt te er ri io or r = = 1 1, , r re ec cu ue en nt to o a ac ct tu ua al l = = 0 0. .
( (1 1 f fi il la as s a af fe ec ct ta ad da as s) )
S Se er rv vi id do or r: : m me en ns sa aj je e 3 39 90 02 2, , n ni iv ve el l 1 16 6, , e es st ta ad do o 1 1, , p pr ro oc ce ed di im mi ie en nt to o I In ns se er rt ta a1 1, , l l n ne ea a 8 8
L La a p pe et ti ic ci i n n C CO OM MM MI IT T T TR RA AN NS SA AC CT TI IO ON N n no o t ti ie en ne e l la a c co or rr re es sp po on nd di ie en nt te e B BE EG GI IN N T TR RA AN NS SA AC CT TI IO ON N. .
t tx xt t
- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
V Va al lo or r3 3
( (1 1 f fi il la as s a af fe ec ct ta ad da as s) )
Si analizamos estos mensajes vemos que se inserta la primera fila, se salta al segundo procedimiento
almacenado y se inserta la segunda fila. Se ejecuta el ' 'R RO OL LL LB BA AC CK K T TR RA AN N - -D Do os s' ' del segundo procedimiento
almacenado y se deshacen las dos inserciones porque este R RO OL LL LB BA AC CK K cancela la transaccin exterior, la del
primer procedimiento almacenado. A continuacin se termina el segundo procedimiento almacenado y
como este procedimiento tiene un 'BEGIN TRAN -Dos' y no tiene un COMMIT o un ROLLBACK (recordemos
que el ' 'R RO OL LL LB BA AC CK K T TR RA AN N - -D Do os s' ' termina el ' 'B BE EG GI IN N T TR RA AN N - -U Un no o' ') se produce un error y nos avisa que el
procedimiento almacenado termina con una transaccin pendiente. Al volver al procedimiento almacenado
externo se ejecuta el INSERT que inserta la tercera fila y a continuacin el ' 'C CO OM MM MI IT T T TR RA AN N - -- -U Un no o' '. Aqu
aparece otro error puesto que este ' 'C CO OM MM MI IT T T TR RA AN N - -U Un no o' ' estaba ah para finalizar una transaccin que ya
ha sido cancelada anteriormente.
E El l m mo od do o c co or rr re ec ct to o
Para que nuestras transacciones se comporten como se espera dentro de un procedimiento almacenado
podemos recurrir al S SA AV VE E T TR RA AN N.
Veamos como:
C CR RE EA AT TE E P PR RO OC CE ED DU UR RE E I In ns se er rt ta a2 2
A AS S
S SA AV VE E T TR RA AN N G Gu ua ar rd da ad do o
I IN NS SE ER RT T I IN NT TO O T Ta ab bl la a1 1 V VA AL LU UE ES S ( (' 'V Va al lo or r2 2' ') )
R RO OL LL LB BA AC CK K T TR RA AN N G Gu ua ar rd da ad do o
G GO O

C CR RE EA AT TE E P PR RO OC CE ED DU UR RE E I In ns se er rt ta a1 1
A AS S
B BE EG GI IN N T TR RA AN N
I IN NS SE ER RT T I IN NT TO O T Ta ab bl la a1 1 V VA AL LU UE ES S ( (' 'V Va al lo or r 1 1' ') )
E EX XE EC C I In ns se er rt ta a2 2
I IN NS SE ER RT T I IN NT TO O T Ta ab bl la a1 1 V VA AL LU UE ES S ( (' 'V Va al lo or r 3 3' ') )
C CO OM MM MI IT T T TR RA AN N
G GO O

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


106
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
Ahora el ' 'R RO OL LL LB BA AC CK K T TR RA AN N g gu ua ar rd da ad do o' ' del segundo procedimiento almacenado deshace la transaccin slo
hasta el punto guardado. Adems este R RO OL LL LB BA AC CK K no decrementa el @ @@ @T TR RA AN NC CO OU UN NT T ni afecta a las
transacciones en curso.
El resultado obtenido al ejecutar este procedimiento almacenado es:
E EX XE EC CU UT TE E i in ns se er rt ta a1 1
S SE EL LE EC CT T * * F FR RO OM M t ta ab bl la a1 1

( (1 1 f fi il la as s a af fe ec ct ta ad da as s) )
( (1 1 f fi il la as s a af fe ec ct ta ad da as s) )
( (1 1 f fi il la as s a af fe ec ct ta ad da as s) )
- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
V Va al lo or r 1 1
V Va al lo or r 3 3
( (2 2 f fi il la as s a af fe ec ct ta ad da as s) )
Una vez vistos estos ejemplos queda claro que no hay problema en utilizar transacciones dentro de
procedimientos almacenados siempre que tengamos en cuenta el comportamiento del R RO OL LL LB BA AC CK K T TR RA AN N y
que utilicemos el S SA AV VE E T TR RA AN N de manera adecuada.
F Fu un nc ci io on ne es s e en n S SQ QL L S Se er rv ve er r
Microsoft agreg nuevas caractersticas a su producto desde S SQ QL L S SE ER RV VE ER R 2 20 00 00 0, y lo ms interesante para
los programadores del S SQ QL L es la posibilidad de hacer funciones definidas por el usuario. La adicin de
funciones al lenguaje del S SQ QL L solucionara los problemas de reutilizacin del cdigo y dar mayor flexibilidad
al programar las consultas de S SQ QL L.
T TI IP PO OS S D DE E F FU UN NC CI IO ON NE ES S
El servidor 2 20 00 05 5 del S SQ QL L utiliza estos tipos de funciones:
1. Las funciones escalares
2. funcin Tabla evaluada en lnea.
3. Funcin tabla evaluada multisentencia.
Los tres tipos de funciones aceptan parmetros de cualquier tipo. Las funciones e es sc ca al la ar re es s devuelven un
solo valor, tabla en l l n ne ea a y M Mu ul lt ti is se en nt te en nc ci ia as s devuelven un tipo de dato tabla.

F FU UN NC CI IO ON NE ES S E ES SC CA AL LA AR RE ES S

Las funciones escalares vuelven un tipo de los datos tal como i in nt t, m mo on ne ey y, v va ar rc ch ha ar r, r re ea al l, etc. Pueden ser
utilizadas en cualquier lugar incluso incorporado dentro de sentencias S SQ QL L. La sintaxis para una f fu un nc ci i n n
e es sc ca al la ar r es la siguiente:
C CR RE EA AT TE E F FU UN NC CT TI IO ON N N No om mb br re eF Fu un nc ci io on n
( ( [ [@ @n no om mb br re eP Pa ar ra am me et te er r p pa ar ra am me et te er rN N] ]) )
R RE ET TU UR RN NS S t ti ip po oV Va al lo or rR Re et to or rn no o [ [A AS S] ]
B BE EG GI IN N
< <i in ns st tr ru uc cc ci io on ne es s> >
R RE ET TU UR RN N e ex xp pr re es si io on nE Es sc ca al la ar r E EN ND D

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


107
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
Caso 9
1. Se desea crear una funcin que nos permita realizar la suma de dos elementos.
2. Digitar el siguiente Script.
C CR RE EA AT TE E F FU UN NC CT TI IO ON N S SU UM MA A
( (@ @V VA AL LO OR R1 1 I IN NT T, ,@ @V VA AL LO OR R2 2 I IN NT T) )
R RE ET TU UR RN NS S I IN NT T
A AS S
B BE EG GI IN N
R RE ET TU UR RN N( (@ @V VA AL LO OR R1 1+ +@ @V VA AL LO OR R2 2) )
E EN ND D
3. Ejecutar la sentencia.
4. Para confirmar la creacin de la funcin revise el panel izquierdo del analizador de consultas en su
base de datos Poseidn.

5. Probemos la funcin ahora, digitaremos el siguiente script.

S SE EL LE EC CT T D DB BO O. .S SU UM MA A ( (1 10 00 0, ,5 50 00 0) ) A AS S T TO OT TA AL L



6. Tambin podemos usarla utilizando una tabla:
S SE EL LE EC CT T I ID DP PR RO OD DU UC CT TO O, , N NO OM MB BR RE EP PR RO OD DU UC CT TO O, , P PR RE EC CI IO OU UN NI ID DA AD D, , D DB BO O. .S SU UM MA A ( (P PR RE EC CI IO OU UN NI ID DA AD D, , 1 10 0) ) A AS S
P PR RE EC CI IO OI IN NC CR RE EM ME EN NT TA AD DO O F FR RO OM M P PR RO OD DU UC CT TO OS S



I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


108
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
F FU UN NC CI IO ON NE ES S D DE E T TA AB BL LA A E EN N L L N NE EA A

Las funciones de tabla en lnea son las funciones que devuelven la salida de una simple declaracin SELECT.
La salida se puede utilizar adentro de joins o consultas como si fuera una tabla de estndar.
C Ca as so o 1 10 0
1. Se desea crear una funcin tipo tabla, utilizando como consulta la tabla productos y mostrando
todos los productos dependiendo de la categora seleccionada.
2. Digitar el siguiente script.
C CR RE EA AT TE E F FU UN NC CT TI IO ON N P Pr ro od du uc ct to os sP Po or rC Ca at te eg go or ri ia a( (
@ @c co od di ig go o i in nt t ) )
R RE ET TU UR RN NS S
T TA AB BL LE E
A AS S
R RE ET TU UR RN N ( (S SE EL LE EC CT T * * F FR RO OM M p pr ro od du uc ct to os s W WH HE ER RE E I Id dC Ca at te eg go or r a a= = @ @c co od di ig go o) )
3. Ejecutar el script.
4. Como usted puede observar se puede visualizar la funcin.

5. Utilizaremos la funcin de esta forma.
s se el le ec ct t * * f fr ro om m d db bo o. .P Pr ro od du uc ct to os sP Po or rC Ca at te eg go or ri ia a( (2 2) )





I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


109
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
F FU UN NC CI IO ON NE ES S D DE E T TA AB BL LA A e ev va al lu ua ad da a m mu ul lt ti is se en nt te en nc ci ia a
En una combinacin de vista y procedimiento almacenado, y puede utilizarse para retomar una tabla como
alternativa al uso de vistas y procedimientos almacenados.
Puede usarse en la clausula from de una sentencia Transact SQL.
El tipo de valor de retorno debe de ser table, y define el nombre y estructura de la tabla.
El alcance de la variable de retorno es local.
A AL LT TE ER R F FU UN NC CT TI IO ON N
Modifica una funcin existente definida por el usuario, creada anteriormente por la ejecucin de la
instruccin C CR RE EA AT TE E F FU UN NC CT TI IO ON N, sin cambiar los permisos y sin que afecte a ninguna otra funcin,
procedimiento almacenado o desencadenador dependientes.
C Ca as so o 1 11 1
1 1. . Modificando la funcin S SU UM MA A.
2 2. . Para que acepte valores con decimales vamos a cambiar los tipos I IN NT T por F FL LO OA AT T. .
3. Digitar el siguiente script.
A AL LT TE ER R F FU UN NC CT TI IO ON N S SU UM MA A
( (@ @V VA AL LO OR R1 1 F FL LO OA AT T, ,@ @V VA AL LO OR R2 2 F FL LO OA AT T) )
R RE ET TU UR RN NS S
F FL LO OA AT T
A AS S
B BE EG GI IN N
R RE ET TU UR RN N( (@ @V VA AL LO OR R1 1+ +@ @V VA AL LO OR R2 2) )
E EN ND D
4. Invocando a la F FU UN NC CI IO ON N S SU UM MA A.
S SE EL LE EC CT T D DB BO O. .S SU UM MA A( (1 12 2. .5 5, ,2 2. .7 7) )

C Ca as so o 1 12 2
1. Se desea crear una funcin que nos permita encontrar la edad de una persona, con solo indicar la
fecha de nacimiento.
2. Digitar el siguiente script.






I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


110
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
C Ca as so o 1 13 3
1. Crear una funcin que nos determine el pago por cuota.
2. Digitar el siguiente script.
C CR RE EA AT TE E F FU UN NC CT TI IO ON N P PA AG GO OC CU UO OT TA A
( (@ @M MO ON NT TO O M MO ON NE EY Y, ,
@ @C CU UO OT TA A I IN NT T, ,
@ @I IN NT TE ER RE ES S F FL LO OA AT T) )
R RE ET TU UR RN NS S
M MO ON NE EY Y A AS S B BE EG GI IN N
D DE EC CL LA AR RE E @ @P PA AG GO OI IN NT TE ER RE ES S F FL LO OA AT T
D DE EC CL LA AR RE E @ @M MO ON NT TO OC CU UO OT TA A F FL LO OA AT T
S SE ET T @ @P PA AG GO OI IN NT TE ER RE ES S= =@ @M MO ON NT TO O* *@ @I IN NT TE ER RE ES S
S SE ET T @ @M MO ON NT TO OC CU UO OT TA A= =@ @M MO ON NT TO O/ /@ @C CU UO OT TA A
R RE ET TU UR RN N ( (@ @M MO ON NT TO OC CU UO OT TA A+ +@ @P PA AG GO OI IN NT TE ER RE ES S) )
E EN ND D
3. ejecutar la function creada.
S SE EL LE EC CT T D DB BO O. .P PA AG GO OC CU UO OT TA A( (5 50 00 00 0, ,1 10 0, ,0 0. .0 06 6) )

C Ca as so o 1 14 4
1. Crear una funcin que nos permita obtener los pedidos por ao.
2. Digitar el siguiente script.
C CR RE EA AT TE E F FU UN NC CT TI IO ON N P PE ED DI ID DO OS SA A O O( (@ @A A O O A AS S I IN NT TE EG GE ER R) )
R RE ET TU UR RN NS S T TA AB BL LE E A AS S R RE ET TU UR RN N
S SE EL LE EC CT T I ID DP PE ED DI ID DO O, , F FE EC CH HA AP PE ED DI ID DO O, , N NO OM MB BR RE EC CO OM MP PA A A A, , N NO OM MB BR RE E, , A AP PE EL LL LI ID DO OS S, , P PE ED DI ID DO OS S. .C CA AR RG GO O F FR RO OM M
P PE ED DI ID DO OS S
I IN NN NE ER R J JO OI IN N C CL LI IE EN NT TE ES S O ON N P PE ED DI ID DO OS S. .I ID DC CL LI IE EN NT TE E= =C CL LI IE EN NT TE ES S. .I ID DC CL LI IE EN NT TE E I IN NN NE ER R J JO OI IN N E EM MP PL LE EA AD DO OS S
O ON N P PE ED DI ID DO OS S. .I ID DE EM MP PL LE EA AD DO O= =E EM MP PL LE EA AD DO OS S. .I ID DE EM MP PL LE EA AD DO O W WH HE ER RE E Y YE EA AR R( (F FE EC CH HA AP PE ED DI ID DO O) )= =@ @A A O O
3. Invocar la funcin.
S SE EL LE EC CT T * * F FR RO OM M D DB BO O. .P PE ED DI ID DO OS SA A O O( (1 19 99 95 5) )



I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


111
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
E EL LI IM MI IN NA AR R U UN NA A F FU UN NC CI IO ON N
Para eliminar una funcin ejecute el comando D DR RO OP P F FU UN NC CT TI IO ON N. .
Ejemplo:
D DR RO OP P F FU UN NC CT TI IO ON N D DB BO O. .P PE ED DI ID DO OS SA A O O

E Ej je er rc ci ic ci io os s p pr ro op pu ue es st to os s
1. Hacer un programa que muestre el promedio de 3 notas.
2. Hacer un programa que lea dos nmeros y sume sus elementos.
3. Elabore un programa que lea 2 nmeros enteros positivos y que muestre la suma y la multiplicacin de
estos.
4. Una persona recibe un prstamo de $100.00 de un banco y desea saber cunto pagar de inters, si el
banco le cobra una tasa del 2% mensual.
5. Calcula el precio de un boleto de viaje, tomando en cuenta el nmero de kilmetros que se van a
recorrer, siendo el precio S/.10.00 por Km.
6. Calcular el monto a pagar en una cabina de Internet si el costo por hora es de S/.1.00 y por cada 5
horas te dan una hora de promocin gratis.
7. Calcular el cambio de monedas en dlares y euros al ingresar cierta cantidad en soles. (tipo de cambio
soles: 3.20, Euros: 4.10).
8. Calcular el descuento y el monto a pagar por un medicamento cualquiera en una farmacia si todos los
medicamentos tienen un descuento del 35%.
9. Calcular el nuevo salario de un empleado si obtuvo un incremento del 8% sobre su salario actual.
10. En un hospital existen 3 reas: Urgencias, Pediatra y Traumatologa. El presupuesto anual del hospital
se reparte de la siguiente manera:

rea Presupuesto
Urgencias 37%
Pediatra 42%
Traumatologa 21%

Obtener la cantidad de dinero que recibir cada rea para cualquier monto presupuestal.

P Pa ar ra a e em mp pe ez za ar r u un n g gr ra an n p pr ro oy ye ec ct to o h ha ac ce e f fa al lt ta a v va al le en nt t a a
P Pa ar ra a t te er rm mi in na ar r u un n g gr ra an n p pr ro oy ye ec ct to o h ha ac ce e f fa al lt ta a p pe er rs se ev ve er ra an nc ci ia a




I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


112
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
T Tr ri ig gg ge er rs s e en n T Tr ra an ns sa ac ct t S SQ QL L
Un trigger(o desencadenador) es una clase especial de procedimiento almacenado que se ejecuta
automticamente cuando se produce un evento en el servidor de bases de datos.
SQL Server proporciona los siguientes tipos de triggers:
Trigger DML, se ejecutan cuando un usuario intenta modificar datos mediante un evento de
lenguaje de manipulacin de datos (D DM ML L). Los eventos D DM ML L son instrucciones I IN NS SE ER RT T, U UP PD DA AT TE E o
D DE EL LE ET TE E de una tabla o vista.
Trigger DDL, se ejecutan en respuesta a una variedad de eventos de lenguaje de definicin de datos
(D DD DL L). Estos eventos corresponden principalmente a instrucciones C CR RE EA AT TE E, , A AL LT TE ER R y D DR RO OP P de
T Tr ra an ns sa ac ct t- -S SQ QL L, y a determinados procedimientos almacenados del sistema que ejecutan
operaciones de tipo D DD DL L.
T Tr ri ig gg ge er r D DM ML L
Los trigger D DM ML L se ejecutan cuando un usuario intenta modificar datos mediante un evento de lenguaje de
manipulacin de datos (D DM ML L). Los eventos D DM ML L son instrucciones I IN NS SE ER RT T, U UP PD DA AT TE E o D DE EL LE ET TE E de una tabla o
vista.
La sintaxis general de un trigger es la siguiente.

C CR RE EA AT TE E T TR RI IG GG GE ER R < <T Tr ri ig gg ge er r_ _N Na am me e, , s sy ys sn na am me e, , T Tr ri ig gg ge er r_ _N Na am me e> >
O ON N < <T Ta ab bl le e_ _N Na am me e, , s sy ys sn na am me e, , T Ta ab bl le e_ _N Na am me e> >
A AF FT TE ER R < <D Da at ta a_ _M Mo od di if fi ic ca at ti io on n_ _S St ta at te em me en nt ts s, , I IN NS SE ER RT T, ,D DE EL LE ET TE E, ,U UP PD DA AT TE E> >
A AS S
B BE EG GI IN N
- -- - S SE ET T N NO OC CO OU UN NT T O ON N a ad dd de ed d t to o p pr re ev ve en nt t e ex xt tr ra a r re es su ul lt t s se et ts s f fr ro om m
- -- - i in nt te er rf fe er ri in ng g w wi it th h S SE EL LE EC CT T s st ta at te em me en nt ts s. .
S SE ET T N NO OC CO OU UN NT T O ON N; ;
- -- - I In ns se er rt t s st ta at te em me en nt ts s f fo or r t tr ri ig gg ge er r h he er re e
E EN ND D
Antes de ver un ejemplo es necesario conocer las tablas i in ns se er rt te ed d y d de el le et te ed d.
Las instrucciones de triggers D DM ML L utilizan dos tablas especiales denominadas i in ns se er rt te ed d y deleted. S SQ QL L
S Se er rv ve er r 2 20 00 05 5 crea y administra automticamente ambas tablas. La estructura de las tablas i in ns se er rt te ed d y
d de el le et te ed d es la misma que tiene la tabla que ha desencadenado la ejecucin del trigger.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


113
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
La primera tabla ( (i in ns se er rt te ed d) ) solo est disponible en las operaciones I IN NS SE ER RT T y U UP PD DA AT TE E y en ella estn los
valores resultantes despus de la insercin o actualizacin. Es decir, los datos insertados. I In ns se er rt te ed d estar
vaca en una operacin D DE EL LE ET TE E.
En la segunda ( (d de el le et te ed d) ), disponible en las operaciones U UP PD DA AT TE E y D DE EL LE ET TE E, estn los valores anteriores a la
ejecucin de la actualizacin o borrado. Es decir, los datos que sern borrados. D De el le et te ed d estar vaca en una
operacin I IN NS SE ER RT T.
No existe una tabla UPDATED? No, hacer una actualizacin es lo mismo que borrar (d de el le et te ed d) e insertar los
nuevos (inserted). La sentencia UPDATE es la nica en la que i in ns se er rt te ed d y d de el le et te ed d tienen datos
simultneamente.
T Tr ri ig gg ge er r D DD DL L
Los trigger DDL se ejecutan en respuesta a una variedad de eventos de lenguaje de definicin de datos
(DDL). Estos eventos corresponden principalmente a instrucciones CREATE, ALTER y DROP de Transact-SQL,
y a determinados procedimientos almacenados del sistema que ejecutan operaciones de tipo DDL.
La sintaxis general de un trigger es la siguiente.
C CR RE EA AT TE E T TR RI IG GG GE ER R < <t tr ri ig gg ge er r_ _n na am me e, , s sy ys sn na am me e, , t ta ab bl le e_ _a al lt te er r_ _d dr ro op p_ _s sa af fe et ty y> >
O ON N D DA AT TA AB BA AS SE E
F FO OR R < <d da at ta a_ _d de ef fi in ni it ti io on n_ _s st ta at te em me en nt ts s, , , , D DR RO OP P_ _T TA AB BL LE E, , A AL LT TE ER R_ _T TA AB BL LE E> >
A AS S
B BE EG GI IN N
. .. .. .
E EN ND D

C Ca as so o 1 1
1. Se desea crear un Trigger que nos permita actualizar el Stock de la tabla productos, cada vez que el
usuario realice una venta.
2. Para este ejercicio crear las siguientes tablas.





I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


114
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
3. Crear el trigger llamado D De es sc cu ue en nt to o_ _P Pr ro od du uc ct to o.



4. Ahora probaremos el trigger.
5. Para ello verificamos el contenido de la tabla productos.
6. Verifique el cdigo de cada producto y las unidades en Existencia de cada uno de ellos.



7. Insertar algunos registros dentro de la tabla Boleta y Detalles de Boleta.



8. Ahora verifique el contenido de la tabla productos.

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


115
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8


9. Como usted puede apreciar el campo unidades en existencia ha sido actualizado.




C Ca as so o 2 2
1. Se desea crear un trigger que se ejecute cada vez que se inserte, elimina y actualice un registro de
la tabla categoras.
2. T Tr ri ig gg ge er r I In ns se er rt ta ar r_ _C Ca at te eg go or ri ia a. La funcin de este trigger es de que registre en una tabla llamada
control el cdigo de categora que fue Insertado, el usuario y la operacin que se realizo.
3. T Tr ri ig gg ge er r A Ac ct tu ua al li iz za ar r_ _C Ca at te eg go or ri ia a. La funcin de este trigger es de que registre en una tabla llamada
control el cdigo de categora que fue actualizado, el usuario y la operacin que se realizo.
4. T Tr ri ig gg ge er r B Bo or rr ra a_ _C Ca at te eg go or ri ia a. La funcin de este trigger es de que registre en una tabla llamada control
el cdigo de categora que fue eliminado, el usuario y la operacin que se realizo.
5. .Crear la tabla llamada c co on nt tr ro ol l.


T Tr ri ig gg ge er r U Ut ti il li iz za an nd do o I In ns se er rt t
create trigger I In ns se er rt ta ar r_ _C Ca at te eg go or ri ia a
on C Ca at te eg go or r a as s for I In ns se er rt t
as
Insert into Control (idcategoria,Usuario, Fecha, Operacion)
select IdCategora,User_Name(), GetDate(),'Insertado'
from I In ns se er rt te ed d
E Ex xp pl li ic ca ar r e el l S Sc cr ri ip pt t d de el l T Tr ri ig gg ge er r I In ns se er rt ta ar r_ _C Ca at te eg go or ri ia a e en n f fo or rm ma a l li it te er ra al l


Insertar un nuevo regitro en la tabla C Ca at te eg go or ri ia as s. .
i in ns se er rt t i in nt to o C Ca at te eg go or r a as s ( (N No om mb br re eC Ca at te eg go or r a a, ,D De es sc cr ri ip pc ci i n n) ) v va al lu ue es s( (' 'C Co om mp pu ut ta ad do or ra as s' ', ,' 'c co om mp pu ut ta ad do or ra as s' ') )
mostrar los registros de la tabla C Co on nt tr ro ol l. .

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


116
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8

Como usted puede observar se ha insertado el codigo de la categoria,seguido del nombre del
usuario SQL, la fecha y la operacin realizada dentro de la tabla C Ca at te eg go or ri ia as s.

T Tr ri ig gg ge er r U Ut ti il li iz za an nd do o U Up pd da at te e
c cr re ea at te e t tr ri ig gg ge er r A Ac ct tu ua al li iz za ar r_ _C Ca at te eg go or ri ia a
o on n C Ca at te eg go or r a as s f fo or r u up pd da at te e
a as s
u up pd da at te e c co on nt tr ro ol l s se et t i id dc ca at te eg go or ri ia a= = i in ns se er rt te ed d. .I Id dC Ca at te eg go or r a a
f fr ro om m c co on nt tr ro ol l, ,d de el le et te ed d, ,i in ns se er rt te ed d
w wh he er re e i id dc ca at te eg go or ri ia a= =d de el le et te ed d. .I Id dC Ca at te eg go or r a a
E Ex xp pl li ic ca ar r e el l S Sc cr ri ip pt t d de el l T Tr ri ig gg ge er r A Ac ct tu ua al li iz za ar r _ _C Ca at te eg go or ri ia a e en n f fo or rm ma a l li it te er ra al l


Actualizar el ultimo regitro registro insertado en la tabla C Ca at te eg go or ri ia as s. .
update Categoras set NombreCategora='Ventas', Descripcin='repuesto de computo' where IdCategora=9

mostrar los registros de la tabla C Co on nt tr ro ol l. .
Como usted puede observar se ha actualizado el codigo de la categoria,seguido del nombre del
usuario SQL, la fecha y la operacin realizada dentro de la tabla C Ca at te eg go or ri ia as s.

T Tr ri ig gg ge er r U Ut ti il li iz za an nd do o D De el le et te ed d
c cr re ea at te e t tr ri ig gg ge er r E El li im mi in na ar r_ _C Ca at te eg go or ri ia a
o on n C Ca at te eg go or r a as s f fo or r d de el le et te e
a as s
I In ns se er rt t i in nt to o C Co on nt tr ro ol l ( (i id dc ca at te eg go or ri ia a, ,U Us su ua ar ri io o, , F Fe ec ch ha a, , O Op pe er ra ac ci io on n) )
s se el le ec ct t I Id dC Ca at te eg go or r a a, ,U Us se er r_ _N Na am me e( () ), , G Ge et tD Da at te e( () ), ,' 'B Bo or rr ra ad do o' '
f fr ro om m d de el le et te ed d
E Ex xp pl li ic ca ar r e el l S Sc cr ri ip pt t d de el l T Tr ri ig gg ge er r A Ac ct tu ua al li iz za ar r _ _C Ca at te eg go or ri ia a e en n f fo or rm ma a l li it te er ra al l


Actualizar el ultimo regitro registro insertado en la tabla C Ca at te eg go or ri ia as s. .
D De el le et te e f fr ro om m C Ca at te eg go or r a as s w wh he er re e I Id dC Ca at te eg go or r a a= =9 9

mostrar los registros de la tabla C Co on nt tr ro ol l. .


I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


117
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
C Ca as so o 3 3
1. Se desea crear un Trigger que solo permita eliminar un solo registro de la tabla proveedores.
2. En caso de querer eliminar ms de un registro al mismo tiempo el trigger bloqueara la sentencia
SQL establecida.
3. Digitar el siguiente Script.

4. Eliminar la relacin que hay entre la tabla p pr ro ov ve ee ed do or re es s y la tabla p pr ro od du uc ct to os s.
5. Digitar el script utilizado.

6. Ejecutar la siguiente sentencia.



7. Como usted puede observar se muestra el mensaje que se asigno en el T Tr ri ig gg ge er r.

1. El mensaje que apareci indica ..
2. Porque

8. Ejecutar la siguiente sentencia S SQ QL L.

9. Como usted puede observar se muestra el mensaje indicando que una fila ha sido afectada.





I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


118
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
C Ca as so o 4 4
1. Se desea d de es sh ha ab bi il li it ta ar r el trigger B Bl lo oq qu ue ea ar r_ _P Pr ro ov ve ee ed do or re es s, creado para la tabla p pr ro ov ve ee ed do or re es s.
2. Digitar el siguiente s sc cr ri ip pt t, que nos permitir deshabilitar el t tr ri ig gg ge er r.

3. Ahora ejecutaremos la siguiente sentencia S SQ QL L.

4. Como usted puede observar aparece un mensaje indicando que dos filas han sido afectadas.

T Tr ri ig gg ge er r D DD DL L
C Ca as so o 5 5
1. Se desea crear un T Tr ri ig gg ge er r que bloquee al usuario, al momento de eliminar una tabla.
2. Este Trigger tiene que ser de tipo D DD DL L.
3. Digitar el siguiente S Sc cr ri ip pt t.

4. Ahora ejecutaremos la siguiente sentencia S SQ QL L.

5. Como usted puede observar se muestra el mensaje que se asigno en el T Tr ri ig gg ge er r.

3. El mensaje que apareci indica ..

I In ns st tr ru uc ct to or r: : C Cu ue ev va a V Va al lv ve er rd de e D Di ie eg go o A Al lb be er rt to o d di ie eg go oa al lb be er rt to o_ _1 19 98 87 7@ @h ho ot tm ma ai il l. .c co om m
C C
a a
p p

t t
u u
l l
o o

I I

T T
r r
a a
b b
a a
j j
a a
n n
d d
o o

y y

C C
o o
n n
o o
c c
i i
e e
n n
d d
o o

S S
Q Q
L L

S S
e e
r r
v v
e e
r r

2 2
0 0
0 0
8 8


119
D De es sa ar rr ro ol ll lo o D De e A Ap pl li ic ca ac ci io on ne es s D Di is st tr ri ib bu ui id da as s e en n c co on n A AD DO O. .N Ne et t 3 3. .5 5 y y S SQ QL L S SE ER RV VE ER R 2 20 00 08 8
4. Porque
C Ca as so o 6 6
1. Se desea crear un T Tr ri ig gg ge er r que bloquee al usuario al momento de querer crear una nueva tabla en la
base de datos.
2. Este Trigger tiene que ser de tipo D DD DL L.
3. Digitar el siguiente S Sc cr ri ip pt t.



4. Ahora ejecutaremos la siguiente sentencia S SQ QL L.

5. Como usted puede observar se muestra el mensaje que se asigno en el T Tr ri ig gg ge er r.

5. El mensaje que apareci indica ..
6. Porque
C Ca as so o 6 6
1. Se desea crear un T Tr ri ig gg ge er r que bloquee al usuario al momento de Crear y Eliminar una vista.
2. Digitar el cdigo utilizado.

Vous aimerez peut-être aussi