viernes, 31 de mayo de 2013

SQL server

 SQL SERVER

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

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 .

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.

Entrada al SQL Server Management Studio

Aunque trabajemos en modo local, la entrada a la herramienta es la misma. Para empezar entramos a través del acceso directo Icono SSMS o a través de Inicio, Programas, Microsoft SQL Server 2005, SQL Server Management Studio.
Lo primero que deberemos hacer es establecer la conexión con el servidor:

SSMS - Conectar al 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):

SSMS - Entorno

En la parte izquierda tenemos 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 vemos el contenido de la carpeta que representa el servidor ord01.
En la parte superior tenemos el menú de opciones y la barra de herramientas Estándar.

SSMS - Barra de herramientas
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 utilices la versión Express, es posible que no dispongas de algunos de éstos botones.


Estructura interna de una base de datos

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

Crear una base de datos en SSMS

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

SSMS - Bases de datos

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.

SSMS - Bases de datos del sistema

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…

SSMS - Nueva base de datos

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

SSMS - Nueva bbdd: General


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

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.

SSMS - Nueva bbdd: General 2

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.


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

SSMS - Nueva bbdd en el Explorador de objetos

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.

SSMS - Archivos de la nueva base de datos en el explorador de Windows
     

Adjuntar una base de datos

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

En la siguiente ventana elegimos la base de datos:

SSMS - Agregar archivos

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

SSMS - Archivos agregados

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

SSMS - Base de datos adjuntada en Explorador de objetos

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


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

SSMS - Desconectar BBDD desde menú contextual

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:

SSMS - Poner bbdd en conexión (desde el menú contextual)
 
 

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.

SSMS - Opción Nueva tabla (contextual)

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

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

Tipos de datos

 Tipos de datos 1  Tipos de datos 2  Tipos de datos 3  Tipos de datos 4

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:

SSMS - Propiedades de la columna

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.

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.

Columna con contador

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.

 Propiedades de columna - Identidad

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:

SSMS - Establecer clave principal (Contextual)

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

SSMS - Clave principal

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.

SSMS - Quitar clave principal

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

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.

SSMS - Insertar columna
La nueva columna se colocará delante:
SSMS - Insertar columna encima

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:

SSMS - Eliminar columna (contextual)

 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:

SSMS - Nombrar tabla 

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

SSMS - Tabla nueva en Explorador de objetos

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

SSMS - Modificar tabla

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

Insertar datos en la tabla

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

SSMS - Abrir tabla

Se abrirá una ventana parecida a esta:

SSMS - Datos de la tabla 

 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.

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.


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

SSMS - Eliminar filas

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


SSMS - Confirmar la eliminación

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:

SSMS - Establecer relación (Contextual)
Seleccionamos la opción Relaciones y se abre la ventana:
SSMS - Ventana relaciones

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:

SSMS - Crear relación entre campos
 
 

El entorno gráfico SSMS (X)

En la parte derecha tenemos la tabla en la que estamos y el campo que va a actuar como clave ajena, sólo nos 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 podremos elegir el campo de la otra tabla por el que se relacionarán las tablas. En nuestro caso será:

SSMS - Relación clientes-facturas

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

Primero debemos definir el diagrama, para ello seleccionamos la opción correspondiente:

SSMS - Nuevo diagrama de datos

Si no tenemos todavía ningún diagrama creado, nos aparece un mensaje:

SSMS - Aviso de confirmación para la creación de un nuevo diagrama

Elegimos 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:

SSMS - Agregar tabla a la relación

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:

SSMS - Propiedades y tablas en una relación

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:

SSMS - Diagramas en el Examinador de objetos

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.
 
 

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 Botón Nueva consulta 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:
SSMS - Nueva consulta.
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:
SSMS - Editor de consultas
Además aparece una nueva barra de botones que nos permitirá ejecutar los comandos más útiles del modo query.

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:

SSMS - Mensaje de aviso de Comandos ejecutados correctamente y estructura de la bbdd creada

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.

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

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:

SSMS - Configurar fuentes y colores del editor

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.

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.

SSMS - Nueva vista (contextual)Nueva vista - Agregar tablas

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:

SSMS - Definir vista

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:


 SSMS - Paneles de la barra de herramientas
SSMS -  Diseñador de vistas
 

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:

SSMS - Quitar relación desde diagrama

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.

El panel de criterios

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

SSMS - Columnas de una 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.
 
 

1 comentario:

  1. Muy útil para empezar a usar esta herramienta, ¿sabes si es posible generar un diccionario de datos en esta herramienta?

    ResponderEliminar