Sei sulla pagina 1di 160

Conceptos

fundamentales de
bases de datos

Of cial Academic Course


Microsoft® Official Academic Course

Conceptos fundamentales
de bases de datos,
examen 98-364
Créditos
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 PRODUCCIÓN Amy Weintraub
DIRECTOR CREATIVO Harry Nolan
DISEÑO DE PORTADA Jim O’Shea
TECNOLOGÍA Y MEDIOS Tom Kulesa/Wendy Ashenberg
Foto de portada: Créditos: fotografía 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 publicación puede ser reproducida, almacenada en sistemas de recuperación o transmitida en
cualquier forma o por cualquier medio, ya sea electrónico, mecánico, fotocopia, grabación, escaneo o de otro modo,
excepto según lo permitido bajo las Secciones 107 o 108 de la ley de Propiedad Intelectual de Estados Unidos de
1976, sin la autorización previa por escrito de la editorial, o la autorización a través 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 deberán 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 países. Otros nombres de productos y compañías mencionados aquí pueden ser marcas
comerciales de sus respectivos propietarios.
Los ejemplos de compañías, organizaciones, productos, nombres de dominio, direcciones de correo electrónico,
logotipos, personas, lugares y acontecimientos mencionados son ficticios. No se pretende ni se debe inferir de ningún
modo relación con ninguna empresa, organización, producto, nombre de dominio, dirección de correo electrónico,
logotipo, persona, lugar o acontecimientos reales.
El libro expresa puntos de vista y opiniones del autor. La información contenida en este libro se proporciona sin
ninguna garantía expresa, implícita ni estatuaria. Ni los autores, John Wiley & Sons, Inc., Microsoft Corporation, ni
sus revendedores o distribuidores serán responsables de cualquier daño 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 comprensión durante más de 200
años, 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
y donde vivimos y trabajamos. En 2008, pusimos en marcha una iniciativa de ciudadanía empresarial, Corporate Citizenship,
un esfuerzo global para abordar los retos ambientales, sociales, económicos 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 adquisición, la conducta ética de nuestro negocio y entre nuestros proveedores y la comunidad, así como el apoyo
solidario. Para obtener más información, visite nuestro sitio web: www.wiley.com/go/citizenship.
ISBN 978-0-470-88916-9
Impreso en los Estados Unidos de América

10 9 8 7 6 5 4 3 2 1

www.wiley.com/college/microsoft
o llame al número de teléfono 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 TÉRMINOS 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 según los siguientes términos 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 términos 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 título del eBook de MOAC aplicable necesarias
para los instructores que imparten la clase correspondiente a dicho título y para los estudiantes
que asisten a la misma.
3. Solo puede distribuir los títulos del eBook de MOAC a los instructores que imparten una de las
clases correspondientes a dicho título y a los estudiantes que asisten a la misma, a través de:
o correo electrónico;
o un dispositivo USB seguro conectado directamente a los dispositivos personales
de los estudiantes;
o un sitio web protegido con contraseña al que solo tengan acceso los instructores
y estudiantes.
4. Solo puede distribuir el Contenido para el Instructor a los instructores, con fines de preparación
y enseñanza de una de las clases correspondientes al título 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 título del eBook de MOAC mientras dure la clase en la que la
persona está participando, es decir, mientras se enseñe el título del eBook de MOAC
o por un periodo de ciento ochenta (180) días, lo que sea mayor. Después de esto, se
deben eliminar de forma segura todas las copias del título del eBook de MOAC que la
persona posea o que estén bajo su control.
o El uso que se haga de los títulos del eBook de MOAC también cumplirá con todos los
términos, condiciones o licencias adicionales que se apliquen, que acompañen o que
se incluyan en el eBook de MOAC.

www.wiley.com/college/microsoft
o llame al número de teléfono 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 enseñar la sesión
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 enseña el título del eBook de MOAC relacionado o por un periodo de ciento
ochenta (180) días, lo que sea mayor. Después de esto, se deben eliminar de forma
segura todas las copias del título del Contenido para el Instructor que el instructor posea
o que estén bajo su control.
o El uso que se haga del Contenido para el Instructor también cumplirá con todos los
términos, condiciones o licencias adicionales aplicables, que acompañen 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 enseña 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á
ni distribuirá el eBook de MOAC, ni total ni parcialmente.
5. El uso que haga de los títulos del eBook de MOAC también cumplirá con todos los términos,
condiciones o licencias adicionales que se apliquen, que acompañen o que se incluyan en el
título del eBook de MOAC.
c. Salvo según se autorice expresamente en la sección b anterior, no puede cargar, copiar, modificar,
transmitir, hacer trabajos derivados, reenviar ni distribuir ningún eBook de MOAC ni Contenido para el
Instructor, ni total ni parcialmente, creado mediante descompilación, así como tampoco el código fuente
de ningún eBook de MOAC o Contenido para el Instructor. No puede imprimir copias de ningún eBook
de MOAC ni Contenido para el Instructor completo; sin embargo, puede imprimir páginas individuales o
secciones de los capítulos del eBook de MOAC específicamente 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 retribución
monetaria por medio de la venta, reventa, préstamo, transmisión, contratación o cualquier otra forma
de explotación 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á término a su licencia
automáticamente. Dicha terminación será adicional y sustituirá cualquier recurso de equidad, civil
o de otro tipo disponibles para Wiley.
d. Solo podrá utilizar el título del eBook de MOAC y el Contenido para el Instructor mientras dure la clase en
la que se enseñe el título del eBook de MOAC específico o por un periodo de ciento ochenta (180) días, lo
que sea mayor. Después de esto, deberá eliminar de forma segura todas las copias del título del eBook de
MOAC y del Contenido para el instructor que posea o estén bajo su control.
e. LOS EBOOKS DE MOAC Y EL CONTENIDO PARA EL INSTRUCTOR SE LICENCIAN “TAL CUAL” Y “SEGÚN
DISPONIBILIDAD”, SIN GARANTÍAS DE NINGÚN TIPO.
f. Usted reconoce que todos los derechos (incluyendo, sin limitación, la propiedad intelectual, las patentes
y los secretos empresariales) en los eBook de MOAC y el Contenido para el Instructor son propiedad única
y exclusiva de Wiley y sus licenciantes. La aceptación 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 reproducción o la distribución no autorizados. Además, acepta no traducir, descompilar,
desensamblar ni realizar ingeniería 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.

www.wiley.com/college/microsoft
iv | o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá)
Prólogo del editor

La visión 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 tecnología de Microsoft de forma eficaz en todos los aspectos de sus vidas personales
y profesionales. Para que los educadores y alumnos aprovechen al máximo las herramientas
de software de Microsoft y sean más productivos, se requiere una enseñanza de calidad. Por
tanto, nuestra misión es hacer que nuestros programas de enseñanza sean compañeros docentes
de confianza de por vida.
Para lograr esta misión, Wiley y Microsoft se han asociado y han desarrollado programas
educativos de la más alta calidad dirigidos a trabajadores de la información, profesionales de
TI y desarrolladores. Los materiales creados por esta asociación 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
información e instrucción sobre los productos de Microsoft de la más alta calidad. Los libros
de texto de Microsoft Official Academic Course son, de alguna manera, más “oficiales”:
constituyen el material didáctico oficial para los miembros de Microsoft IT Academy.
La serie de cursos Microsoft Official Academic Course se centra en el desarrollo laboral. Estos
programas están dirigidos a aquellos alumnos que buscan ingresar al mercado laboral, cambiar
de trabajo o embarcarse en nuevas carreras como trabajadores de la información, profesionales
de TI y desarrolladores. Los programas Microsoft Official Academic Course atienden estas
necesidades haciendo hincapié sobre escenarios con entornos de trabajo auténticos con una gran
cantidad de proyectos, ejercicios, casos prácticos y evaluaciones.
Los cursos de Microsoft Official Academic Course están asignados a la extensa investigación
y análisis de trabajo en tareas de Microsoft, la misma investigación y análisis que se usa para
desarrollar los exámenes 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
tecnología de Microsoft a las tareas diarias. Estos alumnos también obtienen credenciales para
crear un Currículum Vitae que sirva de ayuda a la hora de encontrar un trabajo, mantener el
trabajo actual o continuar con su educación.
El concepto de aprendizaje permanente es hoy una necesidad máxima. Los puestos de trabajo,
e incluso todas las categorías laborales, están 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 preparación de exámenes de certificación 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 través de la elaboración y distribución de estos cursos como editor
académico oficial de Microsoft.
Actualmente, las publicaciones educativas deben prestar atención a la hora de proporcionar
gran calidad de impresión y contenido electrónico sólido. Mediante la integración 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 número de teléfono 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 colaboración 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 enseñanza 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 mínimo gracias a la preparación e instrucción por
el conocimiento en profundidad de los creadores de productos de Microsoft, así como por la
elaboración de los libros de texto por una editorial reconocida mundialmente debido a la calidad
pedagógica de sus productos. Se desafía a los alumnos para que alcancen su potencial mediante
nuevos conocimientos técnicos como miembros altamente productivos del área de trabajo.
Debido a que esta base de conocimiento proviene directamente de Microsoft, creador de los
exámenes 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 más relevante para su éxito personal y profesional. La participación directa de Microsoft
no solo le asegura que el contenido de los libros de texto MOAC es preciso y está actualizado;
también significa que recibirá la mejor instrucción posible para tener éxito en los exámenes de
certificación 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 tecnologías de software de Microsoft.
Con MOAC, reconocemos que, debido al rápido ritmo de cambios en la tecnología y el plan de
estudios desarrollado por Microsoft, existe un conjunto de necesidades más allá de las herramientas
de instrucción académica para que un instructor esté preparado para impartir el curso. El programa
MOAC trata de proporcionar soluciones para todas estas necesidades de manera sistemática con
el fin de garantizar una experiencia de entrenamiento satisfactoria y gratificante para el instructor
y el alumno: aprendizaje técnico y plan de estudios para la preparación del instructor con nuevas
versiones de software; el propio software para que los alumnos lo usen en casa para la adquisición
de conocimientos prácticos, evaluación y validación del desarrollo de habilidades; y un excelente
conjunto de herramientas para realizar la instrucción 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 instrucción, puede que desee usar este modelo con fines comparativos
con los productos disponibles:

www.wiley.com/college/microsoft
vi | o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá)
Recorrido por el libro ilustrado

Características pedagógicas
El libro de texto MOAC para Conceptos fundamentales de bases de datos está diseñado para
cubrir todos los objetivos de aprendizaje del examen 98-364 de MTA, que se conoce como su
“lección matriz de conocimientos”. Los objetivos del examen Microsoft Technology Associate
(MTA) se destacan a lo largo del libro de texto. Muchas características pedagógicas se han
desarrollado de forma específica para el programa Microsoft Official Academic Course.
Mediante una extensa información sobre los procedimientos y conceptos técnicos integrados,
a lo largo del libro de texto se plantean desafíos para el alumno y el instructor por igual. El
recorrido por el libro ilustrado que aparece a continuación proporciona una guía de características
que contribuyen al plan pedagógico del programa Microsoft Official Academic Course. La
siguiente es una lista de las principales características de cada lección diseñada para preparar
a los alumnos para el éxito a medida que continúan con su educación en TI, con los exámenes
de certificación y en el entorno de trabajo:
• Cada lección comienza con una Matriz de dominio de objetivos. Más que una lista
estándar de objetivos de aprendizaje, la lección matriz de conocimientos se relacionará
con cada conocimiento del software tratado en la lección del objetivo del examen
específico.
• Instrucciones paso a paso concisas y frecuentes enseñan a los alumnos características
nuevas y ofrecen la oportunidad de ponerlas en práctica. 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, imágenes de la pantalla) proporcionan información
visual mientras los alumnos realizan los ejercicios. Estas imágenes refuerzan los conceptos
clave, proporcionan pistas visuales acerca de los pasos que se deben realizar y permiten
a los alumnos comprobar su progreso.
• Las listas de Términos clave al principio de cada lección proporcionan a los alumnos
un vocabulario técnico importante. Cuando se usan estos términos más adelante en la
lección, 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
de las lecciones, que indican a los alumnos por qué un tema es importante (Conclusión)
o les proporcionan consejos útiles (Tome nota). Las ayudas para el lector también
proporcionan información adicional relevante o general que agrega valor a la lección.
• Las características de Certificación disponible que aparece por todo el texto señalan
a los alumnos dónde se cubre un objetivo específico de certificación. Proporcionan a
los estudiantes la oportunidad de comprobar el grado de comprensión sobre ese objetivo
MTA particular y, si fuera necesario, revisar la sección de la lección donde se trata.
MOAC ofrece una preparación completa para la certificación MTA.
• Preguntas al final de la lección: la sección Evaluación de conocimientos ofrece una
gran variedad de preguntas que pueden ser de opciones múltiples, verdadero o falso,
coincidentes o de rellenar espacios en blanco.
• Escenarios al final de la lección: los escenarios posibles de Evaluación de competencias
y los escenarios posibles de Evaluación de aptitudes son proyectos que ponen a prueba
la capacidad de los alumnos para aplicar lo que han aprendido en la lección.

www.wiley.com/college/microsoft
o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá) | vii
viii | Recorrido por el libro ilustrado

Características de la lección

2 LECCIÓN
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 VO S

Habilidades y Conceptos Objetivo del Examen MTA Número de Objetivo del Examen MTA

Definir tipos de datos


Crear y usar tablas
Elegir tipos de datos.
Comprender las tablas
2.1
2.2
Matriz de dominio de objetivos
y cómo crearlas.
Crear vistas Crear vistas. 2.3
Crear procedimientos almacenados Crear procedimientos 2.4
almacenados y funciones.

TÉRMIN OS CLAVE
tipo de datos tablas
inyección de código SQL
procedimientos almacenados
vistas
Términos clave
Suponga que es un diseñador de bases de datos de una gran compañía de importación
exportación. Su superior le ha pedido ayuda para actualizar algunas formas de hacer
negocios de la compañía. Le explica que la compañía ya no atenderá los pedidos que 28 | Lección 2
se realicen vía fax; en cambio, esas solicitudes de pedidos se recibirán a través de un
servidor web o del correo electrónico. Espera que usted diseñe una base de datos
Figura 2-1
para almacenar y procesar estos pedidos electrónicos.
Tipos de conversiones
implícitas y explícitas
Definir tipos de datos

En esta sección, aprenderá los distintos tipos de datos, por qué son importantes y
cómo afectan a las necesidades de almacenamiento. Al examinar los tipos de datos,
es necesario comprender que cada tipo está diseñado para realizar una función dentro
de una tabla, así como que ciertos tipos funcionarán mejor en columnas, variables
CONCLUSI ÓN locales, expresiones o parámetros. Además, al elegir un tipo de datos para satisfacer sus
necesidades, debe asegurarse de que cualquiera que sea el tipo elegido proporcionará
el tipo más 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 más
adecuado para el módulo de aplicación en el que se está trabajando actualmente.

20

54 | Lección 3

Esto generará el siguiente resultado: USO DE CADENAS DE CARACTERES


(2 filas afectadas)
Un carácter normal usa un byte de almacenamiento por cada carácter, lo que le permite definir
Realmente es tan simple como aprovechar el poder de administración y modificación uno de los 256 caracteres posibles (8 bits en un byte y 2^8 = 256), con capacidad para inglés
de la base de datos. Ahora, exploraremos algunos otros tipos de modificación de datos. y algunos idiomas europeos. Un carácter Unicode usa dos bytes de almacenamiento por
carácter, 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, japonés, árabe, etcétera.
Actualizar datos y bases de datos
Al escribir la sintaxis de los diferentes tipos de datos, hay que tener en cuenta que también
difieren en la forma en que se expresan los literales (valor de datos fijo). Un carácter

CONCLUSIÓ N
Como administrador de bases de datos, debe entender cómo se actualizan los datos
en una base de datos, cómo se escriben los datos de actualización en una base de datos
con las instrucciones UPDATE apropiadas, así como cómo actualizar una base de datos
Ayuda para TOME NOTA
*
normal literal siempre se expresa entre comillas simples. Por ejemplo:
‘Esta es la apariencia de una cadena de caracteres normales literales’
Cualquier tipo de datos que
mediante una tabla.
el lector no contiene el elemento
VAR (char, nchar) en el
nombre es de longitud fija.
Sin embargo, cuando se expresa un carácter Unicode literal, la letra N (de Nacional)
debe aparecer como prefijo de las comillas simples. Por ejemplo:
La función de la instrucción UPDATE es cambiar los datos de una tabla o vista. Al igual
CERTIFICACIÓN
DISPONIBLE
¿Qué comando se usa
que cualquier manipulación de datos o cláusula de modificación e instrucción de SQL,
puede usar esta instrucción ya sea en SSMS o en una ventana del editor de texto.
Conclusión N‘Esta es la apariencia de un carácter Unicode literal’

Cuando se usa un elemento VAR, SQL Server preserva el espacio en la fila en la que ese
para cambiar los datos elemento reside a partir del tamaño definido de la columna (y no a partir del número real

Alerta de
existentes en una tabla? Uso de la instrucción UPDATE de caracteres en la propia cadena de caracteres), más un extra de dos bytes de datos para

3.3
La cláusula UPDATE permite modificar los datos almacenados en tablas mediante atributos
de datos como los siguientes:
UPDATE <nombre_tabla>
certificación
SET <atributo> = <valor>
WHERE <condiciones>
disponible
Como se ha visto desde el inicio de esta lección, se puede leer este tipo de instrucción
SQL como se haría con cualquier frase. Supongamos que desea actualizar una tabla en
la que un identificador de columna determinada refleje un determinado valor. Quizás
desea tener un atributo de un nuevo supervisor (como en el ejemplo de los empleados),
Diagramas
Doug Able, asignado a los nuevos empleados para su aprendizaje. Ese supervisor podría
tener el atributo establecido para él mismo (consultar la tabla del departamento) como informativos
un identificador de 4 y la cláusula WHERE se satisface haciendo que se corresponda con
la condición NULL para los empleados sin supervisor. Vamos a escribir ese escenario
de instrucción UPDATE para actualizar el ejemplo anterior.
El primer paso sería agregar un registro en la tabla departamento con el nombre y la
información del identificador de departamento del nuevo supervisor con la instrucción INSERT:
INSERT INTO department (first_name, last_name, department_id)
VALUES (‘Doug’, ‘Able’, 4)

La respuesta sería como se muestra a continuación:


(1 fila afectada)

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 instrucción UPDATE
TOME NOTA
* se vería de la siguiente manera:
Si no especifica qué
registros se van a actualizar, UPDATE employees
todos los registros o filas SET department = 4
se actualizarán con el
nuevo valor. Esto puede WHERE department IS NULL
resultar perjudicial.

Ayuda para el lector


El resultado se muestra en la Tabla 3-4.

Tome nota

www.wiley.com/college/microsoft
o llame al número de teléfono 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 1
David
Frances
Thompson
Drake
620002
610003
1
1
Tablas de fácil lectura
Alexandria Link 610004 2
Peter Link 620005 2
David Cruze 610007 NULL

Tabla 3-2
Tabla del departamento department_id first_name last_name
1 Jane Horton
2 Mitch Simmons
3 Paul Franklin

La combinación de datos entre tablas puede resultar muy complicada, sobre todo si se van
a crear listas específicas de miles de filas de datos. Mediante la consulta de instrucción
SELECT se pueden generar listas individuales, pero puede que se obtenga como resultado
toda la información que se necesita en un formato de lista individual.
La palabra clave INNER JOIN simplifica esta recuperación de datos no solo por usar la información
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 aparecerán 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. Escribiría la instrucción 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 continuación, 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) 32 | Lección 2

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 | Lección 3 Imágenes
CERTIFICACIÓN
DISPONIBLE
interfaz gráfica (SSMS) y el segundo usa la instrucción INSERT . De cualquier manera se
logra el mismo objetivo.
de la pantalla
¿Qué comando se usa para Insertar datos
agregar datos a una tabla?

Primero vamos a saber cómo insertar datos en una tabla con SSMS antes de seguir adelante 5. Escriba el nombre para la tabla que está guardando, como se muestra en la Figura 2-6.
3.2
con el método de sintaxis. Figura 2-6

IN SER TAR DATOS CON SQL SE RV ER MANAGEME NT ST UD IO Nombre de la tabla

PREPÁRESE. Antes de empezar, asegúrese de iniciar la aplicación SSMS y conectarse a la


base de datos en la que desea trabajar. Después, realice los siguientes pasos:
1. Compruebe que se ha conectado a la base de datos en la que desea trabajar (ver Figura 3-1). La nueva tabla aparecerá en la sección Tablas, como se representa en la Figura 2-7.

Figura 3-1 Figura 2-7

Conexión a la base La tabla recién creada


de datos deseada

2. Expanda la carpeta Bases de datos haciendo clic en el icono más (+) 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 más junto a la palabra “Tablas”.
5. Haga clic con el botón secundario en el nombre de la tabla y elija Editar las primeras
Ejercicios
Figura 3-2
200 filas (vea la Figura 3-2).
paso a paso
Editar las primeras 200 filas

www.wiley.com/college/microsoft
www.Wiley.com/college/Microsoft oder
o llame al número de teléfono
gebührenfreie gratuito de MOAC:
MOAC-Rufnummer: 1+(888)1+(888) 764-7001
764-7001 (solo
(nur USA undEE.Kanada)
UU. y Canadá)
x | Lesson
 | Recorrido
1 por el libro ilustrado

Crear objetos de base de datos | 39

RESUMEN DE CONOCIMIENTOS Resumen de


En esta lección, ha aprendido lo siguiente: conocimientos
• Untipodedatosesunatributoqueespecificaeltipodedatosqueunobjetopuedecontener,
así como el número de bytes que ocupa cada tipo de datos.
• Comoreglageneral,sisetienendostiposdedatosquesolodifierenenelnúmerodebytes
que usa cada uno, el que tiene más bytes tendrá mayor intervalo de valores u ofrece mayor
precisión, o ambos.
• MicrosoftSQLServerincluyeunampliointervalodetiposdedatospredefinidosconocidoscomo
tipos de datos integrados. La mayoría de las bases de datos que se crean o se usan emplean solo
estos tipos de datos.
• LostiposdedatosnuméricosexactossonlostiposdedatosmáscomunesqueSQLServerusa
para almacenar información numérica.
• int es el principal tipo de datos de valores enteros (número entero).
• Precisión(p) es el número máximo total de dígitos decimales que se pueden almacenar en un
tipo de datos numérico, tanto a la izquierda como a la derecha del punto decimal; este valor
debe ser al menos 1 y como máximo 38. El número de precisión 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 precisión de una
diezmilésima de las unidades monetarias que representan.
• Lostiposdedatosnuméricosaproximadosnoseusancontantafrecuenciacomootrostipos
de datos de SQL Server. Si necesita más precisión (más posiciones decimales) de la que dispone
con los tipos de datos numéricos 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.
• SQLServeradmitelasconversionesimplícitas,quesepuedenproducirsinespecificarlafunción
de llamada real (cast o convert). Las conversiones explícitas necesitan el uso de las funciones
cast o convert específicamente.
• Uncarácternormalusaunbytedealmacenamientoporcadacarácter,quelepermitedefinir
uno de los 256 caracteres posibles; con capacidad para inglés y algunos idiomas europeos.
• UncarácterUnicodeusadosbytesdealmacenamientoporcarácter,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 tamaño definido de la columna y no a partir del número 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.
• Elpropósitodeunatablaesproporcionarunaestructuraparaalmacenardatosenunabase
de datos relacional.
• Unavistaessimplementeunatablavirtualqueconstadediferentescolumnasdeunaomás
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 más tablas.
• UnprocedimientoalmacenadoesunainstrucciónSQLescritapreviamentequeseha
“almacenado” o guardado en una base de datos.
• UnainyeccióndecódigoSQLesunataqueenelqueseinsertacódigomalintencionadoenlas
cadenas que después pasan a instrucciones de SQL Server en espera de análisis y ejecución.

40 | Lección 2

Evaluación 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 expresión ____________, ____________ 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
construcción de tablas dependientes del horario de verano.
5. SQL Server admite conversiones ____________ sin usar las funciones de llamada
reales (cast o convert ).
6. Un carácter normal usa ____________ byte(s) de almacenamiento para cara carácter,
mientras que un carácter 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 propósito de una tabla es proporcionar ____________ para almacenar datos
en una base de datos relacional.
9. Al crear una vista, asegúrese de contar con ____________ en el diseño.
Manipular datos | 59 10. Cuando se realizan consultas a una base de datos, se pueden obtener resultados
más rápidamente al ____________ tablas y vistas correctamente.

 Evaluación de competencias Varias opciones


Escenario 3-1: Uso del comando SELECT Rodee con un círculo la letra correspondiente a la mejor respuesta.
Le acaban de contratar como administrador de bases de datos para AdventureWorks 1. ¿Cuál de los siguientes no es un tipo de datos?
Corporation. Un administrador de red desea saber cómo extraer información de la base a. Numéricos exactos
de datos de AdventureWorks. Por lo tanto, necesita responder a las siguientes preguntas: b. Numéricos aproximados
1. ¿Qué comando usaría para mostrar los registros de una tabla? c. Cadena ANSI
d. Espacial
2. ¿Qué comando usaría para mostrar los registros FirstName y LastName de la tabla
Users? 2. ¿Cómo se llama cuando un tipo de datos se convierte automáticamente en otro tipo
de datos?
3. ¿Qué comando usaría para mostrar todos los registros de la base de datos Member a. conversión implícita
y ordenarlos por la columna FirstName? b. conversión explícita
c. conversión dinámica
4. ¿Qué comando usaría para mostrar todos los registros de la tabla Suppliers que
d. conversión estática
contengan City of Sacramento?
3. ¿Cuál de las siguientes afirmaciones no son ciertas sobre el tipo de datos int?
5. ¿Qué comando usaría para mostrar los registros CompanyName, ContactName y a. int es un entero.
PhoneNumber de la tabla Suppliers que contengan un identificador de proveedor mayor
b. bigint se usa cuando el valor excede el intervalo del tipo de datos int.
que 1000? c. Un entero usa 8 bytes para almacenar datos.
6. ¿Qué comando usaría para mostrar los registros CompanyName, ContactName y d. Las funciones solo devolverán bigint si la expresión original tiene el mismo tipo de datos.
PhoneNumber de la tabla Customers para las compañías con más de 100 empleados 4. ¿Requieren las conversiones implícitas una característica de llamada real (por ejemplo,
que residan en el estado de California. cast o convert )?
a. Sí
Escenario 3-2: Eliminar datos de tablas b. No
Después 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 usaría para quitar todos los registros de la tabla Customers donde la
edad es inferior a 18?
2. ¿Qué comando usaría para quitar todos los registros de la tabla Schools con un valor
de inscripción inferior a 500?
3. ¿Qué comando usaría para quitar todos los registros de la tabla Contact cuyo país no
es USA y al mismo tiempo liberar el espacio usado por esos registros?
4. ¿Qué comando usaría para eliminar la tabla Temp?
Evaluación de conocimientos
 Evaluación 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 confusión debido a que las órdenes de compra de la
compañía 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 métodos de envío idénticos.
1. Tras abrir SSMS y obtener acceso a la base de datos AdventureWorks, ¿qué
consulta usaría en la base de datos AdventureWorks para mostrar los registros
ProductSubcategoryID e ProductCategoryID de la tabla Production.ProductSub y
contuviera la palabra “Bike”? También desea ordenar los registros por SubcategoryName.
2. ¿Qué consulta usaría 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 número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá)
Convenciones y características
que se usan en este libro

En este libro se usan determinadas convenciones para fuentes, símbolos y títulos que resaltan
la información importante y llaman la atención sobre determinados pasos. Para obtener más
información sobre las características de cada lección, consulte la sección Recorrido por el libro
ilustrado.

 Convención Significado
Esta característica proporciona un breve resumen
CONCLUSIÓN del material que se trata en la sección que sigue.
CERRAR Las palabras en letras mayúsculas indican instrucciones
para abrir, guardar o cerrar archivos o programas. También
señalan los elementos que se deben comprobar o las
acciones que se deben realizar.
 CERTIFICACIÓN DISPONIBLE Esta característica señala un punto en el texto donde se
cubre un objetivo específico de certificación. Proporciona
la oportunidad de comprobar el grado de comprensión de
ese objetivo MTA particular y, si fuera necesario, revisar la
sección de la lección donde se trata el objetivo.

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

Alt  +  TAB   n signo más (+) entre dos nombres de teclas indica que
U
se deben presionar ambas teclas al mismo tiempo. Las
teclas que se le indique que debe presionar en un ejercicio,
aparecerán en el tipo de fuente que se muestra aquí.
Ejemplo Los términos clave aparecen en fuente negrita cursiva
cuando se definen.

www.wiley.com/college/microsoft
o llame al número de teléfono 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 acompañados de una generosa
variedad de recursos que incorporan extensas imágenes del libro de texto para formar
un paquete pedagógico coherente. Estos recursos proporcionan todo el material que los
instructores necesitan usar para impartir sus cursos. Los recursos disponibles en línea
para su descarga incluyen:
• MSDN Academic Alliance está diseñado para proporcionar herramientas de
desarrollo más fáciles y económicas, productos y tecnologías disponibles para
profesores y alumnos en los laboratorios, aulas y en los equipos de los alumnos.
Existe una suscripción gratuita disponible durante tres años 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 Guía del instructor contiene las soluciones a todos los ejercicios del libro de
texto y programas de estudio de varios plazos. La Guía del instructor también incluye
resúmenes de capítulos y notas de la lección. La Guía 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
múltiples, verdadero o falso, respuesta corta y redacción, y está disponible para la
descarga desde el sitio del libro complementario del instructor (www.wiley.com/
college/microsoft). También se proporciona una clave de respuesta completa.
• Un juego completo de presentaciones de PowerPoint e imágenes 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 lección. Adaptadas a la cobertura de actualidad
del texto y a la matriz de conocimientos, estas presentaciones están diseñadas para
transmitir conceptos claves abordados en el texto. Todas las imágenes 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 imágenes en las conversaciones
en el aula, puede ayudar a centrar la atención de los alumnos sobre los elementos
clave de las tecnologías tratadas y ayudarles a entender cómo usar eficazmente estas
tecnologías en el entorno de trabajo.
• Cuando se trata de mejorar la satisfacción en el aula, no hay mejor fuente de ideas
e inspiración que sus colegas. La red de profesorado de Wiley, Wiley Faculty
Network, conecta a los profesores con la tecnología, facilita el intercambio
de prácticas mejoradas y contribuye a aumentar la eficiencia y la eficacia de
la enseñanza. Las actividades de la red de profesorado incluyen entrenamiento
tecnológico y tutoriales, seminarios virtuales, intercambio de conocimientos e ideas
entre iguales, asesoramiento personal e intercambio de recursos. Para obtener más
detalles, visite www.WhereFacultyConnect.com.

www.wiley.com/college/microsoft
o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá) | xiii
xiv | Programa de apoyo para el instructor

DREAMSPARK PREMIUM: SUSCRIPCIÓN GRATUITA DURANTE


3 AÑOS DISPONIBLE PARA USUARIOS
DreamSpark Premium está diseñado para proporcionar de la forma más fácil y económica
que las universidades tengan disponibles las últimas herramientas de desarrollo, productos
y tecnologías de Microsoft para profesores y alumnos en los laboratorios, aulas y en los
equipos de los alumnos. DreamSpark Premium es un programa de suscripción anual para
los departamentos de enseñanza de cursos de ciencias, tecnología, ingeniería y matemáticas
(STEM). La suscripción proporciona una solución completa para mantener los laboratorios
académicos, profesores y alumnos a la vanguardia de la tecnología.
El software disponible a través del programa DreamSpark Premium se proporciona sin gasto
adicional para los departamentos asociados a través de la colaboración editorial entre Wiley
y Microsoft.
Para obtener más detalles, póngase en contacto con su representante de Wiley.
Para obtener más información 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 números de teléfono importantes


Para localizar al representante de Wiley Higher Education en su área, vaya a
http://www.wiley.com/college y haga clic en el vínculo “¿Quién es mi representante?”
en la parte superior de la página, o llame al número gratuito de MOAC: 1 + (888)
764-7001 (solo EE. UU. y Canadá).
Para obtener más información sobre cómo llegar a ser un especialista en tecnología
certificado de Microsoft (Certified Technology Specialist) y sobre la disponibilidad
de exámenes, visite www.microsoft.com/learning/mcp/mcp.

www.wiley.com/college/microsoft
o llame al número de teléfono 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 vínculos web que se usarán junto con este curso.

Ediciones de escritorio Wiley


Las ediciones de escritorio Wiley MOAC son innovadoras versiones electrónicas de los
libros de texto impresos. Los alumnos compran la versión de escritorio con hasta el 50 %
de descuento sobre el precio del texto impreso en los EE. UU. y obtienen un valor añadido
en la permanencia y portabilidad. Las ediciones de escritorio Wiley también proporcionan
a los alumnos numerosos beneficios adicionales que no se encuentran disponibles en otras
soluciones de texto electrónico.
Las ediciones de escritorio Wiley NO son suscripciones, los alumnos descargan la edición 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 edición de
escritorio Wiley se descarga en el escritorio del equipo, los alumnos tienen acceso instantáneo
a todos los contenidos sin necesidad de estar en línea. Los alumnos pueden imprimir las secciones
que prefieran leer en copia impresa. También, tienen acceso a los recursos totalmente integrados
dentro de la edición de escritorio Wiley. Además de resaltar el texto electrónico para tomar y
compartir notas, los alumnos pueden personalizar fácilmente su edición de escritorio Wiley
mientras están leyendo o siguiendo una clase.

Acerca de la certificación Microsoft Technology


Associate (MTA)
Preparación de los recursos tecnológicos del futuro
La tecnología juega un papel en casi todos los negocios del mundo. Poseer un conocimiento
fundamental de cómo funciona la tecnología y la comprensión de su impacto en el entorno
académico y laboral actual cada vez es más importante, sobre todo para aquellos alumnos
interesados en explorar profesiones que implican tecnología. Es por eso que Microsoft ha
creado la certificación Microsoft Technology Associate (MTA), una nueva credencial de nivel
básico que valida el conocimiento tecnológico fundamental entre los alumnos que buscan
desarrollar una carrera en tecnología.
La certificación Microsoft Technology Associate (MTA) es el camino ideal y preferido para
los programas de certificación de tecnología 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 tecnología, o mejorar actividades conexas,
como negocios o cualquier otro campo donde la tecnología está omnipresente.

www.wiley.com/college/microsoft
o llame al número de teléfono 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 certificación MTA está específicamente diseñado para alumnos de educación
secundaria y superior interesados en explorar las opciones académicas y profesionales en
el campo de la tecnología. Ofrece a los alumnos una certificación en TI básica y desarrollo.
Como nuevo punto de partida recomendado para las certificaciones de tecnología de Microsoft,
MTA está especialmente diseñada para los nuevos alumnos en TI y desarrollo de software.
Está disponible exclusivamente en los centros educativos y se integra fácilmente en los
programas existentes de clases de informática.

MTA potencia a los educadores y motiva a los alumnos


MTA ofrece un nuevo estándar para medir y validar los conocimientos fundamentales de
tecnología directamente en el aula con un impacto mínimo en el presupuesto y los recursos
didácticos. MTA ayuda a las instituciones que destacan como proveedores innovadores de
credenciales de la industria de alta demanda y se puede implementar fácilmente con un
conjunto simple, conveniente y asequible de exámenes de certificación de tecnología de nivel
básico. MTA permite a los alumnos explorar carreras en tecnología que no requieren una gran
inversión 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.
Además de conceder a los alumnos una certificación de Microsoft de nivel básico, MTA
está diseñada como plataforma para otras certificaciones de tecnología más avanzadas de
Microsoft, como la certificación Microsoft Certified Technology Specialist (MCTS).

Entrega de exámenes MTA: licencia MTA Campus


La implementación de un nuevo programa de certificación en el aula nunca ha sido tan
fácil como con la licencia MTA Campus. A través de la compra de una licencia anual MTA
Campus, no se necesitarán las solicitudes de presupuesto ad hoc ni las compras periódicas
de los cupones de exámenes. Ahora, puede realizar un presupuesto de bajo costo para todo el
año y después administrar los exámenes 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
de tecnología de nivel básico diseñadas 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 exámenes
MTA de Microsoft.
Para obtener más información sobre cómo llegar a ser un asociado en tecnología de
Microsoft (Microsoft Technology Associate) y sobre la disponibilidad de exámenes,
visite www.microsoft.com/learning/mta.

www.wiley.com/college/microsoft
o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá)
Reconocimientos

Revisores de los fundamentos de la tecnología MOAC MTA


Nos gustaría dar las gracias a los numerosos revisores que han leído cuidadosamente el manuscrito y han proporcionado
información muy valiosa al servicio de los materiales didácticos de calidad:

Yuke Wang, Universidad de Texas en Dallas David Koppy, Universidad de Baker


Palaniappan Vairavan, Universidad de Bellevue Sharon Moran, Centro de estudios superiores de Hillsborough
Harold “Buz” Lamson, Instituto técnico ITT Keith Hoell, Universidad de Briarcliffe y Universidad de
Colin Archibald, Centro de estudios superiores de Valencia Queens—Universidad de la Ciudad de Nueva York (CUNY)
Catherine Bradfield, Universidad en línea DeVry University Mark Hufnagel, Distrito escolar de Lee County
Online Rachelle Hall, Centro de estudios superiores de Glendale
Robert Nelson, Universidad de Blinn Scott Elliott, Christie Digital Systems, Inc.
Kalpana Viswanathan, Universidad de Bellevue Gralan Gilliam, Kaplan
Bob Becker, Universidad de Vatterott Steve Strom, Centro de estudios superiores de Butler
Carol Torkko, Universidad de Bellevue John Crowley, Centro de estudios superiores del condado
Bharat Kandel, Escuela universitaria Missouri Tech de Bucks
Linda Cohen, Centro de estudios técnicos superiores Margaret Leary, Centro de estudios superiores del norte
de Forsyth de Virginia
Candice Lambert, Centros tecnológicos Metro Sue Miner, Centro de estudios superiores de Lehigh Carbon
Susan Mahon, Universidad de Collin Gary Rollinson, Universidad de Cabrillo
Mark Aruda, Centro de estudios superiores de Hillsborough Al Kelly, Universidad de tecnología avanzada
Claude Russo, Centro de estudios superiores de Brevard Katherine James, Universidad de Seneca

www.wiley.com/college/microsoft
 |  o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá)
Contenido breve

 1 Comprender los conceptos básicos de bases de datos 1

 2 Crear objetos de base de datos 20

 3 Manipular datos 43

 4 Comprender el almacenamiento de datos 61

 5 Administrar una base de datos 84

Apéndice A 110
Índice 111

www.wiley.com/college/microsoft
o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá) | 
Contenido

L 1 Comprender los conceptos L 3 Manipular datos 43


básicos de bases de datos 1
Matriz de dominio de objetivos 43
Matriz de dominio de objetivos 1 Términos clave 43
Términos clave 1 U  44
C  2 Combinación de condiciones 45
Comprender las bases de datos planas 3 Uso de la cláusula BETWEEN 46
Comprender las bases de datos jerárquicas 3 Uso de la cláusula NOT 47
Comprender las bases de datos relacionales 4 Uso de la cláusula UNION 47
Comprender los fundamentos de las bases de datos 5 Uso de las cláusulas EXCEPT e INTERSECT 48
Comprender los conceptos de bases de datos relacionales 7 Uso de la cláusula JOIN 48
Uso de la interfaz de SQL Server Management Studio 9 Uso de consultas para insertar datos 51
Comprender el lenguaje de manipulación de datos Insertar datos 52
(DML) 12 Actualizar datos y bases de datos 54
Comprender el lenguaje de definición de datos Uso de la instrucción UPDATE 54
(DDL) 12 E  55
Uso de las instrucciones de DDL 13 Uso de la instrucción DELETE 55
Resumen de conocimientos 16 Truncar una tabla con TRUNCATE TABLE 56
Eliminar una tabla con DROP TABLE 56
E  17
Uso de la integridad referencial 56
E  19
Resumen de conocimientos 57
E  19
E  57
E  59
L 2 Crear objetos de base E  59
de datos 20
Matriz de dominio de objetivos 20
L 4 Comprender el
Términos clave 20
almacenamiento
D  20
de datos 61
Uso de tipos de datos integrados 21
Uso de tipos de datos numéricos exactos 24 Matriz de dominio de objetivos 61
Uso de tipos de datos numéricos aproximados 25 Términos clave 61
C 29 N z  62
C  33 Comprender la normalización 62
Comprender la primera forma normal 62
C  35 Comprender la segunda forma normal 63
Comprender las inyecciones de código SQL 38
Comprender la tercera forma normal 64
Resumen de conocimientos 38 Comprender la cuarta forma normal 66
E  39 Comprender la quinta forma normal 66
E  41 Comprender las claves principales, externas
E  41  67

www.wiley.com/college/microsoft
o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá) | 
xxii | Contenido

Comprender las claves principales 70 Comprender la autenticación de SQL 90


Comprender las claves externas 70 Comprender los roles de servidor de bases de datos 91
Comprender las claves principales compuestas 74 Conceder acceso a una base de datos 92
C í  74 Comprender los roles de base de datos fijos 94
Comprender los índices agrupados 75 Comprender los permisos de objeto 95
Comprender los índices no agrupados 76 Administrar roles 98
Crear una tabla no agrupada 76 Comprender las cadenas de propiedad 99
Revisar un modelo de seguridad de ejemplo 100
Resumen de conocimientos 80
Realizar copias de seguridad y restaurar bases
E  80
 101
E  82 Comprender los modelos de recuperación 101
E  82 Comprender las copias de seguridad de bases de datos 101
Comprender los dispositivos de copia de seguridad 103
Comprender la restauración de bases de datos 103
L 5 Administrar una base de
datos 84 Resumen de conocimientos 106
E  107
Matriz de dominio de objetivos 84 E  108
Términos clave 84 E  109
A  85
Apéndice A 110
Comprender la seguridad en el nivel de servidor 86
Comprender la seguridad en el nivel de base de datos 86 Índice 111
Comprender la seguridad de Windows 87

www.wiley.com/college/microsoft
o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá)
Conceptos
fundamentales de
bases de datos

Of cial Academic Course


Microsoft® Official Academic Course

Conceptos fundamentales
de bases de datos,
examen 98-364
Créditos
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 PRODUCCIÓN Amy Weintraub
DIRECTOR CREATIVO Harry Nolan
DISEÑO DE PORTADA Jim O’Shea
TECNOLOGÍA Y MEDIOS Tom Kulesa/Wendy Ashenberg
Foto de portada: Créditos: fotografía 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 publicación puede ser reproducida, almacenada en sistemas de recuperación o transmitida en
cualquier forma o por cualquier medio, ya sea electrónico, mecánico, fotocopia, grabación, escaneo o de otro modo,
excepto según lo permitido bajo las Secciones 107 o 108 de la ley de Propiedad Intelectual de Estados Unidos de
1976, sin la autorización previa por escrito de la editorial, o la autorización a través 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 deberán 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 países. Otros nombres de productos y compañías mencionados aquí pueden ser marcas
comerciales de sus respectivos propietarios.
Los ejemplos de compañías, organizaciones, productos, nombres de dominio, direcciones de correo electrónico,
logotipos, personas, lugares y acontecimientos mencionados son ficticios. No se pretende ni se debe inferir de ningún
modo relación con ninguna empresa, organización, producto, nombre de dominio, dirección de correo electrónico,
logotipo, persona, lugar o acontecimientos reales.
El libro expresa puntos de vista y opiniones del autor. La información contenida en este libro se proporciona sin
ninguna garantía expresa, implícita ni estatuaria. Ni los autores, John Wiley & Sons, Inc., Microsoft Corporation, ni
sus revendedores o distribuidores serán responsables de cualquier daño 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 comprensión durante más de 200
años, 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
y donde vivimos y trabajamos. En 2008, pusimos en marcha una iniciativa de ciudadanía empresarial, Corporate Citizenship,
un esfuerzo global para abordar los retos ambientales, sociales, económicos 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 adquisición, la conducta ética de nuestro negocio y entre nuestros proveedores y la comunidad, así como el apoyo
solidario. Para obtener más información, visite nuestro sitio web: www.wiley.com/go/citizenship.
ISBN 978-0-470-88916-9
Impreso en los Estados Unidos de América

10 9 8 7 6 5 4 3 2 1

www.wiley.com/college/microsoft
o llame al número de teléfono 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 TÉRMINOS 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 según los siguientes términos 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 términos 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 título del eBook de MOAC aplicable necesarias
para los instructores que imparten la clase correspondiente a dicho título y para los estudiantes
que asisten a la misma.
3. Solo puede distribuir los títulos del eBook de MOAC a los instructores que imparten una de las
clases correspondientes a dicho título y a los estudiantes que asisten a la misma, a través de:
o correo electrónico;
o un dispositivo USB seguro conectado directamente a los dispositivos personales
de los estudiantes;
o un sitio web protegido con contraseña al que solo tengan acceso los instructores
y estudiantes.
4. Solo puede distribuir el Contenido para el Instructor a los instructores, con fines de preparación
y enseñanza de una de las clases correspondientes al título 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 título del eBook de MOAC mientras dure la clase en la que la
persona está participando, es decir, mientras se enseñe el título del eBook de MOAC
o por un periodo de ciento ochenta (180) días, lo que sea mayor. Después de esto, se
deben eliminar de forma segura todas las copias del título del eBook de MOAC que la
persona posea o que estén bajo su control.
o El uso que se haga de los títulos del eBook de MOAC también cumplirá con todos los
términos, condiciones o licencias adicionales que se apliquen, que acompañen o que
se incluyan en el eBook de MOAC.

www.wiley.com/college/microsoft
o llame al número de teléfono 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 enseñar la sesión
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 enseña el título del eBook de MOAC relacionado o por un periodo de ciento
ochenta (180) días, lo que sea mayor. Después de esto, se deben eliminar de forma
segura todas las copias del título del Contenido para el Instructor que el instructor posea
o que estén bajo su control.
o El uso que se haga del Contenido para el Instructor también cumplirá con todos los
términos, condiciones o licencias adicionales aplicables, que acompañen 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 enseña 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á
ni distribuirá el eBook de MOAC, ni total ni parcialmente.
5. El uso que haga de los títulos del eBook de MOAC también cumplirá con todos los términos,
condiciones o licencias adicionales que se apliquen, que acompañen o que se incluyan en el
título del eBook de MOAC.
c. Salvo según se autorice expresamente en la sección b anterior, no puede cargar, copiar, modificar,
transmitir, hacer trabajos derivados, reenviar ni distribuir ningún eBook de MOAC ni Contenido para el
Instructor, ni total ni parcialmente, creado mediante descompilación, así como tampoco el código fuente
de ningún eBook de MOAC o Contenido para el Instructor. No puede imprimir copias de ningún eBook
de MOAC ni Contenido para el Instructor completo; sin embargo, puede imprimir páginas individuales o
secciones de los capítulos del eBook de MOAC específicamente 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 retribución
monetaria por medio de la venta, reventa, préstamo, transmisión, contratación o cualquier otra forma
de explotación 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á término a su licencia
automáticamente. Dicha terminación será adicional y sustituirá cualquier recurso de equidad, civil
o de otro tipo disponibles para Wiley.
d. Solo podrá utilizar el título del eBook de MOAC y el Contenido para el Instructor mientras dure la clase en
la que se enseñe el título del eBook de MOAC específico o por un periodo de ciento ochenta (180) días, lo
que sea mayor. Después de esto, deberá eliminar de forma segura todas las copias del título del eBook de
MOAC y del Contenido para el instructor que posea o estén bajo su control.
e. LOS EBOOKS DE MOAC Y EL CONTENIDO PARA EL INSTRUCTOR SE LICENCIAN “TAL CUAL” Y “SEGÚN
DISPONIBILIDAD”, SIN GARANTÍAS DE NINGÚN TIPO.
f. Usted reconoce que todos los derechos (incluyendo, sin limitación, la propiedad intelectual, las patentes
y los secretos empresariales) en los eBook de MOAC y el Contenido para el Instructor son propiedad única
y exclusiva de Wiley y sus licenciantes. La aceptación 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 reproducción o la distribución no autorizados. Además, acepta no traducir, descompilar,
desensamblar ni realizar ingeniería 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.

www.wiley.com/college/microsoft
iv | o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá)
Prólogo del editor

La visión 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 tecnología de Microsoft de forma eficaz en todos los aspectos de sus vidas personales
y profesionales. Para que los educadores y alumnos aprovechen al máximo las herramientas
de software de Microsoft y sean más productivos, se requiere una enseñanza de calidad. Por
tanto, nuestra misión es hacer que nuestros programas de enseñanza sean compañeros docentes
de confianza de por vida.
Para lograr esta misión, Wiley y Microsoft se han asociado y han desarrollado programas
educativos de la más alta calidad dirigidos a trabajadores de la información, profesionales de
TI y desarrolladores. Los materiales creados por esta asociación 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
información e instrucción sobre los productos de Microsoft de la más alta calidad. Los libros
de texto de Microsoft Official Academic Course son, de alguna manera, más “oficiales”:
constituyen el material didáctico oficial para los miembros de Microsoft IT Academy.
La serie de cursos Microsoft Official Academic Course se centra en el desarrollo laboral. Estos
programas están dirigidos a aquellos alumnos que buscan ingresar al mercado laboral, cambiar
de trabajo o embarcarse en nuevas carreras como trabajadores de la información, profesionales
de TI y desarrolladores. Los programas Microsoft Official Academic Course atienden estas
necesidades haciendo hincapié sobre escenarios con entornos de trabajo auténticos con una gran
cantidad de proyectos, ejercicios, casos prácticos y evaluaciones.
Los cursos de Microsoft Official Academic Course están asignados a la extensa investigación
y análisis de trabajo en tareas de Microsoft, la misma investigación y análisis que se usa para
desarrollar los exámenes 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
tecnología de Microsoft a las tareas diarias. Estos alumnos también obtienen credenciales para
crear un Currículum Vitae que sirva de ayuda a la hora de encontrar un trabajo, mantener el
trabajo actual o continuar con su educación.
El concepto de aprendizaje permanente es hoy una necesidad máxima. Los puestos de trabajo,
e incluso todas las categorías laborales, están 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 preparación de exámenes de certificación 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 través de la elaboración y distribución de estos cursos como editor
académico oficial de Microsoft.
Actualmente, las publicaciones educativas deben prestar atención a la hora de proporcionar
gran calidad de impresión y contenido electrónico sólido. Mediante la integración 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 número de teléfono 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 colaboración 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 enseñanza 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 mínimo gracias a la preparación e instrucción por
el conocimiento en profundidad de los creadores de productos de Microsoft, así como por la
elaboración de los libros de texto por una editorial reconocida mundialmente debido a la calidad
pedagógica de sus productos. Se desafía a los alumnos para que alcancen su potencial mediante
nuevos conocimientos técnicos como miembros altamente productivos del área de trabajo.
Debido a que esta base de conocimiento proviene directamente de Microsoft, creador de los
exámenes 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 más relevante para su éxito personal y profesional. La participación directa de Microsoft
no solo le asegura que el contenido de los libros de texto MOAC es preciso y está actualizado;
también significa que recibirá la mejor instrucción posible para tener éxito en los exámenes de
certificación 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 tecnologías de software de Microsoft.
Con MOAC, reconocemos que, debido al rápido ritmo de cambios en la tecnología y el plan de
estudios desarrollado por Microsoft, existe un conjunto de necesidades más allá de las herramientas
de instrucción académica para que un instructor esté preparado para impartir el curso. El programa
MOAC trata de proporcionar soluciones para todas estas necesidades de manera sistemática con
el fin de garantizar una experiencia de entrenamiento satisfactoria y gratificante para el instructor
y el alumno: aprendizaje técnico y plan de estudios para la preparación del instructor con nuevas
versiones de software; el propio software para que los alumnos lo usen en casa para la adquisición
de conocimientos prácticos, evaluación y validación del desarrollo de habilidades; y un excelente
conjunto de herramientas para realizar la instrucción 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 instrucción, puede que desee usar este modelo con fines comparativos
con los productos disponibles:

www.wiley.com/college/microsoft
vi | o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá)
Recorrido por el libro ilustrado

Características pedagógicas
El libro de texto MOAC para Conceptos fundamentales de bases de datos está diseñado para
cubrir todos los objetivos de aprendizaje del examen 98-364 de MTA, que se conoce como su
“lección matriz de conocimientos”. Los objetivos del examen Microsoft Technology Associate
(MTA) se destacan a lo largo del libro de texto. Muchas características pedagógicas se han
desarrollado de forma específica para el programa Microsoft Official Academic Course.
Mediante una extensa información sobre los procedimientos y conceptos técnicos integrados,
a lo largo del libro de texto se plantean desafíos para el alumno y el instructor por igual. El
recorrido por el libro ilustrado que aparece a continuación proporciona una guía de características
que contribuyen al plan pedagógico del programa Microsoft Official Academic Course. La
siguiente es una lista de las principales características de cada lección diseñada para preparar
a los alumnos para el éxito a medida que continúan con su educación en TI, con los exámenes
de certificación y en el entorno de trabajo:
• Cada lección comienza con una Matriz de dominio de objetivos. Más que una lista
estándar de objetivos de aprendizaje, la lección matriz de conocimientos se relacionará
con cada conocimiento del software tratado en la lección del objetivo del examen
específico.
• Instrucciones paso a paso concisas y frecuentes enseñan a los alumnos características
nuevas y ofrecen la oportunidad de ponerlas en práctica. 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, imágenes de la pantalla) proporcionan información
visual mientras los alumnos realizan los ejercicios. Estas imágenes refuerzan los conceptos
clave, proporcionan pistas visuales acerca de los pasos que se deben realizar y permiten
a los alumnos comprobar su progreso.
• Las listas de Términos clave al principio de cada lección proporcionan a los alumnos
un vocabulario técnico importante. Cuando se usan estos términos más adelante en la
lección, 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
de las lecciones, que indican a los alumnos por qué un tema es importante (Conclusión)
o les proporcionan consejos útiles (Tome nota). Las ayudas para el lector también
proporcionan información adicional relevante o general que agrega valor a la lección.
• Las características de Certificación disponible que aparece por todo el texto señalan
a los alumnos dónde se cubre un objetivo específico de certificación. Proporcionan a
los estudiantes la oportunidad de comprobar el grado de comprensión sobre ese objetivo
MTA particular y, si fuera necesario, revisar la sección de la lección donde se trata.
MOAC ofrece una preparación completa para la certificación MTA.
• Preguntas al final de la lección: la sección Evaluación de conocimientos ofrece una
gran variedad de preguntas que pueden ser de opciones múltiples, verdadero o falso,
coincidentes o de rellenar espacios en blanco.
• Escenarios al final de la lección: los escenarios posibles de Evaluación de competencias
y los escenarios posibles de Evaluación de aptitudes son proyectos que ponen a prueba
la capacidad de los alumnos para aplicar lo que han aprendido en la lección.

www.wiley.com/college/microsoft
o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá) | vii
viii | Recorrido por el libro ilustrado

Características de la lección

2 LECCIÓN
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 VO S

Habilidades y Conceptos Objetivo del Examen MTA Número de Objetivo del Examen MTA

Definir tipos de datos


Crear y usar tablas
Elegir tipos de datos.
Comprender las tablas
2.1
2.2
Matriz de dominio de objetivos
y cómo crearlas.
Crear vistas Crear vistas. 2.3
Crear procedimientos almacenados Crear procedimientos 2.4
almacenados y funciones.

TÉRMIN OS CLAVE
tipo de datos tablas
inyección de código SQL
procedimientos almacenados
vistas
Términos clave
Suponga que es un diseñador de bases de datos de una gran compañía de importación
exportación. Su superior le ha pedido ayuda para actualizar algunas formas de hacer
negocios de la compañía. Le explica que la compañía ya no atenderá los pedidos que 28 | Lección 2
se realicen vía fax; en cambio, esas solicitudes de pedidos se recibirán a través de un
servidor web o del correo electrónico. Espera que usted diseñe una base de datos
Figura 2-1
para almacenar y procesar estos pedidos electrónicos.
Tipos de conversiones
implícitas y explícitas
Definir tipos de datos

En esta sección, aprenderá los distintos tipos de datos, por qué son importantes y
cómo afectan a las necesidades de almacenamiento. Al examinar los tipos de datos,
es necesario comprender que cada tipo está diseñado para realizar una función dentro
de una tabla, así como que ciertos tipos funcionarán mejor en columnas, variables
CONCLUSI ÓN locales, expresiones o parámetros. Además, al elegir un tipo de datos para satisfacer sus
necesidades, debe asegurarse de que cualquiera que sea el tipo elegido proporcionará
el tipo más 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 más
adecuado para el módulo de aplicación en el que se está trabajando actualmente.

20

54 | Lección 3

Esto generará el siguiente resultado: USO DE CADENAS DE CARACTERES


(2 filas afectadas)
Un carácter normal usa un byte de almacenamiento por cada carácter, lo que le permite definir
Realmente es tan simple como aprovechar el poder de administración y modificación uno de los 256 caracteres posibles (8 bits en un byte y 2^8 = 256), con capacidad para inglés
de la base de datos. Ahora, exploraremos algunos otros tipos de modificación de datos. y algunos idiomas europeos. Un carácter Unicode usa dos bytes de almacenamiento por
carácter, 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, japonés, árabe, etcétera.
Actualizar datos y bases de datos
Al escribir la sintaxis de los diferentes tipos de datos, hay que tener en cuenta que también
difieren en la forma en que se expresan los literales (valor de datos fijo). Un carácter

CONCLUSIÓ N
Como administrador de bases de datos, debe entender cómo se actualizan los datos
en una base de datos, cómo se escriben los datos de actualización en una base de datos
con las instrucciones UPDATE apropiadas, así como cómo actualizar una base de datos
Ayuda para TOME NOTA
*
normal literal siempre se expresa entre comillas simples. Por ejemplo:
‘Esta es la apariencia de una cadena de caracteres normales literales’
Cualquier tipo de datos que
mediante una tabla.
el lector no contiene el elemento
VAR (char, nchar) en el
nombre es de longitud fija.
Sin embargo, cuando se expresa un carácter Unicode literal, la letra N (de Nacional)
debe aparecer como prefijo de las comillas simples. Por ejemplo:
La función de la instrucción UPDATE es cambiar los datos de una tabla o vista. Al igual
CERTIFICACIÓN
DISPONIBLE
¿Qué comando se usa
que cualquier manipulación de datos o cláusula de modificación e instrucción de SQL,
puede usar esta instrucción ya sea en SSMS o en una ventana del editor de texto.
Conclusión N‘Esta es la apariencia de un carácter Unicode literal’

Cuando se usa un elemento VAR, SQL Server preserva el espacio en la fila en la que ese
para cambiar los datos elemento reside a partir del tamaño definido de la columna (y no a partir del número real

Alerta de
existentes en una tabla? Uso de la instrucción UPDATE de caracteres en la propia cadena de caracteres), más un extra de dos bytes de datos para

3.3
La cláusula UPDATE permite modificar los datos almacenados en tablas mediante atributos
de datos como los siguientes:
UPDATE <nombre_tabla>
certificación
SET <atributo> = <valor>
WHERE <condiciones>
disponible
Como se ha visto desde el inicio de esta lección, se puede leer este tipo de instrucción
SQL como se haría con cualquier frase. Supongamos que desea actualizar una tabla en
la que un identificador de columna determinada refleje un determinado valor. Quizás
desea tener un atributo de un nuevo supervisor (como en el ejemplo de los empleados),
Diagramas
Doug Able, asignado a los nuevos empleados para su aprendizaje. Ese supervisor podría
tener el atributo establecido para él mismo (consultar la tabla del departamento) como informativos
un identificador de 4 y la cláusula WHERE se satisface haciendo que se corresponda con
la condición NULL para los empleados sin supervisor. Vamos a escribir ese escenario
de instrucción UPDATE para actualizar el ejemplo anterior.
El primer paso sería agregar un registro en la tabla departamento con el nombre y la
información del identificador de departamento del nuevo supervisor con la instrucción INSERT:
INSERT INTO department (first_name, last_name, department_id)
VALUES (‘Doug’, ‘Able’, 4)

La respuesta sería como se muestra a continuación:


(1 fila afectada)

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 instrucción UPDATE
TOME NOTA
* se vería de la siguiente manera:
Si no especifica qué
registros se van a actualizar, UPDATE employees
todos los registros o filas SET department = 4
se actualizarán con el
nuevo valor. Esto puede WHERE department IS NULL
resultar perjudicial.

Ayuda para el lector


El resultado se muestra en la Tabla 3-4.

Tome nota

www.wiley.com/college/microsoft
o llame al número de teléfono 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 1
David
Frances
Thompson
Drake
620002
610003
1
1
Tablas de fácil lectura
Alexandria Link 610004 2
Peter Link 620005 2
David Cruze 610007 NULL

Tabla 3-2
Tabla del departamento department_id first_name last_name
1 Jane Horton
2 Mitch Simmons
3 Paul Franklin

La combinación de datos entre tablas puede resultar muy complicada, sobre todo si se van
a crear listas específicas de miles de filas de datos. Mediante la consulta de instrucción
SELECT se pueden generar listas individuales, pero puede que se obtenga como resultado
toda la información que se necesita en un formato de lista individual.
La palabra clave INNER JOIN simplifica esta recuperación de datos no solo por usar la información
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 aparecerán 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. Escribiría la instrucción 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 continuación, 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) 32 | Lección 2

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 | Lección 3 Imágenes
CERTIFICACIÓN
DISPONIBLE
interfaz gráfica (SSMS) y el segundo usa la instrucción INSERT . De cualquier manera se
logra el mismo objetivo.
de la pantalla
¿Qué comando se usa para Insertar datos
agregar datos a una tabla?

Primero vamos a saber cómo insertar datos en una tabla con SSMS antes de seguir adelante 5. Escriba el nombre para la tabla que está guardando, como se muestra en la Figura 2-6.
3.2
con el método de sintaxis. Figura 2-6

IN SER TAR DATOS CON SQL SE RV ER MANAGEME NT ST UD IO Nombre de la tabla

PREPÁRESE. Antes de empezar, asegúrese de iniciar la aplicación SSMS y conectarse a la


base de datos en la que desea trabajar. Después, realice los siguientes pasos:
1. Compruebe que se ha conectado a la base de datos en la que desea trabajar (ver Figura 3-1). La nueva tabla aparecerá en la sección Tablas, como se representa en la Figura 2-7.

Figura 3-1 Figura 2-7

Conexión a la base La tabla recién creada


de datos deseada

2. Expanda la carpeta Bases de datos haciendo clic en el icono más (+) 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 más junto a la palabra “Tablas”.
5. Haga clic con el botón secundario en el nombre de la tabla y elija Editar las primeras
Ejercicios
Figura 3-2
200 filas (vea la Figura 3-2).
paso a paso
Editar las primeras 200 filas

www.wiley.com/college/microsoft
www.Wiley.com/college/Microsoft oder
o llame al número de teléfono
gebührenfreie gratuito de MOAC:
MOAC-Rufnummer: 1+(888)1+(888) 764-7001
764-7001 (solo
(nur USA undEE.Kanada)
UU. y Canadá)
x | Lesson
 | Recorrido
1 por el libro ilustrado

Crear objetos de base de datos | 39

RESUMEN DE CONOCIMIENTOS Resumen de


En esta lección, ha aprendido lo siguiente: conocimientos
• Untipodedatosesunatributoqueespecificaeltipodedatosqueunobjetopuedecontener,
así como el número de bytes que ocupa cada tipo de datos.
• Comoreglageneral,sisetienendostiposdedatosquesolodifierenenelnúmerodebytes
que usa cada uno, el que tiene más bytes tendrá mayor intervalo de valores u ofrece mayor
precisión, o ambos.
• MicrosoftSQLServerincluyeunampliointervalodetiposdedatospredefinidosconocidoscomo
tipos de datos integrados. La mayoría de las bases de datos que se crean o se usan emplean solo
estos tipos de datos.
• LostiposdedatosnuméricosexactossonlostiposdedatosmáscomunesqueSQLServerusa
para almacenar información numérica.
• int es el principal tipo de datos de valores enteros (número entero).
• Precisión(p) es el número máximo total de dígitos decimales que se pueden almacenar en un
tipo de datos numérico, tanto a la izquierda como a la derecha del punto decimal; este valor
debe ser al menos 1 y como máximo 38. El número de precisión 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 precisión de una
diezmilésima de las unidades monetarias que representan.
• Lostiposdedatosnuméricosaproximadosnoseusancontantafrecuenciacomootrostipos
de datos de SQL Server. Si necesita más precisión (más posiciones decimales) de la que dispone
con los tipos de datos numéricos 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.
• SQLServeradmitelasconversionesimplícitas,quesepuedenproducirsinespecificarlafunción
de llamada real (cast o convert). Las conversiones explícitas necesitan el uso de las funciones
cast o convert específicamente.
• Uncarácternormalusaunbytedealmacenamientoporcadacarácter,quelepermitedefinir
uno de los 256 caracteres posibles; con capacidad para inglés y algunos idiomas europeos.
• UncarácterUnicodeusadosbytesdealmacenamientoporcarácter,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 tamaño definido de la columna y no a partir del número 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.
• Elpropósitodeunatablaesproporcionarunaestructuraparaalmacenardatosenunabase
de datos relacional.
• Unavistaessimplementeunatablavirtualqueconstadediferentescolumnasdeunaomás
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 más tablas.
• UnprocedimientoalmacenadoesunainstrucciónSQLescritapreviamentequeseha
“almacenado” o guardado en una base de datos.
• UnainyeccióndecódigoSQLesunataqueenelqueseinsertacódigomalintencionadoenlas
cadenas que después pasan a instrucciones de SQL Server en espera de análisis y ejecución.

40 | Lección 2

Evaluación 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 expresión ____________, ____________ 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
construcción de tablas dependientes del horario de verano.
5. SQL Server admite conversiones ____________ sin usar las funciones de llamada
reales (cast o convert ).
6. Un carácter normal usa ____________ byte(s) de almacenamiento para cara carácter,
mientras que un carácter 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 propósito de una tabla es proporcionar ____________ para almacenar datos
en una base de datos relacional.
9. Al crear una vista, asegúrese de contar con ____________ en el diseño.
Manipular datos | 59 10. Cuando se realizan consultas a una base de datos, se pueden obtener resultados
más rápidamente al ____________ tablas y vistas correctamente.

 Evaluación de competencias Varias opciones


Escenario 3-1: Uso del comando SELECT Rodee con un círculo la letra correspondiente a la mejor respuesta.
Le acaban de contratar como administrador de bases de datos para AdventureWorks 1. ¿Cuál de los siguientes no es un tipo de datos?
Corporation. Un administrador de red desea saber cómo extraer información de la base a. Numéricos exactos
de datos de AdventureWorks. Por lo tanto, necesita responder a las siguientes preguntas: b. Numéricos aproximados
1. ¿Qué comando usaría para mostrar los registros de una tabla? c. Cadena ANSI
d. Espacial
2. ¿Qué comando usaría para mostrar los registros FirstName y LastName de la tabla
Users? 2. ¿Cómo se llama cuando un tipo de datos se convierte automáticamente en otro tipo
de datos?
3. ¿Qué comando usaría para mostrar todos los registros de la base de datos Member a. conversión implícita
y ordenarlos por la columna FirstName? b. conversión explícita
c. conversión dinámica
4. ¿Qué comando usaría para mostrar todos los registros de la tabla Suppliers que
d. conversión estática
contengan City of Sacramento?
3. ¿Cuál de las siguientes afirmaciones no son ciertas sobre el tipo de datos int?
5. ¿Qué comando usaría para mostrar los registros CompanyName, ContactName y a. int es un entero.
PhoneNumber de la tabla Suppliers que contengan un identificador de proveedor mayor
b. bigint se usa cuando el valor excede el intervalo del tipo de datos int.
que 1000? c. Un entero usa 8 bytes para almacenar datos.
6. ¿Qué comando usaría para mostrar los registros CompanyName, ContactName y d. Las funciones solo devolverán bigint si la expresión original tiene el mismo tipo de datos.
PhoneNumber de la tabla Customers para las compañías con más de 100 empleados 4. ¿Requieren las conversiones implícitas una característica de llamada real (por ejemplo,
que residan en el estado de California. cast o convert )?
a. Sí
Escenario 3-2: Eliminar datos de tablas b. No
Después 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 usaría para quitar todos los registros de la tabla Customers donde la
edad es inferior a 18?
2. ¿Qué comando usaría para quitar todos los registros de la tabla Schools con un valor
de inscripción inferior a 500?
3. ¿Qué comando usaría para quitar todos los registros de la tabla Contact cuyo país no
es USA y al mismo tiempo liberar el espacio usado por esos registros?
4. ¿Qué comando usaría para eliminar la tabla Temp?
Evaluación de conocimientos
 Evaluación 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 confusión debido a que las órdenes de compra de la
compañía 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 métodos de envío idénticos.
1. Tras abrir SSMS y obtener acceso a la base de datos AdventureWorks, ¿qué
consulta usaría en la base de datos AdventureWorks para mostrar los registros
ProductSubcategoryID e ProductCategoryID de la tabla Production.ProductSub y
contuviera la palabra “Bike”? También desea ordenar los registros por SubcategoryName.
2. ¿Qué consulta usaría 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 número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá)
Convenciones y características
que se usan en este libro

En este libro se usan determinadas convenciones para fuentes, símbolos y títulos que resaltan
la información importante y llaman la atención sobre determinados pasos. Para obtener más
información sobre las características de cada lección, consulte la sección Recorrido por el libro
ilustrado.

 Convención Significado
Esta característica proporciona un breve resumen
CONCLUSIÓN del material que se trata en la sección que sigue.
CERRAR Las palabras en letras mayúsculas indican instrucciones
para abrir, guardar o cerrar archivos o programas. También
señalan los elementos que se deben comprobar o las
acciones que se deben realizar.
 CERTIFICACIÓN DISPONIBLE Esta característica señala un punto en el texto donde se
cubre un objetivo específico de certificación. Proporciona
la oportunidad de comprobar el grado de comprensión de
ese objetivo MTA particular y, si fuera necesario, revisar la
sección de la lección donde se trata el objetivo.

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

Alt  +  TAB   n signo más (+) entre dos nombres de teclas indica que
U
se deben presionar ambas teclas al mismo tiempo. Las
teclas que se le indique que debe presionar en un ejercicio,
aparecerán en el tipo de fuente que se muestra aquí.
Ejemplo Los términos clave aparecen en fuente negrita cursiva
cuando se definen.

www.wiley.com/college/microsoft
o llame al número de teléfono 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 acompañados de una generosa
variedad de recursos que incorporan extensas imágenes del libro de texto para formar
un paquete pedagógico coherente. Estos recursos proporcionan todo el material que los
instructores necesitan usar para impartir sus cursos. Los recursos disponibles en línea
para su descarga incluyen:
• MSDN Academic Alliance está diseñado para proporcionar herramientas de
desarrollo más fáciles y económicas, productos y tecnologías disponibles para
profesores y alumnos en los laboratorios, aulas y en los equipos de los alumnos.
Existe una suscripción gratuita disponible durante tres años 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 Guía del instructor contiene las soluciones a todos los ejercicios del libro de
texto y programas de estudio de varios plazos. La Guía del instructor también incluye
resúmenes de capítulos y notas de la lección. La Guía 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
múltiples, verdadero o falso, respuesta corta y redacción, y está disponible para la
descarga desde el sitio del libro complementario del instructor (www.wiley.com/
college/microsoft). También se proporciona una clave de respuesta completa.
• Un juego completo de presentaciones de PowerPoint e imágenes 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 lección. Adaptadas a la cobertura de actualidad
del texto y a la matriz de conocimientos, estas presentaciones están diseñadas para
transmitir conceptos claves abordados en el texto. Todas las imágenes 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 imágenes en las conversaciones
en el aula, puede ayudar a centrar la atención de los alumnos sobre los elementos
clave de las tecnologías tratadas y ayudarles a entender cómo usar eficazmente estas
tecnologías en el entorno de trabajo.
• Cuando se trata de mejorar la satisfacción en el aula, no hay mejor fuente de ideas
e inspiración que sus colegas. La red de profesorado de Wiley, Wiley Faculty
Network, conecta a los profesores con la tecnología, facilita el intercambio
de prácticas mejoradas y contribuye a aumentar la eficiencia y la eficacia de
la enseñanza. Las actividades de la red de profesorado incluyen entrenamiento
tecnológico y tutoriales, seminarios virtuales, intercambio de conocimientos e ideas
entre iguales, asesoramiento personal e intercambio de recursos. Para obtener más
detalles, visite www.WhereFacultyConnect.com.

www.wiley.com/college/microsoft
o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá) | xiii
xiv | Programa de apoyo para el instructor

DREAMSPARK PREMIUM: SUSCRIPCIÓN GRATUITA DURANTE


3 AÑOS DISPONIBLE PARA USUARIOS
DreamSpark Premium está diseñado para proporcionar de la forma más fácil y económica
que las universidades tengan disponibles las últimas herramientas de desarrollo, productos
y tecnologías de Microsoft para profesores y alumnos en los laboratorios, aulas y en los
equipos de los alumnos. DreamSpark Premium es un programa de suscripción anual para
los departamentos de enseñanza de cursos de ciencias, tecnología, ingeniería y matemáticas
(STEM). La suscripción proporciona una solución completa para mantener los laboratorios
académicos, profesores y alumnos a la vanguardia de la tecnología.
El software disponible a través del programa DreamSpark Premium se proporciona sin gasto
adicional para los departamentos asociados a través de la colaboración editorial entre Wiley
y Microsoft.
Para obtener más detalles, póngase en contacto con su representante de Wiley.
Para obtener más información 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 números de teléfono importantes


Para localizar al representante de Wiley Higher Education en su área, vaya a
http://www.wiley.com/college y haga clic en el vínculo “¿Quién es mi representante?”
en la parte superior de la página, o llame al número gratuito de MOAC: 1 + (888)
764-7001 (solo EE. UU. y Canadá).
Para obtener más información sobre cómo llegar a ser un especialista en tecnología
certificado de Microsoft (Certified Technology Specialist) y sobre la disponibilidad
de exámenes, visite www.microsoft.com/learning/mcp/mcp.

www.wiley.com/college/microsoft
o llame al número de teléfono 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 vínculos web que se usarán junto con este curso.

Ediciones de escritorio Wiley


Las ediciones de escritorio Wiley MOAC son innovadoras versiones electrónicas de los
libros de texto impresos. Los alumnos compran la versión de escritorio con hasta el 50 %
de descuento sobre el precio del texto impreso en los EE. UU. y obtienen un valor añadido
en la permanencia y portabilidad. Las ediciones de escritorio Wiley también proporcionan
a los alumnos numerosos beneficios adicionales que no se encuentran disponibles en otras
soluciones de texto electrónico.
Las ediciones de escritorio Wiley NO son suscripciones, los alumnos descargan la edición 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 edición de
escritorio Wiley se descarga en el escritorio del equipo, los alumnos tienen acceso instantáneo
a todos los contenidos sin necesidad de estar en línea. Los alumnos pueden imprimir las secciones
que prefieran leer en copia impresa. También, tienen acceso a los recursos totalmente integrados
dentro de la edición de escritorio Wiley. Además de resaltar el texto electrónico para tomar y
compartir notas, los alumnos pueden personalizar fácilmente su edición de escritorio Wiley
mientras están leyendo o siguiendo una clase.

Acerca de la certificación Microsoft Technology


Associate (MTA)
Preparación de los recursos tecnológicos del futuro
La tecnología juega un papel en casi todos los negocios del mundo. Poseer un conocimiento
fundamental de cómo funciona la tecnología y la comprensión de su impacto en el entorno
académico y laboral actual cada vez es más importante, sobre todo para aquellos alumnos
interesados en explorar profesiones que implican tecnología. Es por eso que Microsoft ha
creado la certificación Microsoft Technology Associate (MTA), una nueva credencial de nivel
básico que valida el conocimiento tecnológico fundamental entre los alumnos que buscan
desarrollar una carrera en tecnología.
La certificación Microsoft Technology Associate (MTA) es el camino ideal y preferido para
los programas de certificación de tecnología 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 tecnología, o mejorar actividades conexas,
como negocios o cualquier otro campo donde la tecnología está omnipresente.

www.wiley.com/college/microsoft
o llame al número de teléfono 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 certificación MTA está específicamente diseñado para alumnos de educación
secundaria y superior interesados en explorar las opciones académicas y profesionales en
el campo de la tecnología. Ofrece a los alumnos una certificación en TI básica y desarrollo.
Como nuevo punto de partida recomendado para las certificaciones de tecnología de Microsoft,
MTA está especialmente diseñada para los nuevos alumnos en TI y desarrollo de software.
Está disponible exclusivamente en los centros educativos y se integra fácilmente en los
programas existentes de clases de informática.

MTA potencia a los educadores y motiva a los alumnos


MTA ofrece un nuevo estándar para medir y validar los conocimientos fundamentales de
tecnología directamente en el aula con un impacto mínimo en el presupuesto y los recursos
didácticos. MTA ayuda a las instituciones que destacan como proveedores innovadores de
credenciales de la industria de alta demanda y se puede implementar fácilmente con un
conjunto simple, conveniente y asequible de exámenes de certificación de tecnología de nivel
básico. MTA permite a los alumnos explorar carreras en tecnología que no requieren una gran
inversión 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.
Además de conceder a los alumnos una certificación de Microsoft de nivel básico, MTA
está diseñada como plataforma para otras certificaciones de tecnología más avanzadas de
Microsoft, como la certificación Microsoft Certified Technology Specialist (MCTS).

Entrega de exámenes MTA: licencia MTA Campus


La implementación de un nuevo programa de certificación en el aula nunca ha sido tan
fácil como con la licencia MTA Campus. A través de la compra de una licencia anual MTA
Campus, no se necesitarán las solicitudes de presupuesto ad hoc ni las compras periódicas
de los cupones de exámenes. Ahora, puede realizar un presupuesto de bajo costo para todo el
año y después administrar los exámenes 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
de tecnología de nivel básico diseñadas 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 exámenes
MTA de Microsoft.
Para obtener más información sobre cómo llegar a ser un asociado en tecnología de
Microsoft (Microsoft Technology Associate) y sobre la disponibilidad de exámenes,
visite www.microsoft.com/learning/mta.

www.wiley.com/college/microsoft
o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá)
Programa de apoyo para el alumno | xvii

Activar la prueba práctica GRATUITA de MTA


La compra de este libro le da derecho a una prueba práctica gratuita MTA de GMetrix
(por un valor de 30 $). Vaya a www.gmetrix.com/mtatests y use el siguiente código de
validación para canjear la prueba gratuita: MTA98-364-069439B3D150.
El sistema de administración de habilidades GMetrix Skills Management System ofrece
todo lo necesario para la práctica de la certificación Microsoft Technology Associate (MTA).
Información general de las características de la prueba
• Pruebas prácticas que se asignan a los objetivos del examen de Microsoft Technology
Associate (MTA)
• Pruebas prácticas MTA de GMetrix que simulan el entorno real de pruebas MTA
• Más de 50 preguntas por prueba que abarcan todos los objetivos
• Progreso a ritmo propio, guardar la prueba para reanudarla más tarde, permite volver
a las preguntas omitidas
• Informe de resultados detallado e imprimible que destaca aquellas áreas que requieren
una revisión adicional
Para obtener el máximo rendimiento de su preparación MTA, aproveche las ventajas de las
pruebas de práctica gratuitas MTA de GMetrix desde este momento.
Para obtener soporte técnico sobre problemas en la instalación o activación del código,
escriba un correo electrónico a support@gmetrix.com.

www.wiley.com/college/microsoft
o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá)
Reconocimientos

Revisores de los fundamentos de la tecnología MOAC MTA


Nos gustaría dar las gracias a los numerosos revisores que han leído cuidadosamente el manuscrito y han proporcionado
información muy valiosa al servicio de los materiales didácticos de calidad:

Yuke Wang, Universidad de Texas en Dallas David Koppy, Universidad de Baker


Palaniappan Vairavan, Universidad de Bellevue Sharon Moran, Centro de estudios superiores de Hillsborough
Harold “Buz” Lamson, Instituto técnico ITT Keith Hoell, Universidad de Briarcliffe y Universidad de
Colin Archibald, Centro de estudios superiores de Valencia Queens—Universidad de la Ciudad de Nueva York (CUNY)
Catherine Bradfield, Universidad en línea DeVry University Mark Hufnagel, Distrito escolar de Lee County
Online Rachelle Hall, Centro de estudios superiores de Glendale
Robert Nelson, Universidad de Blinn Scott Elliott, Christie Digital Systems, Inc.
Kalpana Viswanathan, Universidad de Bellevue Gralan Gilliam, Kaplan
Bob Becker, Universidad de Vatterott Steve Strom, Centro de estudios superiores de Butler
Carol Torkko, Universidad de Bellevue John Crowley, Centro de estudios superiores del condado
Bharat Kandel, Escuela universitaria Missouri Tech de Bucks
Linda Cohen, Centro de estudios técnicos superiores Margaret Leary, Centro de estudios superiores del norte
de Forsyth de Virginia
Candice Lambert, Centros tecnológicos Metro Sue Miner, Centro de estudios superiores de Lehigh Carbon
Susan Mahon, Universidad de Collin Gary Rollinson, Universidad de Cabrillo
Mark Aruda, Centro de estudios superiores de Hillsborough Al Kelly, Universidad de tecnología avanzada
Claude Russo, Centro de estudios superiores de Brevard Katherine James, Universidad de Seneca

www.wiley.com/college/microsoft
 |  o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá)
Contenido breve

 1 Comprender los conceptos básicos de bases de datos 1

 2 Crear objetos de base de datos 20

 3 Manipular datos 43

 4 Comprender el almacenamiento de datos 61

 5 Administrar una base de datos 84

Apéndice A 110
Índice 111

www.wiley.com/college/microsoft
o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá) | 
Contenido

L 1 Comprender los conceptos L 3 Manipular datos 43


básicos de bases de datos 1
Matriz de dominio de objetivos 43
Matriz de dominio de objetivos 1 Términos clave 43
Términos clave 1 U  44
C  2 Combinación de condiciones 45
Comprender las bases de datos planas 3 Uso de la cláusula BETWEEN 46
Comprender las bases de datos jerárquicas 3 Uso de la cláusula NOT 47
Comprender las bases de datos relacionales 4 Uso de la cláusula UNION 47
Comprender los fundamentos de las bases de datos 5 Uso de las cláusulas EXCEPT e INTERSECT 48
Comprender los conceptos de bases de datos relacionales 7 Uso de la cláusula JOIN 48
Uso de la interfaz de SQL Server Management Studio 9 Uso de consultas para insertar datos 51
Comprender el lenguaje de manipulación de datos Insertar datos 52
(DML) 12 Actualizar datos y bases de datos 54
Comprender el lenguaje de definición de datos Uso de la instrucción UPDATE 54
(DDL) 12 E  55
Uso de las instrucciones de DDL 13 Uso de la instrucción DELETE 55
Resumen de conocimientos 16 Truncar una tabla con TRUNCATE TABLE 56
Eliminar una tabla con DROP TABLE 56
E  17
Uso de la integridad referencial 56
E  19
Resumen de conocimientos 57
E  19
E  57
E  59
L 2 Crear objetos de base E  59
de datos 20
Matriz de dominio de objetivos 20
L 4 Comprender el
Términos clave 20
almacenamiento
D  20
de datos 61
Uso de tipos de datos integrados 21
Uso de tipos de datos numéricos exactos 24 Matriz de dominio de objetivos 61
Uso de tipos de datos numéricos aproximados 25 Términos clave 61
C 29 N z  62
C  33 Comprender la normalización 62
Comprender la primera forma normal 62
C  35 Comprender la segunda forma normal 63
Comprender las inyecciones de código SQL 38
Comprender la tercera forma normal 64
Resumen de conocimientos 38 Comprender la cuarta forma normal 66
E  39 Comprender la quinta forma normal 66
E  41 Comprender las claves principales, externas
E  41  67

www.wiley.com/college/microsoft
o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá) | 
xxii | Contenido

Comprender las claves principales 70 Comprender la autenticación de SQL 90


Comprender las claves externas 70 Comprender los roles de servidor de bases de datos 91
Comprender las claves principales compuestas 74 Conceder acceso a una base de datos 92
C í  74 Comprender los roles de base de datos fijos 94
Comprender los índices agrupados 75 Comprender los permisos de objeto 95
Comprender los índices no agrupados 76 Administrar roles 98
Crear una tabla no agrupada 76 Comprender las cadenas de propiedad 99
Revisar un modelo de seguridad de ejemplo 100
Resumen de conocimientos 80
Realizar copias de seguridad y restaurar bases
E  80
 101
E  82 Comprender los modelos de recuperación 101
E  82 Comprender las copias de seguridad de bases de datos 101
Comprender los dispositivos de copia de seguridad 103
Comprender la restauración de bases de datos 103
L 5 Administrar una base de
datos 84 Resumen de conocimientos 106
E  107
Matriz de dominio de objetivos 84 E  108
Términos clave 84 E  109
A  85
Apéndice A 110
Comprender la seguridad en el nivel de servidor 86
Comprender la seguridad en el nivel de base de datos 86 Índice 111
Comprender la seguridad de Windows 87

www.wiley.com/college/microsoft
o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá)
Comprender los LECCIÓN 1
conceptos básicos
de las bases 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 Número de objetivo del examen MTA

Comprender los conceptos Comprender cómo se almacenan 1.1


de base de datos datos en tablas.
Comprender las bases Comprender los conceptos 1.2
de datos relacionales de bases de datos relacionales.
Comprender el lenguaje Comprender el lenguaje de 1.3
de manipulación de datos manipulación de datos (DML).
Comprender el lenguaje Comprender el lenguaje de 1.4
de definición de datos (DDL) definición de datos (DDL).

TÉRMINOS CLAVE
restricciones índice
Lenguaje de definición de datos (DDL) base de datos relacional
Lenguaje de manipulación de datos (DML) SQLCMD
base de datos (bd) SQL Server Management Studio (SSMS)
sistemas de administración de bases de datos (DBMS) tabla
servidor de bases de datos Transact-SQL
base de datos plana XQuery
base de datos jerárquica

Imagine que es un contable con poca experiencia, recién contratado en una empresa
de contabilidad de prestigio. Le acaban de encargar que recopile la previsión financiera
para uno de los mayores clientes de la compañía, con un plazo de entrega de tres
semanas. Uno de los socios considera que la compañía no está recibiendo todos
los datos financieros necesarios para usar los métodos existentes de recuperación de
información. En la actualidad, la compañía usa hojas de cálculo 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 cálculo del cliente en cuestión, usted se da cuenta
rápidamente de que si no dispone de una mejor manera de recopilar la información
necesaria, no será capaz de completar el proyecto en el tiempo asignado.

1
2 | Lección 1

Comprender los conceptos de base de datos

Antes de empezar a crear tablas y otros elementos de una base de datos, primero
CONCLUSIÓN
debe comprender qué es una base de datos y lo valiosa que puede ser esta herramienta.
Las ventajas de elegir el tipo de base de datos correcto se pondrán de manifiesto cuando
la base de datos se use en la compañía.

Una base de datos (bd) es un conjunto organizado de datos que normalmente se almacenan
en formato electrónico. Permite escribir, organizar y recuperar datos rápidamente. Las bases
de datos tradicionales se organizan por campos, registros y archivos.
Para comprender mejor qué es una base de datos, la compararemos a un directorio telefónico.
Si tiene un directorio telefónico guardado en disco, el directorio sería el archivo. En el
directorio telefónico, tendría una lista de registros, cada uno de los cuales con un nombre,
una dirección y un número de teléfono. A su vez, cada una de estas piezas individuales de
información (nombre, dirección, número de teléfono) constituiría 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.
Más bien, para recuperar los datos de una base de datos, hay que ejecutar una consulta de
base de datos, que es una petición a la base de datos que devuelve información de esta.
En otras palabras, una consulta se usa para solicitar información a una base de datos.
Si una base de datos contiene cientos de miles de registros con muchos campos por
registro, incluso un equipo rápido puede tardar mucho tiempo en realizar una búsqueda en
una tabla y recuperar los datos solicitados. Por esta razón, viene bien un índice de base de
datos. Un índice es una estructura de datos que mejora la velocidad de las operaciones de
recuperación de datos en una tabla de base de datos. La desventaja de los índices es que
hay que crearlos y actualizarlos, 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
forma que son accesibles a múltiples usuarios y proporcionan un alto nivel de rendimiento.
Un servidor de bases de datos muy popular es Microsoft SQL Server. Los servidores de
bases de datos como SQL Server en realidad no albergan programas gráficos, aplicaciones
de procesamiento de textos o cualquier otro tipo de aplicación. En su lugar, estos servidores
están 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. También es importante señalar que
estos servidores no actúan como estaciones de trabajo; por lo general, están montados
en bastidores situados en un centro de datos central y solo se puede tener acceso a ellos
a través 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 extensión .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 extensión .ndf, en discos duros físicos independientes. El tercer tipo de archivo que
usa SQL Server es un archivo de registro de transacciones. Los archivos de registro
de transacciones usan la extensión .ldf y no contienen objetos como tablas o vistas.
Comprender los conceptos básicos de las bases de datos | 3

La mayoría de los usuarios no tienen acceso a una base de datos directamente. En su lugar,
usan un sistema de administración de bases de datos (DBMS) para tener acceso a la base de
datos de forma indirecta. Un sistema de administración 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 decisión adecuada cuando desarrolle sus propias tablas de base de datos:
• Bases de datos planas
• Bases de datos jerárquicas
• Bases de datos relacionales
Cada tipo de base de datos tiene sus propias características importantes de diseño.

Comprender las bases de datos planas

Las bases de datos planas son de diseño sencillo. Son las que más se usan en los
formatos de texto sin formato. Debido a que su objetivo es mantener un registro
por línea, hacen que el acceso, el rendimiento y las consultas sean muy rápidos.
Un ejemplo de este tipo de base de datos sería 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 número de identificación de un producto) y cada fila
puede considerarse como un registro (como la información de un producto o persona).
A continuación, damos un ejemplo de una base de datos plana sencilla en la que una
compañía de suministros ha hecho coincidir cada cliente con los pedidos que ese cliente
realiza habitualmente, de forma que la recuperación y reordenación resulten más sencillas:
id customer order
1 allen notebook
CERTIFICACIÓN DISPONIBLE
¿Cómo se organizan las 2 smith paper
tablas en una base de datos? 3 dennis pens
1.1
4 alex ink cartrudges
5 sloan printer

Comprender las bases de datos jerárquicas

Una base de datos jerárquica 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 jerárquica principal/secundaria.


Esta base de datos se aplica a un departamento de cuatro empleados para el que la compañía
acaba de comprar nuevos equipos. Observe que una tabla contiene la información 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 están 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 múltiples tablas secundarias y cada tabla secundaria puede a su vez tener tablas
secundarias propias; sin embargo, ninguna tabla secundaria tiene más de una tabla primaria.
4 | Lección 1

Tabla 1-1 Tabla principal


Base de datos jerárquica
que muestra tablas
principales y secundarias EmpNum FirstName LastName DeptNum
100 Paul Baker 101
101 Jane Smith 101
102 Jim Tate 101
103 Ed Rosen 102

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 información de un empleado, incluido el número del empleado (EmpNum). La
tabla secundaria contiene datos de los equipos informáticos y la columna EmpNum vincula
cada registro con la tabla primaria. Es importante señalar que cada pieza del equipo se debe
incluir por separado. Como se está usando una base de datos jerárquica, se pueden asignar
varios dispositivos de equipo a cada empleado.

Comprender las bases de datos relacionales

CERTIFICACIÓN DISPONIBLE El último tipo de base de datos, que es el más importante, es la base de datos
¿En qué se diferencian las relacional. Una base de datos relacional es similar a una base de datos jerárquica
bases de datos relacionales de en la que los datos se almacenan en tablas y cualquier nueva información se
las bases de datos planas y las
agrega automáticamente a la tabla sin necesidad de reorganizar la propia tabla.
bases de datos jerárquicas?
Sin embargo, a diferencia de las bases de datos jerárquicas, una tabla de una base
1.2
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 compañía y la segunda tabla principal
enumera los modelos de los productos que ha vendido la compañía. 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 básicos de las 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 Model Costs Color


100 Paul Baker 101 2200MX $75000 Red
101 Jane Smith 101 42CRS $55000 Gray
102 Jim Tate 101’ 4232DR $60000 Red
103 Ed Rosen 102 2201MX $80000 Blue

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 cálculo que
contiene filas y columnas. Sin embargo, a diferencia de una hoja de cálculo, una
base de datos permite almacenar miles de filas de datos y después tener acceso a
la información más rápidamente que mediante la lectura de una hoja de cálculo.

Una hoja de cálculo es a menudo el punto de partida para crear una base de datos. Con
una hoja de cálculo, es fácil crear títulos y comenzar a escribir los datos. Agregar, eliminar
y reordenar los títulos, así como darles formato es sencillo. Por otra parte, los datos se
pueden ordenar fácilmente en uno o más títulos. También es fácil insertar, eliminar y filtrar
las filas que coinciden con uno o más modelos de un título.
Muchas bases de datos acumularán miles de filas de datos. Según sus necesidades, puede
que desee crear tablas adicionales que contengan parte de esta información. En una hoja
de cálculo, esto sería similar a agregar hojas de cálculo adicionales.
Sin embargo, las hojas de cálculo están diseñadas para contener un número limitado de
filas por hoja. Por otra parte, cuando se abre una hoja de cálculo, 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 cálculo empiezan a disminuir. Es a partir de este punto
cuando cobra sentido recurrir una base de datos.
Esta comparación resalta las tres características fundamentales de las bases de datos:
• Están diseñadas para poder almacenar miles de millones de filas de datos.
• Su límite es el espacio en disco duro que se encuentra disponible en el equipo.
• Están optimizadas para poder usar toda la memoria disponible de un equipo,
mejorando así el rendimiento.
6 | Lección 1

COMPARACIÓN DE HOJAS DE CÁLCULO CON TABLAS DE BASES DE DATOS


Como probablemente ya sabe, una hoja de cálculo puede contener varias hojas, cada una
de las cuales almacena la información agrupada de forma lógica en un formato tabular.
Una hoja es comparable a una tabla de base de datos y los títulos que contiene se pueden
comparar con las columnas o campos de una tabla de base de datos. En una hoja de
cálculo 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 cálculo
con varias hojas

Una columna de hoja de cálculo 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 diseñar para permitir o no valores nulos en una columna.

COMPRENDER LOS VALORES CALCULADOS


En una hoja de cálculo, se pueden usar fórmulas para calcular los valores a partir de otra
información 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 realización de algún tipo de
cálculo o fórmula en un valor de entrada especificado. Las bases de datos también 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 aplicación que está teniendo
acceso a la base de datos.

Figura 1-2
Hoja de cálculo con
valores calculados
Comprender los conceptos básicos de las bases de datos | 7

Comprender los conceptos de bases de datos relacionales

Antes de diseñar la primera base de datos relacional, debe comprender los elementos
que forman este tipo de base de datos y la terminología que se usa para describirlos.

TOME NOTA
* Una base de datos relacional ayuda a organizar todos los datos que provienen de las
Para comprender los
modelos de base de datos
diversas filas y columnas de cada tabla, como se muestra en la Figura 1-3. Cada columna
relacionales, piense en corresponde a un tipo de información específico que se desea almacenar en la base de
las formas en que una datos. Tal como ve en la figura, cada fila corresponde a un registro. Recuerde, una instancia
tabla se puede relacionar de cada columna y cada tabla puede estar relacionada con una o más tablas.
con una o más tablas.

Figura 1-3
Tabla de base de datos
básica

Un modelo de base de datos relacional organizaría los datos que aparecen en la Figura 1-3
en una tabla de base de datos que contiene filas y columnas, y cada columna correspondería
al atributo o al tipo de información que se desea almacenar. A su vez, cada fila correspondería
a un registro o una instancia de cada columna.

INCLUIR DE ELEMENTOS DEL LENGUAJE


Los objetos de bases de datos están divididos intrínsecamente en dos grandes categorías:
almacenamiento y programación. Una tabla está estructurada por columnas y filas, y
después cada columna almacena los datos clasificados como un tipo de datos. En la
Figura 1-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
lección 2.
8 | Lección 1

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

Las bases de datos avanzadas, como SQL Server, analizan periódicamente consultas
TOME NOTA
* y crean índices, según 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 válidos no se incluyen. Por ejemplo, si hay que escribir
la edad de una persona, los datos que se escriban deben ser un número positivo; la edad
de una persona no puede ser un número negativo. Con SQL Server 2008 están disponibles
una serie de restricciones, incluidas las siguientes:
• Una restricción única permite al administrador de bases de datos identificar
específicamente qué columna no debería contener valores duplicados.
• Una restricción de comprobación permite al administrador limitar los tipos
de datos que un usuario puede insertar en la base de datos.
• Se usa una restricción predeterminada para insertar un valor predeterminado en una
columna. Si no se especifica ningún otro valor, se agregará el valor predeterminado
a todos los registros nuevos.
• Una restricción no nula asegura que se incluyan datos en una celda. En otras palabras,
la celda no se puede dejar en blanco. También indica que no se puede incluir un
nuevo registro o actualizar un registro sin agregar un valor a dicho campo.
• La restricción 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, además, cada
tabla puede tener únicamente una clave principal.
• Una restricción de clave externa en una tabla apunta a una clave principal en otra tabla.
Comprender los conceptos básicos de las bases de datos | 9

Para consultar un ejemplo de restricción de bases de datos, vea la Figura 1-5.

Figura 1-5
Restricción de base de datos

Las columnas marcadas como claves externas pueden contener valores nulos. Esto no
TOME NOTA
* es una práctica estándar deseable, sin embargo, puede que no se puedan comprobar las
Una clave externa también
se conoce como una restricciones si una clave externa se compone de dos o más columnas y contiene valores
autoreferencia. nulos. Esto indica que la integridad de los datos no se puede garantizar.
También es posible que una restricción 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 disposición se conoce como autocombinación.
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 también una persona almacenada en la tabla
Generations, por lo que puede crear una relación 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, también se instala SQL Server Management Studio
(SSMS), que es la herramienta principal para administrar el servidor y sus bases de
datos mediante una interfaz gráfica.

La característica 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 Figura 1-6). SSMS también 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 | Lección 1

Figura 1-6
SQL Server Management
Studio

Además, SSMS incluye el Analizador de consultas (vea la Figura 1-7), que proporciona
una interfaz basada en GUI (interfaz gráfica de usuario) para escribir y ejecutar consultas.
El Analizador de consultas es compatible con:
• XQuery. Lenguaje de programación funcional y de consultas diseñado
para realizar consultas en colecciones de datos XML.

Figura 1-7
Analizador de consultas
Comprender los conceptos básicos de las bases de datos | 11

• SQLCMD. Aplicación de línea de comandos que se incluye con Microsoft


SQL Server y expone las características de administración de SQL Server. Permite
escribir y ejecutar consultas SQL desde el símbolo del sistema. También actúa
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 implementación de bases de datos.
• Transact-SQL. Medio principal de programación y administración 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 acción, se están ejecutando comandos Transact-SQL.
Observe que debe tener instalado SQL Server 2008 en el sistema antes de pasar
a la siguiente sección.
CARG UE LA I NTER FAZ DE SSMS
PREPÁRESE. Antes de comenzar estos pasos, asegúrese de iniciar SSMS.
1. Haga clic en el botón Inicio y, a continuación, haga clic en Microsoft SQL Server 2008
para expandir la selección de programas.
2. Haga clic en SQL Server Management Studio. Se abrirá Management Studio y aparecerá
el cuadro de diálogo Conectar al servidor.
3. Cambie la información de conexión al servidor (si es necesario) y haga clic en Conectar.
Después de haber configurado correctamente el servidor, aparecerá la interfaz de SQL
Server Management Studio.
SOLUCIÓN DE PROBLEMAS
Es posible que su equipo no tenga instalada la interfaz de SSMS como parte del programa SQL Server 2008.
Si no encuentra la herramienta Management Studio en Archivos de programa, es posible que tenga que
agregarla como una actualización de la instalación del servidor. Para ello, inserte el CD de instalación
y haga clic en el botón Avanzar en la ventana Componentes para instalar, cuando aparezca.

También puede instalar SQL Server Management Studio en cualquier sistema operativo
TOME NOTA
* de escritorio de Windows de manera que pueda conectarse de forma remota a un servidor
SQL y administrarlo.

PAUSA. Deje la aplicación SQL Server Management Studio abierta durante el resto
de la lección.

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 UN A BASE DE DATOS MEDIAN TE L A INT ERFAZ DE SSM S


PREPÁRESE. 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. Asegúrese de que el motor de base de datos esté seleccionado y, a continuación,
haga clic en el botón Conectar.
3. Haga clic en el signo más (+) que se encuentra junto a Bases de datos para que se expanda.
4. Haga clic con el botón derecho del mouse en Bases de datos y después seleccione
Nuevas bases de datos en el menú que aparece.
5. En el campo de nombre Base de datos, escriba el nombre de la base de datos
que desea crear. A continuación, haga clic en el botón Aceptar.
12 | Lección 1

EL IM INAR UN A BASE DE DATOS M EDIAN TE L A INT ERFAZ DE SSM S


PREPÁRESE. De vez en cuando, es posible que desee quitar las bases de datos que ya no se
usan. Para realizar esta acción 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. Asegúrese de que el motor de base de datos está seleccionado y, a continuación,
haga clic en el botón Conectar.
3. Haga clic en el signo más (+) que se encuentra junto a Bases de datos para que se expanda.
4. Haga clic con el botón derecho del mouse en el nombre de la base de datos que desea
eliminar y, a continuación, seleccione Eliminar en el menú que aparece.
5. Seleccione Cerrar conexiones existentes y después haga clic en el botón Aceptar.
Es importante tener en cuenta que SQL Server tiene una extensa área de ayuda. Además,
al instalar SQL Server, tiene la opción de instalar los libros en pantalla y tutoriales del
servidor. Por lo tanto, si desea encontrar información sobre una determinada opción o
comando, debe buscar en estos recursos. Por supuesto, si no encuentra lo que busca,
no dude en realizar la búsqueda en Internet.

Comprender el lenguaje de manipulación de datos (DML)

Al crear bases de datos, es importante comprender lo que los elementos del lenguaje
CONCLUSIÓN pueden hacer dentro de la estructura de la base de datos.

CERTIFICACIÓN DISPONIBLE
El lenguaje de manipulación de datos (DML) es el elemento del lenguaje que le permite
¿Qué comandos comunes usar las instrucciones principales INSERT, UPDATE, DELETE y MERGE para manipular datos en
que se usan con SQL son cualquier tabla de SQL Server. Las instrucciones principales de DML incluyen lo siguiente:
comandos de DML? • SELECT: recupera filas de la base de datos y permite seleccionar una o varias filas
1.3 o columnas de una o varias tablas de SQL Server.
• INSERT: agrega una o más filas nuevas a una tabla o vista de SQL Server.
• UPDATE: cambia los datos existentes en una o más 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 unión 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 erróneos.
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
revertirán inmediatamente y no se insertará ningún registro en la tabla. De forma similar, si
una instrucción DELETE infringe una restricción 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 sección se muestra la sintaxis correcta para trabajar con restricciones.

Comprender el lenguaje de definición de datos (DDL)

Las instrucciones del lenguaje de definición de datos (DDL) forman parte de la sección
CONCLUSIÓN Transact-SQL de SQL Server y se pueden usar para crear objetos de base de datos como
tablas y vistas.
Comprender los conceptos básicos de las bases de datos | 13

CERTIFICACIÓN DISPONIBLE
El lenguaje de definición de datos (DDL) es un subconjunto del lenguaje Transact-SQL
¿Qué comandos comunes que se ocupa de la creación de objetos de base de datos como tablas, restricciones y
de SQL son comandos procedimientos almacenados. La interfaz que se usa para crear estas instrucciones de
de DDL? DDL subyacentes es la interfaz de usuario de SSMS, como se muestra en la Figura 1-8.
1.4
Uso de las instrucciones de DDL
Figura 1-8
Interfaz de usuario de
SQL Server Management
Studio

La interfaz de usuario de SSMS permite diseñar visualmente instrucciones de DDL.

Una tarea de instrucción de script DDL siempre se puede completar a través 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 través 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.
Aunque la mayoría de las instrucciones de DDL se pueden ejecutar mediante la interfaz
gráfica de SSMS, conseguirá más habilidad, flexibilidad y control usando instrucciones
de DDL propias. También puede usar instrucciones de DDL en tareas o actividades
de script que se pueden programar o ejecutar, según 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.
CERTIFICACIÓN DISPONIBLE
¿Qué comando de DDL
• DROP: quita un objeto de la base de datos.
usaría para cambiar • TRUNCATE: quita filas de una tabla y libera el espacio que usan las filas.
el contenido de la base • DELETE: quita filas de una tabla pero no libera el espacio que usan las filas que se han quitado.
de datos y cuál usaría
para crear una tabla? A continuación, se proporciona una explicación más detallada y un ejemplo de cada una
1.4 de estas instrucciones DDL principales.
14 | Lección 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 instantánea
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 instrucción 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 lección 2).

ALTER
La instrucción 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 después desea establecer los precios en esta columna, puede usar la instrucción
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 básicos de las bases de datos | 15

También puede usar ALTER para cambiar la definición de una vista, procedimiento
almacenado, desencadenador o función. 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

—— ———————— ———————— ————————

—— 1 Red 13.50

—— 2 Blue 13.50

—— 3 Orange 10.00

—— 4 Black 12.00

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

DROP
La instrucción DROP en realidad quita un objeto de una base de datos, pero si los demás
objetos dependen del objeto que se está intentando quitar, la instrucción será incorrecta
y se generará un error. En el siguiente ejemplo se muestra cómo se puede usar DROP para
eliminar datos de la tabla Shirt, después los quita de la vista Size y finalmente quita la
tabla Shirt de la base de datos. En este ejemplo, también tratamos de eliminar la tabla
Person.Contact pero, como habrá observado, esta operación 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, Línea 1

—— No se puede eliminar el objeto ‘Person.Contact’ porque la instrucción 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 | Lección 1

TRUNCATE Y DELETE
Otras dos instrucciones de DDL con las que debe familiarizarse son TRUNCATE y DELETE.
La instrucción DELETE se usa para eliminar filas de una tabla, pero no libera el espacio
que contiene la tabla. En comparación, el comando TRUNCATE de SQL se usa para
eliminar filas de una tabla y liberar el espacio que contiene la tabla.
Por tanto, para eliminar todas las filas de una tabla de nombre User, debe escribir
TOME NOTA
* el siguiente comando:
Para eliminar datos de las
tablas en una base de datos DELETE FROM User;
grande, use TRUNCATE: De igual forma, para eliminar un empleado con el número de identificación 200 de la tabla
es más eficaz. Use DELETE
User, debe escribir el siguiente comando:
en bases de datos más
pequeñas. 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 están, en realidad, en las tablas de la base de datos, debe saber las tablas
que son más ú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 fáciles 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 lección, ha aprendido lo siguiente:


•  Una base de datos (bd) es un conjunto organizado de datos que normalmente se almacenan
en formato electrónico. Permite escribir, organizar y recuperar datos rápidamente.
•  Microsoft SQL Server usa tres tipos de archivos para almacenar bases de datos. Los archivos de
datos primarios, con la extensión .mdf, son los primeros archivos creados en una base de datos
y pueden 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 extensión .ndf, en discos duros físicos
independientes para que la base de datos tenga más 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 extensión .ldf y no contienen ningún 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 información a la base de datos y devuelve datos.
Comprender los conceptos básicos de las bases de datos | 17

•  Un índice de base de datos es una estructura de datos que mejora la velocidad de las operaciones
de recuperación de datos en una tabla de base de datos.
•  La mayoría de los usuarios no tienen acceso a las bases de datos directamente. En su lugar, usan
un sistema de administración de bases de datos (DBMS) para tener acceso a ellas de forma indirecta.
•  Una base de datos plana es de diseño sencillo. Estas bases de datos se usan normalmente
en formatos de texto sin formato y su propósito es contener un registro por línea, agilizando
el acceso y las consultas.
•  Las tablas que se usan para almacenar datos son objetos bidimensionales que consisten en filas
y columnas.
•  Una base de datos jerárquica 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 jerárquica en la que los datos se
almacenan en tablas y cualquier nueva información se agrega automáticamente en la tabla, sin
necesidad de reorganizar la propia tabla. Sin embargo, a diferencia de las tablas en una base de
datos jerárquica, 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 múltiples usuarios y proporcionan un alto nivel de rendimiento. Un servidor
de bases de datos 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 válidos no se incluyen.
•  SQL Server Management Studio (SSMS) es la primera herramienta que administra un servidor
y sus bases de datos mediante una interfaz gráfica.
•  El lenguaje de manipulación 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 definición de datos (DDL) es un subconjunto del lenguaje Transact-SQL que se
ocupa de la creación de objetos de base de datos como tablas, restricciones y procedimientos
almacenados.

 E
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 están divididos en dos categorías:
y .
2. Las tablas creadas mediante la instrucción se usan para almacenar datos.
3. Las restricciones pueden definir relaciones de identidad entre tablas de forma
continua. También se conocen como restricciones.
4. Para poder usar el objeto views para ver un conjunto de datos, debe usar la instrucción
de Transact-SQL para mostrar datos de las tablas adyacentes.
5. DDL influye en , mientras que influye en los datos
reales almacenados en tablas.
6. El servidor de bases de datos de Microsoft que hospeda bases de datos relacionales
se llama .
7. Las instrucciones de DDL principales son , ,
, y .
8. Las instrucciones de DML principales son , ,
, y .
9. Las vistas del sistema pertenecen al .
10. La restricción de clave externa es un identificador .
18 | Lección 1

Varias opciones

Rodee con un círculo la letra correspondiente a la mejor respuesta.


1. ¿Cuál de las siguientes no es una instrucción de DDL?
a. CREATE
b. MERGE
c. ALTER
d. DROP
2. ¿Cuál de las siguientes no es una restricción de columna?
a. Default
b. Check
c. Range
d. Unique
3. ¿Cuáles son las limitaciones o reglas que se incluyen en un campo o columna
para asegurar que los datos que no se consideran válidos no se incluyen?
a. Clave principal
b. Índice
c. Clave externa
d. Restricción
4. ¿Cuál de las siguientes no es una instrucción de DML?
a. REMOVE
b. INSERT
c. DELETE
d. TRUNCATE
5. Seleccione todas las afirmaciones siguientes que son verdaderas:
a. Los índices solo se deberían crear en las columnas en las que se busca con
frecuencia.
b. Se produce una autoreferencia cuando una restricción de clave externa hace
referencia a una columna en la misma tabla.
c. Una única instrucción INSERT se puede usar para agregar filas a múltiples tablas.
d. Se pueden agregar múltiples claves principales a una tabla.
6. ¿Cuál de las siguientes acciones no admite ALTER?
a. Agregar una nueva columna a una tabla.
b. Eliminar múltiples columnas de una tabla existente.
c. Modificar el tipo de datos de una columna existente.
d. Cambiar la restricción de identidad de una columna existente.
7. ¿Cuál de las siguientes no es una restricción?
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. ¿Cuál 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 básicos de las bases de datos | 19

10. ¿Qué instrucción SQL se usa para actualizar datos en una base de datos?
a. SAVE
b. MODIFY
c. SAVE AS
d. UPDATE

Evaluación de competencias
Escenario 1-1: Tener en cuenta el diseño de base de datos
Le acaban de contratar como administrador de bases de datos para una compañía
internacional que es una sociedad de cartera para muchas otras compañías. Su primera
tarea consiste en diseñar una nueva infraestructura de base de datos para la compañía. 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 cómo es más probable que aparezca cada base de datos.

Escenario 1-2: Diseñar 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 automóviles. Necesita almacenar información sobre los empleados, el
inventario y las ventas totales de la compañía. También debe tener en cuenta el hecho de
que cada vendedor recibe un porcentaje diferente de comisión por sus ventas. ¿Qué tipo
de tablas y columnas creará en la base de datos relacional y cómo vinculará las tablas?

Evaluación 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 instrucción CREATE para poder crear una tabla. ¿Qué pasos seguiría
para encontrar esa información en el sistema de ayuda de SQL Server 2008?

Escenario 1-4: Crear bases de datos mediante la interfaz gráfica de SSMS


Su compañía, 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 gráfica de SSMS. ¿Qué pasos completaría para crear esta base
de datos?
2 LECCIÓN
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 Número 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 cómo crearlas.
Crear vistas Crear vistas. 2.3
Crear procedimientos almacenados Crear procedimientos 2.4
almacenados y funciones.

TÉRMINOS CLAVE
tipo de datos tablas
inyección de código SQL vistas
procedimientos almacenados

Suponga que es un diseñador de bases de datos de una gran compañía de importación


exportación. Su superior le ha pedido ayuda para actualizar algunas formas de hacer
negocios de la compañía. Le explica que la compañía ya no atenderá los pedidos que
se realicen vía fax; en cambio, esas solicitudes de pedidos se recibirán a través de un
servidor web o del correo electrónico. Espera que usted diseñe una base de datos
para almacenar y procesar estos pedidos electrónicos.

Definir tipos de datos

En esta sección, aprenderá los distintos tipos de datos, por qué son importantes y
cómo afectan a las necesidades de almacenamiento. Al examinar los tipos de datos,
es necesario comprender que cada tipo está diseñado para realizar una función dentro
de una tabla, así como que ciertos tipos funcionarán mejor en columnas, variables
CONCLUSIÓN locales, expresiones o parámetros. Además, al elegir un tipo de datos para satisfacer sus
necesidades, debe asegurarse de que cualquiera que sea el tipo elegido proporcionará
el tipo más 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 más
adecuado para el módulo de aplicación en el que se está trabajando actualmente.

20
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 número de bytes que ocupa cada tipo de datos. Por ejemplo, varios
tipos de datos controlan únicamente números enteros, lo que los convierte en idóneos para
conteo o para identificación. Otros tipos de datos permiten números decimales y, por lo
tanto, son muy útiles cuando se almacenan valores relacionados con dinero. Sin embargo,
hay tipos de datos que están diseñados 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, números binarios que constan de varios 0
y 1, e imágenes. Como regla general, si se tienen dos tipos de datos similares que solo
difieren en el número de bytes que usa cada uno, uno de los tipos de datos tendrá mayor
intervalo de valores u ofrece mayor precisión, 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 mayoría de las bases de datos que
se crean o se usan emplean únicamente estos tipos de datos.

Los tipos de datos integrados de Microsoft SQL Server 2008 se organizan en las siguientes
categorías generales:
• Números exactos
• Números aproximados
• Fecha y hora
• Cadenas de caracteres
• Cadenas de caracteres Unicode
• Cadenas binarias
• Otros tipos de datos
CERTIFICACIÓN DISPONIBLE • Tipos de datos CLR
¿Qué tipo de datos usaría
para registrar el costo
• Tipos de datos espaciales
de un automóvil? ¿Qué Generalmente usará algunos de estos tipos de datos integrados, pero empleará otros de
tipo usaría para contar el forma más esporádica. De cualquier forma, es importante comprender estos tipos de datos
número de autos que hay
y cómo se usan en las bases de datos. En las tablas 2-1 y 1-2 se muestran los tipos de datos
en existencias?
de uso más frecuente. Tenga en cuenta que en la Tabla 2-2, el asterisco (*) indica las
2.1
adiciones más recientes de tipos de datos de SQL Server 2008.

Tabla 2-1
Tipos de datos que se Tipo de Datos Explicación
usan con más frecuencia
Money Este tipo de datos numéricos se usa cuando se desea involucrar dinero o
(numérico) 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.
Básicamente, la diferencia entre un tipo de datos numérico y un tipo de
datos flotante radica en si se usa el tipo de datos para números aproximados
o de precisión fija. Un tipo de datos money o numérico es un tipo de datos
de precisión fija, puesto que se debe representar con precisión 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 cuál se usa
para los datos almacenados a la hora de decidir el subtipo que se va a usar.
En concreto, si va a almacenar valores de fecha entre el 1 de enero de 1753
( )
22 | Lección 2

T 2-1 ( )
Tipo de Datos Explicación
y el 31 de diciembre de 9999, con una precisión 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 precisión de solo 1 minuto, entonces datetime2 es el tipo
de datos que se debe usar. La segunda 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 numérico entero (int) se usa para almacenar cálculos
matemáticos y se emplea cuando no se necesita un resultado con
decimales. Ejemplos de datos enteros son los números 2 y 22.
Varchar Este tipo de datos de cadena de caracteres se usa normalmente en bases
de datos que admiten atributos en inglés. Si admite varios idiomas, en su
lugar use el tipo de datos nvarchar, puesto que ayudará a minimizar los
problemas de conversión de caracteres.
Boolean El tipo de datos booleano también se conoce como tipo de datos bit.
En este caso, si las columnas almacenan 8 bits o menos, las columnas
se almacenarán como 1 byte; si contienen de 9 a 16 bits, las columnas
se almacenarán 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 1 y falso se convierte en 0.
Float El tipo de datos numérico flotante se usa generalmente en la comunidad
científica y se considera un tipo de datos de números aproximados. Esto
significa que no todos los valores dentro del intervalo de tipo de datos
estarán representados de forma exacta. Además, según qué tipo de dato
flotante se usa, un flotante de 4 bytes admite una precisión de hasta 7
dígitos y un flotante de 8 bytes admite una precisión de hasta 15 dígitos.

Tabla 2-2
Tipos de datos

Tipo de Datos Uso o Descripción Almacenamiento


Numéricos exactos:
bit Entero con valor de 1 o de 0. (Las columnas de 9 a 16 bits se almacenan como 1 byte
2 bytes y el tamaño de almacenamiento continúa aumentando a medida que
aumenta el número de bits en una columna).
tinyint Dato entero de 0 a 255. 1 byte
smallint Dato entero de –2^15 (–32.768) a 2^15–1 (32.767). 2 bytes
int Dato entero de –2^31 (–2.147.483.648) a 2^31–1 (2.147.483.647). 4 bytes
bigint Dato entero de –2^63 (–9.223.372.036.854.775.808) a 2^63–1 8 bytes
(9.223.372.036.854.775.807).
numeric Precisión y escala fijas. Intervalo de valores válidos de –10^3811 hasta 10^38–1. Varía
decimal Precisión y escala fijas. Intervalo de valores válidos de –10^3811 hasta 10^38–1. Varía
smallmoney Valores monetarios o de moneda desde –214.748,3648 a 214.748,3647. 4 bytes
money Valores monetarios o de moneda –922.337.203.685.477,5808 8 bytes
a 922.337.203.685.477,5807.
Crear objetos de base de datos | 23

T 2-2 ( )

Tipo de Datos Uso o Descripción Almacenamiento


Numéricos aproximados:
datetime Define una fecha que se combina con una hora del día con fracciones 8 bytes
de segundo basada en un reloj de 24 horas. Intervalo: del 1 de enero de
1753 al 31 de diciembre de 9999. Precisión: redondeando a incrementos
de ,000; ,003 o ,007 segundos.
smalldatetime Define una fecha que se combina con una hora del día. El tiempo se basa 4 bytes
en un día 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). Precisión: un minuto.
date* Define una fecha. Intervalo: del 01-01-0001 al 31-12-9999. (Del 1 de enero 3 bytes
del año 1 después de Cristo al 31 de diciembre de 9999). Precisión: un día.
time* Define la hora del día. Esta hora no tiene en cuenta la diferencia de zona 5 bytes
horaria y se basa en un reloj de 24 horas. Intervalo: de 00:00:00.0000000
hasta 23:59:59.9999999. Precisión: 100 nanosegundos.
datetimeoffset* Define una fecha combinada con una hora del día que tiene en cuenta la 10 bytes
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 año 1 después de Cristo hasta el
31 de diciembre de 9999). Intervalo: de 00:00:00 hasta 23:59:59.9999999.
Precisión: 100 nanosegundos.
datetime2* Define una fecha que se combina con una hora del día basada en un reloj de Varía
24 horas. Intervalo: del 01-01-0001 hasta el 31-12-999 (1 de enero del año
1 después de Cristo hasta el 31 de diciembre de 9999). Intervalo: de 00:00:00
hasta 23:59:59.9999999. Precisión: 100 nanosegundos.
Cadenas de caracteres:
char Tipo de datos de caracteres de longitud fija. Varía
VARCHAR Tipo de datos de caracteres de longitud variable. Varía
text Este tipo de datos se quitará en versiones futura de SQL; por lo tanto, Varía
use varchar(max) en su lugar.
Cadenas de caracteres Unicode:
nchar Tipo de datos de caracteres de longitud fija. Varía
nvarchar Tipo de datos de caracteres de longitud variable. Varía
ntext Este tipo de datos se quitará en versiones futuras de SQL; por lo tanto, Varía
use nvarchar(max) en su lugar.
Cadenas binarias:
binary Datos binarios de longitud fija. Varía
varbinary Datos binarios de longitud variable. Varía
image Este tipo de datos se quitará en versiones futuras de SQL; por lo tanto, Varía
use varbinary(max) en su lugar.
Otros tipos de datos:
sql_variant Almacena valores de varios tipos de datos que admiten SQL Server, Varía
excepto text, ntext, image, timestamp y sql_variant.
uniqueidentifier GUID de 16 bytes. 16 bytes
(UUID)
24 | Lección 2

Recuerde que en SQL Server, cada columna, variable local, expresión y parámetro siempre
TOME NOTA
* tiene un tipo de datos relacionado que define las características de almacenamiento de los
Cada columna, variable
local, expresión y parámetro datos que se almacenan. Esto se muestra en la Tabla 2-1.
tiene siempre un tipo Ahora que ya tiene cierto conocimiento sobre la mayoría de los tipos de datos disponibles
de datos relacionados
y cada uno de los tipos en Microsoft SQL Server, tenga en cuenta que cuando dos expresiones tienen distintos
de datos es un atributo. tipos de datos, intercalación, precisión, escala o longitud, las características de los
resultados se determinan de la siguiente manera:
• Cuando dos expresiones (funciones matemáticas o funciones de comparación) 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 intercalación se refiere a un conjunto de reglas que determinan cómo se ordenan
y comparan los datos. De forma predeterminada, SQL Server tiene precedencia
de intercalación predeterminada. Si se desea invalidar la forma de almacenamiento
de los datos, se debe usar una cláusula de intercalación.
• La precisión, escala y longitud del resultado depende de la precisión del mismo en
la expresión de entrada. Dicho de otro modo, si se toman varios valores distintos y
se realiza una operación matemática en esos valores, la precisión, la escala y la longitud
se basarán en los valores en los que se están realizando las operaciones matemáticas.
Ahora analizaremos con más detalle algunos de los tipos de datos integrados más comunes
para que se familiarice aún más con la forma de usarlos.

Uso de tipos de datos numéricos exactos

Los tipos de datos numéricos exactos son los tipos de datos más comunes que SQL
Server usa para almacenar información numérica. Algunos de estos tipos de datos
permiten solo números enteros, mientras que otros permiten número decimales.

Los número 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 (número 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 expresión
original es un tipo de datos bigint. Hay que tener en cuenta que SQL Server no promueve
automáticamente 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 características:
° 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 almacenarán como 1 byte, y si tiene columnas de
9 a 16 bits, se almacenarán 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 específica, TRUE se convierte en 1 y FALSE se convierte en 0.
• decimal y numeric también son tipos de datos Transact-SQL con precisión 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

° Precisión (p) es el número total máximo de dígitos decimales que se pueden


almacenar, tanto a la izquierda como a la derecha del separador decimal.
Este valor debe ser un valor 1 como mínimo y un valor 38 como máximo.
El número de precisión predeterminado es 18.
° Escala (s) refleja el número máximo de dígitos 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 también se
ha especificado la precisión. 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
precisión de una diezmilésima de las unidades monetarias que representan.

Uso de tipos de datos numéricos aproximados

Los tipos de datos numéricos aproximados no se usan con tanta frecuencia como
otros tipos de datos de SQL Server. Sin embargo, si se necesita más precisión
(más posiciones decimales) de la que está disponible con los tipos de datos numéricos
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 numéricos de punto flotante. Esto significa que
todos los datos de punto flotante son aproximados; por tanto, no todos los valores que
están representados por un intervalo de tipo de datos aproximado se pueden expresar
con precisión.
La sintaxis de real es float(n); donde n es el número de bits que se usan para almacenar
la mantisa del número float en notación científica y, por lo tanto, dicta su precisión y el
tamaño 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 número entero
y la parte decimal de un valor, pero sin incluir marcadores de posición y exponentes.
Por ejemplo, en 3,42732, el número 3,42732 es la mantisa. Pero en 3,23×105, 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 año 1 después
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 un día determinado refleja el horario de verano.
Aunque parte de la información de la Tabla 2-3 no requiere explicación, parte de
ella sí. Por ejemplo, el formato literal de cadena predeterminado indica que, de forma
predeterminada, se almacenará la fecha con el día (dos dígitos), el mes (dos dígitos) y
el año. Puede almacenar cualquier día a partir del 1 de enero del año 1 después 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 precisión muestra que
son 10 números enteros, no se permiten números decimales. Para almacenar el campo de
fecha son necesarios 3 bytes de datos. Además, es solo exacto en un día. De esta manera,
no se pueden usar números 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á
automáticamente el 1 de enero de 1900, usando el calendario gregoriano, Por último, no
usa el horario de verano.
26 | Lección 2

Tabla 2-3
Propiedad Valor
Descripciones de Date
Sintaxis Date

Uso DECLARE @MiFecha date


CREATE TABLE Tabla1 (Columna1 date)
Formato literal de cadena DD-MM-AAAA
predeterminado (lo usan (Esto se puede usar por compatibilidad con versiones
clientes de nivel inferior) anteriores con clientes de nivel inferior)
Rango del 01-01-0001 al 31-12-9999
1 de enero, del año 1 después de Cristo, al 31 de diciembre
del año 9999 después de Cristo
Intervalo de elementos AAAA son cuatro dígitos del 0001 al 9999 que representan
un año, MM son dos dígitos del 01 al 12 que representan un
mes en un año determinado y DD son dos dígitos del 01 al 31
que, según el mes, representan un día del mes especificado
Longitud de caracteres 10 posiciones
Precisión, escala 10, 0
Tamaño de almacenamiento 3 bytes, fijos
Precisión Un día
Valor predeterminado 1900-01-01
Este valor se usa en la parte de fecha adjunta para la
transformación intrínseca de time a datetime2 o datetimeoffset
Calendario Gregoriano
Precisión de fracciones No
de segundo definidas
por el usuario
Tiene en cuenta y conserva No
la zona horaria
Tiene en cuenta el horario No
de verano

En comparación, datetime define una fecha que se combina con una hora del día expresada
en fracciones de segundo y basada en un reloj de 24 horas. Este tipo de datos tiene una
precisión de 0,00333 segundos. Si se necesita más precisión, se debe usar el tipo de
datos datetime2, con una precisión de hasta 100 nanosegundos. Pero, en el caso de que
no fuera necesario realizar el seguimiento en segundos (que, por supuesto, es menos
preciso), se puede ahorrar algo de espacio de almacenamiento empleando el tipo de
TOME NOTA
* datos smalldatetime en su lugar.
Use los tipos de datos
time, date, datetime2 El tipo de datos DateTimeOffset es similar al tipo de datos DateTime, pero también mantiene
y dateoffset en nuevos
un registro de las zonas horarias. Por ejemplo, si se tienen dos valores DateTimeOffset con
trabajos ya que adaptan al
estándar SQL y son más la misma hora universal coordinada (que es la hora del meridiano de Greenwich en la
portátiles. Todos menos mayoría de los casos), hora UTC, en distintas zonas horarias, los dos valores serán los
date proporcionan más mismos.
precisión para aplicaciones
de nanosegundos. Si se desea crear un conjunto de datos en el que la hora del día tiene en cuenta la diferencia
de zona 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 día, con la hora basada en un día
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 día basada en un reloj de 24 horas y sin tener en cuenta
la diferencia de zona horaria.

COMPRENDER LAS CONVERSIONES IMPLÍCITAS


Al trabajar con datos SQL, puede que se desee convertir valores de un tipo de datos a
otro. En la mayoría de las situaciones, estas conversiones se realizan automáticamente.
Cuando una conversión se realiza automáticamente, se conoce como conversión implícita.
Por ejemplo, si se multiplica el costo de un elemento (representado como flotante) por el
número de elementos (representado como entero), el resultado se expresará como flotante.
En la Figura 2-1, cortesía de Microsoft, se muestra un análisis en profundidad de una
conversión implícita entre tipos de datos.
Sin embargo, algunas conversiones implícitas no están permitidas. Por ejemplo, aunque
un valor DateTime se representa como flotante, puede que no se convierta implícitamente
DateTime a flotante, ya que indica que es una fecha u hora, o ambas. Si hay alguna razón
para forzar una conversión, se pueden usar las funciones Cast y Convert.
Cast y Convert ofrecen funcionalidad similar. Sin embargo, Cast cumple con los estándares
ANSI, lo que le permite importar o exportar a otros sistemas de administración de bases
de datos. Convert es específico de Transact-SQL, pero es un poco más eficaz.
La sintaxis para la función Cast es:
cast(valor-origen AS tipo-destino)

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

La sintaxis para la función Convert es:


CONVERT (tipo_datos [ (longitud) ], expresión [,estilo ])

donde puede especificar cuántos dígitos 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 | Lección 2

Figura 2-1
Tipos de conversiones
implícitas y explícitas

USO DE CADENAS DE CARACTERES


Un carácter normal usa un byte de almacenamiento por cada carácter, lo que le permite definir
uno de los 256 caracteres posibles (8 bits en un byte y 2^8 = 256), con capacidad para inglés
y algunos idiomas europeos. Un carácter Unicode usa dos bytes de almacenamiento por
carácter, 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, japonés, árabe, etcétera.
Al escribir la sintaxis de los diferentes tipos de datos, hay que tener en cuenta que también
difieren en la forma en que se expresan los literales (valor de datos fijo). Un carácter
normal literal siempre se expresa entre comillas simples. Por ejemplo:
TOME NOTA
* ‘Esta es la apariencia de una cadena de caracteres normales literales’
Cualquier tipo de datos que
no contiene el elemento Sin embargo, cuando se expresa un carácter Unicode literal, la letra N (de Nacional)
VAR (char, nchar) en el debe aparecer como prefijo de las comillas simples. Por ejemplo:
nombre es de longitud fija.
N‘Esta es la apariencia de un carácter 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 tamaño definido de la columna (y no a partir del número real
de caracteres en la propia cadena de caracteres), más un extra de dos bytes de datos para
Crear objetos de base de datos | 29

datos de desplazamiento. Por ejemplo, si se desea especificar que una cadena admite un
máximo de 25 caracteres únicamente, debería usar VARCHAR(25).
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 más rápidas;
sin embargo, el valor del uso de este tipo de datos se encuentra en la posibilidad de la
expansión de la fila, lo que lleva al movimiento de datos fuera de la página actual. Esto
significa que cualquier actualización 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.
TOME NOTA
* Sin embargo, es posible definir el tipo de datos de longitud variable con el especificador
Si n no se especifica en MAX, en vez de usar el máximo número de caracteres identificados en la cadena. Por
una definición de datos o la ejemplo, cuando una columna se define con el especificador MAX, se almacena en línea
instrucción de declaración en la fila un valor con un tamaño determinado hasta un umbral determinado (el valor
de variable, la longitud predeterminado es 8.000). A continuación, se debe especificar un valor con un tamaño
predeterminada es 1. mayor que el umbral predeterminado, ese valor se almacenará fuera de la fila y se
Si n no se especifica en la
función CAST, la longitud identificará como un objeto grande o LOB.
predeterminada es 30. Estos son los tipos de datos de caracteres que más se usan, de longitud fija o variable.
Cada uno tiene sus propias características individuales, que es necesario tener en cuenta
a la hora de decidir cuál tendrá un efecto positivo en los requisitos de almacenamiento.
Los conjuntos de datos char y varchar deben estar definidos, o asignados, dentro de la
definición de datos o pueden afectar a los límites máximos 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
TOME NOTA
* debe estar comprendido entre 1 y 8.000, haciendo que el tamaño de almacenamiento
Use nchar si el tamaño de
las entradas de datos de las sea de n bytes. El otro tipo de datos no Unicode, varchar[(n|max)], es un conjunto de
columnas va a ser similar. datos de longitud variable que puede constar de 1 a 8000 caracteres.
Use nvarchar si el tamaño
de las entradas de datos de Microsoft SQL Server admite solo dos tipos de cadenas de caracteres: normal y Unicode.
las columnas va a variar Los tipos de datos normales incluyen los identificados con CHAR y VARCHAR. Los tipos de datos
de forma considerable, Unicode se identifican con NCHAR y NVARCHAR. ¿Fácil? Sí, en el sentido de que las diferencias
en casos como archivos entre normal y Unicode son los bytes de almacenamiento que se usan en cada tipo.
binarios, archivos de
imágenes, variantes Las cadenas de caracteres Unicode nchar y nvarchar pueden ser fijas o variables, como
SQL y UUID. las cadenas de caracteres normales; sin embargo, estas cadenas usan el conjunto de
caracteres UNICODE UCS-2.

 C

En esta sección, será capaz de entender el propósito de las tablas. También explorará
CONCLUSIÓN cómo crear tablas en una base de datos usando la sintaxis ANSI SQL adecuada.

El propósito 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 lección 1, aprendió acerca de los fines de las tablas y
cómo crearlas. Vamos a revisar de forma rápida algunos de los puntos más importante
que se deben recordar a la hora de crear una tabla en una interfaz de usuario no gráfica.
Mientras, piense en el propósito de una base de datos relacional en la jerarquía de la
administración 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
información almacenada en la base de datos para obtener los datos necesarios. Una ventaja
de una base de datos sobre una serie de hojas de cálculo es que una base de datos puede
analizar los datos almacenados y la información redundante obtenidos de diversas hojas
de cálculo relacionales.
30 | Lección 2

Al igual que en la programación, al diseñar, crear y usar bases de datos, se pueden


usar fácilmente cientos de objetos, como bases de datos, tablas columnas, vistas y
procedimientos almacenados. Por lo tanto, para que la base de datos de su compañía sea
más fácil de administrar, la compañía debe establecer y usar una norma única y coherente.
Por supuesto, esto también indica que hay documentar esta norma y distribuirla a todos
los usuarios que trabajan con la base de datos.
Realmente no hay ninguna diferencia entre el uso de mayúsculas y minúsculas en una base
de datos, siempre y cuando se sea coherente. Las dos convenciones de nomenclatura más
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. También hay que evitar el uso de
espacios porque complican la nomenclatura y hacen necesario el uso de comillas. En su
lugar, use el carácter de subrayado (_) como separador de palabras o use caracteres en
mayúsculas y minúsculas mezclados.
En primer lugar, crearemos una nueva tabla con SQL Server Management Studio (SSMS)
antes de seguir adelante con el método de la sintaxis para creación de tablas.

CREAR UN A TAB LA CON SSMS


PREPÁRESE. Antes de empezar, asegúrese de iniciar SQL Server Management Studio.
Asegúrese de que haya expandido la base de datos en la que desea crear la nueva tabla y,
a continuación, siga estos pasos:
1. Haga clic con el botón derecho del mouse en la carpeta Tabla y seleccione Nueva
tabla, como se muestra en la Figura 2-2:

Figura 2-2
Crear una nueva tabla
Crear objetos de base de datos | 31

2. Use la información 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 paréntesis,
y las columnas Permitir valores null.

Figura 2-3
Nombres de columnas
y datos de identificación

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


este valor insertará la fecha actual en cada nuevo registro para ese campo específico.
Vea la Figura 2-4.

Figura 2-4
Ajuste de las propiedades
del Diseñador de tablas
32 | Lección 2

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

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

La nueva tabla aparecerá en la sección Tablas, como se representa en la Figura 2-7.


Figura 2-7
La tabla recién creada
Crear objetos de base de datos | 33

PAUSA. Deje la interfaz de SSMS abierta para el próximo ejercicio.

CREAR UN TABLA CON LOS COMANDOS DE T RANSACT SQL

La creación de tablas en SSMS es sencilla porque SSMS es una interfaz gráfica fácil
de usar. Pero ¿cómo se pueden crear tablas mediante la sintaxis ANSI SQL? En pocas
palabras, se usará la instrucción 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))
CERTIFICACIÓN
INSERT INTO planets (name, diameter) VALUES (‘earth’, 10000)
DISPONIBLE
¿Cómo crearía una tabla Tenga en cuenta que si SQL Server no admite conversiones implícitas, se necesitaría
con SSMS y cómo crearía la siguiente sintaxis:
una tabla con los comandos
de Transact-SQL? CREATE TABLE planets (name varchar(50), diameter varchar(50))
2.2
INSERT INTO planets (name, diameter) VALUES (‘earth’, CAST (10000 as varchar(50)))

 C

Como administrador de bases de datos, debe saber cuándo usar vistas. También debería
CONCLUSIÓN saber cómo crear vistas mediante una instrucción de Transact-SQL o el diseñador gráfico.

Una vista es simplemente una tabla virtual que consta de diferentes columnas de una o
más 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
más tablas. Las vistas que se basan en esta definición se denominan tablas subyacentes.
Una vez definida una vista, puede referirse a ella como lo haría 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 demás datos de las tablas subyacentes.
Una vista es también un mecanismo para simplificar la ejecución 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 restricción de acceso
a los siguientes datos:
• Filas específicas de tablas
• Columnas específicas de tablas
• Filas y columnas específicas de tablas
• Filas obtenidas mediante uniones
• Resúmenes estadísticos 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 unión de dos o más tablas
• Una combinación de dos o más tablas
• Un resumen estadístico de tablas base
• Un subconjunto de otra vista o una combinación de vistas y tablas base
34 | Lección 2

Las vistas de base de datos se han diseñado para crear una tabla virtual que sea
representativa de una o más 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 a las tablas subyacentes de la base de datos:
• Las vistas permiten limitar el tipo de datos a los que el usuario puede tener acceso.
Se pueden conceder permisos de vista en tablas designadas, así como optar por
denegar permisos para cierta información.
• Las vistas reducen la complejidad para los usuarios finales de forma que no tienen
que aprender cómo escribir consultas SQL complejas. En su lugar, se pueden escribir
esas consultas en su nombre y esconderlas en una vista.
Al crear una vista, asegúrese de tener en cuenta el rendimiento de la base de datos en
el diseño. Como se trató brevemente en la lección 1, la indexación juega un papel en
el tiempo de consulta e incluso juega un papel aún mayor en las mejoras del rendimiento
de la base de datos. Pero hay que proceder con precaución: si se agregan índices en
el esquema se puede en realidad aumentar la sobrecarga de la base de datos debido
al mantenimiento continuo de estos índices.
Existen dos métodos para crear una vista:
• Mediante SSMS
• Escribiendo una instrucción Transact-SQL
En esta sección, se tratarán ambos procedimientos.

CREAR UN A VI STA CON SSMS


PREPÁRESE. Antes de empezar a realizar estos pasos, asegúrese de que la interfaz
de SSMS está abierta y que la base de datos a la que desea agregar una vista aparece
resaltada. Después, siga estos pasos para crear la vista:
1. Expanda la sección Vistas haciendo clic en el signo más (+) que aparece junto a Vistas.
Haga clic con el botón derecho del mouse en la carpeta Vistas como se muestra en la
Figura 2-8; a continuación, seleccione Nueva vista.

Figura 2-8
Crear una nueva vista
Crear objetos de base de datos | 35

Se abrirá el cuadro de diálogo Agregar tabla (vea la Figura 2-9).


F 2-9
Cuadro de diálogo
Agregar tabla

Vamos a tratar con más detalle lo que este cuadro de diálogo permite hacer:
• Para especificar la tabla que se usará como origen principal, haga clic en
la tabla correspondiente de la pestaña Tablas del cuadro de diálogo.
• Si desea usar otra vista existente, haga clic en la pestaña Vistas del cuadro
de diálogo.
• Si desea generar registros a partir de una función, lo encontrará en la pestaña
Funciones.
• Si desea usar más de un origen, haga clic en cada una de las pestañas para
encontrar la tabla, vista o función que desea agregar a la consulta.
• Una vez seleccionado el origen u orígenes que desea, simplemente haga clic
en el botón Agregar para agregar cada uno.
• Cuando haya seleccionado y agregado todos los orígenes que desea, haga clic
en el botón Cerrar para salir del cuadro de diálogo Agregar tabla.
2. Al hacer clic en Agregar para agregar cada origen, aparecerá la información que
se muestra en la Figura 2-10.

Figura 2-10
Resultado del cuadro
de diálogo Agregar tabla

CERTIFICACIÓN DISPONIBLE
Una vez seleccionados los objetos que se desean usar, se agregará la barra
¿Cómo crearía una vista de herramientas Diseñador de vistas, en la que se pueden planear las vistas
con SSMS? adicionales que se desean incorporar en la consulta.
2.3
También puede crear vistas con Transact-SQL. En este caso, una vez agregados los
orígenes al panel de diagrama, la sintaxis para estos orígenes se muestra en el panel SQL.
36 | Lección 2

Para crear una vista con la sintaxis de Transact-SQL, una convención 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,
los datos consultados de las columnas provienen de la tabla Customers.

 C

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


CONCLUSIÓN actualizar o eliminar los datos que usan estas instrucciones.

Hasta ahora, ha aprendido cómo usar diferentes tipos de datos para crear tablas y vistas a
través de la interfaz de SSMS, así como a través de instrucciones de sintaxis de Transact-SQL.
Ahora es el momento de aprender cómo crear instrucciones de procedimientos almacenados
usando la misma interfaz gráfica.
Un procedimiento almacenado es una instrucción SQL escrita previamente que se ha
“almacenado” o guardado en una base de datos. Una manera de ahorrar tiempo cuando
se ejecuta la misma consulta una y otra vez es creando un procedimiento almacenado
que se puede ejecutar más adelante desde el entorno de comandos de la base de datos.
Un ejemplo sobre cómo 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 código en el procedimiento almacenado En efecto,
cuando crea su propio procedimiento almacenado, aparecerá la denominación “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
un código simple en su interior, como el siguiente:
SELECT * FROM USERLIST

Lo que la instrucción 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 información que necesito?”
En otras palabras, puede que se pregunte por qué debería preocuparse en crear un
procedimiento almacenado. Tenga en cuenta que el “*” que aparece en la instrucción
anterior indica que no está definiendo los criterios que desearía 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 páginas ASP y necesita llamar a un
procedimiento almacenado desde allí o desde otra aplicación como Visual Basic, o desde
otra aplicación completa. El uso de un procedimiento almacenado permite almacenar toda
la lógica dentro de la base de datos, de forma que mediante el uso de un simple comando
se puede consultar y recuperar toda la información de todas las fuentes.
Un procedimiento almacenado es una instrucción SQL ya escrita que se almacena en
una base de datos. Si usa continuamente la misma instrucción SQL dentro de la base
de datos, es más sencillo crear un procedimiento almacenado para la instrucción. Ahora,
las instrucciones simples como una instrucción “select” no se beneficiarían 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 el Analizador de consultas mediante un comando de ejecución (exec).

CREAR UN PROCEDIM IENTO AL MACEN ADO


PREPÁRESE. Antes de empezar a realizar estos pasos, asegúrese de que la interfaz de
SSMS está abierta y que la base de datos a la que desea agregar una vista aparece resaltada.
A continuación, siga estos pasos para crear un procedimiento almacenado:
1. Expanda la sección Programación haciendo clic en el signo + adecuado y, a continuación,
expanda la sección Procedimiento almacenado haciendo clic en el signo + pertinente.
2. Haga clic con el botón derecho del mouse en Procedimientos almacenados y elija
Nuevo procedimiento almacenado (vea la Figura 2-11).

Figura 2-11
Menú de selección Nuevo
procedimiento almacenado

CERTIFICACIÓN DISPONIBLE
Se abre la ventana Editor de texto (vea la Figura 2-12), mostrando la sintaxis.
¿Cómo crearía La ventana contiene una plantilla de procedimiento almacenado ya preparada
un procedimiento para que agregue sus propios parámetros de vista.
almacenado con SSMS?
2.4
38 | Lección 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 básicas. Por ejemplo, puede usar el procedimiento
almacenado SELECT para recuperar o seleccionar filas de una base de datos. Algunos
de los procedimientos almacenados más populares se tratarán en la próxima lección,
incluyendo SELECT, INSERT, UPDATE y DELETE.

Comprender las inyecciones de código SQL

TOME NOTA
* Antes de aprender las instrucciones de sintaxis para seleccionar, insertar, actualizar
Una inyección de código y eliminar datos, es necesario saber qué es una inyección de código SQL. En pocas
SQL es un ataque en el palabras, una inyección de código SQL es un ataque en el que se inserta código
que se inserta código malintencionado en las cadenas que después pasan a instrucciones de SQL Server en
malintencionado en las espera de análisis y ejecución. Cualquier procedimiento que construye instrucciones
cadenas que se transmitirán
después de analizar o
SQL se debe revisar continuamente en busca de vulnerabilidades de la inyección de
ejecutar instrucciones. código, puesto que SQL Server ejecutará todas las consultas sintácticamente válidas
desde cualquier origen.

La principal forma de inyección de código SQL es una inserción directa de código en


variables de entrada de usuario que se concatenan con comandos SQL y luego se ejecutan.
Un método menos directo de ataque inyecta código 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 dinámico, se ejecuta
el código malintencionado.
La función del proceso de inyección de código 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 ejecución, el infractor termina la cadena
inyectada con código con una marca de comentario “—”, lo que hace que el texto que
sigue a continuación se omita en tiempo de ejecución.
Crear objetos de base de datos | 39

RESUMEN DE CONOCIMIENTOS

En esta lección, ha aprendido lo siguiente:


•  Un tipo de datos es un atributo que especifica el tipo de datos que un objeto puede contener,
así como el número de bytes que ocupa cada tipo de datos.
•  Como regla general, si se tienen dos tipos de datos que solo difieren en el número de bytes
que usa cada uno, el que tiene más bytes tendrá mayor intervalo de valores u ofrece mayor
precisión, o ambos.
•  Microsoft SQL Server incluye un amplio intervalo de tipos de datos predefinidos conocidos como
tipos de datos integrados. La mayoría de las bases de datos que se crean o se usan emplean solo
estos tipos de datos.
•  Los tipos de datos numéricos exactos son los tipos de datos más comunes que SQL Server usa
para almacenar información numérica.
• int es el principal tipo de datos de valores enteros (número entero).
•  Precisión (p) es el número máximo total de dígitos decimales que se pueden almacenar en un
tipo de datos numérico, tanto a la izquierda como a la derecha del punto decimal; este valor
debe ser al menos 1 y como máximo 38. El número de precisión 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 precisión de una
diezmilésima de las unidades monetarias que representan.
•  Los tipos de datos numéricos aproximados no se usan con tanta frecuencia como otros tipos
de datos de SQL Server. Si necesita más precisión (más posiciones decimales) de la que dispone
con los tipos de datos numéricos 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 implícitas, que se pueden producir sin especificar la función
de llamada real (cast o convert). Las conversiones explícitas necesitan el uso de las funciones
cast o convert específicamente.
•  Un carácter normal usa un byte de almacenamiento por cada carácter, que le permite definir
uno de los 256 caracteres posibles; con capacidad para inglés y algunos idiomas europeos.
•  Un carácter Unicode usa dos bytes de almacenamiento por carácter, 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 tamaño definido de la columna y no a partir del número 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 propósito 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 más
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 más tablas.
•  Un procedimiento almacenado es una instrucción SQL escrita previamente que se ha
“almacenado” o guardado en una base de datos.
•  Una inyección de código SQL es un ataque en el que se inserta código malintencionado en las
cadenas que después pasan a instrucciones de SQL Server en espera de análisis y ejecución.
40 | Lección 2

Evaluación 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 expresión ____________, ____________ 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
construcción de tablas dependientes del horario de verano.
5. SQL Server admite conversiones ____________ sin usar las funciones de llamada
reales (cast o convert).
6. Un carácter normal usa ____________ byte(s) de almacenamiento para cara carácter,
mientras que un carácter Unicode necesita ____________ byte(s) de almacenamiento.
7. El conjunto de datos char es de ____________ de longitud y tiene una longitud
de ____________ bytes.
8. El propósito de una tabla es proporcionar ____________ para almacenar datos
en una base de datos relacional.
9. Al crear una vista, asegúrese de contar con ____________ en el diseño.
10. Cuando se realizan consultas a una base de datos, se pueden obtener resultados
más rápidamente al ____________ tablas y vistas correctamente.

Varias opciones

Rodee con un círculo la letra correspondiente a la mejor respuesta.


1. ¿Cuál de los siguientes no es un tipo de datos?
a. Numéricos exactos
b. Numéricos aproximados
c. Cadena ANSI
d. Espacial
2. ¿Cómo se llama cuando un tipo de datos se convierte automáticamente en otro tipo
de datos?
a. conversión implícita
b. conversión explícita
c. conversión dinámica
d. conversión estática
3. ¿Cuál 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 devolverán bigint si la expresión original tiene el mismo tipo de datos.
4. ¿Requieren las conversiones implícitas una característica 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 gráfica y mediante sintaxis.
6. ¿Cuál 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. ¿Cuál de las siguientes afirmaciones no describe una vista con precisión?
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 ejecución de consultas.
8. ¿Cuál es la instrucción de Transact-SQL para crear una vista?
a. CREATE VIEW
b. CREATE VIEW nombre_vista
c. CREATE VIEW nombre_vista *
9. ¿Qué afirmación se usa para suprimir '(1 fila afectada)' después de ejecutar sentencias
de consulta?
a. SET NO COUNT
b. SET NOCOUNT ON
c. SET NO COUNTING
d. SET NO COUNTING ON
10. ¿Cuál de los siguientes tipos de datos no es un tipo de datos normal?
a. char
b. nchar
c. text
d. varchar(50)

Evaluación de competencias
Escenario 2-1: Calcular el tamaño 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 tamaño que almacenará la información de 10.000 empleados.
En la tabla están definidas las siguientes columnas:
FirstName varchar(50)
LastName varchar(50)
StreetAddress varchar(75)
State varchar(2)
ZipCode varchar(9)
Age int
BirthDate date
¿Cuántos bytes debe almacenar cada registro? ¿Cuántos bytes usaría para almacenar
10.000 registros?
42 | Lección 2

Escenario 2-2: Elegir tipos de datos


Va a diseñar varias bases de datos para un cliente. Mientras diseña las bases de datos, se
encuentra con los siguientes elementos de datos enumerados. ¿Qué tipo de datos usaría
para almacenar la siguiente información 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 número de reproductores de música vendidos

Evaluación 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 usaría 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 compañía. Por lo tanto, después de abrir SSMS y tener acceso a la base de datos
AdventureWorks, especifique las instrucciones básicas SELECT que usaría para recuperar
la información necesaria de la tabla ProductsSubcategory.
1. ¿Qué comandos devolverían todas las filas y columnas de la tabla
ProductsSubcategory?
2. ¿Qué comandos escribiría y ejecutaría para devolver solo las columnas
ProductSubcategoryID, ProductCategoryID, Name y ModifiedDate?
3. ¿Qué comandos escribiría y ejecutaría 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 usaría para agregar un alias
de columna a la columna Name para confirmarla como nombre de la subcategoría?
5. En la ventana de consulta existente, ¿qué comando usaría para ordenar el conjunto
de resultados anterior?
Manipular datos LECCIÓN 3

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 Número de Objetivo del Examen MTA

Usar consultas para Seleccionar datos. 3.1


seleccionar datos
Usar consultas para Insertar datos. 3.2
insertar datos
Actualizar datos y bases de datos Actualizar datos. 3.3
Eliminar datos Eliminar datos. 3.4

TÉRMINOS CLAVE
combinación cruzada select
delete transacciones
formar intersección unión
combinar update
integridad referencial

Le acaba de contratar una empresa de tamaño 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 título de esta lección hace referencia a la manipulación de datos para realizar
consultas, es importante tener en cuenta que la propia realización de consultas se considera
una forma de modificación de datos, puesto que implica cambiar las instrucciones de
la consulta para obtener el resultado que se desea. No importa el nombre o descriptor,
el objeto de cualquier base de datos es que el usuario sea capaz de extraer datos del
mismo. De hecho, la gran mayoría de instrucciones SQL están diseñadas para recuperar
la información solicitada por el usuario de una base de datos mediante el uso de consultas.
En esta lección, se analizarán algunas de las instrucciones de consulta más importantes
que se deben comprender para avanzar en el conocimiento de Transact-SQL.

43
44 | Lección 3

Uso de consultas para seleccionar datos

En esta sección, aprenderá cómo usar la consulta SELECT para recuperar o extraer datos
CONCLUSIÓN
de una tabla, cómo recuperar o extraer datos mediante combinaciones y cómo combinar
resultados con UNION e INTERSECT.

CERTIFICACIÓN El comando SQL para recuperar los datos de una base de datos es SELECT. Como muchos
DISPONIBLE otros comandos SQL, SELECT es similar a una instrucción en inglés. La creación de una
¿Qué comando debe usar instrucción SELECT es similar a la acción de rellenar los espacios en blanco, como se
para mostrar los registros muestra en el ejemplo siguiente:
de una tabla?
3.1
SELECT id, first_name // columnas
FROM sysobjects // tablas
WHERE type = “jones” // condiciones de las que desea producir resultados

Este sencillo ejemplo proporciona un conocimiento básico de lo que hace la instrucción


SELECT. Siempre se deberá seguir el mismo patrón cada vez que se emita una instrucción
SELECT a una base de datos. Por otra parte, solo hay tres cosas que se necesitan identificar
en la instrucción 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 creación de instrucciones
de consulta 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
a 50.000 $ EE. UU. al año. Solo le interesa recuperar los empleados que satisfagan
ese criterio. Así es como se puede hacer esto en SQL:
SELECT first_name, last_name, salary
FROM employees
WHERE salary >= 50,000

Esta consulta debería producir los siguientes resultados:


first_name last_name salary
————————————— ——————————— ——————————
John Allan 52,000
Sylvia Goddard 51,200
Julia Smith 55,000
David Thompson 62,900
TOME NOTA
* (4 filas afectadas)
¿Observa la línea Si desea seleccionar una única columna para la consulta, identifique el nombre de la
que indica el número columna escribiéndola entre las palabras select y from en la instrucción de consulta.
de filas “afectadas”? Si desea identificar más de una columna para incluir en la consulta (como en el ejemplo
Puede desactivar y anterior), simplemente escriba el nombre de cada columna y separe los nombres con una
activar dicha línea coma. La razón para usar una coma en lugar de un espacio es que SQL trata el espacio
mediante la instrucción como un identificador, o palabra coincidente, como “valor” o “seleccionar”. Por tanto,
SET NOCOUNT. si necesita usar un espacio en la instrucción, debe incluir estas palabras entre corchetes
Esta instrucción está o comillas dobles, por ejemplo, [seleccionar] o “valor”.
desactivada de forma
predeterminada. Si desea elegir todas las columnas de una tabla, puede hacerlo escribiendo un asterisco (*)
en el lugar en el que deberían estar los nombres de las columnas.
Manipular datos | 45

El único componente requerido de la consulta SELECT de SQL es la cláusula 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 podría producir un resultado de gran tamaño o un resultado pequeño, según el número
de empleados de una compañía. Veamos un ejemplo de una compañía con solo seis
empleados. Si escribimos el comando anterior, el resultado será similar al siguiente:
first_name last_name employee_id phone gender
——————— —————— ——————— ——————— ————
Jim Alexander 610001 574-555-0001 M
Frances Drake 610002 574-555-0346 F
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
(6 filas afectadas)

Ahora ya tiene un entendimiento básico de para qué se ha diseñado la instrucción SELECT.


Pero, ¿qué pasaría si desea recuperar únicamente determinados tipos de datos de las tablas
identificados con la instrucción de búsqueda SELECT … FROM original? En este caso es
cuando la cláusula WHERE viene muy bien. Por ejemplo, la cláusula WHERE se puede agregar
a una consulta para encontrar únicamente los empleados que trabajan en el departamento
de envíos de la compañía, como se muestra a continuación:
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)

Combinación de condiciones

Quizás necesite más información de una consulta que simplemente un conjunto de


parámetros. En estos casos, puede combinar varias condiciones en una sola instrucción
de consulta. Por ejemplo, en el caso anterior, se ejecuta una consulta que devuelve solo
los empleados que trabajan en el departamento de envíos. Supongamos que ahora desea
ese resultado y determinar cuáles de estos empleados son mujeres. Obtendrá el resultado
que desea con la siguiente instrucción SQL:
SELECT first_name, last_name
FROM employees
WHERE department = ‘shipping’ AND gender = ‘F’ AND hired >=
‘2000-JAN-01’
46 | Lección 3

El resultado esperado muestra los siguientes resultados:


first_name last_name
———————— ———————
Frances Drake
(1 fila afectada)
Por tanto, esta consulta usa la conjunción AND para proporcionar los nombres de todos
los empleados que pertenecen al departamento de envíos y son mujeres.
También puede usar la conjunción OR para que el resultado satisfaga cualquiera
de las dos condiciones, como se muestra a continuación:
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 envíos (cumpliendo así la primera condición), sino que también devuelve tres nuevas
filas de datos que satisfacen solo la segunda condición de la consulta (es decir, un número
de identificación de empleado menor de 610007). Esto significa que Alexandria Link, Peter
Link y Antoin Drake cumplen la segunda condición en la instrucción de consulta WHERE,
pero no la primera.

Uso de la cláusula BETWEEN


En algunas situaciones, tendrá que recuperar los registros que satisfagan una condición
de intervalo y que también 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 conjunción AND:
SELECT first_name, last_name, hire_date
FROM employees
WHERE hire_date >=‘1-Jan-1990’ AND hire_date <= ‘1-Jan-2000’
Esta consulta debería 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 de usar la cláusula
AND en esta instrucción de consulta, intente sustituirla por la cláusula BETWEEN. De esta
forma, podrá especificar el intervalo que se va a usar en un formato de consulta “entre x
e y”, obteniendo una instrucción mucho más clara. Volvamos a escribir la instrucción
anterior para reflejar la condición between:
SELECT first_name, last_name, hide_date
FROM employees
WHERE hide_date BETWEEN ‘1-Jan-1990’ AND ‘1-Jan-2000’
Con esta instrucción, recibirá exactamente el mismo resultado que con la instrucción
de consulta previa.

Uso de la cláusula NOT


En algunos casos es más 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 envíos. 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 obtención 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, podría producir la siguiente instrucción de consulta:
SELECT first_name, last_name
FROM employees
WHERE department = ‘shipping’
No importa cómo se escribe la sintaxis de la instrucción de consulta, producirá los mismos
resultados.

Uso de la cláusula UNION


La cláusula UNION permite combinar los resultados de dos o más consultas en un único
conjunto de resultados que incluye todas las filas que pertenecen a la consulta en esa unión.
La cláusula UNION es totalmente distinta de las instrucciones JOIN, que combinan columnas
de dos tablas diferentes. Debe recordar un par de reglas básicas al combinar los resultados
de dos consultas mediante la cláusula UNION:
• El número y el orden de las columnas debe ser el mismo en cada una de las consultas
de la cláusula.
• Los tipos de datos que use deben ser compatibles.
Por ejemplo, podría usar la cláusula UNION de la siguiente manera para crear una consulta
que devuelve una lista de todos los empleados en el departamento de envíos 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 | Lección 3

Uso de las cláusulas EXCEPT e INTERSECT


Las instrucciones EXCEPT e INTERSECT están diseñadas para devolver valores distintos
al comparar los resultados de dos consultas. En particular, la cláusula EXCEPT devuelve
el resultado final fijado donde existen datos en la primera consulta y no en el segundo
conjunto de datos. La cláusula 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 básicas se aplican para el uso de las cláusulas EXCEPT e INTERSECT que
las que se aplican para usar la cláusula UNION:
• El número 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 configuración de fábrica y que deseaba
recuperar una lista que mostrase los productos con las solicitudes de trabajo y otra lista que
mostrase los productos sin ningún tipo de solicitud de trabajo. Puede estructurar la consulta
como se muestra a continuación, mediante primero la cláusula 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 cláusula EXCEPT:
SELECT ProductID
FROM Production.Product
EXCEPT
SELECT ProductID
FROM Production.WorkOrder;
——Resultado: 266 filas (productos sin pedidos de trabajo)

Uso de la cláusula JOIN


La cláusula JOIN permite combinar datos relacionados de varios orígenes de tablas.
Las instrucciones JOIN son similares en su aplicación a EXCEPT e INTERSECT en que devuelven
valores de dos orígenes de tablas distintos. Conociendo esto, comprobemos los datos
que se pueden extraer mediante el uso de la cláusula JOIN.
La cláusulas JOIN se pueden especificar bien en la cláusula FROM o en la cláusula WHERE,
pero es recomendable que se especifiquen en la cláusula 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
de combinaciones externas: LEFT OUTER JOIN, RIGHT OUTER JOIN y FULL OUTER JOIN.
• Las combinaciones cruzadas devuelven todas las filas de una tabla junto con todas
las filas de otra tabla. Las condiciones WHERE deben incluirse siempre.
Por ejemplo, puede usar la más común de las instrucciones JOIN, INNER JOIN, para recuperar
una lista de los empleados por sus números de identificación 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 2
Peter Link 620005 2
David Cruze 610007 NULL

Tabla 3-2
Tabla del departamento department_id first_name last_name
1 Jane Horton
2 Mitch Simmons
3 Paul Franklin

La combinación de datos entre tablas puede resultar muy complicada, sobre todo si se van
a crear listas específicas de miles de filas de datos. Mediante la consulta de instrucción
SELECT se pueden generar listas individuales, pero puede que se obtenga como resultado
toda la información que se necesita en un formato de lista individual.
La palabra clave INNER JOIN simplifica esta recuperación de datos no solo por usar la información
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 aparecerán 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. Escribiría la instrucción 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 continuación, 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 | Lección 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 ningún departamento, aunque es un
empleado. Esto podría ocurrir por varias razones; tal vez es un empleado nuevo y no ha
comenzado oficialmente a trabajar para ningún 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
de la consulta que desee. La instrucción 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 instrucción LEFT OUTER JOIN incluye la instrucción a partir de INNER JOIN
mostrada anteriormente, que también incluye la cláusula 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 sería como se muestra a continuación:


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 ningún 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 combinación de la tabla consigo misma;
por ejemplo, para comparar los registros dentro de la misma tabla. Esto se conoce como una
autocombinación. Estos tipos de tablas se encuentran generalmente cuando se crea una lista
de resultados de la jerarquías de la organización. Por ejemplo, es posible que desee saber
cuántos autores viven en la misma ciudad, a fin de proporcionar una lista para una editorial.
Podría obtener este resultado mediante la instrucción de autocombinación 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 sería como se muestra a continuación:


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 Starr
Linda Arrow Linda Arrow
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 instrucción de consulta de autocombinación:
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 sería:
first_name last_name first_name last_name
—————— —————— —————— ——————
David Jones Alex Starr
David Jones Linda Arrow
Alex Starr Linda Arrow
(3 filas afectadas)
De los resultados obtenidos a partir de la instrucción de consulta, se puede afirmar que David
Jones, Alex Starr y Linda Arrow viven todos en Pittsburgh, PA y tienen el mismo código postal.

Uso de consultas para insertar datos

En esta sección, llegará a comprender cómo se insertan datos en una base de datos
CONCLUSIÓN y cómo se pueden usar las instrucciones INSERT.

Microsoft SQL Server proporciona distintas formas para insertar nuevos datos en las bases
de datos. Diferentes herramientas de inserción están 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 métodos distintos. El primer método también usa la
52 | Lección 3

CERTIFICACIÓN
interfaz gráfica (SSMS) y el segundo usa la instrucción INSERT. De cualquier manera se
DISPONIBLE logra el mismo objetivo.
¿Qué comando se usa para Insertar datos
agregar datos a una tabla?

3.2
Primero vamos a saber cómo insertar datos en una tabla con SSMS antes de seguir adelante
con el método de sintaxis.

INSERTAR DATOS CON SQL SERVER M ANAGEM ENT STUDIO


PREPÁRESE. Antes de empezar, asegúrese de iniciar la aplicación SSMS y conectarse a la
base de datos en la que desea trabajar. Después, realice los siguientes pasos:
1. Compruebe que se ha conectado a la base de datos en la que desea trabajar (ver Figura 3-1).
Figura 3-1
Conexión a la base
de datos deseada

2. Expanda la carpeta Bases de datos haciendo clic en el icono más (+) 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 más junto a la palabra “Tablas”.
5. Haga clic con el botón secundario en el nombre de la tabla y elija Editar las primeras
200 filas (vea la Figura 3-2).
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 instrucción 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 próximo ejercicio.

El otro método de uso de la cláusula INSERT es escribir una instrucción SQL en la ventana
del editor de texto. Con la sintaxis siguiente, se obtendrá el mismo resultado que cuando
se usa la interfaz gráfica:
INSERT INTO <nombre_tabla> (<columnas>)
VALUES (<valores>)

La cláusula <columnas> contendrá la lista separada por comas de los nombres de


TOME NOTA
* columna de la tabla que desea incluir y la cláusula <valores> contendrá los valores
Aunque la lista que desea insertar.
de columnas de la
instrucción INSERT es No hay limitación a la hora de insertar una sola fila cada vez con la con la instrucción
totalmente opcional, INSERT; en cambio, puede indicar varias filas separadas por comas. Esto es similar a las
se recomienda que comas que se usan en los archivos .CSV de Excel que separan las columnas de información
especifique qué importada para su uso en otro programa de base de datos, como Access. Pero dentro de
columnas desea usar, la instrucción INSERT real, cada una de las filas identificadas por comas se incluirán entre
así SQL supondrá paréntesis. Por tanto, una instrucción INSERT que agrega dos empleados nuevos a la tablas
automáticamente que la de empleados, será la siguiente:
lista de valores incluye INSERT INTO employees (first_name, last_name, employee_id, department)
todas las columnas
VALUES (‘David’, ‘Clark’, 610008, ‘shipping’),
en el orden correcto.
    (‘Arnold’, ‘Davis’, 610009, ‘accounting’)
54 | Lección 3

Esto generará el siguiente resultado:


(2 filas afectadas)

Realmente es tan simple como aprovechar el poder de administración y modificación


de la base de datos. Ahora, exploraremos algunos otros tipos de modificación de datos.

Actualizar datos y bases de datos

Como administrador de bases de datos, debe entender cómo se actualizan los datos
CONCLUSIÓN
en una base de datos, cómo se escriben los datos de actualización en una base de datos
con las instrucciones UPDATE apropiadas, así como cómo actualizar una base de datos
mediante una tabla.

CERTIFICACIÓN
La función de la instrucción UPDATE es cambiar los datos de una tabla o vista. Al igual
DISPONIBLE que cualquier manipulación de datos o cláusula de modificación e instrucción de SQL,
¿Qué comando se usa puede usar esta instrucción ya sea en SSMS o en una ventana del editor de texto.
para cambiar los datos
existentes en una tabla? Uso de la instrucción UPDATE
3.3
La cláusula 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 lección, se puede leer este tipo de instrucción
SQL como se haría con cualquier frase. Supongamos que desea actualizar una tabla en
la que un identificador de columna determinada refleje un determinado valor. Quizás
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 podría
tener el atributo establecido para él mismo (consultar la tabla del departamento) como
un identificador de 4 y la cláusula WHERE se satisface haciendo que se corresponda con
la condición NULL para los empleados sin supervisor. Vamos a escribir ese escenario
de instrucción UPDATE para actualizar el ejemplo anterior.
El primer paso sería agregar un registro en la tabla departamento con el nombre y la
información del identificador de departamento del nuevo supervisor con la instrucción INSERT:
INSERT INTO department (first_name, last_name, department_id)
VALUES (‘Doug’, ‘Able’, 4)

La respuesta sería como se muestra a continuación:


(1 fila afectada)

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 instrucción UPDATE
TOME NOTA
* se vería de la siguiente manera:
Si no especifica qué
registros se van a actualizar, UPDATE employees
todos los registros o filas SET department = 4
se actualizarán con el
nuevo valor. Esto puede WHERE department IS NULL
resultar perjudicial.
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 número 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 instrucción INSERT INTO anterior, David Cruze ahora tiene un número de
identificador de departamento y se le ha asignado a Doug Capaz como supervisor.
En comparación, para actualizar una tabla mediante la interfaz gráfica 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

Todos los administradores de bases de datos deben saber cómo eliminar datos
CONCLUSIÓN de tablas individuales o múltiples, 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
CERTIFICACIÓN y eliminar filas individuales de la base de datos con la sintaxis DELETE, eliminar todas las
DISPONIBLE filas con la instrucción truncate table o quitar toda la tabla mediante la instrucción drop table.
¿Qué comandos se usa El método que elija depende totalmente de sus necesidades o de la cantidad de datos que
para eliminar datos de necesita quitar.
una base de datos?
3.4
Uso de la instrucción DELETE

Puede usar la instrucción DELETE para quitar una o más filas de una tabla o vista.
TOME NOTA
* Esta instrucción se estructura de la siguiente manera:
Las filas no se eliminan
realmente del origen de DELETE FROM <nombre_tabla>
la tabla (origen_tabla) WHERE <condiciones>
identificado en la cláusula
FROM, solo se eliminan Puede usar la instrucción DELETE en múltiples situaciones. Por ejemplo, podría eliminar
de la tabla nombrada todos los empleados del departamento de contabilidad de la tabla de empleados de una
en la cláusula DELETE compañía si, a causa de una adquisición empresarial, esos empleados ya no son empleados
(tabla_o_vista).
de la compañía. Puede eliminar esta información con el siguiente comando:
DELETE FROM employees
WHERE department = ‘acounting’

Esto devolverá el valor siguiente:


(1 fila afectada)
56 | Lección 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 instrucción TRUNCATE TABLE, aunque también puede que desee usar DELETE y la condición
where. Esta última técnica produciría el mismo resultado, pero podría durar mucho tiempo
si se eliminan filas de bases de datos muy grandes. Por tanto, la instrucción TRUNCATE TABLE
será la mejor opción. La sintaxis de la instrucción es la siguiente:
TRUNCATE TABLE <nombre_tabla>
Cada resultado ejecutado con éxito desde SQL aparecerá de la siguiente manera:
Comandos completados correctamente.
La instrucción 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 razón. Quitar una tabla entera implica el
uso de la instrucción DROP TABLE, que tendrá el siguiente aspecto:
DROP TABLE <nombre_tabla>

Uso de la integridad referencial


Uno de los pasos más importantes para planear una base de datos, creación de tablas,
manipulación de datos, etcétera es la conformación de un modelo de seguridad apropiado,
del que la integridad referencial forma parte. Un problema mayor en la manipulación y
mantenimiento de bases de datos es que a veces los datos de SQL Server se pierden y se
deben recuperar. Si no existen medidas de seguridad adecuadas, como parte del proceso de
copia de seguridad y recuperación, la recuperación de los datos perdidos podría resultar una
tarea muy costosa.
Una medida de seguridad que se puede emplear en las tablas de bases de datos es el uso de
métodos de integridad referencial. Uno de los errores más comunes en la manipulación de
bases de datos es la pérdida accidental de tablas completas. La mejor forma de evitar esta
situación es asegurarse de que la base de datos usa integridad referencial. La integridad
referencial no permite la eliminación de tablas a menos que todas las tablas relacionadas
se eliminen mediante una eliminación en cascada.
Esto nos lleva a otro método 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 actualización de datos. Escribir simplemente begin
tran antes de la instrucción SQL real es un buen punto de partida y, si se ha ejecutado todo
correctamente, se emite una instrucción COMMIT desde SQL. Si hay un error en alguna
de las instrucciones, se emite ROLLBACK desde SQL.
Un ejemplo de instrucción de transacciones podría 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 después se emite una instrucción COMMIT para guardar los cambios, o bien
se emite ROLLBACK para deshacerlos. Muchas veces los errores se producen a través de
errores simples y, si usa BEGIN TRAN y COMMIT o ROLLBACK mientas se realizan las tareas
de mantenimiento, se dará cuenta de la mayoría de las eventualidades antes de que ocurran.
Manipular datos | 57

RESUMEN DE CONOCIMIENTOS

En esta lección, 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 instrucción 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
y las condiciones, si hay alguna, que los datos deben satisfacer.
•  Una cláusula 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 cláusula UNION permite combinar los resultados de dos o más consultas en un único conjunto
de resultados que incluirá todas las filas que pertenecen a la consulta en esa unión.
•  La cláusula EXCEPT devuelve los valores distintos de la consulta izquierda que no se encuentran
tampoco en la consulta derecha, mientras que la cláusula INTERSECT devuelve los valores
distintos que no se encuentran en ninguno de los lados izquierdo y derecho de este operando.
•  La cláusula JOIN permite combinar datos relacionados de varios orígenes de tablas.
•  Par insertar datos, se puede usar SSMS o la instrucción INSERT.
•  La función de la instrucción UPDATE es cambiar datos de una tabla o vista.
•  La instrucción DELETE quita filas de una tabla o vista.
•  La instrucción TRUNCATE TABLE quita los datos de una tabla, pero mantiene la estructura
de la tabla 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 eliminación accidental de tablas completas es usar la integridad referencial.
La integridad referencial no permite la eliminación de tablas a menos que todas las tablas
relacionadas se eliminen mediante una eliminación en cascada.

 Evaluación de conocimientos
Verdadero o falso
Rodee con un círculo la V si el enunciado es verdadero o la F si la a rmación es falsa.
V F 1. La instrucción SELECT se limita a consultar datos de una sola tabla.
V F 2. La instrucción INSERT se puede usar para insertar varias flas a la vez.
V F 3. La instrucción TRUNCATE se usa para eliminar una tabla.
V F 4. Una condición INNER JOIN es lo mismo que CROSS JOIN y una condición WHERE.
V F 5. El orden de las columnas en una instrucción 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 instrucción SELECT se usa para consultar y combinar datos de una o más
____________.
2. La cláusula WHERE de una instrucción SELECT contiene una o varias ______________
para filtrar los datos que se van a consultar.
58 | Lección 3

3. Usar la instrucción ______________ es la forma más eficaz de eliminar todas


las filas de una tabla.
4. Para combinar los resultados de dos consultas, se usa el operador ____________.
5. La instrucción _______________ se usa para modificar una o varias filas de una tabla.
6. Si se usa _______________ y _______________ o ____________ mientras se
realizan tareas de mantenimiento, se detectarán la mayoría de los accidentes antes
de que 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 escribiéndola entre las palabras _______________ y _______________
en la instrucción de consulta.
9. Se pueden _______________ varias condiciones en una sola instrucción de consulta
para satisfacer sus requisitos.
10. La cláusula _______________ permite combinar los resultados de dos o más
consultas en un único conjunto de resultados que incluirá todas las filas que
pertenecen a la consulta en esa unión.

Varias opciones
Rodee con un círculo la letra correspondiente a la mejor respuesta.
1. ¿Cuál de las siguientes condiciones no es válida?
a. salary <> 50,000
b. salary != 50,000
c. salary NOT EQUAL 50,000
d. NOT salary = 50,000
2. ¿Cuál de los siguientes operadores no se admite cuando se combinan resultados
entre instrucciones SELECT?
a. UNION
b. EXCEPT
c. INTERSECT
d. AND
3. ¿Cuál de las siguientes condiciones de intervalo generaría 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. ¿Cuál de las siguientes instrucciones combinará los resultados de dos o más 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. ¿Cuál de los siguientes elementos se usa para evitar la eliminación accidental de los
datos de una tabla?
a. Transacciones
b. Valores Null
c. Combinaciones internas (inner join)
d. Integridad referencial
Manipular datos | 59

 Evaluación 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 cómo extraer información de la base
de datos de AdventureWorks. Por lo tanto, necesita responder a las siguientes preguntas:
1. ¿Qué comando usaría para mostrar los registros de una tabla?
2. ¿Qué comando usaría para mostrar los registros FirstName y LastName de la tabla
Users?
3. ¿Qué comando usaría para mostrar todos los registros de la base de datos Member
y ordenarlos por la columna FirstName?
4. ¿Qué comando usaría para mostrar todos los registros de la tabla Suppliers que
contengan City of Sacramento?
5. ¿Qué comando usaría para mostrar los registros CompanyName, ContactName y
PhoneNumber de la tabla Suppliers que contengan un identificador de proveedor mayor
que 1000?
6. ¿Qué comando usaría para mostrar los registros CompanyName, ContactName y
PhoneNumber de la tabla Customers para las compañías con más de 100 empleados
que residan en el estado de California.

Escenario 3-2: Eliminar datos de tablas


Después 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 usaría para quitar todos los registros de la tabla Customers donde la
edad es inferior a 18?
2. ¿Qué comando usaría para quitar todos los registros de la tabla Schools con un valor
de inscripción inferior a 500?
3. ¿Qué comando usaría para quitar todos los registros de la tabla Contact cuyo país no
es USA y al mismo tiempo liberar el espacio usado por esos registros?
4. ¿Qué comando usaría para eliminar la tabla Temp?

 Evaluación 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 confusión debido a que las órdenes de compra de la
compañía 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 métodos de envío idénticos.
1. Tras abrir SSMS y obtener acceso a la base de datos AdventureWorks, ¿qué
consulta usaría en la base de datos AdventureWorks para mostrar los registros
ProductSubcategoryID e ProductCategoryID de la tabla Production.ProductSub y
contuviera la palabra “Bike”? También desea ordenar los registros por SubcategoryName.
2. ¿Qué consulta usaría para combinar la tabla ProductCategory con la tabla
ProductSubcategory para recuperar la columna Name de la tabla ProductCategory?
60 | Lección 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 escribiría y ejecutaría en la base de datos
AdventureWorks para revisar las columnas de la tabla Sales?
2. En la ventana de consulta ya existente, ¿qué comandos usaría para agregar la fila
siguiente a la tabla Credit?
Patrick, Roberts, 6000, Roberts@telecome.usa
3. En la ventana de consulta existente, ¿qué comandos escribiría, resaltaría y ejecutaría
para agregar las siguientes filas a la tabla Credit para el nombre, apellidos y límite de
crédito?
Alex, Hall, 5000
Annie, Smith, 10000
4. En la ventana de consulta existente, ¿qué comandos usaría para actualizar la dirección
de correo electrónico de Annie Smith en la tabla Credit usando la instrucción Update?
Comprender el LECCIÓN 4
almacenamiento
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 Número de Objetivo del Examen MTA

Normalizar una base de datos Comprender la normalización. 4.1


Comprender las claves Comprender las claves 4.2
principales, externas principales, externas
y compuestas y compuestas.
Comprender los índices Comprender los índices. 4.3
agrupados y no agrupados

TÉRMINOS CLAVE
índice agrupado índice no agrupado
clave principal compuesta normalización
quinta forma normal (5FN) formas normales (NF)
primera forma normal (1FN) clave principal
clave externa datos redundantes
restricción de clave externa segunda forma normal (2FN)
forma tercera forma normal (3FN)
cuarta forma normal (4FN) restricción de clave única

Supongamos que trabaja para una empresa de distribución de grandes almacenes que
proporciona material de acampada al aire libre para más de 90 tiendas en América
del Norte. Acaba de recibir una nota de la oficina indicando que la compañía 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 lección, aprenderá acerca de la normalización de bases de datos, los cinco niveles
más comunes de normalización y el propósito de la normalización en lo que respecta
a la integridad de base de datos. También aprenderá qué claves externas, primarias
y compuestas desempeñan un papel fundamental en la integridad referencial.

61
62 | Lección 4

 N z

Como administrador de bases de datos, debe comprender las razones de la normalización,


CONCLUSIÓN
los cinco niveles más comunes de normalización y cómo normalizar una base de datos en
la tercera forma normal.

La razón principal del uso de técnicas de normalización en el almacenamiento de datos


TOME NOTA
* surgió en los días en que el almacenamiento de datos era más laborioso que ahora. En
La normalización
es la eliminación
efecto, normalización, en pocas palabras, es la eliminación de datos redundantes para
de datos redundantes ahorrar espacio.
para ahorrar espacio. Ahora que entiende la definición general de normalización, profundizaremos en este
concepto y en su aplicación en el diseño de bases de datos.

CERTIFICACIÓN DISPONIBLE
Comprender la normalización
¿Cuáles son las tres
primeras formas normales La normalización se basa totalmente en los procesos de diseño y organización de datos
y en qué se diferencian que se derivan de las reglas que se usan en la construcción y diseño de bases de datos
unas de otras? relacionales. Por lo tanto, es sumamente importante comprender qué son bases de datos
4.1 relacionales y la importancia de las buenas metodologías en el diseño.
La normalización, por definición, es el proceso de organización de los datos con el fin de
reducir la redundancia mediante la división de una base de datos en dos o más tablas y la
posterior definición de las relaciones entre las tablas. El objetivo de esta operación 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 través 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): aísla relaciones múltiples independientes
• Quinta forma normal (5FN): aísla relaciones múltiples semánticamente relacionadas
Veamos ahora cada una de estas formas con más detalle. Al tratar con más detalle las
formas normales, esta lección pasa a realizar un estudio más académico sobre el diseño
de bases de datos relacionales. Contrariamente a la opinión popular, las formas no son
una metodología progresiva, pero representan un nivel progresivo de cumplimiento.
Técnicamente, 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 diseño
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 más 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 básicamente 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 de datos | 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 válidos para
una columna. Como ejemplo de la primera forma normal, considere la lista de los
campamentos base y rutas turísticas 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 turísticas (Tour1, Tour2, y Tour3) no es único. Es
decir, hay tres valores asignados para las rutas turísticas.
• Las entradas de la columna o atributo deben ser del mismo tipo de datos.
Tabla 4-1
Datos de BaseCamp (antes): BaseCamp Tour1 Tour2 Tour1
infracción de la primera
Asheville Sendero de los Apalaches Excursión a pie por la ruta
forma normal
verde Blue Ridge Parkway
Cabo Hatteras Faros de Outer Banks
Freeport Buceo en Bahamas
Ft. Lauderdale Senderismo por el Amazonas
Virginia Descenso rápido por
Occidental el río Gauley

Para volver a diseñar el modelo de datos de forma que cumpla con la primera forma
normal, hay que resolver la repetición del grupo del atributo de giras turísticas en un
atributo único, como se muestra en la Tabla 4-2 y, a continuación, pasar los valores
múltiples 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 Entidad Tour Entidad BaseCamp
(después): conforme a la
BaseCampID (FK) Tour BaseCampID (PK) Name
primera forma normal
1 Sendero de los Apalaches 1 Asheville
1 Excursión a pie por la ruta 2 Cabo Hatteras
verde Blue Ridge Parkway
2 Faros de Outer Banks 3 Freeport
3 Buceo en Bahamas 4 Ft. Lauderdale
4 Senderismo por el Amazonas 5
5 Descenso rápido
por el río 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: específicamente, los atributos de la
entidad en cuestión, 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 | Lección 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 están en 2FN,
y en la Tabla 4-4 se muestran los mismos datos después de su normalización.

Tabla 4-3
Datos de BaseCamp (antes): PK-BaseCamp PK-Tour Base Camp
infracción de la segunda PhoneNumber
forma normal
Asheville Sendero de los Apalaches 828-555-1212
Asheville Excursión a pie por la ruta 828-555-1212
verde Blue Ridge Parkway
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 rápido 828-555-1216
por el río Gauley

Tabla 4-4
Datos de BaseCamp Entidad Tour Entidad BaseCamp
(después): conforme a la
PK-BaseCamp PK-Tour BK-BaseCamp PhoneNumber
segunda forma normal
Asheville Sendero de los Apalaches Asheville 828-555-1212
Asheville Excursión a pie por la ruta Cabo Hatteras 828-555-1213
verde Blue Ridge Parkway
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 828-555-1216
el Amazonas
Virginia Occidental Descenso rápido
por el río Gauley

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 infracción 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
también de otro atributo sin clave. La frase fundamental a la hora de recordar la descripción
de la tercera forma normal es que cada atributo debe “proporcionar un dato acerca de la
clave, la clave completa y nada más 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 de datos | 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 están en 3FN y en la Tabla 4-6 se
muestran los datos después de su normalización.
Tabla 4-5
Datos de BaseCamp (antes): Entidad BaseCamp
infracción de la tercera
BaseCampPK BaseCampPhoneNumber LeadGuide DateofHire
forma normal
Asheville 1-828-555-1212 Jeff Davis 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 Entidad Tour Entidad LeadGuide
(después): conforme a la
BaseCampPK LeadGuide LeadGuidePK DateofHire
tercera forma normal
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

CÓMO NORMALIZAR UNA BASE DE DATOS A LA TERCERA FORMA NORMAL


Existen dos requisitos básicos 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 cómo 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 también se cumplen los requisitos de 2FN.
Actualmente, ¿son todas las columnas totalmente dependientes de la clave principal?
CustomerNumber varía con OrderNumber y no parece depender de ninguno de los demás
campos. ¿Qué pasa con UnitPrice? Este campo podría depender de CustomerNumber
en una situación donde se cobre a cada cliente un precio fijo. Sin embargo, a partir de la
información 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 artículos también varía de pedido en pedido, así que aquí no hay problema.
66 | Lección 4

¿Qué pasa con el total? Parece que aquí podrían 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. Quizás se podrían 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 podría haber usado previamente para recuperar los números 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 normalización:
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 inequívoca la entidad sin el tercer atributo, el diseño infringe
la cuarta forma normal.

Comprender la quinta forma normal


La quinta forma normal (5FN) proporciona un método para diseñar relaciones complejas
en las que intervienen varias entidades (normalmente tres o más).
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 diseño de la base de datos en su conjunto y no solo como
el diseño 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; más bien, es
una cuestión de alinear correctamente los atributos y las claves. Cualquier infracción de
las formas normales puede provocar un efecto en cascada con múltiples infracciones
y bases de datos ineficientes.
La normalización reduce la contención del bloqueo y mejora el rendimiento de varios
usuarios. Los bloqueos son mecanismos esenciales que se usan para evitar cambios
simultáneos en la base de datos, por ejemplo, dos usuarios distintos que realizan
cambios en el mismo registro. Sin bloqueos, un cambio realizado por una transacción
lo podría sobrescribir otra transacción que se ejecutase al mismo tiempo. Por último, la
normalización cuenta con estas tres ventajas:
• Costos de desarrollo: a pesar de que se puede tardar más tiempo en diseñar una base
de datos normalizada, estas bases de datos son más fáciles para trabajar y reducen los
TOME NOTA
* costos de desarrollo.
La normalización también
reduce la contención • Facilidad de uso: la ubicación de columnas en la tabla correcta facilita la comprensión
del bloqueo y mejora de las bases de datos y la escritura correcta de consultas. Con esto se reduce el tiempo
el rendimiento de de diseño y el costo.
multiusuario. • Extensibilidad: una base de datos no normalizada es a menudo más compleja y por
lo tanto más difícil de modificar. Esto supone retrasos en el desarrollo de nuevas
bases de datos y aumento en los costos de desarrollo.
Comprender el almacenamiento de datos | 67

 C ,

En esta sección, aprenderá las razones que existen para usar claves en una base de
datos. También explorará cómo elegir las claves primarias apropiadas, seleccionar los
CONCLUSIÓN tipos de datos apropiados para las claves, seleccionar los campos apropiados para las
claves compuestas y comprender la relación entre claves externas y primarias.

CERTIFICACIÓN DISPONIBLE
Existen tres tipos diferentes de restricciones disponibles en SQL Server que garantizan
¿Cuáles son las diferencias la integridad de la base de datos: claves principales, claves externas y claves compuestas
entre una clave principal (únicas). Una clave de restricción única permite aplicar la propiedad de unicidad de
y una clave externa? columnas, además de una clave principal en una tabla. Una clave de restricción única
4.2 actúa de forma similar a una clave principal, pero con dos diferencias importantes:
• Las columnas que contienen una restricción 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 opción, porque se infringiría la restricción única de valores duplicados.
• Una tabla puede tener varias restricciones únicas.

CREAR UN A RESTRI CCI ÓN ÚNIC A


PREPÁRESE. Antes de empezar este ejercicio, asegúrese de iniciar la aplicación SQL Server
Management Studio y conectarse a la base de datos en la que desea trabajar. Después,
realice los siguientes pasos:
1. En SQL Server Management Studio, abra la tabla en la que desea crear la restricción
en Vista de diseño. Para ello, haga clic con el botón derecho del mouse en la tabla
y seleccione Diseño en el menú que aparece, como se muestra en la Figura 4-1.

Figura 4-1
Vista Diseño
68 | Lección 4

2. En el menú desplegable Diseñador 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
una restricción de clave principal, como se muestra en la Figura 4-3.

Figura 4-2
Índices o claves

Figura 4-3
Conectar a una base de datos
Comprender el almacenamiento de datos | 69

3. Haga clic en el botón 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.

Figura 4-4
Cuadro de la propiedad Type

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

Figura 4-5
Selección de columnas
para agregar

6. Haga clic en el botón Cerrar.


70 | Lección 4

7. Guarde la restricción recién creada seleccionando Guardar todo en el menú Archivo,


como se muestra en la Figura 4-6.
Figura 4-6
Guardar una restricción
nueva

Ya ha creado su propia restricción única.


PAUSA. Deje la interfaz de SSMS abierta para el próximo ejercicio.

Comprender las claves principales

Quizás el concepto más importante a la hora de diseñar 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 inequívoca cada fila. Cada tabla debe tener
una clave principal; sin una clave principal, no es una tabla válida. Por definición, 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 número de empleado, el número de licencia de conducir u otro número emitido
por el gobierno como el número de seguridad social. En este caso, todas las claves
primarias posibles se conocen como claves candidatas. Las claves candidatas que
no están seleccionadas como clave primaria se conocen como claves alternativas.
Recuerde, en la fase inicial de diagramas de la base de datos, una clave principal podría
estar claramente visible, por ejemplo, podría ser un número de empleado o un nombre
de fabricante; sin embargo, a menudo en la mayoría de los escenarios reales, no hay
un valor fácilmente reconocible de identificación ú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 terminología
de bases de datos relacionales. Esta terminología también conlleva el uso de claves de
índice, como claves externas. Cuando dos tablas se relacionan entre sí, una de ellas actúa
Comprender el almacenamiento de datos | 71

como la tabla principal y la otra actúa 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 relación primaria-secundaria,
la aplicación del atributo de clave externa se denomina en realidad integridad referencial
(consulte el análisis sobre integridad referencial en la lección anterior).
Para tener una mejor idea visual de este tipo de relación, 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 vínculo entre las dos tablas.
Figura 4-7
Duplicación de
la clave principal

Cuando se habla de claves externas y claves principales, la terminología casi siempre


incluirá la restricción como parte de la descripción. Como ejemplo de la función de la
restricción de clave externa, consideremos una base de datos de comercio al por menor.
Cada tienda tiene una tabla con información acerca de esa tienda, como información de
los empleados, productos vendidos, inventario disponible y, más que probable, información
sobre los clientes. Una manera lógica de hacer referencia a los datos de la tabla sería
la creación de un campo con el número de unidad dentro de la tabla de empleados,
que después contendría el número de unidad (la clave principal de la tabla Tiendas)
de la tienda del empleado, creando así un vínculo entre las dos tablas.
¿Es esta una configuración lógica o no lo es? Imagine lo que pasaría si una de las tiendas
cerrara en el futuro. En esta situación, es probable que todos los empleados asociados con
esa tienda quedarían “huérfanos”, ya que estarían asociados con un campo de número de
unidad que ya no existe. También existe la posibilidad de errores humanos; por ejemplo,
alguien sin darse cuenta escribe un número de unidad equivocado al escribir la información
de un empleado en la base de datos, creando así un número para una tienda que no existe.
TOME NOTA
* Esto podría ser un problema a la hora de cursar la nómina o realizar otras acciones de
Cada tabla debe tener una recursos humanos.
clave principal; sin una
clave principal, no es una Este tipo de problemas se conocen como problemas de integridad relacionales, como se
tabla válida. Por definición, explicó en la lección anterior. Afortunadamente, SQL Server proporciona la restricción
una clave principal debe de clave externa necesaria para evitar este tipo de errores. Después, una clave externa
ser única y debe tener crea una relación entre dos tablas mediante la vinculación de la clave externa de una
un valor que no es nulo. 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


PREPÁRESE. Para crear una restricción de clave externa mediante la interfaz SSMS, siga
estos pasos. Antes de empezar, asegúrese de iniciar la aplicación 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 botón
derecho del mouse en la tablas y seleccione la vista Diseño, como se muestra en la
Figura 4-8.
72 | Lección 4

Figura 4-8
Vista Diseño

2. Seleccione Relaciones del menú desplegable Diseñador de tablas, como se muestra en


la Figura 4-9.

F 4-9
Selección de las relaciones
Comprender el almacenamiento de datos | 73

3. Seleccione la tabla en la que desea agregar la restricción de clave externa.


4. Haga clic en los puntos suspensivos (...) junto al cuadro de diálogo de propiedades
Especificación de tablas y columnas, como se muestra en la Figura 4-10.

Figura 4-10
Cuadro de diálogo
Especificación de
tablas y columnas

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.

Figura 4-11
Selección de la tabla a la que
se refiere la clave externa

6. Una vez que haya terminado de añadir la información de la tabla de clave externa,
haga clic en Aceptar para cerrar el cuadro de diálogo.
7. Haga clic en el botón Cerrar.
8. Guarde la restricción recién creada seleccionando Guardar todo en el menú Archivo.
PAUSA. Deje la interfaz de SSMS abierta para el próximo ejercicio.

Ahora que esta relación de clave externa se ha creado entre dos tablas, SQL Server
requerirá todos los valores asociados con la restricción 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 | Lección 4

Comprender las claves principales compuestas


Uno de los temas más confusos con respecto a las claves principales es la definición 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 desempeñan
un papel importante en el diseño de un modelo de base de datos correcto y sólido.
Como ejemplo simplificado, suponga que aprovecha las tablas de una base de datos
y las categoriza basándose 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 relación con las ventas. Puede elegir cualquier
columna de estas tablas como una clave principal, puesto que en este análisis 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 relación “varios a varios” entre las tablas Customers y Products. Ya tiene
una tabla Customers y una Products y, además, tiene una clave principal seleccionada para
la columna ProductID de la tabla Products y la columna CustomerID de la tabla Customers.
A continuación, tendría que buscar la forma de definir la tabla CustomerProducts.
La tabla CustomerProducts relaciona los clientes con los productos, de modo que el
propósito 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 diseña una tabla por
primera vez, se asegura de que la integridad de los datos esté por encima de las directrices
del diseño; aún 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 conclusión es que, a fin de mantener la integridad de los datos, la clave principal debe
formar parte de los requisitos de diseño para cada tabla.
Muchas veces las tablas no están diseñadas para considerar la posible duplicación
de entradas de datos y, aunque muy a menudo se piensa que la interfaz de usuario
(identificador único) puede controlar cualquier duplicación de datos, siempre se puede
producir una actualización de los datos de una tabla, por ejemplo, cuando un sistema
se actualiza y hay que quitar los datos o hay que restaurar alguna transacción desde
una copia de seguridad. Por consiguiente, hay una necesidad de garantizar que se
mantiene la integridad de los datos.
Si considera el diseño 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 restricción
ú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

En esta sección, aprenderá acerca de los índices agrupados y no agrupados, y su


CONCLUSIÓN propósito en una base de datos.

CERTIFICACIÓN DISPONIBLE
Como administrador de bases de datos, debería saber qué funciones realizan los dos tipos
¿Cuál es la diferencia
de índices (agrupados y no agrupados) y qué papel desempeñan dichos índices dentro de
entre un índice agrupado un entorno de bases de datos. Seguramente está familiarizado con los índices de los libros
y un índice no agrupado? de texto, que contienen entradas para determinados temas, palabras e ideas. Para encontrar
4.3 rápidamente información en el libro, solo tiene que recurrir a ese índice. La indexación
con bases de datos, en el contexto más amplio, es exactamente lo mismo.
Comprender el almacenamiento de datos | 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 información. ¿Suena esto
a una pérdida de tiempo increíblemente 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
rápidamente los campos de uso más frecuente.
La única desventaja de la indexación es el tiempo que se tarda en crear índices y el espacio
de almacenamiento que requieren. Una decisión importante a la hora de usar índices
es averiguar los índices más adecuados para la base de datos, basándose en los tipos
de consultas que se realizarán. Recuerde, SQL Server permite crear índices en cualquier
columna individual o múltiples, 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
* Cuando vaya a implementar índices, es importante que tenga en cuenta que cada tabla
Solo se permite un índice puede tener un solo índice agrupado, que define el modo en que SQL Server ordenará
agrupado en cada tabla. los datos almacenados en la tabla. Después de todo, puesto que los datos se pueden
ordenar de una sola forma, no se puede tener dos índices agrupados en la misma tabla.
También hay que recordar que un índice agrupado es una construcción física, a diferencia
de la mayoría de los índices, que son lógicos o basados en software.
Una característica importante de SQL Server es la creación automática 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 visualización de la creación de índices no
agrupados a partir de las columnas de una tabla.
Hasta ahora hemos dado una visión simplista sobre lo que son lo índices y por qué se
crean. A partir de este momento, es importante fijarse en los conceptos básicos 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 recuperación 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
más rápida 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 están incluidas en la definición 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 | Lección 4

Una tabla con un índice agrupado se considera una tabla agrupada; cuando una tabla
no tiene ningún índice agrupado, las filas de datos se almacenan en una estructura
desordenada llamada un montón. Esto nos lleva a la definición 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 páginas de datos están almacenadas en un
montón o como una tabla agrupada. Esta es una parte importante de la función de un índice
no agrupado: si apunta a un montón, 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, debería saber cómo crear índices de cualquiera de
las dos maneras.

CREAR UN ÍNDIC E NO AG RUPADO CON SQL SERVER MANAG EMEN T ST UDIO


PREPÁRESE. Antes de empezar, asegúrese de iniciar la aplicación SQL Server
Management Studio y conectarse a la base de datos con la que desea trabajar.
Después, realice los siguientes pasos.
1. Haga clic en el icono de signo de suma (+) a la izquierda de la carpeta Bases de datos
para expandir la carpeta. Debería ver las instancias de muchas subcarpetas en la
carpeta principal Bases de datos, como se muestra en la Figura 4-13.

Figura 4-13
Carpeta Bases de datos
Comprender el almacenamiento de datos | 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. Debería ver muchas subcarpetas distintas.

Figura 4-14
Creación de un índice

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. Debería ver varias tablas
en la carpeta Tablas.

Figura 4-15
Vista de la carpeta Tablas
78 | Lección 4

4. Haga clic con el botón 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.
Figura 4-16
Menú Nuevo índice

5. Aparecerá un cuadro de diálogo 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-17
Cuadro de diálogo de
propiedades Nuevo índice

PAUSA. Deje la interfaz de SSMS abierta para el próximo ejercicio.


Comprender el almacenamiento de datos | 79

Para tener una idea de cómo debe ser el cuadro de diálogo Propiedades de un índice
agrupado, vea la Figura 4-18.
Figura 4-18
Cuadro de diálogo
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 actúe como clave de índice agrupado: este es su
índice de ordenación 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.

F 4-19
Cuadro de diálogo
de propiedades de
índice no agrupado
80 | Lección 4

RESUMEN DE CONOCIMIENTOS

En esta lección, ha aprendido lo siguiente:


•  La normalización, en pocas palabras, es la eliminación de datos redundantes para ahorrar
espacio.
•  En la primera forma normal (1FN), los datos tienen un formato de entidad, lo que básicamente
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 método para diseñar relaciones complejas en las
que intervienen varias entidades (normalmente tres o más).
•  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 restricción única permitirá aplicar la propiedad de unicidad de columnas, además
de una clave principal de una tabla.
•  Quizás el concepto más importante a la hora de diseñar 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 inequívoca cada fila.
•  Cada tabla debe tener una clave principal; sin una clave principal, no es una tabla válida.
Por definición, 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 también 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 cómo 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.

Evaluación de conocimientos
Verdadero o falso
Rodee con un círculo la V si el enunciado es verdadero o la F si la a rmación 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 de datos | 81

Rellene los espacios en blanco


Complete las oraciones siguientes escribiendo la palabra o palabras correctas en los
espacios en blanco proporcionados.
1. La normalización es la eliminación 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 recuperación de ____________.
5. Los valores de un índice agrupado están ____________.

Varias opciones
Rodee con un círculo la letra correspondiente a la mejor respuesta.
1. ¿Cuál de las siguientes no es una restricción?
a. CHECK
b. DEFAULT
c. UNIQUE
d. INDEX
2. ¿Cuál de los siguientes elementos puede agilizar la recuperación de datos? (Elija dos
respuestas)
a. Una restricción DEFAULT
b. Una restricción PRIMARY KEY
c. Un índice AGRUPADO
d. Una restricción FOREIGN KEY
3. ¿Cuáles de las siguientes afirmaciones son verdaderas?
a. Un mayor número de pequeñas tablas (con menos columnas) es una característica
de una base de datos normalizada.
b. Unas cuantas tablas grandes (con más columnas) son características de una base
de datos normalizada.
c. Los índices permiten recuperar datos más rápidamente.
d. El rendimiento óptimo de la base de datos se logra mediante la indexación de cada
columna de una tabla.
4. ¿Cuál de las siguientes afirmaciones no es verdadera con respecto a las claves externas?
a. Una clave externa es una combinación de una o más columnas usadas para
establecer y aplicar un vínculo entre los datos de dos tablas.
b. Se puede crear una clave externa definiendo una restricción 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 válidos.
d. Una tabla solo puede contener una clave externa.
5. Considere el uso de un índice agrupado cuando:
a. Las columnas contienen un gran número 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 normalización garantiza que cada atributo describe la entidad?
a. 1FN
b. 2FN
c. 3FN
d. 4FN
82 | Lección 4

7. ¿Cuál de los siguientes no se puede usar como una clave principal?


a. Un número de la seguridad social
b. Una dirección
c. Un número de empleado
d. El número de serie de un componente electrónico
8. ¿Cuántos índices agrupados puede tener una base de datos?
a. 1
b. 2
c. 4
d. 8
9. ¿Cómo se denomina la situación en la que varias columnas actúan como una clave
principal?
a. Clave principal compuesta
b. Clave de escalado
c. Clave externa
d. Clave de restricción
10. Cuando se define una clave principal, se satisfacen los criterios de:
a. 1FN
b. 2FN
c. 3FN
d. 4FN

 E
Escenario 4-1: Análisis 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 algún problema en la base de datos y, en caso afirmativo,
cómo resolverlo. ¿Cómo respondería?

Escenario 4-2: Comparación de índices agrupados y no agrupados


Su jefe desea agilizar los procesos en el servidor de bases de datos de la compañía.
Por ello, 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.
¿Cómo respondería?

 E
Escenario 4-3: Creación 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 serán demasiado grandes en el futuro. Por lo tanto, necesita crear un nuevo índice
agrupado que mejore el rendimiento general.
Usando la interfaz gráfica 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 de datos | 83

Escenario 4-4: Creación 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,
decide usar consultas para realizar esta tarea. Por consiguiente, crea una nueva base
de datos PlanetsID mediante los siguientes comandos de SMMS:
IF EXISTS (SELECT * FROM objetos.sist
WHERE id_objeto = OBJECT_ID(N’[dbo]. [PlanetsID]
AND type in (N’U’))
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 debería 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 seguiría para crear un índice
agrupado basado en la columna Id?
5 LECCIÓN
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 Número de Objetivo del Examen MTA

Proteger las bases de datos Comprender los conceptos de 5.1


seguridad de bases de datos.
Realizar copia de seguridad Comprender las copias de 5.2
y restaurar bases de datos seguridad y restauración
de bases de datos.

TÉRMINOS CLAVE
autenticación copia de seguridad de registros
copias de seguridad inicio de sesión
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
y ventas 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. Además, le solicita que trabaje en un plan para realizar copias
de seguridad y que lo ponga en práctica para obtener la información de cada tienda.
Siguiendo la petición de su superior, analizaremos la implementación de una copia
de seguridad completa y de un calendario de copia de seguridad incremental, así
como la definición de un nuevo esquema de seguridad.

La utilidad de una base de datos depende en gran parte de la seguridad de la información


que contiene. Por lo tanto, como administrador de bases de datos, debe tener una idea
clara de cómo se otorgan los permisos para que los usuarios solo puedan tener acceso
a ciertas tablas o bases de datos. Además, debe estar familiarizado con el concepto de
cómo y cuándo hacer una copia de seguridad y restaurar una base de datos.
84
Administrar una base de datos | 85

 Protección de bases de datos

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


CONCLUSIÓN
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 después por la


seguridad de esa base de datos. Aunque no tiene sentido asegurar una base de datos
durante la fase de diseño, 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 diseñar, implementar y comprobar con atención.
Además, como la seguridad puede afectar a la ejecución de algunos procedimientos,
hay que tener en cuenta cuando se está desarrollando el código 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 organización pequeña, pero
en organizaciones más grandes (como organizaciones militares, organizaciones bancarias o
corporaciones internacionales) se requiere un plan de seguridad más complejo que se debe
diseñar e implementar con fuertes medidas de seguridad en vigor. Independientemente del
tamaño de la organización, el objetivo final de la seguridad de una base de datos debería
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 aplicación de los roles y permisos
de usuario adecuados exige una gran reflexión. 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 sesión,
usuarios y roles) para que tengan acceso a diferentes elementos protegibles.
Un inicio de sesión es el proceso por el cual se controla el acceso de un usuario a un
sistema informático mediante la identificación de ese usuario a través de las credenciales
que proporciona. El método de inicio de sesión más común consiste en proporcionar un
nombre de usuario y una contraseña. Una cuenta de usuario es una representación lógica
de una persona en un sistema electrónico.
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 deberían 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 dueño y que la propiedad también afecta a los permisos.

Figura 5-1
Planear roles y permisos
86 | Lección 5

CERTIFICACIÓN Una descripción general del modelo de seguridad de SQL Server muestra que los usuarios se
DISPONIBLE autentican primero al servidor, después a las bases de datos y, por último, a los objetos dentro
¿Qué roles se asignan de las bases de datos. En el diagrama, los círculos representan cómo se identifica el usuario.
a Microsoft SQL Server
Comprender la seguridad en el nivel de servidor
y qué roles se asignan a
una base de datos SQL?
5.1 En el modelo de seguridad de SQL Server, existen tres métodos diferentes
por los que se puede identificar inicialmente a un usuario.

Los tres métodos para identificar inicialmente a un usuario son:


TOME NOTA
* • Inicio de sesión de usuario de Windows
Los usuarios pueden
tener acceso a • Pertenencia a un grupo de usuarios de Windows
SQL Server con un • Inicio de sesión específico de SQL Server (si el servidor usa la seguridad de modo mixto)
dominio de inicio de Es importante recordar que en el nivel de SQL Server donde reside la base de datos, los
sesión de Windows, usuarios se reconocen por los nombres de inicio de sesión. Este puede ser un inicio de
un nombre de usuario sesión de SQL Server, un inicio de sesión de dominio de Windows o un inicio de sesión
de inicio de sesión con nombre de usuario.
o un inicio de sesión
de SQL Server. Una vez que un usuario inicia sesión en el servidor y posteriormente se comprueba,
ese usuario adquiere los derechos necesarios de administración en el nivel de servidor,
concedidos a través de los roles de servidor fijos. (Estos conceptos se tratarán en mayor
profundidad más adelante en esta lección).
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 sesión 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 sesión 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 deberían 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

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


TOME NOTA
* determinados permisos en el nivel administrativo, no puede tener acceso a los
Ciertos roles fijos de datos si no se le conceden primero los permisos necesarios para los objetos de base
base de datos también de datos (por ejemplo, tablas, procedimientos almacenados, vistas o funciones).
pueden afectar el
acceso a objetos,
Todos los usuarios son automáticamente miembros del rol público de base de datos,
como el derecho a
pero los roles definidos por el usuario son roles personalizados que sirven como grupos.
leer y escribir desde
A estos roles se les puede conceder permiso a un objeto de la base de datos y los usuarios
la base de datos. pueden asignar usuarios a un rol definido por el usuario de la base de datos.

CERTIFICACIÓN DISPONIBLE Cada permiso de objeto se asigna a través de la concesión, denegación o revocación
¿Cuál es el permiso principal de permisos de inicio de sesión de usuario:
que otorga a un usuario • La concesión de un permiso significa que el usuario puede tener acceso al objeto.
permiso completo a todas
las bases de datos? ¿Cuál • La denegación de un permiso invalida la concesión de un permiso.
es el permiso principal que • La revocación de un permiso quita el permiso que se ha asignado, tanto si se trata
otorga a un usuario permiso de un permiso denegado como si es un permiso concedido.
completo a una única base
de datos?
Un usuario puede tener múltiples vías de permiso a un objeto (por ejemplo, individualmente,
5.1
a través de un rol de base de datos estándar, o por medio del rol público). Si cualquiera
de estas vías 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
de las principales 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 elaboración del plan de seguridad. También se
debe estar familiarizado con los diferentes tipos de cuentas de servicio de SQL Server, así
como con los conceptos básicos de la autenticación de Windows.
COMPRENDER LAS CUENTAS DE SERVICIO DE SQL SERVER
Es importante señalar 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 opción 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 instalación 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 sesión es que no proporciona las credenciales de seguridad de red
necesarias para bases de datos, ya que tiene privilegios dentro del sistema operativo que
la cuenta de administrador no tiene. Esto provoca una posible vulnerabilidad de seguridad.
• Cuenta de usuario del dominio: esta es la cuenta de inicio de sesión recomendada debido a
que SQL Server puede usar la cuenta de Windows específicamente creada para el servidor.
A continuación, pueden concederse derechos de administrador a la cuenta de SQL Server.
COMPRENDER LA AUTENTICACIÓN DE WINDOWS
La autenticación es la acción de establecer o confirmar la identidad de un usuario o sistema.
El modo de autenticación de Windows es superior al modo mixto porque los usuarios todavía
no conocen otra contraseña y porque este modo usa el diseño de seguridad de la red.
El uso de la autenticación de Windows indica que los usuarios deben tener una cuenta
válida de Windows con el fin de que SQL Server los reconozca. El SID (identificador
de seguridad) de Windows se pasa a SQL Server. La autenticación de Windows es muy
robusta puesto que autentica no solo a los usuarios de Windows, sino también a los
usuarios en los grupos de usuarios de Windows.
Cuando un grupo de usuarios de Windows se acepta como un inicio de sesión de
SQL Server, 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
de usuarios de Windows, y se aplicarán a cualquier usuario de ese grupo.
SQL Server también conoce el nombre real del usuario de Windows de cada usuario,
por lo que la aplicación puede recopilar información de auditoría, tanto en el nivel
de usuario como en el nivel de grupo.
AGREGAR UN NUEVO INICIO DE SESIÓN DE WINDOWS
Los usuarios de Windows se crean y administran en varios lugares en diferentes versiones
de Windows. En Windows Vista y en versiones más recientes, los usuarios locales pueden
administrarse seleccionando Panel de control > Herramientas administrativas > Administración
de equipos. Los usuarios del dominio se administran mediante herramientas como 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 | Lección 5

AG REGAR UN N UEVO I NICI O DE SESIÓN A SQL SERVER


PREPÁRESE. Para agregar un nuevo inicio de sesión a SQL Server a través del Explorador
de objetos, siga estos pasos:
1. En SSMS, abra y haga clic con el botón derecho del mouse en la carpeta Seguridad,
seleccione Nuevo y seleccione el usuario, como se muestra en la Figura 5-2.
Figura 5-2
Agregar un nuevo usuario

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


escriba el nombre del usuario o use el botón de búsqueda (...) para buscar el usuario
de Windows.
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 botón Examinar


para buscar un usuario, como se muestra en las figuras 5-4 y 5-5. Mediante la
herramienta Administración de equipos, se administran y se asignan los usuarios
de Windows a diferentes grupos de Windows.
Figura 5-4
Explorar usuarios existentes

Figura 5-5
Inicio de sesión
de SQL Server

4. Haga clic en Aceptar para guardar y cerrar el cuadro de diálogo cuadro de diálogo
Usuario de la base de datos.
El usuario puede asignar una base de datos predeterminada y el idioma en la parte inferior
del cuadro de diálogo Propiedades de inicio de sesión de SQL Server, pero observe que la
asignación de una base de datos predeterminada a un usuario no concede el acceso a esa
base de datos de forma automática. El usuario debe conceder acceso a la base de datos en
la pestaña de acceso a la base de datos.
Para crear un inicio de sesión con la sintaxis de Transact-SQL para poder agregar un usuario
o grupo de Windows, ejecute el comando CREATE LOGIN. Asegúrese 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 | Lección 5

Si desea crear y editar inicios de sesión de usuario en el nivel de servidor, use la página
TOME NOTA
* General del nuevo cuadro de diálogo de inicio de sesión. El cuadro de diálogo de inicio
Un usuario puede de sesión también se usa para administrar a los usuarios existentes. Para tener acceso
conceder acceso a bases al cuadro de diálogo de inicio de sesión, simplemente haga doble clic en el usuario.
de datos en la pestaña
Acceso a base de datos. QUITAR UN INICIO DE SESIÓN DE WINDOWS
Un inicio de sesión de Windows se puede quitar de SQL Server a través de SSMS. Para ello,
seleccione el directorio de seguridad (como lo hizo para crear un nuevo inicio de sesión
de usuario) en el Examinador de objetos y, a continuación, 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, también puede usar el comando
DROP LOGIN, como en el siguiente ejemplo:

DROP LOGIN ‘XPS\Joe’

Después de ejecutar este comando, el usuario o grupo de Windows seguirá existiendo


en Windows, pero SQL Server ya no lo reconocerá.

Comprender la autenticación de SQL

Los servidores SQL admiten también el modo mixto que permite la conexión
a un servidor SQL mediante la autenticación de Windows o la autenticación
de SQL Server. Una cuenta de inicio de sesión de SQL Server y las contraseñas
relacionadas están definidas en la instancia de SQL Server y no están
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 autenticación


de SQL. La cuenta sa es la cuenta integrada del administrador de SQL asociada con la
autenticación de SQL. Como la autenticación de SQL es menos segura que el inicio de
sesión 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 público
y roles definidos por el usuario. Cada uno de estos roles se analiza con mayor
detalle en esta sección.

COMPRENDER LOS ROLES DE SERVIDOR FIJOS


SQL Server incluye roles de servidor predefinidos fijos. Básicamente, 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 más se usan a la hora de delegar
determinadas tareas administrativas de servidor:
• Bulkadmin: puede realizar las operaciones de inserción 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 sesión para el servidor.
• Serveradmin: puede configurar los ajustes en el nivel de servidor, como la creación
de búsquedas 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 instalación 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 automáticamente durante la instalación del software
es BUILTINS/Administrator, que incluye todos los usuarios de Windows en el grupo
de administración de Windows y permite seleccionar los grupos o usuarios que se van
a agregar durante la configuración. El usuario BUILTINS/Administrators se puede
eliminar o modificar, si se desea, después de la instalación.
Si se agrega un usuario al grupo del rol sysadmin, ese usuario debe volver a conectarse
a la instancia de SQL Server a fin de que todas las capacidades de la función sysadmin
tengan efecto.
Los roles de servidor fijos se establecen en SSMS en la página Roles de servidor
del cuadro de diálogo Propiedades de inicio de sesión (vea la Figura 5-7).
92 | Lección 5

Figura 5-7
Cuadro de diálogo
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 código siguiente agrega el inicio de sesión de usuario ‘‘XPS\Lauren’’


al rol sysadmin:
EXEC sp_addsrvrolemember ‘XPS\Lauren’, ‘sysadmin’

COMPRENDER EL ROL PÚBLICO


El rol público es un rol fijo, pero puede tener permisos de objeto como un rol estándar.
Cada usuario es miembro del rol público de forma automática y no puede eliminarse,
de manera que el rol público sirve como una línea base o nivel de permiso mínimo.

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 específicas, pero a los
que no se desea conceder un rol que les permita tener más permisos de los que necesitan.
Conceder acceso a una base de datos

Los usuarios deben poder tener acceso de forma explícita a cualquier base de datos
de usuario. Debido a que con ello se establece una relación de varios a varios entre
los inicios de sesión y la base de datos, se puede administrar el acceso a la base de
datos por el inicio de sesión o por la base de datos.
Administrar una base de datos | 93

Cuando un inicio de sesión tiene permiso de acceso a una base de datos, a ese inicio de sesión
también se le asigna un nombre de usuario de base de datos, que puede ser el mismo que el
nombre de inicio de sesión o puede ser algún otro nombre por el que el inicio de sesión se
conocerá en la base de datos.
Para conceder el acceso a una base de datos desde el inicio de sesión mediante el Explorador
de objetos, use la página Asignación de usuarios del formulario Propiedades de inicio
de sesión (que se muestra en la Figura 5-8).
Figura 5-8
Página Asignación
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 sesión que va a agregar
en el campo Nombre de inicio de sesión. Para buscar un inicio de sesión, use el botón 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 sesión para conceder un acceso de inicio
de sesión a cualquier base de datos y asignar roles de base de datos.
Un comando Transact-SQL también 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 parámetro de la sintaxis del comando es el inicio
de sesión 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 sesión, de la
siguiente manera:
USE Familia
DROP USER ‘LRN’
El cuadro de diálogo de inicio de sesión se puede usar para agregar un nuevo usuario
a la base de datos o para administrar un usuario actual.
94 | Lección 5

COMPRENDER LAS CUENTAS DE INICIO DE SESIÓN DE INVITADO


A los usuarios que desean tener acceso a una base de datos pero que no están declarados
como usuarios en la base de datos, se les conceden automáticamente 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
específicamente ya sea a través de SSMS o a través de una instrucción Transact-SQL,
como se muestra a continuación:
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, podrán concederse permisos para
los objetos de base de datos individuales. Los permisos pueden concederse ya sea
directamente al usuario o a un rol estándar, con el usuario asignado al rol.
Los usuarios se pueden asignar a múltiples 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 estándar 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 concesión sobre todos los objetos y se puede
anular mediante un permiso de denegación.
• db_datawriter: permite al usuario escribir en todos los datos de la base de datos.
Este rol es el equivalente a una concesión sobre todos los objetos y se puede anular
mediante un permiso de denegación.
• 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 concesión 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 concesión 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 demás 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 negación 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 través 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 diálogo Propiedades del rol de la base de datos.
Para ello, seleccione Roles en el nodo Seguridad de la base de datos, a continuación, 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 código 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 APLICACIÓN


Un rol de aplicación es un rol de base de datos específico diseñado para permitir que una
aplicación obtenga acceso independientemente del usuario. Por ejemplo, si un programa
específico de Visual Basic (VB) se usa para buscar en la tabla Customer y no controla
la identificación del usuario, ese programa de VB puede tener acceso a SQL Server
mediante un rol de aplicación que no es modificable. Por tanto, cualquier usuario que use
la aplicación VB obtiene acceso a la base de datos.
El cuadro de diálogo Propiedades del rol de la base de datos enumera todos los usuarios
asignados al rol actual.

OBT ENER ACCESO A LOS ROLES DE BASE DE DATOS


PREPÁRESE. 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 más (+)
que corresponda. Expanda la carpeta Seguridad, expanda Roles y después expanda
la carpeta Roles de base de datos.
2. Haga doble clic en el rol adecuado para abrir el cuadro de diálogo 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
específicas.
• Insert: derecho a insertar datos.
• Update: derecho a modificar datos existentes. Los derechos Update para los que se
usa una cláusula WHERE también requieren derechos para seleccionar. El permiso
Update se puede establecer en columnas específicas.
• 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 través de roles.
SQL Server proporciona el nivel máximo del permiso que se ha concedido. DENY, sin
embargo, es una excepción a esta regla. DENY funciona como la mejor baza de las clases.
Es decir, si un comando DENY se ha emitido en cualquier lugar, a continuación, al igual que
en Windows, el usuario 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 o desde el código, es importante comprender estos tres comandos.
96 | Lección 5

La concesión de permisos de objeto interactúa con los roles de servidor y base de datos. El rol de
servidor sysadmin es el rol de máxima 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 más alto
serían los permisos de objeto Grant y Deny. Sin embargo, el permiso Deny siempre tiene
más prioridad que el permiso Grant.
Si el entorno no permite la seguridad de modo mixto, la forma más fácil de comprobar la
seguridad es haciendo clic con el botón 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 creación de usuarios ficticios en el dominio
de Windows. En términos generales, en una “producción” de dominio de Windows, la mayoría
de los auditores podrían marcar a los usuarios ficticios como un punto de auditoría. Debido a que
las estaciones de trabajo que pertenecen a los administradores de bases de datos suelen pertenecer
a los dominios de producción, esta recomendación no funcionará si los auditores son diligentes.

MODIFI CAR PERM ISOS DE UN OB JETO


PREPÁRESE. 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 podría
ser tablas, vistas, procedimientos almacenados o funciones definidas por el usuario.
2. En el Explorador de objetos, haga clic con el botón derecho del mouse en el objeto y
seleccione Propiedades para abrir el cuadro de diálogo Propiedades para ese tipo de objeto.
3. Haga clic en la página Permisos para abrir el cuadro de diálogo Propiedades de objeto.
4. Para agregar un usuario, haga clic en el botón de búsqueda. Escriba el nombre del usuario
que desea agregar o haga clic en el botón Examinar para seleccionar el usuario. Haga clic
en el botón Aceptar para cerrar el cuadro de diálogo Seleccionar usuarios o roles.
5. Seleccione el permiso Grant adecuado para el permiso Deny. Vea la Figura 5-9.
F 5-9
Concesión de permisos
de objeto

6. Cuando haya terminado, haga clic en el botón Aceptar para cerrar el cuadro de diálogo
Propiedades.
Administrar una base de datos | 97

La parte superior del formulario se usa para seleccionar un usuario o un rol, para asignar
o comprobar 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 instrucción en la pestaña 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 diálogo muestra todos los objetos de la base de
datos. Esta lista se puede usar para cambiar a otros objetos de forma rápida 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 botón Columnas abrirá el cuadro de
diálogo Permisos de columna. Seleccione el usuario y haga clic en el botón 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, también
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 diálogo Propiedades de inicio de
sesión y se puede usar para asignar usuarios a roles (como se muestra en la Figura 5-10).
La página Elementos protegibles se usa para asignar o comprobar permisos de objeto.
El cuadro de diálogo es similar a la pestaña Permisos del cuadro de diálogo Propiedades
de objeto de base de datos.
Figura 5-10
Cuadro de diálogo
Propiedades de inicio
de sesión

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 diálogo 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 diálogo
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 botón Permisos abre el cuadro de diálogo Permisos para el rol. Este formulario funciona
como otros formularios de permisos, salvo que se organiza desde la perspectiva del rol.
98 | Lección 5

CONCESIÓN 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 instrucción Transact-SQL que
proporciona permiso a un objeto para un usuario específico 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.
El rol o nombre de usuario se refiere al nombre de usuario de la base de datos, cualquier
rol público definido por el usuario o el rol público. Por ejemplo, el siguiente código
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 público para la tabla
Marriage:
GRANT All ON Contacts TO dbcreator
Varios usuario o roles y varios permisos pueden aparecer en el comando. Por ejemplo,
el siguiente código concede los permisos para seleccionar y modificar al usuario invitado
y a LRN:
GRANT Select, Update ON Emails to Guest, LRN
La opción 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 vía 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 creación de roles estándar con código implica el uso del procedimiento almacenado
del sistema sp_addrole. El nombre de un rol puede tener un máximo de 128 caracteres
y no puede incluir una barra diagonal inversa, no puede ser nulo ni ser una cadena vacía.
De forma predeterminada, los roles serán propiedad del usuario dbo. Sin embargo, puede
asignarse el rol de propietario agregando un segundo parámetro. El siguiente código crea
el rol de administrador (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 código 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 código siguiente libera a Joe del arduo trabajo
de administración:
EXEC sp_dropRoleMember ‘Manager’, ‘Joe’
Administrar una base de datos | 99

COMPRENDER LAS ESTRUCTURAS DEL ROL JERÁRQUICO


Si la estructura de seguridad es compleja, una técnica particularmente útil para conceder
permisos en la organización es el diseño de una estructura jerárquica de los roles de base
de datos estándar. 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 además de los derechos
adicionales para buscar tablas.
• El rol administrador puede tener todos los derechos del gerente más el derecho
para realizar otras tareas de administración de bases de datos.
Para llevar a cabo este tipo de diseño, 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 organización de seguridad es que un cambio en el nivel inferior
afecta a todos los niveles superiores. Como resultado, solo se necesita administrar una
ubicación, 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 través 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 después realiza
la selección de los datos de una tabla.
• Un informe se puede seleccionar de una vista, que después realiza la selección
de una tabla.
• Un procedimiento almacenado complejo podría llamar a otros procedimientos
almacenados.
En estos casos, el usuario debe tener los permisos necesarios para ejecutar el procedimiento
almacenado o realizar la selección de la vista.
Ya que el usuario también 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 | Lección 5

Revisar un modelo de seguridad de ejemplo

Para poner algunos ejemplos de permisos mediante la base de datos OBXKites,


la Tabla 5-1 muestra una lista con la configuración de permisos de los roles de base
de datos estándar. La Tabla 5-2 muestra una lista de algunos usuarios y sus roles.

Tabla 5-1
Configuración de permisos para OBXKites

Rol estándar Rol jerárquico principales Tablas Tablas estáticas de Otros Permisos
de grupo de archivos grupo de archivos
IT Rol de servidor
sysadmin
Clerk Permisos de ejecución
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 Usuario Roles Estándar de Bases de Datos
para OBXKites
Sammy Admin
Joe Public
LRN IT DBA
Grupo Clerk de Windows Clerk
(Betty, Tom, Martha y Mary)

Con este modelo de seguridad, los siguientes usuarios pueden realizar las siguientes tareas:
• Betty, como miembro del rol Clerk, puede ejecutar la aplicación que ejecuta los
procedimientos almacenados para recuperar y actualizar datos. Betty también 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. También 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 sección de esta lección.
Administrar una base de datos | 101

 Realizar copias de seguridad y restaurar bases de datos

En esta sección, examinará varios tipos de copias de seguridad (por ejemplo, completas
CONCLUSIÓN e incrementales), la importancia de las copias de seguridad y cómo 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 restauración es a la vez inmediata y trascendental.

Comprender los modelos de recuperación


SQL Server ofrece varios modelos de recuperación para cada base de datos. Los
modelos de recuperación 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 recuperación. Estos son:


• Recuperación simple
• Recuperación completa
• Registro masivo
La recuperación simple requiere una menor administración puesto que las copias
de seguridad del registro de transacciones se truncan habitualmente.
La recuperación 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 recuperación completa es que los registros pueden crecer mucho. Por lo tanto,
al realizar 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 combinación de los dos
modelos anteriores. Permite un buen rendimiento, además de usar un espacio de registro
mínimo. Sin embargo, no se puede realizar una restauración 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.

Al realizar copias de seguridad, se puede elegir el tipo de copia de seguridad que es mejor
CERTIFICACIÓN DISPONIBLE para el entorno. El tipo de copia de seguridad se basa en la simplicidad, el tiempo para
¿Cuál es la diferencia entre realizar una copia de seguridad y tiempo para realizar una restauración.
una copia de seguridad
completa y una copia de
• Copia de seguridad completa: una copia de seguridad completa contiene todos
seguridad incremental?
los datos en una base de datos específica o en conjunto de archivos o en grupos
5.2
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 después de la copia de seguridad de base
son menores y más rápidas 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 | Lección 5

realizar copias de seguridad frecuentes para disminuir el riesgo de pérdida de


datos. Normalmente, varias copias de seguridad diferenciales sucesivas usan una
base diferencial. En lo que se refiere a la restauración, 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 más rápidas de crear que las copias
de seguridad completas o diferenciales. En lo que se refiere a la restauración, 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 más
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.
Después de la primera copia de seguridad de datos, bajo el modelo de recuperación
completa o el modelo de recuperación de registro masivo, las copias de seguridad de
registros de transacciones normales (o copias 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 fáciles de usar y se recomiendan siempre
que el tamaño 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 Tipo de copia de seguridad Descripción
de base de datos que admite
Copia de seguridad Copia de seguridad completa de toda la base de datos.
Microsoft SQL
de la base de datos Las copias de seguridad de bases de datos representan
toda la base de datos en el momento en el que la copia
de seguridad finaliza.
Copia de seguridad de Copia de seguridad de todos los archivos de la base
base de datos diferencial 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 diseñado para proporcionar
más 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 recuperación
simple. Sin embargo, estas copias de seguridad son compatibles con todos los modelos de
recuperación. La Tabla 5-4 muestra los tipos de copias de seguridad parciales que admite
SQL Server.
Tabla 5-4
Tipos de copias de seguridad Tipo de copia de seguridad Descripción
parciales que admite
Copia de seguridad parcial Copia de seguridad de los datos completos del grupo
Microsoft SQL
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


También 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 recuperación, ya que permiten restaurar solo los archivos dañados 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 acción 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 restauración. 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 Tipo de copia de seguridad Descripción
de archivo
Copia de seguridad de archivo Copia de seguridad completa de todos los datos en uno
o más archivos o grupos de archivos.
Importante: en el modelo de recuperación simple, las copias de
seguridad de archivos se reducen básicamente 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 más 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 recuperación 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 realización de una operación de copia de seguridad tiene un efecto mínimo en las
transacciones que se están ejecutando; por lo tanto, las operaciones de copia de seguridad
se pueden ejecutar durante las operaciones normales. Durante una operación 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 varían 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 mínimo en las cargas de trabajo de producción.

Comprender la restauración de bases de datos

SQL Server admite varios escenarios de restauración, cada uno de los cuales se
describe en la siguiente sección.

Los escenarios de restauración posibles en SQL Server son los siguientes:


• Restauración 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 restauración
de una copia de seguridad de base de datos diferencial (y copias de seguridad del registro).
104 | Lección 5

• Restauración de archivos: restaura un archivo o grupo de archivos en una base


de datos de grupo de archivos múltiples. Después de una restauración de archivos
completa, se puede restaurar una copia de seguridad diferencial de archivos.
• Restauración de páginas: restaura páginas individuales.
• Restauración 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 recuperación: recupera los datos que ya son compatibles con la base de datos y solo
necesitan estar disponibles.
• Restauración de registros de transacciones: en el modelo de recuperación completa o de
registro masivo, puesto que los registros registran cada transacción, la restauración de las
copias de seguridad del registro es necesaria para alcanzar el punto de recuperación deseado.
• Creación 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 información
en un servidor, se replica automáticamente al segundo servidor.
• Creación y mantenimiento de un servidor en espera: cuando se tiene un servidor
de reserva, se está usando un grupo activo/pasivo que consta de dos o más 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 mínimo.
USO DE SSMS
Para restaurar datos mediante la herramienta de interfaz gráfica, siga estos pasos.

RESTAURAR DATOS
PREPÁRESE. Antes de empezar, asegúrese de iniciar la aplicación SQL Server
Management Studio y conectarse a la base de datos con la que desea trabajar.
Después, realice los siguientes pasos:
1. Después 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 función 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 botón 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 diálogo Restaurar base de datos.
5. En la página 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 más
reciente posible) o seleccione una fecha y hora específicas haciendo clic en el botón
Examinar, que abre el cuadro de diálogo Restauración a un momento dado.
7. Para especificar el origen y la ubicación 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 botón Examinar, que abre el cuadro de diálogo
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 Ubicación de copia de seguridad, haga clic en
Agregar.
  Después de agregar los dispositivos que desea en el cuadro de lista Ubicación
de copia de seguridad, haga clic en Aceptar para volver a la página General.
8. En la cuadrícula Seleccionar los conjuntos de copia de seguridad que se van a
restaurar, seleccione las copias de seguridad que desea restaurar. En esta cuadrícula
se muestran las copias de seguridad disponibles para la ubicación especificada. De
forma predeterminada, se sugiere un plan de recuperación. Para invalidar el plan de
recuperación sugerido, puede cambiar las opciones seleccionadas en la cuadrícula.
La selección de todas las copias de seguridad que dependen de una copia de
seguridad no seleccionada se anula automáticamente.
Administrar una base de datos | 105

9. Para ver o seleccionar las opciones avanzadas, haga clic en Opciones en el panel
Seleccionar una página.
10. En el panel Opciones de restauración, puede elegir cualquiera de las siguientes
opciones, si es la adecuada para su situación:
• Sobrescribir las bases de datos existentes.
• Conservar la configuración de replicación.
• 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 ubicación especificando
un nuevo destino de restauración para cada archivo en la cuadrícula Restaurar los
archivos de base de datos como.
12. El panel Estado de recuperación determina el estado de la base de datos después
de la operación de restauración. 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
opción solo si va a restaurar todas las copias de seguridad necesarias en este punto).
CERTIFICACIÓN
13. Como alternativa, puede elegir cualquiera de las siguientes opciones:
DISPONIBLE
¿Comprende las copias de •  Dejar la base de datos no operativa y no revertir las transacciones no confirmadas. Pueden
seguridad y restauración restaurarse registros de transacciones adicionales (RESTORE WITH NO RECOVERY).
de bases de datos? •  Dejar la base de datos en modo de solo lectura. Deshace las transacciones no
5.2 confirmadas, pero guarda las acciones de deshacer en un archivo en espera para
que los efectos de recuperación puedan revertirse (RESTORE WITH STANDBY).

USO DEL COMANDO RESTORE


El comando RESTORE de Transact-SQL permite realizar los siguientes escenarios
de restauración:
• Restaurar una base de datos completa desde una copia de seguridad completa
(restauración completa).
• Restaurar parte de una base de datos (restauración parcial).
• Restaurar archivos o grupos de archivos específicos para una base de datos
(restauración de archivo).
• Restaurar páginas específicas para una bases de datos (restauración de página).
• Restaurar un registro de transacciones en una base de datos (restauración de registro
de transacciones).
• Revertir una base de datos hasta el punto del momento capturado por una instantánea
de base de datos.
Por ejemplo, para restaurar la base de datos mediante el archivo especificado, debe ejecutar
el siguiente comando:
RESTORE 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 más información sobre cómo usar el comando RESTORE, consulte la siguiente
página web:
http://msdn.microsoft.com/es-es/library/ms186858.aspx
106 | Lección 5

RESUMEN DE CONOCIMIENTOS

En esta lección, ha aprendido lo siguiente:


•  El objetivo final de la seguridad de una base de datos es garantizar que los derechos
y responsabilidades 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 sesión es el proceso por el cual se controla el acceso de una persona a un
sistema informático mediante la identificación de ese usuario a través de las credenciales
proporcionadas por el usuario. El método de inicio de sesión más común consiste en
proporcionar un nombre de usuario y una contraseña.
•  Una cuenta de usuario es una representación lógica de una persona en un sistema
electrónico.
•  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 concesión, revocación o denegación
de permisos de inicio de sesión de usuario.
•  La autenticación es la acción de establecer o confirmar la identidad de un usuario o sistema.
• El modo de autenticación de Windows es superior al modo mixto porque los usuarios no
necesitan aprenderse otra contraseña y porque usa el diseño de seguridad de la red.
•  La cuenta sa es la cuenta integrada del administrador de SQL asociada con la autenticación
de SQL.
•  SQL Server incluye roles de servidor predefinidos fijos. Básicamente, estos roles conceden
permiso para realizar determinas tareas administrativas relacionadas con el servidor.
•  El rol sysadmin puede realizar cualquier actividad en la instalación de SQL Server,
independientemente de los permisos que se hayan configurado. El rol sysadmin invalida
incluso los permisos denegados en un objeto.
•  El rol público es un rol fijo, pero puede tener permisos de objeto como un rol estándar.
Cada usuario es miembro del rol público de forma automática y no puede eliminarse,
de manera que el rol público sirve como una línea base o nivel de permiso mínimo.
•  Los usuarios deben poder tener acceso de forma explícita 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 aplicación es un rol de base de datos específico diseñado para permitir que una
aplicación 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 específica
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 después 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 después restaurar cada copia de seguridad
incremental desde la copia de seguridad completa en orden.
Administrar una base de datos | 107

 Evaluación de conocimientos
Verdadero o falso
Rodee con un círculo la V si el enunciado es verdadero o la F si la a rmación 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 instrucción 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 instrucción 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 válido
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 automáticamente 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 círculo la letra correspondiente a la mejor respuesta.
1. ¿Cuál de los siguientes no es un comando de Transact-SQL para administrar
permisos?
a. GRANT
b. REVOKE
c. PERMIT
d. DENY
2. ¿Cuál de los siguientes no es un nivel de seguridad admitido en SQL Server?
a. Servidor
b. Base de datos
c. Tabla
d. Tarea
3. ¿Cuál 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. ¿Cuál de los siguientes son escenarios de restauración 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 específicos usados por la base de datos.
108 | Lección 5

5. ¿Cuál 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. ¿Cuál 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 método de recuperación 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 sesión con la cuenta de Windows y SQL?
a. cualquiera
b. completo
c. compartido
d. mixto

Evaluación de competencias
Escenario 5-1: Análisis de la seguridad de SQL Server
Su jefe realizó un curso de SQL en la universidad hace unos años. Le pregunta si puede
iniciar sesión 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 día para realizar las copias de seguridad,
¿qué copia de seguridad recomendaría como solución?
Administrar una base de datos | 109

Evaluación 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: Restauración de una copia de seguridad


(restauración completa)
Al realizar tareas de mantenimiento en las base de datos, descubre que una de las tablas
está dañada. 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?
Apéndice A
Conceptos fundamentales de
bases de datos: Examen 98-364
Objetivo del examen Número del objetivo del examen Número de lección
Comprender los conceptos básicos de bases
de datos
Comprender cómo se almacenan datos en tablas. 1.1 1
Comprender los conceptos de bases de datos
relacionales. 1.2 1
Comprender el lenguaje de manipulación
de datos (DML). 1.3 1
Comprender el lenguaje de definición
de datos (DDL). 1.4 1

Crear objetos de base de datos


Elegir tipos de datos. 2.1 2
Comprender las tablas y cómo crearlas. 2.2 2
Crear vistas. 2.3 2
Crear procedimientos almacenados y funciones. 2.4 2

Manipular datos
Seleccionar datos. 3.1 3
Insertar datos. 3.2 3
Actualizar datos. 3.3 3
Eliminar datos. 3.4 3

Comprender el almacenamiento de datos


Comprender la normalización. 4.1 4
Comprender las claves principales, externas
y compuestas. 4.2 4
Comprender los índices. 4.3 4

Administrar una base de datos


Comprender los conceptos de seguridad
de bases de datos. 5.1 5
Comprender las copias de seguridad
y restauración de bases de datos. 5.2 5

110
Índice

A Bloqueos, 66 UNION, 47
Acceder a roles de base de datos fjos, 95 Booleano (tipo de datos), 22 UPDATE, 54-55
Agregar inicio de sesión BUILTINS/Administrator, 91 WHERE, 45
de Windows, 87—90 Bulkadmin, 91 Conversiones implícitas, 26—27
quitar, 90 Convert (función), 27
ALTER, 13, 14-15 C Copia de seguridad completa, 101
AND, 46 Cadenas binarias, 23 Copia de seguridad de archivo, 103
Archivos de datos primarios, 2 Cadenas de caracteres, 23, 28-29 Copia de seguridad de registro
Archivos de datos secundarios, 2 Cadenas de propiedad, 99 de transacciones, 102
asignar, mediante SSMS, 94 camelCase, 29 archivos, 2
asignar, mediante Transact-SQL, 95 Cast (función), 27 restaurar, 104
autenticación de seguridad de Windows, 87 char (tipo de datos), 23, 28 Copia de seguridad de registros, 102
cuentas del servicio de SQL Server, 87 Clave principal compuesta, 74 Copia de seguridad diferencial, 101-102
inicio de sesión, agregar, 87—90 Claves externas de integridad Copia de seguridad incremental, 102
inicio de sesión, quitar, 90 referencial, 71 Copia de seguridad parcial, 102
autenticación de SQL, 90—91 usar, 56 Copias de seguridad
Autenticación Claves externas archivo, 103
SQL, 90-91 crear, mediante SSMS, 71—73 completa, 101
Windows, 87 defnición de, 70—71 defnición de, 101
Autocombinación, 9, 50—51 diferencial, 101-102
integridad referencial, 71
Autoreferencia, 9 incremental, 102
Claves principales
defnición de, 70 parcial, 102
B frente a restricción única, 67 programar, 103
Base (base diferencial), 101 integridad de datos, 74 propósito de, 101
Base de datos (bd) segunda forma normal (2FN), 63 registro de transacciones, 102
acceso, conceder, 92-94 tercera forma normal (3FN), 64, 65 tipos, 101-102
características de, 5 Combinación cruzada, 48 Crear restricción única, 67—70
copias de seguridad, 101-103 Combinación externa, 48, 50 defnición de, 8, 67
crear, mediante SSMS, 11 COMMIT, 56 frente a clave principal, 67
cuentas de inicio de sesión Conceptos de bases de datos CREATE, 13, 14
de invitado, 94 relacionales, 7-9 Cuarta forma normal (4FN), 66
defnición de, 2 defnición de, 4-5 Cuenta de usuario del dominio, 87
eliminar, mediante SSMS, 12 elementos del lenguaje, 7-9 Cuenta de usuario local, 87
frente a hojas de cálculo, 5-6 restricciones, 8-9 Cuenta del sistema local, 87
jerárquica, 3-4 Consultas. Véase también cuenta SA, 91
plana, 3 AND Transact-SQL, 46
proteger, 85-100 <columnas>, 53 D
relacional, 4-5, 7-9 <valores>, 53
Date (tipo de datos), 23, 25-26
restauraciones, 103-105 BETWEEN, 46-47
Date and time (tipo de datos), 25-26
seguridad de nivel, 87 como modifcación de datos, 43
Datetime (tipo de datos), 21-22, 23, 25-26
seguridad de objetos, 94 condiciones, combinar, 45-46
Datetime offset, 23, 26
tablas, comparadas con hojas defnición de, 2
Datos redundantes, 62
de cálculo, 6 EXCEPT, 48
Dbcreator, 91
valores calculados, 6 INSERT, 12, 53-54
Decimal (tipo de datos), 22, 24
Base de datos jerárquica, 3—4 insertar datos, 51-54
DELETE
Base de datos plana, 3 INTERSECT, 48
consultas de datos, 55-56
BEGIN TRAN, 56 JOIN, 48-51
NOT, 47 instrucción DDL, 13, 15-16
BETWEEN, 46-47
seleccionar datos, 44-51 instrucción DML, 12
bigint (tipo de datos), 22, 24
SELECT, 44-45 permisos de objetos, 95
bit (tipo de datos), 22, 24
SELECT... FROM, 45 DENY, 95

111
112 | Índice

Dependencia parcial, 64 L revocar, 86


Dependencia transitiva, 64 Lenguaje de defnición de datos (DDL) usuario, para objetos de base
Diskadmin, 91 ALTER, 13, 14-15 de datos, 86
Dispositivos de copia de seguridad, 103 CREATE, 13, 14 Primera forma normal (1NF), 62—63
DRI (referencias), 95 defnición de, 13 Processadmin, 91
DROP TABLE, 55 DELETE, 13, 15-16
DROP, 13, 15 DROP, 13, 15
Q
instrucciones, 13-16
Quinta forma normal (5FN), 66
E tablas del sistema, 16
Estructura de árbol B, 75 TRUNCATE, 13, 15-16
EXCEPT, 48 usar, 13-16 R
EXECUTE, 95 USE, 13, 14 Recuperación completa, 101
Lenguaje de manipulación de datos (DML) Recuperación de registro masivo, 101
defniciones, 12 Recuperación simple, 101
F
instrucciones, 12 Restauraciones
Float (tipo de datos), 22, 25
listado de, 94 archivo, 104
Forma, 62
base de datos re ejada, crear, 104
completo, 103
G M defnición de, 101
GRANT, 95 MERGE, 12 mediante SSMS, 104-105
Modelos de recuperación, 101 mediante Transact-SQL, 105
H money (tipo de datos), 21, 22, 24, 25 página, 104
Hojas de cálculo por etapas, 104
frente a bases de datos, 5—6 N registro de transacciones, 104
valores calculados, 6 nchar (tipo de datos), 23, 28 servidor en espera, crear y mantener, 104
Hojas de cálculo, frente a tablas de base Normalización solo recuperación, 104
de datos, 6 cuarta forma normal (4NF), 62, 66 RESTORE, 105
defnición de, 62 Restricción de clave externa, 8—9, 71
formas, 62 Restricción de clave principal, 8
I
objetivo de, 62 restricción de comprobación, 8
índice agrupado, 75-76
primera forma normal (1NF), 62—63 restricción Default, 8
Índice no agrupado
quinta forma normal (5NF), 62, 66 restricción Not Null, 8
crear, mediante SSMS, 76—79
segunda forma normal (2NF), 62, Restricciones, 8-9
defnición de, 76
63—64 REVOKE, 95
Índices
tercera forma normal (3NF), 62, 64—66 Rol público, 92
agrupado, 75—76
ventajas de, 66 roles de aplicación, 95
Combinación interna, 48, 49
NOT, 47 Roles de servidor de bases de datos
defnición de, 2
Numérico (tipo de datos), 22—23, 24 acceder, 95
desventajas de, 75
Numérico, aproximado, 25—29 defnido por el usuario, 92
estructura de árbol B, 75
Numérico, exacto, 24—25 fjo, 91, 94-95
no agrupado, 76
nvarchar (tipo de datos), 23, 28 público, 92
no agrupado, crear, 76—79
Roles de servidor, 91—92
Iniciar sesión, 85
Roles
INSERT P administrar con Transact-SQL, 98
consultas de datos, 53—54 PascalCase, 29 aplicación, 95
entero (tipo de datos), 22 Permisos de objetos base de datos fja, 94-95
instrucción DML, 12 conceder, mediante Transact-SQL, 98 defnido por el usuario, 92
int (tipo de datos), 22, 24 confgurar desde la lista de roles, 97 estructuras, jerárquicas, 99
mediante Transact-SQL, 53 confgurar desde la lista de usuarios, 97 público, 92
permiso de objeto, 95 defnición de, 95 servidor de bases de datos, 91-92
Intercalación, 24 modifcar, 96—97 servidor fjo, 91-92
INTERSECT, 48 tipos, 95
ROLLBACK, 56
inyección de SQL, 38 Permisos
conceder, 86
defnición de, 85 S
J Seguridad de nivel de servidor, 86
denegar, 86
JOIN (cláusula), 48—51 Seguridad de segunda forma normal
objetos, 95—98
autenticación de SQL, 90—91
Índice | 113

cadenas de propiedad, 99 restricciones de SQL Server numérico, exacto, 24-25


cuenta de usuario, 85 Management Studio (SSMS), nvarchar, 23, 28
iniciar sesión, 85 únicas, crear, 67—70 operaciones matemáticas, 24
inicio de sesión de Windows, quitar, 90 roles de base de datos fjos, asignar, 94 precedencia, 24
inicio de sesión en SQL Server, SQLCMD, 11 precisión, 24
agregar, 88—90 tablas, actualizar, 55 real, 25
instrucción de consulta, 44—45 tablas, crear, 29—32 smalldatetime, 23, 26
Instrucción DML, 12 Transact-SQL, 11 varchar, 22, 23, 28
integridad referencial, 56 usar, 9—12 Transacciones, 56
modelo, 100 vistas, crear, 34—35 Transact-SQL
nivel de base de datos, 86 XQuery, 10 acceso a base de datos, conceder, 93
nivel de servidor, 86 agregar inicios de sesión, 89—90
objetivos de, 85 T datos, insertar, 53—54
objeto, 94 Tablas defnición de, 11
permiso de objeto, 95 borrar, 56 procedimientos almacenados, crear, 36
permisos de objetos, 95—98 crear, mediante SSMS, 29—32 restaurar, 105
permisos, 85 crear, mediante Transact-SQL, 32 roles de base de datos fjos, asignar, 95
roles de base de datos fjos, 94—95 defnición de, 3, 29 roles de servidor, asignar, 92
roles de servidor, 91—92 frente a hojas de cálculo, 6 tablas, crear, 32
roles, administrar, 98—99 propósito de, 29 vistas, crear, 35
Securityadmin, 91 sistema, 16 TRUNCATE TABLE, 55, 56
SELECT truncar, 56 TRUNCATE, 13, 15—16
Windows, 87-90 Tipo de datos de tercera forma
SELECT... FROM, 45 normal, 23, 26 U
Serveradmin, 91 Tipo de datos integrado, 21-24 UNION, 47
Setupadmin, 91 Tipos de datos UPDATE
Sistema de administración de bases bigint, 22, 24 consultas de datos, 54—55
de datos (DBMS), 2 bit, 22, 24 Cuenta de usuario, 85
smalldatetime (tipo de datos), 23, 26 booleano, 22 instrucción DML, 12
SQL Server cadenas binarias, 23 permiso de objeto, 95
Analizador de consultas, 10—11 cadenas de caracteres, 23, 28-29 Rol defnido por el usuario, 92
bases de datos, crear, 11 cast (función), 27 USE, 13, 14
bases de datos, eliminar, 12 char, 23, 28 Usuario invitado, 94
clave externa, crear, 71—73 conversiones implícitas, 26-27 Usuarios
crear procedimientos convert (función), 27 identifcación de, métodos, 86
almacenados, 35—38 datetime, 21-22, 23, 25-26 rol sysadmin, agregado a, 86
crear, mediante SSMS, 36—37 datetimeoffset, 23, 26
crear, mediante Transact-SQL, 36 decimal, 22, 24 V
cuentas de servicio, 87 defnición de, 21 Valor calculado, 6
datos, insertar, 52—53 defnición, 20-29 varchar (tipo de datos), 22, 23, 28
defnición de, 36 Sysadmin, 86, 91 entero, 22 Vistas
defnición de, 9 escala, 24 crear, 33—35
Explorador de objetos, 9 especifcador max, 28 crear, mediante SSMS, 34—35
índice, no agrupado, crear, 76—79 fecha y hora, 25-26 crear, mediante Transact-SQL, 35
inicios de sesión, agregar, 88—89 fecha, 23, 25-26 defnición de, 33
inicios de sesión, agregar, otante, 22, 25 propósito de, 33
mediante SSMS, 88—89 hora, 23, 26 seguridad, 33
inicios de sesión, agregar, mediante int, 22, 24
Transact-SQL, 89—90 integrado, 21-24
W
interfaz, cargar, 11 intercalación, 24
WHERE, 45
procedimientos almacenados, money (numérico), 21, 22, 24, 25
crear, 36—37 nchar, 23, 28
restaurar, 104—105 numérico, 22-23, 24 X
numérico, aproximado, 25-29 XQuery, 10

Potrebbero piacerti anche