Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MOAC LAS 98-364 DBFund TextBook 40090A PDF
MOAC LAS 98-364 DBFund TextBook 40090A PDF
fundamentales de
bases de datos
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
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 V O S
Habilidades y Conceptos Objetivo del Examen MTA Número de Objetivo del Examen MTA
TÉRMINOS 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
n 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
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’
el lector
Cualquier tipo de datos que
mediante una tabla. 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.
Conclusión
CERTIFICACIÓN
La función de la instrucción UPDATE es cambiar los datos de una tabla o vista. Al igual N‘Esta es la apariencia de un carácter Unicode literal’
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. 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
existentes en una tabla?
3.3
Uso de la instrucción UPDATE
La cláusula UPDATE permite modificar los datos almacenados en tablas mediante atributos
Alerta de de caracteres en la propia cadena de caracteres), más un extra de dos bytes de datos para
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
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
INSERTAR DATOS CON SQL SERVER MANAGEMENT STUDIO Nombre de la tabla
2. Expanda la carpeta Bases de datos haciendo clic en el icono más (+) junto a la palabra
“Base de datos”.
Ejercicios
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
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 1 por el libro ilustrado
x | Recorrido
40 | Lección 2
n Evaluación de conocimientos
Rellene los espacios en blanco
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.
Las palabras en letras mayúsculas indican instrucciones
CERRAR
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
REF X
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 Un signo más (+) entre dos nombres de teclas indica que
se deben presionar ambas teclas al mismo tiempo. Las
teclas que se le indique que debe presionar en un ejercicio,
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
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.
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
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
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
www.wiley.com/college/microsoft
xviii | o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá)
Contenido breve
3 Manipular datos 43
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á) | xix
Contenido
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á) | xxi
xxii | Contenido
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
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
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.
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
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.
Tabla secundaria
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.
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
Tabla secundaria
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
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.
Figura 1-2
Hoja de cálculo con
valores calculados
Comprender los conceptos básicos de las bases de datos | 7
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.
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
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).
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.
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
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”.
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.
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
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
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
GO
—— Resultados:
—— 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
—— Resultados:
—— (0 filas afectadas)
GO
—— Resultados:
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;
RESUMEN DE CONOCIMIENTOS
• 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.
n Evaluación de conocimientos
Rellene los espacios en blanco
Varias opciones
10. ¿Qué instrucción SQL se usa para actualizar datos en una base de datos?
a. SAVE
b. MODIFY
c. SAVE AS
d. UPDATE
n 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.
n 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?
Habilidades y Conceptos Objetivo del Examen MTA Número de Objetivo del Examen MTA
TÉRMINOS CLAVE
tipo de datos tablas
inyección de código SQL vistas
procedimientos almacenados
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.
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
(continúa)
22 | Lección 2
Tabla 2-1 (continuación)
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
Tabla 2-2 (continuación)
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.
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
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.
Tabla 2-3
Propiedad Valor
Descripciones de Date
Sintaxis Date
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.
Por lo tanto, para convertir la variable de recuento en flotante, usaría el siguiente comando:
cast(count AS float)
donde puede especificar cuántos dígitos o caracteres tendrá el valor. Por ejemplo:
CONVERT(nvarchar(10), OrderDate, 101)
Figura 2-1
Tipos de conversiones
implícitas y explícitas
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.
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
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
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 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
DISPONIBLE
INSERT INTO planets (name, diameter) VALUES (‘earth’, 10000)
¿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)))
n Crear vistas
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.
Figura 2-8
Crear una nueva vista
Crear objetos de base de datos | 35
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
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.
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
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
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
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.
RESUMEN DE CONOCIMIENTOS
n Evaluación de conocimientos
Rellene los espacios en blanco
Varias opciones
n 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
n 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
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
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
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
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)
Combinación de condiciones
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.
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
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
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.
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
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>)
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)
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
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’
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>
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
■ Evaluación de conocimientos
Verdadero o falso
Rodee con un círculo la V si el enunciado es verdadero o la F si la afirmació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 filas 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.
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.
■ 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
Habilidades y Conceptos Objetivo del Examen MTA Número de Objetivo del Examen MTA
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
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.
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
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
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
¿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
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.
Figura 4-1
Vista Diseño
68 | Lección 4
Figura 4-2
Índices o claves
Figura 4-3
Conectar a una base de datos
Comprender el almacenamiento de datos | 69
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
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.
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
Figura 4-8
Vista Diseño
Figura 4-9
Selección de las relaciones
Comprender el almacenamiento de datos | 73
Figura 4-10
Cuadro de diálogo
Especificación de
tablas y columnas
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
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.
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
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.
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.
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.
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
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
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.
Figura 4-19
Cuadro de diálogo
de propiedades de
índice no agrupado
80 | Lección 4
RESUMEN DE CONOCIMIENTOS
n Evaluación de conocimientos
Verdadero o falso
Rodee con un círculo la V si el enunciado es verdadero o la F si la afirmació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
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
n Evaluación de competencias
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?
n Evaluación de aptitudes
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
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
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.
IdInicioSesión IdUsuario
Roles de base
de datos fijos
Roles de usuario
de base de datos
Invitado
Base de datos de Función pública
usuario
Permisos de objeto
(Conceder, revocar, denegar)
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.
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
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
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:
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
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.
Figura 5-7
Cuadro de diálogo
Propiedades del rol
de la 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
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.
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
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.
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
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
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.
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
SQL Server admite varios escenarios de restauración, cada uno de los cuales se
describe en la siguiente sección.
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).
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
■ Evaluación de conocimientos
Verdadero o falso
Rodee con un círculo la V si el enunciado es verdadero o la F si la afirmació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
■ 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?
■ 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?
Manipular datos
Seleccionar datos. 3.1 3
Insertar datos. 3.2 3
Actualizar datos. 3.3 3
Eliminar datos. 3.4 3
110
Índice
A Bloqueos, 66 UNION, 47
Acceder a roles de base de datos fijos, 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 definición de, 70—71 definición de, 101
Autocombinación, 9, 50—51 diferencial, 101-102
integridad referencial, 71
Autoreferencia, 9 incremental, 102
Claves principales
definició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 definició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
definición de, 2 definició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 modificació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 definició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