You are on page 1of 148

Conceptos

fundamentales de
bases de datos

Official Academic Course

Microsoft Official Academic Course

Conceptos fundamentales
de bases de datos,
examen98-364

Crditos
EDITOR
Bryan Gambrel
DIRECTOR DE VENTAS
Mitchell Beaton
DIRECTOR EJECUTIVO DE MARKETING
Chris Ruel
GERENTE DE PRODUCTOS DE MICROSOFT Merrick Van Dongen de Microsoft Learning
ASISTENTE DE PROGRAMA EDITORIAL
Jennifer Lartz
DIRECTOR DE CONTENIDO
Micheline Frederick
EDITOR DE PRODUCCIN
Amy Weintraub
DIRECTOR CREATIVO
Harry Nolan
DISEO DE PORTADA
Jim OShea
TECNOLOGA Y MEDIOS
Tom Kulesa/Wendy Ashenberg
Foto de portada: Crditos: fotografa de Matthias Hombauer/Getty Images, Inc.
Este libro lo realiz Aptara, Inc. usando Garamond y lo imprimi y encuadern Bind Rite Robbinsville.
La portada la imprimi Bind Rite Robbinsville.
Copyright 2012 por John Wiley & Sons, Inc. Todos los derechos reservados.
Ninguna parte de esta publicacin puede ser reproducida, almacenada en sistemas de recuperacin o transmitida en
cualquier forma o por cualquier medio, ya sea electrnico, mecnico, fotocopia, grabacin, escaneo o de otro modo,
excepto segn lo permitido bajo las Secciones 107 o 108 de la ley de Propiedad Intelectual de Estados Unidos de
1976, sin la autorizacin previa por escrito de la editorial, o la autorizacin a travs del pago por ejemplar de la tarifa
correspondiente al Copyright Clearance Center, Inc. 222 Rosewood Drive, Danvers, MA 01923, sitio web www.
copyright.com. Las solicitudes de permiso a la editorial debern dirigirse a Permissions Department, John Wiley &
Sons, Inc., 111 River Street, Hoboken, NJ 07030-5774, (201)748-6011, fax (201)748-6008, sitio web http://www.
wiley.com/go/permissions.
Microsoft, ActiveX, Excel, InfoPath, Microsoft Press, MSDN, OneNote, Outlook, PivotChart, PivotTable, PowerPoint,
SharePoint, SQL Server, Visio, Visual Basic, Visual C#, Visual Studio, Windows, Windows 7, Windows Mobile,
Windows Server y Windows Vista son marcas comerciales o marcas registradas de Microsoft Corporation en los
Estados Unidos y/u otros pases. Otros nombres de productos y compaas mencionados aqu pueden ser marcas
comerciales de sus respectivos propietarios.
Los ejemplos de compaas, organizaciones, productos, nombres de dominio, direcciones de correo electrnico,
logotipos, personas, lugares y acontecimientos mencionados son ficticios. No se pretende ni se debe inferir de ningn
modo relacin con ninguna empresa, organizacin, producto, nombre de dominio, direccin de correo electrnico,
logotipo, persona, lugar o acontecimientos reales.
El libro expresa puntos de vista y opiniones del autor. La informacin contenida en este libro se proporciona sin
ninguna garanta expresa, implcita ni estatuaria. Ni los autores, John Wiley & Sons, Inc., Microsoft Corporation, ni
sus revendedores o distribuidores sern responsables de cualquier dao causado o presuntamente causado directa o
indirectamente por este libro.
Fundada en 1807, John Wiley & Sons, Inc. ha sido una valiosa fuente de conocimientos y comprensin durante ms de 200
aos, ayudando a personas en todo el mundo a satisfacer sus necesidades y cumplir con sus aspiraciones. Nuestra empresa
est construida sobre una base de principios que incluyen la responsabilidad con las comunidades a las que servimos
ydonde vivimos y trabajamos. En 2008, pusimos en marcha una iniciativa de ciudadana empresarial, Corporate Citizenship,
un esfuerzo global para abordar los retos ambientales, sociales, econmicos y ticos a los que nos enfrentamos en nuestro
negocio. Entre las cuestiones que abordamos se encuentra el impacto medioambiental del carbono, las especificaciones del
papel y su adquisicin, la conducta tica de nuestro negocio y entre nuestros proveedores y la comunidad, as como el apoyo
solidario. Para obtener ms informacin, visite nuestro sitio web: www.wiley.com/go/citizenship.
ISBN978-0-470-88916-9
Impreso en los Estados Unidos de Amrica
10987654321

www.wiley.com/college/microsoft
o llame al nmero de telfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canad)

CONTRATO DE LICENCIA DEL USUARIO


FINAL DE WILEY PARA EL EBOOK DE MOAC
Y EL CONTENIDO PARA EL INSTRUCTOR
Este es el Contrato de Licencia del Usuario Final limitado de John Wiley and Sons, Inc. (Wiley), que rige el uso que
hace del eBook de Microsoft Official Academic Course (eBook de MOAC) y del contenido relacionado (Contenido
para el Instructor) de Wiley. AL ACCEDER, DESCARGAR O UTILIZAR EL EBOOK DE MOAC O EL CONTENIDO PARA EL
INSTRUCTOR, USTED ACEPTA LOS TRMINOS Y CONDICIONES DE ESTE CONTRATO. SI NO LOS ACEPTA, NO ACCEDA,
DESCARGUE NI UTILICE EL EBOOK DE MOAC NI EL CONTENIDO PARA EL INSTRUCTOR.
Licencia:
Por medio de este documento, Wiley concede al miembro, instructor o estudiante del Programa Microsoft IT Academy
(usted) derechos que puede ejercer en virtud de este contrato, y usted acepta una licencia no exclusiva y no
transferible para utilizar el eBook de MOAC y el Contenido para el Instructor solo segn los siguientes trminos y
condiciones:
a.
Usted reconoce que los eBooks de MOAC y el Contenido para el Instructor se le licencian por un periodo
breve y que el uso que haga de estos est sujeto a los trminos y condiciones de este contrato.
b.
Los siguientes son dos conjuntos independientes de derechos de uso. Solo uno de estos conjuntos se aplica
a su caso.
i.
Si usted es un miembro activo del Programa Microsoft IT Academy:
1.
Los eBooks de MOAC son solo para el uso de los instructores y estudiantes.
2.
Solo puede descargar la cantidad de copias del ttulo del eBook de MOAC aplicable necesarias
para los instructores que imparten la clase correspondiente a dicho ttulo y para los estudiantes
que asisten a la misma.
3.
Solo puede distribuir los ttulos del eBook de MOAC a los instructores que imparten una de las
clases correspondientes a dicho ttulo y a los estudiantes que asisten a la misma, a travs de:
o correo electrnico;
o un dispositivo USB seguro conectado directamente a los dispositivos personales
delosestudiantes;
o un sitio web protegido con contrasea al que solo tengan acceso los instructores
yestudiantes.
4.
Solo puede distribuir el Contenido para el Instructor a los instructores, con fines de preparacin
y enseanza de una de las clases correspondientes al ttulo del eBook de MOAC asociado.
5.
Antes de proporcionar acceso de cualquier tipo a un eBook de MOAC, se le notificar a cada
persona que solo puede acceder o utilizar un eBook de MOAC si acepta hacer uso de este en
cumplimiento con los siguientes criterios:
o Solo se utilizar el eBook de MOAC para fines personales de entrenamiento.
o Solo se instalar el eBook de MOAC en un dispositivo que sea de propiedad de la persona
o que est bajo el control de esta.
o No se copiar, modificar, imprimir, transmitir, publicar, mostrar, vincular,
reenviar ni distribuir el eBook de MOAC, ni total ni parcialmente.
o Solo se podr utilizar el ttulo del eBook de MOAC mientras dure la clase en la que la
persona est participando, es decir, mientras se ensee el ttulo del eBook de MOAC
o por un periodo de ciento ochenta (180) das, lo que sea mayor. Despus de esto, se
deben eliminar de forma segura todas las copias del ttulo del eBook de MOAC que la
persona posea o que estn bajo su control.
o El uso que se haga de los ttulos del eBook de MOAC tambin cumplir con todos los
trminos, condiciones o licencias adicionales que se apliquen, que acompaen o que
seincluyan en el eBook de MOAC.

www.wiley.com/college/microsoft
o llame al nmero de telfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canad)

|iii

6.

Antes de proporcionar acceso de cualquier tipo al Contenido para el Instructor, se le notificar


a cada instructor que solo puede acceder o utilizar el Contenido para el Instructor si acepta
hacer uso de este en cumplimiento con los siguientes criterios:
o Solo se utilizar el Contenido para el Instructor con fines de preparar y ensear la sesin
de entrenamiento.
o Solo se instalar el Contenido para el Instructor en un dispositivo que sea de propiedad
del instructor o que est bajo el control de este.
o No se copiar, modificar, imprimir, transmitir, publicar, mostrar, vincular,
reenviar ni distribuir el Contenido para el Instructor, ni total ni parcialmente.
o Solo se podr utilizar el Contenido para el Instructor mientras dure la clase en la que el
instructor ensea el ttulo del eBook de MOAC relacionado o por un periodo de ciento
ochenta (180) das, lo que sea mayor. Despus de esto, se deben eliminar de forma
segura todas las copias del ttulo del Contenido para el Instructor que el instructor posea
o que estn bajo su control.
o El uso que se haga del Contenido para el Instructor tambin cumplir con todos los
trminos, condiciones o licencias adicionales aplicables, que acompaen o que se
incluyan en el Contenido para el Instructor.

ii.

Si es un estudiante, usted reconoce y acepta que:


1.
Actualmente asiste a la clase de un miembro de IT Academy Program que ensea el eBook
de MOAC.
2.
Solo utilizar los eBooks de MOAC para fines personales de entrenamiento.
3.
Solo instalar el eBook de MOAC en un dispositivo que sea de su propiedad o que usted
controle.
4.
No copiar, modificar, imprimir, transmitir, publicar, mostrar, vincular, reenviar
nidistribuir el eBook de MOAC, ni total ni parcialmente.
5.
El uso que haga de los ttulos del eBook de MOAC tambin cumplir con todos los trminos,
condiciones o licencias adicionales que se apliquen, que acompaen o que se incluyan en el
ttulo del eBook de MOAC.
c. Salvo segn se autorice expresamente en la seccin b anterior, no puede cargar, copiar, modificar,
transmitir, hacer trabajos derivados, reenviar ni distribuir ningn eBook de MOAC ni Contenido para el
Instructor, ni total ni parcialmente, creado mediante descompilacin, as como tampoco el cdigo fuente
de ningn eBook de MOAC o Contenido para el Instructor. No puede imprimir copias de ningn eBook
de MOAC ni Contenido para el Instructor completo; sin embargo, puede imprimir pginas individuales o
secciones de los captulos del eBook de MOAC especficamente para su uso en el aula. No puede utilizar
ni total ni parcialmente el eBook de MOAC ni el Contenido para el Instructor con fines de retribucin
monetaria por medio de la venta, reventa, prstamo, transmisin, contratacin o cualquier otra forma
de explotacin del eBook de MOAC o del Contenido para el Instructor. Si transmite la propiedad de
cualquier eBook de MOAC o Contenido para el Instructor a terceros, se pondr trmino a su licencia
automticamente. Dicha terminacin ser adicional y sustituir cualquier recurso de equidad, civil
odeotro tipo disponibles para Wiley.
d. Solo podr utilizar el ttulo del eBook de MOAC y el Contenido para el Instructor mientras dure la clase en
la que se ensee el ttulo del eBook de MOAC especfico o por un periodo de ciento ochenta (180) das, lo
que sea mayor. Despus de esto, deber eliminar de forma segura todas las copias del ttulo del eBook de
MOAC y del Contenido para el instructor que posea o estn bajo su control.
e. 
LOS EBOOKS DE MOAC Y EL CONTENIDO PARA EL INSTRUCTOR SE LICENCIAN TAL CUAL Y SEGN
DISPONIBILIDAD, SIN GARANTAS DE NINGN TIPO.
f. Usted reconoce que todos los derechos (incluyendo, sin limitacin, la propiedad intelectual, las patentes
ylos secretos empresariales) en los eBook de MOAC y el Contenido para el Instructor son propiedad nica
y exclusiva de Wiley y sus licenciantes. La aceptacin de este contrato no lo convierte en propietario de
los eBooks de MOAC ni del Contenido para el Instructor, sin embargo, s le concede una licencia limitada
para utilizar el eBook de MOAC y el Contenido para el Instructor de acuerdo con las disposiciones de este
contrato. Usted acepta proteger el eBook de MOAC y el Contenido para el Instructor del uso, la carga,
la descarga, la reproduccin o la distribucin no autorizados. Adems, acepta no traducir, descompilar,
desensamblar ni realizar ingeniera inversa de ninguno de los eBooks de MOAC ni del Contenido para el
Instructor. Wiley se reserva todos los derechos que no se le concedan expresamente en este contrato.

iv|

www.wiley.com/college/microsoft
o llame al nmero de telfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canad)

Prlogo del editor


La visin editorial de Wiley para la serie de cursos Microsoft Official Academic Course es
proporcionar a los alumnos e instructores las habilidades y los conocimientos necesarios para
usar la tecnologa de Microsoft de forma eficaz en todos los aspectos de sus vidas personales
y profesionales. Para que los educadores y alumnos aprovechen al mximo las herramientas
de software de Microsoft y sean ms productivos, se requiere una enseanza de calidad. Por
tanto, nuestra misin es hacer que nuestros programas de enseanza sean compaeros docentes
de confianza de por vida.
Para lograr esta misin, Wiley y Microsoft se han asociado y han desarrollado programas
educativos de la ms alta calidad dirigidos a trabajadores de la informacin, profesionales de
TI y desarrolladores. Los materiales creados por esta asociacin llevan el nombre comercial
Microsoft Official Academic Course, asegurando a instructores y alumnos por igual que el
contenido de estos libros de texto est totalmente respaldado por Microsoft, y que proporciona
informacin e instruccin sobre los productos de Microsoft de la ms alta calidad. Los libros
de texto de Microsoft Official Academic Course son, de alguna manera, ms oficiales:
constituyen el material didctico oficial para los miembros de Microsoft IT Academy.
La serie de cursos Microsoft Official Academic Course se centra en el desarrollo laboral. Estos
programas estn dirigidos a aquellos alumnos que buscan ingresar al mercado laboral, cambiar
de trabajo o embarcarse en nuevas carreras como trabajadores de la informacin, profesionales
de TI y desarrolladores. Los programas Microsoft Official Academic Course atienden estas
necesidades haciendo hincapi sobre escenarios con entornos de trabajo autnticos con una gran
cantidad de proyectos, ejercicios, casos prcticos y evaluaciones.
Los cursos de Microsoft Official Academic Course estn asignados a la extensa investigacin
y anlisis de trabajo en tareas de Microsoft, la misma investigacin y anlisis que se usa para
desarrollar los exmenes de Microsoft Technology Associate (MTA) y Microsoft Certified
Technology Specialist (MCTS). Los libros de texto se centran en competencias reales de los
puestos de trabajos reales. Mientras los alumnos trabajan en los proyectos y ejercicios de
los libros de texto, mejoran su nivel de conocimiento y su capacidad para aplicar la ltima
tecnologa de Microsoft a las tareas diarias. Estos alumnos tambin obtienen credenciales para
crear un Currculum Vitae que sirva de ayuda a la hora de encontrar un trabajo, mantener el
trabajo actual o continuar con su educacin.
El concepto de aprendizaje permanente es hoy una necesidad mxima. Los puestos de trabajo,
e incluso todas las categoras laborales, estn cambiando con tanta rapidez que ninguno de
nosotros puede seguir siendo competitivo y productivo sin actualizar continuamente nuestras
habilidades y capacidades. Las ofertas de Microsoft Official Academic Course, y su enfoque en
la preparacin de exmenes de certificacin de Microsoft, proporcionan un medio para que las
personas adquieran y actualicen de forma eficaz sus habilidades y conocimientos. Wiley apoya a
los alumnos en este esfuerzo a travs de la elaboracin y distribucin de estos cursos como editor
acadmico oficial de Microsoft.
Actualmente, las publicaciones educativas deben prestar atencin a la hora de proporcionar
gran calidad de impresin y contenido electrnico slido. Mediante la integracin de los
productos Microsoft Official Academic Course, WileyPLUS y las certificaciones de Microsoft
estamos en mejores condiciones para poder ofrecer soluciones eficientes de aprendizaje a los
alumnos y profesores por igual.
Joseph Heider
Director general y Vicepresidente Senior
www.wiley.com/college/microsoft
o llame al nmero de telfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canad)

|v

Prefacio
Bienvenido al programa Microsoft Official Academic Course (MOAC) para Conceptos
fundamentales de bases de datos. MOAC representa la colaboracin entre Microsoft Learning y
la editorial John Wiley & Sons, Inc. Microsoft y Wiley se unieron para crear una serie de libros
de texto que ofrecieran soluciones de enseanza convincentes e innovadoras para los instructores
y destrezas de aprendizaje superiores para los alumnos. Estos libros de texto maximizan la
transferencia de conocimientos en un tiempo mnimo gracias a la preparacin e instruccin por
el conocimiento en profundidad de los creadores de productos de Microsoft, as como por la
elaboracin de los libros de texto por una editorial reconocida mundialmente debido a la calidad
pedaggica de sus productos. Se desafa a los alumnos para que alcancen su potencial mediante
nuevos conocimientos tcnicos como miembros altamente productivos del rea de trabajo.
Debido a que esta base de conocimiento proviene directamente de Microsoft, creador de los
exmenes Microsoft Certified Technology Specialist (MCTS) y Microsoft Technology Associate
(MTA), (https://www.microsoft.com/learning/es-es/default.aspx), seguro que recibir la cobertura de
contenido ms relevante para su xito personal y profesional. La participacin directa de Microsoft
no solo le asegura que el contenido de los libros de texto MOAC es preciso y est actualizado;
tambin significa que recibir la mejor instruccin posible para tener xito en los exmenes de
certificacin y en el entorno de trabajo.

Programa Microsoft Official Academic Course

La serie Microsoft Official Academic Course es un programa completo dirigido a instructores e


instituciones para preparar e impartir grandes cursos sobre tecnologas de software de Microsoft.
Con MOAC, reconocemos que, debido al rpido ritmo de cambios en la tecnologa y el plan de
estudios desarrollado por Microsoft, existe un conjunto de necesidades ms all de las herramientas
de instruccin acadmica para que un instructor est preparado para impartir el curso. El programa
MOAC trata de proporcionar soluciones para todas estas necesidades de manera sistemtica con
el fin de garantizar una experiencia de entrenamiento satisfactoria y gratificante para el instructor
y el alumno: aprendizaje tcnico y plan de estudios para la preparacin del instructor con nuevas
versiones de software; el propio software para que los alumnos lo usen en casa para la adquisicin
de conocimientos prcticos, evaluacin y validacin del desarrollo de habilidades; y un excelente
conjunto de herramientas para realizar la instruccin en el aula y en el laboratorio. Todas ellas son
importantes para la entrega sin problemas de un interesante curso sobre software de Microsoft, y
todas se proporcionan con el programa MOAC. Pensamos en el siguiente modelo como medida para
asegurar que le apoyamos completamente en su objetivo de impartir un curso excelente. Al evaluar
sus opciones de material de instruccin, puede que desee usar este modelo con fines comparativos
conlos productos disponibles:

vi|

www.wiley.com/college/microsoft
o llame al nmero de telfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canad)

Recorrido por el libro ilustrado

Caractersticas pedaggicas

El libro de texto MOAC para Conceptos fundamentales de bases de datos est diseado para
cubrir todos los objetivos de aprendizaje del examen 98-364 de MTA, que se conoce como su
leccin matriz de conocimientos. Los objetivos del examen Microsoft Technology Associate
(MTA) se destacan a lo largo del libro de texto. Muchas caractersticas pedaggicas se han
desarrollado de forma especfica para el programa Microsoft Official Academic Course.
Mediante una extensa informacin sobre los procedimientos y conceptos tcnicos integrados,
a lo largo del libro de texto se plantean desafos para el alumno y el instructor por igual. El
recorrido por el libro ilustrado que aparece a continuacin proporciona una gua de caractersticas
que contribuyen al plan pedaggico del programa Microsoft Official Academic Course. La
siguiente es una lista de las principales caractersticas de cada leccin diseada para preparar
a los alumnos para el xito a medida que continan con su educacin en TI, con los exmenes
de certificacin y en el entorno de trabajo:
Cada leccin comienza con una Matriz de dominio de objetivos. Ms que una lista
estndar de objetivos de aprendizaje, la leccin matriz de conocimientos se relacionar
con cada conocimiento del software tratado en la leccin del objetivo del examen
especfico.
Instrucciones paso a paso concisas y frecuentes ensean a los alumnos caractersticas
nuevas y ofrecen la oportunidad de ponerlas en prctica. Los pasos numerados
proporcionan instrucciones paso a paso detalladas que sirven de ayuda para que los
alumnos adquieran conocimientos de software.
Las ilustraciones (en particular, imgenes de la pantalla) proporcionan informacin
visual mientras los alumnos realizan los ejercicios. Estas imgenes refuerzan los conceptos
clave, proporcionan pistas visuales acerca de los pasos que se deben realizar y permiten
alos alumnos comprobar su progreso.
Las listas de Trminos clave al principio de cada leccin proporcionan a los alumnos
un vocabulario tcnico importante. Cuando se usan estos trminos ms adelante en la
leccin, aparecen en fuente negrita cursiva donde se definen.
Un atractivo punto de uso son las ayudas para el lector, que se encuentran a lo largo
delas lecciones, que indican a los alumnos por qu un tema es importante (Conclusin)
o les proporcionan consejos tiles (Tome nota). Las ayudas para el lector tambin
proporcionan informacin adicional relevante o general que agrega valor a la leccin.
Las caractersticas de Certificacin disponible que aparece por todo el texto sealan
alos alumnos dnde se cubre un objetivo especfico de certificacin. Proporcionan a
los estudiantes la oportunidad de comprobar el grado de comprensin sobre ese objetivo
MTA particular y, si fuera necesario, revisar la seccin de la leccin donde se trata.
MOAC ofrece una preparacin completa para la certificacin MTA.
Preguntas al final de la leccin: la seccin Evaluacin de conocimientos ofrece una
gran variedad de preguntas que pueden ser de opciones mltiples, verdadero o falso,
coincidentes o de rellenar espacios en blanco.
Escenarios al final de la leccin: los escenarios posibles de Evaluacin de competencias
y los escenarios posibles de Evaluacin de aptitudes son proyectos que ponen a prueba
lacapacidad de los alumnos para aplicar lo que han aprendido en la leccin.

www.wiley.com/college/microsoft
o llame al nmero de telfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canad)

|vii

viii|Recorrido por el libro ilustrado

Caractersticas de la leccin

Crear objetos
de base de datos

LECCIN

M AT R I Z D E D O M I N I O D E O B J E T I V O S
Habilidades y Conceptos

Objetivo del Examen MTA

Nmero de Objetivo del Examen MTA

Definir tipos de datos

Elegir tipos de datos.

2.1

Crear y usar tablas

Comprender las tablas


y cmo crearlas.

2.2

Crear vistas

Crear vistas.

2.3

Crear procedimientos almacenados

Crear procedimientos
almacenados y funciones.

2.4

Matriz de dominio de objetivos

TRMINOS CLAVE
tipo de datos

tablas

inyeccin de cdigo SQL

vistas

procedimientos almacenados

Trminos clave

Suponga que es un diseador de bases de datos de una gran compaa de importacin


exportacin. Su superior le ha pedido ayuda para actualizar algunas formas de hacer
negocios de la compaa. Le explica que la compaa ya no atender los pedidos que
se realicen va fax; en cambio, esas solicitudes de pedidos se recibirn a travs de un
servidor web o del correo electrnico. Espera que usted disee una base de datos
para almacenar y procesar estos pedidos electrnicos.

n Definir

28|Leccin 2
Figura 2-1
Tipos de conversiones
implcitas y explcitas

tipos de datos

CONCLUSIN

En esta seccin, aprender los distintos tipos de datos, por qu son importantes y
cmo afectan a las necesidades de almacenamiento. Al examinar los tipos de datos,
es necesario comprender que cada tipo est diseado para realizar una funcin dentro
de una tabla, as como que ciertos tipos funcionarn mejor en columnas, variables
locales, expresiones o parmetros. Adems, al elegir un tipo de datos para satisfacer sus
necesidades, debe asegurarse de que cualquiera que sea el tipo elegido proporcionar
el tipo ms eficaz de almacenamiento y consulta de esquemas. De hecho, uno de los
principales roles de un administrador de bases de datos es garantizar que los datos
de cada base de datos se mantengan uniformes al decidir qu tipo de datos es el ms
adecuado para el mdulo de aplicacin en el que se est trabajando actualmente.

20

54|Leccin 3

Esto generar el siguiente resultado:

USO DE CADENAS DE CARACTERES

(2 filas afectadas)

Un carcter normal usa un byte de almacenamiento por cada carcter, lo que le permite definir
uno de los 256 caracteres posibles (8 bits en un byte y 2^8 = 256), con capacidad para ingls
y algunos idiomas europeos. Un carcter Unicode usa dos bytes de almacenamiento por
carcter, por lo que se pueden representar uno de los 65.536 caracteres (16 bits en 2 bytes
y 2^16 = 65.536). El espacio adicional permite a Unicode almacenar caracteres de casi
cualquier idioma, incluyendo el chino, japons, rabe, etctera.

Realmente es tan simple como aprovechar el poder de administracin y modificacin


de la base de datos. Ahora, exploraremos algunos otros tipos de modificacin de datos.

Actualizar datos y bases de datos


CONCLUSIN

CERTIFICACIN
DISPONIBLE
Qu comando se usa
para cambiar los datos
existentes en una tabla?
3.3

Como administrador de bases de datos, debe entender cmo se actualizan los datos
en una base de datos, cmo se escriben los datos de actualizacin en una base de datos
con las instrucciones UPDATE apropiadas, as como cmo actualizar una base de datos
mediante una tabla.
La funcin de la instruccin UPDATE es cambiar los datos de una tabla o vista. Al igual
que cualquier manipulacin de datos o clusula de modificacin e instruccin de SQL,
puede usar esta instruccin ya sea en SSMS o en una ventana del editor de texto.

Uso de la instruccin UPDATE


La clusula UPDATE permite modificar los datos almacenados en tablas mediante atributos
de datos como los siguientes:
UPDATE <nombre_tabla>
SET <atributo> = <valor>
WHERE <condiciones>

Ayuda para
el lector
Conclusin
Alerta de
certificacin
disponible

TOME NOTA

Cualquier tipo de datos que


no contiene el elemento
VAR (char, nchar) en el
nombre es de longitud fija.

Como se ha visto desde el inicio de esta leccin, se puede leer este tipo de instruccin
SQL como se hara con cualquier frase. Supongamos que desea actualizar una tabla en
la que un identificador de columna determinada refleje un determinado valor. Quizs
desea tener un atributo de un nuevo supervisor (como en el ejemplo de los empleados),
Doug Able, asignado a los nuevos empleados para su aprendizaje. Ese supervisor podra
tener el atributo establecido para l mismo (consultar la tabla del departamento) como
un identificador de 4 y la clusula WHERE se satisface haciendo que se corresponda con
la condicin NULL para los empleados sin supervisor. Vamos a escribir ese escenario
de instruccin UPDATE para actualizar el ejemplo anterior.

Al escribir la sintaxis de los diferentes tipos de datos, hay que tener en cuenta que tambin
difieren en la forma en que se expresan los literales (valor de datos fijo). Un carcter
normal literal siempre se expresa entre comillas simples. Por ejemplo:
Esta es la apariencia de una cadena de caracteres normales literales

Sin embargo, cuando se expresa un carcter Unicode literal, la letra N (de Nacional)
debe aparecer como prefijo de las comillas simples. Por ejemplo:
NEsta es la apariencia de un carcter Unicode literal

Cuando se usa un elemento VAR, SQL Server preserva el espacio en la fila en la que ese
elemento reside a partir del tamao definido de la columna (y no a partir del nmero real
de caracteres en la propia cadena de caracteres), ms un extra de dos bytes de datos para

Diagramas
informativos

El primer paso sera agregar un registro en la tabla departamento con el nombre y la


informacin del identificador de departamento del nuevo supervisor con la instruccin INSERT:
INSERT INTO department (first_name, last_name, department_id)
VALUES (Doug, Able, 4)

La respuesta sera como se muestra a continuacin:


(1 fila afectada)

TOME NOTA

Si no especifica qu
registros se van a actualizar,
todos los registros o filas
se actualizarn con el
nuevo valor. Esto puede
resultar perjudicial.

Ahora, debemos actualizar la tabla de empleados de forma que refleje cualquier empleado
que no tenga un supervisor de departamento asignado. En este caso, la instruccin UPDATE
se vera de la siguiente manera:
UPDATE employees
SET department = 4
WHERE department IS NULL

El resultado se muestra en la Tabla 3-4.

Ayuda para el lector


Tome nota

www.wiley.com/college/microsoft
o llame al nmero de telfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canad)

Recorrido por el libro ilustrado|ix

Manipular datos|49

que identificar la columna correspondiente en cada una de las tablas en las que desea
escribir la consulta y desde las que obtener los resultados solicitados. En este ejemplo,
la clave externa en la Tabla 3-1 se identifica en la columna department_id y, en la Tabla
3-2, la clave externa se identifica como la columna coincidente department: Dicho de
otra forma, el identificador de departamento de la tabla Department est vinculado a la
columna del departamento de la tabla Employees.
Tabla 3-1
Tabla de empleados

first_name

last_name

employee_id

department

James

Alexander

610001

David

Thompson

620002

Frances

Drake

610003

Alexandria

Link

610004

Peter

Link

620005

David

Cruze

610007

NULL

Tablas de fcil lectura

Tabla 3-2
Tabla del departamento

department_id

first_name

last_name

Jane

Horton

Mitch

Simmons

Paul

Franklin

La combinacin de datos entre tablas puede resultar muy complicada, sobre todo si se van
a crear listas especficas de miles de filas de datos. Mediante la consulta de instruccin
SELECT se pueden generar listas individuales, pero puede que se obtenga como resultado
toda la informacin que se necesita en un formato de lista individual.
La palabra clave INNER JOIN simplifica esta recuperacin de datos no solo por usar la informacin
de las dos tablas a partir de las que se requiere el resultado, sino por usar la palabra clave
INNER JOIN para especificar las condiciones necesarias para las que aparecern los registros.
Por ejemplo, a partir de las dos tablas de ejemplo, es posible que desee crear una lista
que muestre los empleados que trabajan para cada uno de los diferentes supervisores
de departamento. Escribira la instruccin de consulta SQL de la siguiente manera:
SELECT employees.first_name, employees.last_name,
department.first_name, department.last_name
FROM employees INNER JOIN department
ON employees.department = department.department_id

A continuacin, se muestra el resultado:


first_name

James

last_name

Alexander

first_name

Jane

last_name

Horton

David

Thompson

Jane

Horton

Frances

Drake

Jane

Horton

Alexandria

Link

Mitch

Simmons

Peter

Link

Mitch

Simmons

Antoin

Drake

Paul

Franklin

32|Leccin 2

(6 filas afectadas)

4. Guarde la nueva tabla seleccionando Archivo > Guardar Table_1, como se muestra
en la Figura 2-5.
Figura 2-5
Guardar la nueva tabla

52|Leccin 3
CERTIFICACIN
DISPONIBLE
Qu comando se usa para
agregar datos a una tabla?
3.2

interfaz grfica (SSMS) y el segundo usa la instruccin INSERT. De cualquier manera se


logra el mismo objetivo.

Imgenes
de la pantalla

Insertar datos
5. Escriba el nombre para la tabla que est guardando, como se muestra en la Figura 2-6.

Primero vamos a saber cmo insertar datos en una tabla con SSMS antes de seguir adelante
con el mtodo de sintaxis.

Figura 2-6

INSERTAR DATOS CON SQL SERVER MANAGEMENT STUDIO

Nombre de la tabla

PREPRESE. Antes de empezar, asegrese de iniciar la aplicacin SSMS y conectarse a la


base de datos en la que desea trabajar. Despus, realice los siguientes pasos:
La nueva tabla aparecer en la seccin Tablas, como se representa en la Figura 2-7.

1. Compruebe que se ha conectado a la base de datos en la que desea trabajar (ver Figura 3-1).
Figura 3-1

Figura 2-7

Conexin a la base
de datos deseada

La tabla recin creada

2. Expanda la carpeta Bases de datos haciendo clic en el icono ms (+) junto a la palabra
Base de datos.
3. Expanda la carpeta de la base de datos que desea modificar.
4. Expanda la carpeta Tablas haciendo clic en el icono ms junto a la palabra Tablas.
5. Haga clic con el botn secundario en el nombre de la tabla y elija Editar las primeras
200 filas (vea la Figura 3-2).
Figura 3-2

Ejercicios
paso a paso

Editar las primeras 200 filas

www.wiley.com/college/microsoft
www.Wiley.com/college/Microsoft
oder
o llame al
nmero de telfono
gratuito de MOAC:
764-7001
(solo
UU. y Canad)
gebhrenfreie
MOAC-Rufnummer:
1+(888)1+(888)
764-7001
(nur USA
undEE.Kanada)

x|Lesson 1 por el libro ilustrado


x|Recorrido

Crear objetos de base de datos|39

RESUMEN DE CONOCIMIENTOS
En esta leccin, ha aprendido lo siguiente:
Untipodedatosesunatributoqueespecificaeltipodedatosqueunobjetopuedecontener,
as como el nmero de bytes que ocupa cada tipo de datos.
Comoreglageneral,sisetienendostiposdedatosquesolodifierenenelnmerodebytes
que usa cada uno, el que tiene ms bytes tendr mayor intervalo de valores u ofrece mayor
precisin, o ambos.
MicrosoftSQLServerincluyeunampliointervalodetiposdedatospredefinidosconocidoscomo
tipos de datos integrados. La mayora de las bases de datos que se crean o se usan emplean solo
estos tipos de datos.
LostiposdedatosnumricosexactossonlostiposdedatosmscomunesqueSQLServerusa
para almacenar informacin numrica.
int es el principal tipo de datos de valores enteros (nmero entero).
Precisin(p) es el nmero mximo total de dgitos decimales que se pueden almacenar en un
tipo de datos numrico, tanto a la izquierda como a la derecha del punto decimal; este valor
debe ser al menos 1 y como mximo 38. El nmero de precisin predeterminado es 18.
money y smallmoney son tipos de datos de Transact-SQL que se deben usar para representar
valores monetarios o de moneda. Ambos tipos de datos tienen una precisin de una
diezmilsima de las unidades monetarias que representan.
Lostiposdedatosnumricosaproximadosnoseusancontantafrecuenciacomootrostipos
de datos de SQL Server. Si necesita ms precisin (ms posiciones decimales) de la que dispone
con los tipos de datos numricos exactos, debe usar los tipos de datos float o real, puesto que
ambos suelen tomar bytes adicionales de almacenamiento.
Lostiposdedatosdefechayhoraserefieren,porsupuesto,afechasyhoras.Estostipos
de datos incluyen date, datetime2, datetime, datetimeoffset, smalldatetime y time.
SQLServeradmitelasconversionesimplcitas,quesepuedenproducirsinespecificarlafuncin
de llamada real (cast o convert). Las conversiones explcitas necesitan el uso de las funciones
cast o convert especficamente.
Uncarcternormalusaunbytedealmacenamientoporcadacarcter,quelepermitedefinir
uno de los 256 caracteres posibles; con capacidad para ingls y algunos idiomas europeos.
UncarcterUnicodeusadosbytesdealmacenamientoporcarcter,porloquesepuede
representar uno de los 65.536 caracteres. Esta capacidad adicional significa que se pueden
almacenar caracteres Unicode desde casi cualquier idioma.
CuandoseusaunelementoVAR,SQLServerpreservaelespacioenlafilaenlaqueeste
elemento reside a partir del tamao definido de la columna y no a partir del nmero real
de caracteres de la propia cadena de caracteres.
LascadenasdecaracteresUnicodencharynvarcharpuedenserfijasovariables,comolas
cadenas de caracteres normales; sin embargo, usan el conjunto de caracteres UNICODE UCS-2.
Elpropsitodeunatablaesproporcionarunaestructuraparaalmacenardatosenunabase
de datos relacional.
Unavistaessimplementeunatablavirtualqueconstadediferentescolumnasdeunaoms
tablas. A diferencia de una tabla, una vista se almacena en una base de datos como un objeto
de consulta; por lo tanto, una vista es un objeto que obtiene los datos de una o ms tablas.
UnprocedimientoalmacenadoesunainstruccinSQLescritapreviamentequeseha
almacenado o guardado en una base de datos.
UnainyeccindecdigoSQLesunataqueenelqueseinsertacdigomalintencionadoenlas
cadenas que despus pasan a instrucciones de SQL Server en espera de anlisis y ejecucin.

Resumen de
conocimientos

40|Leccin 2

Evaluacin de conocimientos
Rellene los espacios en blanco
Complete las oraciones siguientes escribiendo la palabra o palabras correctas en los
espacios en blanco proporcionados.
1. Cada expresin ____________, ____________ y ____________ siempre tiene
un tipo de datos relacionado.
2. Un bit es un tipo de datos entero de Transact-SQL que puede tomar un ____________
de 1, 0 o NULL.
3. Al definir el costo de un producto, lo mejor es usar el tipo de datos ___________.
4. Es importante considerar el uso de conjuntos de datos ____________ en la
construccin de tablas dependientes del horario de verano.
5. SQL Server admite conversiones ____________ sin usar las funciones de llamada
reales (cast o convert).
6. Un carcter normal usa ____________ byte(s) de almacenamiento para cara carcter,
mientras que un carcter Unicode necesita ____________ byte(s) de almacenamiento.

Escenarios posibles

7. El conjunto de datos char es de ____________ de longitud y tiene una longitud


de ____________ bytes.
8. El propsito de una tabla es proporcionar ____________ para almacenar datos
en una base de datos relacional.
9. Al crear una vista, asegrese de contar con ____________ en el diseo.

Manipular datos|59
Evaluacin

de competencias
Escenario 3-1: Uso del comando SELECT
Le acaban de contratar como administrador de bases de datos para AdventureWorks
Corporation. Un administrador de red desea saber cmo extraer informacin de la base
de datos de AdventureWorks. Por lo tanto, necesita responder a las siguientes preguntas:
1. Qu comando usara para mostrar los registros de una tabla?
2. Qu comando usara para mostrar los registros FirstName y LastName de la tabla
Users?
3. Qu comando usara para mostrar todos los registros de la base de datos Member
y ordenarlos por la columna FirstName?
4. Qu comando usara para mostrar todos los registros de la tabla Suppliers que
contengan City of Sacramento?
5. Qu comando usara para mostrar los registros CompanyName, ContactName y
PhoneNumber de la tabla Suppliers que contengan un identificador de proveedor mayor
que 1000?
6. Qu comando usara para mostrar los registros CompanyName, ContactName y
PhoneNumber de la tabla Customers para las compaas con ms de 100 empleados
que residan en el estado de California.

Escenario 3-2: Eliminar datos de tablas

10. Cuando se realizan consultas a una base de datos, se pueden obtener resultados
ms rpidamente al ____________ tablas y vistas correctamente.

Varias opciones
Rodee con un crculo la letra correspondiente a la mejor respuesta.
1. Cul de los siguientes no es un tipo de datos?
a. Numricos exactos
b. Numricos aproximados
c. Cadena ANSI
d. Espacial
2. Cmo se llama cuando un tipo de datos se convierte automticamente en otro tipo
de datos?
a. conversin implcita
b. conversin explcita
c. conversin dinmica
d. conversin esttica
3. Cul de las siguientes afirmaciones no son ciertas sobre el tipo de datos int?
a. int es un entero.
b. bigint se usa cuando el valor excede el intervalo del tipo de datos int.
c. Un entero usa 8 bytes para almacenar datos.
d. Las funciones solo devolvern bigint si la expresin original tiene el mismo tipo de datos.
4. Requieren las conversiones implcitas una caracterstica de llamada real (por ejemplo,
cast o convert)?
a. S
b. No

Despus de revisar junto con el administrador de red algunos de los registros de la base de
datos AdventureWorks, deciden eliminar algunos registros antiguos. Este escenario plantea
las siguientes preguntas:
1. Qu comando usara para quitar todos los registros de la tabla Customers donde la
edad es inferior a 18?
2. Qu comando usara para quitar todos los registros de la tabla Schools con un valor
de inscripcin inferior a 500?
3. Qu comando usara para quitar todos los registros de la tabla Contact cuyo pas no
es USA y al mismo tiempo liberar el espacio usado por esos registros?
4. Qu comando usara para eliminar la tabla Temp?
Evaluacin

Evaluacin de conocimientos

de aptitudes
Escenario 3-3: Manipular datos mediante las instrucciones SELECT y JOIN
Lo acaban de contratar como administrador de bases de datos de AdventureWorks
Corporation. Ha surgido alguna confusin debido a que las rdenes de compra de la
compaa se almacenan en dos tablas. Por lo tanto, necesita crear una consulta para
combinar la tabla PurchaseOrderHeader de la base de datos de ejemplo, AdventureWorks,
consigo misma de modo que proporcione una lista de los pedidos
de compra emparejados. Cada fila incluye dos pedidos de compra con proveedores
y mtodos de envo idnticos.
1. Tras abrir SSMS y obtener acceso a la base de datos AdventureWorks, qu
consulta usara en la base de datos AdventureWorks para mostrar los registros
ProductSubcategoryID e ProductCategoryID de la tabla Production.ProductSub y
contuviera la palabra Bike? Tambin desea ordenar los registros por SubcategoryName.
2. Qu consulta usara para combinar la tabla ProductCategory con la tabla
ProductSubcategory para recuperar la columna Name de la tabla ProductCategory?

www.wiley.com/college/microsoft
o llame al nmero de telfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canad)

Convenciones y caractersticas
que se usan en este libro
En este libro se usan determinadas convenciones para fuentes, smbolos y ttulos que resaltan
la informacin importante y llaman la atencin sobre determinados pasos. Para obtener ms
informacin sobre las caractersticas de cada leccin, consulte la seccin Recorrido por el libro
ilustrado.
Convencin

Significado


Esta caracterstica proporciona un breve resumen
delmaterial que se trata en la seccin que sigue.

CONCLUSIN

CERRAR 
Las palabras en letras maysculas indican instrucciones

para abrir, guardar o cerrar archivos o programas. Tambin


sealan los elementos que se deben comprobar o las
acciones que se deben realizar.

CERTIFICACIN DISPONIBLE 
Esta caracterstica seala un punto en el texto donde se
cubre un objetivo especfico de certificacin. Proporciona
la oportunidad de comprobar el grado de comprensin de
ese objetivo MTA particular y, si fuera necesario, revisar la
seccin de la leccin donde se trata el objetivo.

Las ayudas para el lector aparecen en recuadros
TOME NOTA*
sombreados que se encuentran en el texto. Tome nota
proporciona consejos tiles relacionados con tareas
o temas concretos
Estas notas proporcionan referencias a cualquier
REF
informacin tratada en otra parte del libro de texto
o describen caractersticas interesantes que no se abordan
directamente en el tema o ejercicio actual.

Alt + TAB

Un signo ms (+) entre dos nombres de teclas indica que


se deben presionar ambas teclas al mismo tiempo. Las
teclas que se le indique que debe presionar en un ejercicio,
aparecern en el tipo de fuente que se muestra aqu.

Ejemplo Los trminos clave aparecen en fuente negrita cursiva


cuando se definen.

www.wiley.com/college/microsoft
o llame al nmero de telfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canad)

|xi

Programa de apoyo
para el instructor
Los programas Microsoft Official Academic Course van acompaados de una generosa
variedad de recursos que incorporan extensas imgenes del libro de texto para formar
un paquete pedaggico coherente. Estos recursos proporcionan todo el material que los
instructores necesitan usar para impartir sus cursos. Los recursos disponibles en lnea
parasu descarga incluyen:
MSDN Academic Alliance est diseado para proporcionar herramientas de
desarrollo ms fciles y econmicas, productos y tecnologas disponibles para
profesores y alumnos en los laboratorios, aulas y en los equipos de los alumnos.
Existe una suscripcin gratuita disponible durante tres aos para usuarios MOAC
cualificados.
Nota: Microsoft Windows Server 2008, Microsoft Windows 7 y Microsoft Visual
Studio se pueden descargar de MSDN AA para uso de los alumnos en este curso.
La Gua del instructor contiene las soluciones a todos los ejercicios del libro de
texto y programas de estudio de varios plazos. La Gua del instructor tambin incluye
resmenes de captulos y notas de la leccin. La Gua del instructor est disponible
desde el sitio del libro complementario (http://www.wiley.com/college/microsoft).
El banco de pruebas contiene cientos de preguntas en formato de opciones
mltiples, verdadero o falso, respuesta corta y redaccin, y est disponible para la
descarga desde el sitio del libro complementario del instructor (www.wiley.com/
college/microsoft). Tambin se proporciona una clave de respuesta completa.
Un juego completo de presentaciones de PowerPoint e imgenes est disponible en el
sitio del libro complementario del instructor (http://www.wiley.com/college/microsoft)
para mejorar las presentaciones en el aula. Se proporcionan aproximadamente 50
diapositivas de PowerPoint para cada leccin. Adaptadas a la cobertura de actualidad
del texto y a la matriz de conocimientos, estas presentaciones estn diseadas para
transmitir conceptos claves abordados en el texto. Todas las imgenes del texto son del
sitio del libro complementario del instructor (http://www.wiley.com/college/microsoft).
Puede incorporarlas a las presentaciones de PowerPoint o usarlas para crear sus propias
transparencias y documentos. Mediante el uso de estas imgenes en las conversaciones
en el aula, puede ayudar a centrar la atencin de los alumnos sobre los elementos
clave de las tecnologas tratadas y ayudarles a entender cmo usar eficazmente estas
tecnologas en el entorno de trabajo.
Cuando se trata de mejorar la satisfaccin en el aula, no hay mejor fuente de ideas
e inspiracin que sus colegas. La red de profesorado de Wiley, Wiley Faculty
Network, conecta a los profesores con la tecnologa, facilita el intercambio
de prcticas mejoradas y contribuye a aumentar la eficiencia y la eficacia de
la enseanza. Las actividades de la red de profesorado incluyen entrenamiento
tecnolgico y tutoriales, seminarios virtuales, intercambio de conocimientos e ideas
entre iguales, asesoramiento personal e intercambio de recursos. Para obtener ms
detalles, visite www.WhereFacultyConnect.com.

www.wiley.com/college/microsoft
o llame al nmero de telfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canad)

|xiii

xiv|Programa de apoyo para el instructor

DREAMSPARK PREMIUM: SUSCRIPCIN GRATUITA DURANTE


3AOS DISPONIBLE PARA USUARIOS
DreamSpark Premium est diseado para proporcionar de la forma ms fcil y econmica
que las universidades tengan disponibles las ltimas herramientas de desarrollo, productos
y tecnologas de Microsoft para profesores y alumnos en los laboratorios, aulas y en los
equipos de los alumnos. DreamSpark Premium es un programa de suscripcin anual para
los departamentos de enseanza de cursos de ciencias, tecnologa, ingeniera y matemticas
(STEM). La suscripcin proporciona una solucin completa para mantener los laboratorios
acadmicos, profesores y alumnos a la vanguardia de la tecnologa.
El software disponible a travs del programa DreamSpark Premium se proporciona sin gasto
adicional para los departamentos asociados a travs de la colaboracin editorial entre Wiley
y Microsoft.
Para obtener ms detalles, pngase en contacto con su representante de Wiley.
Para obtener ms informacin sobre el programa DreamSpark Premium, vaya al sitio web
de Microsoft
DreamSpark.
Nota: Windows Server y SQL Server se pueden descargar de DreamSpark Premium para su
uso en este curso.

Direcciones web y nmeros de telfono importantes

Para localizar al representante de Wiley Higher Education en su rea, vaya a


http://www.wiley.com/college y haga clic en el vnculo Quin es mi representante?
en la parte superior de la pgina, o llame al nmero gratuito de MOAC: 1 + (888)
764-7001 (solo EE. UU. y Canad).
Para obtener ms informacin sobre cmo llegar a ser un especialista en tecnologa
certificado de Microsoft (Certified Technology Specialist) y sobre la disponibilidad
deexmenes, visite www.microsoft.com/learning/mcp/mcp.

www.wiley.com/college/microsoft
o llame al nmero de telfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canad)

Programa de apoyo
para el alumno

Recursos adicionales

Sitio web del libro complementario (www.wiley.com/college/microsoft)


El sitio del libro complementario para alumnos de la serie MOAC incluye recursos, archivos
de ejercicios y vnculos web que se usarn junto con este curso.

Ediciones de escritorio Wiley


Las ediciones de escritorio Wiley MOAC son innovadoras versiones electrnicas de los
libros de texto impresos. Los alumnos compran la versin de escritorio con hasta el 50 %
de descuento sobre el precio del texto impreso en los EE. UU. y obtienen un valor aadido
en la permanencia y portabilidad. Las ediciones de escritorio Wiley tambin proporcionan
a los alumnos numerosos beneficios adicionales que no se encuentran disponibles en otras
soluciones de texto electrnico.
Las ediciones de escritorio Wiley NO son suscripciones, los alumnos descargan la edicin de
escritorio Wiley en los escritorios del equipo. Los alumnos son propietarios de los contenidos
que compran y los mantienen durante todo el tiempo que deseen. Una vez que la edicin de
escritorio Wiley se descarga en el escritorio del equipo, los alumnos tienen acceso instantneo
a todos los contenidos sin necesidad de estar en lnea. Los alumnos pueden imprimir las secciones
que prefieran leer en copia impresa. Tambin, tienen acceso a los recursos totalmente integrados
dentro de la edicin de escritorio Wiley. Adems de resaltar el texto electrnico para tomar y
compartir notas, los alumnos pueden personalizar fcilmente su edicin de escritorio Wiley
mientras estn leyendo o siguiendo una clase.

Acerca de la certificacin Microsoft Technology


Associate (MTA)

Preparacin de los recursos tecnolgicos del futuro


La tecnologa juega un papel en casi todos los negocios del mundo. Poseer un conocimiento
fundamental de cmo funciona la tecnologa y la comprensin de su impacto en el entorno
acadmico y laboral actual cada vez es ms importante, sobre todo para aquellos alumnos
interesados en explorar profesiones que implican tecnologa. Es por eso que Microsoft ha
creado la certificacin Microsoft Technology Associate (MTA), una nueva credencial de nivel
bsico que valida el conocimiento tecnolgico fundamental entre los alumnos que buscan
desarrollar una carrera en tecnologa.
La certificacin Microsoft Technology Associate (MTA) es el camino ideal y preferido para
los programas de certificacin de tecnologa de Microsoft de fama mundial, como Microsoft
Certified Technology Specialist (MCTS) y Microsoft Certified IT Professional (MCITP). MTA
se posiciona para convertirse en el credencial principal para aquellas personas que buscan
explorar y desarrollar una carrera profesional en tecnologa, o mejorar actividades conexas,
como negocios o cualquier otro campo donde la tecnologa est omnipresente.
www.wiley.com/college/microsoft
o llame al nmero de telfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canad)

|xv

xvi | Programa de apoyo para el alumno

Perfil del candidato MTA


El programa de certificacin MTA est especficamente diseado para alumnos de educacin
secundaria y superior interesados en explorar las opciones acadmicas y profesionales en
el campo de la tecnologa. Ofrece a los alumnos una certificacin en TI bsica y desarrollo.
Como nuevo punto de partida recomendado para las certificaciones de tecnologa de Microsoft,
MTA est especialmente diseada para los nuevos alumnos en TI y desarrollo de software.
Est disponible exclusivamente en los centros educativos y se integra fcilmente en los
programas existentes de clases de informtica.

MTA potencia a los educadores y motiva a los alumnos


MTA ofrece un nuevo estndar para medir y validar los conocimientos fundamentales de
tecnologa directamente en el aula con un impacto mnimo en el presupuesto y los recursos
didcticos. MTA ayuda a las instituciones que destacan como proveedores innovadores de
credenciales de la industria de alta demanda y se puede implementar fcilmente con un
conjunto simple, conveniente y asequible de exmenes de certificacin de tecnologa de nivel
bsico. MTA permite a los alumnos explorar carreras en tecnologa que no requieren una gran
inversin en tiempo y recursos, al tiempo que proporciona una base profesional y la confianza
para tener xito en estudios avanzados y futuros proyectos de aprendizaje profesional.
Adems de conceder a los alumnos una certificacin de Microsoft de nivel bsico, MTA
est diseada como plataforma para otras certificaciones de tecnologa ms avanzadas de
Microsoft, como la certificacin Microsoft Certified Technology Specialist (MCTS).

Entrega de exmenes MTA: licencia MTA Campus


La implementacin de un nuevo programa de certificacin en el aula nunca ha sido tan
fcil como con la licencia MTA Campus. A travs de la compra de una licencia anual MTA
Campus, no se necesitarn las solicitudes de presupuesto ad hoc ni las compras peridicas
de los cupones de exmenes. Ahora, puede realizar un presupuesto de bajo costo para todo el
ao y despus administrar los exmenes MTA a sus alumnos y otros profesores de la escuela,
donde y cuando desee.
La licencia MTA Campus ofrece un conjunto conveniente y asequible de certificaciones
detecnologa de nivel bsico diseadas para potenciar a los educadores y motivar a los
alumnos a medida que construyen una base para sus carreras.
La licencia MTA Campus est administrada por Certiport, proveedor exclusivo de exmenes
MTA de Microsoft.
Para obtener ms informacin sobre cmo llegar a ser un asociado en tecnologa de
Microsoft(Microsoft Technology Associate) y sobre la disponibilidad de exmenes,
visitewww.microsoft.com/learning/mta.

www.wiley.com/college/microsoft
o llame al nmero de telfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canad)

Programa de apoyo para el alumno|xvii

Activar la prueba prctica GRATUITA de MTA

La compra de este libro le da derecho a una prueba prctica gratuita MTA de GMetrix
(porunvalor de 30 $). Vaya a www.gmetrix.com/mtatests y use el siguiente cdigo de
validacin para canjear la prueba gratuita: MTA98-364-069439B3D150.
El sistema de administracin de habilidades GMetrix Skills Management System ofrece
todolo necesario para la prctica de la certificacin Microsoft Technology Associate (MTA).
Informacin general de las caractersticas de la prueba
Pruebas prcticas que se asignan a los objetivos del examen de Microsoft Technology
Associate (MTA)
Pruebas prcticas MTA de GMetrix que simulan el entorno real de pruebas MTA
Ms de 50 preguntas por prueba que abarcan todos los objetivos
Progreso a ritmo propio, guardar la prueba para reanudarla ms tarde, permite volver
alas preguntas omitidas
Informe de resultados detallado e imprimible que destaca aquellas reas que requieren
una revisin adicional
Para obtener el mximo rendimiento de su preparacin MTA, aproveche las ventajas de las
pruebas de prctica gratuitas MTA de GMetrix desde este momento.
Para obtener soporte tcnico sobre problemas en la instalacin o activacin del cdigo,
escribaun correo electrnico a support@gmetrix.com.

www.wiley.com/college/microsoft
o llame al nmero de telfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canad)

Reconocimientos

Revisores de los fundamentos de la tecnologa MOAC MTA

Nos gustara dar las gracias a los numerosos revisores que han ledo cuidadosamente el manuscrito y han proporcionado
informacin muy valiosa al servicio de los materiales didcticos de calidad:
Yuke Wang, Universidad de Texas en Dallas
Palaniappan Vairavan, Universidad de Bellevue
Harold Buz Lamson, Instituto tcnico ITT
Colin Archibald, Centro de estudios superiores de Valencia
Catherine Bradfield, Universidad en lnea DeVry University
Online
Robert Nelson, Universidad de Blinn
Kalpana Viswanathan, Universidad de Bellevue
Bob Becker, Universidad de Vatterott
Carol Torkko, Universidad de Bellevue
Bharat Kandel, Escuela universitaria Missouri Tech
Linda Cohen, Centro de estudios tcnicos superiores
deForsyth
Candice Lambert, Centros tecnolgicos Metro
Susan Mahon, Universidad de Collin
Mark Aruda, Centro de estudios superiores de Hillsborough
Claude Russo, Centro de estudios superiores de Brevard

xviii|

David Koppy, Universidad de Baker


Sharon Moran, Centro de estudios superiores de Hillsborough
Keith Hoell, Universidad de Briarcliffe y Universidad de
QueensUniversidad de la Ciudad de Nueva York (CUNY)
Mark Hufnagel, Distrito escolar de Lee County
Rachelle Hall, Centro de estudios superiores de Glendale
Scott Elliott, Christie Digital Systems, Inc.
Gralan Gilliam, Kaplan
Steve Strom, Centro de estudios superiores de Butler
John Crowley, Centro de estudios superiores del condado
deBucks
Margaret Leary, Centro de estudios superiores del norte
deVirginia
Sue Miner, Centro de estudios superiores de Lehigh Carbon
Gary Rollinson, Universidad de Cabrillo
Al Kelly, Universidad de tecnologa avanzada
Katherine James, Universidad de Seneca

www.wiley.com/college/microsoft
o llame al nmero de telfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canad)

Contenido breve
1Comprender los conceptos bsicos de bases de datos1
2Crear objetos de base de datos 20
3Manipular datos43
4Comprender el almacenamiento de datos61
5Administrar una base de datos84
Apndice A110
ndice 111

www.wiley.com/college/microsoft
o llame al nmero de telfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canad)

|xix

Contenido
Leccin 1Comprender los conceptos
Leccin 3Manipular datos43
bsicos de bases de datos1
Matriz de dominio de objetivos 1
Trminos clave 1
Comprender los conceptos de bases de datos2

Comprender las bases de datos planas 3


Comprender las bases de datos jerrquicas 3
Comprender las bases de datos relacionales 4
Comprender los fundamentos de las bases de datos 5
Comprender los conceptos de bases de datos relacionales 7
Uso de la interfaz de SQL Server Management Studio 9

Comprender el lenguaje de manipulacin de datos


(DML)12
Comprender el lenguaje de definicin de datos
(DDL)12
Uso de las instrucciones de DDL 13

Resumen de conocimientos 16
Evaluacin de conocimientos17
Evaluacin de competencias19
Evaluacin de aptitudes19

Leccin 2Crear objetos de base


de datos20
Matriz de dominio de objetivos 20
Trminos clave 20
Definir tipos de datos20

Uso de tipos de datos integrados 21


Uso de tipos de datos numricos exactos 24
Uso de tipos de datos numricos aproximados 25

Crear y usar tablas 29


Crear vistas33
Crear procedimientos almacenados35

Comprender las inyecciones de cdigo SQL 38

Resumen de conocimientos 38
Evaluacin de conocimientos39
Evaluacin de competencias41
Evaluacin de aptitudes41

Matriz de dominio de objetivos 43


Trminos clave 43
Uso de consultas para seleccionar datos44
Combinacin de condiciones 45
Uso de la clusula BETWEEN 46
Uso de la clusula NOT47
Uso de la clusula UNION 47
Uso de las clusulas EXCEPT e INTERSECT 48
Uso de la clusula JOIN48

Uso de consultas para insertar datos 51


Insertar datos 52

Actualizar datos y bases de datos 54


Uso de la instruccin UPDATE 54

Eliminar datos55

Uso de la instruccin DELETE 55


Truncar una tabla con TRUNCATE TABLE 56
Eliminar una tabla con DROP TABLE 56
Uso de la integridad referencial 56

Resumen de conocimientos 57
Evaluacin de conocimientos57
Evaluacin de competencias59
Evaluacin de aptitudes59

Leccin 4Comprender el
almacenamiento
de datos61
Matriz de dominio de objetivos 61
Trminos clave 61
Normalizar una base de datos62

Comprender la normalizacin 62
Comprender la primera forma normal 62
Comprender la segunda forma normal 63
Comprender la tercera forma normal 64
Comprender la cuarta forma normal 66
Comprender la quinta forma normal 66

Comprender las claves principales, externas


y compuestas67

www.wiley.com/college/microsoft
o llame al nmero de telfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canad)

|xxi

xxii|Contenido
Comprender las claves principales 70
Comprender las claves externas 70
Comprender las claves principales compuestas 74

Comprender los ndices agrupados y no agrupados74


Comprender los ndices agrupados 75
Comprender los ndices no agrupados 76
Crear una tabla no agrupada76

Resumen de conocimientos 80
Evaluacin de conocimientos80
Evaluacin de competencias82
Evaluacin de aptitudes82

Leccin 5Administrar una base de


datos84
Matriz de dominio de objetivos 84
Trminos clave 84
Asegurar bases de datos85

Comprender la seguridad en el nivel de servidor 86


Comprender la seguridad en el nivel de base de datos 86
Comprender la seguridad de Windows 87

Comprender la autenticacin de SQL 90


Comprender los roles de servidor de bases de datos 91
Conceder acceso a una base de datos 92
Comprender los roles de base de datos fijos 94
Comprender los permisos de objeto 95
Administrar roles 98
Comprender las cadenas de propiedad 99
Revisar un modelo de seguridad de ejemplo 100

Realizar copias de seguridad y restaurar bases


dedatos101

Comprender los modelos de recuperacin101


Comprender las copias de seguridad de bases de datos101
Comprender los dispositivos de copia de seguridad 103
Comprender la restauracin de bases de datos 103

Resumen de conocimientos 106


Evaluacin de conocimientos107
Evaluacin de competencias108
Evaluacin de aptitudes109
Apndice A110
ndice 111

www.wiley.com/college/microsoft
o llame al nmero de telfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canad)

Comprender los
conceptos bsicos
delas bases de datos

LECCIN

M AT R I Z D E D O M I N I O D E O B J E T I V O S
Habilidades y Conceptos

Objetivo del Examen MTA

Nmero de objetivo del examen MTA

Comprender los conceptos


de base de datos

Comprender cmo se almacenan 1.1


datos en tablas.

Comprender las bases


de datos relacionales

Comprender los conceptos


de bases de datos relacionales.

1.2

Comprender el lenguaje
de manipulacin de datos

Comprender el lenguaje de
manipulacin de datos (DML).

1.3

Comprender el lenguaje
de definicin de datos (DDL)

Comprender el lenguaje de
definicin de datos (DDL).

1.4

TRMINOS CLAVE
restricciones

ndice

Lenguaje de definicin de datos (DDL)

base de datos relacional

Lenguaje de manipulacin de datos (DML)

SQLCMD

base de datos (bd)

SQL Server Management Studio (SSMS)

sistemas de administracin de bases de datos (DBMS)

tabla

servidor de bases de datos

Transact-SQL

base de datos plana

XQuery

base de datos jerrquica

Imagine que es un contable con poca experiencia, recin contratado en una empresa
de contabilidad de prestigio. Le acaban de encargar que recopile la previsin financiera
para uno de los mayores clientes de la compaa, con un plazo de entrega de tres
semanas. Uno de los socios considera que la compaa no est recibiendo todos
losdatos financieros necesarios para usar los mtodos existentes de recuperacin de
informacin. En la actualidad, la compaa usa hojas de clculo de Excel para crear
las previsiones y las posiciones financieras actuales para cada uno de sus clientes.
Tras recibir un total de 15 hojas de clculo del cliente en cuestin, usted se da cuenta
rpidamente de que si no dispone de una mejor manera de recopilar la informacin
necesaria, noser capaz de completar el proyecto en el tiempo asignado.
1

2|Leccin 1

Comprender los conceptos de base de datos


CONCLUSIN

Antes de empezar a crear tablas y otros elementos de una base de datos, primero
debecomprender qu es una base de datos y lo valiosa que puede ser esta herramienta.
Lasventajas de elegir el tipo de base de datos correcto se pondrn de manifiesto cuando
labase de datos se use en la compaa.
Una base de datos (bd) es un conjunto organizado de datos que normalmente se almacenan
en formato electrnico. Permite escribir, organizar y recuperar datos rpidamente. Las bases
dedatos tradicionales se organizan por campos, registros y archivos.
Para comprender mejor qu es una base de datos, la compararemos a un directorio telefnico.
Si tiene un directorio telefnico guardado en disco, el directorio sera el archivo. En el
directorio telefnico, tendra una lista de registros, cada uno de los cuales con un nombre,
una direccin y un nmero de telfono. A su vez, cada una de estas piezas individuales de
informacin (nombre, direccin, nmero de telfono) constituira un campo independiente.
Dado que una base de datos puede almacenar miles de registros, es una tarea tediosa abrir
una tabla y tener que comprobar los registros de uno en uno hasta encontrar el registro
necesario. Por otra parte, el proceso se complica si se tienen que recuperar varios registros.
Afortunadamente, no tiene que comprobar los registros de la base de datos de esta manera.
Ms bien, para recuperar los datos de una base de datos, hay que ejecutar una consulta de
base de datos, que es una peticin a la base de datos que devuelve informacin de esta.
Enotras palabras, una consulta se usa para solicitar informacin a una base de datos.
Si una base de datos contiene cientos de miles de registros con muchos campos por
registro, incluso un equipo rpido puede tardar mucho tiempo en realizar una bsqueda en
una tabla y recuperar los datos solicitados. Por esta razn, viene bien un ndice de base de
datos. Un ndice es una estructura de datos que mejora la velocidad de las operaciones de
recuperacin de datos en una tabla de base de datos. La desventaja de los ndices es que
hay que crearlos yactualizarlos, lo que requiere recursos para el proceso y ocupa espacio
en disco.
Las bases de datos generalmente se encuentran en servidores de bases de datos, de
formaque son accesibles a mltiples usuarios y proporcionan un alto nivel de rendimiento.
Unservidor de bases de datos muy popular es Microsoft SQL Server. Los servidores de
bases de datos como SQL Server en realidad no albergan programas grficos, aplicaciones
deprocesamiento de textos o cualquier otro tipo de aplicacin. En su lugar, estos servidores
estn completamente optimizados para ocuparse nicamente de los objetivos de la propia
base de datos, generalmente mediante el uso de hardware avanzado capaz de tratar las altas
necesidades de procesamiento de la base de datos. Tambin es importante sealar que
estos servidores no actan como estaciones de trabajo; por lo general, estn montados
en bastidores situados en un centro de datos central y solo se puede tener acceso a ellos
a travs del sistema de escritorio de un administrador.
Microsoft SQL Server usa tres tipos de archivos para almacenar bases de datos. Los archivos
de base de datos primarios, que tienen la extensin .mdf, son los primeros archivos que se
crean en una base de datos y pueden contener objetos definidos por el usuario, tales como
tablas y vistas, as como las tablas del sistema que SQL Server requiere para mantener un
registro de la base de datos. Si la base de datos se vuelve demasiado grande y el primer
disco duro se queda sin espacio, puede crear archivos de datos secundarios, que tienen
la extensin .ndf, en discos duros fsicos independientes. El tercer tipo de archivo que
usa SQL Server es un archivo de registro de transacciones. Los archivos de registro
detransacciones usan la extensin .ldf y no contienen objetos como tablas o vistas.

Comprender los conceptos bsicos delas bases de datos|3

La mayora de los usuarios no tienen acceso a una base de datos directamente. En su lugar,
usan un sistema de administracin de bases de datos (DBMS) para tener acceso a la base de
datos de forma indirecta. Un sistema de administracin de bases de datos es un conjunto de
programas que permiten escribir, organizar y seleccionar datos en una base de datos. Por
ejemplo, imagine un agente de viajes que ejecuta un programa de sistema de billetes en el
escritorio de su equipo el cual, a su vez, tiene acceso a una base de datos de venta de billetes.
Existen tres tipos de bases de datos con los que debe estar familiarizado para poder tomar
la decisin adecuada cuando desarrolle sus propias tablas de base de datos:
Bases de datos planas
Bases de datos jerrquicas
Bases de datos relacionales
Cada tipo de base de datos tiene sus propias caractersticas importantes de diseo.

Comprender las bases de datos planas


Las bases de datos planas son de diseo sencillo. Son las que ms se usan en los
formatos de texto sin formato. Debido a que su objetivo es mantener un registro
por lnea, hacen que el acceso, el rendimiento y las consultas sean muy rpidos.
Unejemplo de este tipo de base de datos sera el contenido de un archivo .txt o .ini.
Las bases de datos planas se consideran planas porque son tablas de dos dimensiones
que constan de filas y columnas. Cada columna puede considerarse como un campo
(por ejemplo, un apellido o un nmero de identificacin de un producto) y cada fila
puede considerarse como un registro (como la informacin de un producto o persona).
A continuacin, damos un ejemplo de una base de datos plana sencilla en la que una
compaa de suministros ha hecho coincidir cada cliente con los pedidos que ese cliente
realiza habitualmente, de forma que la recuperacin yreordenacin resulten ms sencillas:
id customer order
CERTIFICACIN DISPONIBLE
Cmo se organizan las
tablas en una base de datos?
1.1

1 allen

notebook

2 smith

paper

3 dennis

pens

ink cartrudges

alex

5 sloan

printer

Comprender las bases de datos jerrquicas


Una base de datos jerrquica es similar a una estructura en rbol (como un rbol
de familia). En esta base de datos, cada tabla principal puede tener varias tablas
secundarias, pero cada tabla secundaria solo puede tener una tabla principal.
La Tabla 1-1 muestra un ejemplo de una base de datos jerrquica principal/secundaria.
Estabase de datos se aplica a un departamento de cuatro empleados para el que la compaa
acaba de comprar nuevos equipos. Observe que una tabla contiene la informacin de los
empleados, mientras que la otra tabla contiene los datos sobre el equipo que se acaba de
adquirir. En este caso, la tabla que aparece en la parte superior es la principal y la de la
parte inferior es la secundaria. Si varias de estas tablas estn unidas entre s, las tablas de
la base de datos empiezan a formar una estructura de rbol en la que cada tabla principal
puede tener mltiples tablas secundarias y cada tabla secundaria puede a su vez tener tablas
secundarias propias; sin embargo, ninguna tabla secundaria tiene ms de una tabla primaria.

4|Leccin 1
Tabla 1-1

Tabla principal

Base de datos jerrquica


quemuestra tablas
principales y secundarias

EmpNum

FirstName

LastName

100

Paul

Baker 101

101

Jane

Smith 101

102

Jim

Tate 101

103

Ed

Rosen 102

DeptNum

Tabla secundaria
SerialNum

Type

EmpNum

30032334

Computer 100

4323452

laptop 101

342342

Monitor 100

234322

Printer 100

En este ejemplo, la tabla principal contiene los datos de los empleados. Cada fila o registro
proporciona informacin de un empleado, incluido el nmero del empleado (EmpNum). La
tabla secundaria contiene datos de los equipos informticos y la columna EmpNum vincula
cada registro con la tabla primaria. Es importante sealar que cada pieza del equipo se debe
incluir por separado. Como se est usando una base de datos jerrquica, se pueden asignar
varios dispositivos de equipo a cada empleado.

Comprender las bases de datos relacionales


CERTIFICACIN DISPONIBLE
En qu se diferencian las
bases de datos relacionales de
las bases de datos planas y las
bases de datos jerrquicas?
1.2

El ltimo tipo de base de datos, que es el ms importante, es la base de datos


relacional. Una base de datos relacional es similar a una base de datos jerrquica
en la que los datos se almacenan en tablas y cualquier nueva informacin se
agrega automticamente a la tabla sin necesidad de reorganizar la propia tabla.
Sin embargo, adiferencia de las bases de datos jerrquicas, una tabla de una base
de datos relacional puede tener varias tablas principales.
En la Tabla 1-2 se muestra un ejemplo de una base de datos relacional. La primera tabla
principal muestra los datos de los vendedores de una compaa y la segunda tabla principal
enumera los modelos de los productos que ha vendido la compaa. Mientras tanto, en la
tabla secundaria se enumeran los clientes que han comprado los modelos de la empresa;
esta tabla secundaria est vinculada con la primera tabla principal por SalesNum y con la
segunda tabla principal por Model.

Comprender los conceptos bsicos delas bases de datos|5


Tabla 1-2
Base de datos relacional que muestra dos tablas principales y una tabla secundaria

Tabla principal 1

Tabla principal 2

SalesNum

FirstName

LastName

DeptNum

100

Paul Baker 101

2200MX $75000 Red

101

Jane Smith 101

42CRS $55000 Gray

Model

Costs

Color

102 Jim Tate 101

4232DR $60000 Red

103

2201MX $80000 Blue

Ed

Rosen 102

Tabla secundaria
FirstName

LastName

IDNum

Model

SalesNum

Pete

Wilson

1001 2200MX 100

Jim

Cline

1002 42CRS 101

Omar

Salize

1003 4232DR 103

Louise

Peterson 1004 2201MX 100

Comprender los fundamentos de las bases de datos


Una sencilla base de datos con una tabla es similar a una hoja de clculo que
contiene filas y columnas. Sin embargo, a diferencia de una hoja de clculo, una
base de datos permite almacenar miles de filas de datos y despus tener acceso a
la informacin ms rpidamente que mediante la lectura de una hoja de clculo.
Una hoja de clculo es a menudo el punto de partida para crear una base de datos. Con
una hoja de clculo, es fcil crear ttulos y comenzar a escribir los datos. Agregar, eliminar
y reordenar los ttulos, as como darles formato es sencillo. Por otra parte, los datos se
pueden ordenar fcilmente en uno o ms ttulos. Tambin es fcil insertar, eliminar y filtrar
las filas que coinciden con uno oms modelos de un ttulo.
Muchas bases de datos acumularn miles de filas de datos. Segn sus necesidades, puede
que desee crear tablas adicionales que contengan parte de esta informacin. En una hoja
declculo, esto sera similar a agregar hojas de clculo adicionales.
Sin embargo, las hojas de clculo estn diseadas para contener un nmero limitado de
filas por hoja. Por otra parte, cuando se abre una hoja de clculo, el archivo completo se
carga en la memoria del equipo, por lo que si hay muchos datos almacenados, el archivo
puede dar un error de memoria insuficiente al cargar los datos. Vemos, pues, que los
beneficios de usar una hoja de clculo empiezan a disminuir. Es a partir de este punto
cuando cobra sentido recurrir una base de datos.
Esta comparacin resalta las tres caractersticas fundamentales de las bases de datos:
Estn diseadas para poder almacenar miles de millones de filas de datos.
Su lmite es el espacio en disco duro que se encuentra disponible en el equipo.
Estn optimizadas para poder usar toda la memoria disponible de un equipo,
mejorando as el rendimiento.

6|Leccin 1

COMPARACIN DE HOJAS DE CLCULO CON TABLAS DE BASES DE DATOS


Como probablemente ya sabe, una hoja de clculo puede contener varias hojas, cada una
de las cuales almacena la informacin agrupada de forma lgica en un formato tabular.
Una hoja es comparable a una tabla de base de datos y los ttulos que contiene se pueden
comparar con las columnas o campos de una tabla de base de datos. En una hoja de
clculo con varias hojas, como la que se muestra en la Figura 1-1, cada hoja puede
considerarse como una tabla distinta que pertenece a la misma base de datos.
Figura 1-1
Hoja de clculo
con varias hojas

Una columna de hoja de clculo puede contener datos que pueden estar en blanco. En esos
casos, un espacio en blanco se almacena como valor nulo en la base de datos. Una tabla
de base de datos se puede disear para permitir o no valores nulos en una columna.

COMPRENDER LOS VALORES CALCULADOS


En una hoja de clculo, se pueden usar frmulas para calcular los valores a partir de otra
informacin en la misma fila o columna, como se muestra en la Figura 1-2. Un valor
calculado es esencialmente un valor que se obtiene de la realizacin de algn tipo de
clculo o frmula en un valor de entrada especificado. Las bases de datos tambin se
pueden usar para generar valores calculados, ya sea en la base de datos, dentro de los
informes generados a partir de la base de datos o en la aplicacin que est teniendo
acceso a la base de datos.
Figura 1-2
Hoja de clculo con
valores calculados

Comprender los conceptos bsicos delas bases de datos|7

Comprender los conceptos de bases de datos relacionales


Antes de disear la primera base de datos relacional, debe comprender los elementos
que forman este tipo de base de datos y la terminologa que se usa para describirlos.
TOME NOTA

Para comprender los


modelos de base de datos
relacionales, piense en
las formas en que una
tabla sepuede relacionar
con unao ms tablas.

Una base de datos relacional ayuda a organizar todos los datos que provienen de las
diversas filas y columnas de cada tabla, como se muestra en la Figura 1-3. Cada columna
corresponde a un tipo de informacin especfico que se desea almacenar en la base de
datos. Tal como ve en la figura, cada fila corresponde a un registro. Recuerde, una instancia
de cada columna y cada tabla puede estar relacionada con una o ms tablas.

Figura 1-3
Tabla de base de datos
bsica

Un modelo de base de datos relacional organizara los datos que aparecen en la Figura1-3
enuna tabla de base de datos que contiene filas y columnas, y cada columna correspondera
alatributo o al tipo de informacin que se desea almacenar. A su vez, cada fila correspondera
a un registro o una instancia de cada columna.

INCLUIR DE ELEMENTOS DEL LENGUAJE


Los objetos de bases de datos estn divididos intrnsecamente en dos grandes categoras:
almacenamiento y programacin. Una tabla est estructurada por columnas y filas, y
despus cada columna almacena los datos clasificados como un tipo de datos. En la
Figura1-4 se muestra un ejemplo de los atributos de columna para una base de datos.
Existen varios tipos de datos para elegir, incluidos los tipos integrados y sus propios tipos
de datos definidos por el usuario. Los tipos de datos se tratan con mayor detalle en la
leccin 2.

8|Leccin 1
Figura 1-4
Estructura de base de datos
donde se muestran atributos
de columna

TOME NOTA

Las bases de datos avanzadas, como SQL Server, analizan peridicamente consultas
y crean ndices, segn sea necesario, para optimizar el rendimiento. Puede encontrar
prueba de ello echando un vistazo al ndice de la base de datos.
Las restricciones son limitaciones o reglas aplicadas a un campo o columna para asegurar
que los datos que no se consideran vlidos no se incluyen. Por ejemplo, si hay que escribir
la edad de una persona, los datos que se escriban deben ser un nmero positivo; la edad
de una persona no puede ser un nmero negativo. Con SQL Server 2008 estn disponibles
una serie de restricciones, incluidas las siguientes:
Una restriccin nica permite al administrador de bases de datos identificar
especficamente qu columna no debera contener valores duplicados.
Una restriccin de comprobacin permite al administrador limitar los tipos
de datos queun usuario puede insertar en la base de datos.
Se usa una restriccin predeterminada para insertar un valor predeterminado en una
columna. Si no se especifica ningn otro valor, se agregar el valor predeterminado
a todos los registros nuevos.
Una restriccin no nula asegura que se incluyan datos en una celda. En otras palabras,
la celda no se puede dejar en blanco. Tambin indica que no se puede incluir un
nuevo registro o actualizar un registro sin agregar un valor a dicho campo.
La restriccin de clave principal identifica de forma exclusiva cada registro de una
tabla de base de datos. La clave principal debe contener valores nicos y no puede
contener valores NULL. Cada tabla debe tener una clave principal y, adems, cada
tabla puede tener nicamente una clave principal.
Una restriccin de clave externa en una tabla apunta a una clave principal en otra tabla.

Comprender los conceptos bsicos delas bases de datos|9

Para consultar un ejemplo de restriccin de bases de datos, vea la Figura 1-5.


Figura 1-5
Restriccin de base de datos

TOME NOTA

Una clave externa tambin


se conoce como una
autoreferencia.

Las columnas marcadas como claves externas pueden contener valores nulos. Esto no
es una prctica estndar deseable, sin embargo, puede que no se puedan comprobar las
restricciones si una clave externa se compone de dos o ms columnas y contiene valores
nulos. Esto indica que la integridad de los datos no se puede garantizar.
Tambin es posible que una restriccin de clave externa haga referencia a las columnas
de la misma tabla; esto se conoce como autoreferencia. Cuando se usa una autoreferencia
para realizar una consulta en una tabla, esta disposicin se conoce como autocombinacin.
Como ejemplo de una tabla de autoreferencia, supongamos que desea crear una tabla
Generations que contiene nombres de personas que usan columnas llamadas PersonID,
PersonName e MotherID. La madre es tambin una persona almacenada en la tabla
Generations, por lo que puede crear una relacin de clave externa de MotherID (la
columna de clave externa) que haga referencia a PersonID (la columna de clave principal).

Uso de la interfaz de SQL Server Management Studio


Al instalar Microsoft SQL Server, tambin se instala SQL Server Management Studio
(SSMS), que es la herramienta principal para administrar el servidor y sus bases de
datos mediante una interfaz grfica.
La caracterstica central de SSMS es el Explorador de objetos, lo que permite a los
usuarios examinar, seleccionar y administrar cualquiera de los objetos en el servidor
(vea la Figura1-6). SSMS tambin se puede usar para ver y optimizar el rendimiento
de la base de datos, as como para crear y modificar bases de datos, tablas e ndices.

10|Leccin 1
Figura 1-6
SQL Server Management
Studio

Adems, SSMS incluye el Analizador de consultas (vea la Figura 1-7), que proporciona
una interfaz basada en GUI (interfaz grfica de usuario) para escribir y ejecutar consultas.
El Analizador de consultas es compatible con:
XQuery. Lenguaje de programacin funcional y de consultas diseado
para realizar consultas en colecciones de datos XML.
Figura 1-7
Analizador de consultas

Comprender los conceptos bsicos delas bases de datos|11

SQLCMD. Aplicacin de lnea de comandos que se incluye con Microsoft


SQLServer y expone las caractersticas de administracin de SQL Server. Permite
escribir y ejecutar consultas SQL desde el smbolo del sistema. Tambin acta
como un lenguaje de scripting para crear y ejecutar un conjunto de instrucciones
SQL como un script. Estos scripts se almacenan como archivos .sql y se usan
bien para administrar bases de datos o bien para crear el esquema de base de
datos durante la implementacin de bases de datos.
Transact-SQL. Medio principal de programacin y administracin de SQL Server.
Expone palabras clave de modo que se pueden crear y administrar bases de datos y
sus componentes, as como supervisar y administrar el propio servidor. Cuando se usa
SSMS para realizar una tarea o accin, se estn ejecutando comandos Transact-SQL.
Observe que debe tener instalado SQL Server 2008 en el sistema antes de pasar
a la siguiente seccin.
CARGUE LA INTERFAZ DE SSMS
PREPRESE. Antes de comenzar estos pasos, asegrese de iniciar SSMS.


1. Haga clic en el botn Inicio y, a continuacin, haga clic en Microsoft SQL Server 2008
para expandir la seleccin de programas.
2. Haga clic en SQL Server Management Studio. Se abrir Management Studio y aparecer
elcuadro de dilogo Conectar al servidor.
3. Cambie la informacin de conexin al servidor (si es necesario) y haga clic en Conectar.
Despus de haber configurado correctamente el servidor, aparecer la interfaz de SQL
Server Management Studio.

: SOLUCIN DE PROBLEMAS
Es posible que su equipo no tenga instalada la interfaz de SSMS como parte del programa SQLServer 2008.
Si no encuentra la herramienta Management Studio en Archivos de programa, es posible que tenga que
agregarla como una actualizacin de la instalacin del servidor. Para ello, inserte el CD de instalacin
y haga clic en el botn Avanzar en la ventana Componentes para instalar, cuando aparezca.

TOME NOTA

Tambin puede instalar SQL Server Management Studio en cualquier sistema operativo
de escritorio de Windows de manera que pueda conectarse de forma remota a un servidor
SQL y administrarlo.
PAUSA. Deje la aplicacin SQL Server Management Studio abierta durante el resto
de la leccin.
SQL Server Management Studio se puede usar para realizar la mayor parte de las actividades
que es preciso ejecutar y se puede considerar una herramienta de una parada.
CREAR UNA BASE DE DATOS MEDIANTE LA INTERFAZ DE SSMS
PREPRESE. Antes de empezar a administrar bases de datos, primero debe crearlas.
Para ello, realice estos pasos:




1. Abra SSMS haciendo clic en Inicio > Todos los programas > Microsoft SQL Server 2008 >
SQL Server Management Studio.
2. Asegrese de que el motor de base de datos est seleccionado y, a continuacin,
haga clic en el botn Conectar.
3. Haga clic en el signo ms (+) que se encuentra junto a Bases de datos para que se expanda.
4. Haga clic con el botn derecho del mouse en Bases de datos y despus seleccione
Nuevas bases de datos enel men que aparece.
5. En el campo de nombre Base de datos, escriba el nombre de la base de datos
que desea crear. A continuacin, haga clic en el botn Aceptar.

12|Leccin 1

ELIMINAR UNA BASE DE DATOS MEDIANTE LA INTERFAZ DE SSMS


PREPRESE. De vez en cuando, es posible que desee quitar las bases de datos que ya no se
usan. Para realizar esta accin con la interfaz de SSMS, siga estos pasos:




1. Abra SSMS haciendo clic en Inicio > Todos los programas > Microsoft SQL Server 2008 >
SQL Server Management Studio.
2. Asegrese de que el motor de base de datos est seleccionado y, a continuacin,
haga clic en el botn Conectar.
3. Haga clic en el signo ms (+) que se encuentra junto a Bases de datos para que se expanda.
4. Haga clic con el botn derecho del mouse en el nombre de la base de datos que desea
eliminar y, a continuacin, seleccione Eliminar en el men que aparece.
5. Seleccione Cerrar conexiones existentes y despus haga clic en el botn Aceptar.

Es importante tener en cuenta que SQL Server tiene una extensa rea de ayuda. Adems,
al instalar SQL Server, tiene la opcin de instalar los libros en pantalla y tutoriales del
servidor. Por lo tanto, si desea encontrar informacin sobre una determinada opcin o
comando, debe buscar en estos recursos. Por supuesto, si no encuentra lo que busca,
no dude en realizar la bsqueda en Internet.

n Comprender
CONCLUSIN

CERTIFICACIN DISPONIBLE
Qu comandos comunes
que se usan con SQL son
comandos de DML?
1.3

el lenguaje de manipulacin de datos (DML)


Al crear bases de datos, es importante comprender lo que los elementos del lenguaje
pueden hacer dentro de la estructura de la base de datos.
El lenguaje de manipulacin de datos (DML) es el elemento del lenguaje que le permite
usar las instrucciones principales INSERT, UPDATE, DELETE y MERGE para manipular datos en
cualquier tabla de SQL Server. Las instrucciones principales de DML incluyen lo siguiente:
SELECT: recupera filas de la base de datos y permite seleccionar una o varias filas
ocolumnas de una o varias tablas de SQL Server.
INSERT: agrega una o ms filas nuevas a una tabla o vista de SQL Server.
UPDATE: cambia los datos existentes en una o ms columnas de una tabla o vista.
DELETE: quita filas de una tabla o vista.
MERGE: realiza operaciones para insertar, actualizar o eliminar en una tabla de destino
basada en los resultados de una unin con una tabla de origen.
Al usar instrucciones de DML como INSERT, UPDATE, DELETE o MERGE, tiene que tener
en cuenta que, dichas instrucciones pueden tener resultados satisfactorios o errneos.
Por ejemplo, si intenta incluir 10.000 registros en una tabla pero infringe una de las
restricciones nicas o de clave principal, la totalidad de las 10.000 filas de registros se
revertirn inmediatamente y no se insertar ningn registro en la tabla. De forma similar, si
una instruccin DELETE infringe una restriccin de clave externa (incluso en una nica fila),
no se eliminar nada. Por lo tanto, al usar instrucciones de DML, debe realizar una consulta
a la tabla para comprobar que se cumplen las restricciones clave y la sintaxis es correcta.
En la siguiente seccin se muestra la sintaxis correcta para trabajar con restricciones.

Comprender el lenguaje de definicin de datos (DDL)


CONCLUSIN

Las instrucciones del lenguaje de definicin de datos (DDL) forman parte de la seccin
Transact-SQL de SQL Server y se pueden usar para crear objetos de base de datos como
tablas y vistas.

Comprender los conceptos bsicos delas bases de datos|13


CERTIFICACIN DISPONIBLE
Qu comandos comunes
de SQL son comandos
de DDL?
1.4

El lenguaje de definicin de datos (DDL) es un subconjunto del lenguaje Transact-SQL


que se ocupa de la creacin de objetos de base de datos como tablas, restricciones y
procedimientos almacenados. La interfaz que se usa para crear estas instrucciones de
DDL subyacentes es la interfaz de usuario de SSMS, como se muestra en la Figura 1-8.

Uso de las instrucciones de DDL


Figura 1-8
Interfaz de usuario de
SQLServer Management
Studio

La interfaz de usuario de SSMS permite disear visualmente instrucciones de DDL.


Una tarea de instruccin de script DDL siempre se puede completar a travs de la interfaz
de usuario de SSMS, pero no todas las opciones que puede que se deseen usar con el script
DDL se pueden realizar a travs de esta interfaz. Por lo tanto, debe estar familiarizado
con las instrucciones de DDL USE, CREATE, ALTER y DROP para poder crear y administrar
tablas, tipos de datos definidos por el usuario, vistas, desencadenadores, funciones y
procedimientos almacenados.

CERTIFICACIN DISPONIBLE
Qu comando de DDL
usara para cambiar
el contenido de la base
de datos y cul usara
para crear una tabla?
1.4

Aunque la mayora de las instrucciones de DDL se pueden ejecutar mediante la interfaz


grfica de SSMS, conseguir ms habilidad, flexibilidad y control usando instrucciones
de DDL propias. Tambin puede usar instrucciones de DDL en tareas o actividades
de script que se pueden programar o ejecutar, segn sea necesario. De nuevo, las seis
instrucciones de DDL principales son las siguientes:
USE: cambia el contexto de la base de datos.
CREATE: crea un objeto de base de datos de SQL Server (tabla, vista o procedimiento
almacenado).
ALTER: cambia un objeto existente.
DROP: quita un objeto de la base de datos.
TRUNCATE: quita filas de una tabla y libera el espacio que usan las filas.
DELETE: quita filas de una tabla pero no libera el espacio que usan las filas que se han quitado.
A continuacin, se proporciona una explicacin ms detallada y un ejemplo de cada una
de estas instrucciones DDL principales.

14|Leccin 1

USE
Un comando de Transact-SQL que vale la pena mencionar es el comando USE. El comando
USE cambia el contexto de la base de datos a la base de datos especificada o a la instantnea
de base de datos. En otras palabras, cuando se usan comandos en una base de datos
concreta, es probable que primero se tenga que escribir el comando USE para seleccionar
la base de datos. Por ejemplo, para seleccionar una base de datos llamada TESTDB,
debe ejecutar el siguiente comando:
USE TESTDB

CREATE
La instruccin CREATE permite crear una gran variedad de objetos de base de datos, como
tablas, vistas y procedimientos almacenados. Por ejemplo, supongamos que desea crear una
nueva tabla llamada Planets en una base de datos llamada AdventureWorks. Para ello, use
la siguiente secuencia de comandos:
USE [AdventureWorks]
GO
CREATE TABLE [dbo].[Planets](
[IndividualID] [int] NOT NULL,
[PlanetName] [varchar](50) NULL,
[PlanetType] [varchar](50) NULL,
[Radius] [varchar](50) NULL,
[TimeCreated] [datetime] NULL
) ON [PRIMARY]
GO

En este caso, al usar [AdventureWorks], se cambia el contexto de la base de datos a


AdventureWorks y el comando GO ejecuta el conjunto anterior de comandos. El comando
CREATE TABLE [dbo].[Planets] se usa para crear la tabla Planets. IndividualID, PlanetName,
PlanetType, Radius y TimeCreated son las columnas de la tabla Planets. Un identificador
individual no puede ser NULL. Int, varchar y datetime especifican el tipo de datos que
describen qu tipo de datos se pueden escribir en la columna. (Los tipos de datos se
explican en detalle en la leccin 2).

ALTER
La instruccin ALTER cambia un objeto existente. Se puede usar para agregar o quitar
columnas de una tabla, como se muestra en el ejemplo siguiente:
ALTER TABLE Shirt
ADD Price Money;
GO

En este caso, ALTER se ha usado para agregar una columna Price a la tabla Shirt.
Si despus desea establecer los precios en esta columna, puede usar la instruccin
UPDATE de la siguiente manera:
UPDATE Shirt SET Price = 13.50 WHERE ProductID = 1;
UPDATE Shirt SET Price = 13.50 WHERE ProductID = 2;
UPDATE Shirt SET Price = 10.00 WHERE ProductID = 3;
UPDATE Shirt SET Price = 12.00 WHERE ProductID = 4;
GO

Comprender los conceptos bsicos delas bases de datos|15

Tambin puede usar ALTER para cambiar la definicin de una vista, procedimiento
almacenado, desencadenador o funcin. Por ejemplo, la siguiente secuencia de
comandos redefine la vista para incluir la columna Price:
ALTER VIEW Size AS
SELECT ProductID, ProductName, Price FROM Shirt
WHERE ProductType = Size;
GO
SELECT * FROM Size
Resultados:
ProductID

ProductName

Price

Red

13.50

Blue

13.50

Orange

10.00

Black

12.00

Cuando se trabaja con estas instrucciones, se debe tener cuidado para no confundir ALTER
con UPDATE. Recuerde, ALTER cambia la definicin del objeto, pero UPDATE cambia los
datos de la tabla.

DROP
La instruccin DROP en realidad quita un objeto de una base de datos, pero si los dems
objetos dependen del objeto que se est intentando quitar, la instruccin ser incorrecta
y se generar un error. En el siguiente ejemplo se muestra cmo se puede usar DROP para
eliminar datos de la tabla Shirt, despus los quita de la vista Size y finalmente quita la
tabla Shirt de la base de datos. En este ejemplo, tambin tratamos de eliminar la tabla
Person.Contact pero, como habr observado, esta operacin no tiene xito porque hay
otros objetos que dependen de la tabla Person.Contact.
DELETE FROM Shirt
Select * FROM Size
Resultados:
ProductID

ProductName

Price

(0 filas afectadas)
DROP VIEW Size;
GO
DROP TABLE Person.Contact
Resultados:
Msj 3726, Nivel 16, Estado 1, Lnea 1
No se puede eliminar el objeto Person.Contact porque la instruccin FOREIGN KEY
hace referencia al objeto.

Recuerde que no debe confundir DROP, que quita un objeto de la base de datos, con DELETE,
que elimina datos de una tabla.

16|Leccin 1

TRUNCATE Y DELETE
Otras dos instrucciones de DDL con las que debe familiarizarse son TRUNCATE y DELETE.
La instruccin DELETE se usa para eliminar filas de una tabla, pero no libera el espacio
que contiene la tabla. En comparacin, el comando TRUNCATE de SQL se usa para
eliminar filas de una tabla y liberar el espacio que contiene la tabla.
TOME NOTA

Para eliminar datos de las


tablas en una base de datos
grande, use TRUNCATE:
es ms eficaz. Use DELETE
en bases de datos ms
pequeas.

Por tanto, para eliminar todas las filas de una tabla de nombre User, debe escribir
el siguiente comando:

DELETE FROM User;

De igual forma, para eliminar un empleado con el nmero de identificacin 200 de la tabla
User, debe escribir el siguiente comando:

DELETE FROM Employee; DELETE FROM User WHERE id = 200;

TABLAS DEL SISTEMA


Si desea consultar las vistas del sistema para comprobar si el objeto o los objetos que
desea eliminar estn, en realidad, en las tablas de la base de datos, debe saber las tablas
que son ms tiles. Las vistas del sistema pertenecen al esquema sys. Algunas de estas
tablas del sistema incluyen lo siguiente:
sys.Tables
sys.Columns
sys.Databases
sys.Constraints
sys.Views
sys.Procedures
sys.Indexes
sys.Triggers
sys.Objects
Todos estos nombres de vista son fciles de entender. Por ejemplo, la vista sys.Objects
contiene una fila para cada objeto de la base de datos con los nombres de columna clave
de name, object_id, type_desc, type, create_date y modify_date.

RESUMEN DE CONOCIMIENTOS
En esta leccin, ha aprendido lo siguiente:
Una base de datos (bd) es un conjunto organizado de datos que normalmente se almacenan
en formato electrnico. Permite escribir, organizar y recuperar datos rpidamente.
Microsoft SQL Server usa tres tipos de archivos para almacenar bases de datos. Los archivos de
datos primarios, con la extensin .mdf, son los primeros archivos creados en una base de datos
ypueden contener objetos definidos por el usuario, tales como tablas y vistas, as como las tablas
del sistema requeridas por SQL Server para mantener un registro de la base de datos.
Si una base de datos se vuelve demasiado grande y el primer disco duro se queda sin espacio,
puede crear archivos de datos secundarios, con la extensin .ndf, en discos duros fsicos
independientes para que la base de datos tenga ms espacio.
El tercer tipo de archivo que usa SQL Server es un archivo de registro de transacciones. Los
archivos de registro de transacciones usan la extensin .ldf y no contienen ningn objeto como
tablas o vistas.
Para recuperar datos en una base de datos, se ejecuta una consulta de base de datos. Dicho de
otra forma, una consulta se usa para solicitar informacin a la base de datos y devuelve datos.

Comprender los conceptos bsicos delas bases de datos|17


Un ndice de base de datos es una estructura de datos que mejora la velocidad de las operaciones
derecuperacin de datos en una tabla de base de datos.
La mayora de los usuarios no tienen acceso a las bases de datos directamente. En su lugar, usan
unsistema de administracin de bases de datos (DBMS) para tener acceso a ellas de forma indirecta.
Una base de datos plana es de diseo sencillo. Estas bases de datos se usan normalmente
en formatos de texto sin formato y su propsito es contener un registro por lnea, agilizando
el acceso ylas consultas.
Las tablas que se usan para almacenar datos son objetos bidimensionales que consisten en filas
y columnas.
Una base de datos jerrquica es similar a una estructura en rbol (como un rbol de familia).
Cada tabla principal puede tener varias tablas secundarias, pero cada tabla secundaria solo
puede tener una tabla principal.
Una base de datos relacional es similar a una base de datos jerrquica en la que los datos se
almacenan en tablas y cualquier nueva informacin se agrega automticamente en la tabla, sin
necesidad de reorganizar la propia tabla. Sin embargo, a diferencia de las tablas en una base de
datosjerrquica, una tabla en una base de datos relacional puede tener varias tablas principales.
Generalmente, las bases de datos se instalan en servidores de bases de datos de forma que
son accesibles a mltiples usuarios y proporcionan un alto nivel de rendimiento. Un servidor
de bases dedatos muy popular es Microsoft SQL Server.
Las restricciones son limitaciones o reglas aplicadas a un campo o columna para asegurar que
los datos que no se consideran vlidos no se incluyen.
SQL Server Management Studio (SSMS) es la primera herramienta que administra un servidor
y sus bases de datos mediante una interfaz grfica.
El lenguaje de manipulacin de datos (DML) es el elemento del lenguaje que le permite usar las
instrucciones principales INSERT, UPDATE, DELETE y MERGE para manipular datos en cualquier
tabla de SQL Server.
El lenguaje de definicin de datos (DDL) es un subconjunto del lenguaje Transact-SQL que se
ocupa dela creacin de objetos de base de datos como tablas, restricciones y procedimientos
almacenados.

nEvaluacin

de conocimientos
Rellene los espacios en blanco
Complete las oraciones siguientes escribiendo la palabra o palabras correctas en los
espacios en blanco proporcionados.
1. Los objetos de base de datos estn divididos en dos categoras:
y
.
2. Las tablas creadas mediante la instruccin

se usan para almacenar datos.

3. Las restricciones pueden definir relaciones de identidad entre tablas de forma


continua. Tambin se conocen como
restricciones.
4. Para poder usar el objeto views para ver un conjunto de datos, debe usar la instruccin
de Transact-SQL para mostrar datos de las tablas adyacentes.
5. DDL influye en
, mientras que
reales almacenados en tablas.

influye en los datos

6. El servidor de bases de datos de Microsoft que hospeda bases de datos relacionales


se llama
.
7. Las instrucciones de DDL principales son
,

8. Las instrucciones de DML principales son


,
y

9. Las vistas del sistema pertenecen al


10. La restriccin de clave externa es un identificador

.
,

.
.

18|Leccin 1

Varias opciones
Rodee con un crculo la letra correspondiente a la mejor respuesta.
1. Cul de las siguientes no es una instruccin de DDL?
a. CREATE
b. MERGE
c. ALTER
d. DROP
2. Cul de las siguientes no es una restriccin de columna?
a. Default
b. Check
c. Range
d. Unique
3. Cules son las limitaciones o reglas que se incluyen en un campo o columna
para asegurar que los datos que no se consideran vlidos no se incluyen?
a. Clave principal
b. ndice
c. Clave externa
d. Restriccin
4. Cul de las siguientes no es una instruccin de DML?
a. REMOVE
b. INSERT
c. DELETE
d. TRUNCATE
5. Seleccione todas las afirmaciones siguientes que son verdaderas:
a. Los ndices solo se deberan crear en las columnas en las que se busca con
frecuencia.
b. Se produce una autoreferencia cuando una restriccin de clave externa hace
referencia a una columna en la misma tabla.
c. Una nica instruccin INSERT se puede usar para agregar filas a mltiples tablas.
d. Se pueden agregar mltiples claves principales a una tabla.
6. Cul de las siguientes acciones no admite ALTER?
a. Agregar una nueva columna a una tabla.
b. Eliminar mltiples columnas de una tabla existente.
c. Modificar el tipo de datos de una columna existente.
d. Cambiar la restriccin de identidad de una columna existente.
7. Cul de las siguientes no es una restriccin?
a. Null
b. Unique
c. Check
d. Principales
8. Qu significa SQL?
a. Structured Question Language
b. Structured Query Language
c. Strong Question Language
d. Specific Query Language
9. Cul de las siguientes instrucciones SQL se usan para extraer datos de una base
de datos?
a. SELECT
b. OPEN
c. EXTRACT
d. GET

Comprender los conceptos bsicos delas bases de datos|19


10. Qu instruccin SQL se usa para actualizar datos en una base de datos?
a. SAVE
b. MODIFY
c. SAVE AS
d. UPDATE

Evaluacin de competencias
Escenario 1-1: Tener en cuenta el diseo de base de datos
Le acaban de contratar como administrador de bases de datos para una compaa
internacional que es una sociedad de cartera para muchas otras compaas. Su primera
tarea consiste en disear una nueva infraestructura de base de datos para la compaa. Para
empezar, reflexione sobre sus actividades durante las primeras semanas en el cargo. Incluya
en una lista al menos una base de datos que ya haya usado, ya sea directa o indirectamente,
y describa cmo es ms probable que aparezca cada base de datos.

Escenario 1-2: Disear una base de datos relacional


Le han contratado para crear una base de datos relacional que sirva de apoyo a un negocio
de venta de automviles. Necesita almacenar informacin sobre los empleados, el
inventario y las ventas totales de la compaa. Tambin debe tener en cuenta el hecho de
que cada vendedor recibe un porcentaje diferente de comisin por sus ventas. Qu tipo
de tablas y columnas crear en la base de datos relacional y cmo vincular las tablas?

Evaluacin de aptitudes
Escenario 1-3: Uso de la Ayuda de SQL Server 2008
Se acaba de graduar en la escuela y se le ha contratado como administrador de bases de
datos junior. Una de las cosas que ha aprendido durante los primeros meses en su puesto
de trabajo es que no conoce todas las respuestas. Afortunadamente, Microsoft SQL Server
2008 cuenta con un amplio sistema de ayuda y ejemplos. Supongamos que desea obtener
ayuda sobre el uso de la instruccin CREATE para poder crear una tabla. Qu pasos seguira
para encontrar esa informacin en el sistema de ayuda de SQL Server 2008?

Escenario 1-4: Crear bases de datos mediante la interfaz grfica de SSMS


Su compaa, AdventureWorks, ha decidido expandirse ofreciendo viajes interestelares.
Le han pedido que cree una nueva base de datos llamada Planets en el servidor Microsoft
SQL mediante la interfaz grfica de SSMS. Qu pasos completara para crear esta base
de datos?

LECCIN

Crear objetos
de base de datos

M AT R I Z D E D O M I N I O D E O B J E T I V O S
Habilidades y Conceptos

Objetivo del Examen MTA

Nmero de Objetivo del Examen MTA

Definir tipos de datos

Elegir tipos de datos.

2.1

Crear y usar tablas


Comprender las tablas


2.2
y cmo crearlas.

Crear vistas

Crear vistas.

2.3

Crear procedimientos almacenados


Crear procedimientos
almacenados y funciones.

2.4

TRMINOS CLAVE
tipo de datos

tablas

inyeccin de cdigo SQL

vistas

procedimientos almacenados

Suponga que es un diseador de bases de datos de una gran compaa de importacin


exportacin. Su superior le ha pedido ayuda para actualizar algunas formas de hacer
negocios de la compaa. Le explica que la compaa ya no atender los pedidos que
se realicen va fax; en cambio, esas solicitudes de pedidos se recibirn a travs de un
servidor web o del correo electrnico. Espera que usted disee una base de datos
para almacenar y procesar estos pedidos electrnicos.

n Definir

tipos de datos

CONCLUSIN

20

En esta seccin, aprender los distintos tipos de datos, por qu son importantes y
cmo afectan a las necesidades de almacenamiento. Al examinar los tipos de datos,
es necesario comprender que cada tipo est diseado para realizar una funcin dentro
de una tabla, as como que ciertos tipos funcionarn mejor en columnas, variables
locales, expresiones o parmetros. Adems, al elegir un tipo de datos para satisfacer sus
necesidades, debe asegurarse de que cualquiera que sea el tipo elegido proporcionar
el tipo ms eficaz de almacenamiento y consulta de esquemas. De hecho, uno de los
principales roles de un administrador de bases de datos es garantizar que los datos
de cada base de datos se mantengan uniformes al decidir qu tipo de datos es el ms
adecuado para el mdulo de aplicacin en el que se est trabajando actualmente.

Crear objetos de base de datos|21

Un tipo de datos es un atributo que especifica el tipo de datos que un objeto puede
contener, as como el nmero de bytes que ocupa cada tipo de datos. Por ejemplo, varios
tipos de datos controlan nicamente nmeros enteros, lo que los convierte en idneos para
conteo o para identificacin. Otros tipos de datos permiten nmeros decimales y, por lo
tanto, son muy tiles cuando se almacenan valores relacionados con dinero. Sin embargo,
hay tipos de datos que estn diseados para almacenar cadenas o varios caracteres y as
poder definir etiquetas, descripciones y comentarios. Por ltimo, encontramos varios tipos
de datos que pueden almacenar fechas, horas, nmeros binarios que constan de varios 0
y 1, e imgenes. Como regla general, si se tienen dos tipos de datos similares que solo
difieren en el nmero de bytes que usa cada uno, uno de los tipos de datos tendr mayor
intervalo de valores u ofrece mayor precisin, o ambos.

Uso de tipos de datos integrados


Microsoft SQL Server incluye un amplio intervalo de tipos de datos predefinidos
conocidos como tipos de datos integrados. La mayora de las bases de datos que
se crean o se usan emplean nicamente estos tipos de datos.

CERTIFICACIN DISPONIBLE
Qu tipo de datos usara
para registrar el costo
de un automvil? Qu
tipo usara para contar el
nmero de autos que hay
en existencias?
2.1

Los tipos de datos integrados de Microsoft SQL Server 2008 se organizan en las siguientes
categoras generales:
Nmeros exactos
Nmeros aproximados
Fecha y hora
Cadenas de caracteres
Cadenas de caracteres Unicode
Cadenas binarias
Otros tipos de datos
Tipos de datos CLR
Tipos de datos espaciales
Generalmente usar algunos de estos tipos de datos integrados, pero emplear otros de
forma ms espordica. De cualquier forma, es importante comprender estos tipos de datos
y cmo se usan en las bases de datos. En las tablas 2-1 y 1-2 se muestran los tipos de datos
de uso ms frecuente. Tenga en cuenta que en la Tabla 2-2, el asterisco (*) indica las
adiciones ms recientes de tipos de datos de SQL Server 2008.

Tabla 2-1
Tipos de datos que se
usan con ms frecuencia

Tipo de Datos Explicacin


Money
Este tipo de datos numricos se usa cuando se desea involucrar dinero o
(numrico) moneda en la base de datos; sin embargo, si necesita calcular columnas
porcentuales, lo mejor es usar el tipo de datos flotante en su lugar.
Bsicamente, la diferencia entre un tipo de datos numrico y un tipo de
datos flotante radica en si se usa el tipo de datos para nmeros aproximados
o de precisin fija. Un tipo de datos money o numrico es un tipo de datos
deprecisin fija, puesto que se debe representar con precisin y escala.
Datetime El tipo de datos datetime se usa para almacenar los datos de fecha y hora en
varios formatos diferentes. Hay disponible dos subtipos principales de este
tipo de datos, datetime y datetime2, y debe tenerse en cuenta cul se usa
para los datos almacenados a la hora de decidir el subtipo que se va a usar.
Enconcreto, si va a almacenar valores de fecha entre el 1 de enero de 1753
(contina)

22|Leccin 2
Tabla 2-1(continuacin)

Tipo de Datos Explicacin


y el 31 de diciembre de 9999, con una precisin de 3,33 milisegundos,
debe usar el tipo de datos datetime. Por el contrario, si va a almacenar
valores de fecha entre el 1 de enero de 1900 y el 6 de junio de 2079,
con una precisin de solo 1 minuto, entonces datetime2 es el tipo
de datos que se debe usar. Lasegunda diferencia importante entre
los dos tipos de datos es que el tipo de datos datetime usa 8 bytes
de almacenamiento, mientras que datetime2 solo requiere 4 bytes.
Integer El tipo de datos numrico entero (int) se usa para almacenar clculos
matemticos y se emplea cuando no se necesita un resultado con
decimales. Ejemplos de datos enteros son los nmeros 2 y 22.
Varchar Este tipo de datos de cadena de caracteres se usa normalmente en bases
de datos que admiten atributos en ingls. Si admite varios idiomas, en su
lugar use el tipo de datos nvarchar, puesto que ayudar a minimizar los
problemas de conversin de caracteres.
Boolean El tipo de datos booleano tambin se conoce como tipo de datos bit.
En este caso, si las columnas almacenan 8 bits o menos, las columnas
se almacenarn como 1 byte; si contienen de 9 a 16 bits, las columnas
se almacenarn como 2 bytes; y as sucesivamente. El tipo de datos
booleano convierte valores de cadena verdaderos y falsos en valores
bit, donde verdadero se convierte en 1yfalso se convierte en 0.
Float El tipo de datos numrico flotante se usa generalmente en la comunidad
cientfica y se considera un tipo de datos de nmeros aproximados. Esto
significa que no todos los valores dentro del intervalo de tipo de datos
estarnrepresentados de forma exacta. Adems, segn qu tipo de dato
flotante se usa, un flotante de 4 bytes admite una precisin de hasta 7
dgitos yun flotante de 8 bytes admite una precisin de hasta 15 dgitos.
Tabla 2-2
Tipos de datos

Tipo de Datos

Uso o Descripcin

Almacenamiento

Numricos exactos:
bit

Entero con valor de 1 o de 0. (Las columnas de 9 a 16 bits se almacenan como


2 bytes y el tamao de almacenamiento contina aumentando a medida que
aumenta el nmero de bits en una columna).

1 byte

tinyint

Dato entero de 0 a 255.

1 byte

smallint

Dato entero de 2^15 (32.768) a 2^151 (32.767).

2 bytes

int

Dato entero de 2^31 (2.147.483.648) a 2^311 (2.147.483.647).

4 bytes

bigint

Dato entero de 2^63 (9.223.372.036.854.775.808) a 2^631


(9.223.372.036.854.775.807).

8 bytes

numeric

Precisin y escala fijas. Intervalo de valores vlidos de 10^3811 hasta 10^381. Vara

decimal

Precisin y escala fijas. Intervalo de valores vlidos de 10^3811 hasta 10^381. Vara

smallmoney

Valores monetarios o de moneda desde 214.748,3648 a 214.748,3647.

money

Valores monetarios o de moneda 922.337.203.685.477,5808 8 bytes


a 922.337.203.685.477,5807.

4 bytes

Crear objetos de base de datos|23


Tabla 2-2(continuacin)

Tipo de Datos

Uso o Descripcin

Almacenamiento

Numricos aproximados:
datetime

Define una fecha que se combina con una hora del da con fracciones
de segundo basada en un reloj de 24 horas. Intervalo: del 1 de enero de
1753 al 31 de diciembre de 9999. Precisin: redondeando a incrementos
de ,000; ,003 o ,007 segundos.

8 bytes

smalldatetime

Define una fecha que se combina con una hora del da. El tiempo se basa
en un da de 24 horas, con segundos siempre en cero (: 00), lo que significa
que no hay fracciones de segundo. Intervalo: del 01-01-1900 al 06-06-2079
(del 1 de enero de 1900 al 6 de junio de 2079). Precisin: un minuto.

4 bytes

date*

Define una fecha. Intervalo: del 01-01-0001 al 31-12-9999. (Del 1 de enero


del ao 1 despus de Cristo al 31 de diciembre de 9999). Precisin: un da.

3 bytes

time*

Define la hora del da. Esta hora no tiene en cuenta la diferencia de zona
horaria y se basa en un reloj de 24 horas. Intervalo: de 00:00:00.0000000
hasta 23:59:59.9999999. Precisin: 100 nanosegundos.

5 bytes

datetimeoffset*

Define una fecha combinada con una hora del da que tiene en cuenta la
zona horaria y que se basa en un reloj de 24 horas. Intervalo: del 01-01-0001
hasta el 31-12-9999 (del 1 de enero del ao 1 despus de Cristo hasta el
31 de diciembre de 9999). Intervalo: de 00:00:00 hasta 23:59:59.9999999.
Precisin: 100 nanosegundos.

10 bytes

datetime2*

Define una fecha que se combina con una hora del da basada en un reloj de Vara
24 horas. Intervalo: del 01-01-0001 hasta el 31-12-999 (1 de enero del ao
1 despus de Cristo hasta el 31 de diciembre de 9999). Intervalo: de 00:00:00
hasta 23:59:59.9999999. Precisin: 100 nanosegundos.

Cadenas de caracteres:
char

Tipo de datos de caracteres de longitud fija.

Vara

VARCHAR

Tipo de datos de caracteres de longitud variable.

Vara

text

Este tipo de datos se quitar en versiones futura de SQL; por lo tanto,


Vara
use varchar(max) en su lugar.

Cadenas de caracteres Unicode:


nchar

Tipo de datos de caracteres de longitud fija.

Vara

nvarchar

Tipo de datos de caracteres de longitud variable.

Vara

ntext

Este tipo de datos se quitar en versiones futuras de SQL; por lo tanto,


use nvarchar(max) en su lugar.

Vara

binary

Datos binarios de longitud fija.

Vara

varbinary

Datos binarios de longitud variable.

Vara

image

Este tipo de datos se quitar en versiones futuras de SQL; por lo tanto,


use varbinary(max) en su lugar.

Vara

sql_variant

Almacena valores de varios tipos de datos que admiten SQL Server,


excepto text, ntext, image, timestamp y sql_variant.

Vara

uniqueidentifier
(UUID)

GUID de 16 bytes.

16 bytes

Cadenas binarias:

Otros tipos de datos:

24|Leccin 2
TOME NOTA

Cada columna, variable


local, expresin y parmetro
tiene siempre un tipo
de datos relacionados
y cada uno de los tipos
de datos es un atributo.

Recuerde que en SQL Server, cada columna, variable local, expresin y parmetro siempre
tiene un tipo de datos relacionado que define las caractersticas de almacenamiento de los
datos que se almacenan. Esto se muestra en la Tabla 2-1.
Ahora que ya tiene cierto conocimiento sobre la mayora de los tipos de datos disponibles
en Microsoft SQL Server, tenga en cuenta que cuando dos expresiones tienen distintos
tipos de datos, intercalacin, precisin, escala o longitud, las caractersticas de los
resultados se determinan de la siguiente manera:
Cuando dos expresiones (funciones matemticas o funciones de comparacin) tienen
distintos tipos de datos, las reglas de precedencia de tipo de datos especifican que los
tipos de datos con menor precedencia se convierten en tipos de datos con mayor
precedencia.
La intercalacin se refiere a un conjunto de reglas que determinan cmo se ordenan
y comparan los datos. De forma predeterminada, SQL Server tiene precedencia
de intercalacin predeterminada. Si se desea invalidar la forma de almacenamiento
de los datos, se debe usar una clusula de intercalacin.
La precisin, escala y longitud del resultado depende de la precisin del mismo en
la expresin de entrada. Dicho de otro modo, si se toman varios valores distintos y
se realiza una operacin matemtica en esos valores, la precisin, la escala y la longitud
se basarn en los valores en los que se estn realizando las operaciones matemticas.
Ahora analizaremos con ms detalle algunos de los tipos de datos integrados ms comunes
para que se familiarice an ms con la forma de usarlos.

Uso de tipos de datos numricos exactos


Los tipos de datos numricos exactos son los tipos de datos ms comunes que SQL
Server usa para almacenar informacin numrica. Algunos de estos tipos de datos
permiten solo nmeros enteros, mientras que otros permiten nmero decimales.
Los nmero exactos incluyen (pero no se limitan a) int, bigint, bit, decimal, numeric, money
y smallmoney:
int es el principal tipo de datos de valores enteros (nmero entero).
bigint est pensado para usarse cuando los valores enteros pueden exceder el intervalo
admitido por el tipo de datos int. Las funciones solo devuelven bigint si la expresin
original es un tipo de datos bigint. Hay que tener en cuenta que SQL Server no promueve
automticamente otros tipos de datos enteros (por ejemplo, tinyint, smallint e int) en bigint.
bit es un tipo de datos entero de Transact-SQL que toma un valor 1, 0 o NULL y genera
las siguientes caractersticas:
El motor de base de datos de SQL Server optimizar el almacenamiento de
columnas de bit, lo que indica que si la tabla tiene columnas de 8 bits o menos
de ancho, estas columnas se almacenarn como 1 byte, y si tiene columnas de
9 a 16 bits, se almacenarn como 2 bytes. Es importante darse cuenta de que
1 byte es igual a 8 bits cuando se consideran tipos de datos.
Los valores de cadena TRUE y FALSE se pueden convertir en valores de bit.
De forma especfica, TRUE se convierte en 1 y FALSE se convierte en 0.
decimal y numeric tambin son tipos de datos Transact-SQL con precisin y escala
fijos. La sintaxis para estos tipos de datos se expresa de la siguiente manera:
decimal[(p[,s])]
numeric[(p[,s])]

Crear objetos de base de datos|25

Precisin (p) es el nmero total mximo de dgitos decimales que se pueden


almacenar, tanto a la izquierda como a la derecha del separador decimal.
Este valor debe ser un valor 1 como mnimo y un valor 38 como mximo.
El nmero de precisin predeterminado es 18.
Escala (s) refleja el nmero mximo de dgitos decimales que se pueden almacenar,
tanto a la izquierda como a la derecha del separador decimal. Este valor debe ser
un valor comprendido entre 0 y p, pero solo se puede especificar si tambin se
ha especificado la precisin. La escala predeterminada es 0.
money y smallmoney son tipos de datos de Transact-SQL que se deben usar para
representar valores monetarios o de moneda. Ambos tipos de datos tienen una
precisin de una diezmilsima de las unidades monetarias que representan.

Uso de tipos de datos numricos aproximados


Los tipos de datos numricos aproximados no se usan con tanta frecuencia como
otros tipos de datos de SQL Server. Sin embargo, si se necesita ms precisin
(msposiciones decimales) de la que est disponible con los tipos de datos numricos
exactos, se puede usar float o real, aunque hay que tener en cuenta que estos tipos
de datos suelen requerir bytes adicionales de almacenamiento.
float y real se usan junto con los datos numricos de punto flotante. Esto significa que

todos los datos de punto flotante son aproximados; por tanto, no todos los valores que
estn representados por un intervalo de tipo de datos aproximado se pueden expresar
con precisin.
La sintaxis de real es float(n); donde n es el nmero de bits que se usan para almacenar
la mantisa del nmero float en notacin cientfica y, por lo tanto, dicta su precisin y el
tamao de almacenamiento si n se ha especificado realmente. El valor de n debe ser un
valor entre 1 y 53, donde el valor predeterminado es 53. La mantisa es el nmero entero
y la parte decimal de un valor, pero sin incluir marcadores de posicin y exponentes.
Por ejemplo, en 3,42732, el nmero 3,42732 es la mantisa. Pero en 3,23105, donde
el valor es equivalente a 323.000, la mantisa es 3,23.

USO DE TIPOS DE DATOS DE FECHA Y HORA


Los tipos de datos de fecha y hora se refieren, por supuesto, a fechas y horas. Estos tipos
de datos incluyen date, datetime, datetime2, datetimeoffset, smalldatetime y time.
El valor date se usa para definir una fecha que se inicia el 1 de enero del ao 1 despus
de Cristo al 31 de diciembre de 9999. Como cualquier tipo de datos, el tipo de datos date
tiene los descriptores que se muestran en la Tabla 2-3. Aunque las fechas en s no se ven
afectadas por el horario de verano, es posible usar las fechas para determinar si la hora
en unda determinado refleja el horario de verano.
Aunque parte de la informacin de la Tabla 2-3 no requiere explicacin, parte de
ella s. Por ejemplo, el formato literal de cadena predeterminado indica que, de forma
predeterminada, se almacenar la fecha con el da (dos dgitos), el mes (dos dgitos) y
el ao. Puede almacenar cualquier da a partir del 1 de enero del ao 1 despus de Cristo al
31 de diciembre de 9999. La longitud de caracteres indica que para que aparezca la fecha,
se necesitan 10 caracteres, por ejemplo 17-03-2012. La escala de precisin muestra que
son 10 nmeros enteros, no se permiten nmeros decimales. Para almacenar el campo de
fecha son necesarios 3 bytes de datos. Adems, es solo exacto en un da. De esta manera,
no se pueden usar nmeros decimales o fracciones cuando se trata de valores de fecha. El
valor predeterminado es 01-01-1900, lo que indica que si no hay nada definido se asignar
automticamente el 1 de enero de1900, usando el calendario gregoriano, Por ltimo, no
usa el horario de verano.

26|Leccin 2
Tabla 2-3
Descripciones de Date

Propiedad

Valor

Sintaxis

Date

Uso

DECLARE @MiFecha date

CREATE TABLE Tabla1 (Columna1 date)

Formato literal de cadena


predeterminado (lo usan
clientes de nivel inferior)

DD-MM-AAAA
(Esto se puede usar por compatibilidad con versiones
anteriores con clientes de nivel inferior)

Rango

del 01-01-0001 al 31-12-9999


1 de enero, del ao 1 despus de Cristo, al 31 de diciembre
del ao 9999 despus de Cristo

Intervalo de elementos


AAAA son cuatro dgitos del 0001 al 9999 que representan


un ao, MM son dos dgitos del 01 al 12 que representan un
mes en un ao determinado y DD son dos dgitos del 01 al 31
que, segn el mes, representan un da del mes especificado

Longitud de caracteres

10 posiciones

Precisin, escala

10, 0

Tamao de almacenamiento

3 bytes, fijos

Precisin

Un da

Valor predeterminado

1900-01-01
Este valor se usa en la parte de fecha adjunta para la
transformacin intrnseca de time a datetime2 o datetimeoffset

Calendario Gregoriano

TOME NOTA

Use los tipos de datos


time, date, datetime2
y dateoffset en nuevos
trabajos ya que adaptan al
estndar SQL y son ms
porttiles. Todos menos
date proporcionan ms
precisin para aplicaciones
de nanosegundos.

Precisin de fracciones
de segundo definidas
por el usuario

No

Tiene en cuenta y conserva


la zona horaria

No

Tiene en cuenta el horario


de verano

No

En comparacin, datetime define una fecha que se combina con una hora del da expresada
en fracciones de segundo y basada en un reloj de 24 horas. Este tipo de datos tiene una
precisin de 0,00333 segundos. Si se necesita ms precisin, se debe usar el tipo de
datos datetime2, con una precisin de hasta 100 nanosegundos. Pero, en el caso de que
no fueranecesario realizar el seguimiento en segundos (que, por supuesto, es menos
preciso), se puede ahorrar algo de espacio de almacenamiento empleando el tipo de
datos smalldatetime en su lugar.
El tipo de datos DateTimeOffset es similar al tipo de datos DateTime, pero tambin mantiene
un registro de las zonas horarias. Por ejemplo, si se tienen dos valores DateTimeOffset con
la misma hora universal coordinada (que es la hora del meridiano deGreenwich en la
mayora de los casos), hora UTC, en distintas zonas horarias, los dos valores sern los
mismos.
Si se desea crear un conjunto de datos en el que la hora del da tiene en cuenta la diferencia
dezona horaria y est basada en un reloj de 24 horas, debe usarse datetimeoffset.

Crear objetos de base de datos|27

El valor smalldatetime combina una fecha con una hora del da, con la hora basada en un da
de 24 horas y con segundos mostrando siempre cero, como (:00); lo que significa que no se
proporcionan fracciones de segundo.
Por ltimo, time define la hora del da basada en un reloj de 24 horas y sin tener en cuenta
la diferencia de zona horaria.

COMPRENDER LAS CONVERSIONES IMPLCITAS


Al trabajar con datos SQL, puede que se desee convertir valores de un tipo de datos a
otro. En la mayora de las situaciones, estas conversiones se realizan automticamente.
Cuando una conversin se realiza automticamente, se conoce como conversin implcita.
Por ejemplo, si se multiplica el costo de un elemento (representado como flotante) por el
nmero de elementos (representado como entero), el resultado se expresar como flotante.
En la Figura 2-1, cortesa de Microsoft, se muestra un anlisis en profundidad de una
conversin implcita entre tipos de datos.
Sin embargo, algunas conversiones implcitas no estn permitidas. Por ejemplo, aunque
un valor DateTime se representa como flotante, puede que no se convierta implcitamente
DateTime a flotante, ya que indica que es una fecha u hora, o ambas. Si hay alguna razn
para forzar una conversin, se pueden usar las funciones Cast y Convert.
Cast y Convert ofrecen funcionalidad similar. Sin embargo, Cast cumple con los estndares
ANSI, lo que le permite importar o exportar a otros sistemas de administracin de bases
de datos. Convert es especfico de Transact-SQL, pero es un poco ms eficaz.
La sintaxis para la funcin Cast es:
cast(valor-origen AS tipo-destino)

Por lo tanto, para convertir la variable de recuento en flotante, usara el siguiente comando:
cast(count AS float)

La sintaxis para la funcin Convert es:


CONVERT (tipo_datos [ (longitud) ], expresin [,estilo ])

donde puede especificar cuntos dgitos o caracteres tendr el valor. Por ejemplo:
CONVERT(nvarchar(10), OrderDate, 101)

Esta sintaxis convertir OrderDate, que es un tipo de datos DataTime, en nvarchar.


El estilo 101 representa la fecha de EE. UU. con el siglo, mm/dd/yyyy.

28|Leccin 2
Figura 2-1
Tipos de conversiones
implcitas y explcitas

USO DE CADENAS DE CARACTERES


Un carcter normal usa un byte de almacenamiento por cada carcter, lo que le permite definir
uno de los 256 caracteres posibles (8 bits en un byte y 2^8 = 256), con capacidad para ingls
yalgunos idiomas europeos. Un carcter Unicode usa dos bytes de almacenamiento por
carcter, por lo que se pueden representar uno de los 65.536 caracteres (16 bits en 2 bytes
y 2^16=65.536). El espacio adicional permite a Unicode almacenar caracteres de casi
cualquier idioma, incluyendo el chino, japons, rabe, etctera.

TOME NOTA

Cualquier tipo de datos que


no contiene el elemento
VAR (char, nchar) en el
nombre es de longitud fija.

Al escribir la sintaxis de los diferentes tipos de datos, hay que tener en cuenta que tambin
difieren en la forma en que se expresan los literales (valor de datos fijo). Un carcter
normal literal siempre se expresa entre comillas simples. Por ejemplo:
Esta es la apariencia de una cadena de caracteres normales literales

Sin embargo, cuando se expresa un carcter Unicode literal, la letra N (de Nacional)
debe aparecer como prefijo de las comillas simples. Por ejemplo:
NEsta es la apariencia de un carcter Unicode literal

Cuando se usa un elemento VAR, SQL Server preserva el espacio en la fila en la que ese
elemento reside a partir del tamao definido de la columna (y no a partir del nmero real
de caracteres en la propia cadena de caracteres), ms un extra de dos bytes de datos para

Crear objetos de base de datos|29

datos dedesplazamiento. Por ejemplo, si se desea especificar que una cadena admite un
mximo de25 caracteres nicamente, debera usar VARCHAR(25).

TOME NOTA

Si n no se especifica en
una definicin de datos o la
instruccin de declaracin
de variable, la longitud
predeterminada es 1.
Si n no se especifica en la
funcin CAST, la longitud
predeterminada es 30.

TOME NOTA

Use nchar si el tamao de


las entradas de datos de las
columnas va a ser similar.
Use nvarchar si el tamao
de las entradas de datos de
las columnas va a variar
de forma considerable,
en casos como archivos
binarios, archivos de
imgenes, variantes
SQL y UUID.

nCrear

El consumo de almacenamiento, cuando se usan tipos de datos Unicode, se reduce al


tipo de datos normal, permitiendo as que las operaciones de lectura sean ms rpidas;
sin embargo, el valor del uso de este tipo de datos se encuentra en la posibilidad de la
expansin de la fila, lo que lleva al movimiento de datos fuera de la pgina actual. Esto
significa que cualquier actualizacin de datos que usa tipos de datos de longitud variable,
puede ser menos eficaz que las actualizaciones que usan tipos de datos de longitud fija.
Sin embargo, es posible definir el tipo de datos de longitud variable con el especificador
MAX, en vez de usar el mximo nmero de caracteres identificados en la cadena. Por
ejemplo, cuando una columna se define con el especificador MAX, se almacena en lnea
en la fila un valor con un tamao determinado hasta un umbral determinado (el valor
predeterminado es 8.000). A continuacin, se debe especificar un valor con un tamao
mayor que el umbral predeterminado, ese valor se almacenar fuera de la fila y se
identificar como un objeto grande o LOB.
Estos son los tipos de datos de caracteres que ms se usan, de longitud fija o variable.
Cada uno tiene sus propias caractersticas individuales, que es necesario tener en cuenta
a la hora de decidir cul tendr un efecto positivo en los requisitos de almacenamiento.
Los conjuntos de datos char y varchar deben estar definidos, o asignados, dentro de la
definicin de datos opueden afectar a los lmites mximos de almacenamiento.
El conjunto de datos char se identifica como char [(n)] de longitud fija, de caracteres no
Unicode (en otras palabras, caracteres normales) y longitud de n bytes. El valor de n
debeestar comprendido entre 1 y 8.000, haciendo que el tamao de almacenamiento
sea denbytes. El otro tipo de datos no Unicode, varchar[(n|max)], es un conjunto de
datos de longitud variable que puede constar de 1 a 8000 caracteres.
Microsoft SQL Server admite solo dos tipos de cadenas de caracteres: normal y Unicode.
Los tipos de datos normales incluyen los identificados con CHAR y VARCHAR. Los tipos de datos
Unicode se identifican con NCHAR y NVARCHAR. Fcil? S, en el sentido de que las diferencias
entre normal y Unicode son los bytes de almacenamiento que se usan en cada tipo.
Las cadenas de caracteres Unicode nchar y nvarchar pueden ser fijas o variables, como
lascadenas de caracteres normales; sin embargo, estas cadenas usan el conjunto de
caracteres UNICODE UCS-2.

y usar tablas

CONCLUSIN

En esta seccin, ser capaz de entender el propsito de las tablas. Tambin explorar
cmo crear tablas en una base de datos usando la sintaxis ANSI SQL adecuada.
El propsito de una tabla es proporcionar una estructura para almacenar datos en una base
de datos relacional. Sin esta estructura, aumenta la probabilidad de que se produzca un
error en la base de datos. En la leccin 1, aprendi acerca de los fines de las tablas y
cmo crearlas. Vamos a revisar de forma rpida algunos de los puntos ms importante
que se deben recordar a la hora de crear una tabla en una interfaz de usuario no grfica.
Mientras, piense en el propsito de una base de datos relacional en la jerarqua de la
administracin de bases de datos.
Una base de datos SQL es el contenedor central que recupera datos de muchas tablas y
vistas distintas. Se pueden ejecutar consultas sobre estos datos, interactuando as con la
informacin almacenada en la base de datos para obtener los datos necesarios. Una ventaja
de una base de datos sobre una serie de hojas de clculo es que una base de datos puede
analizar los datos almacenados y la informacin redundante obtenidos de diversas hojas
de clculo relacionales.

30|Leccin 2

Al igual que en la programacin, al disear, crear y usar bases de datos, se pueden


usar fcilmente cientos de objetos, como bases de datos, tablas columnas, vistas y
procedimientos almacenados. Por lo tanto, para que la base de datos de su compaa sea
ms fcil de administrar, la compaa debe establecer y usar una norma nica y coherente.
Por supuesto, esto tambin indica que hay documentar esta norma y distribuirla a todos
losusuarios que trabajan con la base de datos.
Realmente no hay ninguna diferencia entre el uso de maysculas y minsculas en una base
de datos, siempre y cuando se sea coherente. Las dos convenciones de nomenclatura ms
comunes son PascalCase y camelCase. Algunos ejemplos de PascalCase son nombres como
OrderDetails o vendorTerms, mientras que algunos ejemplos de camelCase son nombres
como myAddress y condicionesProveedores. No importa la nomenclatura que se usa, pero
siempre se deben usar nombres precisos y descriptivos. Tambin hay que evitar el uso de
espacios porque complican la nomenclatura y hacen necesario el uso de comillas. En su
lugar, use el carcter de subrayado (_) como separador de palabras o use caracteres en
maysculas yminsculas mezclados.
En primer lugar, crearemos una nueva tabla con SQL Server Management Studio (SSMS)
antes de seguir adelante con el mtodo de la sintaxis para creacin de tablas.
CREAR UNA TABLA CON SSMS
PREPRESE. Antes de empezar, asegrese de iniciar SQL Server Management Studio.
Asegrese de que haya expandido la base de datos en la que desea crear la nueva tabla y,
a continuacin, siga estos pasos:

Figura 2-2
Crear una nueva tabla

1. Haga clic con el botn derecho del mouse en la carpeta Tabla y seleccione Nueva
tabla, como se muestra en la Figura 2-2:

Crear objetos de base de datos|31


2. Use la informacin que se muestra en la Figura 2-3 para completar los detalles de
Nombre de columna, Tipo de datos y Longitud, como se especifica en los parntesis,
ylas columnas Permitir valores null.

3. Establezca el valor predeterminado de la columna TimeCreated en (getdate());


estevalor insertar la fecha actual en cada nuevo registro para ese campo especfico.
Vea la Figura 2-4.

Figura 2-3
Nombres de columnas
y datos de identificacin

Figura 2-4
Ajuste de las propiedades
del Diseador de tablas

32|Leccin 2

4. Guarde la nueva tabla seleccionando Archivo > Guardar Table_1, como se muestra
enla Figura 2-5.

5. Escriba el nombre para la tabla que est guardando, como se muestra en la Figura 2-6.

Figura 2-5
Guardar la nueva tabla

Figura 2-6
Nombre de la tabla

La nueva tabla aparecer en la seccin Tablas, como se representa en la Figura 2-7.


Figura 2-7
La tabla recin creada

Crear objetos de base de datos|33

PAUSA. Deje la interfaz de SSMS abierta para el prximo ejercicio.


CREAR UN TABLA CON LOS COMANDOS DE TRANSACT-SQL
La creacin de tablas en SSMS es sencilla porque SSMS es una interfaz grfica fcil
de usar. Pero cmo se pueden crear tablas mediante la sintaxis ANSI SQL? En pocas
palabras, se usar la instruccin create table para completar esta tarea. Un ejemplo de
la sintaxis correcta de Transact-SQL para crear una tabla es el siguiente:
CREATE TABLE planets (name varchar(50), diameter varchar(50))
CERTIFICACIN
DISPONIBLE
Cmo creara una tabla
con SSMS y cmo creara
una tabla con los comandos
de Transact-SQL?
2.2

nCrear

INSERT INTO planets (name, diameter) VALUES (earth, 10000)

Tenga en cuenta que si SQL Server no admite conversiones implcitas, se necesitara


lasiguiente sintaxis:
CREATE TABLE planets (name varchar(50), diameter varchar(50))
INSERT INTO planets (name, diameter) VALUES (earth, CAST (10000as varchar(50)))

vistas

CONCLUSIN

Como administrador de bases de datos, debe saber cundo usar vistas. Tambin debera
saber cmo crear vistas mediante una instruccin de Transact-SQL o el diseador grfico.
Una vista es simplemente una tabla virtual que consta de diferentes columnas de una o
ms tablas. A diferencia de una tabla, una vista se almacena en una base de datos como
un objeto de consulta; por lo tanto, una vista es un objeto que obtiene los datos de una o
ms tablas. Las vistas que se basan en esta definicin se denominan tablas subyacentes.
Una vez definida una vista, puede referirse a ella como lo hara con cualquier otra tabla
en una base de datos.
Una vista es un mecanismo de seguridad; es decir, garantiza que los usuarios puedan
recuperar y modificar solo los datos vistos por ellos mismos con sus permisos, lo que
asegura que no puedan ver o tener acceso a los dems datos de las tablas subyacentes.
Una vista es tambin un mecanismo para simplificar la ejecucin de consultas. Las
consultas complejas se pueden almacenar como una vista y as los datos de la vista
se pueden extraer usando instrucciones simples de consulta.
Las vistas garantizan la seguridad de los datos mediante la restriccin de acceso
a los siguientes datos:
Filas especficas de tablas
Columnas especficas de tablas
Filas y columnas especficas de tablas
Filas obtenidas mediante uniones
Resmenes estadsticos de los datos en las tablas especificadas
Subgrupos de otra vista o subconjuntos de vistas y tablas
Algunos ejemplos comunes de vistas son los siguientes:
Un subconjunto de filas o columnas de una base de datos
Una unin de dos o ms tablas
Una combinacin de dos o ms tablas
Un resumen estadstico de tablas base
Un subconjunto de otra vista o una combinacin de vistas y tablas base

34|Leccin 2

Las vistas de base de datos se han diseado para crear una tabla virtual que sea
representativa de una o ms tablas de forma alternativa. Existen dos razones principales
por las que es posible que se desee facilitar una vista en lugar de permitir que los usuarios
tengan acceso alastablas subyacentes de la base de datos:
Las vistas permiten limitar el tipo de datos a los que el usuario puede tener acceso.
Sepueden conceder permisos de vista en tablas designadas, as como optar por
denegarpermisos para cierta informacin.
Las vistas reducen la complejidad para los usuarios finales de forma que no tienen
que aprender cmo escribir consultas SQL complejas. En su lugar, se pueden escribir
esas consultas en su nombre y esconderlas en una vista.
Al crear una vista, asegrese de tener en cuenta el rendimiento de la base de datos en
el diseo. Como se trat brevemente en la leccin 1, la indexacin juega un papel en
el tiempo de consulta e incluso juega un papel an mayor en las mejoras del rendimiento
de la base dedatos. Pero hay que proceder con precaucin: si se agregan ndices en
el esquema se puede en realidad aumentar la sobrecarga de la base de datos debido
al mantenimiento continuo deestos ndices.
Existen dos mtodos para crear una vista:
Mediante SSMS
Escribiendo una instruccin Transact-SQL
En esta seccin, se tratarn ambos procedimientos.
CREAR UNA VISTA CON SSMS
PREPRESE. Antes de empezar a realizar estos pasos, asegrese de que la interfaz
de SSMS est abierta y que la base de datos a la que desea agregar una vista aparece
resaltada. Despus, siga estos pasos para crear la vista:
1. Expanda la seccin Vistas haciendo clic en el signo ms (+) que aparece junto a Vistas.
Haga clic con el botn derecho del mouse en la carpeta Vistas como se muestra en la
Figura 2-8; a continuacin, seleccione Nueva vista.
Figura 2-8
Crear una nueva vista

Crear objetos de base de datos|35


Se abrir el cuadro de dilogo Agregar tabla (vea la Figura 2-9).
Figura 2-9
Cuadro de dilogo
Agregar tabla

Vamos a tratar con ms detalle lo que este cuadro de dilogo permite hacer:
Para especificar la tabla que se usar como origen principal, haga clic en
latablacorrespondiente de la pestaa Tablas del cuadro de dilogo.
Si desea usar otra vista existente, haga clic en la pestaa Vistas del cuadro
dedilogo.
Si desea generar registros a partir de una funcin, lo encontrar en la pestaa
Funciones.
Si desea usar ms de un origen, haga clic en cada una de las pestaas para
encontrar la tabla, vista o funcin que desea agregar a la consulta.
Una vez seleccionado el origen u orgenes que desea, simplemente haga clic
enelbotn Agregar para agregar cada uno.
Cuando haya seleccionado y agregado todos los orgenes que desea, haga clic
enelbotn Cerrar para salir del cuadro de dilogo Agregar tabla.
2. Al hacer clic en Agregar para agregar cada origen, aparecer la informacin que
semuestra en la Figura 2-10.
Figura 2-10
Resultado del cuadro
de dilogo Agregar tabla

CERTIFICACIN DISPONIBLE
Cmo creara una vista
con SSMS?
2.3

Una vez seleccionados los objetos que se desean usar, se agregar la barra
deherramientas Diseador de vistas, en la que se pueden planear las vistas
adicionales que se desean incorporar en la consulta.

Tambin puede crear vistas con Transact-SQL. En este caso, una vez agregados los
orgenes alpanel de diagrama, la sintaxis para estos orgenes se muestra en el panel SQL.

36|Leccin 2

Para crear una vista con la sintaxis de Transact-SQL, una convencin sencilla es la siguiente:
CREATE VIEW vwCustomer
AS
SELECT CustomerId, CompanyName, Phone

FROM Customers

Esto crea una vista llamada vwCustomer que se almacenar como un objeto. En este caso,
losdatos consultados de las columnas provienen de la tabla Customers.

nCrear

procedimientos almacenados

CONCLUSIN

Al crear procedimientos almacenados y funciones, es posible seleccionar, insertar,


actualizar o eliminar los datos que usan estas instrucciones.
Hasta ahora, ha aprendido cmo usar diferentes tipos de datos para crear tablas y vistas a
travs de la interfaz de SSMS, as como a travs de instrucciones de sintaxis de Transact-SQL.
Ahora es el momento de aprender cmo crear instrucciones de procedimientos almacenados
usando la misma interfaz grfica.
Un procedimiento almacenado es una instruccin SQL escrita previamente que se ha
almacenado o guardado en una base de datos. Una manera de ahorrar tiempo cuando
seejecuta la misma consulta una y otra vez es creando un procedimiento almacenado
quesepuede ejecutar ms adelante desde el entorno de comandos de la base de datos.
Unejemplo sobre cmo ejecutar un procedimiento almacenado es el siguiente:
exec usp_displayallusers

En este caso, el nombre del procedimiento almacenado es usp_displayallusers y exec


e indica a SQL Server que ejecute el cdigo en el procedimiento almacenado En efecto,
cuando crea su propio procedimiento almacenado, aparecer la denominacin usp delante
del nombre, lo que indica a SQL que se trata de un procedimiento almacenado creado por
el usuario.
Ahora, supongamos que el procedimiento almacenado llamado displayallusers tiene
uncdigo simple en su interior, como el siguiente:
SELECT * FROM USERLIST

Lo que la instruccin SELECT hace es devolver todos los datos que se encuentra en
la tabla USERLIST. Puede que se haga la siguiente pregunta, por qu no puedo
simplemente ejecutar la consulta que deseo para obtener la informacin que necesito?
Enotras palabras, puede que se pregunte por qu debera preocuparse en crear un
procedimiento almacenado. Tenga en cuenta que el * que aparece en la instruccin
anterior indica que no est definiendo los criterios que deseara que coincidieran con el
resultado. Dicho de otra forma, va a devolver todos los registros de la tabla USERLIST.
Tal vez est trabajando en un sitio web generando pginas ASP y necesita llamar a un
procedimiento almacenado desde all o desde otra aplicacin como Visual Basic, o desde
otra aplicacin completa. El uso de un procedimiento almacenado permite almacenar toda
la lgica dentro de la base de datos, de forma que mediante el uso de un simple comando
sepuede consultar y recuperar toda la informacin de todas las fuentes.
Un procedimiento almacenado es una instruccin SQL ya escrita que se almacena en
una base de datos. Si usa continuamente la misma instruccin SQL dentro de la base
de datos, es ms sencillo crear un procedimiento almacenado para la instruccin. Ahora,
las instrucciones simples como una instruccin select no se beneficiaran por completo

Crear objetos de base de datos|37

de un procedimiento almacenado, pero si se van a crear instrucciones de consulta complejas,


lo mejor es crear un procedimiento almacenado para ellas y ejecutar ese procedimiento
almacenado desde elAnalizador de consultas mediante un comando de ejecucin (exec).
CREAR UN PROCEDIMIENTO ALMACENADO
PREPRESE. Antes de empezar a realizar estos pasos, asegrese de que la interfaz de
SSMS est abierta y que la base de datos a la que desea agregar una vista aparece resaltada.
A continuacin, siga estos pasos para crear un procedimiento almacenado:

1. Expanda la seccin Programacin haciendo clic en el signo + adecuado y, a continuacin,


expanda la seccin Procedimiento almacenado haciendo clic en el signo + pertinente.
2. Haga clic con el botn derecho del mouse en Procedimientos almacenados y elija
Nuevo procedimiento almacenado (vea la Figura 2-11).

Figura 2-11
Men de seleccin Nuevo
procedimiento almacenado

CERTIFICACIN DISPONIBLE
Cmo creara
un procedimiento
almacenado con SSMS?
2.4

Se abre la ventana Editor de texto (vea la Figura 2-12), mostrando la sintaxis.


Laventana contiene una plantilla de procedimiento almacenado ya preparada
paraqueagregue sus propios parmetros de vista.

38|Leccin 2
Figura 2-12
Ejemplo de la ventana
Editor de texto

Microsoft SQL Server ya tiene cientos de procedimientos almacenados del sistema


para que pueda realizar funciones bsicas. Por ejemplo, puede usar el procedimiento
almacenado SELECT para recuperar o seleccionar filas de una base de datos. Algunos
delosprocedimientos almacenados ms populares se tratarn en la prxima leccin,
incluyendo SELECT, INSERT, UPDATE y DELETE.

Comprender las inyecciones de cdigo SQL


TOME NOTA

Una inyeccin de cdigo


SQL es un ataque en el
que se inserta cdigo
malintencionado en las
cadenas que se transmitirn
despus de analizar o
ejecutar instrucciones.

Antes de aprender las instrucciones de sintaxis para seleccionar, insertar, actualizar


y eliminar datos, es necesario saber qu es una inyeccin de cdigo SQL. En pocas
palabras, una inyeccin de cdigo SQL es un ataque en el que se inserta cdigo
malintencionado en las cadenas que despus pasan a instrucciones de SQL Server en
espera de anlisis y ejecucin. Cualquier procedimiento que construye instrucciones
SQL se debe revisar continuamente en busca de vulnerabilidades de la inyeccin de
cdigo, puesto que SQL Server ejecutar todas las consultas sintcticamente vlidas
desdecualquier origen.
La principal forma de inyeccin de cdigo SQL es una insercin directa de cdigo en
variables de entrada de usuario que se concatenan con comandos SQL y luego se ejecutan.
Un mtodo menos directo de ataque inyecta cdigo malintencionado en las cadenas destinadas
al almacenamiento en una tabla o que se consideran metadatos. Cuando estas cadenas
almacenadas posteriormente se concatenan en el comando de SQL dinmico, se ejecuta
elcdigo malintencionado.
La funcin del proceso de inyeccin de cdigo es terminar una cadena de texto antes de
tiempo y anexar un nuevo comando de la misma; puesto que el comando insertado puede
tener cadenas adicionales anexadas antes de su ejecucin, el infractor termina la cadena
inyectada con cdigo con una marca de comentario , lo que hace que el texto que
sigueacontinuacin se omita en tiempo de ejecucin.

Crear objetos de base de datos|39

RESUMEN DE CONOCIMIENTOS
En esta leccin, ha aprendido lo siguiente:
Un tipo de datos es un atributo que especifica el tipo de datos que un objeto puede contener,
ascomo el nmero de bytes que ocupa cada tipo de datos.
Como regla general, si se tienen dos tipos de datos que solo difieren en el nmero de bytes
que usa cada uno, el que tiene ms bytes tendr mayor intervalo de valores u ofrece mayor
precisin, oambos.
Microsoft SQL Server incluye un amplio intervalo de tipos de datos predefinidos conocidos como
tiposde datos integrados. La mayora de las bases de datos que se crean o se usan emplean solo
estos tipos de datos.
Los tipos de datos numricos exactos son los tipos de datos ms comunes que SQL Server usa
para almacenar informacin numrica.
int es el principal tipo de datos de valores enteros (nmero entero).
Precisin (p) es el nmero mximo total de dgitos decimales que se pueden almacenar en un
tipo de datos numrico, tanto a la izquierda como a la derecha del punto decimal; este valor
debe ser almenos 1 y como mximo 38. El nmero de precisin predeterminado es 18.
money y smallmoney son tipos de datos de Transact-SQL que se deben usar para representar
valores monetarios o de moneda. Ambos tipos de datos tienen una precisin de una
diezmilsima delas unidades monetarias que representan.
Los tipos de datos numricos aproximados no se usan con tanta frecuencia como otros tipos
de datos de SQL Server. Si necesita ms precisin (ms posiciones decimales) de la que dispone
con los tipos de datos numricos exactos, debe usar los tipos de datos float o real, puesto que
ambos suelen tomar bytes adicionales de almacenamiento.
Los tipos de datos de fecha y hora se refieren, por supuesto, a fechas y horas. Estos tipos
de datos incluyen date, datetime2, datetime, datetimeoffset, smalldatetime y time.
SQL Server admite las conversiones implcitas, que se pueden producir sin especificar la funcin
de llamada real (cast o convert). Las conversiones explcitas necesitan el uso de las funciones
cast o convert especficamente.
Un carcter normal usa un byte de almacenamiento por cada carcter, que le permite definir
uno delos 256 caracteres posibles; con capacidad para ingls y algunos idiomas europeos.
Un carcter Unicode usa dos bytes de almacenamiento por carcter, por lo que se puede
representar uno de los 65.536 caracteres. Esta capacidad adicional significa que se pueden
almacenar caracteres Unicode desde casi cualquier idioma.
Cuando se usa un elemento VAR, SQL Server preserva el espacio en la fila en la que este
elemento reside a partir del tamao definido de la columna y no a partir del nmero real
de caracteres de la propia cadena de caracteres.
Las cadenas de caracteres Unicode nchar y nvarchar pueden ser fijas o variables, como las
cadenas de caracteres normales; sin embargo, usan el conjunto de caracteres UNICODE UCS-2.
El propsito de una tabla es proporcionar una estructura para almacenar datos en una base
de datos relacional.
Una vista es simplemente una tabla virtual que consta de diferentes columnas de una o ms
tablas. Adiferencia de una tabla, una vista se almacena en una base de datos como un objeto
de consulta; por lo tanto, una vista es un objeto que obtiene los datos de una o ms tablas.
Un procedimiento almacenado es una instruccin SQL escrita previamente que se ha
almacenado oguardado en una base de datos.
Una inyeccin de cdigo SQL es un ataque en el que se inserta cdigo malintencionado en las
cadenas que despus pasan a instrucciones de SQL Server en espera de anlisis y ejecucin.

40|Leccin 2

Evaluacin de conocimientos
Rellene los espacios en blanco
Complete las oraciones siguientes escribiendo la palabra o palabras correctas en los
espacios en blanco proporcionados.
1. Cada expresin ____________, ____________ y ____________ siempre tiene
un tipo de datos relacionado.
2. Un bit es un tipo de datos entero de Transact-SQL que puede tomar un ____________
de 1, 0 o NULL.
3. Al definir el costo de un producto, lo mejor es usar el tipo de datos ___________.
4. Es importante considerar el uso de conjuntos de datos ____________ en la
construccin de tablas dependientes del horario de verano.
5. SQL Server admite conversiones ____________ sin usar las funciones de llamada
reales (cast o convert).
6. Un carcter normal usa ____________ byte(s) de almacenamiento para cara carcter,
mientras que un carcter Unicode necesita ____________ byte(s) de almacenamiento.
7. El conjunto de datos char es de ____________ de longitud y tiene una longitud
de ____________ bytes.
8. El propsito de una tabla es proporcionar ____________ para almacenar datos
en una base de datos relacional.
9. Al crear una vista, asegrese de contar con ____________ en el diseo.
10. Cuando se realizan consultas a una base de datos, se pueden obtener resultados
ms rpidamente al ____________ tablas y vistas correctamente.

Varias opciones
Rodee con un crculo la letra correspondiente a la mejor respuesta.
1. Cul de los siguientes no es un tipo de datos?
a. Numricos exactos
b. Numricos aproximados
c. Cadena ANSI
d. Espacial
2. Cmo se llama cuando un tipo de datos se convierte automticamente en otro tipo
de datos?
a. conversin implcita
b. conversin explcita
c. conversin dinmica
d. conversin esttica
3. Cul de las siguientes afirmaciones no son ciertas sobre el tipo de datos int?
a. int es un entero.
b. bigint se usa cuando el valor excede el intervalo del tipo de datos int.
c. Un entero usa 8 bytes para almacenar datos.
d. Las funciones solo devolvern bigint si la expresin original tiene el mismo tipo de datos.
4. Requieren las conversiones implcitas una caracterstica de llamada real (por ejemplo,
cast o convert)?
a. S
b. No

Crear objetos de base de datos|41

5. Seleccione todas las afirmaciones siguientes que son falsas:


a. Una tabla proporciona la estructura para almacenar datos.
b. Una base de datos recupera los datos de distintas tablas y vistas.
c. Una base de datos no puede analizar datos redundantes.
d. Una tabla se puede crear en una interfaz grfica y mediante sintaxis.
6. Cul de las siguientes afirmaciones describe mejor la importancia de crear vistas?
a. Las vistas proporcionan a los usuarios la capacidad de tener acceso a tablas
subyacentes.
b. Las vistas permiten limitar el tipo de datos a los que el usuario puede tener acceso.
c. Las vistas reducen la complejidad para los usuarios finales de forma que no tienen
que aprender a realizar consultas SQL complejas.
d. Respuestas a y b
e. Respuestas b y c
f. Todas las anteriores
7. Cul de las siguientes afirmaciones no describe una vista con precisin?
a. Una vista es una tabla virtual.
b. Una vista se usa como mecanismo de seguridad.
c. Las vistas no se deben usar para conceder acceso.
d. Una vista simplifica la ejecucin de consultas.
8. Cul es la instruccin de Transact-SQL para crear una vista?
a. CREATE VIEW
b. CREATE VIEW nombre_vista
c. CREATE VIEW nombre_vista *
9. Qu afirmacin se usa para suprimir '(1 fila afectada)' despus de ejecutar sentencias
de consulta?
a. SET NO COUNT
b. SET NOCOUNT ON
c. SET NO COUNTING
d. SET NO COUNTING ON
10. Cul de los siguientes tipos de datos no es un tipo de datos normal?
a. char
b. nchar
c. text
d. varchar(50)

Evaluacin de competencias
Escenario 2-1: Calcular el tamao de una tabla
Como nuevo administrador de bases de datos, se le ha encargado que cree una base de datos
de los empleados de gran tamao que almacenar la informacin de 10.000 empleados.
En la tabla estn definidas las siguientes columnas:
FirstName varchar(50)
LastName varchar(50)
StreetAddress varchar(75)
State varchar(2)
ZipCode varchar(9)
Age int
BirthDate date
Cuntos bytes debe almacenar cada registro? Cuntos bytes usara para almacenar
10.000registros?

42|Leccin 2

Escenario 2-2: Elegir tipos de datos


Va a disear varias bases de datos para un cliente. Mientras disea las bases de datos, se
encuentra con los siguientes elementos de datos enumerados. Qu tipo de datos usara
para almacenar la siguiente informacin y por qu?
El radio de un planeta
El valor de pi (p)
El salario
La fecha de nacimiento de la persona
La longitud de una tabla
El nmero de reproductores de msica vendidos

Evaluacin de aptitudes
Escenario 2-3: Comprender las tablas y aprender a crearlas
Se le ha contratado como nuevo administrador de bases de datos y debe crear una base
de datos de clientes. Tras abrir SSMS y tener acceso a la base de datos AdventureWorks,
qu comando de consulta usara para crear una tabla llamada customers.customer con las
siguientes columnas o campos?

Unique Customer ID

CompanyID: hasta 50 caracteres

FirstName: hasta 50 caracteres

LastName: hasta 50 caracteres

ModifiedDate

Escenario 2-4: Extraer datos de una base de datos


Es un administrador de bases de datos de AdventureWorks Corporation y uno de los
administradores de servicios necesita su ayuda para extraer datos de la base de datos
de la compaa. Por lo tanto, despus de abrir SSMS y tener acceso a la base de datos
AdventureWorks, especifique las instrucciones bsicas SELECT que usara para recuperar
lainformacin necesaria de la tabla ProductsSubcategory.
1. Qu comandos devolveran todas las filas y columnas de la tabla
ProductsSubcategory?
2.Qu comandos escribira y ejecutara para devolver solo las columnas
ProductSubcategoryID, ProductCategoryID, Name y ModifiedDate?
3.Qu comandos escribira y ejecutara para devolver las columnas donde la palabra
bici aparece en alguna parte de la columna Name?
4.En la ventana de consulta ya existente, qu comandos usara para agregar un alias
decolumna a la columna Name para confirmarla como nombre de la subcategora?
5.En la ventana de consulta existente, qu comando usara para ordenar el conjunto
deresultados anterior?

Manipular datos

LECCIN

M AT R I Z D E D O M I N I O D E O B J E T I V O S
Habilidades y Conceptos

Objetivo del Examen MTA

Nmero de Objetivo del Examen MTA

Usar consultas para


seleccionar datos

Seleccionar datos.

3.1

Usar consultas para


insertar datos

Insertar datos.

3.2

Actualizar datos y bases de datos

Actualizar datos.

3.3

Eliminar datos

Eliminar datos.

3.4

TRMINOS CLAVE
combinacin cruzada

select

delete

transacciones

formar interseccin

unin

combinar

update

integridad referencial

Le acaba de contratar una empresa de tamao medio y le han pedido que proporcione
las listas de registro de los empleados al nuevo vicepresidente de Recursos Humanos.
Con el fin de controlar los datos para satisfacer los requisitos del vicepresidente, debe
crear varias listas distintas mediante instrucciones Transact-SQL.

Aunque el ttulo de esta leccin hace referencia a la manipulacin de datos para realizar
consultas, es importante tener en cuenta que la propia realizacin de consultas se considera
una forma de modificacin de datos, puesto que implica cambiar las instrucciones de
la consulta para obtener el resultado que se desea. No importa el nombre o descriptor,
elobjeto de cualquier base de datos es que el usuario sea capaz de extraer datos del
mismo. De hecho, la gran mayora de instrucciones SQL estn diseadas para recuperar
lainformacin solicitada por el usuario de una base de datos mediante el uso de consultas.
En esta leccin, se analizarn algunas de las instrucciones de consulta ms importantes
que se deben comprender para avanzar en el conocimiento de Transact-SQL.

43

44|Leccin 3

Uso de consultas para seleccionar datos


CONCLUSIN

CERTIFICACIN
DISPONIBLE
Qu comando debe usar
para mostrar los registros
de una tabla?
3.1

En esta seccin, aprender cmo usar la consulta SELECT para recuperar o extraer datos
de una tabla, cmo recuperar o extraer datos mediante combinaciones y cmo combinar
resultados con UNION e INTERSECT.
El comando SQL para recuperar los datos de una base de datos es SELECT. Como muchos
otros comandos SQL, SELECT es similar a una instruccin en ingls. La creacin de una
instruccin SELECT es similar a la accin de rellenar los espacios en blanco, como se
muestra en el ejemplo siguiente:
SELECT id, first_name // columnas
FROM sysobjects // tablas
WHERE type = jones // condiciones de las que desea producir resultados

Este sencillo ejemplo proporciona un conocimiento bsico de lo que hace la instruccin


SELECT. Siempre se deber seguir el mismo patrn cada vez que se emita una instruccin
SELECT a una base de datos. Por otra parte, solo hay tres cosas que se necesitan identificar
en la instruccin con el fin de formar una consulta SELECT adecuada:
Las columnas que se van a recuperar
Las tablas que se van a recuperar de las columnas
Las condiciones, si hay alguna, que los datos deben satisfacer
Las construcciones anteriores se consideran el marco para la creacin de instrucciones
deconsulta SELECT mediante la ventana del editor de texto SQL. Supongamos, por ejemplo,
que desea proporcionar a su jefe una lista de los empleados cuyo salario es superior
a50.000 $ EE. UU. al ao. Solo le interesa recuperar los empleados que satisfagan
esecriterio. As es como se puede hacer esto en SQL:
SELECT first_name, last_name, salary
FROM employees
WHERE salary >= 50,000

Esta consulta debera producir los siguientes resultados:

TOME NOTA

Observa la lnea
que indica el nmero
de filas afectadas?
Puede desactivar y
activar dicha lnea
mediante la instruccin
SET NOCOUNT.
Esta instruccin est
desactivada de forma
predeterminada.

first_name

John

last_name salary

Allan 52,000

Sylvia

Goddard 51,200

Julia

Smith 55,000

David

Thompson 62,900

(4 filas afectadas)

Si desea seleccionar una nica columna para la consulta, identifique el nombre de la


columna escribindola entre las palabras select y from en la instruccin de consulta.
Sidesea identificar ms de una columna para incluir en la consulta (como en el ejemplo
anterior), simplemente escriba el nombre de cada columna y separe los nombres con una
coma. La razn para usar una coma en lugar de un espacio es que SQL trata el espacio
como un identificador, o palabra coincidente, como valor o seleccionar. Por tanto,
sinecesita usar un espacio en la instruccin, debe incluir estas palabras entre corchetes
ocomillas dobles, por ejemplo, [seleccionar] o valor.
Si desea elegir todas las columnas de una tabla, puede hacerlo escribiendo un asterisco (*)
en el lugar en el que deberan estar los nombres de las columnas.

Manipular datos|45

El nico componente requerido de la consulta SELECT de SQL es la clusula SELECT


FROM, lo que indica que se pueden seleccionar todos los campos disponibles de una
tabla simplemente usando el siguiente comando:
SELECT *
FROM employees

Esto podra producir un resultado de gran tamao o un resultado pequeo, segn el nmero
de empleados de una compaa. Veamos un ejemplo de una compaa con solo seis
empleados. Si escribimos el comando anterior, el resultado ser similar al siguiente:
first_name

Jim

last_name
employee_id
phone
gender

Alexander 610001
574-555-0001 M

Frances

Drake

David

Thompson 610003

574-555-0985 M

Alexandria

Link

610004

574-555-9087 F

Peter

Link

610005

574-555-7863 M

Antoin

Drake

610006

574-555-2597 M

610002

574-555-0346 F

(6 filas afectadas)

Ahora ya tiene un entendimiento bsico de para qu se ha diseado la instruccin SELECT.


Pero, qu pasara si desea recuperar nicamente determinados tipos de datos delastablas
identificados con la instruccin de bsqueda SELECT FROM original? En este caso es
cuando la clusula WHERE viene muy bien. Por ejemplo, la clusula WHERE sepuede agregar
a una consulta para encontrar nicamente los empleados que trabajan eneldepartamento
de envos de la compaa, como se muestra a continuacin:
SELECT first_name, last_name
FROM employees
WHERE department = shipping

De esta forma, se devolver el resultado siguiente:


first_name last_name

Jim Alexander
Frances Drake
David Thompson
(3 filas afectadas)

Combinacin de condiciones
Quizs necesite ms informacin de una consulta que simplemente un conjunto de
parmetros. En estos casos, puede combinar varias condiciones en una sola instruccin
deconsulta. Por ejemplo, en el caso anterior, se ejecuta una consulta que devuelve solo
los empleados que trabajan en el departamento de envos. Supongamos que ahora desea
ese resultado y determinar cules de estos empleados son mujeres. Obtendr el resultado
que desea con la siguiente instruccin SQL:
SELECT first_name, last_name
FROM employees
WHERE department = shipping AND gender = F AND hired >=
2000-JAN-01

46|Leccin 3

El resultado esperado muestra los siguientes resultados:


first_name last_name

Frances Drake
(1 fila afectada)

Por tanto, esta consulta usa la conjuncin AND para proporcionar los nombres de todos
los empleados que pertenecen al departamento de envos y son mujeres.
Tambin puede usar la conjuncin OR para que el resultado satisfaga cualquiera
de las dos condiciones, como se muestra a continuacin:
SELECT first_name, last_name
FROM employees
WHERE department = shipping OR employee_id <= 610007

De esta forma, se devolver el resultado siguiente:


first_name last_name

James Alexander
David Thompson
Frances Drake
Alexandria Link
Peter Link
Antoin Drake
(6 filas afectadas)

Observe que en este ejemplo la consulta no devuelve solo los tres empleados del departamento
de envos (cumpliendo as la primera condicin), sino que tambin devuelve tres nuevas
filas de datos que satisfacen solo la segunda condicin de la consulta (esdecir, un nmero
de identificacin de empleado menor de 610007). Esto significa que Alexandria Link, Peter
Link y Antoin Drake cumplen la segunda condicin en lainstruccin de consulta WHERE,
pero no la primera.

Uso de la clusula BETWEEN


En algunas situaciones, tendr que recuperar los registros que satisfagan una condicin
deintervalo y que tambin contengan un valor que se encuentre en el intervalo de otro
valor especificado. Por ejemplo, tal vez necesite recuperar una lista de los empleados
contratados entre 1990 y 2000. Una manera de obtener este resultado es unir las dos
condiciones mediante la conjuncin AND:
SELECT first_name, last_name, hire_date
FROM employees
WHERE hire_date >=1-Jan-1990 AND hire_date <= 1-Jan-2000

Esta consulta debera producir los siguientes resultados:


first_name last_name hire_date

James
Alexander 1990-12-10
Frances Drake 1998-03-04
Peter Link 1997-07-08
Antoin Drake 1999-12-31
(4 filas afectadas)

Manipular datos|47

Puede que se pregunte lo que hace en realidad esta consulta al basarse en esas dos condiciones
y por qu la sintaxis parece complicada. Si desea evitar la complejidad deusar la clusula
AND en esta instruccin de consulta, intente sustituirla por la clusula BETWEEN. De esta
forma, podr especificar el intervalo que se va a usar en un formato de consulta entre x
e y, obteniendo una instruccin mucho ms clara. Volvamos aescribir la instruccin
anterior para reflejar la condicin between:
SELECT first_name, last_name, hide_date
FROM employees
WHERE hide_date BETWEEN 1-Jan-1990 AND 1-Jan-2000

Con esta instruccin, recibir exactamente el mismo resultado que con la instruccin
deconsulta previa.

Uso de la clusula NOT


En algunos casos es ms sencillo escribir la consulta definiendo lo que no se desea recuperar.
Transact-SQL proporciona la palabra clave NOT precisamente para estos casos. Por ejemplo,
supongamos que desea una lista de todos los empleados que no trabajan en el departamento
de envos. Puede obtener esta lista mediante la consulta siguiente:
SELECT first_name, last_name
FROM employees
WHERE NOT department = shipping

El uso de los operadores, como se muestra en este y en varios ejemplos anteriores, puede
ayudar en la obtencin de los mismos resultados en muchos casos. Por tanto, puede escribir
una consulta usando un signo < (menor que) y un signo > (mayor que) en lugar del signo
igual. Al hacerlo, podra producir la siguiente instruccin de consulta:
SELECT first_name, last_name
FROM employees
WHERE department = shipping

No importa cmo se escribe la sintaxis de la instruccin de consulta, producir los mismos


resultados.

Uso de la clusula UNION


La clusula UNION permite combinar los resultados de dos o ms consultas en un nico
conjunto de resultados que incluye todas las filas que pertenecen a la consulta en esa unin.
La clusula UNION es totalmente distinta de las instrucciones JOIN, que combinan columnas
de dos tablas diferentes. Debe recordar un par de reglas bsicas al combinar losresultados
de dos consultas mediante la clusula UNION:
El nmero y el orden de las columnas debe ser el mismo en cada una de las consultas
de la clusula.
Los tipos de datos que use deben ser compatibles.
Por ejemplo, podra usar la clusula UNION de la siguiente manera para crear una consulta
que devuelve una lista de todos los empleados en el departamento de envos que se contrataron
entre el 1 de enero de 1990 y el 1 de enero del 2000:
SELECT first_name, last_name
FROM employees
WHERE department = shipping
UNION
SELECT first_name, last_name
FROM employees
WHERE hide_date BETWEEN 1-Jan-1990 AND 1-Jan-2000

48|Leccin 3

Uso de las clusulas EXCEPT e INTERSECT


Las instrucciones EXCEPT e INTERSECT estn diseadas para devolver valores distintos
al comparar los resultados de dos consultas. En particular, la clusula EXCEPT devuelve
elresultado final fijado donde existen datos en la primera consulta y no en el segundo
conjunto de datos. La clusula INTERSECT devuelve el resultado final fijado donde los valores
en ambas consultas coinciden con la consulta situada al lado izquierdo y derecho del operando.
Las mismas reglas bsicas se aplican para el uso de las clusulas EXCEPT e INTERSECT que
las que se aplican para usar la clusula UNION:
El nmero y el orden de las columnas debe ser el mismo en todas las consultas.
Los tipos de datos deben ser compatibles.
Por ejemplo, supongamos que ha trabajado en una configuracin de fbrica y que deseaba
recuperar una lista que mostrase los productos con las solicitudes de trabajo y otra lista que
mostrase los productos sin ningn tipo de solicitud de trabajo. Puede estructurar la consulta
como se muestra a continuacin, mediante primero la clusula INTERSECT:
SELECT ProductID
FROM Production.Product // El nombre de la base de datos es Production

y el nombre de la tabla es Product.
INTERSECT
SELECT ProductID
FROM Production.WorkOrder;
Resultado: 238 filas (productos con pedidos de trabajo)

La misma consulta pero con la clusula EXCEPT:


SELECT ProductID
FROM Production.Product
EXCEPT
SELECT ProductID
FROM Production.WorkOrder;
Resultado: 266 filas (productos sin pedidos de trabajo)

Uso de la clusula JOIN


La clusula JOIN permite combinar datos relacionados de varios orgenes de tablas.
Lasinstrucciones JOIN son similares en su aplicacin a EXCEPT e INTERSECT en que devuelven
valores de dos orgenes de tablas distintos. Conociendo esto, comprobemos los datos
quesepueden extraer mediante el uso de la clusula JOIN.
La clusulas JOIN se pueden especificar bien en la clusula FROM o en la clusula WHERE,
pero es recomendable que se especifiquen en la clusula FROM.
Hay tres tipos de instrucciones JOIN que debe conocer:
Las combinaciones internas (inner join) permiten comparar registros relacionados
procedentes de diversas tablas de origen.
Las combinaciones externas pueden incluir registros de una o ambas tablas de
consulta que no tienen registros correspondientes en la otra tabla. Hay tres tipos
decombinaciones externas: LEFT OUTER JOIN, RIGHT OUTER JOIN y FULL OUTER JOIN.
Las combinaciones cruzadas devuelven todas las filas de una tabla junto con todas
lasfilas de otra tabla. Las condiciones WHERE deben incluirse siempre.
Por ejemplo, puede usar la ms comn de las instrucciones JOIN, INNER JOIN, para recuperar
una lista de los empleados por sus nmeros de identificacin y hacer coincidir cada empleado
con el identificador de su supervisor de departamento actual. Para este tipo de consulta, tendr

Manipular datos|49

que identificar la columna correspondiente en cada una de las tablas en las que desea
escribir la consulta y desde las que obtener los resultados solicitados. En este ejemplo,
la clave externa en la Tabla 3-1 se identifica en la columna department_id y, en la Tabla
3-2, la clave externa se identifica como la columna coincidente department: Dicho de
otra forma, el identificador de departamento de la tabla Department est vinculado a la
columna del departamento de la tabla Employees.
Tabla 3-1
Tabla de empleados

first_name last_name

employee_id department

James Alexander 610001 1


David

Thompson 620002 1

Frances Drake

610003 1

Alexandria Link

610004

Peter Link

620005 2

David Cruze

610007 NULL

Tabla 3-2
Tabla del departamento

department_id first_name

last_name

Jane Horton

Mitch Simmons

Paul Franklin

La combinacin de datos entre tablas puede resultar muy complicada, sobre todo si se van
a crear listas especficas de miles de filas de datos. Mediante la consulta de instruccin
SELECT se pueden generar listas individuales, pero puede que se obtenga como resultado
toda la informacin que se necesita en un formato de lista individual.
La palabra clave INNER JOIN simplifica esta recuperacin de datos no solo por usar la informacin
de las dos tablas a partir de las que se requiere el resultado, sino por usar lapalabra clave
INNER JOIN para especificar las condiciones necesarias para las que aparecern los registros.
Por ejemplo, a partir de las dos tablas de ejemplo, es posible que desee crear una lista
que muestre los empleados que trabajan para cada uno de los diferentes supervisores
dedepartamento. Escribira la instruccin de consulta SQL de la siguiente manera:
SELECT employees.first_name, employees.last_name,
department.first_name, department.last_name
FROM employees INNER JOIN department
ON employees.department = department.department_id

A continuacin, se muestra el resultado:


first_name last_name first_name last_name

James
Alexander
Jane
Horton
David

Thompson

Jane

Horton

Frances

Drake

Jane

Horton

Alexandria

Link

Mitch

Simmons

Peter

Link

Mitch

Simmons

Antoin

Drake

Paul

Franklin

(6 filas afectadas)

50|Leccin 3

Se ha dado cuenta de que David Cruze no aparece en la lista de resultados de empleados


coincidentes con los supervisores de departamento? En la columna del departamento,
ese nombre no est identificado como integrante de ningn departamento, aunque es un
empleado. Esto podra ocurrir por varias razones; tal vez es un empleado nuevo y no ha
comenzado oficialmente a trabajar para ningn departamento.
Puede que el empresario deseara una lista de registros de la segunda tabla que en realidad
no coinciden con ninguno de las condiciones anteriores. Cualquiera de las instrucciones
OUTER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN o FULL OUTER JOIN puede dar el resultado
dela consulta que desee. La instruccin OUTER JOIN comienza donde los resultados de
INNER JOIN terminan, e incluye todos los registros de la tabla izquierda junto con los
registros que coinciden con la tabla derecha Y cualquier registro que no coincida.
Un ejemplo de la instruccin LEFT OUTER JOIN incluye la instruccin a partir de INNER JOIN
mostrada anteriormente, que tambin incluye la clusula de no coincidencia:
SELECT employees.first_name, employees.last_name,
department.first_name, department.last_name
FROM employees LEFT OUTER JOIN department
ON employees.department = department.department_id

El resultado sera como se muestra a continuacin:


first_name last_name first_name last_name

James
Alexander Jane
Horton
David

Thompson Jane

Horton

Frances Drake Jane Horton


Alexandria Link

Mitch

Simmons

Peter Link Mitch Simmons


Antoin Drake Paul Franklin
David Cruze NULL NULL
(7 filas afectadas)

Tenga en cuenta que la nica diferencia entre estas instrucciones INNER JOIN y OUTER JOIN es
que se ha incluido a David Cruze. Como se mencion anteriormente, David Cruze no est
asignado a ningn supervisor de departamento y por tanto su nombre muestra un valor NULL
en la lista donde las columnas se identifican por el nombre y apellido de cada supervisor.
En algunos casos, es posible que desee tener una combinacin de la tabla consigo misma;
por ejemplo, para comparar los registros dentro de la misma tabla. Esto se conoce como una
autocombinacin. Estos tipos de tablas se encuentran generalmente cuando se crea una lista
de resultados de la jerarquas de la organizacin. Por ejemplo, es posible que desee saber
cuntos autores viven en la misma ciudad, a fin de proporcionar una lista para una editorial.
Podra obtener este resultado mediante la instruccin de autocombinacin siguiente:
USE pubs
SELECT author1.first_name, author1.last_name, author2.first_name,
author2.last_name
FROM author1 INNER JOIN author2
ON author1.zip = author2.zip
WHERE author1.city = Pittsburgh
ORDER BY author1.first_name ASC, author1.last_name ASC

Manipular datos|51

El resultado sera como se muestra a continuacin:


first_name last_name first_name last_name


David Jones David Jones
David Jones Alex Starr
David Jones Linda Arrow
Alex

Starr David Jones

Alex

Starr Alex Starr

Alex

Starr Linda Arrow

Linda

Arrow David Jones

Linda

Arrow Alex

Linda

Arrow Linda Arrow

Starr

Delinda Burris Delinda Burris


Jules Allan Jules Allan
(11 filas afectadas)

Si desea eliminar las filas en las que el mismo autor coincide en repetidas ocasiones,
puede realizar el siguiente cambio en la instruccin de consulta de autocombinacin:
USE pubs
SELECT author1.first_name, author1.last_name, author2.first_name,
author2.last_name
FROM author1 INNER JOIN author2
ON author1.zip = author2.zip
WHERE author1.city = Pittsburgh
AND author1.state = PA
AND author1.author_id < author2.author_id
ORDER BY author1.first_name ASC, author1.last_name ASC

El resultado sera:
first_name

David

last_name first_name last_name



Jones Alex Starr

David

Jones Linda Arrow

Alex

Starr Linda Arrow

(3 filas afectadas)

De los resultados obtenidos a partir de la instruccin de consulta, se puede afirmar que David
Jones, Alex Starr y Linda Arrow viven todos en Pittsburgh, PA y tienen el mismo cdigo postal.

Uso de consultas para insertar datos


CONCLUSIN

En esta seccin, llegar a comprender cmo se insertan datos en una base de datos
ycmo se pueden usar las instrucciones INSERT.
Microsoft SQL Server proporciona distintas formas para insertar nuevos datos en las bases
de datos. Diferentes herramientas de insercin estn disponibles para lograr el objetivo
final de unir datos conjuntamente.
Si, por ejemplo, desea insertar pocos datos agregando algunas nuevas filas a la base de
datos, puede lograrlo mediante dos mtodos distintos. El primer mtodo tambin usa la

52|Leccin 3
CERTIFICACIN
DISPONIBLE
Qu comando se usa para
agregar datos a una tabla?
3.2

interfaz grfica (SSMS) y el segundo usa la instruccin INSERT. De cualquier manera se


logra el mismo objetivo.

Insertar datos
Primero vamos a saber cmo insertar datos en una tabla con SSMS antes de seguir adelante
con el mtodo de sintaxis.
INSERTAR DATOS CON SQL SERVER MANAGEMENT STUDIO
PREPRESE. Antes de empezar, asegrese de iniciar la aplicacin SSMS y conectarse a la
base de datos en la que desea trabajar. Despus, realice los siguientes pasos:

1. Compruebe que se ha conectado a la base de datos en la que desea trabajar (ver Figura 3-1).

2. Expanda la carpeta Bases de datos haciendo clic en el icono ms (+) junto a la palabra
Base de datos.
3. Expanda la carpeta de la base de datos que desea modificar.
4. Expanda la carpeta Tablas haciendo clic en el icono ms junto a la palabra Tablas.
5. Haga clic con el botn secundario en el nombre de la tabla y elija Editar las primeras
200 filas (vea la Figura 3-2).

Figura 3-1
Conexin a la base
de datos deseada




Figura 3-2
Editar las primeras 200 filas

Manipular datos|53
La Figura 3-3 muestra la pantalla de resultados. Si tiene un valor predeterminado como
el campo IntIdentity, no tendr que incluir el campo en la instruccin de consulta.
Figura 3-3
Pantalla de salida Editar
las primeras 200 filas

6. Escriba los datos en la ltima fila de la tabla en la que los datos se consideran datos
nuevos (o que se insertan). La ltima fila de la tabla tendr el valor NULL en cada una
de las columnas.

PAUSA. Deje la interfaz de SSMS abierta para el prximo ejercicio.


El otro mtodo de uso de la clusula INSERT es escribir una instruccin SQL en la ventana
del editor de texto. Con la sintaxis siguiente, se obtendr el mismo resultado que cuando
se usa la interfaz grfica:
INSERT INTO <nombre_tabla> (<columnas>)
VALUES (<valores>)
TOME NOTA

Aunque la lista
de columnas de la
instruccin INSERT es
totalmente opcional,
se recomienda que
especifique qu
columnas desea usar,
as SQL supondr
automticamente que la
lista de valores incluye
todas las columnas
en el orden correcto.

La clusula <columnas> contendr la lista separada por comas de los nombres de


columnade la tabla que desea incluir y la clusula <valores> contendr los valores
quedesea insertar.
No hay limitacin a la hora de insertar una sola fila cada vez con la con la instruccin
INSERT; en cambio, puede indicar varias filas separadas por comas. Esto es similar a las
comas que se usan en los archivos .CSV de Excel que separan las columnas de informacin
importada para su uso en otro programa de base de datos, como Access. Pero dentro de
la instruccin INSERT real, cada una de las filas identificadas por comas se incluirn entre
parntesis. Por tanto, una instruccin INSERT que agrega dos empleados nuevos a la tablas
de empleados, ser la siguiente:
INSERT INTO employees (first_name, last_name, employee_id, department)
VALUES (David, Clark, 610008, shipping),
(Arnold, Davis, 610009, accounting)

54|Leccin 3

Esto generar el siguiente resultado:


(2 filas afectadas)

Realmente es tan simple como aprovechar el poder de administracin y modificacin


delabase de datos. Ahora, exploraremos algunos otros tipos de modificacin de datos.

Actualizar datos y bases de datos


CONCLUSIN

CERTIFICACIN
DISPONIBLE
Qu comando se usa
para cambiar los datos
existentes en una tabla?
3.3

Como administrador de bases de datos, debe entender cmo se actualizan los datos
enuna base de datos, cmo se escriben los datos de actualizacin en una base de datos
con las instrucciones UPDATE apropiadas, as como cmo actualizar una base de datos
mediante una tabla.
La funcin de la instruccin UPDATE es cambiar los datos de una tabla o vista. Al igual
que cualquier manipulacin de datos o clusula de modificacin e instruccin de SQL,
puede usar esta instruccin ya sea en SSMS o en una ventana del editor de texto.

Uso de la instruccin UPDATE


La clusula UPDATE permite modificar los datos almacenados en tablas mediante atributos
de datos como los siguientes:
UPDATE <nombre_tabla>
SET <atributo> = <valor>
WHERE <condiciones>

Como se ha visto desde el inicio de esta leccin, se puede leer este tipo de instruccin
SQL como se hara con cualquier frase. Supongamos que desea actualizar una tabla en
la que un identificador de columna determinada refleje un determinado valor. Quizs
desea tener un atributo de un nuevo supervisor (como en el ejemplo de los empleados),
Doug Able, asignado a los nuevos empleados para su aprendizaje. Ese supervisor podra
tener el atributo establecido para l mismo (consultar la tabla del departamento) como
un identificador de 4 y la clusula WHERE se satisface haciendo que se corresponda con
la condicin NULL para los empleados sin supervisor. Vamos a escribir ese escenario
deinstruccin UPDATE para actualizar el ejemplo anterior.
El primer paso sera agregar un registro en la tabla departamento con el nombre y la
informacin del identificador de departamento del nuevo supervisor con la instruccin INSERT:
INSERT INTO department (first_name, last_name, department_id)
VALUES (Doug, Able, 4)

La respuesta sera como se muestra a continuacin:


(1 fila afectada)

TOME NOTA

Si no especifica qu
registros se van a actualizar,
todos los registros o filas
se actualizarn con el
nuevo valor. Esto puede
resultar perjudicial.

Ahora, debemos actualizar la tabla de empleados de forma que refleje cualquier empleado
que no tenga un supervisor de departamento asignado. En este caso, la instruccin UPDATE
se vera de la siguiente manera:
UPDATE employees
SET department = 4
WHERE department IS NULL

El resultado se muestra en la Tabla 3-4.

Manipular datos|55
Tabla 3-4
Los valores NULL de la columna del departamento

92

2010-04-03.

Dbo

CREATE_VIEW

dbo

vDVMPrep

CREATE VIEW [

<EVENT_INSTA

92

2010-04-03.

Dbo

CREATE_VIEW

dbo

vTimeSeries CREATE VIEW [

<EVENT_INSTA

92

2010-04-03.

dbo

CREATE_VIEW

dbo

vTargetMail

CREATE VIEW [

<EVENT_INSTA

NULL

NULL

NULL
NULL

NULL NULL

NULL NULL

Volviendo a la Tabla 3-1, tenga en cuenta que solo un empleado, David Cruze, no tiene
asignado un nmero de identificador de departamento, lo que indica su valor NULL en la
columna del departamento. Debido a que hemos agregado un nuevo supervisor a la tabla del
departamento con la instruccin INSERT INTO anterior, David Cruze ahora tiene un nmero de
identificador de departamento y se le ha asignado a Doug Capaz como supervisor.
En comparacin, para actualizar una tabla mediante la interfaz grfica de SSMS,
nicamente hay que seguir estos pasos:
Abrir la interfaz de SSMS.
Abrir la tabla en la que se desea actualizar los datos.
Buscar la fila en la que se desea actualizar los registros en la vista Abrir tabla.

Eliminar datos
CONCLUSIN

CERTIFICACIN
DISPONIBLE
Qu comandos se usa
para eliminar datos de
una base de datos?
3.4

TOME NOTA

Las filas no se eliminan


realmente del origen de
la tabla (origen_tabla)
identificado en la clusula
FROM, solo se eliminan
de la tabla nombrada
en la clusula DELETE
(tabla_o_vista).

Todos los administradores de bases de datos deben saber cmo eliminar datos
de tablas individuales o mltiples, as como asegurar los datos y la integridad
referencial mediante transacciones.
Existen varias maneras diferentes de eliminar filas de una tabla o vista. Puede identificar
y eliminar filas individuales de la base de datos con la sintaxis DELETE, eliminar todas las
filas con la instruccin truncate table o quitar toda la tabla mediante la instruccin drop table.
El mtodo que elija depende totalmente de sus necesidades o de la cantidad de datos que
necesita quitar.

Uso de la instruccin DELETE


Puede usar la instruccin DELETE para quitar una o ms filas de una tabla o vista.
Esta instruccin se estructura de la siguiente manera:
DELETE FROM <nombre_tabla>
WHERE <condiciones>

Puede usar la instruccin DELETE en mltiples situaciones. Por ejemplo, podra eliminar
todos los empleados del departamento de contabilidad de la tabla de empleados de una
compaa si, a causa de una adquisicin empresarial, esos empleados ya no son empleados
de la compaa. Puede eliminar esta informacin con el siguiente comando:
DELETE FROM employees
WHERE department = acounting

Esto devolver el valor siguiente:


(1 fila afectada)

56|Leccin 3

Este resultado muestra que se ha eliminado el empleado que trabajaba en el departamento


de contabilidad de la tabla de empleados.

Truncar una tabla con TRUNCATE TABLE


Es posible que desee eliminar todas las filas de una tabla determinada. Para ello, puede usar
la instruccin TRUNCATE TABLE, aunque tambin puede que desee usar DELETE y la condicin
where. Esta ltima tcnica producira el mismo resultado, pero podra durar mucho tiempo
si se eliminan filas de bases de datos muy grandes. Por tanto, la instruccin TRUNCATE TABLE
ser la mejor opcin. La sintaxis de la instruccin es la siguiente:
TRUNCATE TABLE <nombre_tabla>

Cada resultado ejecutado con xito desde SQL aparecer de la siguiente manera:
Comandos completados correctamente.

La instruccin TRUNCATE TABLE quita los datos reales dentro de la tabla, pero mantiene
la estructura de tabla para que se pueda usar en el futuro.

Eliminar una tabla con DROP TABLE


Tal vez desea eliminar una tabla entera porque est obsoleta, porque contiene demasiados
datos por los que desplazarse o por alguna otra razn. Quitar una tabla entera implica el
uso de la instruccin DROP TABLE, que tendr el siguiente aspecto:
DROP TABLE <nombre_tabla>

Uso de la integridad referencial


Uno de los pasos ms importantes para planear una base de datos, creacin de tablas,
manipulacin de datos, etctera es la conformacin de un modelo de seguridad apropiado,
del quela integridad referencial forma parte. Un problema mayor en la manipulacin y
mantenimiento de bases de datos es que a veces los datos de SQL Server se pierden y se
deben recuperar. Sino existen medidas de seguridad adecuadas, como parte del proceso de
copia de seguridad yrecuperacin, la recuperacin de los datos perdidos podra resultar una
tarea muy costosa.
Una medida de seguridad que se puede emplear en las tablas de bases de datos es el uso de
mtodos de integridad referencial. Uno de los errores ms comunes en la manipulacin de
bases de datos es la prdida accidental de tablas completas. La mejor forma de evitar esta
situacin es asegurarse de que la base de datos usa integridad referencial. Laintegridad
referencial no permite la eliminacin de tablas a menos que todas las tablas relacionadas
seeliminen mediante una eliminacin en cascada.
Esto nos lleva a otro mtodo recomendado: usar transacciones cuando se actualizan datos.
Con frecuencia, los datos se eliminan, truncan o actualizan accidentalmente durante las
tareas habituales de mantenimiento, por lo que una de las mejores maneras de evitar que
esto ocurra es usar transacciones en la actualizacin de datos. Escribir simplemente begin
tran antes de la instruccin SQL real es un buen punto de partida y, si se ha ejecutado todo
correctamente, se emite una instruccin COMMIT desde SQL. Si hay un error en alguna
delas instrucciones, se emite ROLLBACK desde SQL.
Un ejemplo de instruccin de transacciones podra ser:
BEGIN TRAN
DELETE FROM <nombre_tabla>

Lo que sucede en este momento es que se comprueba que lo que se hizo realmente se ha
producido y despus se emite una instruccin COMMIT para guardar los cambios, o bien
se emite ROLLBACK para deshacerlos. Muchas veces los errores se producen a travs de
errores simples y, si usa BEGIN TRAN y COMMIT o ROLLBACK mientas se realizan las tareas
demantenimiento, se dar cuenta de la mayora de las eventualidades antes de que ocurran.

Manipular datos|57

RESUMEN DE CONOCIMIENTOS
En esta leccin, ha aprendido lo siguiente:
El comando SQL para recuperar los datos de una base de datos es SELECT.
Solo hay tres cosas que se necesitan identificar en la instruccin con el fin de formar una consulta
SELECT adecuada: las columnas que se van a recuperar, las tablas de las que se van a recuperar
ylas condiciones, si hay alguna, que los datos deben satisfacer.
Una clusula BETWEEN permite especificar el intervalo que se va a usar en un formato de consulta
entre x e y.
La palabra clave NOT se usa para buscar datos definiendo lo que no se desea recuperar.
La clusula UNION permite combinar los resultados de dos o ms consultas en un nico conjunto
deresultados que incluir todas las filas que pertenecen a la consulta en esa unin.
La clusula EXCEPT devuelve los valores distintos de la consulta izquierda que no se encuentran
tampoco en la consulta derecha, mientras que la clusula INTERSECT devuelve los valores
distintos que no se encuentran en ninguno de los lados izquierdo y derecho de este operando.
La clusula JOIN permite combinar datos relacionados de varios orgenes de tablas.
Par insertar datos, se puede usar SSMS o la instruccin INSERT.
La funcin de la instruccin UPDATE es cambiar datos de una tabla o vista.
La instruccin DELETE quita filas de una tabla o vista.
La instruccin TRUNCATE TABLE quita los datos de una tabla, pero mantiene la estructura
delatabla para que se pueda usar en el futuro.
Se puede quitar una tabla completa mediante el comando DROP TABLE. La mejor forma
de evitar la eliminacin accidental de tablas completas es usar la integridad referencial.
La integridad referencial no permite la eliminacin de tablas a menos que todas las tablas
relacionadas seeliminen mediante una eliminacin en cascada.

Evaluacin

de conocimientos
Verdadero o falso
Rodee con un crculo la V si el enunciado es verdadero o la F si la afirmacin es falsa.
V F
V F
V F
V F
V F

1.
2.
3.
4.
5.

La instruccin SELECT se limita a consultar datos de una sola tabla.


La instruccin INSERT se puede usar para insertar varias filas a la vez.
La instruccin TRUNCATE se usa para eliminar una tabla.
Una condicin INNER JOIN es lo mismo que CROSS JOIN y una condicin WHERE.
El orden de las columnas en una instruccin SELECT debe coincidir con el orden
en que se crearon las columnas cuando se gener la tabla.

Rellene los espacios en blanco


Complete las oraciones siguientes escribiendo la palabra o palabras correctas en los
espacios en blanco proporcionados.
1. La instruccin SELECT se usa para consultar y combinar datos de una o ms
____________.
2. La clusula WHERE de una instruccin SELECT contiene una o varias ______________
para filtrar los datos que se van a consultar.

58|Leccin 3

3. Usar la instruccin ______________ es la forma ms eficaz de eliminar todas


las filas de una tabla.
4. Para combinar los resultados de dos consultas, se usa el operador ____________.
5. La instruccin _______________ se usa para modificar una o varias filas de una tabla.
6. Si se usa _______________ y _______________ o ____________ mientras se
realizan tareas de mantenimiento, se detectarn la mayora de los accidentes antes
deque se produzcan.
7. Quitar una tabla completa se puede lograr mediante la sintaxis _______________
y _______________.
8. Para seleccionar una sola columna para la consulta, se identifica el nombre de la
columna escribindola entre las palabras _______________ y _______________
en la instruccin de consulta.
9. Se pueden _______________ varias condiciones en una sola instruccin de consulta
para satisfacer sus requisitos.
10. La clusula _______________ permite combinar los resultados de dos o ms
consultas en un nico conjunto de resultados que incluir todas las filas que
pertenecen a la consulta en esa unin.

Varias opciones
Rodee con un crculo la letra correspondiente a la mejor respuesta.
1. Cul de las siguientes condiciones no es vlida?
a. salary <> 50,000
b. salary != 50,000
c. salary NOT EQUAL 50,000
d. NOT salary = 50,000
2. Cul de los siguientes operadores no se admite cuando se combinan resultados
entre instrucciones SELECT?
a. UNION
b. EXCEPT
c. INTERSECT
d. AND
3. Cul de las siguientes condiciones de intervalo generara un error de sintaxis?
a. salary <= 50,000 and salary >= 10,000
b. salary between (10,000 and 50,000) and (60,000 and 90,000)
c. salary >= 10,000 and salary <= 50,000
d. salary between 10,000 and 50,000
4. Cul de las siguientes instrucciones combinar los resultados de dos o ms consultas en
un nico conjunto de resultados que incluye todas las filas pertenecientes a la consulta?
a. UNION
b. EXCEPT
c. INTERSECT
d. AND
5. Cul de los siguientes elementos se usa para evitar la eliminacin accidental de los
datos de una tabla?
a. Transacciones
b. Valores Null
c. Combinaciones internas (inner join)
d. Integridad referencial

Manipular datos|59
Evaluacin

de competencias
Escenario 3-1: Uso del comando SELECT
Le acaban de contratar como administrador de bases de datos para AdventureWorks
Corporation. Un administrador de red desea saber cmo extraer informacin de la base
dedatos de AdventureWorks. Por lo tanto, necesita responder a las siguientes preguntas:
1. Qu comando usara para mostrar los registros de una tabla?
2. Qu comando usara para mostrar los registros FirstName y LastName de la tabla
Users?
3. Qu comando usara para mostrar todos los registros de la base de datos Member
y ordenarlos por la columna FirstName?
4. Qu comando usara para mostrar todos los registros de la tabla Suppliers que
contengan City of Sacramento?
5. Qu comando usara para mostrar los registros CompanyName, ContactName y
PhoneNumber de la tabla Suppliers que contengan un identificador de proveedor mayor
que 1000?
6. Qu comando usara para mostrar los registros CompanyName, ContactName y
PhoneNumber de la tabla Customers para las compaas con ms de 100 empleados
que residan en el estado de California.

Escenario 3-2: Eliminar datos de tablas


Despus de revisar junto con el administrador de red algunos de los registros de la base de
datos AdventureWorks, deciden eliminar algunos registros antiguos. Este escenario plantea
las siguientes preguntas:
1. Qu comando usara para quitar todos los registros de la tabla Customers donde la
edad es inferior a 18?
2. Qu comando usara para quitar todos los registros de la tabla Schools con un valor
de inscripcin inferior a 500?
3. Qu comando usara para quitar todos los registros de la tabla Contact cuyo pas no
es USA y al mismo tiempo liberar el espacio usado por esos registros?
4. Qu comando usara para eliminar la tabla Temp?
Evaluacin

de aptitudes
Escenario 3-3: Manipular datos mediante las instrucciones SELECT y JOIN
Lo acaban de contratar como administrador de bases de datos de AdventureWorks
Corporation. Ha surgido alguna confusin debido a que las rdenes de compra de la
compaa se almacenan en dos tablas. Por lo tanto, necesita crear una consulta para
combinar la tabla PurchaseOrderHeader de la base de datos de ejemplo, AdventureWorks,
consigo misma de modo que proporcione una lista de los pedidos
de compra emparejados. Cada fila incluye dos pedidos de compra con proveedores
y mtodos de envo idnticos.
1. Tras abrir SSMS y obtener acceso a la base de datos AdventureWorks, qu
consulta usara en la base de datos AdventureWorks para mostrar los registros
ProductSubcategoryID eProductCategoryID de la tabla Production.ProductSub y
contuviera la palabra Bike? Tambin desea ordenar los registros por SubcategoryName.
2. Qu consulta usara para combinar la tabla ProductCategory con la tabla
ProductSubcategory para recuperar la columna Name de la tabla ProductCategory?

60|Leccin 3

Escenario 3-4: Manipular datos mediante las instrucciones INSERT y UPDATE


Como administrador de la base de datos AdventureWorks, necesita insertar datos en la
tabla Credit de la base de datos Sales usando varias instrucciones de datos, as como
actualizando y eliminando datos de la misma tabla Credit.
1. Tras abrir SSMS, qu comandos escribira y ejecutara en la base de datos
AdventureWorks para revisar las columnas de la tabla Sales?
2. En la ventana de consulta ya existente, qu comandos usara para agregar la fila
siguiente a la tabla Credit?
Patrick, Roberts, 6000, Roberts@telecome.usa
3. En la ventana de consulta existente, qu comandos escribira, resaltara y ejecutara
para agregar las siguientes filas a la tabla Credit para el nombre, apellidos y lmite de
crdito?
Alex, Hall, 5000
Annie, Smith, 10000
4. En la ventana de consulta existente, qu comandos usara para actualizar la direccin
de correo electrnico de Annie Smith en la tabla Credit usando la instruccin Update?

Comprender el
almacenamiento
dedatos

LECCIN

M AT R I Z D E D O M I N I O D E O B J E T I V O S
Habilidades y Conceptos

Objetivo del Examen MTA

Normalizar una base de datos

Comprender la normalizacin. 4.1

Comprender las claves


principales, externas
y compuestas

Comprender las claves


4.2
principales, externas
y compuestas.

Comprender los ndices


Comprender los ndices.
agrupados y no agrupados

Nmero de Objetivo del Examen MTA

4.3

TRMINOS CLAVE
ndice agrupado

ndice no agrupado

clave principal compuesta

normalizacin

quinta forma normal (5FN)

formas normales (NF)

primera forma normal (1FN)

clave principal

clave externa

datos redundantes

restriccin de clave externa

segunda forma normal (2FN)

forma

tercera forma normal (3FN)

cuarta forma normal (4FN)

restriccin de clave nica

Supongamos que trabaja para una empresa de distribucin de grandes almacenes que
proporciona material de acampada al aire libre para ms de 90 tiendas en Amrica
del Norte. Acaba de recibir una nota de la oficina indicando que la compaa ha
adquirido una segunda tienda en el Estado de Washington. Su superior le ha solicitado
que agregue una nueva tabla a la base de datos para esa tienda, indicando que la tabla
se debe rellenar con el mismo equipamiento que se vende en la primera tienda de
Washington. Quiere asegurarse de que la integridad se mantiene en ambas bases
de datos y de que la nueva tabla permanece normalizada en tercera forma normal.
En esta leccin, aprender acerca de la normalizacin de bases de datos, los cinco niveles
ms comunes de normalizacin y el propsito de la normalizacin en lo que respecta
a la integridad de base de datos. Tambin aprender qu claves externas, primarias
y compuestas desempean un papel fundamental en la integridad referencial.
61

62|Leccin 4

nNormalizar

CONCLUSIN

TOME NOTA

La normalizacin
es la eliminacin
de datos redundantes
para ahorrar espacio.

CERTIFICACIN DISPONIBLE
Cules son las tres
primeras formas normales
y en qu se diferencian
unas de otras?
4.1

una base de datos


Como administrador de bases de datos, debe comprender las razones de la normalizacin,
los cinco niveles ms comunes de normalizacin y cmo normalizar una base de datos en
la tercera forma normal.
La razn principal del uso de tcnicas de normalizacin en el almacenamiento de datos
surgi en los das en que el almacenamiento de datos era ms laborioso que ahora. En
efecto, normalizacin, en pocas palabras, es la eliminacin de datos redundantes para
ahorrar espacio.
Ahora que entiende la definicin general de normalizacin, profundizaremos en este
concepto y en su aplicacin en el diseo de bases de datos.

Comprender la normalizacin
La normalizacin se basa totalmente en los procesos de diseo y organizacin de datos
que se derivan de las reglas que se usan en la construccin y diseo de bases de datos
relacionales. Por lo tanto, es sumamente importante comprender qu son bases de datos
relacionales y la importancia de las buenas metodologas en el diseo.
La normalizacin, por definicin, es el proceso de organizacin de los datos con el fin de
reducir la redundancia mediante la divisin de una base de datos en dos o ms tablas y la
posterior definicin de las relaciones entre las tablas. El objetivo de esta operacin es aislar
datos de modo que las adiciones, eliminaciones y modificaciones que se producen en cada
campo se pueden realizar dentro de una tabla y luego se pueden propagar a travs del resto
de la base de datos mediante las relaciones definidas.
Hay cinco formas normales (FN), pero vamos a centrarnos en las tres primeras:
Primera forma normal (1NF): elimina grupos repetidos
Segunda forma normal (2FN): elimina datos redundantes
Tercera forma normal (3FN): elimina columnas no dependientes de una clave
Cuarta forma normal (4FN): asla relaciones mltiples independientes
Quinta forma normal (5FN): asla relaciones mltiples semnticamente relacionadas
Veamos ahora cada una de estas formas con ms detalle. Al tratar con ms detalle las
formas normales, esta leccin pasa a realizar un estudio ms acadmico sobre el diseo
de bases de datos relacionales. Contrariamente a la opinin popular, las formas no son
una metodologa progresiva, pero representan un nivel progresivo de cumplimiento.
Tcnicamente, una base de datos no puede estar en la segunda forma normal hasta que
no haya cumplido la primera forma normal; por lo tanto, no se puede pensar en el diseo
de una entidad ni en trasladarla de la primera forma normal a la segunda forma normal y
as sucesivamente, porque cada forma normal no es ms que un tipo diferente de integridad
de los datos con los distintos requisitos que se deben ir cumpliendo.

Comprender la primera forma normal


La primera forma normal (1FN) establece que los datos tienen un formato de entidad,
lo que bsicamente significa que deben cumplirse las tres condiciones siguientes:
La tabla no debe tener registros duplicados. Una vez definida una clave principal
para la tabla, se satisface el criterio de la primera forma normal.

Comprender el almacenamiento dedatos|63

La tabla tampoco debe tener atributos con varios valores, lo que indica que no pueden
combinarse en una columna nica varios valores que se consideren vlidos para
una columna. Como ejemplo de la primera forma normal, considere la lista de los
campamentos base y rutas tursticas de la base de datos Cape Hatteras Adventures.
En la Tabla 4-1 se muestran los datos de BaseCamp en un modelo que infringe la primera
forma normal: el atributo de las rutas tursticas (Tour1, Tour2, y Tour3) no es nico. Es
decir, hay tres valores asignados para las rutas tursticas.
Las entradas de la columna o atributo deben ser del mismo tipo de datos.
Tabla 4-1
BaseCamp

Datos de BaseCamp (antes):


infraccin de la primera
forma normal

Tour1

Asheville
Sendero de los Apalaches

Cabo Hatteras

Faros de Outer Banks

Freeport

Buceo en Bahamas

Ft. Lauderdale

Senderismo por el Amazonas

Virginia
Occidental

Descenso rpido por


el ro Gauley

Tour2

Tour1

Excursin a pie por la ruta


verde Blue Ridge Parkway

Para volver a disear el modelo de datos de forma que cumpla con la primera forma
normal, hay que resolver la repeticin del grupo del atributo de giras tursticas en un
atributo nico, como se muestra en la Tabla 4-2 y, a continuacin, pasar los valores
mltiples a una tabla nica. En este caso, la entidad BaseCamp contiene una tabla nica
para cada campamento base, y BaseCampID de la entidad Tour se refiere a la clave
principal de la entidad BaseCamp.
Tabla 4-2
Datos de BaseCamp
(despus): conforme a la
primera forma normal

Entidad Tour
BaseCampID (FK)

Tour

Entidad BaseCamp
BaseCampID (PK)

Name

Sendero de los Apalaches

Asheville

Excursin a pie por la ruta


verde Blue Ridge Parkway

Cabo Hatteras

Faros de Outer Banks

Freeport

Buceo en Bahamas

Ft. Lauderdale

Senderismo por el Amazonas

Descenso rpido
por el ro Gauley

Comprender la segunda forma normal


La segunda forma normal (2FN) garantiza que cada atributo describe la entidad.
Esta forma se basa totalmente en la dependencia: especficamente, los atributos de la
entidad en cuestin, que no forman parte de una posible clave, deben ser funcionalmente
dependientes de la clave principal completa. Lo que ocurre al final es que, en ocasiones,
las claves principales combinadas interfieren con la segunda forma normal si los atributos
no son dependientes de cada atributo de la clave principal. Si un atributo depende de
uno de los atributos de la clave principal pero no de otros, se crea una dependencia
parcial, lo que infringe la segunda forma normal.

64|Leccin 4

Para entender mejor las infracciones de la segunda forma normal, en la Tabla 4-3
se muestra un ejemplo con los datos de BaseCamp cuando no estn en 2FN,
y en la Tabla 4-4 se muestran los mismos datos despus de su normalizacin.
Tabla 4-3
Datos de BaseCamp (antes):
infraccin de la segunda
forma normal

PK-BaseCamp
PK-Tour

Base Camp
PhoneNumber

Asheville

Sendero de los Apalaches

828-555-1212

Asheville

Excursin a pie por la ruta


verde Blue Ridge Parkway

828-555-1212

Cabo Hatteras

Faros de Outer Banks

828-555-1213

Freeport

Buceo en Bahamas

828-555-1214

Ft. Lauderdale

Senderismo por el Amazonas

828-555-1215

Virginia Occidental

Descenso rpido
por el ro Gauley

828-555-1216

Tabla 4-4
Datos de BaseCamp
(despus): conforme a la
segunda forma normal

Entidad Tour

Entidad BaseCamp

PK-BaseCamp

PK-Tour

BK-BaseCamp

PhoneNumber

Asheville

Sendero de los Apalaches

Asheville

828-555-1212

Asheville

Excursin a pie por la ruta


verde Blue Ridge Parkway

Cabo Hatteras

828-555-1213

Cabo Hatteras

Faros de Outer Banks

Freeport

828-555-1214

Freeport

Buceo en Bahamas

Ft. Lauderdale

828-555-1215

Ft. Lauderdale

Senderismo por
Virginia Occidental
el Amazonas

Virginia Occidental

Descenso rpido
por el ro Gauley

828-555-1216

Comprender la tercera forma normal


La tercera forma normal (3FN) comprueba las dependencias transitivas. Una dependencia
transitiva se parece a una dependencia parcial en que ambas hacen referencia a atributos
que no son totalmente dependientes de una clave principal. Una dependencia se considera
transitoria cuando el atributo1 depende del atributo2, que depende a su vez de la clave
principal.
Al comprobar si existe una infraccin en la segunda o tercera forma normal, recuerde que
cada atributo est directa o indirectamente vinculado a la clave principal. Por lo tanto, la
segunda forma normal se infringe cuando un atributo depende nicamente de una parte de
la clave y la tercera forma normal se infringe cuando el atributo depende de la clave, pero
tambin de otro atributo sin clave. La frase fundamental a la hora de recordar la descripcin
de la tercera forma normal es que cada atributo debe proporcionar un dato acerca de la
clave, la clave completa y nada ms que la clave. De la misma manera que con la segunda
forma normal, la tercera forma normal se resuelve moviendo el atributo no dependiente
a una nueva entidad.

Comprender el almacenamiento dedatos|65

Para entender mejor las infracciones de la tercera forma normal, en la Tabla 4-5 se muestra
un ejemplo de los datos del campamento base cuando no estn en 3FN y en la Tabla 4-6 se
muestran los datos despus de su normalizacin.
Tabla 4-5
Datos de BaseCamp (antes):
infraccin de la tercera
forma normal

Entidad BaseCamp
BaseCampPK
Asheville

BaseCampPhoneNumber LeadGuide
1-828-555-1212
Jeff Davis

DateofHire
5/1/99

Cabo Hatteras

1-828-555-1213

Ken Frank

4/15/97

Freeport

1-828-555-1215

Dab Smith

7/7/2001

Ft. Lauderdale

1-828-555-1215

Sam Wilson

1/1/2002

Virginia Occidental

1-828-555-1216

Lauren Jones

6/1/2000

Tabla 4-6
Datos de BaseCamp
(despus): conforme a la
tercera forma normal

Entidad Tour

Entidad LeadGuide

BaseCampPK

LeadGuide

LeadGuidePK

DateofHire

Asheville

Jeff Davis

Jeff Davis

5/1/99

Cabo Hatteras

Ken Frank

Ken Frank

4/15/97

Freeport

Dab Smith

Dab Smith

7/7/2001

Virginia Occidental

Lauren Jones

Lauren Jones

6/1/2000

CMO NORMALIZAR UNA BASE DE DATOS A LA TERCERA FORMA NORMAL


Existen dos requisitos bsicos para que una base de datos est en la tercera forma normal:
La base de datos ya debe cumplir con los requisitos de 1FN y 2FN.
La base de datos no debe contener columnas que no sean totalmente dependientes
de la clave principal.
Con el fin de comprender cmo una base de datos se puede poner en la tercera forma
normal, supongamos que tenemos una tabla de pedidos de extras que contiene los
siguientes atributos:
OrderNumber (clave principal)
CustomerNumber
UnitPrice
Quantity
Total
Recuerde, el primer requisito es que la tabla debe cumplir los requisitos 1FN y 2FN.
Hay alguna columna duplicada? No. Hay una clave principal? S, OrderNumber. Por
lo tanto, se cumplen los requisitos de 1FN. Existen subgrupos de datos que se aplican a
varias filas? No, por lo que tambin se cumplen los requisitos de 2FN.
Actualmente, son todas las columnas totalmente dependientes de la clave principal?
CustomerNumber vara con OrderNumber y no parece depender de ninguno de los dems
campos. Qu pasa con UnitPrice? Este campo podra depender de CustomerNumber
en una situacin donde se cobre a cada cliente un precio fijo. Sin embargo, a partir de la
informacin proporcionada en los campos de la tabla, podemos a veces cobrar al mismo
cliente precios diferentes. Por lo tanto, UnitPrice depende totalmente de OrderNumber.
La cantidad de artculos tambin vara de pedido en pedido, as que aqu no hay problema.

66|Leccin 4

Qu pasa con el total? Parece que aqu podran surgir problemas. El total se puede derivar
multiplicando UnitPrice por la Quantity y, por lo tanto, no es totalmente dependiente de la
clave principal. Hay que quitarlo de la tabla para que cumplir con
la tercera forma normal. Quizs se podran reemplazar los atributos originales con
los siguientes atributos:
OrderNumber
CustomerNumber
UnitPrice
Quantity
Ahora la tabla est en 3FN. Pero, puede que se pregunte, qu pasa con el total? Este es
un campo derivado y es mejor no almacenarlo en la base de datos en absoluto. Simplemente
se puede calcular sobre la marcha al realizar consultas de bases de datos. Por ejemplo, esta
consulta se podra haber usado previamente para recuperar los nmeros de pedidos y los totales:
SELECT OrderNumber, Total
FROM WidgetOrders

Ahora se puede usar la siguiente consulta con el fin de lograr los mismos resultados,
sin infringir las reglas de normalizacin:
SELECT OrderNumber, UnitPrice * Quantity AS Total
FROM WidgetOrders

Comprender la cuarta forma normal


La cuarta forma normal (4FN) implica que dos atributos independientes se agrupan
para formar una clave principal junto con un tercer atributo. Pero si los dos atributos
no identifican de manera inequvoca la entidad sin el tercer atributo, el diseo infringe
la cuarta forma normal.

Comprender la quinta forma normal


La quinta forma normal (5FN) proporciona un mtodo para disear relaciones complejas
en las que intervienen varias entidades (normalmente tres o ms).
Generalmente, los administradores de bases de datos creen que basta con que se cumplan
los requisitos de la primera, segunda y tercera formas normales. La cuarta y la quinta forma
normal pueden ser complejas, pero si se infringen pueden producirse problemas graves.
Es importante tener en cuenta el diseo de la base de datos en su conjunto y no solo como
el diseo de algo para cumplir con la mitad de las necesidades de los usuarios, empresarios,
etc. No necesariamente se trata de si varias entidades se usan o no se usan; ms bien, es
una cuestin de alinear correctamente los atributos y las claves. Cualquier infraccin de
las formas normales puede provocar un efecto en cascada con mltiples infracciones
y bases de datos ineficientes.
La normalizacin reduce la contencin del bloqueo y mejora el rendimiento de varios
usuarios. Los bloqueos son mecanismos esenciales que se usan para evitar cambios
simultneos en la base de datos, por ejemplo, dos usuarios distintos que realizan
cambios en el mismo registro. Sin bloqueos, un cambio realizado por una transaccin
lo podra sobrescribir otra transaccin que se ejecutase al mismo tiempo. Por ltimo, la
normalizacin cuenta con estas tres ventajas:
TOME NOTA

La normalizacin tambin
reduce la contencin
del bloqueo y mejora
el rendimiento de
multiusuario.

Costos de desarrollo: a pesar de que se puede tardar ms tiempo en disear una base
de datos normalizada, estas bases de datos son ms fciles para trabajar y reducen los
costos de desarrollo.
Facilidad de uso: la ubicacin de columnas en la tabla correcta facilita la comprensin
de las bases de datos y la escritura correcta de consultas. Con esto se reduce el tiempo
de diseo y el costo.
Extensibilidad: una base de datos no normalizada es a menudo ms compleja y por
lo tanto ms difcil de modificar. Esto supone retrasos en el desarrollo de nuevas
bases de datos y aumento en los costos de desarrollo.

Comprender el almacenamiento dedatos|67

nComprender las claves principales, externas y compuestas

CONCLUSIN

CERTIFICACIN DISPONIBLE
Cules son las diferencias
entre una clave principal
y una clave externa?
4.2

En esta seccin, aprender las razones que existen para usar claves en una base de
datos. Tambin explorar cmo elegir las claves primarias apropiadas, seleccionar los
tipos de datos apropiados para las claves, seleccionar los campos apropiados para las
claves compuestas y comprender la relacin entre claves externas y primarias.
Existen tres tipos diferentes de restricciones disponibles en SQL Server que garantizan
la integridad de la base de datos: claves principales, claves externas y claves compuestas
(nicas). Una clave de restriccin nica permite aplicar la propiedad de unicidad de
columnas, adems de una clave principal en una tabla. Una clave de restriccin nica
acta de forma similar a una clave principal, pero con dos diferencias importantes:
Las columnas que contienen una restriccin de clave nica solo pueden contener una
fila con un valor NULL. No se puede tener dos filas que contengan un valor NULL
en la misma opcin, porque se infringira la restriccin nica de valores duplicados.
Una tabla puede tener varias restricciones nicas.
CREAR UNA RESTRICCIN NICA
PREPRESE. Antes de empezar este ejercicio, asegrese de iniciar la aplicacin SQL Server
Management Studio y conectarse a la base de datos en la que desea trabajar. Despus,
realice los siguientes pasos:

Figura 4-1
Vista Diseo

1. En SQL Server Management Studio, abra la tabla en la que desea crear la restriccin
en Vista de diseo. Para ello, haga clic con el botn derecho del mouse en la tabla
y seleccione Diseo en el men que aparece, como se muestra en la Figura 4-1.

68|Leccin 4

Figura 4-2
ndices o claves

Figura 4-3
Conectar a una base de datos

2. En el men desplegable Diseador de tablas que aparece en la parte superior de la


barra de herramientas, seleccione ndices o claves, como se muestra en la Figura 4-2.
Se abrir la ventana ndices o claves. Observe que en la tabla ya se ha identificado
unarestriccin de clave principal, como se muestra en la Figura 4-3.

Comprender el almacenamiento dedatos|69



3. Haga clic en el botn Agregar para crear una clave nueva.


4. Haga clic en la propiedad Type en la parte derecha del cuadro de propiedades y cambie
el valor predeterminado ndice a Clave nica, como se muestra en la Figura 4-4.

5. Haga clic en los puntos suspensivos (...), junto a la seccin de propiedades Columnas.
Vea la Figura 4-5. Ahora puede seleccionar las columnas que desea incluir en la
restriccin nica.

6. Haga clic en el botn Cerrar.

Figura 4-4
Cuadro de la propiedad Type

Figura 4-5
Seleccin de columnas
para agregar

70|Leccin 4

7. Guarde la restriccin recin creada seleccionando Guardar todo en el men Archivo,


como se muestra en la Figura 4-6.

Figura 4-6
Guardar una restriccin
nueva

Ya ha creado su propia restriccin nica.

PAUSA. Deje la interfaz de SSMS abierta para el prximo ejercicio.

Comprender las claves principales


Quizs el concepto ms importante a la hora de disear una tabla de base de datos es
asegurarse de que tiene una clave principal, es decir, un atributo o conjunto de atributos
que se pueden usar para identificar de manera inequvoca cada fila. Cada tabla debe tener
una clave principal; sin una clave principal, no es una tabla vlida. Por definicin, una
clave principal debe ser nica y debe tener un valor que no es nulo.
En algunas tablas, pueden haber varias claves primarias posibles para elegir, como
el nmero de empleado, el nmero de licencia de conducir u otro nmero emitido
por el gobierno como el nmero de seguridad social. En este caso, todas las claves
primarias posibles se conocen como claves candidatas. Las claves candidatas que
no estn seleccionadas como clave primaria se conocen como claves alternativas.
Recuerde, en la fase inicial de diagramas de la base de datos, una clave principal podra
estar claramente visible, por ejemplo, podra ser un nmero de empleado o un nombre
de fabricante; sin embargo, a menudo en la mayora de los escenarios reales, no hay
un valor fcilmente reconocible de identificacin nico para cada elemento.

Comprender las claves externas


A lo largo de las lecciones de este libro, se ha hecho referencia varias veces a la terminologa
de bases de datos relacionales. Esta terminologa tambin conlleva el uso de claves de
ndice, como claves externas. Cuando dos tablas se relacionan entre s, una de ellas acta

Comprender el almacenamiento dedatos|71

como la tabla principal y la otra acta como la tabla secundaria. Con el fin de conectar las
dos tablas, la clave principal se replica de la tabla principal a la secundaria, y a partir de
ese momento todos los atributos de clave duplicados de la tabla principal se conocen como
la clave externa. Aunque en ocasiones esto se denomina una relacin primaria-secundaria,
la aplicacin del atributo de clave externa se denomina en realidad integridad referencial
(consulte el anlisis sobre integridad referencial en la leccin anterior).
Para tener una mejor idea visual de este tipo de relacin, observe la Figura 4-7, donde
se muestra la clave principal duplicada de una orden en la tabla de detalle de la orden,
lo que proporciona el vnculo entre las dos tablas.
Figura 4-7
Duplicacin de
la clave principal

Cuando se habla de claves externas y claves principales, la terminologa casi siempre


incluir la restriccin como parte de la descripcin. Como ejemplo de la funcin de la
restriccin de clave externa, consideremos una base de datos de comercio al por menor.
Cada tienda tiene una tabla con informacin acerca de esa tienda, como informacin de
los empleados, productos vendidos, inventario disponible y, ms que probable, informacin
sobre los clientes. Una manera lgica de hacer referencia a los datos de la tabla sera
la creacin de un campo con el nmero de unidad dentro de la tabla de empleados,
que despus contendra el nmero de unidad (la clave principal de la tabla Tiendas)
de la tienda del empleado, creando as un vnculo entre las dos tablas.

TOME NOTA

Cada tabla debe tener una


clave principal; sin una
clave principal, no es una
tabla vlida. Por definicin,
una clave principal debe
ser nica y debe tener
un valor que no es nulo.

Es esta una configuracin lgica o no lo es? Imagine lo que pasara si una de las tiendas
cerrara en el futuro. En esta situacin, es probable que todos los empleados asociados con
esa tienda quedaran hurfanos, ya que estaran asociados con un campo de nmero de
unidad que ya no existe. Tambin existe la posibilidad de errores humanos; por ejemplo,
alguien sin darse cuenta escribe un nmero de unidad equivocado al escribir la informacin
de un empleado en la base de datos, creando as un nmero para una tienda que no existe.
Esto podra ser un problema a la hora de cursar la nmina o realizar otras acciones de
recursos humanos.
Este tipo de problemas se conocen como problemas de integridad relacionales, como se
explic en la leccin anterior. Afortunadamente, SQL Server proporciona la restriccin
de clave externa necesaria para evitar este tipo de errores. Despus, una clave externa
crea una relacin entre dos tablas mediante la vinculacin de la clave externa de una
de las tablas a la clave primaria de la tabla a la que se hace referencia.
CREAR UNA CLAVE EXTERNA MEDIANTE SQL SERVER MANAGEMENT STUDIO
PREPRESE. Para crear una restriccin de clave externa mediante la interfaz SSMS, siga
estos pasos. Antes de empezar, asegrese de iniciar la aplicacin SQL Server Management
Studio y conectarse a la base de datos con la que desea trabajar.

1. En SSMS, abra la tabla en la que desea crear una clave externa. Haga clic con el botn
derecho del mouse en la tablas y seleccione la vista Diseo, como se muestra en la
Figura 4-8.

72|Leccin 4
Figura 4-8
Vista Diseo


Figura 4-9
Seleccin de las relaciones

2. Seleccione Relaciones del men desplegable Diseador de tablas, como se muestra en


la Figura 4-9.

Comprender el almacenamiento dedatos|73



3. Seleccione la tabla en la que desea agregar la restriccin de clave externa.


4. Haga clic en los puntos suspensivos (...) junto al cuadro de dilogo de propiedades
Especificacin de tablas y columnas, como se muestra en la Figura 4-10.

5. Seleccione la tabla a la que se refiere la clave externa en la lista desplegable


de la tabla de clave principal, como se muestra en la Figura 4-11.

6. Una vez que haya terminado de aadir la informacin de la tabla de clave externa,
haga clic en Aceptar para cerrar el cuadro de dilogo.
7. Haga clic en el botn Cerrar.
8. Guarde la restriccin recin creada seleccionando Guardar todo en el men Archivo.

Figura 4-10
Cuadro de dilogo
Especificacin de
tablas y columnas

Figura 4-11
Seleccin de la tabla a la que
se refiere la clave externa

PAUSA. Deje la interfaz de SSMS abierta para el prximo ejercicio.


Ahora que esta relacin de clave externa se ha creado entre dos tablas, SQL Server
requerir todos los valores asociados con la restriccin en la tabla de clave externa
para tener los valores correspondientes de la tabla de clave principal. Esto no requiere
que suceda lo contrario (es decir, que la clave principal tenga valores correspondientes
en la tabla de clave externa). Recuerde, varios valores de la tabla de clave externa
pueden hacer referencia al mismo registro de la tabla de clave principal.

74|Leccin 4

Comprender las claves principales compuestas


Uno de los temas ms confusos con respecto a las claves principales es la definicin de una
clave principal compuesta. Una clave principal compuesta tiene lugar cuando se definen
varias columnas como la clave principal. Aunque muchos administradores de bases de datos
no usan claves principales compuestas y no saben que existen, estas claves desempean
un papel importante en el diseo de un modelo de base de datos correcto y slido.
Como ejemplo simplificado, suponga que aprovecha las tablas de una base de datos
y las categoriza basndose en dos tipos de datos:
Tablas que definen entidades
Tablas que relacionan entidades
Las tablas que definen entidades son las tablas que definen cosas tales como clientes,
vendedores y transacciones que tienen relacin con las ventas. Puede elegir cualquier
columna de estas tablas como una clave principal, puesto que en este anlisis de claves
primarias compuestas las tablas que definen entidades no son un tema importante.
Es las tablas que relacionan entidades, la clave principal compuesta juega un importante
papel. Usando el ejemplo anterior, suponga que tiene un sistema adecuado para hacer
un seguimiento de los clientes y este sistema permite asignar varios productos a varios
clientes con el fin de indicar lo que estos pueden o no pueden solicitar. De este modo, est
buscando en una relacin varios a varios entre las tablas Customers y Products. Ya tiene
una tabla Customers y una Products y, adems, tiene una clave principal seleccionada para
la columna ProductID de la tabla Products y la columna CustomerID de la tabla Customers.
A continuacin, tendra que buscar la forma de definir la tabla CustomerProducts.
La tabla CustomerProducts relaciona los clientes con los productos, de modo que el
propsito de esta tabla es relacionar las dos entidades que ya se han definido en la base
de datos. A menudo, cuando un administrador de bases de datos disea una tabla por
primera vez, se asegura de que la integridad de los datos est por encima de las directrices
del diseo; an garantizando que se puede identificar la clave principal de la tabla, un
administrador de bases de datos se asegura de que la integridad de los datos se mantenga.
La conclusin es que, a fin de mantener la integridad de los datos, la clave principal debe
formar parte de los requisitos de diseo para cada tabla.
Muchas veces las tablas no estn diseadas para considerar la posible duplicacin
de entradas de datos y, aunque muy a menudo se piensa que la interfaz de usuario
(identificador nico) puede controlar cualquier duplicacin de datos, siempre se puede
producir una actualizacin de los datos de una tabla, por ejemplo, cuando un sistema
se actualiza y hay que quitar los datos o hay que restaurar alguna transaccin desde
una copia de seguridad. Por consiguiente, hay una necesidad de garantizar que se
mantiene la integridad de los datos.
Si considera el diseo de tablas teniendo en cuenta el conocimiento de la integridad de
datos y definiendo una clave principal de tabla, observar que el uso de una restriccin
nica asegurar que esa integridad se mantiene. Recuerde, una clave principal es un
conjunto de columnas de una tabla que identifica de forma nica cada fila de datos.

Comprender los ndices agrupados y no agrupados


CONCLUSIN

CERTIFICACIN DISPONIBLE
Cul es la diferencia
entre un ndice agrupado
y un ndice no agrupado?
4.3

En esta seccin, aprender acerca de los ndices agrupados y no agrupados, y su


propsito en una base de datos.
Como administrador de bases de datos, debera saber qu funciones realizan los dos tipos
de ndices (agrupados y no agrupados) y qu papel desempean dichos ndices dentro de
un entorno de bases de datos. Seguramente est familiarizado con los ndices de los libros
de texto, que contienen entradas para determinados temas, palabras e ideas. Para encontrar
rpidamente informacin en el libro, solo tiene que recurrir a ese ndice. La indexacin
con bases de datos, en el contexto ms amplio, es exactamente lo mismo.

Comprender el almacenamiento dedatos|75

En SQL Server, para recuperar datos de una base de datos, el servidor SQL comprueba
cada fila y busca la consulta en la que se trata de encontrar informacin. Suena esto
a una prdida de tiempo increblemente ineficaz? Si la respuesta es afirmativa, est en
lo correcto. Por tanto, lo que hace SQL Server (con la ayuda de los administradores de
bases de datos) es construir y mantener varios ndices con el fin de localizar y devolver
rpidamente los campos de uso ms frecuente.
La nica desventaja de la indexacin es el tiempo que se tarda en crear ndices y el espacio
de almacenamiento que requieren. Una decisin importante a la hora de usar ndices
es averiguar los ndices ms adecuados para la base de datos, basndose en los tipos
de consultas que se realizarn. Recuerde, SQL Server permite crear ndices en cualquier
columna individual o mltiples, pero el aumento de la velocidad real se dar en los
ndices basados en las columnas dentro del ndice.

Comprender los ndices agrupados


TOME NOTA

Solo se permite un ndice


agrupado en cada tabla.

Cuando vaya a implementar ndices, es importante que tenga en cuenta que cada tabla
puede tener un solo ndice agrupado, que define el modo en que SQL Server ordenar
los datos almacenados en la tabla. Despus de todo, puesto que los datos se pueden
ordenar de una sola forma, no se puede tener dos ndices agrupados en la misma tabla.
Tambin hay que recordar que un ndice agrupado es una construccin fsica, a diferencia
de la mayora de los ndices, que son lgicos o basados en software.
Una caracterstica importante de SQL Server es la creacin automtica de un ndice
agrupado cuando se define la clave principal de una tabla. Una clave principal le facilita,
como administrador de bases de datos, la visualizacin de la creacin de ndices no
agrupados a partir de las columnas de una tabla.
Hasta ahora hemos dado una visin simplista sobre lo que son lo ndices y por qu se
crean. A partir de este momento, es importante fijarse en los conceptos bsicos de un
ndice. Un ndice es una estructura en disco (o almacenada) asociada ntegramente a una
tabla o vista, que aumenta la velocidad de la recuperacin de datos. Para crear un ndice,
se crean una serie de claves de una o varias columnas en cada fila en una tabla o vista.
Estas claves se almacenan entonces en una estructura denominada rbol B que permite
a SQL Server encontrar las filas asociadas a esos valores definidos de forma mucho
ms rpida y eficaz. En la Figura 4-12 se muestra un ejemplo de estructura de rbol B.

Figura 4-12
Estructura de rbol B

En un ndice agrupado, los datos se clasifican y se almacenan en la tabla o en la vista que


se basa en sus respectivos valores clave. Estas columnas estn incluidas en la definicin de
ndice y, puesto que los datos en las propias filas se organizan en un solo orden, es por lo
que, como se mencion anteriormente, solo se puede tener un ndice agrupado por tabla.

76|Leccin 4

Una tabla con un ndice agrupado se considera una tabla agrupada; cuando una tabla
no tiene ningn ndice agrupado, las filas de datos se almacenan en una estructura
desordenada llamada un montn. Esto nos lleva a la definicin de un ndice no agrupado.

Comprender los ndices no agrupados


Puede crear sus propios ndices no agrupados puesto que tienen una estructura distinta de
la estructura de un ndice agrupado. Esto es as porque un ndice no agrupado contiene los
valores de clave de ndice no agrupados, y cada una de estas claves tiene un puntero a una
fila de datos que contiene el valor de la clave. Este puntero se denomina localizador de fila,
y la estructura del localizador depende de si las pginas de datos estn almacenadas en un
montn o como una tabla agrupada. Esta es una parte importante de la funcin de un ndice
no agrupado: si apunta a un montn, el localizador de fila es un puntero a la fila; pero en
una tabla agrupada, el localizador de fila es la clave de ndice agrupado.

Crear un ndice no agrupado en una tabla


Existen dos maneras de crear un ndice no agrupado en una tabla. Una usa instrucciones de
script de Transact-SQL y la otra usa la interfaz visual de SQL Server Management Studio.
Como administrador de bases de datos, debera saber cmo crear ndices de cualquiera de
las dos maneras.
CREAR UN NDICE NO AGRUPADO CON SQL SERVER MANAGEMENT STUDIO
PREPRESE. Antes de empezar, asegrese de iniciar la aplicacin SQL Server
Management Studio y conectarse a la base de datos con la que desea trabajar.
Despus, realice los siguientes pasos.

Figura 4-13
Carpeta Bases de datos

1. Haga clic en el icono de signo de suma (+) a la izquierda de la carpeta Bases de datos
para expandir la carpeta. Debera ver las instancias de muchas subcarpetas en la
carpeta principal Bases de datos, como se muestra en la Figura 4-13.

Comprender el almacenamiento dedatos|77


2. Haga clic en el icono de signo de suma (+) junto a la base de datos en la que desea crear
un ndice, como se muestra en la Figura 4-14. Debera ver muchas subcarpetas distintas.

3. Haga clic en el icono de signo de suma (+) a la izquierda de la carpeta Tablas


para expandirla, como se muestra en la Figura 4-15. Debera ver varias tablas
en la carpetaTablas.

Figura 4-14
Creacin de un ndice

Figura 4-15
Vista de la carpeta Tablas

78|Leccin 4

4. Haga clic con el botn derecho del mouse en la subcarpeta ndices y seleccione Nuevo
ndice en el men emergente que aparece, como se muestra en la Figura 4-16.

5. Aparecer un cuadro de dilogo nuevo, el cuadro de propiedades Nuevo ndice,


en el que puede escribir las entradas que desee. Aqu es donde se selecciona si el
ndice que se est creando se agrupar o no (como se muestra en la Figura 4-17).

Figura 4-16
Men Nuevo ndice

Figura 4-17
Cuadro de dilogo de
propiedades Nuevo ndice

PAUSA. Deje la interfaz de SSMS abierta para el prximo ejercicio.

Comprender el almacenamiento dedatos|79

Para tener una idea de cmo debe ser el cuadro de dilogo Propiedades de un ndice
agrupado, vea la Figura 4-18.
Figura 4-18
Cuadro de dilogo
Propiedades de un
ndice agrupado

Al observar el ejemplo de ndice agrupado, tenga en cuenta que no puede agregar otro
ndice. Como se mencion con anterioridad, aqu radica la importancia de garantizar
que se escoge la clave correcta para que acte como clave de ndice agrupado: este es su
ndice de ordenacin primario de la tabla y no puede tener dos ndices agrupados por tabla.
Sin embargo, en una tabla con un ndice no agrupado, se pueden agregar varias columnas
de tabla a la clave de ndice, como se muestra en la Figura 4-19.
Figura 4-19
Cuadro de dilogo
de propiedades de
ndice no agrupado

80|Leccin 4

RESUMEN DE CONOCIMIENTOS
En esta leccin, ha aprendido lo siguiente:
La normalizacin, en pocas palabras, es la eliminacin de datos redundantes para ahorrar
espacio.
En la primera forma normal (1FN), los datos tienen un formato de entidad, lo que bsicamente
significa que deben cumplirse las tres condiciones siguientes: la tabla no debe tener registros
duplicados, la tabla no debe contener atributos con varios valores y las entradas de la columna
o atributo deben ser del mismo tipo de datos.
La segunda forma normal (2FN) garantiza que cada atributo describe la entidad.
La tercera forma normal (3FN) comprueba las dependencias transitivas. Una dependencia
transitiva se parece a una dependencia parcial en que ambas hacen referencia a atributos que
no son totalmente dependientes de una clave principal.
La cuarta forma normal (4FN) implica que dos atributos independientes se agrupan para formar
una clave principal junto con un tercer atributo.
La quinta forma normal (5FN) proporciona el mtodo para disear relaciones complejas en las
que intervienen varias entidades (normalmente tres o ms).
Tres tipos diferentes de restricciones disponibles en SQL Server pueden ayudar a mantener la
integridad de la base de datos: claves principales, claves externas y claves compuestas (nicas).
Una clave de restriccin nica permitir aplicar la propiedad de unicidad de columnas, adems
de una clave principal de una tabla.
Quizs el concepto ms importante a la hora de disear una tabla de base de datos es la clave
principal, es decir, un atributo o conjunto de atributos que se pueden usar para identificar de
manera inequvoca cada fila.
Cada tabla debe tener una clave principal; sin una clave principal, no es una tabla vlida.
Por definicin, una clave principal debe ser nica y debe tener un valor que no es nulo.
Para conectar dos tablas, la clave principal se replica de la tabla principal a la secundaria
y todos los atributos de clave duplicados de la tabla principal reciben tambin el nombre
de clave externa.
Una clave principal compuesta tiene lugar cuando se definen varias columnas como la clave
principal.
La desventaja principal al usar ndices es el tiempo que se tarda en crearlos y el espacio de
almacenamiento que requieren.
A la hora de crear ndices, es importante recordar que cada tabla solo puede tener un ndice
agrupado, que define cmo SQL Server ordenar los datos almacenados en la tabla, ya que
los datos solo se pueden ordenar de una sola forma.
Un ndice no agrupado contiene los valores de clave de ndice no agrupado, y cada una de estas
claves tiene un puntero a una fila de datos que contiene el valor de la clave.

Evaluacin de conocimientos
Verdadero o falso
Rodee con un crculo la V si el enunciado es verdadero o la F si la afirmacin es falsa.
V F 1. Crear una clave principal satisface la primera forma normal.
V F 2. Las tablas de una base de datos deben satisfacer las cinco formas normales

para aumentar el rendimiento.


V F 3. Una clave principal puede contener valores NULL.
V F 4. Un ndice agrupado suele mejorar el rendimiento cuando se insertan datos.
V F 5. Una tabla solo puede contener un ndice agrupado.

Comprender el almacenamiento dedatos|81

Rellene los espacios en blanco


Complete las oraciones siguientes escribiendo la palabra o palabras correctas en los
espacios en blanco proporcionados.
1. La normalizacin es la eliminacin de datos redundantes para ahorrar ____________.
2. El valor de una clave principal debe ser ____________.
3. Una clave externa funciona conjuntamente con una clave principal o con restricciones
nicas para aplicar ____________ entre tablas.
4. Agregar un ndice a una o varias columnas agiliza la recuperacin de ____________.
5. Los valores de un ndice agrupado estn ____________.

Varias opciones
Rodee con un crculo la letra correspondiente a la mejor respuesta.
1. Cul de las siguientes no es una restriccin?
a. CHECK
b. DEFAULT
c. UNIQUE
d. INDEX
2. Cul de los siguientes elementos puede agilizar la recuperacin de datos? (Elija dos
respuestas)
a. Una restriccin DEFAULT
b. Una restriccin PRIMARY KEY
c. Un ndice AGRUPADO
d. Una restriccin FOREIGN KEY
3. Cules de las siguientes afirmaciones son verdaderas?
a. Un mayor nmero de pequeas tablas (con menos columnas) es una caracterstica
de una base de datos normalizada.
b. Unas cuantas tablas grandes (con ms columnas) son caractersticas de una base
de datos normalizada.
c. Los ndices permiten recuperar datos ms rpidamente.
d. El rendimiento ptimo de la base de datos se logra mediante la indexacin de cada
columna de una tabla.
4. Cul de las siguientes afirmaciones no es verdadera con respecto a las claves externas?
a. Una clave externa es una combinacin de una o ms columnas usadas para
establecer y aplicar un vnculo entre los datos de dos tablas.
b. Se puede crear una clave externa definiendo una restriccin de clave externa
cuando se crea o modifica una tabla.
c. Una clave externa aplica la integridad referencial, ya que garantiza que solo
se almacenen datos vlidos.
d. Una tabla solo puede contener una clave externa.
5. Considere el uso de un ndice agrupado cuando:
a. Las columnas contienen un gran nmero de valores distintos
b. Se tiene acceso a las columnas de manera secuencial
c. Las columnas sufren cambios frecuentes
d. Las consultas devuelven grandes conjuntos de resultados
6. Qu forma de normalizacin garantiza que cada atributo describe la entidad?
a. 1FN
b. 2FN
c. 3FN
d. 4FN

82|Leccin 4
7. Cul de los siguientes no se puede usar como una clave principal?
a. Un nmero de la seguridad social
b. Una direccin
c. Un nmero de empleado
d. El nmero de serie de un componente electrnico

8. Cuntos ndices agrupados puede tener una base de datos?


a. 1
b. 2
c. 4
d. 8
9. Cmo se denomina la situacin en la que varias columnas actan como una clave
principal?
a. Clave principal compuesta
b. Clave de escalado
c. Clave externa
d. Clave de restriccin
10. Cuando se define una clave principal, se satisfacen los criterios de:
a. 1FN
b. 2FN
c. 3FN
d. 4FN

nEvaluacin

de competencias
Escenario 4-1: Anlisis de 1FN
Su superior le entrega una unidad flash USB con la siguiente base de datos:
Model Specs
PC-1000
Dell OptiPC 200XD 2,0 Ghz 512 MB RAM, disco duro de 40 GB
PC-1250
Dell SlimPC 400LX 2,25Ghz 2 GB RAM, disco duro de 160 GB
PC-1500
Dell OptiPC 300XD 1,5Ghz 4 GB RAM, disco duro de 200 GB
Su superior desea saber si hay algn problema en la base de datos y, en caso afirmativo,
cmo resolverlo. Cmo respondera?

Escenario 4-2: Comparacin de ndices agrupados y no agrupados


Su jefe desea agilizar los procesos en el servidor de bases de datos de la compaa.
Porello, est pensando en solicitarle que cree un par de ndices. Le pide que le explique
las ventajas e inconvenientes de crear un ndice agrupado frente a un ndice no agrupado.
Cmo respondera?

nEvaluacin

de aptitudes
Escenario 4-3: Creacin de un ndice agrupado
Lo acaban de contratar como administrador de bases de datos de AdventureWorks Corporation.
Recientemente ha creado algunas bases de datos y se ha dado cuenta de que esas bases de
datos sern demasiado grandes en el futuro. Por lo tanto, necesita crear un nuevo ndice
agrupado que mejore el rendimiento general.
Usando la interfaz grfica de SSMS, qu pasos debe seguir para crear un nuevo ndice
agrupado en la columna Name de la base de datos AdventureWorks?

Comprender el almacenamiento dedatos|83

Escenario 4-4: Creacin de un ndice agrupado mediante Transact-SQL


Como administrador de bases de datos, necesita aumentar el rendimiento de la tabla
PlanetsID, por lo que decide crear un ndice agrupado. Pero en lugar de usar SSMS,
decideusar consultas para realizar esta tarea. Por consiguiente, crea una nueva base
dedatos PlanetsID mediante los siguientes comandos de SMMS:
IF EXISTS (SELECT * FROM objetos.sist
WHERE id_objeto = OBJECT_ID(N[dbo]. [PlanetsID]
AND type in (NU))
USE AdventureWorks2008
DROP TABLE [dbo].[PlanetsID]
GO
USE [AdventureWorks2008]
GO
CREATE TABLE [dbo].[PlanetsID](
[ID] [int] NOT NULL,
[Item] [int] NOT NULL,
[Value] [int] NOT NULL
) ON [PRIMARY]
GO
INSERT INTO PlanetsID VALUES (4, 23, 66)
INSERT INTO PlanetsID VALUES (1, 12, 59)
INSERT INTO PlanetsID VALUES (3, 66, 24)
SELECT * FROM PlanetsID
GO

Ahora debera ver el siguiente resultado en el panel de resultados (debajo de la ventana


del editor de consultas):
ID Item Value
4 23 66
1 12 59
3 66 24

Ahora que tiene una base de datos con datos, qu pasos seguira para crear un ndice
agrupado basado en la columna Id?

LECCIN

Administrar una
base de datos

M AT R I Z D E D O M I N I O D E O B J E T I V O S
Habilidades y Conceptos

Objetivo del Examen MTA

Nmero de Objetivo del Examen MTA

Proteger las bases de datos


Comprender los conceptos de


seguridad de bases de datos.

5.1

Realizar copia de seguridad


y restaurar bases de datos

Comprender las copias de


seguridad y restauracin
de bases de datos.

5.2

TRMINOS CLAVE
autenticacin

copia de seguridad de registros

copias de seguridad

inicio de sesin

base

permiso

copia de seguridad de datos

restaurar

seguridad de base de datos

cuenta sa

copia de seguridad diferencial

roles de servidor

copia de seguridad completa

sysadmin

usuario invitado

cuenta de usuario

copia de seguridad incremental

Una vez creada la tabla de la base de datos que contiene los datos de inventario
yventas de la segunda tienda de Washington, su superior le pide que se asegure de
que los empleados de la tienda se han conectado a la base de datos correcta de los
datos de su tienda. Adems, le solicita que trabaje en un plan para realizar copias
de seguridad y que lo ponga en prctica para obtener la informacin de cada tienda.
Siguiendo la peticin de su superior, analizaremos la implementacin de una copia
deseguridad completa y de un calendario de copia de seguridad incremental, as
como la definicin de un nuevo esquema de seguridad.
La utilidad de una base de datos depende en gran parte de la seguridad de la informacin
que contiene. Por lo tanto, como administrador de bases de datos, debe tener una idea
clara de cmo se otorgan los permisos para que los usuarios solo puedan tener acceso
a ciertas tablas o bases de datos. Adems, debe estar familiarizado con el concepto de
cmo y cundo hacer una copia de seguridad y restaurar una base de datos.
84

Administrar una base de datos|85


Proteccin

de bases de datos

CONCLUSIN

Todos los administradores de bases de datos deben comprender la necesidad de


asegurar una base de datos, qu objetos se pueden asegurar, qu objetos se deben
asegurar, as como la importancia de las cuentas y roles de usuario.
Lo habitual es desarrollar primero una base de datos y preocuparse despus por la
seguridad de esa base de datos. Aunque no tiene sentido asegurar una base de datos
durante la fase de diseo, el proyecto ser en ltima instancia beneficioso si se tiene en
cuenta un plan de seguridad lo antes posible. La seguridad, como cualquier otro aspecto
de un proyecto de base de datos, se debe disear, implementar y comprobar con atencin.
Adems, como la seguridad puede afectar a la ejecucin de algunos procedimientos,
hay que tener en cuenta cuando se est desarrollando el cdigo de un proyecto.
Un plan de seguridad simple con unos cuantos roles y todos los usuarios de TI designados
como administradores de sistemas, puede ser suficiente para una organizacin pequea, pero
en organizaciones ms grandes (como organizaciones militares, organizaciones bancarias o
corporaciones internacionales) se requiere un plan de seguridad ms complejo que se debe
disear e implementar con fuertes medidas de seguridad en vigor. Independientemente del
tamao de la organizacin, el objetivo final de la seguridad de una base de datos debera
ser garantizar que los derechos y responsabilidades de los usuarios asignados se hagan
cumplir mediante un plan de seguridad.
En una base de datos, un permiso se usa para conceder a una entidad (como un usuario)
el acceso a un objeto (como otro usuario o base de datos). El modelo de seguridad de
Microsoft SQL Server es muy complejo, por lo que la aplicacin de los roles y permisos
de usuario adecuados exige una gran reflexin. El modelo de seguridad de SQL Server se
basa en lo que se denomina elementos protegibles; en este modelo, se pueden otorgar
permisos a los diferentes objetos (definidos como bases de datos, tablas, inicios de sesin,
usuarios y roles) para que tengan acceso a diferentes elementos protegibles.
Un inicio de sesin es el proceso por el cual se controla el acceso de un usuario a un
sistema informtico mediante la identificacin de ese usuario a travs de las credenciales
que proporciona. El mtodo de inicio de sesin ms comn consiste en proporcionar un
nombre de usuario y una contrasea. Una cuenta de usuario es una representacin lgica
de una persona en un sistema electrnico.
Es importante ser consciente de los derechos y permisos asociados a cada objeto en una
base de datos, porque es posible otorgar inadvertidamente derechos administrativos a objetos
o usuarios que no los deberan tener. En SQL Server, los usuarios se asignan a roles, que
pueden a su vez otorgar permiso a objetos, como se ilustra en la Figura 5-1. Tenga en
cuenta que cada objeto tiene un dueo y que la propiedad tambin afecta a los permisos.

Figura 5-1
Planear roles y permisos

Modelo de seguridad de SQL Server


Grupos de Windows

Maestro

Usuario de Windows

Roles de servidor

IdUsuario

IdInicioSesin

Instancia de
SQL Server

Usuario de SQL Server


(Modo mixto)

Roles de base
de datos fijos

Invitado

Roles de usuario
de base de datos

Base de datos de
usuario

Funcin pblica
Permisos de objeto
(Conceder, revocar, denegar)

86|Leccin 5
CERTIFICACIN
DISPONIBLE

Qu roles se asignan
aMicrosoft SQL Server
yqu roles se asignan a
una base de datos SQL?
5.1

TOME NOTA

Los usuarios pueden


tener acceso a
SQLServer con un
dominio de inicio de
sesin de Windows,
unnombre de usuario
de inicio de sesin
ouninicio de sesin
deSQL Server.

Una descripcin general del modelo de seguridad de SQL Server muestra que los usuarios se
autentican primero al servidor, despus a las bases de datos y, por ltimo, a los objetos dentro
de las bases de datos. En el diagrama, los crculos representan cmo se identifica el usuario.

Comprender la seguridad en el nivel de servidor


En el modelo de seguridad de SQL Server, existen tres mtodos diferentes
por los que se puede identificar inicialmente a un usuario.
Los tres mtodos para identificar inicialmente a un usuario son:
Inicio de sesin de usuario de Windows
Pertenencia a un grupo de usuarios de Windows
Inicio de sesin especfico de SQL Server (si el servidor usa la seguridad de modo mixto)
Es importante recordar que en el nivel de SQL Server donde reside la base de datos, los
usuarios se reconocen por los nombres de inicio de sesin. Este puede ser un inicio de
sesin de SQL Server, un inicio de sesin de dominio de Windows o un inicio de sesin
con nombre de usuario.
Una vez que un usuario inicia sesin en el servidor y posteriormente se comprueba,
ese usuario adquiere los derechos necesarios de administracin en el nivel de servidor,
concedidos a travs de los roles de servidor fijos. (Estos conceptos se tratarn en mayor
profundidad ms adelante en esta leccin).
Recuerde, si agrega un usuario al rol sysadmin, ese usuario tendr acceso total a todas
las funciones del servidor, bases de datos y objetos de ese servidor. Con acceso completo,
el usuario puede conceder permiso a otros usuarios para todos los elementos protegibles
del servidor y puede realizar varias acciones en el nivel de sistema, como agregar su
identificador de inicio de sesin en la red para que se asigne a un determinado identificador
de usuario de la base de datos. Por tanto, el rol sysadmin es poderoso y hay que estar
seguro de que no se concede a un inicio de sesin de usuario equivocado. Los usuarios
que no tienen nivel de acceso como administrador de sistemas no pueden alterar las
configuraciones del servidor de base de datos ni conceder acceso donde no deberan ser
capaces de hacerlo. Es posible que aquellos usuarios a los que no se ha concedido acceso
directo a una base de datos, puedan tener acceso mediante la cuenta de usuario invitado
y, con esta cuenta, realizar cambios limitados en el servidor de bases de datos.

Comprender la seguridad en el nivel de base de datos


TOME NOTA

Ciertos roles fijos de


base de datos tambin
pueden afectar el
acceso a objetos,
comoel derecho a
leery escribir desde
labase de datos.
CERTIFICACIN DISPONIBLE

Cul es el permiso principal


que otorga a un usuario
permiso completo a todas
las bases de datos? Cul
es el permiso principal que
otorga a un usuario permiso
completo a una nica base
de datos?
5.1

Aunque un usuario puede pertenecer a un rol fijo de base de datos y tener


determinados permisos en el nivel administrativo, no puede tener acceso a los
datos si no se le conceden primero los permisos necesarios para los objetos de base
de datos (por ejemplo, tablas, procedimientos almacenados, vistas o funciones).
Todos los usuarios son automticamente miembros del rol pblico de base de datos,
perolos roles definidos por el usuario son roles personalizados que sirven como grupos.
Aestos roles se les puede conceder permiso a un objeto de la base de datos y los usuarios
pueden asignar usuarios a un rol definido por el usuario de la base de datos.
Cada permiso de objeto se asigna a travs de la concesin, denegacin o revocacin
depermisos de inicio de sesin de usuario:
La concesin de un permiso significa que el usuario puede tener acceso al objeto.
La denegacin de un permiso invalida la concesin de un permiso.
La revocacin de un permiso quita el permiso que se ha asignado, tanto si se trata
deun permiso denegado como si es un permiso concedido.
Un usuario puede tener mltiples vas de permiso a un objeto (por ejemplo, individualmente,
a travs de un rol de base de datos estndar, o por medio del rol pblico). Si cualquiera
de estas vas se deniega, se bloquear el acceso del usuario al objeto.

Administrar una base de datos|87

Comprender la seguridad de Windows


Dado que SQL Server es un entorno del sistema de Windows Server, una
delasprincipales preocupaciones sobre seguridad es garantizar que el propio
Windows Server sea seguro.
Debido a que con frecuencia las bases de datos de SQL Server admiten sitios web, hay que
asegurarse de que se han detallado todos los firewall y otras aplicaciones para servidores de
Internet y que se han tenido en cuenta en la elaboracin del plan de seguridad. Tambin se
debe estar familiarizado con los diferentes tipos de cuentas de servicio de SQL Server, as
como con los conceptos bsicos de la autenticacin de Windows.

COMPRENDER LAS CUENTAS DE SERVICIO DE SQL SERVER


Es importante sealar que el proceso de SQL Server en s requiere permiso para tener
acceso a los archivos y directorios, y por tanto requiere una cuenta de Windows. Hay
tres tipos de cuentas diferentes disponibles para la cuenta de servicio de SQL Server:
Cuenta de usuario local: es la opcin perfecta si el acceso a la red no es realmente
necesario, puesto que una cuenta de usuario local no se puede usar fuera del entorno
del servidor.
Cuenta del sistema local: se puede elegir esta cuenta si se usa una instalacin de un
solo servidor, puesto que SQL Server puede usar la cuenta del sistema local del sistema
operativo para obtener permisos para el equipo. El nico inconveniente del uso de esta
cuenta de inicio de sesin es que no proporciona las credenciales de seguridad de red
necesarias para bases de datos, ya que tiene privilegios dentro del sistema operativo que
lacuenta de administrador no tiene. Esto provoca una posible vulnerabilidad de seguridad.
Cuenta de usuario del dominio: esta es la cuenta de inicio de sesin recomendada debido a
que SQL Server puede usar la cuenta de Windows especficamente creada para el servidor.
A continuacin, pueden concederse derechos de administrador a la cuenta de SQL Server.

COMPRENDER LA AUTENTICACIN DE WINDOWS


La autenticacin es la accin de establecer o confirmar la identidad de un usuario o sistema.
El modo de autenticacin de Windows es superior al modo mixto porque los usuarios todava
no conocen otra contrasea y porque este modo usa el diseo de seguridad de la red.
El uso de la autenticacin de Windows indica que los usuarios deben tener una cuenta
vlida de Windows con el fin de que SQL Server los reconozca. El SID (identificador
de seguridad) de Windows se pasa a SQL Server. La autenticacin de Windows es muy
robusta puesto que autentica no solo a los usuarios de Windows, sino tambin a los
usuarios en los grupos de usuarios de Windows.
Cuando un grupo de usuarios de Windows se acepta como un inicio de sesin de
SQLServer, SQL Server puede autenticar a cualquier usuario de Windows que sea
miembro de ese grupo. El acceso, los roles y los permisos se pueden asignar al grupo
deusuarios de Windows, y se aplicarn a cualquier usuario de ese grupo.
SQL Server tambin conoce el nombre real del usuario de Windows de cada usuario,
por lo que la aplicacin puede recopilar informacin de auditora, tanto en el nivel
de usuario como en el nivel de grupo.

AGREGAR UN NUEVO INICIO DE SESIN DE WINDOWS


Los usuarios de Windows se crean y administran en varios lugares en diferentes versiones
de Windows. En Windows Vista y en versiones ms recientes, los usuarios locales pueden
administrarse seleccionando Panel de control > Herramientas administrativas > Administracin
de equipos. Los usuarios del dominio se administran mediante herramientascomo el
complemento Usuarios y equipos de Active Directory.
Cuando ya existen usuarios en la lista de usuarios de Windows o en el dominio de Windows,
SQL Server puede reconocerlos.

88|Leccin 5

AGREGAR UN NUEVO INICIO DE SESIN A SQL SERVER


PREPRESE. Para agregar un nuevo inicio de sesin a SQL Server a travs del Explorador
de objetos, siga estos pasos:

1. En SSMS, abra y haga clic con el botn derecho del mouse en la carpeta Seguridad,
seleccione Nuevo y seleccione el usuario, como se muestra en la Figura 5-2.

2. En la pgina General de Usuario de la base de datos (como se muestra en la Figura 5-3),


escriba el nombre del usuario o use el botn de bsqueda (...) para buscar el usuario
deWindows.

Figura 5-2
Agregar un nuevo usuario

Figura 5-3
Elegir un nombre de usuario

Administrar una base de datos|89


3. Puede escribir un nombre de usuario o un nombre de grupo, o usar el botn Examinar


para buscar un usuario, como se muestra en las figuras 5-4 y 5-5. Mediante la
herramienta Administracin de equipos, se administran y se asignan los usuarios
deWindows a diferentes grupos de Windows.

4. Haga clic en Aceptar para guardar y cerrar el cuadro de dilogo cuadro de dilogo
Usuario de la base de datos.

Figura 5-4
Explorar usuarios existentes

Figura 5-5
Inicio de sesin
deSQLServer

El usuario puede asignar una base de datos predeterminada y el idioma en la parte inferior
del cuadro de dilogo Propiedades de inicio de sesin de SQL Server, pero observe que la
asignacin de una base de datos predeterminada a un usuario no concede el acceso a esa
base de datos de forma automtica. El usuario debe conceder acceso a la base de datos en
la pestaa de acceso a la base de datos.
Para crear un inicio de sesin con la sintaxis de Transact-SQL para poder agregar un usuario
ogrupo de Windows, ejecute el comando CREATE LOGIN. Asegrese de usar el nombre
de Windows completo, incluido el nombre de dominio, del usuario que desea agregar,
del modo siguiente:
CREATE LOGIN XPS\Joe

90|Leccin 5
TOME NOTA

Un usuario puede
conceder acceso a bases
de datos en la pestaa
Acceso a base de datos.

Si desea crear y editar inicios de sesin de usuario en el nivel de servidor, use la pgina
General del nuevo cuadro de dilogo de inicio de sesin. El cuadro de dilogo de inicio
de sesin tambin se usa para administrar a los usuarios existentes. Para tener acceso
al cuadro de dilogo de inicio de sesin, simplemente haga doble clic en el usuario.

QUITAR UN INICIO DE SESIN DE WINDOWS


Un inicio de sesin de Windows se puede quitar de SQL Server a travs de SSMS. Para ello,
seleccione el directorio de seguridad (como lo hizo para crear un nuevo inicio de sesin
de usuario) en el Examinador de objetos y, a continuacin, use el men para encontrar
y eliminar el usuario que desee (como se muestra en la Figura 5-6). Por supuesto, as
no se elimina el usuario de Windows; solo se quita el usuario de SQL Server.

Figura 5-6
Eliminar un usuario
existente de SQL Server

Para quitar un usuario o un grupo de Windows de SQL Server, tambin puede usar el comando
DROP LOGIN, como en el siguiente ejemplo:
DROP LOGIN XPS\Joe

Despus de ejecutar este comando, el usuario o grupo de Windows seguir existiendo


en Windows, pero SQL Server ya no lo reconocer.

Comprender la autenticacin de SQL


Los servidores SQL admiten tambin el modo mixto que permite la conexin
a un servidor SQL mediante la autenticacin de Windows o la autenticacin
de SQL Server. Una cuenta de inicio de sesin de SQL Server y las contraseas
relacionadas estn definidas en la instancia de SQL Server y no estn
relacionadas con las cuentas de Active Directory o Windows.

Administrar una base de datos|91

La cuenta sa (cuenta de administrador del sistema) est asociada con la autenticacin


de SQL. La cuenta sa es la cuenta integrada del administrador de SQL asociada con la
autenticacin de SQL. Como la autenticacin de SQL es menos segura que el inicio de
sesin de Windows, se recomienda no usar el modo mixto; sin embargo, est disponible
para la compatibilidad con versiones anteriores.

Comprender los roles de servidor de bases de datos


Existen tres tipos de roles de servidor de bases de datos: roles fijos, rol pblico
y roles definidos por el usuario. Cada uno de estos roles se analiza con mayor
detalle en esta seccin.

COMPRENDER LOS ROLES DE SERVIDOR FIJOS


SQL Server incluye roles de servidor predefinidos fijos. Bsicamente, estos roles conceden
permiso para realizar determinas tareas administrativas relacionadas con el servidor. Un usuario
puede pertenecer a varios roles de servidor.
Los siguientes roles de servidor fijos son los que ms se usan a la hora de delegar
determinadas tareas administrativas de servidor:
Bulkadmin: puede realizar las operaciones de insercin masivas.
Dbcreator: puede crear, alterar, eliminar y restaurar bases de datos.
Diskadmin puede crear, alterar y eliminar archivos de disco.
Processadmin: puede cerrar un proceso SQL Server que se est ejecutando.
Securityadmin: puede administrar los inicios de sesin para el servidor.
Serveradmin: puede configurar los ajustes en el nivel de servidor, como la creacin
de bsquedas de texto completo y el apagado del servidor.
Setupadmin: puede configurar servidores vinculados, procedimientos
almacenados extendidos y el procedimiento de inicio.
Sysadmin: puede realizar cualquier actividad en la instalacin de SQL Server,
independientemente de los permisos que se hayan configurado. El rol sysadmin
invalida incluso los permisos denegados en un objeto.
El usuario que SQL Server crea automticamente durante la instalacin del software
es BUILTINS/Administrator, que incluye todos los usuarios de Windows en el grupo
de administracin de Windows y permite seleccionar los grupos o usuarios que se van
aagregar durante la configuracin. El usuario BUILTINS/Administrators se puede
eliminar o modificar, si se desea, despus de la instalacin.
Si se agrega un usuario al grupo del rol sysadmin, ese usuario debe volver a conectarse
a lainstancia de SQL Server a fin de que todas las capacidades de la funcin sysadmin
tengan efecto.
Los roles de servidor fijos se establecen en SSMS en la pgina Roles de servidor
del cuadro de dilogo Propiedades de inicio de sesin (vea la Figura 5-7).

92|Leccin 5
Figura 5-7
Cuadro de dilogo
Propiedades del rol
de la base de datos

En la sintaxis de Transact-SQL, se puede asignar un usuario a los diferentes roles de servidor


por medio de un procedimiento almacenado, de la siguiente manera:
sp_addsrvrolemember
[ @loginame = ] login,
[ @rolename = ] role

Por ejemplo, el cdigo siguiente agrega el inicio de sesin de usuario XPS\Lauren


alrol sysadmin:
EXEC sp_addsrvrolemember XPS\Lauren, sysadmin

COMPRENDER EL ROL PBLICO


El rol pblico es un rol fijo, pero puede tener permisos de objeto como un rol estndar.
Cada usuario es miembro del rol pblico de forma automtica y no puede eliminarse,
demanera que el rol pblico sirve como una lnea base o nivel de permiso mnimo.
COMPRENDER LOS ROLES DEFINIDOS POR EL USUARIO
Puesto que no se pueden modificar los permisos asignados a un rol fijo de servidor, puede que
se tengan que conceder permisos de servidor individuales a un usuario que no est definido
por un rol fijo de servidor. Estos roles definidos por el usuario se emplean normalmente para
aquellos usuarios que necesitan realizar funciones de base de datos especficas, pero a los
que no se desea conceder un rol que les permita tener ms permisos de los que necesitan.

Conceder acceso a una base de datos


Los usuarios deben poder tener acceso de forma explcita a cualquier base de datos
de usuario. Debido a que con ello se establece una relacin de varios a varios entre
los inicios de sesin y la base de datos, se puede administrar el acceso a la base de
datos por el inicio de sesin o por la base de datos.

Administrar una base de datos|93

Cuando un inicio de sesin tiene permiso de acceso a una base de datos, a ese inicio de sesin
tambin se le asigna un nombre de usuario de base de datos, que puede ser el mismo que el
nombre de inicio de sesin o puede ser algn otro nombre por el que el inicio de sesin se
conocer en la base de datos.
Para conceder el acceso a una base de datos desde el inicio de sesin mediante el Explorador
de objetos, use la pgina Asignacin de usuarios del formulario Propiedades de inicio
de sesin (que se muestra en la Figura 5-8).
Figura 5-8
Pgina Asignacin
de usuarios

Para conceder el acceso desde el punto de vista de base de datos, use el comando Nuevo
usuario del men contextual del nodo Base de datos > Seguridad > Usuarios para abrir el
formulario Base de datos del usuario - Nuevo. Escriba el inicio de sesin que va a agregar
en el campo Nombre de inicio de sesin. Para buscar un inicio de sesin, use el botn de
puntos suspensivos (...). En el campo Nombre de usuario, debe escribir el nombre con el
que se conocer el usuario en la base de datos.
Puede usar el formulario Propiedades de inicio de sesin para conceder un acceso de inicio
desesin a cualquier base de datos y asignar roles de base de datos.
Un comando Transact-SQL tambin est disponible para conceder el acceso de base de
datos a un usuario. Este comando se debe emitir desde el interior de la base de datos a la
que el usuario tendr acceso. El primer parmetro de la sintaxis del comando es el inicio
de sesin del servidor y el segundo es el nombre de usuario de base de datos opcional,
como en el ejemplo siguiente:
USE Family
CREATE USER XPS\Lauren, LRN

Ahora, Lauren aparece en la lista de usuarios de base de datos como LRN. Para quitar el
acceso a la base de datos a Lauren, el procedimiento almacenado del sistema DROP USER
requiere el nombre de usuario de base de datos, no el nombre de inicio de sesin, de la
siguiente manera:
USE Familia
DROP USER LRN

El cuadro de dilogo de inicio de sesin se puede usar para agregar un nuevo usuario
a la base de datos o para administrar un usuario actual.

94|Leccin 5

COMPRENDER LAS CUENTAS DE INICIO DE SESIN DE INVITADO


A los usuarios que desean tener acceso a una base de datos pero que no estn declarados
como usuarios en la base de datos, se les conceden automticamente privilegios de usuario
invitado, siempre y cuando se haya creado una cuenta de usuario invitado. La cuenta de
usuario invitado no se crea realmente cuando se crea una base de datos; se debe agregar
especficamente ya sea a travs de SSMS o a travs de una instruccin Transact-SQL,
como se muestra a continuacin:
EXEC sp_adduser Guest

Los usuarios invitados deben quitarse de la base de datos cuando ya no son necesarios,
puesto que son un riesgo para la seguridad.

COMPRENDER LA SEGURIDAD DE LOS OBJETOS


Si un usuario tiene acceso a una base de datos, podrn concederse permisos para
los objetos debase de datos individuales. Los permisos pueden concederse ya sea
directamente al usuario oa un rol estndar, con el usuario asignado al rol.
Los usuarios se pueden asignar a mltiples roles, por lo que pueden existir varias rutas
de seguridad de un usuario a un objeto.

Comprender los roles de base de datos fijos


SQL Server incluye algunos roles de base de datos estndar o fijos. Al igual que los roles
de servidor fijos, estos roles organizan principalmente tareas administrativas. Un usuario
puede pertenecer a varios roles de base de datos fijos.
En SQL Server, los roles de base de datos fijos son los siguientes:
db_accessadmin: autoriza al usuario para tener acceso a la base de datos, pero no
para administrar la seguridad de nivel de base de datos.
db_backupoperator: permite al usuario realizar copias de seguridad, puntos de
control y comandos DBCC, pero no permite restaurar. (Solo las funciones sysadmins
del servidor pueden realizar restauraciones).
db_datareader: autoriza al usuario para que pueda leer todos los datos de la base de
datos. Este rol es el equivalente a una concesin sobre todos los objetos y se puede
anular mediante un permiso de denegacin.
db_datawriter: permite al usuario escribir en todos los datos de la base de datos.
Este rol es el equivalente a una concesin sobre todos los objetos y se puede anular
mediante un permiso de denegacin.
db_ddladmin: autoriza al usuario para que pueda ejecutar comandos DDL
(crear, alterar, eliminar)
db_denydatareader: permite al usuario leer desde cualquier tabla de la base
de datos. Este rol invalida cualquier concesin en el nivel de objeto.
db_denydatawriter: bloquea al usuario para que no pueda modificar datos en ninguna
tabla de la base de datos. Este rol invalida cualquier concesin en el nivel de objeto.
db_owner: este es un rol especial que posee todos los permisos de la base de datos.
Este rol incluye todas las capacidades de los dems roles y es distinto del rol de
usuario dbo. No es el equivalente del rol sysadmin de servidor en el nivel de base de
datos, ya que una negacin en el nivel de objeto invalidar la pertenencia a este rol.
db_securityadmin: permite al usuario administrar la seguridad en el nivel de base
de datos, incluidos los roles y los permisos.

ASIGNAR ROLES DE BASE DE DATOS FIJOS CON SSMS


Los roles de base de datos fijos se pueden asignar a travs de SSMS mediante cualquiera
de los siguientes procedimientos:
Agregando el rol para el usuario en el formulario del usuario Propiedades del usuario
de la base de datos, ya sea mientras se crea el usuario o una vez creado el usuario.
Agregando el usuario al rol en el cuadro de dilogo Propiedades del rol de la base de datos.
Para ello, seleccione Roles en el nodo Seguridad de la base de datos, a continuacin, use
el men contextual para abrir el formulario Propiedades (vea la Figura 5-9).

Administrar una base de datos|95

ASIGNAR ROLES DE BASE DE DATOS FIJOS CON TRANSACT-SQL


En el cdigo de Transact-SQL, puede agregar un usuario a un rol de base de datos
fijo mediante el procedimiento almacenado del sistema sp_addrole. Por ejemplo, en
el siguiente ejemplo se crean los auditores (auditors) de rol de base de datos que son
propiedad del rol de base de datos db_securityadmin fijo:
USE AdventureWorks;
CREATE ROLE auditors AUTHORIZATION db_securityadmin;
GO

COMPRENDER LOS ROLES DE APLICACIN

Un rol de aplicacin es un rol de base de datos especfico diseado para permitir que una
aplicacin obtenga acceso independientemente del usuario. Por ejemplo, si un programa
especfico de Visual Basic (VB) se usa para buscar en la tabla Customer y no controla
la identificacin del usuario, ese programa de VB puede tener acceso a SQL Server
mediante un rol de aplicacin que no es modificable. Por tanto, cualquier usuario que use
la aplicacin VB obtiene acceso a la base de datos.
El cuadro de dilogo Propiedades del rol de la base de datos enumera todos los usuarios
asignados al rol actual.
OBTENER ACCESO A LOS ROLES DE BASE DE DATOS
PREPRESE. Para agregar un usuario a un rol de base de datos, realice estos pasos:


1. En SSMS, expanda la carpeta de base de datos haciendo clic en el signo ms (+)


que corresponda. Expanda la carpeta Seguridad, expanda Roles y despus expanda
la carpeta Roles de base de datos.
2. Haga doble clic en el rol adecuado para abrir el cuadro de dilogo Propiedades.
3. Para agregar o quitar usuarios del rol, use los botones Agregar y Quitar, respectivamente.

Comprender los permisos de objeto


Los permisos de objeto son los permisos que permiten a un usuario trabajar con objetos
de base de datos, como tablas, procedimientos almacenados y vistas.
Existen varios tipos de permisos de objetos:
Select: derecho a seleccionar datos. El permiso Select se puede aplicar a columnas
especficas.
Insert: derecho a insertar datos.
Update: derecho a modificar datos existentes. Los derechos Update para los que se
usa una clusula WHERE tambin requieren derechos para seleccionar. El permiso
Update se puede establecer en columnas especficas.
Delete: derecho a eliminar datos existentes.
DRI (referencias): derecho a crear claves externas mediante DRI (integridad
referencial declarativa).
Execute: derecho a ejecutar procedimientos almacenados o funciones definidas
por el usuario.
Los permisos de objeto se asignan junto con los comandos DCL de SQL GRANT, REVOKE
y DENY. Los permisos en SQL Server funcionan tal como lo hacen en el sistema operativo.
SQL Server agrega todos los permisos que un usuario determinado pueda tener, si se
asignan directamente al usuario o se asignan a travs de roles.
SQL Server proporciona el nivel mximo del permiso que se ha concedido. DENY, sin
embargo, es una excepcin a esta regla. DENY funciona como la mejor baza de las clases.
Es decir, siun comando DENY se ha emitido en cualquier lugar, a continuacin, al igual que
en Windows, elusuario se bloquea. Por ejemplo, si un usuario puede comparar SELECT con
una tabla asignada, pero un rol del que el usuario es miembro tiene un comando DENY para
SELECT, este usuario se bloquea y no puede comparar SELECT con la tabla. Si la seguridad se
administra desde SSMS odesde el cdigo, es importante comprender estos tres comandos.

96|Leccin 5

La concesin de permisos de objeto interacta con los roles de servidor y base de datos. El rol de
servidor sysadmin es el rol de mxima seguridad, que tiene acceso total a todas las bases de datos.
Si un usuario no tiene el rol de servidor sysadmin, los permisos de objeto de nivel ms alto
seran los permisos de objeto Grant y Deny. Sin embargo, el permiso Deny siempre tiene
ms prioridad que el permiso Grant.
Si el entorno no permite la seguridad de modo mixto, la forma ms fcil de comprobar la
seguridad es haciendo clic con el botn derecho del mouse en en SQL Server Management
Studio o en el Analizador de consultas y usar el comando RUN AS para que se ejecute como
un usuario distinto; no obstante, esto requiere la creacin de usuarios ficticios en el dominio
de Windows. En trminos generales, en una produccin de dominio de Windows, la mayora
de los auditores podran marcar a los usuarios ficticios como un punto de auditora. Debido a que
las estaciones de trabajo que pertenecen a los administradores de bases de datos suelen pertenecer
a los dominios de produccin, esta recomendacin no funcionar si los auditores son diligentes.
MODIFICAR PERMISOS DE UN OBJETO
PREPRESE. Para obtener acceso a un permiso de objeto, siga estos pasos para modificar
los permisos de un objeto:




1. En SSMS, abra la base de datos y abra el objeto que desea administrar. El objeto podra
ser tablas, vistas, procedimientos almacenados o funciones definidas por el usuario.
2. En el Explorador de objetos, haga clic con el botn derecho del mouse en el objeto y
seleccione Propiedades para abrir el cuadro de dilogo Propiedades para ese tipo de objeto.
3. Haga clic en la pgina Permisos para abrir el cuadro de dilogo Propiedades de objeto.
4. Para agregar un usuario, haga clic en el botn de bsqueda. Escriba el nombre del usuario
que desea agregar o haga clic en el botn Examinar para seleccionar el usuario. Haga clic
en el botn Aceptar para cerrar el cuadro de dilogo Seleccionar usuarios o roles.
5. Seleccione el permiso Grant adecuado para el permiso Deny. Vea la Figura 5-9.

Figura 5-9
Concesin de permisos
de objeto

6. Cuando haya terminado, haga clic en el botn Aceptar para cerrar el cuadro de dilogo
Propiedades.

Administrar una base de datos|97

La parte superior del formulario se usa para seleccionar un usuario o un rol, para asignar
ocomprobar permisos. El usuario debe tener acceso a la base de datos que se va a seleccionar.
Al igual que cuando se establecen los permisos de instruccin en la pestaa de propiedades
de seguridad de la base de datos, se puede seleccionar grant, con grant o deny. La lista de
objetos en la parte superior del cuadro de dilogo muestra todos los objetos de la base de
datos. Esta lista se puede usar para cambiar a otros objetos de forma rpida y sin seleccionar
una copia de seguridad del formulario en la consola ni seleccionar un objeto distinto.
Si el usuario o el rol tiene permiso para una tabla, el botn Columnas abrir el cuadro de
dilogo Permisos de columna. Seleccione el usuario y haga clic en el botn para establecer
los permisos de columnas para ese usuario. Seleccione y actualice solo los permisos que se
pueden establecer en el nivel de columna, porque insertar y eliminar afecta a filas enteras.

CONFIGURAR PERMISOS DE LA LISTA DE USUARIOS


En lugar de conceder permisos a un usuario a partir de las propiedades del objeto, tambin
puede conceder permisos a un objeto a partir de las propiedades del usuario. En la lista de
usuarios de bases de datos en SSMS, seleccione un usuario y haga doble clic, o seleccione
Propiedades del men contextual. Aparecer el cuadro de dilogo Propiedades de inicio de
sesin y se puede usar para asignar usuarios a roles (como se muestra en la Figura 5-10).
La pgina Elementos protegibles se usa para asignar o comprobar permisos de objeto.
Elcuadro de dilogo es similar a la pestaa Permisos del cuadro de dilogo Propiedades
de objeto de base de datos.
Figura 5-10
Cuadro de dilogo
Propiedades de inicio
de sesin

CONFIGURAR PERMISOS DE LA LISTA DE ROLES


La tercera forma de controlar los permisos de objeto es desde el rol de base de datos.
Para abrir el cuadro de dilogo Propiedades del rol de la base de datos, haga doble clic
en la lista de roles o seleccione Propiedades del men contextual. El cuadro de dilogo
Propiedades del rol de la base de datos se puede usar para asignar usuarios u otros roles
a un rol, as como para quitarlos de un rol.
El botn Permisos abre el cuadro de dilogo Permisos para el rol. Este formulario funciona
como otros formularios de permisos, salvo que se organiza desde la perspectiva del rol.

98|Leccin 5

CONCESIN DE PERMISOS DE OBJETO CON INSTRUCCIONES TRANSACT-SQL


Con Transact-SQL, puede conceder los permisos de objeto para una base de datos,
tabla, vista o cualquier otro objeto de base de datos. La instruccin Transact-SQL que
proporciona permiso a un objeto para un usuario especfico y su rol es la siguiente:
GRANT Permission, Permission
ON Object
TO User/role, User/role
WITH GRANT OPTION

El permiso asignado puede ser ALL, SELECT, INSERT, DELETE, REFERENCES, UPDATE o EXECUTE.
Elrol o nombre de usuario se refiere al nombre de usuario de la base de datos, cualquier
rol pblico definido por el usuario o el rol pblico. Por ejemplo, el siguiente cdigo
concede a Joe permiso para realizar selecciones en la tabla Person:
GRANT Select ON Emails TO Joe

En el siguiente ejemplo se conceden todos los permisos al rol pblico para la tabla
Marriage:
GRANT All ON Contacts TO dbcreator

Varios usuario o roles y varios permisos pueden aparecer en el comando. Por ejemplo,
elsiguiente cdigo concede los permisos para seleccionar y modificar al usuario invitado
ya LRN:
GRANT Select, Update ON Emails to Guest, LRN

La opcin WITH GRANT proporciona la capacidad para conceder permisos a un objeto. Por
ejemplo, el siguiente comando concede permisos a Joe para seleccionar de la tabla Email y
para conceder permisos a otros usuarios para que puedan realizar selecciones:
GRANT Select ON Email TO Joe WITH GRANT OPTION

Administrar roles
Los roles se pueden crear, administrar y quitar va SSMS o ejecutando instrucciones
Transact-SQL. Por supuesto, debe crear roles y asignar usuarios a esos roles solo
cuando sea necesario.

ADMINISTRAR ROLES CON INSTRUCCIONES TRANSACT-SQL


La creacin de roles estndar con cdigo implica el uso del procedimiento almacenado
del sistema sp_addrole. El nombre de un rol puede tener un mximo de 128 caracteres
yno puede incluir una barra diagonal inversa, no puede ser nulo ni ser una cadena vaca.
De forma predeterminada, los roles sern propiedad del usuario dbo. Sin embargo, puede
asignarse el rol de propietario agregando un segundo parmetro. El siguiente cdigo crea
elrol deadministrador (manager):
CREATE ROLE Manager

La contrapartida de crear un rol es quitarlo. Un rol no se debe eliminar si hay usuarios


asignados actualmente al mismo. El procedimiento almacenado del sistema sp_droprole
quitar el rol de la base de datos, como en el ejemplo siguiente:
DROP ROLE Manager

Una vez que se ha creado un rol, los usuarios se pueden asignar al rol mediante el
procedimiento almacenado del sistema sp_addrolemember. Por ejemplo, el siguiente
ejemplo de cdigo asigna Joe al rol de administrador:
EXEC sp_addrolemember Manager, Joe

Como era de esperar, el procedimiento almacenado del sistema sp_droprolemember quita


un usuario de un rol asignado. Por tanto, el cdigo siguiente libera a Joe del arduo trabajo
de administracin:
EXEC sp_dropRoleMember Manager, Joe

Administrar una base de datos|99

COMPRENDER LAS ESTRUCTURAS DEL ROL JERRQUICO


Si la estructura de seguridad es compleja, una tcnica particularmente til para conceder
permisos en la organizacin es el diseo de una estructura jerrquica de los roles de base
de datos estndar. En otras palabras, se pueden anidar roles de base de datos definidos
por el usuario. Por ejemplo:
El rol trabajador puede tener acceso limitado.
El rol gerente puede tener todos los derechos del trabajador adems de los derechos
adicionales para buscar tablas.
El rol administrador puede tener todos los derechos del gerente ms el derecho
para realizar otras tareas de administracin de bases de datos.
Para llevar a cabo este tipo de diseo, siga estos pasos:
1. Cree el rol trabajador y establezca los permisos.
2. Cree el rol gerente y establezca los permisos. Agregue el rol gerente como un usuario

al rol trabajador.

3. Cree el rol administrador. Agregue el rol administrador como un usuario del rol gerente.

La ventaja de este tipo de organizacin de seguridad es que un cambio en el nivel inferior


afecta a todos los niveles superiores. Como resultado, solo se necesita administrar una
ubicacin, en lugar de administrar docenas de ubicaciones.

Comprender las cadenas de propiedad


En las bases de datos SQL Server, los usuarios a menudo tienen acceso a los datos
a travs de uno o varios objetos. Las cadenas de propiedad se aplican a vistas,
procedimientos almacenados y funciones definidas por el usuario.
Existen muchas ocasiones en las que un objeto de base de datos tiene acceso a otro objeto
de base de datos. Por ejemplo:
Un programa puede llamar a un procedimiento almacenado que despus realiza
la seleccin de los datos de una tabla.
Un informe se puede seleccionar de una vista, que despus realiza la seleccin
de una tabla.
Un procedimiento almacenado complejo podra llamar a otros procedimientos
almacenados.
En estos casos, el usuario debe tener los permisos necesarios para ejecutar el procedimiento
almacenado o realizar la seleccin de la vista.
Ya que el usuario tambin necesita permiso para seleccionar de una de las tablas
subyacentes depende de la cadena de propiedad del objeto que el usuario llam
para las tablas subyacentes.
Si la cadena de propiedad no se interrumpe desde el procedimiento almacenado en las
tablas subyacentes, el procedimiento almacenado se podr ejecutar con el permiso de
su propietario. El usuario nicamente necesita permiso para ejecutar el procedimiento
almacenado y el procedimiento almacenado puede usar el permiso de su propietario para
tener acceso a las tablas subyacentes. Por tanto, el usuario no necesita permiso para las
tablas subyacentes.
Las cadenas de propiedad son excelentes para desarrollar fuertes medidas de seguridad
donde los usuarios ejecutan procedimientos almacenados, pero no se les concede permiso
directo a las tablas.
Si se rompe la cadena de propiedad, es decir, los propietarios de un objeto y el siguiente
objeto inferior son diferentes, SQL Server comprueba el permiso de usuario de cada objeto
al que se tiene acceso.

100|Leccin 5

Revisar un modelo de seguridad de ejemplo


Para poner algunos ejemplos de permisos mediante la base de datos OBXKites,
laTabla 5-1 muestra una lista con la configuracin de permisos de los roles de base
de datos estndar. La Tabla 5-2 muestra una lista de algunos usuarios y sus roles.
Tabla 5-1
Configuracin de permisos para OBXKites
Rol estndar
Rol jerrquico

principales Tablas
de grupo de archivos

Tablas estticas de
grupo de archivos

Otros Permisos

IT
Rol de servidor
sysadmin
Clerk Permisos de ejecucin
para varios procedimientos
almacenados de los que leen
y actualizan, necesarios para
las tablas diarias.
Admin Rol fijo de base de
datos db_owner
Customer Permisos Select

Tabla 5-2
Usuarios y sus roles
para OBXKites

Usuario

Roles Estndar de Bases de Datos

Sammy Admin
Joe Public
LRN

IT DBA

Grupo Clerk de Windows


(Betty, Tom, Martha y Mary)

Clerk

Con este modelo de seguridad, los siguientes usuarios pueden realizar las siguientes tareas:
Betty, como miembro del rol Clerk, puede ejecutar la aplicacin que ejecuta los
procedimientos almacenados para recuperar y actualizar datos. Betty tambin puede
ejecutar consultas seleccionadas como un miembro del rol Public.
LRN, como miembro de IT DBA, puede realizar cualquier tarea en la base de datos
como un miembro del rol administrador de sistemas de servidor.
Joe puede ejecutar consultas seleccionadas como miembro del rol Public.
Como miembro del rol Admin, Sammy puede ejecutar todos los procedimientos
almacenados. Tambin puede modificar manualmente cualquier tabla mediante
consultas. Por otra parte, como un miembro del rol Admin que incluye el rol
db_owner, Joe puede realizar cualquier tarea administrativa de bases de datos y
seleccionar o modificar los datos en cualquier tabla.
Solo LRN puede restaurar desde las copias de seguridad. Las copias de seguridad
se tratan en la siguiente seccin de esta leccin.

Administrar una base de datos|101


Realizar

copias de seguridad y restaurar bases de datos

CONCLUSIN

En esta seccin, examinar varios tipos de copias de seguridad (por ejemplo, completas
e incrementales), la importancia de las copias de seguridad y cmo restaurar una base
de datos.
La finalidad de una copia de seguridad de una base de datos es tener algo que restablecer
si se pierden datos durante las tareas diarias rutinarias. Por ejemplo, un usuario puede
eliminar por error una tabla, o un administrador de bases de datos puede necesitar
restaurar varias tablas de diferentes servidores para combinarlas en una sola base
de datos. La necesidad de disponer de una copia de seguridad de las bases de datos
y de un plan de restauracin es a la vez inmediata y trascendental.

Comprender los modelos de recuperacin


SQL Server ofrece varios modelos de recuperacin para cada base de datos. Los
modelos de recuperacin determinan la cantidad de datos perdidos si el servidor
tiene problemas y es necesario restaurar los datos a partir de la copia de seguridad.
SQL Server ofrece tres modelos de recuperacin. Estos son:
Recuperacin simple
Recuperacin completa
Registro masivo
La recuperacin simple requiere una menor administracin puesto que las copias
de seguridad del registro de transacciones se truncan habitualmente.
La recuperacin completa permite restaurar hasta un momento ya que los archivos de registro
registran todas las transacciones SQL y el momento en que se realizaron. Las desventajas
del modo de recuperacin completa es que los registros pueden crecer mucho. Por lo tanto,
alrealizar copias de seguridad completas, hay que reducir y truncar los registros.
El ltimo modelo que se usa es el modelo de registro masivo. Es una combinacin de los dos
modelos anteriores. Permite un buen rendimiento, adems de usar un espacio de registro
mnimo. Sin embargo, no se puede realizar una restauracin a un punto determinado.

Comprender las copias de seguridad de bases de datos


Las copias de seguridad de los datos (copia de seguridad de datos) pueden ser una
base de datos completa, parte de una base de datos o un conjunto de archivos o grupos
de archivos. En cada una, SQL Server admite copias de seguridad completas,
diferenciales e incrementales.

CERTIFICACIN DISPONIBLE

Cul es la diferencia entre


una copia de seguridad
completa y una copia de
seguridad incremental?
5.2

Al realizar copias de seguridad, se puede elegir el tipo de copia de seguridad que es mejor
para el entorno. El tipo de copia de seguridad se basa en la simplicidad, el tiempo para
realizar una copia de seguridad y tiempo para realizar una restauracin.
Copia de seguridad completa: una copia de seguridad completa contiene todos
los datos en una base de datos especfica o en conjunto de archivos o en grupos
de archivos para poder recuperar los datos.
Copia de seguridad diferencial: una copia de seguridad diferencial se base en la ltima
copia de seguridad completa de los datos. Esta copia se denomina base del diferencial
o base diferencial. Una copia de seguridad diferencial contiene nicamente los datos
que han cambiado desde la base diferencial. Por lo general, las copias de seguridad
diferenciales que se realizan inmediatamente despus de la copia de seguridad de base
son menores y ms rpidas que las de la base de una copia de seguridad completa. Por
lo tanto, mediante las copias de seguridad diferenciales se puede acelerar el proceso de

102|Leccin 5

realizar copias de seguridad frecuentes para disminuir el riesgo de prdida de


datos. Normalmente, varias copias de seguridad diferenciales sucesivas usan una
base diferencial. En lo que se refiere a la restauracin, la copia de seguridad completa
se restaura en primer lugar, seguida de la ltima copia de seguridad diferencial.
Copia de seguridad incremental: una copia de seguridad incremental se basa en la ltima
copia de seguridad de los datos. Una copia de seguridad incremental contiene nicamente
los datos que han cambiado desde la ltima copia de seguridad completa o incremental.
Las copias de seguridad incrementales son menores y ms rpidas de crear que las copias
de seguridad completas o diferenciales. En lo que se refiere a la restauracin, la copia de
seguridad completa se restaura primero, seguida de cada copia de seguridad incremental.
Con el tiempo, cuando se actualiza una base de datos, la cantidad de datos que se incluye
en copias de seguridad diferenciales aumenta. Esto hace que la copia de seguridad sea ms
lenta de crear y restaurar. Finalmente, se debe crear otra copia de seguridad completa para
proporcionar una nueva base diferencial para otra serie de copias de seguridad diferenciales.
Despus de la primera copia de seguridad de datos, bajo el modelo de recuperacin
completa o el modelo de recuperacin de registro masivo, las copias de seguridad de
registros de transacciones normales (ocopias de seguridad del registro) son obligatorias.
Cada copia de seguridad de registro abarca la parte del registro de transacciones que estaba
activa cuando se cre la copia de seguridad e incluye todos los registros que no se han
copiado en una copia de seguridad del registro anterior.
Las copias de seguridad de las bases de datos son fciles de usar y se recomiendan siempre
que el tamao de la base de datos lo permita. La Tabla 5-3 muestra los tipos de copias
de seguridad de base de datos que admite SQL Server.
Tabla 5-3
Tipos de copias de seguridad
de base de datos que admite
Microsoft SQL

Tipo de copia de seguridad

Descripcin

Copia de seguridad
de la base de datos

Copia de seguridad completa de toda la base de datos.


Las copias de seguridad de bases de datos representan
toda la base de datos en el momento en elque la copia
de seguridad finaliza.

Copia de seguridad de
base de datos diferencial

Copia de seguridad de todos los archivos de la base


de datos. Esta copia de seguridad contiene solo los datos
que se han modificado desde la ltima copia de seguridad
de base de datos de cada archivo.

COMPRENDER LAS COPIAS DE SEGURIDAD PARCIALES Y DIFERENCIALES


Las copias de seguridad parciales y diferenciales se han diseado para proporcionar
ms flexibilidad a la hora de realizar copias de seguridad de aquellas bases de datos
que contienen algunos grupos de archivos de solo lectura bajo el modelo de recuperacin
simple. Sin embargo, estas copias de seguridad son compatibles con todos los modelos de
recuperacin. La Tabla 5-4 muestra los tipos de copias de seguridad parciales que admite
SQL Server.
Tabla 5-4
Tipos de copias de seguridad
parciales que admite
Microsoft SQL

Tipo de copia de seguridad

Descripcin

Copia de seguridad parcial Copia de seguridad de los datos completos del grupo
de archivos principal, de todos los grupos de archivos de
lectura y escritura y, opcionalmente, de los archivos o
grupos de archivos de solo lectura especificados. Una copia
de seguridad parcial de una base de datos de solo lectura
contiene solamente el grupo de archivos principal.
Copia de seguridad
Copia de seguridad que contiene solo los datos que se
parcial y diferencial han modificado desde la ltima copia de seguridad parcial
del mismo grupo de archivos.

Administrar una base de datos|103

COMPRENDER LAS COPIAS DE SEGURIDAD DE ARCHIVOS


Tambin se puede hacer una copia de seguridad y restaurar los archivos de una base
de datos de forma individual. Las copias de seguridad de archivos pueden mejorar la
velocidad de recuperacin, ya que permiten restaurar solo los archivos daados sin
necesidad de restaurar el resto de la base de datos. Por ejemplo, si una base de datos
se compone de varios archivos ubicados en diferentes discos y se produce un error en
un disco, solo se tendr que restaurar el archivo del disco en el que se ha producido el
error. Sin embargo, la accin de planear y restaurar copias de seguridad de archivos puede
ser compleja; por lo tanto, las copias de seguridad de archivos se deben usar solo cuando
agregan claramente valor al plan de restauracin. La Tabla 5-5 muestra los tipos de copias
de seguridad de archivos que admite SQL Server.
Tabla 5-5
Tipos de copias de seguridad
de archivo

Tipo de copia de seguridad

Descripcin

Copia de seguridad de archivo Copia de seguridad completa de todos los datos en uno
o ms archivos o grupos de archivos.
Importante: en el modelo de recuperacin simple, las copias de
seguridad de archivos se reducen bsicamente a grupos de archivos
secundarios de solo lectura. Puede crear una copia de seguridad de
archivos de un grupo de archivos de lectura y escritura, pero antes
de poder restaurar la copia de seguridad de archivos de lectura y
escritura, debe configurar el grupo de archivos de solo lectura y
tomar una copia de seguridad diferencial de archivos de solo lectura.
Copias de seguridad
Copia de seguridad de uno o ms archivos que contienen
de archivo diferenciales las extensiones de datos que se han cambiado desde la ltima
copia de seguridad completa de cada archivo.
Nota: en el modelo de recuperacin simple, esto supone que
los datos se han cambiado a solo lectura desde la copia de
seguridad completa.

Comprender los dispositivos de copia de seguridad


Las copias de seguridad de SQL Server se crean en dispositivos de copia de seguridad,
como archivos de disco o cintas. Se pueden anexar nuevas copias de seguridad a copias
de seguridad existentes en un dispositivo, o bien sobrescribir las copias de seguridad
existentes.

PROGRAMAR COPIAS DE SEGURIDAD


La realizacin de una operacin de copia de seguridad tiene un efecto mnimo en las
transacciones que se estn ejecutando; por lo tanto, las operaciones de copia de seguridad
se pueden ejecutar durante las operaciones normales. Durante una operacin de copia de
seguridad, SQL Server copia los datos directamente de los archivos de base de datos a los
dispositivos de copia de seguridad. Los datos no varan y las transacciones que se ejecutan
durante la copia de seguridad nunca se retrasan. De esta forma, se puede realizar una copia
de seguridad de SQL Server con un efecto mnimo en las cargas de trabajo de produccin.

Comprender la restauracin de bases de datos


SQL Server admite varios escenarios de restauracin, cada uno de los cuales se
describe en la siguiente seccin.
Los escenarios de restauracin posibles en SQL Server son los siguientes:
Restauracin de la base de datos completa: restaura una base de datos completa,
comenzando con una copia de seguridad completa, a la que puede seguir la restauracin
de una copia de seguridad de base de datos diferencial (y copias de seguridad del registro).

104|Leccin 5
Restauracin de archivos: restaura un archivo o grupo de archivos en una base
de datos de grupo de archivos mltiples. Despus de una restauracin de archivos
completa, se puede restaurar una copia de seguridad diferencial de archivos.
Restauracin de pginas: restaura pginas individuales.
Restauracin por etapas: restaura una base de datos por etapas, empezando por el grupo
de archivos principal y uno o varios grupos de archivos secundarios.
Solo recuperacin: recupera los datos que ya son compatibles con la base de datos y solo
necesitan estar disponibles.
Restauracin de registros de transacciones: en el modelo de recuperacin completa o de
registro masivo, puesto que los registros registran cada transaccin, la restauracin de las
copias de seguridad del registro es necesaria para alcanzar el punto de recuperacin deseado.
Creacin de una base de datos reflejada: cuando se tiene una base de datos reflejada,
se tienen bases de datos duplicadas en varios servidores. Cuando se escribe informacin
en un servidor, sereplica automticamente al segundo servidor.
Creacin y mantenimiento de un servidor en espera: cuando se tiene un servidor
de reserva, seest usando un grupo activo/pasivo que consta de dos o ms servidores.
Cuando se produce un error en el servidor activo, el servidor pasivo se convierte en el
servidor activo, teniendo en cuenta el tiempo de inactividad mnimo.

USO DE SSMS

Para restaurar datos mediante la herramienta de interfaz grfica, siga estos pasos.

RESTAURAR DATOS
PREPRESE. Antes de empezar, asegrese de iniciar la aplicacin SQL Server
Management Studio y conectarse a la base de datos con la que desea trabajar.
Despus, realice los siguientes pasos:








1. Despus de conectarse a la instancia adecuada del motor de bases de datos


de Microsoft SQL Server, en el Explorador de objetos, haga clic en el nombre
del servidor para expandir el rbol de servidores.
2. Expanda Bases de datos. En funcin de la base de datos, seleccione una base de datos
de usuario o expanda Bases de datos del sistema y seleccione una base de datos del
sistema.
3. Haga clic con el botn derecho del mouse en la base de datos, seleccione Tareas y
haga clic en Restaurar.
4. Haga clic en Base de datos, se abrir el cuadro de dilogo Restaurar base de datos.
5. En la pgina General, el nombre de la base de datos que se va a restaurar aparecer
en el cuadro de lista A base de datos. Para crear una nueva base de datos, escriba su
nombre en el cuadro de lista.
6. En el cuadro de texto A un momento dado, conserve el valor predeterminado (lo ms
reciente posible) o seleccione una fecha y hora especficas haciendo clic en el botn
Examinar, que abre el cuadro de dilogo Restauracin a un momento dado.
7. Para especificar el origen y la ubicacin de los conjuntos de copia de seguridad
que se van a restablecer, haga clic en una de las siguientes opciones:
De base de datos: especifique un nombre de base de datos en el cuadro de lista.
De dispositivo: haga clic en el botn Examinar, que abre el cuadro de dilogo
Especificar copia de seguridad. En el cuadro de lista Medio de copia de seguridad,
seleccione uno de los tipos de dispositivos mostrados. Para seleccionar uno o varios
dispositivos en el cuadro de lista Ubicacin de copia de seguridad, haga clic en
Agregar.
Despus de agregar los dispositivos que desea en el cuadro de lista Ubicacin
de copia de seguridad, haga clic en Aceptar para volver a la pgina General.
8. En la cuadrcula Seleccionar los conjuntos de copia de seguridad que se van a
restaurar, seleccione las copias de seguridad que desea restaurar. En esta cuadrcula
se muestran las copias de seguridad disponibles para la ubicacin especificada. De
forma predeterminada, sesugiere un plan de recuperacin. Para invalidar el plan de
recuperacin sugerido, puede cambiar las opciones seleccionadas en la cuadrcula.
La seleccin de todas las copias de seguridad que dependen de una copia de
seguridad no seleccionada se anula automticamente.

Administrar una base de datos|105









CERTIFICACIN
DISPONIBLE

Comprende las copias de


seguridad y restauracin
de bases de datos?
5.2

9. Para ver o seleccionar las opciones avanzadas, haga clic en Opciones en el panel
Seleccionar una pgina.
10. En el panel Opciones de restauracin, puede elegir cualquiera de las siguientes
opciones, si es la adecuada para su situacin:
Sobrescribir las bases de datos existentes.
Conservar la configuracin de replicacin.
Preguntar antes de restaurar cada copia de seguridad.
Restringir el acceso a la base de datos restaurada.
11. Si lo desea, puede restaurar la base de datos en una nueva ubicacin especificando
un nuevo destino de restauracin para cada archivo en la cuadrcula Restaurar los
archivos de base de datos como.
12. El panel Estado de recuperacin determina el estado de la base de datos despus
de la operacin de restauracin. El comportamiento predeterminado es dejar la base
de datos lista para su uso revirtiendo las transacciones no confirmadas. Los registros de
transacciones adicionales no se pueden restaurar (RESTORE WITH RECOVERY). (Elija esta
opcin solo si va a restaurar todas las copias de seguridad necesarias en este punto).
13. Como alternativa, puede elegir cualquiera de las siguientes opciones:
Dejar la base de datos no operativa y no revertir las transacciones no confirmadas. Pueden
restaurarse registros de transacciones adicionales (RESTORE WITH NO RECOVERY).
Dejar la base de datos en modo de solo lectura. Deshace las transacciones no
confirmadas, pero guarda las acciones de deshacer en un archivo en espera para
que los efectos de recuperacin puedan revertirse (RESTORE WITH STANDBY).

USO DEL COMANDO RESTORE

El comando RESTORE de Transact-SQL permite realizar los siguientes escenarios


de restauracin:
Restaurar una base de datos completa desde una copia de seguridad completa
(restauracin completa).
Restaurar parte de una base de datos (restauracin parcial).
Restaurar archivos o grupos de archivos especficos para una base de datos
(restauracinde archivo).
Restaurar pginas especficas para una bases de datos (restauracin de pgina).
Restaurar un registro de transacciones en una base de datos (restauracin de registro
detransacciones).
Revertir una base de datos hasta el punto del momento capturado por una instantnea
de base de datos.
Por ejemplo, para restaurar la base de datos mediante el archivo especificado, debe ejecutar
el siguiente comando:
RESTORE DATABASE name_of_database FROM DISK = nombre de copia de seguridad
GO

Por ejemplo, para restaurar la base de datos AdventureWorks mediante el archivo de copia
de seguridad C:\AdventureWorks.BAK, debe ejecutar el siguiente comando:
RESTORE DATABASE AdventureWorks FROM DISK = C:\AventureWorks.BAK
GO

Para obtener ms informacin sobre cmo usar el comando RESTORE, consulte la siguiente
pgina web:
http://msdn.microsoft.com/es-es/library/ms186858.aspx

106|Leccin 5

RESUMEN DE CONOCIMIENTOS
En esta leccin, ha aprendido lo siguiente:
El objetivo final de la seguridad de una base de datos es garantizar que los derechos
yresponsabilidades otorgados a los usuarios se cumplan.
Un permiso se usa para conceder a una entidad (como un usuario) acceso a un objeto
(como otro usuario o base de datos).
Un inicio de sesin es el proceso por el cual se controla el acceso de una persona a un
sistema informtico mediante la identificacin de ese usuario a travs de las credenciales
proporcionadas por el usuario. El mtodo de inicio de sesin ms comn consiste en
proporcionar un nombre de usuario y una contrasea.
Una cuenta de usuario es una representacin lgica de una persona en un sistema
electrnico.
Aunque un usuario puede pertenecer a un rol fijo de la base de datos y tener
determinados permisos de nivel administrativo, no puede tener acceso a los datos si
primero no se le conceden permisos al propio objeto de base de datos (por ejemplo,
tablas, procedimientos almacenados, vistas o funciones).
Cada permiso de objeto se asigna mediante la concesin, revocacin o denegacin
de permisos de inicio de sesin de usuario.
La autenticacin es la accin de establecer o confirmar la identidad de un usuario o sistema.
El modo de autenticacin de Windows es superior al modo mixto porque los usuarios no
necesitan aprenderse otra contrasea y porque usa el diseo de seguridad de la red.
La cuenta sa es la cuenta integrada del administrador de SQL asociada con la autenticacin
deSQL.
SQL Server incluye roles de servidor predefinidos fijos. Bsicamente, estos roles conceden
permiso para realizar determinas tareas administrativas relacionadas con el servidor.
El rol sysadmin puede realizar cualquier actividad en la instalacin de SQL Server,
independientemente de los permisos que se hayan configurado. El rol sysadmin invalida
incluso los permisos denegados en un objeto.
El rol pblico es un rol fijo, pero puede tener permisos de objeto como un rol estndar.
Cada usuario es miembro del rol pblico de forma automtica y no puede eliminarse,
demanera que el rol pblico sirve como una lnea base o nivel de permiso mnimo.
Los usuarios deben poder tener acceso de forma explcita a cualquier base de datos
de usuario.
db_owner es un rol especial que tiene todos los permisos de la base de datos.
Un rol de aplicacin es un rol de base de datos especfico diseado para permitir que una
aplicacin obtenga acceso independientemente del usuario.
La finalidad de una copia de seguridad de una base de datos es tener algo que restablecer
si se pierden datos durante las tareas diarias rutinarias.
Una copia de seguridad completa contiene todos los datos en una base de datos especfica
o en un conjunto de archivos o en grupos de archivos para poder recuperar esos datos.
La copia de seguridad diferencial solo hace copias de seguridad de los datos desde
la ltima copia de seguridad completa.
La copia de seguridad incremental solo hace copias de seguridad de los datos desde
la ltima copia de seguridad completa o incremental.
Al restaurar a partir de una copia de seguridad diferencial, primero se debe restaurar la
copia de seguridad completa anterior y despus restaurar la ltima copia de seguridad
diferencial.
Al restaurar a partir de una copia de seguridad incremental primero se debe restaurar
la copia de seguridad completa anterior y despus restaurar cada copia de seguridad
incremental desde la copia de seguridad completa en orden.

Administrar una base de datos|107


Evaluacin

de conocimientos
Verdadero o falso
Rodee con un crculo la V si el enunciado es verdadero o la F si la afirmacin es falsa.
V F 1. Un usuario debe tener permisos para obtener acceso a los archivos que
componen una base de datos para poder usar la base de datos.
V F 2. La instruccin CREATE LOGIN se usa para permitir que una cuenta de Windows
tenga acceso a SQL-Server.
V F 3. Cualquier permiso DENY siempre invalida un permiso concedido.
V F 4. La instruccin CREATE ROLE se usa para crear nuevos roles en una base de datos.
V F 5. Varias copias de seguridad diferenciales deben restaurarse en el mismo orden
en que se crearon inicialmente.

Rellene los espacios en blanco


Complete las oraciones siguientes escribiendo la palabra o palabras correctas en los
espacios en blanco proporcionados.
1. SQL Server usa la __________ de Windows para comprobar si un usuario es vlido
antes de permitir el acceso.
2. Una copia de seguridad diferencial contiene nicamente los datos que __________
desde la base diferencial.
3. Todos los usuarios son automticamente miembros del rol de base de datos __________.
4. El comando __________ se usa para permitir que los usuarios tengan acceso
a objetos de la base de datos.
5. El comando __________ se usa para recuperar datos eliminados por error
por un usuario.

Varias opciones
Rodee con un crculo la letra correspondiente a la mejor respuesta.
1. Cul de los siguientes no es un comando de Transact-SQL para administrar
permisos?
a. GRANT
b. REVOKE
c. PERMIT
d. DENY
2. Cul de los siguientes no es un nivel de seguridad admitido en SQL Server?
a. Servidor
b. Base de datos
c. Tabla
d. Tarea
3. Cul de los siguientes no es un permiso de base de datos que se pueda aplicar
a objetos?
a. DROP
b. SELECT
c. INSERT
d. UPDATE
4. Cul de los siguientes son escenarios de restauracin de bases de datos admitidos?
a. Restaurar toda una base de datos desde una copia de seguridad completa.
b. Restaurar toda una base de datos desde una serie de copias de seguridad parciales.
c. Restaurar parte de una base de datos con copias de seguridad parciales.
d. Restaurar archivos especficos usados por la base de datos.

108|Leccin 5
5. Cul de los siguientes no es un tipo de copia de seguridad admitido en SQL Server?
a. Completa
b. Diferencial
c. De archivos
d. De dispositivos

6. Cul es la cuenta de SQL integrada que se usa en modo mixto con pleno acceso
a SQL Server?
a. fulladmin
b. sa
c. admin
d. administrator
7. Acaba de contratar a un nuevo administrador de base de datos y quiere darle acceso
completo a SQL Server. Qu rol debe asignar?
a. diskadmin
b. securityAdmin
c. sysadmin
d. db_owner
8. Qu rol le da acceso completo a una base de datos individual?
a. db_owner
b. db_accessadmin
c. db_securityadmin
d. db_ddladmin
9. El mejor mtodo de recuperacin de datos es:
a. hacer una copia de seguridad
b. usar RAID
c. usar UPS
d. usar NIC redundantes
10. Qu modo permite inicios de sesin con la cuenta de Windows y SQL?
a. cualquiera
b. completo
c. compartido
d. mixto

Evaluacin de competencias
Escenario 5-1: Anlisis de la seguridad de SQL Server
Su jefe realiz un curso de SQL en la universidad hace unos aos. Le pregunta si puede
iniciar sesin en SQL Server con la cuenta sa para poder examinar las bases de
datos y ejecutar algunas consultas. Usted le responde que, por desgracia, la cuenta sa
no est disponible en el servidor. Su superior quiere saber por qu y qu puede usar
para tener acceso a las bases de datos. Qu debe decirle?

Escenario 5-2: Uso de copias de seguridad completas e incrementales


Tiene seis bases de datos grandes, cada una de al menos 2 GB. Necesita asegurarse
de que realiza copias de seguridad de las bases de datos a diario por si se produjera un
contratiempo y hubiera que restaurarlas a partir de las copias de seguridad. Puesto que
la copia de seguridad de cada base de datos tarda unas dos horas en completarse y solo
cuenta con un plazo de tiempo de seis horas al da para realizar las copias de seguridad,
qu copia de seguridad recomendara como solucin?

Administrar una base de datos|109

Evaluacin de aptitudes
Escenario 5-3: Copia de seguridad de una base de datos
Debido a que va a realizar tareas de mantenimiento en las bases de datos y servidores de
bases de datos, decide realizar una copia de seguridad. Usando SQL Server Management
Studio, qu pasos debe realizar para hacer una copia de seguridad completa de la base
de datos AdventureWorks y guardarla en el disco duro?

Escenario 5-4: Restauracin de una copia de seguridad


(restauracin completa)
Al realizar tareas de mantenimiento en las base de datos, descubre que una de las tablas
est daada. Afortunadamente, hizo una copia de seguridad de esa base de datos. Mediante
SSMS, qu pasos debe seguir para restaurar la base de datos de la que hizo una copia
de seguridad en el ltimo ejercicio?

Apndice A

Conceptos fundamentales de
bases de datos: Examen 98-364
Objetivo del examen

Nmero del objetivo del examen

Nmero de leccin

Comprender los conceptos bsicos de bases


de datos
Comprender cmo se almacenan datos en tablas.

1.1

Comprender los conceptos de bases de datos


relacionales.

1.2 1

Comprender el lenguaje de manipulacin


de datos (DML).

1.3

Comprender el lenguaje de definicin


de datos (DDL).

1.4

Elegir tipos de datos.

2.1

Comprender las tablas y cmo crearlas.

2.2

Crear vistas.

2.3

Crear procedimientos almacenados y funciones.

2.4

Seleccionar datos.

3.1

Insertar datos.

3.2

Actualizar datos.

3.3

Eliminar datos.

3.4

Comprender la normalizacin.

4.1

Comprender las claves principales, externas


y compuestas.

4.2

Comprender los ndices.

4.3

Comprender los conceptos de seguridad


de bases de datos.

5.1

Comprender las copias de seguridad


y restauracin de bases de datos.

5.2

Crear objetos de base de datos

Manipular datos

Comprender el almacenamiento de datos

Administrar una base de datos

110

ndice
A

Acceder a roles de base de datos fijos, 95


Agregar inicio de sesin
de Windows, 8790
quitar, 90
ALTER, 13, 14-15
AND, 46
Archivos de datos primarios, 2
Archivos de datos secundarios, 2
asignar, mediante SSMS, 94
asignar, mediante Transact-SQL, 95
autenticacin de seguridad de Windows, 87
cuentas del servicio de SQL Server, 87
inicio de sesin, agregar, 8790
inicio de sesin, quitar, 90
autenticacin de SQL, 9091
Autenticacin
SQL, 90-91
Windows, 87
Autocombinacin, 9, 5051
Autoreferencia, 9

Base (base diferencial), 101


Base de datos (bd)
acceso, conceder, 92-94
caractersticas de, 5
copias de seguridad, 101-103
crear, mediante SSMS, 11
cuentas de inicio de sesin
de invitado, 94
definicin de, 2
eliminar, mediante SSMS, 12
frente a hojas de clculo, 5-6
jerrquica, 3-4
plana, 3
proteger, 85-100
relacional, 4-5, 7-9
restauraciones, 103-105
seguridad de nivel, 87
seguridad de objetos, 94
tablas, comparadas con hojas
de clculo, 6
valores calculados, 6
Base de datos jerrquica, 34
Base de datos plana, 3
BEGIN TRAN, 56
BETWEEN, 46-47
bigint (tipo de datos), 22, 24
bit (tipo de datos), 22, 24

Bloqueos, 66
Booleano (tipo de datos), 22
BUILTINS/Administrator, 91
Bulkadmin, 91

Cadenas binarias, 23
Cadenas de caracteres, 23, 28-29
Cadenas de propiedad, 99
camelCase, 29
Cast (funcin), 27
char (tipo de datos), 23, 28
Clave principal compuesta, 74
Claves externas de integridad
referencial, 71
usar, 56
Claves externas
crear, mediante SSMS, 7173
definicin de, 7071
integridad referencial, 71
Claves principales
definicin de, 70
frente a restriccin nica, 67
integridad de datos, 74
segunda forma normal (2FN), 63
tercera forma normal (3FN), 64, 65
Combinacin cruzada, 48
Combinacin externa, 48, 50
COMMIT, 56
Conceptos de bases de datos
relacionales, 7-9
definicin de, 4-5
elementos del lenguaje, 7-9
restricciones, 8-9
Consultas. Vase tambin
AND Transact-SQL, 46
<columnas>, 53
<valores>, 53
BETWEEN, 46-47
como modificacin de datos, 43
condiciones, combinar, 45-46
definicin de, 2
EXCEPT, 48
INSERT, 12, 53-54
insertar datos, 51-54
INTERSECT, 48
JOIN, 48-51
NOT, 47
seleccionar datos, 44-51
SELECT, 44-45
SELECT... FROM, 45

UNION, 47
UPDATE, 54-55
WHERE, 45
Conversiones implcitas, 2627
Convert (funcin), 27
Copia de seguridad completa, 101
Copia de seguridad de archivo, 103
Copia de seguridad de registro
de transacciones, 102
archivos, 2
restaurar, 104
Copia de seguridad de registros, 102
Copia de seguridad diferencial, 101-102
Copia de seguridad incremental, 102
Copia de seguridad parcial, 102
Copias de seguridad
archivo, 103
completa, 101
definicin de, 101
diferencial, 101-102
incremental, 102
parcial, 102
programar, 103
propsito de, 101
registro de transacciones, 102
tipos, 101-102
Crear restriccin nica, 6770
definicin de, 8, 67
frente a clave principal, 67
CREATE, 13, 14
Cuarta forma normal (4FN), 66
Cuenta de usuario del dominio, 87
Cuenta de usuario local, 87
Cuenta del sistema local, 87
cuenta SA, 91

Date (tipo de datos), 23, 25-26


Date and time (tipo de datos), 25-26
Datetime (tipo de datos), 21-22, 23, 25-26
Datetime offset, 23, 26
Datos redundantes, 62
Dbcreator, 91
Decimal (tipo de datos), 22, 24
DELETE
consultas de datos, 55-56
instruccin DDL, 13, 15-16
instruccin DML, 12
permisos de objetos, 95
DENY, 95

111

112 | ndice
Dependencia parcial, 64
Dependencia transitiva, 64
Diskadmin, 91
Dispositivos de copia de seguridad, 103
DRI (referencias), 95
DROP TABLE, 55
DROP, 13, 15

Estructura de rbol B, 75
EXCEPT, 48
EXECUTE, 95

Float (tipo de datos), 22, 25


Forma, 62

GRANT, 95

Hojas de clculo
frente a bases de datos, 56
valores calculados, 6
Hojas de clculo, frente a tablas de base
de datos, 6

ndice agrupado, 75-76


ndice no agrupado
crear, mediante SSMS, 7679
definicin de, 76
ndices
agrupado, 7576
Combinacin interna, 48, 49
definicin de, 2
desventajas de, 75
estructura de rbol B, 75
no agrupado, 76
no agrupado, crear, 7679
Iniciar sesin, 85
INSERT
consultas de datos, 5354
entero (tipo de datos), 22
instruccin DML, 12
int (tipo de datos), 22, 24
mediante Transact-SQL, 53
permiso de objeto, 95
Intercalacin, 24
INTERSECT, 48
inyeccin de SQL, 38

JOIN (clusula), 4851

Lenguaje de definicin de datos (DDL)


ALTER, 13, 14-15
CREATE, 13, 14
definicin de, 13
DELETE, 13, 15-16
DROP, 13, 15
instrucciones, 13-16
tablas del sistema, 16
TRUNCATE, 13, 15-16
usar, 13-16
USE, 13, 14
Lenguaje de manipulacin de datos (DML)
definiciones, 12
instrucciones, 12
listado de, 94

MERGE, 12
Modelos de recuperacin, 101
money (tipo de datos), 21, 22, 24, 25

nchar (tipo de datos), 23, 28


Normalizacin
cuarta forma normal (4NF), 62, 66
definicin de, 62
formas, 62
objetivo de, 62
primera forma normal (1NF), 6263
quinta forma normal (5NF), 62, 66
segunda forma normal (2NF), 62,
6364
tercera forma normal (3NF), 62, 6466
ventajas de, 66
NOT, 47
Numrico (tipo de datos), 2223, 24
Numrico, aproximado, 2529
Numrico, exacto, 2425
nvarchar (tipo de datos), 23, 28

PascalCase, 29
Permisos de objetos
conceder, mediante Transact-SQL, 98
configurar desde la lista de roles, 97
configurar desde la lista de usuarios, 97
definicin de, 95
modificar, 9697
tipos, 95
Permisos
conceder, 86
definicin de, 85
denegar, 86
objetos, 9598

revocar, 86
usuario, para objetos de base
de datos, 86
Primera forma normal (1NF), 6263
Processadmin, 91

Quinta forma normal (5FN), 66

Recuperacin completa, 101


Recuperacin de registro masivo, 101
Recuperacin simple, 101
Restauraciones
archivo, 104
base de datos reflejada, crear, 104
completo, 103
definicin de, 101
mediante SSMS, 104-105
mediante Transact-SQL, 105
pgina, 104
por etapas, 104
registro de transacciones, 104
servidor en espera, crear y mantener, 104
solo recuperacin, 104
RESTORE, 105
Restriccin de clave externa, 89, 71
Restriccin de clave principal, 8
restriccin de comprobacin, 8
restriccin Default, 8
restriccin Not Null, 8
Restricciones, 8-9
REVOKE, 95
Rol pblico, 92
roles de aplicacin, 95
Roles de servidor de bases de datos
acceder, 95
definido por el usuario, 92
fijo, 91, 94-95
pblico, 92
Roles de servidor, 9192
Roles
administrar con Transact-SQL, 98
aplicacin, 95
base de datos fija, 94-95
definido por el usuario, 92
estructuras, jerrquicas, 99
pblico, 92
servidor de bases de datos, 91-92
servidor fijo, 91-92
ROLLBACK, 56

Seguridad de nivel de servidor, 86


Seguridad de segunda forma normal
autenticacin de SQL, 9091

ndice | 113
cadenas de propiedad, 99
cuenta de usuario, 85
iniciar sesin, 85
inicio de sesin de Windows, quitar, 90
inicio de sesin en SQL Server,
agregar, 8890
instruccin de consulta, 4445
Instruccin DML, 12
integridad referencial, 56
modelo, 100
nivel de base de datos, 86
nivel de servidor, 86
objetivos de, 85
objeto, 94
permiso de objeto, 95
permisos de objetos, 9598
permisos, 85
roles de base de datos fijos, 9495
roles de servidor, 9192
roles, administrar, 9899
Securityadmin, 91
SELECT
Windows, 87-90
SELECT... FROM, 45
Serveradmin, 91
Setupadmin, 91
Sistema de administracin de bases
de datos (DBMS), 2
smalldatetime (tipo de datos), 23, 26
SQL Server
Analizador de consultas, 1011
bases de datos, crear, 11
bases de datos, eliminar, 12
clave externa, crear, 7173
crear procedimientos
almacenados, 3538
crear, mediante SSMS, 3637
crear, mediante Transact-SQL, 36
cuentas de servicio, 87
datos, insertar, 5253
definicin de, 36 Sysadmin, 86, 91
definicin de, 9
Explorador de objetos, 9
ndice, no agrupado, crear, 7679
inicios de sesin, agregar, 8889
inicios de sesin, agregar,
mediante SSMS, 8889
inicios de sesin, agregar, mediante
Transact-SQL, 8990
interfaz, cargar, 11
procedimientos almacenados,
crear, 3637
restaurar, 104105

restricciones de SQL Server


Management Studio (SSMS),
nicas, crear, 6770
roles de base de datos fijos, asignar, 94
SQLCMD, 11
tablas, actualizar, 55
tablas, crear, 2932
Transact-SQL, 11
usar, 912
vistas, crear, 3435
XQuery, 10

Tablas
borrar, 56
crear, mediante SSMS, 2932
crear, mediante Transact-SQL, 32
definicin de, 3, 29
frente a hojas de clculo, 6
propsito de, 29
sistema, 16
truncar, 56
Tipo de datos de tercera forma
normal, 23, 26
Tipo de datos integrado, 21-24
Tipos de datos
bigint, 22, 24
bit, 22, 24
booleano, 22
cadenas binarias, 23
cadenas de caracteres, 23, 28-29
cast (funcin), 27
char, 23, 28
conversiones implcitas, 26-27
convert (funcin), 27
datetime, 21-22, 23, 25-26
datetimeoffset, 23, 26
decimal, 22, 24
definicin de, 21
definicin, 20-29
entero, 22
escala, 24
especificador max, 28
fecha y hora, 25-26
fecha, 23, 25-26
flotante, 22, 25
hora, 23, 26
int, 22, 24
integrado, 21-24
intercalacin, 24
money (numrico), 21, 22, 24, 25
nchar, 23, 28
numrico, 22-23, 24
numrico, aproximado, 25-29

numrico, exacto, 24-25


nvarchar, 23, 28
operaciones matemticas, 24
precedencia, 24
precisin, 24
real, 25
smalldatetime, 23, 26
varchar, 22, 23, 28
Transacciones, 56
Transact-SQL
acceso a base de datos, conceder, 93
agregar inicios de sesin, 8990
datos, insertar, 5354
definicin de, 11
procedimientos almacenados, crear, 36
restaurar, 105
roles de base de datos fijos, asignar, 95
roles de servidor, asignar, 92
tablas, crear, 32
vistas, crear, 35
TRUNCATE TABLE, 55, 56
TRUNCATE, 13, 1516

UNION, 47
UPDATE
consultas de datos, 5455
Cuenta de usuario, 85
instruccin DML, 12
permiso de objeto, 95
Rol definido por el usuario, 92
USE, 13, 14
Usuario invitado, 94
Usuarios
identificacin de, mtodos, 86
rol sysadmin, agregado a, 86

Valor calculado, 6
varchar (tipo de datos), 22, 23, 28
Vistas
crear, 3335
crear, mediante SSMS, 3435
crear, mediante Transact-SQL, 35
definicin de, 33
propsito de, 33
seguridad, 33

WHERE, 45

XQuery, 10

Notas

Notas

Notas

Notas

Notas

Notas

Notas

Notas

Notas

Notas

Notas

You might also like