fundamentos de bases de Datos.pdf

Conceptos fundamentales de bases de datos Official Academic Course Microsoft® Official Academic Course Conceptos fun

Views 206 Downloads 2 File size 11MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Conceptos fundamentales de bases de datos

Official Academic Course

Microsoft® Official Academic Course

Conceptos fundamentales de bases de datos, examen 98-364

Créditos EDITOR Bryan Gambrel DIRECTOR DE VENTAS Mitchell Beaton DIRECTOR EJECUTIVO DE MARKETING Chris Ruel GERENTE DE PRODUCTOS DE MICROSOFT Merrick Van Dongen de Microsoft Learning ASISTENTE DE PROGRAMA EDITORIAL Jennifer Lartz DIRECTOR DE CONTENIDO Micheline Frederick EDITOR DE PRODUCCIÓN Amy Weintraub DIRECTOR CREATIVO Harry Nolan DISEÑO DE PORTADA Jim O’Shea TECNOLOGÍA Y MEDIOS Tom Kulesa/Wendy Ashenberg Foto de portada: Créditos: fotografía de Matthias Hombauer/Getty Images, Inc. Este libro lo realizó Aptara, Inc. usando Garamond y lo imprimió y encuadernó Bind Rite Robbinsville. La portada la imprimió Bind Rite Robbinsville. Copyright © 2012 por John Wiley & Sons, Inc. Todos los derechos reservados. Ninguna parte de esta publicación puede ser reproducida, almacenada en sistemas de recuperación o transmitida en cualquier forma o por cualquier medio, ya sea electrónico, mecánico, fotocopia, grabación, escaneo o de otro modo, excepto según lo permitido bajo las Secciones 107 o 108 de la ley de Propiedad Intelectual de Estados Unidos de 1976, sin la autorización previa por escrito de la editorial, o la autorización a través del pago por ejemplar de la tarifa correspondiente al Copyright Clearance Center, Inc. 222 Rosewood Drive, Danvers, MA 01923, sitio web www. copyright.com. Las solicitudes de permiso a la editorial deberán dirigirse a Permissions Department, John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030-5774, (201)748-6011, fax (201)748-6008, sitio web http://www. wiley.com/go/permissions. Microsoft, ActiveX, Excel, InfoPath, Microsoft Press, MSDN, OneNote, Outlook, PivotChart, PivotTable, PowerPoint, SharePoint, SQL Server, Visio, Visual Basic, Visual C#, Visual Studio, Windows, Windows 7, Windows Mobile, Windows Server y Windows Vista son marcas comerciales o marcas registradas de Microsoft Corporation en los Estados Unidos y/u otros países. Otros nombres de productos y compañías mencionados aquí pueden ser marcas comerciales de sus respectivos propietarios. Los ejemplos de compañías, organizaciones, productos, nombres de dominio, direcciones de correo electrónico, logotipos, personas, lugares y acontecimientos mencionados son ficticios. No se pretende ni se debe inferir de ningún modo relación con ninguna empresa, organización, producto, nombre de dominio, dirección de correo electrónico, logotipo, persona, lugar o acontecimientos reales. El libro expresa puntos de vista y opiniones del autor. La información contenida en este libro se proporciona sin ninguna garantía expresa, implícita ni estatuaria. Ni los autores, John Wiley & Sons, Inc., Microsoft Corporation, ni sus revendedores o distribuidores serán responsables de cualquier daño causado o presuntamente causado directa o indirectamente por este libro. Fundada en 1807, John Wiley & Sons, Inc. ha sido una valiosa fuente de conocimientos y comprensión durante más de 200 años, ayudando a personas en todo el mundo a satisfacer sus necesidades y cumplir con sus aspiraciones. Nuestra empresa está construida sobre una base de principios que incluyen la responsabilidad con las comunidades a las que servimos y donde vivimos y trabajamos. En 2008, pusimos en marcha una iniciativa de ciudadanía empresarial, Corporate Citizenship, un esfuerzo global para abordar los retos ambientales, sociales, económicos y éticos a los que nos enfrentamos en nuestro negocio. Entre las cuestiones que abordamos se encuentra el impacto medioambiental del carbono, las especificaciones del papel y su adquisición, la conducta ética de nuestro negocio y entre nuestros proveedores y la comunidad, así como el apoyo solidario. Para obtener más información, visite nuestro sitio web: www.wiley.com/go/citizenship. ISBN 978-0-470-88916-9 Impreso en los Estados Unidos de América 10 9 8 7 6 5 4 3 2 1

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

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

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

| iii

6.

Antes de proporcionar acceso de cualquier tipo al Contenido para el Instructor, se le notificará a cada instructor que solo puede acceder o utilizar el Contenido para el Instructor si acepta hacer uso de este en cumplimiento con los siguientes criterios: o Solo se utilizará el Contenido para el Instructor con fines de preparar y enseñar la sesión de entrenamiento. o Solo se instalará el Contenido para el Instructor en un dispositivo que sea de propiedad del instructor o que esté bajo el control de este. o No se copiará, modificará, imprimirá, transmitirá, publicará, mostrará, vinculará, reenviará ni distribuirá el Contenido para el Instructor, ni total ni parcialmente. o Solo se podrá utilizar el Contenido para el Instructor mientras dure la clase en la que el instructor enseña el título del eBook de MOAC relacionado o por un periodo de ciento ochenta (180) días, lo que sea mayor. Después de esto, se deben eliminar de forma segura todas las copias del título del Contenido para el Instructor que el instructor posea o que estén bajo su control. o El uso que se haga del Contenido para el Instructor también cumplirá con todos los términos, condiciones o licencias adicionales aplicables, que acompañen o que se incluyan en el Contenido para el Instructor.

ii.

Si es un estudiante, usted reconoce y acepta que: 1. Actualmente asiste a la clase de un miembro de IT Academy Program que enseña el eBook de MOAC. 2. Solo utilizará los eBooks de MOAC para fines personales de entrenamiento. 3. Solo instalará el eBook de MOAC en un dispositivo que sea de su propiedad o que usted controle. 4. No copiará, modificará, imprimirá, transmitirá, publicará, mostrará, vinculará, reenviará ni distribuirá el eBook de MOAC, ni total ni parcialmente. 5. El uso que haga de los títulos del eBook de MOAC también cumplirá con todos los términos, condiciones o licencias adicionales que se apliquen, que acompañen o que se incluyan en el título del eBook de MOAC. c. Salvo según se autorice expresamente en la sección b anterior, no puede cargar, copiar, modificar, transmitir, hacer trabajos derivados, reenviar ni distribuir ningún eBook de MOAC ni Contenido para el Instructor, ni total ni parcialmente, creado mediante descompilación, así como tampoco el código fuente de ningún eBook de MOAC o Contenido para el Instructor. No puede imprimir copias de ningún eBook de MOAC ni Contenido para el Instructor completo; sin embargo, puede imprimir páginas individuales o secciones de los capítulos del eBook de MOAC específicamente para su uso en el aula. No puede utilizar ni total ni parcialmente el eBook de MOAC ni el Contenido para el Instructor con fines de retribución monetaria por medio de la venta, reventa, préstamo, transmisión, contratación o cualquier otra forma de explotación del eBook de MOAC o del Contenido para el Instructor. Si transmite la propiedad de cualquier eBook de MOAC o Contenido para el Instructor a terceros, se pondrá término a su licencia automáticamente. Dicha terminación será adicional y sustituirá cualquier recurso de equidad, civil o de otro tipo disponibles para Wiley. d. Solo podrá utilizar el título del eBook de MOAC y el Contenido para el Instructor mientras dure la clase en la que se enseñe el título del eBook de MOAC específico o por un periodo de ciento ochenta (180) días, lo que sea mayor. Después de esto, deberá eliminar de forma segura todas las copias del título del eBook de MOAC y del Contenido para el instructor que posea o estén bajo su control. e.  LOS EBOOKS DE MOAC Y EL CONTENIDO PARA EL INSTRUCTOR SE LICENCIAN “TAL CUAL” Y “SEGÚN DISPONIBILIDAD”, SIN GARANTÍAS DE NINGÚN TIPO. f. Usted reconoce que todos los derechos (incluyendo, sin limitación, la propiedad intelectual, las patentes y los secretos empresariales) en los eBook de MOAC y el Contenido para el Instructor son propiedad única y exclusiva de Wiley y sus licenciantes. La aceptación de este contrato no lo convierte en propietario de los eBooks de MOAC ni del Contenido para el Instructor, sin embargo, sí le concede una licencia limitada para utilizar el eBook de MOAC y el Contenido para el Instructor de acuerdo con las disposiciones de este contrato. Usted acepta proteger el eBook de MOAC y el Contenido para el Instructor del uso, la carga, la descarga, la reproducción o la distribución no autorizados. Además, acepta no traducir, descompilar, desensamblar ni realizar ingeniería inversa de ninguno de los eBooks de MOAC ni del Contenido para el Instructor. Wiley se reserva todos los derechos que no se le concedan expresamente en este contrato.

iv |

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á)

Prólogo del editor La visión editorial de Wiley para la serie de cursos Microsoft Official Academic Course es proporcionar a los alumnos e instructores las habilidades y los conocimientos necesarios para usar la tecnología de Microsoft de forma eficaz en todos los aspectos de sus vidas personales y profesionales. Para que los educadores y alumnos aprovechen al máximo las herramientas de software de Microsoft y sean más productivos, se requiere una enseñanza de calidad. Por tanto, nuestra misión es hacer que nuestros programas de enseñanza sean compañeros docentes de confianza de por vida. Para lograr esta misión, Wiley y Microsoft se han asociado y han desarrollado programas educativos de la más alta calidad dirigidos a trabajadores de la información, profesionales de TI y desarrolladores. Los materiales creados por esta asociación llevan el nombre comercial “Microsoft Official Academic Course”, asegurando a instructores y alumnos por igual que el contenido de estos libros de texto está totalmente respaldado por Microsoft, y que proporciona información e instrucción sobre los productos de Microsoft de la más alta calidad. Los libros de texto de Microsoft Official Academic Course son, de alguna manera, más “oficiales”: constituyen el material didáctico oficial para los miembros de Microsoft IT Academy. La serie de cursos Microsoft Official Academic Course se centra en el desarrollo laboral. Estos programas están dirigidos a aquellos alumnos que buscan ingresar al mercado laboral, cambiar de trabajo o embarcarse en nuevas carreras como trabajadores de la información, profesionales de TI y desarrolladores. Los programas Microsoft Official Academic Course atienden estas necesidades haciendo hincapié sobre escenarios con entornos de trabajo auténticos con una gran cantidad de proyectos, ejercicios, casos prácticos y evaluaciones. Los cursos de Microsoft Official Academic Course están asignados a la extensa investigación y análisis de trabajo en tareas de Microsoft, la misma investigación y análisis que se usa para desarrollar los exámenes de Microsoft Technology Associate (MTA) y Microsoft Certified Technology Specialist (MCTS). Los libros de texto se centran en competencias reales de los puestos de trabajos reales. Mientras los alumnos trabajan en los proyectos y ejercicios de los libros de texto, mejoran su nivel de conocimiento y su capacidad para aplicar la última tecnología de Microsoft a las tareas diarias. Estos alumnos también obtienen credenciales para crear un Currículum Vitae que sirva de ayuda a la hora de encontrar un trabajo, mantener el trabajo actual o continuar con su educación. El concepto de aprendizaje permanente es hoy una necesidad máxima. Los puestos de trabajo, e incluso todas las categorías laborales, están cambiando con tanta rapidez que ninguno de nosotros puede seguir siendo competitivo y productivo sin actualizar continuamente nuestras habilidades y capacidades. Las ofertas de Microsoft Official Academic Course, y su enfoque en la preparación de exámenes de certificación de Microsoft, proporcionan un medio para que las personas adquieran y actualicen de forma eficaz sus habilidades y conocimientos. Wiley apoya a los alumnos en este esfuerzo a través de la elaboración y distribución de estos cursos como editor académico oficial de Microsoft. Actualmente, las publicaciones educativas deben prestar atención a la hora de proporcionar gran calidad de impresión y contenido electrónico sólido. Mediante la integración de los productos Microsoft Official Academic Course, WileyPLUS y las certificaciones de Microsoft estamos en mejores condiciones para poder ofrecer soluciones eficientes de aprendizaje a los alumnos y profesores por igual. Joseph Heider Director general y Vicepresidente Senior www.wiley.com/college/microsoft o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá)

| v

Prefacio Bienvenido al programa Microsoft Official Academic Course (MOAC) para Conceptos fundamentales de bases de datos. MOAC representa la colaboración entre Microsoft Learning y la editorial John Wiley & Sons, Inc. Microsoft y Wiley se unieron para crear una serie de libros de texto que ofrecieran soluciones de enseñanza convincentes e innovadoras para los instructores y destrezas de aprendizaje superiores para los alumnos. Estos libros de texto maximizan la transferencia de conocimientos en un tiempo mínimo gracias a la preparación e instrucción por el conocimiento en profundidad de los creadores de productos de Microsoft, así como por la elaboración de los libros de texto por una editorial reconocida mundialmente debido a la calidad pedagógica de sus productos. Se desafía a los alumnos para que alcancen su potencial mediante nuevos conocimientos técnicos como miembros altamente productivos del área de trabajo. Debido a que esta base de conocimiento proviene directamente de Microsoft, creador de los exámenes Microsoft Certified Technology Specialist (MCTS) y Microsoft Technology Associate (MTA), (https://www.microsoft.com/learning/es-es/default.aspx), seguro que recibirá la cobertura de contenido más relevante para su éxito personal y profesional. La participación directa de Microsoft no solo le asegura que el contenido de los libros de texto MOAC es preciso y está actualizado; también significa que recibirá la mejor instrucción posible para tener éxito en los exámenes de certificación y en el entorno de trabajo. ■

Programa Microsoft Official Academic Course

La serie Microsoft Official Academic Course es un programa completo dirigido a instructores e instituciones para preparar e impartir grandes cursos sobre tecnologías de software de Microsoft. Con MOAC, reconocemos que, debido al rápido ritmo de cambios en la tecnología y el plan de estudios desarrollado por Microsoft, existe un conjunto de necesidades más allá de las herramientas de instrucción académica para que un instructor esté preparado para impartir el curso. El programa MOAC trata de proporcionar soluciones para todas estas necesidades de manera sistemática con el fin de garantizar una experiencia de entrenamiento satisfactoria y gratificante para el instructor y el alumno: aprendizaje técnico y plan de estudios para la preparación del instructor con nuevas versiones de software; el propio software para que los alumnos lo usen en casa para la adquisición de conocimientos prácticos, evaluación y validación del desarrollo de habilidades; y un excelente conjunto de herramientas para realizar la instrucción en el aula y en el laboratorio. Todas ellas son importantes para la entrega sin problemas de un interesante curso sobre software de Microsoft, y todas se proporcionan con el programa MOAC. Pensamos en el siguiente modelo como medida para asegurar que le apoyamos completamente en su objetivo de impartir un curso excelente. Al evaluar sus opciones de material de instrucción, puede que desee usar este modelo con fines comparativos con los productos disponibles:

vi |

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 ■

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 ■

2

Características de la lección

Crear objetos de base de datos

LECCIÓN

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

Objetivo del Examen MTA

Número de Objetivo del Examen MTA

Definir tipos de datos

Elegir tipos de datos.

2.1

Crear y usar tablas

Comprender las tablas y cómo crearlas.

2.2

Crear vistas

Crear vistas.

2.3

Crear procedimientos almacenados

Crear procedimientos almacenados y funciones.

2.4

Matriz de dominio de objetivos

TÉRMINOS CLAVE tipo de datos

tablas

inyección de código SQL

vistas

procedimientos almacenados

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 se realicen vía fax; en cambio, esas solicitudes de pedidos se recibirán a través de un servidor web o del correo electrónico. Espera que usted diseñe una base de datos para almacenar y procesar estos pedidos electrónicos.

n  Definir

28 | Lección 2 Figura 2-1 Tipos de conversiones implícitas y explícitas

tipos de datos

CONCLUSIÓN

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 locales, expresiones o parámetros. Además, al elegir un tipo de datos para satisfacer sus necesidades, debe asegurarse de que cualquiera que sea el tipo elegido proporcionará el tipo más eficaz de almacenamiento y consulta de esquemas. De hecho, uno de los principales roles de un administrador de bases de datos es garantizar que los datos de cada base de datos se mantengan uniformes al decidir qué tipo de datos es el más adecuado para el módulo de aplicación en el que se está trabajando actualmente.

20

54 | Lección 3

Esto generará el siguiente resultado:

USO DE CADENAS DE CARACTERES

(2 filas afectadas)

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

Realmente es tan simple como aprovechar el poder de administración y modificación de la base de datos. Ahora, exploraremos algunos otros tipos de modificación de datos.



Actualizar datos y bases de datos CONCLUSIÓN

CERTIFICACIÓN DISPONIBLE ¿Qué comando se usa para cambiar los datos existentes en una tabla? 3.3

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 mediante una tabla. La función de la instrucción UPDATE es cambiar los datos de una tabla o vista. Al igual que cualquier manipulación de datos o cláusula de modificación e instrucción de SQL, puede usar esta instrucción ya sea en SSMS o en una ventana del editor de texto.

Uso de la instrucción UPDATE La cláusula UPDATE permite modificar los datos almacenados en tablas mediante atributos de datos como los siguientes: UPDATE SET = WHERE

Ayuda para el lector Conclusión Alerta de certificación disponible

TOME NOTA

*

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

Como se ha visto desde el inicio de esta 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.

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

Sin embargo, cuando se expresa un carácter Unicode literal, la letra N (de Nacional) debe aparecer como prefijo de las comillas simples. Por ejemplo: N‘Esta es la apariencia de un carácter Unicode literal’

Cuando se usa un elemento VAR, SQL Server preserva el espacio en la fila en la que ese elemento reside a partir del tamaño definido de la columna (y no a partir del número real de caracteres en la propia cadena de caracteres), más un extra de dos bytes de datos para

Diagramas informativos

El primer paso sería agregar un registro en la tabla departamento con el nombre y la información del identificador de departamento del nuevo supervisor con la instrucción INSERT: INSERT INTO department (first_name, last_name, department_id) VALUES (‘Doug’, ‘Able’, 4)

La respuesta sería como se muestra a continuación: (1 fila afectada)

TOME NOTA

*

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

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

El resultado se muestra en la Tabla 3-4.

Ayuda para el lector Tome nota

www.wiley.com/college/microsoft o llame al 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

Thompson

620002

1

Frances

Drake

610003

1

Alexandria

Link

610004

2

Peter

Link

620005

2

David

Cruze

610007

NULL

Tablas de fácil lectura

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 ———————— James

last_name —————— Alexander

first_name ——————— Jane

last_name —————— Horton

David

Thompson

Jane

Horton

Frances

Drake

Jane

Horton

Alexandria

Link

Mitch

Simmons

Peter

Link

Mitch

Simmons

Antoin

Drake

Paul

Franklin

32 | Lección 2

(6 filas afectadas)

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

52 | Lección 3 CERTIFICACIÓN DISPONIBLE ¿Qué comando se usa para agregar datos a una tabla? 3.2

interfaz gráfica (SSMS) y el segundo usa la instrucción INSERT. De cualquier manera se logra el mismo objetivo.

Imágenes de la pantalla

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

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

Figura 2-6

INSERTAR DATOS CON SQL SERVER MANAGEMENT STUDIO

Nombre de la tabla

PREPÁRESE. Antes de empezar, asegúrese de iniciar la aplicación SSMS y conectarse a la base de datos en la que desea trabajar. Después, realice los siguientes pasos: La nueva tabla aparecerá en la sección Tablas, como se representa en la Figura 2-7.

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

Figura 2-7

Conexión a la base de datos deseada

La tabla recién creada

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

Ejercicios 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 gratuito de MOAC: 764-7001 (solo UU. y Canadá) gebührenfreie MOAC-Rufnummer: 1+(888)1+(888) 764-7001 (nur USA undEE.Kanada)

x | Lesson 1 por el libro ilustrado x | Recorrido

Crear objetos de base de datos | 39

RESUMEN DE CONOCIMIENTOS En esta lección, ha aprendido lo siguiente: • Untipodedatosesunatributoqueespecificaeltipodedatosqueunobjetopuedecontener, así como el número de bytes que ocupa cada tipo de datos. • Comoreglageneral,sisetienendostiposdedatosquesolodifierenenelnúmerodebytes que usa cada uno, el que tiene más bytes tendrá mayor intervalo de valores u ofrece mayor precisión, o ambos. • MicrosoftSQLServerincluyeunampliointervalodetiposdedatospredefinidosconocidoscomo tipos de datos integrados. La mayoría de las bases de datos que se crean o se usan emplean solo estos tipos de datos. • LostiposdedatosnuméricosexactossonlostiposdedatosmáscomunesqueSQLServerusa para almacenar información numérica. • int es el principal tipo de datos de valores enteros (número entero). • Precisión(p) es el número máximo total de dígitos decimales que se pueden almacenar en un tipo de datos numérico, tanto a la izquierda como a la derecha del punto decimal; este valor debe ser al menos 1 y como máximo 38. El número de precisión predeterminado es 18. • money y smallmoney son tipos de datos de Transact-SQL que se deben usar para representar valores monetarios o de moneda. Ambos tipos de datos tienen una precisión de una diezmilésima de las unidades monetarias que representan. • Lostiposdedatosnuméricosaproximadosnoseusancontantafrecuenciacomootrostipos de datos de SQL Server. Si necesita más precisión (más posiciones decimales) de la que dispone con los tipos de datos numéricos exactos, debe usar los tipos de datos float o real, puesto que ambos suelen tomar bytes adicionales de almacenamiento. • Lostiposdedatosdefechayhoraserefieren,porsupuesto,afechasyhoras.Estostipos de datos incluyen date, datetime2, datetime, datetimeoffset, smalldatetime y time. • SQLServeradmitelasconversionesimplícitas,quesepuedenproducirsinespecificarlafunción de llamada real (cast o convert). Las conversiones explícitas necesitan el uso de las funciones cast o convert específicamente. • Uncarácternormalusaunbytedealmacenamientoporcadacarácter,quelepermitedefinir uno de los 256 caracteres posibles; con capacidad para inglés y algunos idiomas europeos. • UncarácterUnicodeusadosbytesdealmacenamientoporcarácter,porloquesepuede representar uno de los 65.536 caracteres. Esta capacidad adicional significa que se pueden almacenar caracteres Unicode desde casi cualquier idioma. • CuandoseusaunelementoVAR,SQLServerpreservaelespacioenlafilaenlaqueeste elemento reside a partir del tamaño definido de la columna y no a partir del número real de caracteres de la propia cadena de caracteres. • LascadenasdecaracteresUnicodencharynvarcharpuedenserfijasovariables,comolas cadenas de caracteres normales; sin embargo, usan el conjunto de caracteres UNICODE UCS-2. • Elpropósitodeunatablaesproporcionarunaestructuraparaalmacenardatosenunabase de datos relacional. • Unavistaessimplementeunatablavirtualqueconstadediferentescolumnasdeunaomás tablas. A diferencia de una tabla, una vista se almacena en una base de datos como un objeto de consulta; por lo tanto, una vista es un objeto que obtiene los datos de una o más tablas. • UnprocedimientoalmacenadoesunainstrucciónSQLescritapreviamentequeseha “almacenado” o guardado en una base de datos. • UnainyeccióndecódigoSQLesunataqueenelqueseinsertacódigomalintencionadoenlas cadenas que después pasan a instrucciones de SQL Server en espera de análisis y ejecución.

Resumen de conocimientos

40 | Lección 2

n

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

Escenarios posibles

7. El conjunto de datos char es de ____________ de longitud y tiene una longitud de ____________ bytes. 8. El propósito de una tabla es proporcionar ____________ para almacenar datos en una base de datos relacional. 9. Al crear una vista, asegúrese de contar con ____________ en el diseño.

Manipular datos | 59 ■ Evaluación

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

Escenario 3-2: Eliminar datos de tablas

10. Cuando se realizan consultas a una base de datos, se pueden obtener resultados más rápidamente al ____________ tablas y vistas correctamente.

Varias opciones Rodee con un círculo la letra correspondiente a la mejor respuesta. 1. ¿Cuál de los siguientes no es un tipo de datos? a. Numéricos exactos b. Numéricos aproximados c. Cadena ANSI d. Espacial 2. ¿Cómo se llama cuando un tipo de datos se convierte automáticamente en otro tipo de datos? a. conversión implícita b. conversión explícita c. conversión dinámica d. conversión estática 3. ¿Cuál de las siguientes afirmaciones no son ciertas sobre el tipo de datos int? a. int es un entero. b. bigint se usa cuando el valor excede el intervalo del tipo de datos int. c. Un entero usa 8 bytes para almacenar datos. d. Las funciones solo devolverán bigint si la expresión original tiene el mismo tipo de datos. 4. ¿Requieren las conversiones implícitas una característica de llamada real (por ejemplo, cast o convert)? a. Sí b. No

Después de revisar junto con el administrador de red algunos de los registros de la base de datos AdventureWorks, deciden eliminar algunos registros antiguos. Este escenario plantea las siguientes preguntas: 1. ¿Qué comando usaría para quitar todos los registros de la tabla Customers donde la edad es inferior a 18? 2. ¿Qué comando usaría para quitar todos los registros de la tabla Schools con un valor de inscripción inferior a 500? 3. ¿Qué comando usaría para quitar todos los registros de la tabla Contact cuyo país no es USA y al mismo tiempo liberar el espacio usado por esos registros? 4. ¿Qué comando usaría para eliminar la tabla Temp? ■ Evaluación

Evaluación de conocimientos

de aptitudes Escenario 3-3: Manipular datos mediante las instrucciones SELECT y JOIN Lo acaban de contratar como administrador de bases de datos de AdventureWorks Corporation. Ha surgido alguna confusión debido a que las órdenes de compra de la compañía se almacenan en dos tablas. Por lo tanto, necesita crear una consulta para combinar la tabla PurchaseOrderHeader de la base de datos de ejemplo, AdventureWorks, consigo misma de modo que proporcione una lista de los pedidos de compra emparejados. Cada fila incluye dos pedidos de compra con proveedores y métodos de envío idénticos. 1. Tras abrir SSMS y obtener acceso a la base de datos AdventureWorks, ¿qué consulta usaría en la base de datos AdventureWorks para mostrar los registros ProductSubcategoryID e ProductCategoryID de la tabla Production.ProductSub y contuviera la palabra “Bike”? También desea ordenar los registros por SubcategoryName. 2. ¿Qué consulta usaría para combinar la tabla ProductCategory con la tabla ProductSubcategory para recuperar la columna Name de la tabla ProductCategory?

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

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

Significado

 Esta característica proporciona un breve resumen del material que se trata en la sección que sigue.

CONCLUSIÓN

CERRAR  Las palabras en letras mayúsculas indican instrucciones

para abrir, guardar o cerrar archivos o programas. También señalan los elementos que se deben comprobar o las acciones que se deben realizar.

 CERTIFICACIÓN DISPONIBLE  Esta característica señala un punto en el texto donde se cubre un objetivo específico de certificación. Proporciona la oportunidad de comprobar el grado de comprensión de ese objetivo MTA particular y, si fuera necesario, revisar la sección de la lección donde se trata el objetivo.  Las ayudas para el lector aparecen en recuadros TOME NOTA* sombreados que se encuentran en el texto. Tome nota proporciona consejos útiles relacionados con tareas o temas concretos Estas notas proporcionan referencias a cualquier REF 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.

X





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

DREAMSPARK PREMIUM: SUSCRIPCIÓN GRATUITA DURANTE 3 AÑOS DISPONIBLE PARA USUARIOS DreamSpark Premium está diseñado para proporcionar de la forma más fácil y económica que las universidades tengan disponibles las últimas herramientas de desarrollo, productos y tecnologías de Microsoft para profesores y alumnos en los laboratorios, aulas y en los equipos de los alumnos. DreamSpark Premium es un programa de suscripción anual para los departamentos de enseñanza de cursos de ciencias, tecnología, ingeniería y matemáticas (STEM). La suscripción proporciona una solución completa para mantener los laboratorios académicos, profesores y alumnos a la vanguardia de la tecnología. El software disponible a través del programa DreamSpark Premium se proporciona sin gasto adicional para los departamentos asociados a través de la colaboración editorial entre Wiley y Microsoft. Para obtener más detalles, póngase en contacto con su representante de Wiley. Para obtener más información sobre el programa DreamSpark Premium, vaya al sitio web de Microsoft DreamSpark. Nota: Windows Server y SQL Server se pueden descargar de DreamSpark Premium para su uso en este curso.



Direcciones web y números de teléfono importantes

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

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

Programa de apoyo para el alumno ■

Recursos adicionales

Sitio web del libro complementario (www.wiley.com/college/microsoft) El sitio del libro complementario para alumnos de la serie MOAC incluye recursos, archivos de ejercicios y vínculos web que se usarán junto con este curso.

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

Acerca de la certificación Microsoft Technology Associate (MTA) ■

Preparación de los recursos tecnológicos del futuro La tecnología juega un papel en casi todos los negocios del mundo. Poseer un conocimiento fundamental de cómo funciona la tecnología y la comprensión de su impacto en el entorno académico y laboral actual cada vez es más importante, sobre todo para aquellos alumnos interesados en explorar profesiones que implican tecnología. Es por eso que Microsoft ha creado la certificación Microsoft Technology Associate (MTA), una nueva credencial de nivel básico que valida el conocimiento tecnológico fundamental entre los alumnos que buscan desarrollar una carrera en tecnología. La certificación Microsoft Technology Associate (MTA) es el camino ideal y preferido para los programas de certificación de tecnología de Microsoft de fama mundial, como Microsoft Certified Technology Specialist (MCTS) y Microsoft Certified IT Professional (MCITP). MTA se posiciona para convertirse en el credencial principal para aquellas personas que buscan explorar y desarrollar una carrera profesional en tecnología, o mejorar actividades conexas, como negocios o cualquier otro campo donde la tecnología está omnipresente. www.wiley.com/college/microsoft o llame al número de teléfono gratuito de MOAC: 1+(888) 764-7001 (solo EE. UU. y Canadá)

| xv

xvi | Programa de apoyo para el alumno

Perfil del candidato MTA El programa de certificación MTA está específicamente diseñado para alumnos de educación secundaria y superior interesados en explorar las opciones académicas y profesionales en el campo de la tecnología. Ofrece a los alumnos una certificación en TI básica y desarrollo. Como nuevo punto de partida recomendado para las certificaciones de tecnología de Microsoft, MTA está especialmente diseñada para los nuevos alumnos en TI y desarrollo de software. Está disponible exclusivamente en los centros educativos y se integra fácilmente en los programas existentes de clases de informática.

MTA potencia a los educadores y motiva a los alumnos MTA ofrece un nuevo estándar para medir y validar los conocimientos fundamentales de tecnología directamente en el aula con un impacto mínimo en el presupuesto y los recursos didácticos. MTA ayuda a las instituciones que destacan como proveedores innovadores de credenciales de la industria de alta demanda y se puede implementar fácilmente con un conjunto simple, conveniente y asequible de exámenes de certificación de tecnología de nivel básico. MTA permite a los alumnos explorar carreras en tecnología que no requieren una gran inversión en tiempo y recursos, al tiempo que proporciona una base profesional y la confianza para tener éxito en estudios avanzados y futuros proyectos de aprendizaje profesional. Además de conceder a los alumnos una certificación de Microsoft de nivel básico, MTA está diseñada como plataforma para otras certificaciones de tecnología más avanzadas de Microsoft, como la certificación Microsoft Certified Technology Specialist (MCTS).

Entrega de exámenes MTA: licencia MTA Campus La implementación de un nuevo programa de certificación en el aula nunca ha sido tan fácil como con la licencia MTA Campus. A través de la compra de una licencia anual MTA Campus, no se necesitarán las solicitudes de presupuesto ad hoc ni las compras periódicas de los cupones de exámenes. Ahora, puede realizar un presupuesto de bajo costo para todo el año y después administrar los exámenes MTA a sus alumnos y otros profesores de la escuela, donde y cuando desee. La licencia MTA Campus ofrece un conjunto conveniente y asequible de certificaciones de tecnología de nivel básico diseñadas para potenciar a los educadores y motivar a los alumnos a medida que construyen una base para sus carreras. La licencia MTA Campus está administrada por Certiport, proveedor exclusivo de exámenes MTA de Microsoft. Para obtener más información sobre cómo llegar a ser un asociado en tecnología de Microsoft (Microsoft Technology Associate) y sobre la disponibilidad de exámenes, visite www.microsoft.com/learning/mta.

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

Programa de apoyo para el alumno | xvii



Activar la prueba práctica GRATUITA de MTA

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

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

Reconocimientos ■

Revisores de los fundamentos de la tecnología MOAC MTA

Nos gustaría dar las gracias a los numerosos revisores que han leído cuidadosamente el manuscrito y han proporcionado información muy valiosa al servicio de los materiales didácticos de calidad: Yuke Wang, Universidad de Texas en Dallas Palaniappan Vairavan, Universidad de Bellevue Harold “Buz” Lamson, Instituto técnico ITT Colin Archibald, Centro de estudios superiores de Valencia Catherine Bradfield, Universidad en línea DeVry University Online Robert Nelson, Universidad de Blinn Kalpana Viswanathan, Universidad de Bellevue Bob Becker, Universidad de Vatterott Carol Torkko, Universidad de Bellevue Bharat Kandel, Escuela universitaria Missouri Tech Linda Cohen, Centro de estudios técnicos superiores de Forsyth Candice Lambert, Centros tecnológicos Metro Susan Mahon, Universidad de Collin Mark Aruda, Centro de estudios superiores de Hillsborough Claude Russo, Centro de estudios superiores de Brevard

xviii | 

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

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

Contenido breve  1 Comprender los conceptos básicos de bases de datos 1   2 Crear objetos de base de datos 20   3 Manipular datos 43   4 Comprender el almacenamiento de datos 61   5 Administrar una base de datos 84  Apéndice A 110 Índice 111

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

| xix

Contenido Lección 1 Comprender los conceptos Lección 3 Manipular datos 43 básicos de bases de datos 1 Matriz de dominio de objetivos 1 Términos clave 1 Comprender los conceptos de bases de datos 2

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

Comprender el lenguaje de manipulación de datos (DML) 12 Comprender el lenguaje de definición de datos (DDL) 12 Uso de las instrucciones de DDL 13

Resumen de conocimientos 16 Evaluación de conocimientos 17 Evaluación de competencias 19 Evaluación de aptitudes 19

Lección 2 Crear objetos de base de datos 20 Matriz de dominio de objetivos 20 Términos clave 20 Definir tipos de datos 20

Uso de tipos de datos integrados 21 Uso de tipos de datos numéricos exactos 24 Uso de tipos de datos numéricos aproximados 25

Crear y usar tablas 29 Crear vistas 33 Crear procedimientos almacenados 35

Comprender las inyecciones de código SQL 38

Resumen de conocimientos 38 Evaluación de conocimientos 39 Evaluación de competencias 41 Evaluación de aptitudes 41

Matriz de dominio de objetivos 43 Términos clave 43 Uso de consultas para seleccionar datos 44 Combinación de condiciones 45 Uso de la cláusula BETWEEN 46 Uso de la cláusula NOT 47 Uso de la cláusula UNION 47 Uso de las cláusulas EXCEPT e INTERSECT 48 Uso de la cláusula JOIN 48

Uso de consultas para insertar datos 51 Insertar datos 52

Actualizar datos y bases de datos 54 Uso de la instrucción UPDATE 54

Eliminar datos 55

Uso de la instrucción DELETE 55 Truncar una tabla con TRUNCATE TABLE 56 Eliminar una tabla con DROP TABLE 56 Uso de la integridad referencial 56

Resumen de conocimientos 57 Evaluación de conocimientos 57 Evaluación de competencias 59 Evaluación de aptitudes 59

Lección 4 Comprender el almacenamiento de datos 61 Matriz de dominio de objetivos 61 Términos clave 61 Normalizar una base de datos 62

Comprender la normalización 62 Comprender la primera forma normal 62 Comprender la segunda forma normal 63 Comprender la tercera forma normal 64 Comprender la cuarta forma normal 66 Comprender la quinta forma normal 66

Comprender las claves principales, externas y compuestas 67

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

| xxi

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

Comprender los índices agrupados y no agrupados 74 Comprender los índices agrupados 75 Comprender los índices no agrupados 76 Crear una tabla no agrupada 76

Resumen de conocimientos 80 Evaluación de conocimientos 80 Evaluación de competencias 82 Evaluación de aptitudes 82

Lección 5 Administrar una base de datos 84 Matriz de dominio de objetivos 84 Términos clave 84 Asegurar bases de datos 85

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

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

Realizar copias de seguridad y restaurar bases de datos 101

Comprender los modelos de recuperación 101 Comprender las copias de seguridad de bases de datos 101 Comprender los dispositivos de copia de seguridad 103 Comprender la restauración de bases de datos 103

Resumen de conocimientos 106 Evaluación de conocimientos 107 Evaluación de competencias 108 Evaluación de aptitudes 109 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á)

Comprender los conceptos básicos de las bases de datos

LECCIÓN

1

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

Objetivo del Examen MTA

Número de objetivo del examen MTA

Comprender los conceptos de base de datos

Comprender cómo se almacenan 1.1 datos en tablas.

Comprender las bases de datos relacionales

Comprender los conceptos de bases de datos relacionales.

1.2

Comprender el lenguaje de manipulación de datos

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

1.3

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

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

1.4

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

n

Comprender los conceptos de base de datos CONCLUSIÓN

Antes de empezar a crear tablas y otros elementos de una base de datos, primero debe comprender qué es una base de datos y lo valiosa que puede ser esta herramienta. Las ventajas de elegir el tipo de base de datos correcto se pondrán de manifiesto cuando la base de datos se use en la compañía. Una base de datos (bd) es un conjunto organizado de datos que normalmente se almacenan en formato electrónico. Permite escribir, organizar y recuperar datos rápidamente. Las bases de datos tradicionales se organizan por campos, registros y archivos. Para comprender mejor qué es una base de datos, la compararemos a un directorio telefónico. Si tiene un directorio telefónico guardado en disco, el directorio sería el archivo. En el directorio telefónico, tendría una lista de registros, cada uno de los cuales con un nombre, una dirección y un número de teléfono. A su vez, cada una de estas piezas individuales de información (nombre, dirección, número de teléfono) constituiría un campo independiente. Dado que una base de datos puede almacenar miles de registros, es una tarea tediosa abrir una tabla y tener que comprobar los registros de uno en uno hasta encontrar el registro necesario. Por otra parte, el proceso se complica si se tienen que recuperar varios registros. Afortunadamente, no tiene que comprobar los registros de la base de datos de esta manera. Más bien, para recuperar los datos de una base de datos, hay que ejecutar una consulta de base de datos, que es una petición a la base de datos que devuelve información de esta. En otras palabras, una consulta se usa para solicitar información a una base de datos. Si una base de datos contiene cientos de miles de registros con muchos campos por registro, incluso un equipo rápido puede tardar mucho tiempo en realizar una búsqueda en una tabla y recuperar los datos solicitados. Por esta razón, viene bien un índice de base de datos. Un índice es una estructura de datos que mejora la velocidad de las operaciones de recuperación de datos en una tabla de base de datos. La desventaja de los índices es que hay que crearlos y actualizarlos, lo que requiere recursos para el proceso y ocupa espacio en disco. Las bases de datos generalmente se encuentran en servidores de bases de datos, de forma que son accesibles a múltiples usuarios y proporcionan un alto nivel de rendimiento. Un servidor de bases de datos muy popular es Microsoft SQL Server. Los servidores de bases de datos como SQL Server en realidad no albergan programas gráficos, aplicaciones de procesamiento de textos o cualquier otro tipo de aplicación. En su lugar, estos servidores están completamente optimizados para ocuparse únicamente de los objetivos de la propia base de datos, generalmente mediante el uso de hardware avanzado capaz de tratar las altas necesidades de procesamiento de la base de datos. También es importante señalar que estos servidores no actúan como estaciones de trabajo; por lo general, están montados en bastidores situados en un centro de datos central y solo se puede tener acceso a ellos a través del sistema de escritorio de un administrador. Microsoft SQL Server usa tres tipos de archivos para almacenar bases de datos. Los archivos de base de datos primarios, que tienen la extensión .mdf, son los primeros archivos que se crean en una base de datos y pueden contener objetos definidos por el usuario, tales como tablas y vistas, así como las tablas del sistema que SQL Server requiere para mantener un registro de la base de datos. Si la base de datos se vuelve demasiado grande y el primer disco duro se queda sin espacio, puede crear archivos de datos secundarios, que tienen la extensión .ndf, en discos duros físicos independientes. El tercer tipo de archivo que usa SQL Server es un archivo de registro de transacciones. Los archivos de registro de transacciones usan la extensión .ldf y no contienen objetos como tablas o vistas.

Comprender los conceptos básicos de las bases de datos | 3

La mayoría de los usuarios no tienen acceso a una base de datos directamente. En su lugar, usan un sistema de administración de bases de datos (DBMS) para tener acceso a la base de datos de forma indirecta. Un sistema de administración de bases de datos es un conjunto de programas que permiten escribir, organizar y seleccionar datos en una base de datos. Por ejemplo, imagine un agente de viajes que ejecuta un programa de sistema de billetes en el escritorio de su equipo el cual, a su vez, tiene acceso a una base de datos de venta de billetes. Existen tres tipos de bases de datos con los que debe estar familiarizado para poder tomar la decisión adecuada cuando desarrolle sus propias tablas de base de datos: • Bases de datos planas • Bases de datos jerárquicas • Bases de datos relacionales Cada tipo de base de datos tiene sus propias características importantes de diseño.

Comprender las bases de datos planas Las bases de datos planas son de diseño sencillo. Son las que más se usan en los formatos de texto sin formato. Debido a que su objetivo es mantener un registro por línea, hacen que el acceso, el rendimiento y las consultas sean muy rápidos. Un ejemplo de este tipo de base de datos sería el contenido de un archivo .txt o .ini. Las bases de datos planas se consideran “planas” porque son tablas de dos dimensiones que constan de filas y columnas. Cada columna puede considerarse como un campo (por ejemplo, un apellido o un número de identificación de un producto) y cada fila puede considerarse como un registro (como la información de un producto o persona). A continuación, damos un ejemplo de una base de datos plana sencilla en la que una compañía de suministros ha hecho coincidir cada cliente con los pedidos que ese cliente realiza habitualmente, de forma que la recuperación y reordenación resulten más sencillas: id customer order CERTIFICACIÓN DISPONIBLE ¿Cómo se organizan las tablas en una base de datos? 1.1

1 allen

notebook

2 smith

paper

3 dennis

pens

4

ink cartrudges

alex

5 sloan

printer

Comprender las bases de datos jerárquicas Una base de datos jerárquica es similar a una estructura en árbol (como un árbol de familia). En esta base de datos, cada tabla “principal” puede tener varias tablas “secundarias”, pero cada tabla secundaria solo puede tener una tabla principal. La Tabla 1-1 muestra un ejemplo de una base de datos jerárquica principal/secundaria. Esta base de datos se aplica a un departamento de cuatro empleados para el que la compañía acaba de comprar nuevos equipos. Observe que una tabla contiene la información de los empleados, mientras que la otra tabla contiene los datos sobre el equipo que se acaba de adquirir. En este caso, la tabla que aparece en la parte superior es la “principal” y la de la parte inferior es la “secundaria”. Si varias de estas tablas están unidas entre sí, las tablas de la base de datos empiezan a formar una estructura de árbol en la que cada tabla principal puede tener múltiples tablas secundarias y cada tabla secundaria puede a su vez tener tablas secundarias propias; sin embargo, ninguna tabla secundaria tiene más de una tabla primaria.

4 | Lección 1 Tabla 1-1

Tabla principal

Base de datos jerárquica que muestra tablas principales y secundarias

EmpNum

FirstName

LastName

100

Paul

Baker 101

101

Jane

Smith 101

102

Jim

Tate 101

103

Ed

Rosen 102

DeptNum

Tabla secundaria SerialNum

Type

EmpNum

30032334

Computer 100

4323452

laptop 101

342342

Monitor 100

234322

Printer 100

En este ejemplo, la tabla principal contiene los datos de los empleados. Cada fila o registro proporciona información de un empleado, incluido el número del empleado (EmpNum). La tabla secundaria contiene datos de los equipos informáticos y la columna EmpNum vincula cada registro con la tabla primaria. Es importante señalar que cada pieza del equipo se debe incluir por separado. Como se está usando una base de datos jerárquica, se pueden asignar varios dispositivos de equipo a cada empleado.

Comprender las bases de datos relacionales CERTIFICACIÓN DISPONIBLE ¿En qué se diferencian las bases de datos relacionales de las bases de datos planas y las bases de datos jerárquicas? 1.2

El último tipo de base de datos, que es el más importante, es la base de datos relacional. 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 a la tabla sin necesidad de reorganizar la propia tabla. Sin embargo, a diferencia de las bases de datos jerárquicas, una tabla de una base de datos relacional puede tener varias tablas principales. En la Tabla 1-2 se muestra un ejemplo de una base de datos relacional. La primera tabla principal muestra los datos de los vendedores de una compañía y la segunda tabla principal enumera los modelos de los productos que ha vendido la compañía. Mientras tanto, en la tabla secundaria se enumeran los clientes que han comprado los modelos de la empresa; esta tabla secundaria está vinculada con la primera tabla principal por SalesNum y con la segunda tabla principal por Model.

Comprender los conceptos básicos de las bases de datos | 5 Tabla 1-2 Base de datos relacional que muestra dos tablas principales y una tabla secundaria

Tabla principal 1

Tabla principal 2

SalesNum

FirstName

LastName

DeptNum

100

Paul Baker 101

2200MX $75000 Red

101

Jane Smith 101

42CRS $55000 Gray

Model

Costs

Color

102 Jim Tate 101’

4232DR $60000 Red

103

2201MX $80000 Blue

Ed

Rosen 102

Tabla secundaria FirstName

LastName

IDNum

Model

SalesNum

Pete

Wilson

1001 2200MX 100

Jim

Cline

1002 42CRS 101

Omar

Salize

1003 4232DR 103

Louise

Peterson 1004 2201MX 100

Comprender los fundamentos de las bases de datos Una sencilla base de datos con una tabla es similar a una hoja de cálculo que contiene filas y columnas. Sin embargo, a diferencia de una hoja de cálculo, una base de datos permite almacenar miles de filas de datos y después tener acceso a la información más rápidamente que mediante la lectura de una hoja de cálculo. Una hoja de cálculo es a menudo el punto de partida para crear una base de datos. Con una hoja de cálculo, es fácil crear títulos y comenzar a escribir los datos. Agregar, eliminar y reordenar los títulos, así como darles formato es sencillo. Por otra parte, los datos se pueden ordenar fácilmente en uno o más títulos. También es fácil insertar, eliminar y filtrar las filas que coinciden con uno o más modelos de un título. Muchas bases de datos acumularán miles de filas de datos. Según sus necesidades, puede que desee crear tablas adicionales que contengan parte de esta información. En una hoja de cálculo, esto sería similar a agregar hojas de cálculo adicionales. Sin embargo, las hojas de cálculo están diseñadas para contener un número limitado de filas por hoja. Por otra parte, cuando se abre una hoja de cálculo, el archivo completo se carga en la memoria del equipo, por lo que si hay muchos datos almacenados, el archivo puede dar un error de memoria insuficiente al cargar los datos. Vemos, pues, que los beneficios de usar una hoja de cálculo empiezan a disminuir. Es a partir de este punto cuando cobra sentido recurrir una base de datos. Esta comparación resalta las tres características fundamentales de las bases de datos: • Están diseñadas para poder almacenar miles de millones de filas de datos. • Su límite es el espacio en disco duro que se encuentra disponible en el equipo. • Están optimizadas para poder usar toda la memoria disponible de un equipo, mejorando así el rendimiento.

6 | Lección 1

COMPARACIÓN DE HOJAS DE CÁLCULO CON TABLAS DE BASES DE DATOS Como probablemente ya sabe, una hoja de cálculo puede contener varias hojas, cada una de las cuales almacena la información agrupada de forma lógica en un formato tabular. Una hoja es comparable a una tabla de base de datos y los títulos que contiene se pueden comparar con las columnas o campos de una tabla de base de datos. En una hoja de cálculo con varias hojas, como la que se muestra en la Figura 1-1, cada hoja puede considerarse como una tabla distinta que pertenece a la misma base de datos. Figura 1-1 Hoja de cálculo con varias hojas

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

COMPRENDER LOS VALORES CALCULADOS En una hoja de cálculo, se pueden usar fórmulas para calcular los valores a partir de otra información en la misma fila o columna, como se muestra en la Figura 1-2. Un valor calculado es esencialmente un valor que se obtiene de la realización de algún tipo de cálculo o fórmula en un valor de entrada especificado. Las bases de datos también se pueden usar para generar valores calculados, ya sea en la base de datos, dentro de los informes generados a partir de la base de datos o en la aplicación que está teniendo acceso a la base de datos. Figura 1-2 Hoja de cálculo con valores calculados

Comprender los conceptos básicos de las bases de datos | 7

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

*

Para comprender los modelos de base de datos relacionales, piense en las formas en que una tabla se puede relacionar con una o más tablas.

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

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

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

INCLUIR DE ELEMENTOS DEL LENGUAJE Los objetos de bases de datos están divididos intrínsecamente en dos grandes categorías: almacenamiento y programación. Una tabla está estructurada por columnas y filas, y después cada columna almacena los datos clasificados como un tipo de datos. En la Figura 1-4 se muestra un ejemplo de los atributos de columna para una base de datos. Existen varios tipos de datos para elegir, incluidos los tipos integrados y sus propios tipos de datos definidos por el usuario. Los tipos de datos se tratan con mayor detalle en la lección 2.

8 | Lección 1 Figura 1-4 Estructura de base de datos donde se muestran atributos de columna

*

TOME NOTA

Las bases de datos avanzadas, como SQL Server, analizan periódicamente consultas y crean índices, según sea necesario, para optimizar el rendimiento. Puede encontrar prueba de ello echando un vistazo al índice de la base de datos. Las restricciones son limitaciones o reglas aplicadas a un campo o columna para asegurar que los datos que no se consideran válidos no se incluyen. Por ejemplo, si hay que escribir la edad de una persona, los datos que se escriban deben ser un número positivo; la edad de una persona no puede ser un número negativo. Con SQL Server 2008 están disponibles una serie de restricciones, incluidas las siguientes: • Una restricción única permite al administrador de bases de datos identificar específicamente qué columna no debería contener valores duplicados. • Una restricción de comprobación permite al administrador limitar los tipos de datos que un usuario puede insertar en la base de datos. • Se usa una restricción predeterminada para insertar un valor predeterminado en una columna. Si no se especifica ningún otro valor, se agregará el valor predeterminado a todos los registros nuevos. • Una restricción no nula asegura que se incluyan datos en una celda. En otras palabras, la celda no se puede dejar en blanco. También indica que no se puede incluir un nuevo registro o actualizar un registro sin agregar un valor a dicho campo. • La restricción de clave principal identifica de forma exclusiva cada registro de una tabla de base de datos. La clave principal debe contener valores únicos y no puede contener valores NULL. Cada tabla debe tener una clave principal y, además, cada tabla puede tener únicamente una clave principal. • Una restricción de clave externa en una tabla apunta a una clave principal en otra tabla.

Comprender los conceptos básicos de las bases de datos | 9

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

TOME NOTA

*

Una clave externa también se conoce como una autoreferencia.

Las columnas marcadas como claves externas pueden contener valores nulos. Esto no es una práctica estándar deseable, sin embargo, puede que no se puedan comprobar las restricciones si una clave externa se compone de dos o más columnas y contiene valores nulos. Esto indica que la integridad de los datos no se puede garantizar. También es posible que una restricción de clave externa haga referencia a las columnas de la misma tabla; esto se conoce como autoreferencia. Cuando se usa una autoreferencia para realizar una consulta en una tabla, esta disposición se conoce como autocombinación. Como ejemplo de una tabla de autoreferencia, supongamos que desea crear una tabla Generations que contiene nombres de personas que usan columnas llamadas PersonID, PersonName e MotherID. La madre es también una persona almacenada en la tabla Generations, por lo que puede crear una relación de clave externa de MotherID (la columna de clave externa) que haga referencia a PersonID (la columna de clave principal).

Uso de la interfaz de SQL Server Management Studio Al instalar Microsoft SQL Server, también se instala SQL Server Management Studio (SSMS), que es la herramienta principal para administrar el servidor y sus bases de datos mediante una interfaz gráfica. La característica central de SSMS es el Explorador de objetos, lo que permite a los usuarios examinar, seleccionar y administrar cualquiera de los objetos en el servidor (vea la Figura 1-6). SSMS también se puede usar para ver y optimizar el rendimiento de la base de datos, así como para crear y modificar bases de datos, tablas e índices.

10 | Lección 1 Figura 1-6 SQL Server Management Studio

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

Comprender los conceptos básicos de las bases de datos | 11

• SQLCMD. Aplicación de línea de comandos que se incluye con Microsoft SQL Server y expone las características de administración de SQL Server. Permite escribir y ejecutar consultas SQL desde el símbolo del sistema. También actúa como un lenguaje de scripting para crear y ejecutar un conjunto de instrucciones SQL como un script. Estos scripts se almacenan como archivos .sql y se usan bien para administrar bases de datos o bien para crear el esquema de base de datos durante la implementación de bases de datos. • Transact-SQL. Medio principal de programación y administración de SQL Server. Expone palabras clave de modo que se pueden crear y administrar bases de datos y sus componentes, así como supervisar y administrar el propio servidor. Cuando se usa SSMS para realizar una tarea o acción, se están ejecutando comandos Transact-SQL. Observe que debe tener instalado SQL Server 2008 en el sistema antes de pasar a la siguiente sección. CARGUE LA INTERFAZ DE SSMS PREPÁRESE. Antes de comenzar estos pasos, asegúrese de iniciar SSMS.

1. Haga clic en el botón Inicio y, a continuación, haga clic en Microsoft SQL Server 2008 para expandir la selección de programas. 2. Haga clic en SQL Server Management Studio. Se abrirá Management Studio y aparecerá el cuadro de diálogo Conectar al servidor. 3. Cambie la información de conexión al servidor (si es necesario) y haga clic en Conectar. Después de haber configurado correctamente el servidor, aparecerá la interfaz de SQL Server Management Studio.

: SOLUCIÓN DE PROBLEMAS Es posible que su equipo no tenga instalada la interfaz de SSMS como parte del programa SQL Server 2008. Si no encuentra la herramienta Management Studio en Archivos de programa, es posible que tenga que agregarla como una actualización de la instalación del servidor. Para ello, inserte el CD de instalación y haga clic en el botón Avanzar en la ventana Componentes para instalar, cuando aparezca.

*

TOME NOTA

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

1. Abra SSMS haciendo clic en Inicio > Todos los programas > Microsoft SQL Server 2008 > SQL Server Management Studio. 2. Asegúrese de que el motor de base de datos esté seleccionado y, a continuación, haga clic en el botón Conectar. 3. Haga clic en el signo más (+) que se encuentra junto a Bases de datos para que se expanda. 4. Haga clic con el botón derecho del mouse en Bases de datos y después seleccione Nuevas bases de datos en el menú que aparece. 5. En el campo de nombre Base de datos, escriba el nombre de la base de datos que desea crear. A continuación, haga clic en el botón Aceptar.

12 | Lección 1

ELIMINAR UNA BASE DE DATOS MEDIANTE LA INTERFAZ DE SSMS PREPÁRESE. De vez en cuando, es posible que desee quitar las bases de datos que ya no se usan. Para realizar esta acción con la interfaz de SSMS, siga estos pasos:

1. Abra SSMS haciendo clic en Inicio > Todos los programas > Microsoft SQL Server 2008 > SQL Server Management Studio. 2. Asegúrese de que el motor de base de datos está seleccionado y, a continuación, haga clic en el botón Conectar. 3. Haga clic en el signo más (+) que se encuentra junto a Bases de datos para que se expanda. 4. Haga clic con el botón derecho del mouse en el nombre de la base de datos que desea eliminar y, a continuación, seleccione Eliminar en el menú que aparece. 5. Seleccione Cerrar conexiones existentes y después haga clic en el botón Aceptar.

Es importante tener en cuenta que SQL Server tiene una extensa área de ayuda. Además, al instalar SQL Server, tiene la opción de instalar los libros en pantalla y tutoriales del servidor. Por lo tanto, si desea encontrar información sobre una determinada opción o comando, debe buscar en estos recursos. Por supuesto, si no encuentra lo que busca, no dude en realizar la búsqueda en Internet.

n Comprender CONCLUSIÓN

CERTIFICACIÓN DISPONIBLE ¿Qué comandos comunes que se usan con SQL son comandos de DML? 1.3

el lenguaje de manipulación de datos (DML) Al crear bases de datos, es importante comprender lo que los elementos del lenguaje pueden hacer dentro de la estructura de la base de datos. El lenguaje de 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. Las instrucciones principales de DML incluyen lo siguiente: • SELECT: recupera filas de la base de datos y permite seleccionar una o varias filas 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.

n

Comprender el lenguaje de definición de datos (DDL) CONCLUSIÓN

Las instrucciones del lenguaje de definición de datos (DDL) forman parte de la secció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 ¿Qué comandos comunes de SQL son comandos de DDL? 1.4

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. La interfaz que se usa para crear estas instrucciones de DDL subyacentes es la interfaz de usuario de SSMS, como se muestra en la Figura 1-8.

Uso de las instrucciones de DDL Figura 1-8 Interfaz de usuario de SQL Server Management Studio

La interfaz de usuario de SSMS permite diseñar visualmente instrucciones de DDL. Una tarea de instrucción de script DDL siempre se puede completar a través de la interfaz de usuario de SSMS, pero no todas las opciones que puede que se deseen usar con el script DDL se pueden realizar a través de esta interfaz. Por lo tanto, debe estar familiarizado con las instrucciones de DDL USE, CREATE, ALTER y DROP para poder crear y administrar tablas, tipos de datos definidos por el usuario, vistas, desencadenadores, funciones y procedimientos almacenados.

CERTIFICACIÓN DISPONIBLE ¿Qué comando de DDL usaría para cambiar el contenido de la base de datos y cuál usaría para crear una tabla? 1.4

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. • DROP: quita un objeto de la base de datos. • TRUNCATE: quita filas de una tabla y libera el espacio que usan las filas. • DELETE: quita filas de una tabla pero no libera el espacio que usan las filas que se han quitado. A continuación, se proporciona una explicación más detallada y un ejemplo de cada una de estas instrucciones DDL principales.

14 | Lección 1

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

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

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

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

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

Comprender los conceptos básicos de las bases de datos | 15

También puede usar ALTER para cambiar la definición de una vista, procedimiento almacenado, desencadenador o función. Por ejemplo, la siguiente secuencia de comandos redefine la vista para incluir la columna Price: ALTER VIEW Size AS SELECT ProductID, ProductName, Price FROM Shirt WHERE ProductType = ‘Size’; GO SELECT * FROM Size —— Resultados: —— ProductID

ProductName

Price

—— ————————

————————

————————

—— 1

Red

13.50

—— 2

Blue

13.50

—— 3

Orange

10.00

—— 4

Black

12.00

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

DROP La instrucción DROP en realidad quita un objeto de una base de datos, pero si los demás objetos dependen del objeto que se está intentando quitar, la instrucción será incorrecta y se generará un error. En el siguiente ejemplo se muestra cómo se puede usar DROP para eliminar datos de la tabla Shirt, después los quita de la vista Size y finalmente quita la tabla Shirt de la base de datos. En este ejemplo, también tratamos de eliminar la tabla Person.Contact pero, como habrá observado, esta operación no tiene éxito porque hay otros objetos que dependen de la tabla Person.Contact. DELETE FROM Shirt Select * FROM Size —— Resultados: —— ProductID

ProductName

Price

—— ————————

————————

————————

—— (0 filas afectadas) DROP VIEW Size; GO DROP TABLE Person.Contact —— Resultados: —— Msj 3726, Nivel 16, Estado 1, Línea 1 —— No se puede eliminar el objeto ‘Person.Contact’ porque la instrucción FOREIGN KEY hace referencia al objeto.

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

16 | Lección 1

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

*

Para eliminar datos de las tablas en una base de datos grande, use TRUNCATE: es más eficaz. Use DELETE en bases de datos más pequeñas.

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

DELETE FROM User;

De igual forma, para eliminar un empleado con el número de identificación 200 de la tabla User, debe escribir el siguiente comando:

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

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

RESUMEN DE CONOCIMIENTOS En esta lección, ha aprendido lo siguiente: • Una base de datos (bd) es un conjunto organizado de datos que normalmente se almacenan en formato electrónico. Permite escribir, organizar y recuperar datos rápidamente. • Microsoft SQL Server usa tres tipos de archivos para almacenar bases de datos. Los archivos de datos primarios, con la extensión .mdf, son los primeros archivos creados en una base de datos y pueden contener objetos definidos por el usuario, tales como tablas y vistas, así como las tablas del sistema requeridas por SQL Server para mantener un registro de la base de datos. • Si una base de datos se vuelve demasiado grande y el primer disco duro se queda sin espacio, puede crear archivos de datos secundarios, con la extensión .ndf, en discos duros físicos independientes para que la base de datos tenga más espacio. • El tercer tipo de archivo que usa SQL Server es un archivo de registro de transacciones. Los archivos de registro de transacciones usan la extensión .ldf y no contienen ningún objeto como tablas o vistas. • Para recuperar datos en una base de datos, se ejecuta una consulta de base de datos. Dicho de otra forma, una consulta se usa para solicitar información a la base de datos y devuelve datos.

Comprender los conceptos básicos de las bases de datos | 17 • Un índice de base de datos es una estructura de datos que mejora la velocidad de las operaciones de recuperación de datos en una tabla de base de datos. • La mayoría de los usuarios no tienen acceso a las bases de datos directamente. En su lugar, usan un sistema de administración de bases de datos (DBMS) para tener acceso a ellas de forma indirecta. • Una base de datos plana es de diseño sencillo. Estas bases de datos se usan normalmente en formatos de texto sin formato y su propósito es contener un registro por línea, agilizando el acceso y las consultas. • Las tablas que se usan para almacenar datos son objetos bidimensionales que consisten en filas y columnas. • Una base de datos jerárquica es similar a una estructura en árbol (como un árbol de familia). Cada tabla principal puede tener varias tablas secundarias, pero cada tabla secundaria solo puede tener una tabla principal. • Una base de datos relacional es similar a una base de datos jerárquica en la que los datos se almacenan en tablas y cualquier nueva información se agrega automáticamente en la tabla, sin necesidad de reorganizar la propia tabla. Sin embargo, a diferencia de las tablas en una base de datos jerárquica, una tabla en una base de datos relacional puede tener varias tablas principales. • Generalmente, las bases de datos se instalan en servidores de bases de datos de forma que son accesibles a múltiples usuarios y proporcionan un alto nivel de rendimiento. Un servidor de bases de datos muy popular es Microsoft SQL Server. • Las restricciones son limitaciones o reglas aplicadas a un campo o columna para asegurar que los datos que no se consideran válidos no se incluyen. • SQL Server Management Studio (SSMS) es la primera herramienta que administra un servidor y sus bases de datos mediante una interfaz gráfica. • El lenguaje de manipulación de datos (DML) es el elemento del lenguaje que le permite usar las instrucciones principales INSERT, UPDATE, DELETE y MERGE para manipular datos en cualquier tabla de SQL Server. • El lenguaje de definición de datos (DDL) es un subconjunto del lenguaje Transact-SQL que se ocupa de la creación de objetos de base de datos como tablas, restricciones y procedimientos almacenados.

n Evaluación

de conocimientos Rellene los espacios en blanco Complete las oraciones siguientes escribiendo la palabra o palabras correctas en los espacios en blanco proporcionados. 1. Los objetos de base de datos están divididos en dos categorías: y . 2. Las tablas creadas mediante la instrucción

se usan para almacenar datos.

3. Las restricciones pueden definir relaciones de identidad entre tablas de forma continua. También se conocen como restricciones. 4. Para poder usar el objeto views para ver un conjunto de datos, debe usar la instrucción de Transact-SQL para mostrar datos de las tablas adyacentes. 5. DDL influye en , mientras que reales almacenados en tablas.

influye en los datos

6. El servidor de bases de datos de Microsoft que hospeda bases de datos relacionales se llama . 7. Las instrucciones de DDL principales son ,

y

8. Las instrucciones de DML principales son , y

.

9. Las vistas del sistema pertenecen al 10. La restricción de clave externa es un identificador

,

,

. ,

,

. .

18 | Lección 1

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

Comprender los conceptos básicos de las bases de datos | 19 10. ¿Qué instrucción SQL se usa para actualizar datos en una base de datos? a. SAVE b. MODIFY c. SAVE AS d. UPDATE

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.

Escenario 1-2: Diseñar una base de datos relacional Le han contratado para crear una base de datos relacional que sirva de apoyo a un negocio de venta de automóviles. Necesita almacenar información sobre los empleados, el inventario y las ventas totales de la compañía. También debe tener en cuenta el hecho de que cada vendedor recibe un porcentaje diferente de comisión por sus ventas. ¿Qué tipo de tablas y columnas creará en la base de datos relacional y cómo vinculará las tablas?

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?

Escenario 1-4: Crear bases de datos mediante la interfaz gráfica de SSMS Su compañía, AdventureWorks, ha decidido expandirse ofreciendo viajes interestelares. Le han pedido que cree una nueva base de datos llamada Planets en el servidor Microsoft SQL mediante la interfaz gráfica de SSMS. ¿Qué pasos completaría para crear esta base de datos?

2

LECCIÓN

Crear objetos de base de datos

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

Objetivo del Examen MTA

Número de Objetivo del Examen MTA

Definir tipos de datos

Elegir tipos de datos.

2.1

Crear y usar tablas

Comprender las tablas 2.2 y cómo crearlas.

Crear vistas

Crear vistas.

2.3

Crear procedimientos almacenados

Crear procedimientos almacenados y funciones.

2.4

TÉRMINOS CLAVE tipo de datos

tablas

inyección de código SQL

vistas

procedimientos almacenados

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

n  Definir

tipos de datos

CONCLUSIÓN

20

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 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.

Crear objetos de base de datos | 21

Un tipo de datos es un atributo que especifica el tipo de datos que un objeto puede contener, así como el número de bytes que ocupa cada tipo de datos. Por ejemplo, varios tipos de datos controlan únicamente números enteros, lo que los convierte en idóneos para conteo o para identificación. Otros tipos de datos permiten números decimales y, por lo tanto, son muy útiles cuando se almacenan valores relacionados con dinero. Sin embargo, hay tipos de datos que están diseñados para almacenar cadenas o varios caracteres y así poder definir etiquetas, descripciones y comentarios. Por último, encontramos varios tipos de datos que pueden almacenar fechas, horas, números binarios que constan de varios 0 y 1, e imágenes. Como regla general, si se tienen dos tipos de datos similares que solo difieren en el número de bytes que usa cada uno, uno de los tipos de datos tendrá mayor intervalo de valores u ofrece mayor precisión, o ambos.

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

CERTIFICACIÓN DISPONIBLE ¿Qué tipo de datos usaría para registrar el costo de un automóvil? ¿Qué tipo usaría para contar el número de autos que hay en existencias? 2.1

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 • Tipos de datos CLR • Tipos de datos espaciales Generalmente usará algunos de estos tipos de datos integrados, pero empleará otros de forma más esporádica. De cualquier forma, es importante comprender estos tipos de datos y cómo se usan en las bases de datos. En las tablas 2-1 y 1-2 se muestran los tipos de datos de uso más frecuente. Tenga en cuenta que en la Tabla 2-2, el asterisco (*) indica las adiciones más recientes de tipos de datos de SQL Server 2008.

Tabla 2-1 Tipos de datos que se usan con más frecuencia

Tipo de Datos Explicación 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

Tipo de Datos

Uso o Descripción

Almacenamiento

Numéricos exactos: bit

Entero con valor de 1 o de 0. (Las columnas de 9 a 16 bits se almacenan como 2 bytes y el tamaño de almacenamiento continúa aumentando a medida que aumenta el número de bits en una columna).

1 byte

tinyint

Dato entero de 0 a 255.

1 byte

smallint

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

2 bytes

int

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

4 bytes

bigint

Dato entero de –2^63 (–9.223.372.036.854.775.808) a 2^63–1 (9.223.372.036.854.775.807).

8 bytes

numeric

Precisión y escala fijas. Intervalo de valores válidos de –10^3811 hasta 10^38–1. Varía

decimal

Precisión y escala fijas. Intervalo de valores válidos de –10^3811 hasta 10^38–1. Varía

smallmoney

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

money

Valores monetarios o de moneda –922.337.203.685.477,5808 8 bytes a 922.337.203.685.477,5807.

4 bytes

Crear objetos de base de datos | 23 Tabla 2-2 (continuación)

Tipo de Datos

Uso o Descripción

Almacenamiento

Numéricos aproximados: datetime

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

8 bytes

smalldatetime

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

4 bytes

date*

Define una fecha. Intervalo: del 01-01-0001 al 31-12-9999. (Del 1 de enero del año 1 después de Cristo al 31 de diciembre de 9999). Precisión: un día.

3 bytes

time*

Define la hora del día. Esta hora no tiene en cuenta la diferencia de zona horaria y se basa en un reloj de 24 horas. Intervalo: de 00:00:00.0000000 hasta 23:59:59.9999999. Precisión: 100 nanosegundos.

5 bytes

datetimeoffset*

Define una fecha combinada con una hora del día que tiene en cuenta la zona horaria y que se basa en un reloj de 24 horas. Intervalo: del 01-01-0001 hasta el 31-12-9999 (del 1 de enero del año 1 después de Cristo hasta el 31 de diciembre de 9999). Intervalo: de 00:00:00 hasta 23:59:59.9999999. Precisión: 100 nanosegundos.

10 bytes

datetime2*

Define una fecha que se combina con una hora del día basada en un reloj de Varía 24 horas. Intervalo: del 01-01-0001 hasta el 31-12-999 (1 de enero del año 1 después de Cristo hasta el 31 de diciembre de 9999). Intervalo: de 00:00:00 hasta 23:59:59.9999999. Precisión: 100 nanosegundos.

Cadenas de caracteres: char

Tipo de datos de caracteres de longitud fija.

Varía

VARCHAR

Tipo de datos de caracteres de longitud variable.

Varía

text

Este tipo de datos se quitará en versiones futura de SQL; por lo tanto, Varía use varchar(max) en su lugar.

Cadenas de caracteres Unicode: nchar

Tipo de datos de caracteres de longitud fija.

Varía

nvarchar

Tipo de datos de caracteres de longitud variable.

Varía

ntext

Este tipo de datos se quitará en versiones futuras de SQL; por lo tanto, use nvarchar(max) en su lugar.

Varía

binary

Datos binarios de longitud fija.

Varía

varbinary

Datos binarios de longitud variable.

Varía

image

Este tipo de datos se quitará en versiones futuras de SQL; por lo tanto, use varbinary(max) en su lugar.

Varía

sql_variant

Almacena valores de varios tipos de datos que admiten SQL Server, excepto text, ntext, image, timestamp y sql_variant.

Varía

uniqueidentifier (UUID)

GUID de 16 bytes.

16 bytes

Cadenas binarias:

Otros tipos de datos:

24 | Lección 2 TOME NOTA

*

Cada columna, variable local, expresión y parámetro tiene siempre un tipo de datos relacionados y cada uno de los tipos de datos es un atributo.

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

Uso de tipos de datos numéricos exactos Los tipos de datos numéricos exactos son los tipos de datos más comunes que SQL Server usa para almacenar información numérica. Algunos de estos tipos de datos permiten solo números enteros, mientras que otros permiten número decimales. Los número exactos incluyen (pero no se limitan a) int, bigint, bit, decimal, numeric, money y smallmoney: • int es el principal tipo de datos de valores enteros (número entero). • bigint está pensado para usarse cuando los valores enteros pueden exceder el intervalo admitido por el tipo de datos int. Las funciones solo devuelven bigint si la expresión original es un tipo de datos bigint. Hay que tener en cuenta que SQL Server no promueve automáticamente otros tipos de datos enteros (por ejemplo, tinyint, smallint e int) en bigint. • bit es un tipo de datos entero de Transact-SQL que toma un valor 1, 0 o NULL y genera las siguientes características: °° El motor de base de datos de SQL Server optimizará el almacenamiento de columnas de bit, lo que indica que si la tabla tiene columnas de 8 bits o menos de ancho, estas columnas se almacenarán como 1 byte, y si tiene columnas de 9 a 16 bits, se almacenarán como 2 bytes. Es importante darse cuenta de que 1 byte es igual a 8 bits cuando se consideran tipos de datos. °° Los valores de cadena TRUE y FALSE se pueden convertir en valores de bit. De forma específica, TRUE se convierte en 1 y FALSE se convierte en 0. • decimal y numeric también son tipos de datos Transact-SQL con precisión y escala fijos. La sintaxis para estos tipos de datos se expresa de la siguiente manera: decimal[(p[,s])] numeric[(p[,s])]

Crear objetos de base de datos | 25

°° Precisión (p) es el número total máximo de dígitos decimales que se pueden almacenar, tanto a la izquierda como a la derecha del separador decimal. Este valor debe ser un valor 1 como mínimo y un valor 38 como máximo. El número de precisión predeterminado es 18. °° Escala (s) refleja el número máximo de dígitos decimales que se pueden almacenar, tanto a la izquierda como a la derecha del separador decimal. Este valor debe ser un valor comprendido entre 0 y p, pero solo se puede especificar si también se ha especificado la precisión. La escala predeterminada es 0. • money y smallmoney son tipos de datos de Transact-SQL que se deben usar para representar valores monetarios o de moneda. Ambos tipos de datos tienen una precisión de una diezmilésima de las unidades monetarias que representan.

Uso de tipos de datos numéricos aproximados Los tipos de datos numéricos aproximados no se usan con tanta frecuencia como otros tipos de datos de SQL Server. Sin embargo, si se necesita más precisión (más posiciones decimales) de la que está disponible con los tipos de datos numéricos exactos, se puede usar float o real, aunque hay que tener en cuenta que estos tipos de datos suelen requerir bytes adicionales de almacenamiento. float y real se usan junto con los datos numéricos de punto flotante. Esto significa que

todos los datos de punto flotante son aproximados; por tanto, no todos los valores que están representados por un intervalo de tipo de datos aproximado se pueden expresar con precisión. La sintaxis de real es float(n); donde n es el número de bits que se usan para almacenar la mantisa del número float en notación científica y, por lo tanto, dicta su precisión y el tamaño de almacenamiento si n se ha especificado realmente. El valor de n debe ser un valor entre 1 y 53, donde el valor predeterminado es 53. La mantisa es el número entero y la parte decimal de un valor, pero sin incluir marcadores de posición y exponentes. Por ejemplo, en 3,42732, el número 3,42732 es la mantisa. Pero en 3,23×105, donde el valor es equivalente a 323.000, la mantisa es 3,23.

USO DE TIPOS DE DATOS DE FECHA Y HORA Los tipos de datos de fecha y hora se refieren, por supuesto, a fechas y horas. Estos tipos de datos incluyen date, datetime, datetime2, datetimeoffset, smalldatetime y time. El valor date se usa para definir una fecha que se inicia el 1 de enero del año 1 después de Cristo al 31 de diciembre de 9999. Como cualquier tipo de datos, el tipo de datos date tiene los descriptores que se muestran en la Tabla 2-3. Aunque las fechas en sí no se ven afectadas por el horario de verano, es posible usar las fechas para determinar si la hora en un día determinado refleja el horario de verano. Aunque parte de la información de la Tabla 2-3 no requiere explicación, parte de ella sí. Por ejemplo, el formato literal de cadena predeterminado indica que, de forma predeterminada, se almacenará la fecha con el día (dos dígitos), el mes (dos dígitos) y el año. Puede almacenar cualquier día a partir del 1 de enero del año 1 después de Cristo al 31 de diciembre de 9999. La longitud de caracteres indica que para que aparezca la fecha, se necesitan 10 caracteres, por ejemplo 17-03-2012. La escala de precisión muestra que son 10 números enteros, no se permiten números decimales. Para almacenar el campo de fecha son necesarios 3 bytes de datos. Además, es solo exacto en un día. De esta manera, no se pueden usar números decimales o fracciones cuando se trata de valores de fecha. El valor predeterminado es 01-01-1900, lo que indica que si no hay nada definido se asignará automáticamente el 1 de enero de 1900, usando el calendario gregoriano, Por último, no usa el horario de verano.

26 | Lección 2 Tabla 2-3 Descripciones de Date

Propiedad

Valor

Sintaxis

Date

Uso

DECLARE @MiFecha date



CREATE TABLE Tabla1 (Columna1 date)

Formato literal de cadena predeterminado (lo usan clientes de nivel inferior)

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

Rango

del 01-01-0001 al 31-12-9999 1 de enero, del año 1 después de Cristo, al 31 de diciembre del año 9999 después de Cristo

Intervalo de elementos

AAAA son cuatro dígitos del 0001 al 9999 que representan un año, MM son dos dígitos del 01 al 12 que representan un mes en un año determinado y DD son dos dígitos del 01 al 31 que, según el mes, representan un día del mes especificado

Longitud de caracteres

10 posiciones

Precisión, escala

10, 0

Tamaño de almacenamiento

3 bytes, fijos

Precisión

Un día

Valor predeterminado

1900-01-01 Este valor se usa en la parte de fecha adjunta para la transformación intrínseca de time a datetime2 o datetimeoffset

Calendario Gregoriano

TOME NOTA

*

Use los tipos de datos time, date, datetime2 y dateoffset en nuevos trabajos ya que adaptan al estándar SQL y son más portátiles. Todos menos date proporcionan más precisión para aplicaciones de nanosegundos.

Precisión de fracciones de segundo definidas por el usuario

No

Tiene en cuenta y conserva la zona horaria

No

Tiene en cuenta el horario de verano

No

En 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 datos smalldatetime en su lugar. El tipo de datos DateTimeOffset es similar al tipo de datos DateTime, pero también mantiene un registro de las zonas horarias. Por ejemplo, si se tienen dos valores DateTimeOffset con la misma hora universal coordinada (que es la hora del meridiano de Greenwich en la mayoría de los casos), hora UTC, en distintas zonas horarias, los dos valores serán los mismos. Si se desea crear un conjunto de datos en el que la hora del día tiene en cuenta la diferencia de zona horaria y está basada en un reloj de 24 horas, debe usarse datetimeoffset.

Crear objetos de base de datos | 27

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

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

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

La sintaxis para la función Convert es: CONVERT (tipo_datos [ (longitud) ], expresión [,estilo ])

donde puede especificar cuántos dígitos o caracteres tendrá el valor. Por ejemplo: CONVERT(nvarchar(10), OrderDate, 101)

Esta sintaxis convertirá OrderDate, que es un tipo de datos DataTime, en nvarchar. El estilo 101 representa la fecha de EE. UU. con el siglo, mm/dd/yyyy.

28 | Lección 2 Figura 2-1 Tipos de conversiones implícitas y explícitas

USO DE CADENAS DE CARACTERES Un carácter normal usa un byte de almacenamiento por cada carácter, lo que le permite definir uno de los 256 caracteres posibles (8 bits en un byte y 2^8 = 256), con capacidad para inglés y algunos idiomas europeos. Un carácter Unicode usa dos bytes de almacenamiento por carácter, por lo que se pueden representar uno de los 65.536 caracteres (16 bits en 2 bytes y 2^16 = 65.536). El espacio adicional permite a Unicode almacenar caracteres de casi cualquier idioma, incluyendo el chino, japonés, árabe, etcétera.

TOME NOTA

*

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

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

Sin embargo, cuando se expresa un carácter Unicode literal, la letra N (de Nacional) debe aparecer como prefijo de las comillas simples. Por ejemplo: N‘Esta es la apariencia de un carácter Unicode literal’

Cuando se usa un elemento VAR, SQL Server preserva el espacio en la fila en la que ese elemento reside a partir del tamaño definido de la columna (y no a partir del número real de caracteres en la propia cadena de caracteres), más un extra de dos bytes de datos para

Crear objetos de base de datos | 29

datos de desplazamiento. Por ejemplo, si se desea especificar que una cadena admite un máximo de 25 caracteres únicamente, debería usar VARCHAR(25).

TOME NOTA

*

Si n no se especifica en una definición de datos o la instrucción de declaración de variable, la longitud predeterminada es 1. Si n no se especifica en la función CAST, la longitud predeterminada es 30.

TOME NOTA

*

Use nchar si el tamaño de las entradas de datos de las columnas va a ser similar. Use nvarchar si el tamaño de las entradas de datos de las columnas va a variar de forma considerable, en casos como archivos binarios, archivos de imágenes, variantes SQL y UUID.

n Crear

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. Sin embargo, es posible definir el tipo de datos de longitud variable con el especificador MAX, en vez de usar el máximo número de caracteres identificados en la cadena. Por ejemplo, cuando una columna se define con el especificador MAX, se almacena en línea en la fila un valor con un tamaño determinado hasta un umbral determinado (el valor predeterminado es 8.000). A continuación, se debe especificar un valor con un tamaño mayor que el umbral predeterminado, ese valor se almacenará fuera de la fila y se identificará como un objeto grande o LOB. Estos son los tipos de datos de caracteres que 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 debe estar comprendido entre 1 y 8.000, haciendo que el tamaño de almacenamiento sea de n bytes. El otro tipo de datos no Unicode, varchar[(n|max)], es un conjunto de datos de longitud variable que puede constar de 1 a 8000 caracteres. Microsoft SQL Server admite solo dos tipos de cadenas de caracteres: normal y Unicode. Los tipos de datos normales incluyen los identificados con CHAR y VARCHAR. Los tipos de datos Unicode se identifican con NCHAR y NVARCHAR. ¿Fácil? Sí, en el sentido de que las diferencias entre normal y Unicode son los bytes de almacenamiento que se usan en cada tipo. Las cadenas de caracteres Unicode nchar y nvarchar pueden ser fijas o variables, como las cadenas de caracteres normales; sin embargo, estas cadenas usan el conjunto de caracteres UNICODE UCS-2.

y usar tablas

CONCLUSIÓN

En esta sección, será capaz de entender el propósito de las tablas. También explorará cómo crear tablas en una base de datos usando la sintaxis ANSI SQL adecuada. El propósito de una tabla es proporcionar una estructura para almacenar datos en una base de datos relacional. Sin esta estructura, aumenta la probabilidad de que se produzca un error en la base de datos. En la lección 1, aprendió acerca de los fines de las tablas y cómo crearlas. Vamos a revisar de forma rápida algunos de los puntos más importante que se deben recordar a la hora de crear una tabla en una interfaz de usuario no gráfica. Mientras, piense en el propósito de una base de datos relacional en la jerarquía de la administración de bases de datos. Una base de datos SQL es el contenedor central que recupera datos de muchas tablas y vistas distintas. Se pueden ejecutar consultas sobre estos datos, interactuando así con la información almacenada en la base de datos para obtener los datos necesarios. Una ventaja de una base de datos sobre una serie de hojas de cálculo es que una base de datos puede analizar los datos almacenados y la información redundante obtenidos de diversas hojas de cálculo relacionales.

30 | Lección 2

Al igual que en la programación, al diseñar, crear y usar bases de datos, se pueden usar fácilmente cientos de objetos, como bases de datos, tablas columnas, vistas y procedimientos almacenados. Por lo tanto, para que la base de datos de su compañía sea más fácil de administrar, la compañía debe establecer y usar una norma única y coherente. Por supuesto, esto también indica que hay documentar esta norma y distribuirla a todos los usuarios que trabajan con la base de datos. Realmente no hay ninguna diferencia entre el uso de mayúsculas y minúsculas en una base de datos, siempre y cuando se sea coherente. Las dos convenciones de nomenclatura más comunes son PascalCase y camelCase. Algunos ejemplos de PascalCase son nombres como OrderDetails o vendorTerms, mientras que algunos ejemplos de camelCase son nombres como myAddress y condicionesProveedores. No importa la nomenclatura que se usa, pero siempre se deben usar nombres precisos y descriptivos. También hay que evitar el uso de espacios porque complican la nomenclatura y hacen necesario el uso de comillas. En su lugar, use el carácter de subrayado (_) como separador de palabras o use caracteres en mayúsculas y minúsculas mezclados. En primer lugar, crearemos una nueva tabla con SQL Server Management Studio (SSMS) antes de seguir adelante con el método de la sintaxis para creación de tablas. CREAR UNA TABLA CON SSMS PREPÁRESE. Antes de empezar, asegúrese de iniciar SQL Server Management Studio. Asegúrese de que haya expandido la base de datos en la que desea crear la nueva tabla y, a continuación, siga estos pasos:

Figura 2-2 Crear una nueva tabla

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

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.



3. Establezca el valor predeterminado de la columna TimeCreated en (getdate()); este valor insertará la fecha actual en cada nuevo registro para ese campo específico. Vea la Figura 2-4.

Figura 2-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.



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

Figura 2-5 Guardar la nueva tabla

Figura 2-6 Nombre de la tabla

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

Crear objetos de base de datos | 33

PAUSA. Deje la interfaz de SSMS abierta para el próximo ejercicio. CREAR UN TABLA CON LOS COMANDOS DE TRANSACT-SQL La creación de tablas en SSMS es sencilla porque SSMS es una interfaz gráfica fácil de usar. Pero ¿cómo se pueden crear tablas mediante la sintaxis ANSI SQL? En pocas palabras, se usará la instrucción create table para completar esta tarea. Un ejemplo de la sintaxis correcta de Transact-SQL para crear una tabla es el siguiente: CREATE TABLE planets (name varchar(50), diameter varchar(50)) CERTIFICACIÓN DISPONIBLE ¿Cómo crearía una tabla con SSMS y cómo crearía una tabla con los comandos de Transact-SQL? 2.2

n Crear

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

Tenga en cuenta que si SQL Server no admite conversiones implícitas, se necesitaría la siguiente sintaxis: CREATE TABLE planets (name varchar(50), diameter varchar(50)) INSERT INTO planets (name, diameter) VALUES (‘earth’, CAST (10000 as varchar(50)))

vistas

CONCLUSIÓN

Como administrador de bases de datos, debe saber cuándo usar vistas. También debería saber cómo crear vistas mediante una instrucción de Transact-SQL o el diseñador gráfico. Una vista es simplemente una tabla virtual que consta de diferentes columnas de una o más tablas. A diferencia de una tabla, una vista se almacena en una base de datos como un objeto de consulta; por lo tanto, una vista es un objeto que obtiene los datos de una o más tablas. Las vistas que se basan en esta definición se denominan tablas subyacentes. Una vez definida una vista, puede referirse a ella como lo haría con cualquier otra tabla en una base de datos. Una vista es un mecanismo de seguridad; es decir, garantiza que los usuarios puedan recuperar y modificar solo los datos vistos por ellos mismos con sus permisos, lo que asegura que no puedan ver o tener acceso a los demás datos de las tablas subyacentes. Una vista es también un mecanismo para simplificar la ejecución de consultas. Las consultas complejas se pueden almacenar como una vista y así los datos de la vista se pueden extraer usando instrucciones simples de consulta. Las vistas garantizan la seguridad de los datos mediante la restricción de acceso a los siguientes datos: • Filas específicas de tablas • Columnas específicas de tablas • Filas y columnas específicas de tablas • Filas obtenidas mediante uniones • Resúmenes estadísticos de los datos en las tablas especificadas • Subgrupos de otra vista o subconjuntos de vistas y tablas Algunos ejemplos comunes de vistas son los siguientes: • Un subconjunto de filas o columnas de una base de datos • Una unión de dos o más tablas • Una combinación de dos o más tablas • Un resumen estadístico de tablas base • Un subconjunto de otra vista o una combinación de vistas y tablas base

34 | Lección 2

Las vistas de base de datos se han diseñado para crear una tabla virtual que sea representativa de una o más tablas de forma alternativa. Existen dos razones principales por las que es posible que se desee facilitar una vista en lugar de permitir que los usuarios tengan acceso a las tablas subyacentes de la base de datos: • Las vistas permiten limitar el tipo de datos a los que el usuario puede tener acceso. Se pueden conceder permisos de vista en tablas designadas, así como optar por denegar permisos para cierta información. • Las vistas reducen la complejidad para los usuarios finales de forma que no tienen que aprender cómo escribir consultas SQL complejas. En su lugar, se pueden escribir esas consultas en su nombre y esconderlas en una vista. Al crear una vista, asegúrese de tener en cuenta el rendimiento de la base de datos en el diseño. Como se trató brevemente en la lección 1, la indexación juega un papel en el tiempo de consulta e incluso juega un papel aún mayor en las mejoras del rendimiento de la base de datos. Pero hay que proceder con precaución: si se agregan índices en el esquema se puede en realidad aumentar la sobrecarga de la base de datos debido al mantenimiento continuo de estos índices. Existen dos métodos para crear una vista: • Mediante SSMS • Escribiendo una instrucción Transact-SQL En esta sección, se tratarán ambos procedimientos. CREAR UNA VISTA CON SSMS PREPÁRESE. Antes de empezar a realizar estos pasos, asegúrese de que la interfaz de SSMS está abierta y que la base de datos a la que desea agregar una vista aparece resaltada. Después, siga estos pasos para crear la vista: 1. Expanda la sección Vistas haciendo clic en el signo más (+) que aparece junto a Vistas. Haga clic con el botón derecho del mouse en la carpeta Vistas como se muestra en la Figura 2-8; a continuación, seleccione Nueva vista. Figura 2-8 Crear una nueva vista

Crear objetos de base de datos | 35 Se abrirá el cuadro de diálogo Agregar tabla (vea la Figura 2-9). Figura 2-9 Cuadro de diálogo Agregar tabla

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

CERTIFICACIÓN DISPONIBLE ¿Cómo crearía una vista con SSMS? 2.3

Una vez seleccionados los objetos que se desean usar, se agregará la barra de herramientas Diseñador de vistas, en la que se pueden planear las vistas adicionales que se desean incorporar en la consulta.

También puede crear vistas con Transact-SQL. En este caso, una vez agregados los orígenes al panel de diagrama, la sintaxis para estos orígenes se muestra en el panel SQL.

36 | Lección 2

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

FROM Customers

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

n Crear

procedimientos almacenados

CONCLUSIÓN

Al crear procedimientos almacenados y funciones, es posible seleccionar, insertar, actualizar o eliminar los datos que usan estas instrucciones. Hasta ahora, ha aprendido cómo usar diferentes tipos de datos para crear tablas y vistas a través de la interfaz de SSMS, así como a través de instrucciones de sintaxis de Transact-SQL. Ahora es el momento de aprender cómo crear instrucciones de procedimientos almacenados usando la misma interfaz gráfica. Un procedimiento almacenado es una instrucción SQL escrita previamente que se ha “almacenado” o guardado en una base de datos. Una manera de ahorrar tiempo cuando se ejecuta la misma consulta una y otra vez es creando un procedimiento almacenado que se puede ejecutar más adelante desde el entorno de comandos de la base de datos. Un ejemplo sobre cómo ejecutar un procedimiento almacenado es el siguiente: exec usp_displayallusers

En este caso, el nombre del procedimiento almacenado es “usp_displayallusers” y “exec” e indica a SQL Server que ejecute el código en el procedimiento almacenado En efecto, cuando crea su propio procedimiento almacenado, aparecerá la denominación “usp” delante del nombre, lo que indica a SQL que se trata de un procedimiento almacenado creado por el usuario. Ahora, supongamos que el procedimiento almacenado llamado “displayallusers” tiene un código simple en su interior, como el siguiente: SELECT * FROM USERLIST

Lo que la instrucción SELECT hace es devolver todos los datos que se encuentra en la tabla USERLIST. Puede que se haga la siguiente pregunta, “¿por qué no puedo simplemente ejecutar la consulta que deseo para obtener la información que necesito?” En otras palabras, puede que se pregunte por qué debería preocuparse en crear un procedimiento almacenado. Tenga en cuenta que el “*” que aparece en la instrucción anterior indica que no está definiendo los criterios que desearía que coincidieran con el resultado. Dicho de otra forma, va a devolver todos los registros de la tabla USERLIST. Tal vez está trabajando en un sitio web generando páginas ASP y necesita llamar a un procedimiento almacenado desde allí o desde otra aplicación como Visual Basic, o desde otra aplicación completa. El uso de un procedimiento almacenado permite almacenar toda la lógica dentro de la base de datos, de forma que mediante el uso de un simple comando se puede consultar y recuperar toda la información de todas las fuentes. Un procedimiento almacenado es una instrucción SQL ya escrita que se almacena en una base de datos. Si usa continuamente la misma instrucción SQL dentro de la base de datos, es más sencillo crear un procedimiento almacenado para la instrucción. Ahora, las instrucciones simples como una instrucción “select” no se beneficiarían por completo

Crear objetos de base de datos | 37

de un procedimiento almacenado, pero si se van a crear instrucciones de consulta complejas, lo mejor es crear un procedimiento almacenado para ellas y ejecutar ese procedimiento almacenado desde el Analizador de consultas mediante un comando de ejecución (exec). CREAR UN PROCEDIMIENTO ALMACENADO PREPÁRESE. Antes de empezar a realizar estos pasos, asegúrese de que la interfaz de SSMS está abierta y que la base de datos a la que desea agregar una vista aparece resaltada. A continuación, siga estos pasos para crear un procedimiento almacenado:

1. Expanda la sección Programación haciendo clic en el signo + adecuado y, a continuación, expanda la sección Procedimiento almacenado haciendo clic en el signo + pertinente. 2. Haga clic con el botón derecho del mouse en Procedimientos almacenados y elija Nuevo procedimiento almacenado (vea la Figura 2-11).

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

CERTIFICACIÓN DISPONIBLE ¿Cómo crearía un procedimiento almacenado con SSMS? 2.4

Se abre la ventana Editor de texto (vea la Figura 2-12), mostrando la sintaxis. La ventana contiene una plantilla de procedimiento almacenado ya preparada para que agregue sus propios parámetros de vista.

38 | Lección 2 Figura 2-12 Ejemplo de la ventana Editor de texto

Microsoft SQL Server ya tiene cientos de procedimientos almacenados del sistema para que pueda realizar funciones básicas. Por ejemplo, puede usar el procedimiento almacenado SELECT para recuperar o seleccionar filas de una base de datos. Algunos de los procedimientos almacenados más populares se tratarán en la próxima lección, incluyendo SELECT, INSERT, UPDATE y DELETE.

Comprender las inyecciones de código SQL TOME NOTA

*

Una inyección de código SQL es un ataque en el que se inserta código malintencionado en las cadenas que se transmitirán después de analizar o ejecutar instrucciones.

Antes de aprender las instrucciones de sintaxis para seleccionar, insertar, actualizar y eliminar datos, es necesario saber qué es una inyección de código SQL. En pocas palabras, una inyección de código SQL es un ataque en el que se inserta código malintencionado en las cadenas que después pasan a instrucciones de SQL Server en espera de análisis y ejecución. Cualquier procedimiento que construye instrucciones SQL se debe revisar continuamente en busca de vulnerabilidades de la inyección de código, puesto que SQL Server ejecutará todas las consultas sintácticamente válidas desde cualquier origen. La principal forma de inyección de código SQL es una inserción directa de código en variables de entrada de usuario que se concatenan con comandos SQL y luego se ejecutan. Un método menos directo de ataque inyecta código malintencionado en las cadenas destinadas al almacenamiento en una tabla o que se consideran metadatos. Cuando estas cadenas almacenadas posteriormente se concatenan en el comando de SQL dinámico, se ejecuta el código malintencionado. La función del proceso de inyección de código es terminar una cadena de texto antes de tiempo y anexar un nuevo comando de la misma; puesto que el comando insertado puede tener cadenas adicionales anexadas antes de su ejecución, el infractor termina la cadena inyectada con código con una marca de comentario “—”, lo que hace que el texto que sigue a continuación se omita en tiempo de ejecución.

Crear objetos de base de datos | 39

RESUMEN DE CONOCIMIENTOS En esta lección, ha aprendido lo siguiente: • Un tipo de datos es un atributo que especifica el tipo de datos que un objeto puede contener, así como el número de bytes que ocupa cada tipo de datos. • Como regla general, si se tienen dos tipos de datos que solo difieren en el número de bytes que usa cada uno, el que tiene más bytes tendrá mayor intervalo de valores u ofrece mayor precisión, o ambos. • Microsoft SQL Server incluye un amplio intervalo de tipos de datos predefinidos conocidos como tipos de datos integrados. La mayoría de las bases de datos que se crean o se usan emplean solo estos tipos de datos. • Los tipos de datos numéricos exactos son los tipos de datos más comunes que SQL Server usa para almacenar información numérica. • int es el principal tipo de datos de valores enteros (número entero). • Precisión (p) es el número máximo total de dígitos decimales que se pueden almacenar en un tipo de datos numérico, tanto a la izquierda como a la derecha del punto decimal; este valor debe ser al menos 1 y como máximo 38. El número de precisión predeterminado es 18. • money y smallmoney son tipos de datos de Transact-SQL que se deben usar para representar valores monetarios o de moneda. Ambos tipos de datos tienen una precisión de una diezmilésima de las unidades monetarias que representan. • Los tipos de datos numéricos aproximados no se usan con tanta frecuencia como otros tipos de datos de SQL Server. Si necesita más precisión (más posiciones decimales) de la que dispone con los tipos de datos numéricos exactos, debe usar los tipos de datos float o real, puesto que ambos suelen tomar bytes adicionales de almacenamiento. • Los tipos de datos de fecha y hora se refieren, por supuesto, a fechas y horas. Estos tipos de datos incluyen date, datetime2, datetime, datetimeoffset, smalldatetime y time. • SQL Server admite las conversiones implícitas, que se pueden producir sin especificar la función de llamada real (cast o convert). Las conversiones explícitas necesitan el uso de las funciones cast o convert específicamente. • Un carácter normal usa un byte de almacenamiento por cada carácter, que le permite definir uno de los 256 caracteres posibles; con capacidad para inglés y algunos idiomas europeos. • Un carácter Unicode usa dos bytes de almacenamiento por carácter, por lo que se puede representar uno de los 65.536 caracteres. Esta capacidad adicional significa que se pueden almacenar caracteres Unicode desde casi cualquier idioma. • Cuando se usa un elemento VAR, SQL Server preserva el espacio en la fila en la que este elemento reside a partir del tamaño definido de la columna y no a partir del número real de caracteres de la propia cadena de caracteres. • Las cadenas de caracteres Unicode nchar y nvarchar pueden ser fijas o variables, como las cadenas de caracteres normales; sin embargo, usan el conjunto de caracteres UNICODE UCS-2. • El propósito de una tabla es proporcionar una estructura para almacenar datos en una base de datos relacional. • Una vista es simplemente una tabla virtual que consta de diferentes columnas de una o más tablas. A diferencia de una tabla, una vista se almacena en una base de datos como un objeto de consulta; por lo tanto, una vista es un objeto que obtiene los datos de una o más tablas. • Un procedimiento almacenado es una instrucción SQL escrita previamente que se ha “almacenado” o guardado en una base de datos. • Una inyección de código SQL es un ataque en el que se inserta código malintencionado en las cadenas que después pasan a instrucciones de SQL Server en espera de análisis y ejecución.

40 | Lección 2

n

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

Varias opciones Rodee con un círculo la letra correspondiente a la mejor respuesta. 1. ¿Cuál de los siguientes no es un tipo de datos? a. Numéricos exactos b. Numéricos aproximados c. Cadena ANSI d. Espacial 2. ¿Cómo se llama cuando un tipo de datos se convierte automáticamente en otro tipo de datos? a. conversión implícita b. conversión explícita c. conversión dinámica d. conversión estática 3. ¿Cuál de las siguientes afirmaciones no son ciertas sobre el tipo de datos int? a. int es un entero. b. bigint se usa cuando el valor excede el intervalo del tipo de datos int. c. Un entero usa 8 bytes para almacenar datos. d. Las funciones solo devolverán bigint si la expresión original tiene el mismo tipo de datos. 4. ¿Requieren las conversiones implícitas una característica de llamada real (por ejemplo, cast o convert)? a. Sí b. No

Crear objetos de base de datos | 41

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

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

Escenario 2-2: Elegir tipos de datos Va a diseñar varias bases de datos para un cliente. Mientras diseña las bases de datos, se encuentra con los siguientes elementos de datos enumerados. ¿Qué tipo de datos usaría para almacenar la siguiente información y por qué? El radio de un planeta El valor de pi (p) El salario La fecha de nacimiento de la persona La longitud de una tabla El número de reproductores de música vendidos

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

Escenario 2-4: Extraer datos de una base de datos Es un administrador de bases de datos de AdventureWorks Corporation y uno de los administradores de servicios necesita su ayuda para extraer datos de la base de datos de la compañía. Por lo tanto, después de abrir SSMS y tener acceso a la base de datos AdventureWorks, especifique las instrucciones básicas SELECT que usaría para recuperar la información necesaria de la tabla ProductsSubcategory. 1.  ¿Qué comandos devolverían todas las filas y columnas de la tabla ProductsSubcategory? 2. ¿Qué comandos escribiría y ejecutaría para devolver solo las columnas ProductSubcategoryID, ProductCategoryID, Name y ModifiedDate? 3. ¿Qué comandos escribiría y ejecutaría para devolver las columnas donde la palabra bici aparece en alguna parte de la columna Name? 4. En la ventana de consulta ya existente, ¿qué comandos usaría para agregar un alias de columna a la columna Name para confirmarla como nombre de la subcategoría? 5. En la ventana de consulta existente, ¿qué comando usaría para ordenar el conjunto de resultados anterior?

Manipular datos

LECCIÓN

3

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

Objetivo del Examen MTA

Número de Objetivo del Examen MTA

Usar consultas para seleccionar datos

Seleccionar datos.

3.1

Usar consultas para insertar datos

Insertar datos.

3.2

Actualizar datos y bases de datos

Actualizar datos.

3.3

Eliminar datos

Eliminar datos.

3.4

TÉRMINOS CLAVE combinación cruzada

select

delete

transacciones

formar intersección

unión

combinar

update

integridad referencial

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

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

43

44 | Lección 3



Uso de consultas para seleccionar datos CONCLUSIÓN

CERTIFICACIÓN DISPONIBLE ¿Qué comando debe usar para mostrar los registros de una tabla? 3.1

En esta sección, aprenderá cómo usar la consulta SELECT para recuperar o extraer datos de una tabla, cómo recuperar o extraer datos mediante combinaciones y cómo combinar resultados con UNION e INTERSECT. El comando SQL para recuperar los datos de una base de datos es SELECT. Como muchos otros comandos SQL, SELECT es similar a una instrucción en inglés. La creación de una instrucción SELECT es similar a la acción de rellenar los espacios en blanco, como se muestra en el ejemplo siguiente: SELECT id, first_name // columnas FROM sysobjects // tablas WHERE type = “jones” // condiciones de las que desea producir resultados

Este sencillo ejemplo proporciona un conocimiento básico de lo que hace la instrucción SELECT. Siempre se deberá seguir el mismo patrón cada vez que se emita una instrucción SELECT a una base de datos. Por otra parte, solo hay tres cosas que se necesitan identificar en la instrucción con el fin de formar una consulta SELECT adecuada: • Las columnas que se van a recuperar • Las tablas que se van a recuperar de las columnas • Las condiciones, si hay alguna, que los datos deben satisfacer Las construcciones anteriores se consideran el marco para la creación de instrucciones de consulta SELECT mediante la ventana del editor de texto SQL. Supongamos, por ejemplo, que desea proporcionar a su jefe una lista de los empleados cuyo salario es superior a 50.000 $ EE. UU. al año. Solo le interesa recuperar los empleados que satisfagan ese criterio. Así es como se puede hacer esto en SQL: SELECT first_name, last_name, salary FROM employees WHERE salary >= 50,000

Esta consulta debería producir los siguientes resultados:

TOME NOTA

*

¿Observa la línea que indica el número de filas “afectadas”? Puede desactivar y activar dicha línea mediante la instrucción SET NOCOUNT. Esta instrucción está desactivada de forma predeterminada.

first_name ————————————— John

last_name salary ——————————— —————————— Allan 52,000

Sylvia

Goddard 51,200

Julia

Smith 55,000

David

Thompson 62,900

(4 filas afectadas)

Si desea seleccionar una única columna para la consulta, identifique el nombre de la columna escribiéndola entre las palabras select y from en la instrucción de consulta. Si desea identificar más de una columna para incluir en la consulta (como en el ejemplo anterior), simplemente escriba el nombre de cada columna y separe los nombres con una coma. La razón para usar una coma en lugar de un espacio es que SQL trata el espacio como un identificador, o palabra coincidente, como “valor” o “seleccionar”. Por tanto, si necesita usar un espacio en la instrucción, debe incluir estas palabras entre corchetes o comillas dobles, por ejemplo, [seleccionar] o “valor”. Si desea elegir todas las columnas de una tabla, puede hacerlo escribiendo un asterisco (*) en el lugar en el que deberían estar los nombres de las columnas.

Manipular datos | 45

El único componente requerido de la consulta SELECT de SQL es la cláusula SELECT … FROM, lo que indica que se pueden seleccionar todos los campos disponibles de una tabla simplemente usando el siguiente comando: SELECT * FROM employees

Esto podría producir un resultado de gran tamaño o un resultado pequeño, según el número de empleados de una compañía. Veamos un ejemplo de una compañía con solo seis empleados. Si escribimos el comando anterior, el resultado será similar al siguiente: first_name ——————— Jim

last_name employee_id phone gender —————— ——————— ——————— ———— Alexander 610001 574-555-0001 M

Frances

Drake

David

Thompson 610003

574-555-0985 M

Alexandria

Link

610004

574-555-9087 F

Peter

Link

610005

574-555-7863 M

Antoin

Drake

610006

574-555-2597 M

610002

574-555-0346 F

(6 filas afectadas)

Ahora ya tiene un entendimiento básico de para qué se ha diseñado la instrucción SELECT. Pero, ¿qué pasaría si desea recuperar únicamente determinados tipos de datos de las tablas identificados con la instrucción de búsqueda SELECT … FROM original? En este caso es cuando la cláusula WHERE viene muy bien. Por ejemplo, la cláusula WHERE se puede agregar a una consulta para encontrar únicamente los empleados que trabajan en el departamento de envíos de la compañía, como se muestra a continuación: SELECT first_name, last_name FROM employees WHERE department = ‘shipping’

De esta forma, se devolverá el resultado siguiente: first_name last_name ———————— —————— Jim Alexander Frances Drake David Thompson (3 filas afectadas)

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

46 | Lección 3

El resultado esperado muestra los siguientes resultados: first_name last_name ———————— ——————— Frances Drake (1 fila afectada)

Por tanto, esta consulta usa la conjunción AND para proporcionar los nombres de todos los empleados que pertenecen al departamento de envíos y son mujeres. También puede usar la conjunción OR para que el resultado satisfaga cualquiera de las dos condiciones, como se muestra a continuación: SELECT first_name, last_name FROM employees WHERE department = ‘shipping’ OR employee_id =‘1-Jan-1990’ AND hire_date (mayor que) en lugar del signo igual. Al hacerlo, podría producir la siguiente instrucción de consulta: SELECT first_name, last_name FROM employees WHERE department = ‘shipping’

No importa cómo se escribe la sintaxis de la instrucción de consulta, producirá los mismos resultados.

Uso de la cláusula UNION La cláusula UNION permite combinar los resultados de dos o más consultas en un único conjunto de resultados que incluye todas las filas que pertenecen a la consulta en esa unión. La cláusula UNION es totalmente distinta de las instrucciones JOIN, que combinan columnas de dos tablas diferentes. Debe recordar un par de reglas básicas al combinar los resultados de dos consultas mediante la cláusula UNION: • El número y el orden de las columnas debe ser el mismo en cada una de las consultas de la cláusula. • Los tipos de datos que use deben ser compatibles. Por ejemplo, podría usar la cláusula UNION de la siguiente manera para crear una consulta que devuelve una lista de todos los empleados en el departamento de envíos que se contrataron entre el 1 de enero de 1990 y el 1 de enero del 2000: SELECT first_name, last_name FROM employees WHERE department = ‘shipping’ UNION SELECT first_name, last_name FROM employees WHERE hide_date BETWEEN ‘1-Jan-1990’ AND ‘1-Jan-2000’

48 | Lección 3

Uso de las cláusulas EXCEPT e INTERSECT Las instrucciones EXCEPT e INTERSECT están diseñadas para devolver valores distintos al comparar los resultados de dos consultas. En particular, la cláusula EXCEPT devuelve el resultado final fijado donde existen datos en la primera consulta y no en el segundo conjunto de datos. La cláusula INTERSECT devuelve el resultado final fijado donde los valores en ambas consultas coinciden con la consulta situada al lado izquierdo y derecho del operando. Las mismas reglas básicas se aplican para el uso de las cláusulas EXCEPT e INTERSECT que las que se aplican para usar la cláusula UNION: • El número y el orden de las columnas debe ser el mismo en todas las consultas. • Los tipos de datos deben ser compatibles. Por ejemplo, supongamos que ha trabajado en una configuración de fábrica y que deseaba recuperar una lista que mostrase los productos con las solicitudes de trabajo y otra lista que mostrase los productos sin ningún tipo de solicitud de trabajo. Puede estructurar la consulta como se muestra a continuación, mediante primero la cláusula INTERSECT: SELECT ProductID FROM Production.Product // El nombre de la base de datos es Production y el nombre de la tabla es Product. INTERSECT SELECT ProductID FROM Production.WorkOrder; ——Resultado: 238 filas (productos con pedidos de trabajo)

La misma consulta pero con la cláusula EXCEPT: SELECT ProductID FROM Production.Product EXCEPT SELECT ProductID FROM Production.WorkOrder; ——Resultado: 266 filas (productos sin pedidos de trabajo)

Uso de la cláusula JOIN La cláusula JOIN permite combinar datos relacionados de varios orígenes de tablas. Las instrucciones JOIN son similares en su aplicación a EXCEPT e INTERSECT en que devuelven valores de dos orígenes de tablas distintos. Conociendo esto, comprobemos los datos que se pueden extraer mediante el uso de la cláusula JOIN. La cláusulas JOIN se pueden especificar bien en la cláusula FROM o en la cláusula WHERE, pero es recomendable que se especifiquen en la cláusula FROM. Hay tres tipos de instrucciones JOIN que debe conocer: • Las combinaciones internas (inner join) permiten comparar registros relacionados procedentes de diversas tablas de origen. • Las combinaciones externas pueden incluir registros de una o ambas tablas de consulta que no tienen registros correspondientes en la otra tabla. Hay tres tipos de combinaciones externas: LEFT OUTER JOIN, RIGHT OUTER JOIN y FULL OUTER JOIN. • Las combinaciones cruzadas devuelven todas las filas de una tabla junto con todas las filas de otra tabla. Las condiciones WHERE deben incluirse siempre. Por ejemplo, puede usar la más común de las instrucciones JOIN, INNER JOIN, para recuperar una lista de los empleados por sus números de identificación y hacer coincidir cada empleado con el identificador de su supervisor de departamento actual. Para este tipo de consulta, tendrá

Manipular datos | 49

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

first_name last_name

employee_id department

James Alexander 610001 1 David

Thompson 620002 1

Frances Drake

610003 1

Alexandria Link

610004

Peter Link

620005 2

David Cruze

610007 NULL

2

Tabla 3-2 Tabla del departamento

department_id first_name

last_name

1

Jane Horton

2

Mitch Simmons

3

Paul Franklin

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

A continuación, se muestra el resultado: first_name last_name first_name last_name ———————— —————— ——————— —————— James Alexander Jane Horton David

Thompson

Jane

Horton

Frances

Drake

Jane

Horton

Alexandria

Link

Mitch

Simmons

Peter

Link

Mitch

Simmons

Antoin

Drake

Paul

Franklin

(6 filas afectadas)

50 | Lección 3

¿Se ha dado cuenta de que David Cruze no aparece en la lista de resultados de empleados coincidentes con los supervisores de departamento? En la columna del departamento, ese nombre no está identificado como integrante de ningún departamento, aunque es un empleado. Esto podría ocurrir por varias razones; tal vez es un empleado nuevo y no ha comenzado oficialmente a trabajar para ningún departamento. Puede que el empresario deseara una lista de registros de la segunda tabla que en realidad no coinciden con ninguno de las condiciones anteriores. Cualquiera de las instrucciones OUTER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN o FULL OUTER JOIN puede dar el resultado de la consulta que desee. La instrucción OUTER JOIN comienza donde los resultados de INNER JOIN terminan, e incluye todos los registros de la tabla izquierda junto con los registros que coinciden con la tabla derecha Y cualquier registro que no coincida. Un ejemplo de la instrucción LEFT OUTER JOIN incluye la instrucción a partir de INNER JOIN mostrada anteriormente, que también incluye la cláusula de no coincidencia: SELECT employees.first_name, employees.last_name,     department.first_name, department.last_name FROM employees LEFT OUTER JOIN department ON employees.department = department.department_id

El resultado sería como se muestra a continuación: first_name last_name first_name last_name ——————— ————— ————— —————— James Alexander Jane Horton David

Thompson Jane

Horton

Frances Drake Jane Horton Alexandria Link

Mitch

Simmons

Peter Link Mitch Simmons Antoin Drake Paul Franklin David Cruze NULL NULL (7 filas afectadas)

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

Manipular datos | 51

El resultado sería como se muestra a continuación: first_name last_name first_name last_name ———— ————— ————— —————— David Jones David Jones David Jones Alex Starr David Jones Linda Arrow Alex

Starr David Jones

Alex

Starr Alex Starr

Alex

Starr Linda Arrow

Linda

Arrow David Jones

Linda

Arrow Alex

Linda

Arrow Linda Arrow

Starr

Delinda Burris Delinda Burris Jules Allan Jules Allan (11 filas afectadas)

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

El resultado sería: first_name —————— David

last_name first_name last_name —————— —————— —————— Jones Alex Starr

David

Jones Linda Arrow

Alex

Starr Linda Arrow

(3 filas afectadas)

De los resultados obtenidos a partir de la instrucción de consulta, se puede afirmar que David Jones, Alex Starr y Linda Arrow viven todos en Pittsburgh, PA y tienen el mismo código postal. ■

Uso de consultas para insertar datos CONCLUSIÓN

En esta sección, llegará a comprender cómo se insertan datos en una base de datos 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 DISPONIBLE ¿Qué comando se usa para agregar datos a una tabla? 3.2

interfaz gráfica (SSMS) y el segundo usa la instrucción INSERT. De cualquier manera se logra el mismo objetivo.

Insertar datos Primero vamos a saber cómo insertar datos en una tabla con SSMS antes de seguir adelante con el método de sintaxis. INSERTAR DATOS CON SQL SERVER MANAGEMENT STUDIO PREPÁRESE. Antes de empezar, asegúrese de iniciar la aplicación SSMS y conectarse a la base de datos en la que desea trabajar. Después, realice los siguientes pasos:

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



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-1 Conexión a la base de datos deseada

Figura 3-2 Editar las primeras 200 filas

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



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

PAUSA. Deje la interfaz de SSMS abierta para el próximo ejercicio. El otro método de uso de la cláusula INSERT es escribir una instrucción SQL en la ventana del editor de texto. Con la sintaxis siguiente, se obtendrá el mismo resultado que cuando se usa la interfaz gráfica: INSERT INTO () VALUES () TOME NOTA

*

Aunque la lista de columnas de la instrucción INSERT es totalmente opcional, se recomienda que especifique qué columnas desea usar, así SQL supondrá automáticamente que la lista de valores incluye todas las columnas en el orden correcto.

La cláusula contendrá la lista separada por comas de los nombres de columna de la tabla que desea incluir y la cláusula contendrá los valores que desea insertar. No hay limitación a la hora de insertar una sola fila cada vez con la con la instrucción INSERT; en cambio, puede indicar varias filas separadas por comas. Esto es similar a las comas que se usan en los archivos .CSV de Excel que separan las columnas de información importada para su uso en otro programa de base de datos, como Access. Pero dentro de la instrucción INSERT real, cada una de las filas identificadas por comas se incluirán entre paréntesis. Por tanto, una instrucción INSERT que agrega dos empleados nuevos a la tablas de empleados, será la siguiente: INSERT INTO employees (first_name, last_name, employee_id, department) VALUES (‘David’, ‘Clark’, 610008, ‘shipping’),     (‘Arnold’, ‘Davis’, 610009, ‘accounting’)

54 | Lección 3

Esto generará el siguiente resultado: (2 filas afectadas)

Realmente es tan simple como aprovechar el poder de administración y modificación de la base de datos. Ahora, exploraremos algunos otros tipos de modificación de datos.



Actualizar datos y bases de datos CONCLUSIÓN

CERTIFICACIÓN DISPONIBLE ¿Qué comando se usa para cambiar los datos existentes en una tabla? 3.3

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 mediante una tabla. La función de la instrucción UPDATE es cambiar los datos de una tabla o vista. Al igual que cualquier manipulación de datos o cláusula de modificación e instrucción de SQL, puede usar esta instrucción ya sea en SSMS o en una ventana del editor de texto.

Uso de la instrucción UPDATE La cláusula UPDATE permite modificar los datos almacenados en tablas mediante atributos de datos como los siguientes: UPDATE SET = WHERE

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

La respuesta sería como se muestra a continuación: (1 fila afectada)

TOME NOTA

*

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

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

El resultado se muestra en la Tabla 3-4.

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

92

2010-04-03….

Dbo

CREATE_VIEW

dbo

vDVMPrep

CREATE VIEW […

Seguridad > Usuarios para abrir el formulario Base de datos del usuario - Nuevo. Escriba el inicio de sesión que va a agregar en el campo Nombre de inicio de sesión. Para buscar un inicio de sesión, use el botón de puntos suspensivos (...). En el campo Nombre de usuario, debe escribir el nombre con el que se conocerá el usuario en la base de datos. Puede usar el formulario Propiedades de inicio de sesión para conceder un acceso de inicio de sesión a cualquier base de datos y asignar roles de base de datos. Un comando Transact-SQL también está disponible para conceder el acceso de base de datos a un usuario. Este comando se debe emitir desde el interior de la base de datos a la que el usuario tendrá acceso. El primer parámetro de la sintaxis del comando es el inicio de sesión del servidor y el segundo es el nombre de usuario de base de datos opcional, como en el ejemplo siguiente: USE Family CREATE USER ‘XPS\Lauren’, ‘LRN’

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

El cuadro de diálogo de inicio de sesión se puede usar para agregar un nuevo usuario a la base de datos o para administrar un usuario actual.

94 | Lección 5

COMPRENDER LAS CUENTAS DE INICIO DE SESIÓN DE INVITADO A los usuarios que desean tener acceso a una base de datos pero que no están declarados como usuarios en la base de datos, se les conceden automáticamente privilegios de usuario invitado, siempre y cuando se haya creado una cuenta de usuario invitado. La cuenta de usuario invitado no se crea realmente cuando se crea una base de datos; se debe agregar específicamente ya sea a través de SSMS o a través de una instrucción Transact-SQL, como se muestra a continuación: EXEC sp_adduser ‘Guest’

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

COMPRENDER LA SEGURIDAD DE LOS OBJETOS Si un usuario tiene acceso a una base de datos, podrán concederse permisos para los objetos de base de datos individuales. Los permisos pueden concederse ya sea directamente al usuario o a un rol estándar, con el usuario asignado al rol. Los usuarios se pueden asignar a múltiples roles, por lo que pueden existir varias rutas de seguridad de un usuario a un objeto.

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

ASIGNAR ROLES DE BASE DE DATOS FIJOS CON SSMS Los roles de base de datos fijos se pueden asignar a través de SSMS mediante cualquiera de los siguientes procedimientos: • Agregando el rol para el usuario en el formulario del usuario Propiedades del usuario de la base de datos, ya sea mientras se crea el usuario o una vez creado el usuario. • Agregando el usuario al rol en el cuadro de diálogo Propiedades del rol de la base de datos. Para ello, seleccione Roles en el nodo Seguridad de la base de datos, a continuación, use el menú contextual para abrir el formulario Propiedades (vea la Figura 5-9).

Administrar una base de datos | 95

ASIGNAR ROLES DE BASE DE DATOS FIJOS CON TRANSACT-SQL En el código de Transact-SQL, puede agregar un usuario a un rol de base de datos fijo mediante el procedimiento almacenado del sistema sp_addrole. Por ejemplo, en el siguiente ejemplo se crean los auditores (auditors) de rol de base de datos que son propiedad del rol de base de datos db_securityadmin fijo: USE AdventureWorks; CREATE ROLE auditors AUTHORIZATION db_securityadmin; GO

COMPRENDER LOS ROLES DE APLICACIÓN

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

1. En SSMS, expanda la carpeta de base de datos haciendo clic en el signo más (+) que corresponda. Expanda la carpeta Seguridad, expanda Roles y después expanda la carpeta Roles de base de datos. 2. Haga doble clic en el rol adecuado para abrir el cuadro de diálogo Propiedades. 3. Para agregar o quitar usuarios del rol, use los botones Agregar y Quitar, respectivamente.

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

96 | Lección 5

La concesión de permisos de objeto interactúa con los roles de servidor y base de datos. El rol de servidor sysadmin es el rol de máxima seguridad, que tiene acceso total a todas las bases de datos. Si un usuario no tiene el rol de servidor sysadmin, los permisos de objeto de nivel más alto serían los permisos de objeto Grant y Deny. Sin embargo, el permiso Deny siempre tiene más prioridad que el permiso Grant. Si el entorno no permite la seguridad de modo mixto, la forma más fácil de comprobar la seguridad es haciendo clic con el botón derecho del mouse en en SQL Server Management Studio o en el Analizador de consultas y usar el comando RUN AS para que se ejecute como un usuario distinto; no obstante, esto requiere la creación de usuarios ficticios en el dominio de Windows. En términos generales, en una “producción” de dominio de Windows, la mayoría de los auditores podrían marcar a los usuarios ficticios como un punto de auditoría. Debido a que las estaciones de trabajo que pertenecen a los administradores de bases de datos suelen pertenecer a los dominios de producción, esta recomendación no funcionará si los auditores son diligentes. MODIFICAR PERMISOS DE UN OBJETO PREPÁRESE. Para obtener acceso a un permiso de objeto, siga estos pasos para modificar los permisos de un objeto:

1. En SSMS, abra la base de datos y abra el objeto que desea administrar. El objeto podría ser tablas, vistas, procedimientos almacenados o funciones definidas por el usuario. 2. En el Explorador de objetos, haga clic con el botón derecho del mouse en el objeto y seleccione Propiedades para abrir el cuadro de diálogo Propiedades para ese tipo de objeto. 3. Haga clic en la página Permisos para abrir el cuadro de diálogo Propiedades de objeto. 4. Para agregar un usuario, haga clic en el botón de búsqueda. Escriba el nombre del usuario que desea agregar o haga clic en el botón Examinar para seleccionar el usuario. Haga clic en el botón Aceptar para cerrar el cuadro de diálogo Seleccionar usuarios o roles. 5. Seleccione el permiso Grant adecuado para el permiso Deny. Vea la Figura 5-9.

Figura 5-9 Concesión de permisos de objeto



6. Cuando haya terminado, haga clic en el botón Aceptar para cerrar el cuadro de diálogo Propiedades.

Administrar una base de datos | 97

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

CONFIGURAR PERMISOS DE LA LISTA DE USUARIOS En lugar de conceder permisos a un usuario a partir de las propiedades del objeto, también puede conceder permisos a un objeto a partir de las propiedades del usuario. En la lista de usuarios de bases de datos en SSMS, seleccione un usuario y haga doble clic, o seleccione Propiedades del menú contextual. Aparecerá el cuadro de diálogo Propiedades de inicio de sesión y se puede usar para asignar usuarios a roles (como se muestra en la Figura 5-10). La página Elementos protegibles se usa para asignar o comprobar permisos de objeto. El cuadro de diálogo es similar a la pestaña Permisos del cuadro de diálogo Propiedades de objeto de base de datos. Figura 5-10 Cuadro de diálogo Propiedades de inicio de sesión

CONFIGURAR PERMISOS DE LA LISTA DE ROLES La tercera forma de controlar los permisos de objeto es desde el rol de base de datos. Para abrir el cuadro de diálogo Propiedades del rol de la base de datos, haga doble clic en la lista de roles o seleccione Propiedades del menú contextual. El cuadro de diálogo Propiedades del rol de la base de datos se puede usar para asignar usuarios u otros roles a un rol, así como para quitarlos de un rol. El botón Permisos abre el cuadro de diálogo Permisos para el rol. Este formulario funciona como otros formularios de permisos, salvo que se organiza desde la perspectiva del rol.

98 | Lección 5

CONCESIÓN DE PERMISOS DE OBJETO CON INSTRUCCIONES TRANSACT-SQL Con Transact-SQL, puede conceder los permisos de objeto para una base de datos, tabla, vista o cualquier otro objeto de base de datos. La instrucción Transact-SQL que proporciona permiso a un objeto para un usuario específico y su rol es la siguiente: GRANT Permission, Permission ON Object TO User/role, User/role WITH GRANT OPTION

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

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

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

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

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

ADMINISTRAR ROLES CON INSTRUCCIONES TRANSACT-SQL La creación de roles estándar con código implica el uso del procedimiento almacenado del sistema sp_addrole. El nombre de un rol puede tener un máximo de 128 caracteres y no puede incluir una barra diagonal inversa, no puede ser nulo ni ser una cadena vacía. De forma predeterminada, los roles serán propiedad del usuario dbo. Sin embargo, puede asignarse el rol de propietario agregando un segundo parámetro. El siguiente código crea el rol de administrador (manager): CREATE ROLE ‘Manager’

La contrapartida de crear un rol es quitarlo. Un rol no se debe eliminar si hay usuarios asignados actualmente al mismo. El procedimiento almacenado del sistema sp_droprole quitará el rol de la base de datos, como en el ejemplo siguiente: DROP ROLE ‘Manager’

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

Como era de esperar, el procedimiento almacenado del sistema sp_droprolemember quita un usuario de un rol asignado. Por tanto, el código siguiente libera a Joe del arduo trabajo de administración: EXEC sp_dropRoleMember ‘Manager’, ‘Joe’

Administrar una base de datos | 99

COMPRENDER LAS ESTRUCTURAS DEL ROL JERÁRQUICO Si la estructura de seguridad es compleja, una técnica particularmente útil para conceder permisos en la organización es el diseño de una estructura jerárquica de los roles de base de datos estándar. En otras palabras, se pueden anidar roles de base de datos definidos por el usuario. Por ejemplo: • El rol trabajador puede tener acceso limitado. • El rol gerente puede tener todos los derechos del trabajador además de los derechos adicionales para buscar tablas. • El rol administrador puede tener todos los derechos del gerente más el derecho para realizar otras tareas de administración de bases de datos. Para llevar a cabo este tipo de diseño, siga estos pasos: 1. Cree el rol trabajador y establezca los permisos. 2. Cree el rol gerente y establezca los permisos. Agregue el rol gerente como un usuario

al rol trabajador.

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

La ventaja de este tipo de organización de seguridad es que un cambio en el nivel inferior afecta a todos los niveles superiores. Como resultado, solo se necesita administrar una ubicación, en lugar de administrar docenas de ubicaciones.

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

100 | Lección 5

Revisar un modelo de seguridad de ejemplo Para poner algunos ejemplos de permisos mediante la base de datos OBXKites, la Tabla 5-1 muestra una lista con la configuración de permisos de los roles de base de datos estándar. La Tabla 5-2 muestra una lista de algunos usuarios y sus roles. Tabla 5-1 Configuración de permisos para OBXKites Rol estándar Rol jerárquico

principales Tablas de grupo de archivos

Tablas estáticas de grupo de archivos

Otros Permisos

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 para OBXKites

Usuario

Roles Estándar de Bases de Datos

Sammy Admin Joe Public LRN

IT DBA

Grupo Clerk de Windows (Betty, Tom, Martha y Mary)

Clerk

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

Administrar una base de datos | 101 ■ Realizar

copias de seguridad y restaurar bases de datos

CONCLUSIÓN

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

Comprender los modelos de recuperación SQL Server ofrece varios modelos de recuperación para cada base de datos. Los modelos de recuperación determinan la cantidad de datos perdidos si el servidor tiene problemas y es necesario restaurar los datos a partir de la copia de seguridad. SQL Server ofrece tres modelos de recuperación. Estos son: • Recuperación simple • Recuperación completa • Registro masivo La recuperación simple requiere una menor administración puesto que las copias de seguridad del registro de transacciones se truncan habitualmente. La recuperación completa permite restaurar hasta un momento ya que los archivos de registro registran todas las transacciones SQL y el momento en que se realizaron. Las desventajas del modo de recuperación completa es que los registros pueden crecer mucho. Por lo tanto, al realizar copias de seguridad completas, hay que reducir y truncar los registros. El último modelo que se usa es el modelo de registro masivo. Es una combinación de los dos modelos anteriores. Permite un buen rendimiento, además de usar un espacio de registro mínimo. Sin embargo, no se puede realizar una restauración a un punto determinado.

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

CERTIFICACIÓN DISPONIBLE

¿Cuál es la diferencia entre una copia de seguridad completa y una copia de seguridad incremental? 5.2

Al realizar copias de seguridad, se puede elegir el tipo de copia de seguridad que es mejor para el entorno. El tipo de copia de seguridad se basa en la simplicidad, el tiempo para realizar una copia de seguridad y tiempo para realizar una restauración. • Copia de seguridad completa: una copia de seguridad completa contiene todos los datos en una base de datos específica o en conjunto de archivos o en grupos de archivos para poder recuperar los datos. • Copia de seguridad diferencial: una copia de seguridad diferencial se base en la última copia de seguridad completa de los datos. Esta copia se denomina base del diferencial o base diferencial. Una copia de seguridad diferencial contiene únicamente los datos que han cambiado desde la base diferencial. Por lo general, las copias de seguridad diferenciales que se realizan inmediatamente después de la copia de seguridad de base son menores y más rápidas que las de la base de una copia de seguridad completa. Por lo tanto, mediante las copias de seguridad diferenciales se puede acelerar el proceso de

102 | Lección 5

realizar copias de seguridad frecuentes para disminuir el riesgo de pérdida de datos. Normalmente, varias copias de seguridad diferenciales sucesivas usan una base diferencial. En lo que se refiere a la restauración, la copia de seguridad completa se restaura en primer lugar, seguida de la última copia de seguridad diferencial. • Copia de seguridad incremental: una copia de seguridad incremental se basa en la última copia de seguridad de los datos. Una copia de seguridad incremental contiene únicamente los datos que han cambiado desde la última copia de seguridad completa o incremental. Las copias de seguridad incrementales son menores y más rápidas de crear que las copias de seguridad completas o diferenciales. En lo que se refiere a la restauración, la copia de seguridad completa se restaura primero, seguida de cada copia de seguridad incremental. Con el tiempo, cuando se actualiza una base de datos, la cantidad de datos que se incluye en copias de seguridad diferenciales aumenta. Esto hace que la copia de seguridad sea más lenta de crear y restaurar. Finalmente, se debe crear otra copia de seguridad completa para proporcionar una nueva base diferencial para otra serie de copias de seguridad diferenciales. Después de la primera copia de seguridad de datos, bajo el modelo de recuperación completa o el modelo de recuperación de registro masivo, las copias de seguridad de registros de transacciones normales (o copias de seguridad del registro) son obligatorias. Cada copia de seguridad de registro abarca la parte del registro de transacciones que estaba activa cuando se creó la copia de seguridad e incluye todos los registros que no se han copiado en una copia de seguridad del registro anterior. Las copias de seguridad de las bases de datos son fáciles de usar y se recomiendan siempre que el tamaño de la base de datos lo permita. La Tabla 5-3 muestra los tipos de copias de seguridad de base de datos que admite SQL Server. Tabla 5-3 Tipos de copias de seguridad de base de datos que admite Microsoft SQL

Tipo de copia de seguridad

Descripción

Copia de seguridad de la base de datos

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

Copia de seguridad de base de datos diferencial

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

COMPRENDER LAS COPIAS DE SEGURIDAD PARCIALES Y DIFERENCIALES Las copias de seguridad parciales y diferenciales se han diseñado para proporcionar más flexibilidad a la hora de realizar copias de seguridad de aquellas bases de datos que contienen algunos grupos de archivos de solo lectura bajo el modelo de recuperación simple. Sin embargo, estas copias de seguridad son compatibles con todos los modelos de recuperación. La Tabla 5-4 muestra los tipos de copias de seguridad parciales que admite SQL Server. Tabla 5-4 Tipos de copias de seguridad parciales que admite Microsoft SQL

Tipo de copia de seguridad

Descripción

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

Administrar una base de datos | 103

COMPRENDER LAS COPIAS DE SEGURIDAD DE ARCHIVOS También se puede hacer una copia de seguridad y restaurar los archivos de una base de datos de forma individual. Las copias de seguridad de archivos pueden mejorar la velocidad de recuperación, ya que permiten restaurar solo los archivos dañados sin necesidad de restaurar el resto de la base de datos. Por ejemplo, si una base de datos se compone de varios archivos ubicados en diferentes discos y se produce un error en un disco, solo se tendrá que restaurar el archivo del disco en el que se ha producido el error. Sin embargo, la acción de planear y restaurar copias de seguridad de archivos puede ser compleja; por lo tanto, las copias de seguridad de archivos se deben usar solo cuando agregan claramente valor al plan de restauración. La Tabla 5-5 muestra los tipos de copias de seguridad de archivos que admite SQL Server. Tabla 5-5 Tipos de copias de seguridad de archivo

Tipo de copia de seguridad

Descripción

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

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

PROGRAMAR COPIAS DE SEGURIDAD La realización de una operación de copia de seguridad tiene un efecto mínimo en las transacciones que se están ejecutando; por lo tanto, las operaciones de copia de seguridad se pueden ejecutar durante las operaciones normales. Durante una operación de copia de seguridad, SQL Server copia los datos directamente de los archivos de base de datos a los dispositivos de copia de seguridad. Los datos no varían y las transacciones que se ejecutan durante la copia de seguridad nunca se retrasan. De esta forma, se puede realizar una copia de seguridad de SQL Server con un efecto mínimo en las cargas de trabajo de producción.

Comprender la restauración de bases de datos SQL Server admite varios escenarios de restauración, cada uno de los cuales se describe en la siguiente sección. Los escenarios de restauración posibles en SQL Server son los siguientes: • Restauración de la base de datos completa: restaura una base de datos completa, comenzando con una copia de seguridad completa, a la que puede seguir la restauración de una copia de seguridad de base de datos diferencial (y copias de seguridad del registro).

104 | Lección 5 • Restauración de archivos: restaura un archivo o grupo de archivos en una base de datos de grupo de archivos múltiples. Después de una restauración de archivos completa, se puede restaurar una copia de seguridad diferencial de archivos. • Restauración de páginas: restaura páginas individuales. • Restauración por etapas: restaura una base de datos por etapas, empezando por el grupo de archivos principal y uno o varios grupos de archivos secundarios. • Solo recuperación: recupera los datos que ya son compatibles con la base de datos y solo necesitan estar disponibles. • Restauración de registros de transacciones: en el modelo de recuperación completa o de registro masivo, puesto que los registros registran cada transacción, la restauración de las copias de seguridad del registro es necesaria para alcanzar el punto de recuperación deseado. • Creación de una base de datos reflejada: cuando se tiene una base de datos reflejada, se tienen bases de datos duplicadas en varios servidores. Cuando se escribe información en un servidor, se replica automáticamente al segundo servidor. • Creación y mantenimiento de un servidor en espera: cuando se tiene un servidor de reserva, se está usando un grupo activo/pasivo que consta de dos o más servidores. Cuando se produce un error en el servidor activo, el servidor pasivo se convierte en el servidor activo, teniendo en cuenta el tiempo de inactividad mínimo.

USO DE SSMS

Para restaurar datos mediante la herramienta de interfaz gráfica, siga estos pasos.

RESTAURAR DATOS PREPÁRESE. Antes de empezar, asegúrese de iniciar la aplicación SQL Server Management Studio y conectarse a la base de datos con la que desea trabajar. Después, realice los siguientes pasos:



1. Después de conectarse a la instancia adecuada del motor de bases de datos de Microsoft SQL Server, en el Explorador de objetos, haga clic en el nombre del servidor para expandir el árbol de servidores. 2. Expanda Bases de datos. En función de la base de datos, seleccione una base de datos de usuario o expanda Bases de datos del sistema y seleccione una base de datos del sistema. 3. Haga clic con el botón derecho del mouse en la base de datos, seleccione Tareas y haga clic en Restaurar. 4. Haga clic en Base de datos, se abrirá el cuadro de diálogo Restaurar base de datos. 5. En la página General, el nombre de la base de datos que se va a restaurar aparecerá en el cuadro de lista A base de datos. Para crear una nueva base de datos, escriba su nombre en el cuadro de lista. 6. En el cuadro de texto A un momento dado, conserve el valor predeterminado (lo más reciente posible) o seleccione una fecha y hora específicas haciendo clic en el botón Examinar, que abre el cuadro de diálogo Restauración a un momento dado. 7. Para especificar el origen y la ubicación de los conjuntos de copia de seguridad que se van a restablecer, haga clic en una de las siguientes opciones: • De base de datos: especifique un nombre de base de datos en el cuadro de lista. • De dispositivo: haga clic en el botón Examinar, que abre el cuadro de diálogo Especificar copia de seguridad. En el cuadro de lista Medio de copia de seguridad, seleccione uno de los tipos de dispositivos mostrados. Para seleccionar uno o varios dispositivos en el cuadro de lista Ubicación de copia de seguridad, haga clic en Agregar.  Después de agregar los dispositivos que desea en el cuadro de lista Ubicación de copia de seguridad, haga clic en Aceptar para volver a la página General. 8. En la cuadrícula Seleccionar los conjuntos de copia de seguridad que se van a restaurar, seleccione las copias de seguridad que desea restaurar. En esta cuadrícula se muestran las copias de seguridad disponibles para la ubicación especificada. De forma predeterminada, se sugiere un plan de recuperación. Para invalidar el plan de recuperación sugerido, puede cambiar las opciones seleccionadas en la cuadrícula. La selección de todas las copias de seguridad que dependen de una copia de seguridad no seleccionada se anula automáticamente.

Administrar una base de datos | 105

CERTIFICACIÓN DISPONIBLE

¿Comprende las copias de seguridad y restauración de bases de datos? 5.2



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). 13. Como alternativa, puede elegir cualquiera de las siguientes opciones: • Dejar la base de datos no operativa y no revertir las transacciones no confirmadas. Pueden restaurarse registros de transacciones adicionales (RESTORE WITH NO RECOVERY). • Dejar la base de datos en modo de solo lectura. Deshace las transacciones no confirmadas, pero guarda las acciones de deshacer en un archivo en espera para que los efectos de recuperación puedan revertirse (RESTORE WITH STANDBY).

USO DEL COMANDO RESTORE

El comando RESTORE de Transact-SQL permite realizar los siguientes escenarios de restauración: • Restaurar una base de datos completa desde una copia de seguridad completa (restauración completa). • Restaurar parte de una base de datos (restauración parcial). • Restaurar archivos o grupos de archivos específicos para una base de datos (restauración de archivo). • Restaurar páginas específicas para una bases de datos (restauración de página). • Restaurar un registro de transacciones en una base de datos (restauración de registro de transacciones). • Revertir una base de datos hasta el punto del momento capturado por una instantánea de base de datos. Por ejemplo, para restaurar la base de datos mediante el archivo especificado, debe ejecutar el siguiente comando: RESTORE DATABASE name_of_database FROM DISK = ‘nombre de copia de seguridad’ GO

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

Para obtener más información sobre cómo usar el comando RESTORE, consulte la siguiente página web: http://msdn.microsoft.com/es-es/library/ms186858.aspx

106 | Lección 5

RESUMEN DE CONOCIMIENTOS En esta lección, ha aprendido lo siguiente: • El objetivo final de la seguridad de una base de datos es garantizar que los derechos y responsabilidades otorgados a los usuarios se cumplan. • Un permiso se usa para conceder a una entidad (como un usuario) acceso a un objeto (como otro usuario o base de datos). • Un inicio de sesión es el proceso por el cual se controla el acceso de una persona a un sistema informático mediante la identificación de ese usuario a través de las credenciales proporcionadas por el usuario. El método de inicio de sesión más común consiste en proporcionar un nombre de usuario y una contraseña. • Una cuenta de usuario es una representación lógica de una persona en un sistema electrónico. • Aunque un usuario puede pertenecer a un rol fijo de la base de datos y tener determinados permisos de nivel administrativo, no puede tener acceso a los datos si primero no se le conceden permisos al propio objeto de base de datos (por ejemplo, tablas, procedimientos almacenados, vistas o funciones). • Cada permiso de objeto se asigna mediante la concesión, revocación o denegación de permisos de inicio de sesión de usuario. • La autenticación es la acción de establecer o confirmar la identidad de un usuario o sistema. • El modo de autenticación de Windows es superior al modo mixto porque los usuarios no necesitan aprenderse otra contraseña y porque usa el diseño de seguridad de la red. • La cuenta sa es la cuenta integrada del administrador de SQL asociada con la autenticación de SQL. • SQL Server incluye roles de servidor predefinidos fijos. Básicamente, estos roles conceden permiso para realizar determinas tareas administrativas relacionadas con el servidor. • El rol sysadmin puede realizar cualquier actividad en la instalación de SQL Server, independientemente de los permisos que se hayan configurado. El rol sysadmin invalida incluso los permisos denegados en un objeto. • El rol público es un rol fijo, pero puede tener permisos de objeto como un rol estándar. Cada usuario es miembro del rol público de forma automática y no puede eliminarse, de manera que el rol público sirve como una línea base o nivel de permiso mínimo. • Los usuarios deben poder tener acceso de forma explícita a cualquier base de datos de usuario. • db_owner es un rol especial que tiene todos los permisos de la base de datos. • Un rol de aplicación es un rol de base de datos específico diseñado para permitir que una aplicación obtenga acceso independientemente del usuario. • La finalidad de una copia de seguridad de una base de datos es tener algo que restablecer si se pierden datos durante las tareas diarias rutinarias. • Una copia de seguridad completa contiene todos los datos en una base de datos específica o en un conjunto de archivos o en grupos de archivos para poder recuperar esos datos. • La copia de seguridad diferencial solo hace copias de seguridad de los datos desde la última copia de seguridad completa. • La copia de seguridad incremental solo hace copias de seguridad de los datos desde la última copia de seguridad completa o incremental. • Al restaurar a partir de una copia de seguridad diferencial, primero se debe restaurar la copia de seguridad completa anterior y después restaurar la última copia de seguridad diferencial. • Al restaurar a partir de una copia de seguridad incremental primero se debe restaurar la copia de seguridad completa anterior y después restaurar cada copia de seguridad incremental desde la copia de seguridad completa en orden.

Administrar una base de datos | 107 ■ Evaluación

de conocimientos Verdadero o falso Rodee con un círculo la V si el enunciado es verdadero o la F si la 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 5. ¿Cuál de los siguientes no es un tipo de copia de seguridad admitido en SQL Server? a. Completa b. Diferencial c. De archivos d. De dispositivos

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

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

Escenario 5-2: Uso de copias de seguridad completas e incrementales Tiene seis bases de datos grandes, cada una de al menos 2 GB. Necesita asegurarse de que realiza copias de seguridad de las bases de datos a diario por si se produjera un contratiempo y hubiera que restaurarlas a partir de las copias de seguridad. Puesto que la copia de seguridad de cada base de datos tarda unas dos horas en completarse y solo cuenta con un plazo de tiempo de seis horas al día para realizar las copias de seguridad, ¿qué copia de seguridad recomendaría como solución?

Administrar una base de datos | 109



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

Escenario 5-4: Restauración de una copia de seguridad (restauración completa) Al realizar tareas de mantenimiento en las base de datos, descubre que una de las tablas está dañada. Afortunadamente, hizo una copia de seguridad de esa base de datos. Mediante SSMS, ¿qué pasos debe seguir para restaurar la base de datos de la que hizo una copia de seguridad en el último ejercicio?

Apéndice A

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

Número del objetivo del examen

Número de lección

Comprender los conceptos básicos de bases de datos Comprender cómo se almacenan datos en tablas.

1.1

1

Comprender los conceptos de bases de datos relacionales.

1.2 1

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

1.3

1

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

1.4

1

Elegir tipos de datos.

2.1

2

Comprender las tablas y cómo crearlas.

2.2

2

Crear vistas.

2.3

2

Crear procedimientos almacenados y funciones.

2.4

2

Seleccionar datos.

3.1

3

Insertar datos.

3.2

3

Actualizar datos.

3.3

3

Eliminar datos.

3.4

3

Comprender la normalización.

4.1

4

Comprender las claves principales, externas y compuestas.

4.2

4

Comprender los índices.

4.3

4

Comprender los conceptos de seguridad de bases de datos.

5.1

5

Comprender las copias de seguridad y restauración de bases de datos.

5.2

5

Crear objetos de base de datos

Manipular datos

Comprender el almacenamiento de datos

Administrar una base de datos

110

Índice A

Acceder a roles de base de datos fijos, 95 Agregar inicio de sesión de Windows, 87—90 quitar, 90 ALTER, 13, 14-15 AND, 46 Archivos de datos primarios, 2 Archivos de datos secundarios, 2 asignar, mediante SSMS, 94 asignar, mediante Transact-SQL, 95 autenticación de seguridad de Windows, 87 cuentas del servicio de SQL Server, 87 inicio de sesión, agregar, 87—90 inicio de sesión, quitar, 90 autenticación de SQL, 90—91 Autenticación SQL, 90-91 Windows, 87 Autocombinación, 9, 50—51 Autoreferencia, 9

B

Base (base diferencial), 101 Base de datos (bd) acceso, conceder, 92-94 características de, 5 copias de seguridad, 101-103 crear, mediante SSMS, 11 cuentas de inicio de sesión de invitado, 94 definición de, 2 eliminar, mediante SSMS, 12 frente a hojas de cálculo, 5-6 jerárquica, 3-4 plana, 3 proteger, 85-100 relacional, 4-5, 7-9 restauraciones, 103-105 seguridad de nivel, 87 seguridad de objetos, 94 tablas, comparadas con hojas de cálculo, 6 valores calculados, 6 Base de datos jerárquica, 3—4 Base de datos plana, 3 BEGIN TRAN, 56 BETWEEN, 46-47 bigint (tipo de datos), 22, 24 bit (tipo de datos), 22, 24

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

C

Cadenas binarias, 23 Cadenas de caracteres, 23, 28-29 Cadenas de propiedad, 99 camelCase, 29 Cast (función), 27 char (tipo de datos), 23, 28 Clave principal compuesta, 74 Claves externas de integridad referencial, 71 usar, 56 Claves externas crear, mediante SSMS, 71—73 definición de, 70—71 integridad referencial, 71 Claves principales definición de, 70 frente a restricción única, 67 integridad de datos, 74 segunda forma normal (2FN), 63 tercera forma normal (3FN), 64, 65 Combinación cruzada, 48 Combinación externa, 48, 50 COMMIT, 56 Conceptos de bases de datos relacionales, 7-9 definición de, 4-5 elementos del lenguaje, 7-9 restricciones, 8-9 Consultas. Véase también AND Transact-SQL, 46 , 53 , 53 BETWEEN, 46-47 como modificación de datos, 43 condiciones, combinar, 45-46 definición de, 2 EXCEPT, 48 INSERT, 12, 53-54 insertar datos, 51-54 INTERSECT, 48 JOIN, 48-51 NOT, 47 seleccionar datos, 44-51 SELECT, 44-45 SELECT... FROM, 45

UNION, 47 UPDATE, 54-55 WHERE, 45 Conversiones implícitas, 26—27 Convert (función), 27 Copia de seguridad completa, 101 Copia de seguridad de archivo, 103 Copia de seguridad de registro de transacciones, 102 archivos, 2 restaurar, 104 Copia de seguridad de registros, 102 Copia de seguridad diferencial, 101-102 Copia de seguridad incremental, 102 Copia de seguridad parcial, 102 Copias de seguridad archivo, 103 completa, 101 definición de, 101 diferencial, 101-102 incremental, 102 parcial, 102 programar, 103 propósito de, 101 registro de transacciones, 102 tipos, 101-102 Crear restricción única, 67—70 definición de, 8, 67 frente a clave principal, 67 CREATE, 13, 14 Cuarta forma normal (4FN), 66 Cuenta de usuario del dominio, 87 Cuenta de usuario local, 87 Cuenta del sistema local, 87 cuenta SA, 91

D

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

111

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

E

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

F

Float (tipo de datos), 22, 25 Forma, 62

G

GRANT, 95

H

Hojas de cálculo frente a bases de datos, 5—6 valores calculados, 6 Hojas de cálculo, frente a tablas de base de datos, 6

I

índice agrupado, 75-76 Índice no agrupado crear, mediante SSMS, 76—79 definición de, 76 Índices agrupado, 75—76 Combinación interna, 48, 49 definición de, 2 desventajas de, 75 estructura de árbol B, 75 no agrupado, 76 no agrupado, crear, 76—79 Iniciar sesión, 85 INSERT consultas de datos, 53—54 entero (tipo de datos), 22 instrucción DML, 12 int (tipo de datos), 22, 24 mediante Transact-SQL, 53 permiso de objeto, 95 Intercalación, 24 INTERSECT, 48 inyección de SQL, 38

J

JOIN (cláusula), 48—51

L

Lenguaje de definición de datos (DDL) ALTER, 13, 14-15 CREATE, 13, 14 definición de, 13 DELETE, 13, 15-16 DROP, 13, 15 instrucciones, 13-16 tablas del sistema, 16 TRUNCATE, 13, 15-16 usar, 13-16 USE, 13, 14 Lenguaje de manipulación de datos (DML) definiciones, 12 instrucciones, 12 listado de, 94

M

MERGE, 12 Modelos de recuperación, 101 money (tipo de datos), 21, 22, 24, 25

N

nchar (tipo de datos), 23, 28 Normalización cuarta forma normal (4NF), 62, 66 definición de, 62 formas, 62 objetivo de, 62 primera forma normal (1NF), 62—63 quinta forma normal (5NF), 62, 66 segunda forma normal (2NF), 62, 63—64 tercera forma normal (3NF), 62, 64—66 ventajas de, 66 NOT, 47 Numérico (tipo de datos), 22—23, 24 Numérico, aproximado, 25—29 Numérico, exacto, 24—25 nvarchar (tipo de datos), 23, 28

P

PascalCase, 29 Permisos de objetos conceder, mediante Transact-SQL, 98 configurar desde la lista de roles, 97 configurar desde la lista de usuarios, 97 definición de, 95 modificar, 96—97 tipos, 95 Permisos conceder, 86 definición de, 85 denegar, 86 objetos, 95—98

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

Q

Quinta forma normal (5FN), 66

R

Recuperación completa, 101 Recuperación de registro masivo, 101 Recuperación simple, 101 Restauraciones archivo, 104 base de datos reflejada, crear, 104 completo, 103 definición de, 101 mediante SSMS, 104-105 mediante Transact-SQL, 105 página, 104 por etapas, 104 registro de transacciones, 104 servidor en espera, crear y mantener, 104 solo recuperación, 104 RESTORE, 105 Restricción de clave externa, 8—9, 71 Restricción de clave principal, 8 restricción de comprobación, 8 restricción Default, 8 restricción Not Null, 8 Restricciones, 8-9 REVOKE, 95 Rol público, 92 roles de aplicación, 95 Roles de servidor de bases de datos acceder, 95 definido por el usuario, 92 fijo, 91, 94-95 público, 92 Roles de servidor, 91—92 Roles administrar con Transact-SQL, 98 aplicación, 95 base de datos fija, 94-95 definido por el usuario, 92 estructuras, jerárquicas, 99 público, 92 servidor de bases de datos, 91-92 servidor fijo, 91-92 ROLLBACK, 56

S

Seguridad de nivel de servidor, 86 Seguridad de segunda forma normal autenticación de SQL, 90—91

Índice | 113 cadenas de propiedad, 99 cuenta de usuario, 85 iniciar sesión, 85 inicio de sesión de Windows, quitar, 90 inicio de sesión en SQL Server, agregar, 88—90 instrucción de consulta, 44—45 Instrucción DML, 12 integridad referencial, 56 modelo, 100 nivel de base de datos, 86 nivel de servidor, 86 objetivos de, 85 objeto, 94 permiso de objeto, 95 permisos de objetos, 95—98 permisos, 85 roles de base de datos fijos, 94—95 roles de servidor, 91—92 roles, administrar, 98—99 Securityadmin, 91 SELECT Windows, 87-90 SELECT... FROM, 45 Serveradmin, 91 Setupadmin, 91 Sistema de administración de bases de datos (DBMS), 2 smalldatetime (tipo de datos), 23, 26 SQL Server Analizador de consultas, 10—11 bases de datos, crear, 11 bases de datos, eliminar, 12 clave externa, crear, 71—73 crear procedimientos almacenados, 35—38 crear, mediante SSMS, 36—37 crear, mediante Transact-SQL, 36 cuentas de servicio, 87 datos, insertar, 52—53 definición de, 36 Sysadmin, 86, 91 definición de, 9 Explorador de objetos, 9 índice, no agrupado, crear, 76—79 inicios de sesión, agregar, 88—89 inicios de sesión, agregar, mediante SSMS, 88—89 inicios de sesión, agregar, mediante Transact-SQL, 89—90 interfaz, cargar, 11 procedimientos almacenados, crear, 36—37 restaurar, 104—105

restricciones de SQL Server Management Studio (SSMS), únicas, crear, 67—70 roles de base de datos fijos, asignar, 94 SQLCMD, 11 tablas, actualizar, 55 tablas, crear, 29—32 Transact-SQL, 11 usar, 9—12 vistas, crear, 34—35 XQuery, 10

T

Tablas borrar, 56 crear, mediante SSMS, 29—32 crear, mediante Transact-SQL, 32 definición de, 3, 29 frente a hojas de cálculo, 6 propósito de, 29 sistema, 16 truncar, 56 Tipo de datos de tercera forma normal, 23, 26 Tipo de datos integrado, 21-24 Tipos de datos bigint, 22, 24 bit, 22, 24 booleano, 22 cadenas binarias, 23 cadenas de caracteres, 23, 28-29 cast (función), 27 char, 23, 28 conversiones implícitas, 26-27 convert (función), 27 datetime, 21-22, 23, 25-26 datetimeoffset, 23, 26 decimal, 22, 24 definición de, 21 definición, 20-29 entero, 22 escala, 24 especificador max, 28 fecha y hora, 25-26 fecha, 23, 25-26 flotante, 22, 25 hora, 23, 26 int, 22, 24 integrado, 21-24 intercalación, 24 money (numérico), 21, 22, 24, 25 nchar, 23, 28 numérico, 22-23, 24 numérico, aproximado, 25-29

numérico, exacto, 24-25 nvarchar, 23, 28 operaciones matemáticas, 24 precedencia, 24 precisión, 24 real, 25 smalldatetime, 23, 26 varchar, 22, 23, 28 Transacciones, 56 Transact-SQL acceso a base de datos, conceder, 93 agregar inicios de sesión, 89—90 datos, insertar, 53—54 definición de, 11 procedimientos almacenados, crear, 36 restaurar, 105 roles de base de datos fijos, asignar, 95 roles de servidor, asignar, 92 tablas, crear, 32 vistas, crear, 35 TRUNCATE TABLE, 55, 56 TRUNCATE, 13, 15—16

U

UNION, 47 UPDATE consultas de datos, 54—55 Cuenta de usuario, 85 instrucción DML, 12 permiso de objeto, 95 Rol definido por el usuario, 92 USE, 13, 14 Usuario invitado, 94 Usuarios identificación de, métodos, 86 rol sysadmin, agregado a, 86

V

Valor calculado, 6 varchar (tipo de datos), 22, 23, 28 Vistas crear, 33—35 crear, mediante SSMS, 34—35 crear, mediante Transact-SQL, 35 definición de, 33 propósito de, 33 seguridad, 33

W

WHERE, 45

X

XQuery, 10

Notas

Notas

Notas

Notas

Notas

Notas

Notas

Notas

Notas

Notas

Notas