SQL Server
SQL Server
1
1. EL ENTORNO GRAFICO SSM(I).
1.1. Introducción.
SQL Server 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.
entramos a través del acceso directo o a través de Inicio Programas Microsoft SQL
Server SQL Server Management Studio.
2
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.
1. Nueva consulta
2. Consulta de motor de Base de datos
3. Consulta MDX de Analysis Services.
4. Consulta MDX de Analysis Services
5. Consulta MXLA de Analysis Services
6. Consulta de SQL Server Mobile
7. Abrir Archivo
8. Guardar
9. Guardar todo
10. Servidores registrados
11. Resumen
12. Explorador de Objetos
13. Explorador de Plantillas
14. Ventana de Propiedades.
Archivos de datos principales: En una base de datos SQL Server 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 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 puedan 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 32767 grupos de archivos.
3
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 no exige las extensiones de nombre de archivo .mdf, .ndf, .ldf, pero estas
extensiones ayudan a identificar las distintas clases de archivo 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 puedan colocar en un sistema de archivos NTFS
comprimido.
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.
4
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 de 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.
5
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 base de datos 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/MMSQ.n/DATA. Donde n representa un número que puede variar de una instalación a
otra.
6
Estos son los archivos mínimos en los que se almacenarán la base de datos, pero como ya
vimos anteriormente se puede almacenar en más archivos, los tenemos que definir todos en
eta ventana a continuación de los dos obligatorios.
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.
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.
7
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 “Grupo de archivos” o en
“Opciones”.
8
Aparecerá dentro de la carpeta “Bases de datos”. Si no se ve pulsa en el icono de 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.
9
En la siguiente ventana elegimos la base de datos:
10
Finalmente pulsamos Aceptar y aparecerá 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.
Esto 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 de datos.
11
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 seleccionamos la opción “Poner fuera de conexión”.
Para volver a conectar la base de datos y seguir trabajando con ella, accedemos al mismo
menú contextual pero elemiremos la opción “Poner el 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 de datos que utilizarás en los ejercicios para
poder trabajar en diferentes ordenadores con ellos. Veamos como realizar este ejercicio.
Ejercicio.
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 determinada 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 utilizamos como siempre el menú
12
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.
3. Volvemos al SSMS y desconectamos la base de datos.
4. Ahora que ya está desconectada, copiamos los archivos desde el Explorador de
Windows, por ejemplo, a nuestro Pendrive. Ya tenemos la copia de la base de datos de
clase. Ahora vamos a ver como incluirla en el otro ordenador, es decir, en casa:
a. En caso de que la base de datos no exista, deberá adjuntarla como ya hemos
visto.
b. En caso de que la base de datos exista y lo que quieras sea actualizarla
deberás:
i. Desconectar la base existente desde SSMS
ii. Sobreescribir los archivos físicos por los nuevos que llevas en el
Pendrive, desde el Explorador de Windows.
iii. Volver a conectar la base de datos desde SSMS.ki
13
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.
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:
En este ejemplo hemos definido una columna (Código) de tipo entero corto (Smallint), y una
columna (Nombre) que almacenará 20 caracteres alfanuméricos (nchar(20)), en este caso la
longitud la indicamos en la pestaña “Propiedades” de la 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 no tienen la
propiedad longitud pero si las propiedades escala y precisión, los valores que permiten definir
el tamaño del campo.
14
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.
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 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.
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 si fuerza
a que sea una columna sin valores nulos. No se puede definir más de una columna de
identidad por tabla.
15
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”.
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”.
16
O simplemente hacemos clic en la zona izquierda del nombre y pulsamos la tecla Supr.
17
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 este 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.
18
1.17. 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:
19
Al pulsar el botón que se encuentra en la fila “Especificación de tablas y columnas” se abre el
diálogo donde definiéremos la relación.
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 al 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á:
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.
20
Si no tenemos todavía ningún diagrama creado, nos aparece un mensaje:
A continuación nos aparece el nuevo diagrama ahora si elegimos crear un nuevo diagrama nos
preguntará las tabla 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:
La llave indica la tabla principal (padre) y el símbolo infinito señala la tabla que contiene la
clave ajena.
21
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 relacionales entre sí y con datos, ahora veamos cómo recuperar esos datos.
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,
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:
22
Además aparece una nueva barra de botones que nos permitirá ejecutar los
comandos más útiles del modo query.
Sólo tenemos que teclear la sentencia a ejecutar, por ejemplo empezaremos por crear la
base de datos.
23
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.
Cuando ejecutamos consultas desde el editor, nos tenemos que fijar sobre qué base
de datos se va a actuar.
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.
24
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;
25
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.
26
27