manual completo sql parte1

59
1 Contenido Unidad 1. ............................................................................................................................................. 3 El entorno gráfico SSMS ...................................................................................................................... 3 1.1. Introducción ............................................................................................................................. 3 Unidad 1. Básico: Introducción a las bases de datos (I) ...................................................................... 3 Objetivos de un SGBD ..................................................................................................................... 3 Independencia de los datos. ....................................................................................................... 3 Seguridad e integridad. ............................................................................................................... 4 Redundancia mínima................................................................................................................... 5 Facilidad de recuperación de la información .............................................................................. 5 Tipos de bases de datos .................................................................................................................. 6 Tipos de bases de datos según su ubicación ............................................................................... 6 Tipos de bases de datos según la organización lógica de los datos ............................................ 9 La base de datos relacional ........................................................................................................... 11 Elementos de una base de datos relacional .............................................................................. 11 1.2. Instalar SQL Server 2005 ........................................................................................................ 14 Objetivo ......................................................................................................................................... 16 Ejercicio paso a paso ..................................................................................................................... 16 1.3. Entrada al SQL Server Management Studio ........................................................................... 16 1.4. Estructura interna de una base de datos ............................................................................... 18 1.5. Crear una base de datos en SSMS .......................................................................................... 19 1.6. Adjuntar una base de datos ................................................................................................... 24 Unidad 1. Ejercicio paso a paso: Adjuntar base de datos ................................................................. 26 Objetivo ......................................................................................................................................... 26 Ejercicio paso a paso ..................................................................................................................... 26 1.7. Conectar y Desconectar la base de datos .............................................................................. 27 Unidad 1. Ejercicio paso a paso: Trasladar una base de datos a otro equipo................................... 28 Objetivo ......................................................................................................................................... 28 Ejercicio paso a paso ..................................................................................................................... 28 1.8. Crear una nueva tabla ............................................................................................................ 29 1.9. Tipos de datos ........................................................................................................................ 30

Upload: luny-tunnz

Post on 01-Jan-2016

108 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Manual Completo SQL Parte1

1

Contenido Unidad 1. ............................................................................................................................................. 3

El entorno gráfico SSMS ...................................................................................................................... 3

1.1. Introducción ............................................................................................................................. 3

Unidad 1. Básico: Introducción a las bases de datos (I) ...................................................................... 3

Objetivos de un SGBD ..................................................................................................................... 3

Independencia de los datos. ....................................................................................................... 3

Seguridad e integridad. ............................................................................................................... 4

Redundancia mínima ................................................................................................................... 5

Facilidad de recuperación de la información .............................................................................. 5

Tipos de bases de datos .................................................................................................................. 6

Tipos de bases de datos según su ubicación ............................................................................... 6

Tipos de bases de datos según la organización lógica de los datos ............................................ 9

La base de datos relacional ........................................................................................................... 11

Elementos de una base de datos relacional .............................................................................. 11

1.2. Instalar SQL Server 2005 ........................................................................................................ 14

Objetivo ......................................................................................................................................... 16

Ejercicio paso a paso ..................................................................................................................... 16

1.3. Entrada al SQL Server Management Studio ........................................................................... 16

1.4. Estructura interna de una base de datos ............................................................................... 18

1.5. Crear una base de datos en SSMS .......................................................................................... 19

1.6. Adjuntar una base de datos ................................................................................................... 24

Unidad 1. Ejercicio paso a paso: Adjuntar base de datos ................................................................. 26

Objetivo ......................................................................................................................................... 26

Ejercicio paso a paso ..................................................................................................................... 26

1.7. Conectar y Desconectar la base de datos .............................................................................. 27

Unidad 1. Ejercicio paso a paso: Trasladar una base de datos a otro equipo ................................... 28

Objetivo ......................................................................................................................................... 28

Ejercicio paso a paso ..................................................................................................................... 28

1.8. Crear una nueva tabla ............................................................................................................ 29

1.9. Tipos de datos ........................................................................................................................ 30

Page 2: Manual Completo SQL Parte1

2

1.10. Valores nulos ........................................................................................................................ 31

1.11. Columna con contador ......................................................................................................... 32

1.12. Clave primaria ...................................................................................................................... 33

1.13. Añadir o eliminar columnas ................................................................................................. 33

1.14. Modificar la definición de una tabla .................................................................................... 34

1.15. Insertar datos en la tabla ..................................................................................................... 35

1.16. Modificar datos .................................................................................................................... 35

1.17. Eliminar filas ......................................................................................................................... 35

1.18. Relacionar tablas .................................................................................................................. 36

1.19. Abrir una nueva consulta ..................................................................................................... 39

1.20. Escribir y ejecutar código TRANSACT-SQL ........................................................................... 41

1.21. La base de datos predeterminada ........................................................................................ 42

1.22. El editor de texto .................................................................................................................. 44

1.23. Configurar un esquema de colores personalizado ............................................................... 44

1.24. Las Vistas .............................................................................................................................. 45

1.25. El panel de diagrama ............................................................................................................ 48

1.26. El panel de criterios .............................................................................................................. 49

1.27. El panel SQL .......................................................................................................................... 50

Ejercicio 1: Crear una base de datos ............................................................................................. 51

Ejercicio 2: Crear y definir tablas ................................................................................................... 52

Tabla Libros ............................................................................................................................... 52

Tabla Préstamos ........................................................................................................................ 52

Tabla Usuarios ........................................................................................................................... 53

Ayuda ejercicios unidad 1 ................................................................................................................. 55

Ejercicio 1: Crear una base de datos ............................................................................................. 55

Ejercicio 2: Crear y definir tablas ................................................................................................... 55

Ejercicio 3: Insertar datos en las tablas ......................................................................................... 55

Ejercicio 4: Modificar la definición de las tablas ........................................................................... 56

Prueba evaluativa unidad 1: El entorno gráfico SSMS ...................................................................... 57

Page 3: Manual Completo SQL Parte1

3

Unidad 1.

El entorno gráfico SSMS

1.1. Introducción

SQL Server 2005 es un sistema gestor de bases de datos relacionales de Microsoft Corporation orientado a sistemas medianos y grandes aunque también puede rodar en ordenadores personales. SQL Server Management Studio (SSMS) es la herramienta de SQL Server que permite definir y gestionar todas las bases de datos almacenadas en el servidor SQL Server 2005.

En este tema veremos cómo utilizar el SQL Server Management Studio para manejar las bases de datos del servidor y organizaremos el texto en los siguientes puntos:

Instalar SQL Server 2005. Entrada al SQL Server Management Studio Las bases de datos: Estructura interna, crear, adjuntar, conectar y desconectar. Las tablas: crear tablas, definirlas, modificar su contenido, etc. Relacionar tablas Las Consultas Las Vistas

Si no sabes lo que es una base de datos relacional o no tienes conocimientos previos acerca de las bases de datos, puedes leer una introducción a las bases de datos en el siguiente básico

Unidad 1. Básico: Introducción a las bases de datos (I)

Objetivos de un SGBD

Un sistema gestor de bases de datos por definición debe cumplir los siguientes objetivos:

Independencia de los datos.

Recordando uno de los problemas que plantean los ficheros convencionales. La independencia de los datos consiste en hacer que los programas no sean tan dependientes de la estructura de los datos.

Se han definido dos tipos de independencia:

La independencia física: consiste en poder modificar la definición interna de los datos (el esquema interno) sin que ello suponga una modificación de los programas existentes. Por ejemplo, se puede cambiar la ubicación de la base de datos, o se puede añadir un índice sobre una tabla para que las consultas se ejecuten más rápidamente, sin que eso suponga una variación en los esquemas externos y conceptual, por lo que los programas (que utilizan el esquema externo) no se verán afectados.

Page 4: Manual Completo SQL Parte1

4

La independencia lógica: consiste en poder cambiar el esquema conceptual sin que ello suponga una modificación de los programas existentes.

Por ejemplo podemos añadir un nuevo dato en la tabla de clientes como la dirección de email sin que los esquemas externos se vean afectados.

Seguridad e integridad.

La seguridad consiste en que los usuarios no puedan acceder a datos sin autorización.

Si juntamos toda la información de la empresa en un mismo sitio, el SGBD debe tener mecanismos para que cualquier usuario pueda tener acceso a únicamente la información que necesita para las tareas que tiene encomendadas.

Esta seguridad se consigue por medio de los esquemas externos, ya que el usuario sólo tiene acceso a su esquema externo que le proporciona los datos que el administrador ha considerado incluir en ese esquema. Para el usuario no habrá más datos que estos. Además los SGBD tienen mecanismos para definir autorizaciones que pueden ser de distinto tipo: autorización de lectura, de inserción, de actualización, autorizaciones especiales para poder variar el esquema conceptual etc.

La integridad se refiere a que la información almacenada en la base de datos esté libre de errores. Esto no siempre es posible ya que existen distintos tipos de errores que tienen diferentes soluciones:

* Fallos de hardware. Estos errores no los puede evitar el SGBD pero se pueden subsanar facilitando copias de seguridad y procesos de recuperación.

* Fallos del programador. Puede que aparezcan datos erróneos en la base de datos como consecuencia de errores en el programa que genera estos datos. Para evitar al máximo este tipo de errores el sistema debe ser fácil de programar, cuantos más controles realice el sistema de forma automática, menos controles habrá que incluir a nivel de programación por lo que limitaremos la probabilidad de fallo y los programas deben ser probados con juegos de ensayos bien definidos.

* Fallos del usuario final. El usuario que introduce datos en la base de datos también puede cometer errores, el sistema debe permitir controlar al máximo la información que se introduce para limitar el número de estos errores, para ello los SGBD incluyen cláusulas de validación de los datos, validaciones de diferentes tipos que veremos con más detalle más adelante.

* Fallos derivados de la concurrencia. Ya que toda la información está centralizada y los distintos usuarios acceden a ella de forma simultánea, pueden ocurrir problemas cuando dos usuarios quieren acceder al mismo dato a la vez. Por ello el SGBD debe tener establecidos mecanismos para evitar este tipo de problema, bloquear registros, abortar automáticamente transacciones etc.

Page 5: Manual Completo SQL Parte1

5

Redundancia mínima

La redundancia consiste en que exista algún dato repetido en varios lugares. Por ejemplo si tenemos la dirección del cliente en la factura, en la cuenta contable, en los datos generales del cliente; esto como ya vimos anteriormente nos producirá varios problemas:

la información repetida ocupa espacio innecesario.

la variación de un domicilio supone el variar ese domicilio en todos los lugares donde esté almacenado.

mayor tiempo de proceso

posibilidad de inconsistencia

Por todo ello hay que evitar al máximo esa redundancia, esto se consigue utilizando herramientas de diseño y obteniendo un diseño óptimo de la base de datos.

Facilidad de recuperación de la información

Otro objetivo muy importante de un SGBD es el proporcionar al usuario (o programador) unas herramientas potentes de manejo de datos para que pueda de manera sencilla y rápida, obtener toda la información que desea sin que, por ello se tenga que hacer un programa complejo. Veremos que el SQL, lenguaje empleado para recuperar información de la base de datos, es un lenguaje muy potente y cercano al lenguaje hablado, y además los SGBD incluyen entornos gráficos sencillos de utilizar.

El administrador de la base de datos

El administrador es el encargado de gestionar y controlar todo el sistema con la ayuda que le proporciona el SGBD. Tiene una gran responsabilidad ya que de él depende que el sistema funcione correctamente y como tiene el máximo nivel de privilegios, sus errores pueden ser desastrosos. Entre sus responsabilidades se incluye:

Instalar el SGBD en el sistema informático (a veces). Realizar el diseño de la base de datos. Crear las bases de datos que se vayan a gestionar. Crear y mantener los esquemas de las bases de datos. Crear y mantener las cuentas de los usuarios de las bases de datos. Colaborar con el administrador del sistema en las tareas de ubicación, dimensionado y

control de los archivos y espacios de disco ocupados por el SGBD. Establecer estándares de uso, políticas de acceso y protocolos de trabajo diario para los

usuarios de las bases de datos. Efectuar tareas de explotación como: Vigilar el trabajo diario colaborando en la resolución de las dudas de los usuarios. Controlar los tiempos de acceso, tasas de uso, cargas en los servidores, anomalías, etc. Llegado el caso, reorganizar las bases de datos. Diseñar y efectuar el planning de copias de seguridad periódicas. Restaurar la base de datos después de un incidente.

Page 6: Manual Completo SQL Parte1

6

Estudiar las auditorías mediante el ajuste de parámetros y con ayuda de las herramientas de monitorización del sistema y de las estadísticas.

El diccionario de datos

Dentro del SGBD, hay una parte que son datos sobre los datos, es una base de datos en la que se almacena toda la información necesaria para que el sistema funcione. Esta base de datos es el diccionario de datos y contiene:

La estructura lógica y física de la base de datos. Las definiciones de todos los objetos de la base de datos: tablas, vistas, índices,

disparadores (triggers) funciones, procedimientos almacenados, etc. El espacio asignado y utilizado por los objetos. Los valores por defecto de las columnas de las tablas. Los privilegios otorgados a los usuarios. Información que permita obtener estadísticas y evaluaciones del rendimiento del sistema.

Tipos de bases de datos

Podemos realizar distintas clasificaciones de las bases de datos:

Según su ubicación

Según la organización lógica de la información.

Tipos de bases de datos según su ubicación

1. Bases de datos locales.

En modo local tenemos la base de datos y el usuario ubicados en el mismo ordenador. Un ejemplo de base de datos que funciona en modo local es Microsoft Access, MS Access es una base de datos fácil de manejar por usuarios poco expertos que funciona bien en modo local y mientras no tenga que albergar grandes cantidades de información.

Ventajas Desventajas

Economía Es la más barata.

Monousuario En un instante determinado sólo la puede

utilizar una persona.

Simplicidad No se necesita llevar controles de accesos

concurrentes, de transmisión de datos, etc.

Capacidad Suele tener una capacidad de

almacenamiento limitado.

Page 7: Manual Completo SQL Parte1

7

2. Bases de datos centralizadas

En los sistemas centralizados tenemos la base de datos completa en un mismo servidor, y todos los usuarios acceden a ese servidor. Que la base de datos esté en un mismo servidor no implica que esté en un solo archivo o en el mismo disco, puede estar repartida.

En modo Cliente/Servidor, la base de datos se encuentra en un ordenador (el Servidor) y los usuarios acceden simultáneamente a esa base de datos a través de la red (sea una red local o Internet) desde sus ordenadores a través de un programa Cliente. A nivel de empresas es el sistema que más se utiliza en la actualidad.

Ventajas Desventajas

Multiusuario Permite que varios usuarios accedan a la vez a

la misma información.

Complejidad Tiene que incluir y gestionar un sistema de

usuario y subesquemas.

No redundancia Al estar todos los datos en el mismo servidor, la información no se duplica y es más fácil evitar

fallos debidos a redundancias.

Seguridad Se tienen que realizar controles para garantizar la seguridad de los datos, tanto a nivel interno como

a nivel de comunicaciones.

3. Bases de datos distribuidas

Tenemos la información repartida en distintas localizaciones unidas todas ellas mediante red y un sistema gestor de bases de datos distribuidas.

Las distintas localizaciones suelen ser distintas geográficamente.

Page 8: Manual Completo SQL Parte1

8

Ventajas Desventajas

Rendimiento Una clara ventaja es que es posible ubicar los datos en lugares donde se necesitan con más

frecuencia, aunque también se permita a usuarios no locales acceder a los datos según sus necesidades. Esto hace que la información se recupere de forma más rápida y ágil en las

ubicaciones locales. Además los sistemas trabajan en paralelo, lo cual permite balancear

la carga en los servidores.

Complejidad en el diseño de datos Además de las dificultades que generalmente se

encuentran al diseñar una base de datos, el diseño de una base de datos distribuida debe

considerar la fragmentación, replicación y ubicación de los fragmentos en sitios específicos,

se tiene que trabajar tomando en cuenta su naturaleza distribuida, por lo cual no podemos pensar en hacer joins que afecten a tablas de

varios sistemas, etc.

Disponibilidad En caso de que falle la base de datos de alguna

localidad, el sistema no se colapsa, puede seguir funcionando excluyendo los datos de la

localidad que haya fallado.

Complejidad técnica Se debe asegurar que la base de datos sea

transparente, se debe lidiar con varios sistemas diferentes que pueden presentar dificultades

únicas.

Autonomía local Un departamento puede controlar los datos que

le pertenecen.

Economía en el mantenimiento La complejidad y la infraestructura necesaria

implica que se necesitará mayor mano de obra.

Economía en la implantación Es más barato crear una red de muchas máquinas pequeñas, que tener una sola

máquina muy poderosa.

Seguridad Se debe trabajar en la seguridad de la

infraestructura así como cada uno de los sistemas.

Page 9: Manual Completo SQL Parte1

9

Modularidad Se pueden modificar, agregar o quitar sistemas de la base de datos distribuida sin afectar a los

demás sistemas (módulos).

Integridad Se vuelve difícil mantener la integridad, aplicar las reglas de integridad a través de la red puede

ser muy caro en términos de transmisión de datos.

Falta de experiencia Las bases de datos distribuidas son un campo

relativamente nuevo y poco común por lo cual no existe mucho personal con experiencia o

conocimientos adecuados.

Carencia de estándares Aún no existen herramientas o metodologías que

ayuden a los usuarios a convertir un DBMS centralizado en un DBMS distribuido.

Tipos de bases de datos según la organización lógica de los datos

En un principio existían tres tipos de bases de datos según su estructura interna (la manera de organizar la información): Bases de datos jerárquicos Bases de datos en red Bases de datos relacionales. Más recientes son las bases de datos orientadas a objetos y las bases de datos multidimensionales.

1. Las bases de datos jerárquicas En una base de datos jerárquica se organizan los datos utilizando estructuras arborescentes (en árbol). Un ÁRBOL es una estructura jerárquica en la que los elementos se suelen denominar NODOS y existen dependencias entre los nodos. La dependencia es de 1:M del tipo padre/hijo. Un hijo no puede tener más de un padre, pero un padre varios hijos.

Un ejemplo de base de datos jerárquica es el sistema IMS.

Page 10: Manual Completo SQL Parte1

10

2. Las bases de datos en red

También en desuso, en una base de datos en red se utiliza la estructura de grafo/red, como en el caso anterior los distintos objetos están relacionados entre sí mediante relaciones del tipo 1:M pero en este caso un objeto puede estar relacionado como hijo con varios elementos que serán sus padres. En este caso las relaciones que se crean se denominan SET y el equivalente al padre se denomina PROPIETARIO (OWNER) y el equivalente al hijo se denomina MIEMBRO (MEMBER). Un ejemplo de sistema en red es el CODASYL. También existen modelos para realizar el diseño de datos orientado a bases de datos en red.

En red podríamos representar lo mismo que la estructura anterior y además lo siguiente:

Los sistemas jerárquico y en red constituyen la primera generación de los SGBD. Pero estos sistemas presentan algunos inconvenientes:

Es necesario escribir complejos programas de aplicación para responder a cualquier tipo de consulta de datos, por simple que ésta sea.

La independencia de datos es mínima. No incluyen controles de integridad.

Por lo que pronto fueron sustituidos por los sistemas relacionales.

3. Las bases de datos relacionales Esta es la estructura que se ha impuesto para aplicaciones de gestión, consiste en organizar los datos en forma de tablas, las relaciones entre los objetos se consiguen incluyendo en la tabla del hijo, la clave del objeto padre. Como son las que utilizaremos durante todo el módulo hemos reservado un apartado especial para ellas.

4. Las bases de datos orientadas a objetos Es un modelo más reciente, trata de almacenar en la base de datos los objetos completos (estado y comportamiento). La información que contienen se organiza en atributos y el comportamiento en operaciones.

5. Las bases de datos mutidimensionales En una base de datos multidimensional los datos se almacenan en tablas de múltiples dimensiones en vez de tablas bidimensionales como las del modelo relacional. Se utilizan para grandes volúmenes de información.

Page 11: Manual Completo SQL Parte1

11

La base de datos relacional

Elementos de una base de datos relacional Los datos se organizan en relaciones compuestas por tuplas de atributos. Si convertimos esta definición a tablas tenemos que los datos se organizan en tablas compuestas por filas (registros) y columnas (campos).

A cada tabla se le asigna un nombre único.

Una tabla tiene 0 o más filas, y cada fila contiene la información de un determinado ‘sujeto’ de la relación.

Las filas en un principio están desordenadas.

La lista de los atributos dispuestos en un orden específico de izquierda a derecha y que forman la definición de una tabla se denomina esquema de la tabla, mientras que los valores concretos de los datos que están almacenados en la tabla se llaman ocurrencias.

Por ejemplo, tenemos estas dos tablas:

El esquema de la tabla Piezas está compuesto por las columnas (Codigo, Denominación, Precio, Fabricante, Codigo_según_fab). Codigo es el código de la pieza, Denominacion el nombre de la pieza, Fabricante el código del fabricante que nos suministra la pieza y Código_según_fab el código que utiliza ese fabricante para identificar la pieza en su sistema de gestión.

Una ocurrencia de fila de la tabla Piezas sería:1, Taburete 3 patas, 25, Fab1, T123-34.

Todos los valores de una columna determinada tienen el mismo tipo de datos, y éstos están extraídos de un conjunto de valores legales llamado dominio de la columna. Muchas veces el dominio se corresponderá con un tipo de datos estándar del sistema. Por ejemplo en la tabla Piezas la columna Codigo está definida sobre el dominio de los enteros.

A parte de los valores del dominio, la columna puede contener un valor especial, el valor nulo. El valor nulo (NULL) es importante porque representa la ausencia de valor en el campo y no es lo mismo que el valor cero “0” o la cadena vacía o espacios en blanco. De hecho es un valor tan

Page 12: Manual Completo SQL Parte1

12

especial que no funciona como los demás valores, por ejemplo no podemos comparar (con el operador de comparación =) un campo con el valor nulo, tenemos que utilizar un operador especial (IS NULL). Incluso se han tenido que redefinir los operadores lógicos para tener en cuenta el valor nulo.

Ej. En la tabla Fabricantes el campo dirección de la primera fila contiene el valor nulo (null) esto significa que este fabricante no tiene dirección (al menos conocida).

En una tabla cada columna tiene un único nombre y éste no se puede utilizar para nombrar otra columna de la misma tabla pero sí de otra tabla.

Por ejemplo en la tabla Piezas no se pueden definir dos columnas llamadas Codigo, por eso el segundo código lo hemos llamado Codigo_segun_fab. Pero en la tabla Fabricantes la columna IdFab se podía haber llamado Codigo sin problema.

En una tabla no se admiten dos filas con los valores coincidentes en todos sus campos. Esta restricción no se suele cumplir.

Esta regla nos dice que por ejemplo en la tabla Fabricantes no pueden haber dos filas con los valores Fab1, Muebles la Madera, null.

Realmente sería información redundante, por eso la existencia de esta regla, no obstante en algunos casos muy concretos sí es necesario poder almacenar dos ocurrencias de fila idénticas, por esta razón muchos SGBD no cumplen esta regla.

Toda tabla debe tener una clave principal (clave primaria).

Una clave primaria es cualquier una columna (o combinación de columnas) que permite identificar de forma unívoca cada una de las filas de la tabla. Para que pueda cumplir su cometido, la clave primaria no puede contener valores nulos ni valores duplicados (no podrá haber dos filas con el mismo valor en este campo). Hay SGBD que incluyen el concepto de clave primaria pero no la hacen obligatoria, por lo que en estos sistemas se pueden definir tablas sin clave primaria.

En una tabla pueden existir más de una columna que permita identificar las filas de la tabla, si queremos utilizar tales columnas como identificadores las definiremos como claves secundarias (alternativas). Una clave secundaria tiene las mismas restricciones que una clave primaria, pero como no podemos definir dos claves primarias, definimos la que se vaya a utilizar más frecuentemente como clave primaria y la otra (u otras) como secundarias. Por ejemplo en la tabla Piezas la clave primaria es el campo Codigo ya que no hay ni puede haber dos piezas con el mismo código. Este campo realmente sirve para identificar las filas de la tabla, sabiendo un valor de código (por ejemplo el 2) sabremos que nos referimos a la fila de la mesa ovalada. En esta misma tabla tenemos una posible clave alternativa, la formada por los campos Fabricante y Codigo_segun_fab ya que en la tabla Piezas es imposible tener dos filas con la misma combinación de valores en estos campos (el código_segun_fab es el código que utiliza el fabricante para identificar sus piezas).

Page 13: Manual Completo SQL Parte1

13

Otro concepto muy importante, fundamental en las bases de datos relacionales, es la clave ajena (externa o foránea).

Una clave ajena es un campo (o combinación de campos) que contiene la referencia a una fila de otra tabla, también puede referirse a la misma tabla. En otras palabras, es un campo que señala a un registro de otra tabla, contiene un valor que identifica un registro de la otra tabla. Son los campos que se utilizan para relacionar las tablas entre sí.

Una tabla puede tener 0, una o varias claves ajenas (externas, foráneas).

Una clave ajena puede contener valores duplicados y valores nulos.

Siguiendo el ejemplo anterior, en la tabla Piezas tenemos la clave ajena Fabricante ya que en este campo nos guardamos un valor que señala a una fila de la tabla Fabricantes, en este campo tenemos el código del fabricante que nos suministra la pieza y este código nos lleva al fabricante correspondiente en la tabla Fabricantes.

Por ejemplo la pieza 3 es servida por el fabricante Fab2, valor que señala al fabricante Maderas Asociados.

El SGBD deberá velar por la integridad de los datos, para ello incluye varias reglas de integridad que se comprobarán de forma automática sin necesidad de la intervención externa de los usuarios o de los programas de aplicación.

Existen distintos tipos de reglas de integridad:

La integridad de entidades (integridad de claves): “Toda tabla debe tener una clave primaria que permite identificar unívocamente los registros que contiene, por lo tanto no puede contener el valor nulo ni valores duplicados”.

En el ejemplo anterior si intentamos insertar una nueva pieza con el código 2, el sistema no nos dejará porque ya hay una pieza con este mismo código en la tabla.

La integridad referencial: “En una clave ajena no puede haber un valor no nulo que no exista en la tabla de referencia”. Para que no existan errores de integridad referencial en la base de datos, el sistema comprueba automáticamente que los valores introducidos en las claves ajenas existan en el campo de referencia en la otra tabla, si no existe, no nos dejará insertar el registro. Volviendo al ejemplo anterior, si intentamos insertar una pieza con un código de fabricante que no existe en la tabla de fabricantes, el sistema no nos dejará.

A nivel de control sobre los datos, el SGBD debe de proporcionar herramientas para poder definir restricciones de dominio que se comprobarán de forma automática (se comprueba que el valor introducido en una columna pertenece al dominio de la columna, al tipo de datos), y reglas de negocio, que son reglas específicas sobre los datos, en este tipo de reglas entran las reglas de validación y reglas definidas a nivel superior que veremos más adelante.

Page 14: Manual Completo SQL Parte1

14

Una regla de validación sería por ejemplo que el precio no pueda ser inferior a 10 euros, y una regla de negocio, que no pueda haber más de 20 fabricantes.

Un SGBD relacional sigue la arquitectura de tres niveles en la que tenemos en el nivel externo las vistas, en nivel conceptual el esquema conceptual con la definición de todas las tablas, columnas que las componen y relaciones entre ellas, en el nivel interno tenemos la definición física de la base de datos.

Finalmente tenemos para poder manejar la información almacenada en la base de datos un lenguaje que cumple las reglas de Codd, el lenguaje SQL que veremos en próximos temas.

1.2. Instalar SQL Server 2005

Existen diferentes versiones (ediciones) del producto, por lo que es un producto muy versátil, que puede cumplir con las exigencias de cualquier empresa, puede ser utilizado para gestionar bases de datos en un PC en modo local a gestionar todo el sistema de información de grandes empresas pasando por sistemas que requieran menos potencia y por sistemas móviles.

Actualmente se utiliza más en entornos Cliente/servidor con equipos medianos y grandes.

Para realizar este curso te recomendamos instalar la versión gratuita: Express. Puedes descargarla desde la página web de Microsoft, desde el enlace para iniciar descarga.

Las ediciones disponibles SQL Server 2005 son las siguientes:

SQL Server 2005 Express Edition.

Gratuita.

Con límite de memoria (lo que limitará también en número de usuarios) y tamaño de las BD.

SQL Server 2005 Workgroup Edition.

Para pequeñas empresas.

Sin límite de usuarios y tamaño de las BD.

No incluye características avanzadas.

SQL Server 2005 Standard Edition.

Para empresas medianas.

Sin límite de usuarios y tamaño de las BD.

Incluye herramientas avanzadas de administración y análisis de datos.

Page 15: Manual Completo SQL Parte1

15

SQL Server 2005 Enterprise Edition.

Es el nivel más alto, para grandes empresas.

Añade al nivel anterior:

Mayor potencia.

Servicios específicos para grandes empresas.

Puede aprovechar configuraciones multiprocesador, grandes cantidades de RAM, almacenes de datos del orden de TeraBytes (1000 GB).

SQL Server 2005 Developer Edition.

Para entornos de desarrollo.

Mismas posibilidades que la Enterprise.

Licencia que limita su uso en entornos de explotación.

SQL Server 2005 Mobile Edition.

Para dispositivos pequeños.

Base de datos compacta

Diseñada para admitir una lista amplia de dispositivos inteligentes y Tablet PC.

SQL Server 2005 Compact Edition.

Gratuita.

Formato compacto.

Para aplicaciones de móviles y escritorio.

Si la instalación se realiza a partir del archivo descargado de Internet, la descarga se empaqueta como un único ejecutable mediante una tecnología de instalación de Microsoft llamada SFXCab. Al hacer doble clic en el .exe se inicia automáticamente el proceso de instalación.

Tan sólo deberemos seguir el asistente. Los puntos más importantes a tener en cuenta son:

Habilitar el SQL Server Management Studio en la instalación (si no lo está por defecto) cuando nos pregunte qué componentes deseamos instalar.

Indicar que se trata de una Instancia predeterminada.

Page 16: Manual Completo SQL Parte1

16

Lo ideal es que en este punto instales el programa, para ir probando lo que vayas aprendiendo de aquí en adelante. Puedes realizar el siguiente Ejercicio Instalación de SQL Server 2005. El videotutorial práctico de instalación también te ayudará.

Objetivo

Descargar e instalar la versión gratuita de SQL Server 2005: La edición Express.

Ejercicio paso a paso

1. Accede a la página web de Microsoft, en su apartado de descarga de SQL Server Express

2. Haz clic en Ejecutar.

3. Acepta los términos y condiciones de uso del programa, después de leerlos.

4. Pulsa Instalar.

5. Asegúrate de que incluyes en la instalación el Management Studio Express, en la ventana Selección de características.

6. Establece el Nombre de instancia como Instancia predeterminada.

7. Instala el programa y cuando termine pulsa Finalizar.

1.3. Entrada al SQL Server Management Studio

Aunque trabaje en modo local, la entrada a la herramienta es la misma. Para empezar se ingresa

a través del acceso directo o a través de Inicio, Programas, Microsoft SQL Server 2005, SQL Server Management Studio.

Page 17: Manual Completo SQL Parte1

17

Lo primero que se deberá hacer es establecer la conexión con el servidor:

Seleccionamos el nombre del servidor y pulsamos el botón Conectar. Se abrirá la ventana inicial del SQL Server Management Studio (en adelante SSMS):

En la parte izquierda se tiene abierto el panel Explorador de Objetos en el que aparece debajo del nombre del servidor con el que estamos conectados una serie de carpetas y objetos que forman parte del servidor.

En el panel de la derecha se muestra la zona de trabajo, que varía según lo que tengamos seleccionado en el Explorador de objetos, en este caso se observa el contenido de la carpeta que representa el servidor ord01.

Page 18: Manual Completo SQL Parte1

18

En la parte superior se tiene el menú de opciones y la barra de herramientas Estándar.

Con las siguientes opciones:

1. Nueva consulta 6. Consulta de SQL Server Mobile

11. Resumen

2. Consulta de motor de Base de datos

7. Abrir archivo 12. Explorador de Objetos

3. Consulta MDX de Analysis Services 8. Guardar 13. Explorador de Plantillas

4. Consulta DMX de Analysis Services 9. Guardar todo 14. Ventana de Propiedades

5. Consulta MXLA de Analysis Services

10. Servidores registrados

En caso de que utilice la versión Express, es posible que no disponga de algunos de éstos botones.

1.4. Estructura interna de una base de datos

Antes de empezar tenemos que tener claro cómo se organiza la información en una base de datos SQL Server 2005.

Las bases de datos de SQL Server 2005 utilizan tres tipos de archivos:

Archivos de datos principales

En una base de datos SQLServer los datos se pueden repartir en varios archivos para mejorar el rendimiento de la base de datos.

El archivo de datos principal es el punto de partida de la base de datos y apunta a los otros archivos de datos de la base de datos. Cada base de datos tiene obligatoriamente un archivo de datos principal. La extensión recomendada para los nombres de archivos de datos principales es .mdf.

Archivos de datos secundarios

Los archivos de datos secundarios son todos los archivos de datos menos el archivo de datos principal. Puede que algunas bases de datos no tengan archivos de datos secundarios, mientras

Page 19: Manual Completo SQL Parte1

19

que otras pueden tener varios archivos de datos secundarios. La extensión de nombre de archivo recomendada para los archivos de datos secundarios es .ndf.

Además los archivos de datos se pueden agrupar en grupos de archivos. Para cada base de datos pueden especificarse hasta 32.767 archivos y 32.767 grupos de archivos.

Archivos de registro

Los archivos de registro (archivos de log) almacenan toda la información de registro que se utiliza para recuperar la base de datos, el también denominado registro de transacciones. Como mínimo, tiene que haber un archivo de registro por cada base de datos, aunque puede haber varios. La extensión recomendada para los nombres de archivos de registro es .ldf.

SQL Server 2005 no exige las extensiones de nombre de archivo .mdf, .ndf y .ldf, pero estas extensiones ayudan a identificar las distintas clases de archivos y su uso.

Cada base de datos tiene al menos 2 archivos (un archivo de datos principal y un archivo de registro) y opcionalmente un grupo de archivos.

Los archivos de datos y de registro de SQL Server se pueden colocar en sistemas de archivos FAT o NTFS. Se recomienda utilizar NTFS por los aspectos de seguridad que ofrece. No se pueden colocar grupos de archivos de datos de lectura y escritura, y archivos de registro, en un sistema de archivos NTFS comprimido. Sólo las bases de datos de sólo lectura y los grupos de archivos secundarios de sólo lectura se pueden colocar en un sistema de archivos NTFS comprimido.

1.5. Crear una base de datos en SSMS

En el Explorador de objetos, si se despliega la carpeta Bases de datos aparecen Bases de datos del sistema y las bases de datos de usuario después de la carpeta Instantáneas...

Page 20: Manual Completo SQL Parte1

20

Después de la instalación, en la carpeta Bases de datos del sistema se habrá creado una especial denominada master se utiliza como base de datos de usuario por defecto. Las demás bases de datos forman también parte del diccionario de datos y las utiliza el sistema para llevar a cabo su gestión.

Las bases de datos de los usuarios se deben crear preferentemente fuera de la carpeta Bases de datos del sistema.

Para crear una nueva base de datos de usuario nos posicionamos sobre la carpeta Bases de datos y con el botón derecho del ratón desplegamos el menú contextual del que elegimos la opción Nueva base de datos…

Se abre a continuación el cuadro de diálogo donde definiremos la base de datos que queremos crear:

Page 21: Manual Completo SQL Parte1

21

Lo mínimo a introducir será el campo Nombre de la base de datos, éste es el nombre de la base de datos lógica, la base de datos a la que nos referiremos dentro del SSMS, a nivel conceptual (en la imagen Mibase).

Esta base de datos está asociada a dos archivos físicos, en la parte inferior aparecen esos archivos. Para facilitarnos la tarea, al teclear el nombre de la bd lógica, se rellenan automáticamente los nombres de los archivos físicos, el de datos con el mismo nombre y el del archivo de registro con el mismo nombre seguido de _log. Estos nombres son los nombres que se asumen por defecto pero los podemos cambiar, posicionando el cursor en el nombre y cambiándolo.

Para cada archivo físico podemos definir una serie de parámetros como el tipo de archivo (si es de datos o de transacciones Registro) y su ocupación inicial (Tamaño inicial).

Si no indicamos ninguna ubicación podemos ver que los guarda en la carpeta del SQL Server/MSSQL.n/MSSQL/DATA. n representa un número que puede variar de una instalación a otra.

Page 22: Manual Completo SQL Parte1

22

Estos son los archivos mínimos en los que se almacenará la base de datos, pero como ya vimos anteriormente se puede almacenar en más archivos, los tenemos que definir todos en esta ventana a continuación de los dos obligatorios.

Para añadir más archivos físicos disponemos del botón Agregar. Al pulsar el botón Agregar se crea una nueva fila en la tabla de archivos físicos donde deberemos escribir el nombre del archivo, su tipo (desplegando la lista podemos elegir entre de datos o de registro) y demás parámetros.

Page 23: Manual Completo SQL Parte1

23

Al agregar un nuevo archivo se activa el botón Quitar, siempre que estemos posicionados encima de un archivo secundario para poder así eliminarlo si lo queremos. No podemos eliminar ni el de datos primario, ni el de registro inicial.

Si nos fijamos en la zona de la izquierda, vemos que nos encontramos en la pestaña General, podemos cambiar otros parámetros de la base de datos pulsando en Grupos de archivos o en Opciones:

Al final pulsamos en Aceptar y se creará la base de datos.

Page 24: Manual Completo SQL Parte1

24

Aparecerá dentro de la carpeta Bases de datos. Si no se ve pulsa en el icono Actualizar .

Desde el Explorador de Windows podemos ver que en la carpeta indicada se han creado los archivos físicos con los nombres que le hemos indicado.

1.6. Adjuntar una base de datos

En ocasiones no necesitaremos crear la base de datos desde cero, porque ésta ya estará creada. Éste es el caso de los ejercicios del curso. Para realizarlos, deberás adjuntar una base de datos ya existente a tu servidor. Para ello, lo que tenemos que hacer es pegar los archivos en la ubicación que queramos, y luego indicar al SQL Server que vamos a utilizar esta base de datos, de la siguiente manera:

En el Explorador de objetos, sobre la carpeta Bases de datos desplegar el menú contextual y elegir Adjuntar...

Page 25: Manual Completo SQL Parte1

25

En la siguiente ventana se elige la base de datos:

Pulsando en Agregar se indica el archivo de datos primario en su ubicación y automáticamente se adjuntará la base de datos lógica asociada a este archivo.

Page 26: Manual Completo SQL Parte1

26

Finalmente se pulsa en Aceptar y aparece la base de datos en nuestro servidor.

La opción Adjuntar sólo se utiliza la primera vez, cuando todavía no tenemos la base de datos en el disco.

Realiza el siguiente Ejercicio Adjuntar base de datos. En él adjuntarás las bases de datos que vas a utilizar en los ejercicios que se plantearán más adelante.

Unidad 1. Ejercicio paso a paso: Adjuntar base de datos

Objetivo

Importar bases de datos al servidor de SQL Server que has instalado.

Ejercicio paso a paso

1. En la carpeta Ejercicios del curso, busca U3_Consultas_simples.zip y GestionA.zip y extrae su contenido en una carpeta que llamarás Bases de datos.

2. Abre el SQL Server Management Studio Express.

3. Haz clic con el botón secundario del ratón sobre la carpeta Bases de datos que se encuentra en el Explorador de objetos del SSMS.

4. En el menú contextual, elige Adjuntar...

5. Pulsa el botón Agregar y busca el directorio Bases de datos que contiene las dos bases que has descargado.

6. Selecciona la primera base (Gestion.mdf) y pulsa Aceptar.

7. Pulsa el botón Agregar de nuevo y esta vez selecciona GestionA.mdf. Cambia su nombre lógico (el campo Adjuntar como) a Gestion. Así es como nos referiremos a ella.

Page 27: Manual Completo SQL Parte1

27

8. Si todo va bien, te indicará que se han adjuntado correctamente y las verás en el Explorador de

objetos (GestionA y GestionSimples). Si no las ves, pulsa el botón Actualizar .

1.7. Conectar y Desconectar la base de datos

Una vez hemos creado la base de datos o la hemos adjuntado a nuestro servidor, nos daremos cuenta de que no podremos manipular los archivos de la base desde fuera del gestor SSMS, por ejemplo, desde el Explorador de Windows. Es decir, no podremos copiar, cortar, mover o eliminar los archivos fuente mdf, ndf y ldf. Si lo intentamos se mostrará un aviso de que la base de datos está en uso.

Ésto es así porque SQL Server sigue en marcha, a pesar de que se cierre el gestor. Ten en cuenta que el servidor de base de datos normalmente se crea para que sirva información a diferentes programas, por eso sería absurdo que dejara de funcionar cuando cerramos el programa gestor, que sólo se utiliza para realizar modificaciones sobre la base.

Para poder realizar acciones sobre la base de datos, ésta debe estar desconectada. Para ello, desde el SSMS, desplegamos el menú contextual de la base de datos que nos interese manipular y seleccionaremos la opción Poner fuera de conexión:

Aparecerá un símbolo a la izquierda de la base de datos indicándonos que la base de datos está desconectada, a partir de este momento Windows nos dejará manipular los archivos.

Para volver a conectar la base de datos y seguir trabajando con ella, accederemos al mismo menú contextual pero elegiremos la opción Poner en conexión:

El caso más inmediato en el que puedes necesitar conectar y desconectar la base de datos es copiar a un pendrive los archivos de las bases que utilizarás en los ejercicios para poder trabajar en diferentes ordenadores con ellos. Para aprender cómo hacerlo, visita el siguiente Ejercicio Trasladar una base de datos a otro equipo.

Page 28: Manual Completo SQL Parte1

28

Unidad 1. Ejercicio paso a paso: Trasladar una base de datos a otro equipo

Objetivo

Copiar una base de datos que está en uso en un servidor, y adjuntarla o actualizarla en otro.

Ejercicio paso a paso

Vamos a suponer que tenemos una base de datos en el servidor de clase y queremos llevarnos la base de datos a nuestra casa para seguir trabajando con ella.

1. Sabemos que la base de datos está en los archivos físicos que definimos cuando definimos la base de datos, estos archivos se localizan en una determina ruta. Esta información se encuentra en las propiedades de la base de datos, para acceder a la ventana de propiedades de la base de datos (parecida la que se abrió cuando creamos la base de datos) utilizamos como siempre el menú contextual que nos llevará a la ventana Propiedades de la base de datos:

2. Una vez sabemos la ruta, utilizamos el Explorador de Windows para abrir a la carpeta donde se encuentran los archivos.

Page 29: Manual Completo SQL Parte1

29

3. Volvemos al SSMS y desconectamos la base de datos, como ya hemos visto: Desde el menú contextual y eligiendo Tareas>Poner fuera de conexión.

4. Ahora que ya está desconectada, copiamos los archivos desde el Explorador de Windows, por ejemplo, a nuestro pendrive.

Ya tenemos una copia de la base de datos de clase. Ahora vamos a ver cómo incluirla en el otro ordenador, es decir, en casa.

En caso de que la base de datos no exista, deberás adjuntarla como ya hemos visto: Desde el menú contextual de bases de datos y eligiendo la Adjuntar...

En caso de que la base de datos ya exista y lo que quieras sea actualizarla, deberás:

1. Desconectar la base existente desde SSMS.

2. Sobreescribir los archivos físicos por los nuevos que llevas en el pendrive, desde el Explorador de Windows.

3. Volver a conectar la base de datos desde SSMS.

En caso de que tu versión de SQL Server no tenga las opciones Poner en conexión y Poner fuera de conexión, deberás utilizar la opción Separar... y luego volver a adjuntarla.

1.8. Crear una nueva tabla

Para crear una nueva tabla primero nos tenemos que posicionar en la base de datos donde queremos que se almacene la tabla, desplegar el menú contextual y seleccionar la opción Nueva tabla.

Page 30: Manual Completo SQL Parte1

30

En la ventana que se abre debemos definir las columnas de la tabla:

A cada columna se le asigna un nombre, un tipo de datos, y opcionalmente una serie de propiedades, en este tema veremos las básicas y las demás las veremos con más detalle cuando veamos la instrucción SQL CREATE TABLE.

De momento no tenemos definida ninguna columna, al teclear un nombre se crea una primera entrada en esta tabla con la definición de la primera columna. En la columna Tipo de datos elegimos qué tipo de valores se podrán almacenar en la columna.

1.9. Tipos de datos

Podemos elegir entre todos los tipos que aparecen arriba.

Algunos tipos no necesitan más, como por ejemplo el tipo entero (int), y otros se pueden completar con una longitud, como los tipos alfanuméricos:

Page 31: Manual Completo SQL Parte1

31

En este ejemplo hemos definido una columna (Codigo) de tipo Entero corto (Smallint), y una columna (Nombre) que almacenará hasta 20 caracteres alfanuméricos (nchar(20)), en este caso la longitud la indicamos en la pestaña Propiedades de columna en la propiedad Longitud. Las propiedades de la columna pueden variar dependiendo del tipo de datos de la columna seleccionada, por ejemplo los campos enteros no tienen la propiedad longitud, ya que el propio tipo define la longitud del campo, en cambio los campos de tipo numeric o decimal no tiene la propiedad longitud pero sí las propiedades escala y precisión, los valores que permiten definir el tamaño del campo.

1.10. Valores nulos

También podemos indicar si la columna permitirá valores nulos o no, o bien cambiando la propiedad Permitir valores nulos que aparece debajo de la propiedad Longitud, o bien simplemente marcando o desmarcando la casilla de la columna Permitir valores nulos que se encuentra al lado de la columna Tipo de datos. Si la casilla está marcada, el usuario podrá no rellenar el campo cuando inserte una fila de datos en la tabla.

Page 32: Manual Completo SQL Parte1

32

1.11. Columna con contador

En la mayoría de los sistemas gestores de bases de datos tenemos un tipo de datos de tipo contador, autonumérico, autoincremental, etc. Este tipo hace que el propio sistema es el encargado de rellenar el campo con un valor que va incrementando conforme se crean más filas de datos en la tabla.

Las columnas de este tipo se utilizan normalmente para numerar las filas de la tabla, como no habrán dos filas con el mismo valor (el sistema se encarga de incrementar el valor cada vez que se crea una nueva fila), estos campos se suelen utilizar como claves primarias.

En SQL Server 2005 no existe el tipo de datos Contador pero se consigue el mismo funcionamiento asignando a la columna un tipo de datos numérico y definiendo la columna como columna de identidad.

En las propiedades de la columna marcamos Sí en la propiedad (Identidad) y a continuación podemos indicar en qué valor queremos que empiece el contador (Inicialización de identidad) y en cuánto incrementará cada vez que se cree un nuevo registro (Incremento de identidad).

Aunque este tipo de columnas se utiliza frecuentemente como clave primaria, SQL Server no le asigna automáticamente esta función, la tenemos que definir nosotros mismos, pero sí fuerza a que sea una columna sin valores nulos. No se puede definir más de una columna de identidad por tabla.

Page 33: Manual Completo SQL Parte1

33

1.12. Clave primaria

Para definir una columna como clave primaria, posicionamos el puntero del ratón sobre la columna, desplegamos el menú contextual y seleccionamos la opción Establecer Clave principal:

Aparecerá una llave a la izquierda del nombre, símbolo de las claves principales:

Para definir una clave primaria compuesta por varias columnas, seleccionamos las columnas manteniendo pulsada la tecla Ctrl y luego seleccionamos la opción.

Para quitar una clave principal, hacemos lo mismo pero en esta ocasión seleccionamos la opción Quitar clave principal.

También podemos utilizar el icono de la barra de herramientas.

1.13. Añadir o eliminar columnas

Una vez definidas algunas columnas, si queremos añadir una nueva columna entre dos, nos posicionamos en la segunda y seleccionamos la opción Insertar columna del menú contextual.

La nueva columna se colocará delante:

Page 34: Manual Completo SQL Parte1

34

Del mismo modo si queremos eliminar la definición de una columna, nos posicionamos en la columna a eliminar y seleccionamos la opción Eliminar columna:

O simplemente hacemos clic en la zona a la izquierda del nombre y pulsamos la tecla Supr.

Finalmente guardamos la tabla, nos pedirá el nombre de la tabla:

La nueva tabla aparecerá en la lista de tablas de la base de datos:

1.14. Modificar la definición de una tabla

Para entrar a la ventana de definición de la tabla utilizamos la opción Modificar de su menú contextual (También es posible que se llame Diseño):

Se abrirá la ventana que ya conocemos para definir las columnas de la tabla.

Page 35: Manual Completo SQL Parte1

35

1.15. Insertar datos en la tabla

Ahora que tenemos la tabla creada podemos rellenarla con datos. Para eso debemos abrir la tabla:

Se abrirá una ventana parecida a esta:

La primera columna sirve para indicarnos el estado de una fila, por ejemplo el * nos indica que es una nueva fila, esta fila realmente no está en la tabla, nos sirve de contenedor para los nuevos datos que queremos insertar.

Para insertar una nueva fila de datos sólo tenemos que rellenar los campos que aparecen en esa fila (la del *), al cambiar de fila los datos se guardarán automáticamente en la tabla a no ser que alguno infrinja alguna regla de integridad, en ese caso SQL Server nos devuelve un mensaje de error para que corrijamos el dato erróneo, si no lo podemos corregir entonces sólo podemos deshacer los cambios.

1.16. Modificar datos

Para modificar un valor que ya está en una fila de la tabla sólo tenemos que posicionarnos en el campo y rectificar el valor. En cuanto modificamos un valor, la fila aparece con un lápiz escribiendo (ver imagen), este lápiz nos indica que la fila se ha modificado y tiene nuevos datos por guardar. Al salir de la fila ésta se guardará automáticamente a no ser que el nuevo valor infrinja alguna regla de integridad. Si queremos salir de la fila sin guardar los cambios, tenemos que cancelar la actualización pulsando la tecla ESC.

1.17. Eliminar filas

Para eliminar una fila completa, la seleccionamos y pulsamos la tecla Supr o bien desplegamos su menú contextual y seleccionamos la opción Eliminar.

Page 36: Manual Completo SQL Parte1

36

En cualquiera de los dos casos nos aparece un mensaje de confirmación.

1.18. Relacionar tablas

Como ya hemos visto, en una base de datos relacional, las relaciones entre las tablas se implementan mediante la definición de claves ajenas, que son campos que contienen valores que señalan a un registro en otra tabla, en esta relación así creada, la tabla referenciada se considera principal y la que contiene la clave ajena es la subordinada.

Desde el entorno gráfico del SSMS podemos definir claves ajenas entrando en el diseño de la tabla y desplegando el menú contextual del campo que va a ser clave ajena:

Selecciona la opción Relaciones y se abre la ventana:

Page 37: Manual Completo SQL Parte1

37

Al pulsar el botón que se encuentra en la fila Especificación de tablas y columnas se abre el diálogo donde definiremos la relación:

En la parte derecha se tiene la tabla en la que esta y el campo que va a actuar como clave ajena, sólo queda elegir en el desplegable de la izquierda la tabla a la que hace referencia la clave y al seleccionar una tabla, a la izquierda del campo clave ajena se puede elegir el campo de la otra tabla por el que se relacionarán las tablas. En nuestro caso será:

De esta forma se ha definido una relación entre las tablas Facturas y Clientes. Para ver las relaciones existentes entre las diferentes tablas tenemos los diagramas.

Page 38: Manual Completo SQL Parte1

38

Primero debe definir el diagrama, para ello selecciona la opción correspondiente:

Si no tiene todavía ningún diagrama creado aparece un mensaje:

Elegimos Sí y se crea digamos el soporte donde se pintará el diagrama.

A continuación nos aparece el nuevo diagrama ahora si elegimos crear un nuevo diagrama nos preguntará las tablas a incluir en el diagrama:

Seleccionamos cada una y pulsamos Agregar, cuando hayamos agregado al diagrama todas las que queremos pulsamos en Cerrar y aparecerán en el diagrama las tablas con las relaciones que tengan definidas en ese momento:

Page 39: Manual Completo SQL Parte1

39

La llave indica la tabla principal (padre) y el símbolo infinito señala la tabla que contiene la clave ajena.

En el examinador de objetos en la carpeta Diagramas de base de datos aparecen todos los diagramas definidos hasta el momento:

Hemos aprendido hasta ahora lo básico para poder crear una base de datos y rellenarla con tablas relacionadas entre sí y con datos, ahora veamos cómo recuperar esos datos.

1.19. Abrir una nueva consulta

Vamos a ver ahora cómo crear consultas SQL y ejecutarlas desde el entorno del SSMS.

Para ello debemos abrir la zona de trabajo de tipo Query, abriendo una nueva consulta,

seleccionando previamente el servidor y pulsando el botón de la barra de botones o si queremos realizar la consulta sobre un servidor con el cual todavía no hemos establecido conexión, seleccionando de la barra de menús la opción Nuevo>Consulta de motor de base de datos:

Page 40: Manual Completo SQL Parte1

40

.

En este último caso nos aparecerá el cuadro de diálogo para establecer la conexión (el mismo que vimos al principio del tema).

A continuación se abrirá una nueva pestaña donde podremos teclear las sentencias SQL:

Además aparece una nueva barra de botones que nos permitirá ejecutar los comandos más útiles del modo query.

Page 41: Manual Completo SQL Parte1

41

1.20. Escribir y ejecutar código TRANSACT-SQL

Sólo tenemos que teclear la sentencia a ejecutar, por ejemplo empezaremos por crear la base de datos.

Utilizaremos la sentencia CREATE DATABASE mínima:

CREATE DATABASE ventas;

Al pulsar el botón Ejecutar se ejecuta la sentencia y aparece en la parte inferior el resultado de la ejecución, en la pestaña Mensajes:

Si ahora desplegamos la carpeta Bases de Datos del Explorador de Objetos, observaremos la base de datos que hemos creado:

Page 42: Manual Completo SQL Parte1

42

Si la ejecución de la sentencia produce un error, el sistema nos devolverá el mensaje de error escrito en rojo en la pestaña Mensajes.

Podemos incluir en una misma consulta varias sentencias SQL, cuando pulsamos Ejecutar se ejecutarán todas una detrás de otra. Si tenemos varias consultas y sólo queremos ejecutar una, la seleccionaremos antes de ejecutarla.

1.21. La base de datos predeterminada

Cuando ejecutamos consultas desde el editor, nos tenemos que fijar sobre qué base de datos se va a actuar. Fijándonos en la pestaña de la consulta, en el nombre aparece el nombre del servidor seguido de un punto y el nombre de la base de datos sobre la que se va a actuar y luego un guión y el nombre de la consulta.

En la imagen anterior tenemos ord01.master – SQLQuery1.sql, lo que nos indica que la consulta se llama SQLQuery1.sql, y que se va a ejecutar sobre la base de datos master que se encuentra en el servidor ord01.

Cuando creamos una nueva consulta, ésta actuará sobre la base de datos activa en ese momento. Por defecto la base de datos activa es la predeterminada (master). Si queremos que la base de datos activa sea por ejemplo la base de datos ventas, hacemos clic sobre su nombre en el Explorador de objetos, y ésta pasará a ser la base de datos activa. Si ahora creamos una nueva consulta, ésta actuará sobre la base de datos ventas.

Si queremos crear una consulta que siempre actúe sobre una determinada base de datos y no nos queremos preocupar de qué base de datos tenemos activa podemos añadir al principio de la consulta la instrucción USE nombreBaseDatos; esto hará que todas las instrucciones que aparezcan después, se ejecuten sobre la base de datos indicada. Por ejemplo:

USE ventas; SELECT * FROM pedidos;

Obtiene todos los datos de la tabla pedidos que se encuentra en la base de datos ventas. Si no utilizamos USE y almacenamos la consulta, al abrirla otra vez, cogerá como base de datos la predeterminada (no la activa) y se volverá a ejecutar sobre la base de datos master.

Normalmente utilizaremos como base de datos la nuestra y no la base de datos master, por lo que nos será útil cambiar el nombre de la base de datos por defecto, esto lo podemos hacer cambiando la base de datos por defecto en el id de sesión.

Para ello, cuando vamos a conectar con el servidor:

Page 43: Manual Completo SQL Parte1

43

Pulsamos en el botón Opciones >>

En la pestaña Propiedades de conexión, en el cuadro Conectar con base de datos: Seleccionamos <Examinar servidor > para elegir la base de datos.

Page 44: Manual Completo SQL Parte1

44

La elegimos y aceptamos. A partir de ese momento la base de datos elegida será la que SQL Server coja por defecto en todas las sesiones de ese usuario.

1.22. El editor de texto

Para facilitarnos la redacción y corrección de las sentencias, el editor de SQL presenta las palabras de distintos colores según su categoría y podemos utilizar el panel Explorador de Objetos para arrastrar desde él los objetos sobre la zona de trabajo y así asegurarnos de que los nombres de los objetos (por ejemplo nombre de tabla, de columna, etc.) sean los correctos. Como hemos dicho el texto que se escribe en este editor de código se colorea por categoría. Los colores son los mismos que se utilizan en todo el entorno SQL Server. En esta tabla aparecen los colores más comunes.

Color Categoría

Rojo Cadena de caracteres

Verde oscuro Comentario

Negro sobre fondo plateado Comando SQLCMD

Fucsia Función del sistema

Verde Tabla del sistema

Azul Palabra clave

Verde azulado Números de línea o parámetro de plantilla

Rojo oscuro Procedimiento almacenado de SQL Server

Gris oscuro Operadores

1.23. Configurar un esquema de colores personalizado

En el menú Herramientas>Opciones, desplegando la opción Entorno, Fuentes y colores, se puede ver la lista completa de colores y sus categorías, así como configurar un esquema de colores personalizado:

Page 45: Manual Completo SQL Parte1

45

En la lista Mostrar valores para, seleccionamos el entorno que se verá afectado. El botón Usar predeterminados nos permite volver a la configuración predeterminada.

Ahora sólo nos queda aprender a redactar sentencias SQL, cosa que se verá en otro momento, mientras tanto podemos utilizar el Generador de Consulta que incluye SSMS y que veremos a continuación en el apartado sobre vistas.

1.24. Las Vistas

Las consultas que hemos visto hasta ahora son trozos de código SQL que podemos guardar en un archivo de texto y abrir y ejecutar cuando queramos, pero si queremos que nuestra consulta de recuperación de datos se guarde en la propia base de datos y se comporte como una tabla (algo parecido a una consulta almacenada de Access), la tenemos que definir como una vista. Esta vista tiene la ventaja entre otras de poder ser utilizada como si fuese una tabla en otras consultas. Realmente al ejecutarla obtenemos una tabla lógica almacenada en memoria y lo que se guarda en la base de datos es su definición, la instrucción SQL que permite recuperar los datos.

Page 46: Manual Completo SQL Parte1

46

Para definir una vista en el Explorador de Objetos desplegamos la base de datos donde la guardaremos y elegimos la opción Nueva vista del menú contextual de la carpeta Vistas, se pondrá en funcionamiento el generador de consultas pidiéndonos las tablas en las que se basará la vista. Pulsamos sobre la tabla a añadir al diseño de la vista y pulsamos el botón Agregar, podemos añadir así cuántas tablas queramos.

Después de Cerrar, vemos a la derecha del Explorador de Objetos la pestaña con la definición de la vista que puede incluir varios paneles:

Page 47: Manual Completo SQL Parte1

47

La aparición de estos paneles es configurable, en la barra de herramientas Diseñador de vistas los iconos remarcados en azul son los correspondientes a cada panel:

Page 48: Manual Completo SQL Parte1

48

Nosotros, a lo largo del curso, crearemos las vistas desde el panel SQL que veremos más adelante.

1.25. El panel de diagrama

Es el primero que aparece, incluye una representación gráfica de las tablas con sus campos y de la forma en que se juntan en la vista. En este caso, como las tablas tienen relaciones definidas (claves ajenas), esta relación ha aparecido automáticamente al añadir la segunda tabla. Pero se puede cambiar el tipo de relación eligiendo la opción correspondiente en el menú contextual que aparece con el clic derecho sobre la relación:

Desde el panel diagrama podemos añadir cómodamente campos de las tablas a la consulta marcando la casilla correspondiente. En la imagen anterior la única casilla seleccionada es la del * en la tabla Libros por lo que se visualizarán todas las columnas de la tabla Libros y ninguna de la tabla Préstamos.

Conforme vamos marcando casillas de las tablas del panel diagrama, los cambios se ven reflejados en los demás paneles excepto en el panel de resultados que se actualiza ejecutando la consulta.

Page 49: Manual Completo SQL Parte1

49

1.26. El panel de criterios

Es una rejilla en la que podemos definir las columnas del resultado de la consulta (las columnas de la vista).

En cada fila de la rejilla se define una columna del resultado o una columna que se utiliza para obtener el resultado.

En Columna tenemos el nombre de la columna de la se obtienen los datos o la expresión cuando se trata de una columna calculada.

En Alias escribimos el nombre que tendrá la columna en la vista, también corresponde con el encabezado de la columna en la rejilla de resultado. Si se deja el campo en blanco, por defecto se asume el mismo nombre que hay en Columna.

En Tabla tenemos el nombre de la tabla del origen de la consulta a la que pertenece la Columna, por ejemplo la primera columna del resultado se saca de la columna Codigo de la tabla LIBROS y se llamará CodLibro. La cuarta columna de la vista cogerá sus datos de la columna Usuario de la tabla Prestamos y se llamará Usuario (Alias se ha dejado en blanco por lo que asume el nombre que hay en Columna.

En la columna Resultados indicamos si queremos que la columna se visualice o no, las columnas con la casilla marcada se visualizan.

Las columnas Criterio de ordenación y Tipo de orden permiten ordenar las filas del resultado según una o más columnas. Se ordena por las columnas que tienen algo en Tipo de orden y cuando se ordena por varias columnas Criterio de ordenación indica que primero se ordena por la columna que lleva el nº 1 y después por la columna que lleva el nº 2 y así sucesivamente. En el ejemplo las filas del resultado se ordenarán primero por código de libro y después por código de préstamo, todas las filas dentro del mismo libro se ordenarán por código de préstamo.

Page 50: Manual Completo SQL Parte1

50

Si queremos añadir unos criterios de selección tenemos las columnas Filtro y O…

En cada celda indicamos una condición que debe cumplir la columna correspondiente y se puede combinar varias condiciones mediante O (OR) e Y (AND) según coloquemos las condiciones en la misma columna o en columnas diferentes. En el ejemplo anterior tenemos la condición compuesta: ((usuario=1) AND (Dias>5)) OR (Usuario=2).

Podemos variar el orden de aparición de las columnas arrastrando la fila correspondiente de la rejilla hasta el lugar deseado.

También podemos Elimnar filas de la rejilla para eliminar columnas del resultado, lo conseguimos seleccionando la fila haciendo clic sobre su extremo izquierda y cuando aparece toda la fila remarcada pulsamos Supr o desde el menú contextual de la fila.

Podemos definir consultas más complejas como por ejemplo consultas de resumen, pulsando sobre el botón Agrupar por de la barra de herramientas, se añade a la rejilla una nueva columna Agrupar por con las siguientes opciones:

1.27. El panel SQL

En él vemos la instrucción SQL generada, también podemos redactar directamente la sentencia SQL en el panel y ver los cambios equivalentes en los distintos paneles. Para ver estos cambios debemos de ejecutar o Comprobar la sintaxis para que se actualicen los demás paneles.

Page 51: Manual Completo SQL Parte1

51

Por defecto el generador añade a la consulta una cláusula TOP (100) PERCENT que indica que se visualizarán el 100% de las filas. Esta cláusula no la hemos definido nosotros sino que la añade automáticamente el generador.

Una vez tenemos la vista definida la guardamos y podremos hacer con ella casi todo lo que podemos hacer con una tabla. De hecho si nos fijamos en el Explorador de objetos, en la carpeta Vistas:

Vemos que la estructura es muy similar a la estructura de una tabla. Y que podemos modificar su definición y ejecutarla, igual que con las tablas:

Modificar para modificar la definición de la vista

Abrir vista para ejecutarla y ver los datos como si fuese una tabla real.

Ejercicio 1: Crear una base de datos

Se desea implementar una base de datos para el control de una biblioteca. Crea la base de datos con el nombre Biblioteca y las opciones por defecto.

Page 52: Manual Completo SQL Parte1

52

Ejercicio 2: Crear y definir tablas

Crea las tablas Libros, Préstamos y Usuarios de forma que sigan el siguiente esquema:

Tabla Libros

NOMBRE CAMPO TIPO DE DATOS TAMAÑO

Codigo Numérico Byte

Nombre Texto 60

Editorial Texto 25

Autor Texto 25

Genero Texto 20

PaisAutor Texto 20

Paginas Numérico Entero

AnyEdicion Fecha/Hora Fecha mediana

Precio Moneda

Dias Numérico Entero

Tabla Préstamos

NOMBRE CAMPO TIPO DE DATOS TAMAÑO

Codigo Autonumérico

Libro Numérico Byte

Usuario Numérico Byte

FSalida Fecha/Hora Fecha mediana

FMaxima Fecha/Hora Fecha mediana

FDevol Fecha/Hora Fecha mediana

Page 53: Manual Completo SQL Parte1

53

Tabla Usuarios

NOMBRE CAMPO TIPO DE DATOS TAMAÑO

Codigo Autonumérico

Nombre Texto 15

Apellidos Texto 25

DNI Texto 12

Domicilio Texto 50

Poblacion Texto 30

Provincia Texto 20

FNacim Fecha/Hora Fecha mediana

Maximo_permitido Numérico Entero

Ejercicio 3: Insertar datos en las tablas

Inserta los datos en las tablas de forma que el resultado sea el siguiente:

Page 54: Manual Completo SQL Parte1

54

Ejercicio 4: Modificar la definición de las tablas

Observando los datos, averigua:

Claves primarias

Claves ajenas

Valores no nulos (supondremos que una columna no admite nulos si en los datos sumnistrados no hay ningún nulo en esa columna).

Modifica la definición de las tablas para incorporar esta información.

Page 55: Manual Completo SQL Parte1

55

Ayuda ejercicios unidad 1

Ejercicio 1: Crear una base de datos

Para crear la base de datos con el nombre Biblioteca y las opciones por defecto:

1. Abre el SQL Server Management Studio Express que instalaste.

2. Haz clic con el botón secundario del ratón sobre la carpeta Bases de datos del Explorador de objetos.

3. Selecciona Nueva base de datos...

4. Llámala Biblioteca y deja los nombres y características de los archivos con su definición predeterminada. Pulsa Aceptar.

5. Despliega el contenido de la nueva carpeta Biblioteca pulsando sobre el signo + para comprobar que se ha creado correctamente.

Ejercicio 2: Crear y definir tablas

Para crear las tablas:

1. Despliega el contenido de la base de datos Biblioteca, en el Explorador de objetos.

2. Despliega el menú contextual de Tablas y escoge la opción Nueva tabla...

3. Escribe el nombre de cada columna y escoge el tipo de datos en el desplegable. En la zona inferior, en la pestaña Propiedades de columna, busca el campo que define el tamaño del dato y cámbialo si es necesario.

4. Cuando hayas acabado, pulsa el botón Guardar o cierra la tabla y dale el nombre correspondiente.

5. Repite los pasos para cada una de las tres tablas.

Ejercicio 3: Insertar datos en las tablas

Para insertar los datos en las tablas.

1. Despliega el contenido de la carpeta Tablas de Biblioteca, en el Explorador de objetos.

2. Despliega el menú contextual de una de las tablas y escoge la opción Abrir tabla. Rellena los campos.

3. Repite la operación para las otras dos tablas.

Page 56: Manual Completo SQL Parte1

56

Ejercicio 4: Modificar la definición de las tablas

Para modificar la definición de las tablas: Ten en cuenta que las claves primarias serán los campos codigo de cada tabla. Además, el campo Libro de la tabla Prestamos es clave ajena, hace referencia al Codigo de Libros. Y el campo Usuario también es clave ajena, hace referencia al Codigo de Usuarios

1. Despliega el contenido de la carpeta Tablas de Biblioteca, en el Explorador de objetos.

2. Despliega el menú contextual de la tabla que quieras modificar y escoge la opción Diseño (o Modificar).

3. Incluye la clave primaria seleccionando la columna Codigo y pulsando el botón en forma de llave de la barra de herramientas.

4. Si la tabla contiene una clave ajena, indícalo desplegando el menú contextual del campo que quieres relacionar y seleccionando Relaciones...

5. No olvides marcar o desmarcar la casilla Permite valores nulos convenientemente.

6. Repite la operación para las otras dos tablas.

Page 57: Manual Completo SQL Parte1

57

Prueba evaluativa unidad 1: El entorno gráfico SSMS

Sólo una respuesta es válida por pregunta. Haz clic en la respuesta que consideres correcta. Contesta todas las preguntas y haz clic en el botón Corregir para ver la solución. Si pulsas Restablecer podrás repetir la evaluación.

a) El Explorador de objetos...

a) Es un panel que muestra el contenido de nuestro servidor: bases de datos, tablas, etc. ordenados jerárquicamente.

b) Permite acceder a elementos de nuestro servidor rápidamente y efectuar acciones sobre ellos mediante el menú contextual.

c) A y B son ciertas. d) d) A y B son falsas.

b) ¿En qué carpeta se deben, por lo general, crear las bases de datos?

a) Bases de datos > Bases de datos del sistema. b) Bases de datos. c) Objetos del servidor. d) d) Administración.

c) Como mínimo, una base de datos en SQL Server debe conener los archivos físicos:

a) mdf y ldf, es decir, el principal y el de registro. b) mdf, ndf y ldf: Principal, secundario y de registro. c) mdf y ndf: Principal y secundario. d) mdf: Principal.

d) Para copiar los archivos físicos de una base de datos...

a) Deberemos acceder a la carpeta donde está guardada, mediante el explorador de windows, y copiarlos.

b) Deberemos desconectarla antes de intentar copiarla, si no el sistema no nos dejará hacerlo porque está en uso.

c) Deberemos utilizar la herramienta de copias de seguridad, porque no se puede acceder a ella desde fuera del gestor SSMS.

d) Todas son falsas.

e) Para incluir una base de datos en nuestro servidor...

a) Es necesario crearlo desde el mismo servidor. b) Es necesario, por seguridad, crear la base de datos en un servidor diferente al que lo

ejecutará. c) Podemos crear una nueva o adjuntar una ya existente. d) Deberemos hacerlo mediante instrucciones SQL, ya que el entorno gráfico no lo permite.

Page 58: Manual Completo SQL Parte1

58

f) Al definir las columnas de una tabla, ¿qué información deberemos especificar?

a) El rango de valores que soporta. b) El nombre, tipo y si admite nulos, para cada columna. c) La longitud de la cadena. d) Las variables.

g) Si definimos una columna de identidad (IDENTITY)...

a) SQL Server automáticamente la define como clave principal. b) ) Ésta admitirá nulos. c) Ésta deberá ser de tipo nchar. d) El sistema generará su valor, que será un número incrementado.

h) Para modificar los datos de una tabla:

a) Desde el Explorador de objetos, desplegamos su menú contextual y elegimos la opción Modificar.

b) Desde el Explorador de objetos, desplegamos su menú contextual y elegimos la opción Abrir tabla.

c) A y B son ciertas. d) A y B son falsas.

i) Para relacionar dos tablas, por ejemplo empleados y oficinas.

a) Deberemos llamar del mismo modo al campo que las relacionará y el gestor se encarga automáticamente de crear la relación.

b) Deberemos seleccionar el campo de la tabla padre empleados y pulsar el botón definir hijos para añadir el campo de oficinas.

c) Deberemos, necesariamente, escribir instrucciones SQL que se encarguen de establecer las relaciones.

d) Deberemos desplegar el menú contextual del campo que las relaciona y elegir Relaciones.

j) Si pulsamos el botón Nueva consulta...

a) Se abrirá una pestaña nueva en forma de editor, donde podremos escribir consultas SQL. b) Podremos utilizar la zona de edición para escribir varias consultas, una detrás de otra. c) Dispondremos de un editor que coloreará las palabras en función de su categoría. d) Todas son ciertas.

Page 59: Manual Completo SQL Parte1

59