PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA CURSO: Creando Bases de Datos. (SQL Server 2012) DURACION: 24 HORAS Programa de Formación Profesional para la Productividad y Competitividad.
PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA
CURSO:
Creando Bases de Datos.
(SQL Server 2012)
DURACION:
24 HORAS
Programa de Formación Profesional para la Productividad y Competitividad.
Page 1
1. ESTRUCTURA SQL SERVER 2012
Objetivo:
Al finalizar el tema, el participante será capaz de describir los elementos básicos que
componen SQL Server así como también de describir las Bases de Datos del Sistema.
Arquitectura cliente-servidor
Microsoft® SQL Server™ está diseñado para operar de forma eficiente en varios
entornos:
Como sistema de base de datos cliente-servidor de dos estratos o de
varios estratos
Como sistema de base de datos de escritorio
Sistemas de bases de datos cliente-servidor
Los sistemas cliente-servidor están construidos de tal modo que la base de datos
puede residir en un equipo central, llamado servidor y ser compartida entre varios
usuarios. Los usuarios tienen acceso al servidor a través de una aplicación de cliente o
de servidor:
En un sistema cliente-servidor de dos estratos, los usuarios ejecutan una aplicación en
su equipo local, llamado cliente, que se conecta a través de la red con el servidor que
ejecuta SQL Server. La aplicación de cliente ejecuta las reglas de la compañía y el
código necesario para presentar el resultado al usuario; también se conoce como
cliente amplio.
Page 2
Sistemas de bases de datos de escritorio
Aunque SQL Server funciona muy eficientemente como servidor, también se puede
utilizar en aplicaciones que necesiten bases de datos independientes almacenadas de
forma local en el cliente. SQL Server se puede autoconfigurar dinámicamente para que
se ejecute más eficientemente con los recursos disponibles en el cliente, sin tener que
dedicar un administrador de bases de datos a cada cliente. Los fabricantes de
aplicaciones también pueden incrustar SQL Server como componente de
almacenamiento de datos en sus aplicaciones.
Cuando los clientes utilizan bases de datos SQL Server locales, una copia del motor de
bases de datos de SQL Server se ejecuta en el cliente y administra todas las bases de
datos de SQL Server de dicho cliente. Las aplicaciones conectan con el motor de la
base de datos casi de la misma forma en que se conectan a través de la red con un
motor de base de datos que se ejecuta en un servidor remoto.
Page 3
Arquitectura SOA:
SOA prestadores de servicios, consumidores, y otros componentes de manejo de datos
como una característica natural de sus funciones en una aplicación SOA. Una
aplicación SOA todavía utiliza habitualmente las bases de datos central para almacenar
y proteger los datos, pero es probable que muchas de esas grandes bases de datos
que mantienen las clases de datos, como el almacenamiento por separado de las
ventas, fabricación, y las operaciones de datos y subconjuntos de cada especializados.
Cada proveedor de servicios y de los consumidores puede tener un localizados
necesidad de caché de datos o de su propio almacén de datos especializados. Y, de
los mensajes que viajan entre las distantes partes de la solicitud son a menudo los
datos que se vale de archivo para diversos usos.
Los datos pueden ser la partición sobre la base de sus características en el sistema
general en cuatro formas:
Datos de referencia se utiliza para crear solicitudes de servicio, como por
ejemplo un catálogo de productos. Debe ser en un formato que sea utilizable por
todas las partes, y que se identifica de una forma que no cambia con el tiempo,
como un catálogo de la fecha.
Page 4
Datos de actividad es efímero datos utilizados para realizar una actividad
específica, como una lista de selección que se utiliza para recuperar comprado
artículos de inventario. Dado que se trata de privados al servicio, el formato no
tiene que ser entendido por las otras partes.
Datos sobre los recursos es de larga vida datos que se utiliza internamente por
un servicio, los datos de los clientes, y datos de la cuenta.
Interacción de servicios de datos se utiliza para la comunicación entre servicios.
Debe ser en un formato que sea entendido por todas las partes, y debe seguir
siendo constante en el tiempo. Por ejemplo, un formulario de pedido se
comunica entre los servicios. Si el objeto se pierde, hay que ser capaces de
regenerar en la misma forma que el original y se transmiten de nuevo.
Este diagrama muestra algunos de los criterios de valoración que puedan hacer un
poco acoplamiento aplicación que se construye utilizando los principios de SOA. Un
servicio de los consumidores-que podría ser una aplicación cliente, un servidor de
Page 5
aplicación, como un servidor Web, o cualquier otro tipo de aplicación-envía un
mensaje a un proveedor de servicios. En los sistemas complejos, un mensaje router
inicialmente podrían recibir el mensaje y aplicar algunas ruta lógica a la petición de
que el proveedor de servicios adecuados. El proveedor de servicios recibe el
mensaje, tal vez desempaqueta y que cambiará, ¿sea cual sea el trabajo es
necesario y, a continuación, podría enviar una respuesta de vuelta al servicio del
consumidor.
Cuando se estudian los conceptos de SOA, rápidamente que cada uno de los
componentes en el sistema general es recibir, procesar y transmitir la información
como una de sus funciones primordiales. Incluso si un proveedor de servicios de la
respuesta a un mensaje enviado desde un servicio a los consumidores es
simplemente voltear un poco a su vez algo encendido o apagado, sin interactuar
con una base de datos, el prestador debe procesar los datos en el mensaje a fin de
determinar la labor Que se ha de hacer. Pero modernas aplicaciones empresariales
tratan ampliamente en los datos, por lo que es común para un componente SOA a
tener acceso ya sea a una base de datos centralizada o local, o con frecuencia
ambos.
Requerimientos para un proveedor de servicios de SOA
Para SQL SERVER 2012 o de cualquier motor de base de datos de asumir un papel
como único programa de servicios de SOA, es necesario aplicar varias funciones
más allá de su capacidad de gestionar nativos datos:
Punto Final de Apoyo. SODA El proveedor debe proporcionar apoyo a la
comunicación para recibir y transmitir los mensajes, por lo general, como un
socket TCP, HTTP GET o PUT, SOAP punto final, u otro tipo de punto final.
Page 6
Proceso de solicitudes de servicio. La mayoría de los mensajes son en SOA
utilizando el formato XML, por lo que el proveedor de servicios debe ser capaz
de transformar el proceso y, posiblemente, la de datos adjunta en otras formas,
según sea necesario por los componentes que conforman el servicio. También
debe ser capaz de participar en conversaciones y diálogos complejos como son
interdependientes mensajes recibidos y enviados a otros componentes.
Servicio lógica de acogida. El proveedor debe ser capaz de realizar cualquier
complejo de lógica es necesaria para procesar el mensaje y dar la respuesta
necesaria, así como, posiblemente, de coordinar las aportaciones de otros varios
servicios. Esto puede requerir tareas comunes de servidor de aplicaciones,
como la puesta en común de recursos, la activación, y la expansión lógica de
procesamiento.
Las diversas características nuevas en SQL SERVER 2012 para proporcionar
apoyo a estas funciones, además de muchas otras obras de infraestructura de
apoyo a la gestión de datos. Por ejemplo, un proveedor de servicios de seguridad
deben participar en un sistema de SOA y ser capaz de autenticar los clientes y, a su
vez, proporcionar credenciales para autenticar a los demás, proporcionar
durabilidad, participar en conversaciones y transacciones, y otras características a
nivel de aplicación.
SQL SERVER 2012 se basa en las características de SQL Server 2000 el motor de
base de datos relacionales, así como las liberaciones provisionales de las nuevas
tecnologías desde su versión original, como SQLXML 3,0, Servicios de Notificación,
y otras herramientas, para realizar plenamente la Base de Datos Orientadas a
Servicios Arquitectura.
Acceso Nativo a los servicios Web: HTTP
Para SQL SERVER 2012 para ser un proveedor de servicios completos de SOA, es
necesario el apoyo de protocolos basados en estándares para proporcionar criterios
Page 7
de valoración para aceptar y procesar solicitudes de servicio para cualquier tipo de
consumidor. El SQLXML extensiones a SQL Server 2000 sentó las bases para esta
función por incluido un filtro ISAPI para el uso con Internet Information Services (IIS)
para permitir HTTP de servicios Web basados en la comunicación con SQL Server.
SQL SERVER 2012 soporta protocolos de comunicación que se pueden utilizar
para apoyar una variedad de protocolos, reflejando la base de datos, servicios de
internet, servicios y Broker. El protocolo tipo HTTP permite que la instancia de SQL
Server para actuar como un proveedor de servicios para cualquier tipo de aplicación
en cualquier tipo de dispositivo que tiene soporte para los servicios web sobre HTTP
y los protocolos de seguridad WS-en una solución de SOA.
Completo acceso a los servicios Web requiere que SQL SERVER 2012 debe estar
instalado en Windows Server 2003 para aprovechar el Windows Server kernel-mode
HTTP protocolo. SQL Server puede registrar con el protocolo HTTP para reservar
partes de la URL de nombres. El diagrama muestra la estrecha integración y la
conexión directa entre el conductor y la base de datos. Cuando el protocolo HTTP
recibe una solicitud HTTP sobre el puerto 80 (por defecto), rutas de la solicitud
directa al punto final que se define dentro de SQL Server. SQL Server entonces
hace los procesos que se requieren, y luego devuelve una respuesta a través de
Windows.
Page 8
Objetos de Servicio Broker y Procesamiento
Servicio Broker introduce varios nuevos objetos de base de datos, como los tipos de
mensajes, los contratos de servicios, las colas, los servicios, los cuadros de diálogo,
grupos de conversación, y programas de servicio. La construcción de un proveedor
de servicios implica varios pasos para crear y configurar todos o algunos de esos
objetos, utilizando diversas formas nuevas de la Transact-SQL CREATE. Una vez
que estos objetos se encuentran en el lugar, puede enviar mensajes en formato
XML, utilizando la Transact-SQL ENVIAR declaración y un programa de servicios
puede tirar de ellos a una cola de recibir con la RECIBIR declaración.
Los mensajes se envían a un servicio que se define, lo que sitúa a la cola de
mensajes en un esperar a la tramitación de un programa de servicio, como se
muestra en el diagrama. La mayoría de las veces un servicio programa es un
procedimiento almacenado que los actos como el mensaje de Windows bomba,
batiendo a través de mensajes, procesamiento, y el envío de las respuestas.
Servicio Broker utiliza un modelo que es algo entre el tire y modelos caso, la de
Page 9
activar el programa de servicios que está obligado a una cola según sea necesario
para procesar los mensajes que han llegado. Servicio Broker pueden activar
programas de servicio adicional hasta un límite fijado como necesario para evitar
cuellos de botella y manejar de manera eficiente cargas pico.
Bases de Datos del Sistema
Los sistemas Microsoft® SQL Server™ tienen cuatro bases de datos del sistema:
Master
La base de datos master registra toda la información del sistema de SQL Server.
Registra todas las cuentas de inicio de sesión y los valores de la configuración del
sistema. Master es la base de datos que registra la existencia de todas las demás
bases de datos y la ubicación de los archivos principales que contienen la información
de inicialización de las bases de datos de usuario. Master registra la información de
inicialización de SQL Server; tenga siempre disponible una copia de seguridad reciente
de master.
Page 10
Tempdb
La base de datos tempdb almacena todas las tablas y todos los procedimientos
almacenados temporales. También satisface otras necesidades de almacenamiento
temporal, como las tablas de trabajo generadas por SQL Server. Tempdb es un
recurso global; las tablas y los procedimientos almacenados temporales de todos los
usuarios conectados al sistema se almacenan en ella. Tempdb se vuelve a crear cada
vez que se inicia SQL Server, de forma que el sistema se inicia con una copia limpia de
la base de datos. Como las tablas y los procedimientos almacenados temporales se
eliminan automáticamente al desconectar y cuando se cierra el sistema no hay
conexiones activas, en tempdb nunca hay nada que se tenga que guardar de una
sesión de SQL Server a otra.
Tempdb crece automáticamente cuando es necesario. Cuando el sistema se inicia,
tempdb se restablece a su tamaño predeterminado. Puede evitar la sobrecarga de
trabajo de la ampliación automática de tempdb si utiliza ALTER TABLE para aumentar
el tamaño de tempdb.
Model
La base de datos model se utiliza como plantilla para todas las bases de datos creadas
en un sistema. Cuando se emite una instrucción CREATE DATABASE, la primera parte
de la base de datos se crea copiando el contenido de la base de datos model, el resto
de la nueva base de datos se llena con páginas vacías. Como tempdb se crea de
nuevo cada vez que se inicia SQL Server, la base de datos model siempre tiene que
existir en un sistema SQL Server.
Msdb
La base de datos msdb la utiliza el Agente SQL Server para programar alertas y
trabajos, y para registrar operadores.
Page 12
2. ESTRUCTURA DE UNA BASE DE DATOS EN SQL SERVER 2012
Objetivo:
Al finalizar el tema, el participante será capaz de describir la estructura Física sobre la
cual se construyen las Bases de Datos.
Arquitectura de una base de datos
Los datos de Microsoft® SQL Server™ están guardados en bases de datos. Los datos
de una base de datos están organizados en los componentes lógicos visibles por los
usuarios. Además, una base de datos está implementada físicamente como dos o más
archivos de disco.
Al utilizar una base de datos, se trabaja principalmente con los componentes lógicos,
como tablas, vistas, procedimientos y usuarios. La implementación física de los
archivos es casi enteramente transparente. Normalmente, sólo el administrador de la
base de datos tiene que trabajar con la implementación física.
Page 13
Cada instalación de SQL Server tiene varias bases de datos. SQL Server tiene cuatro
bases de datos del sistema (master, model, tempdb y msdb) y cada instalación de
SQL Server tiene una o varias bases de datos de usuario. Algunas organizaciones sólo
tienen una base de datos de usuario que contiene todos los datos de la organización.
Otras organizaciones tienen bases de datos diferentes para cada grupo de la
organización y, en algunas ocasiones, una base de datos sólo es utilizada por una
única aplicación. Por ejemplo, una organización podría tener una base de datos para
ventas, una para nóminas, una para una aplicación de administración de documentos,
etc. Algunas veces, una aplicación utiliza sólo una base de datos; otras aplicaciones
pueden tener acceso a varias bases de datos.
Page 14
No es necesario ejecutar varias instancias de SQL Server para que varios usuarios
puedan tener acceso a las bases de datos de un servidor. SQL Server es capaz de
controlar el trabajo de miles de usuarios sobre varias bases de datos en el mismo
servidor y al mismo tiempo. SQL Server deja disponibles todas las bases de datos del
servidor para todos los usuarios que conecten con dicho servidor, de acuerdo con los
permisos de seguridad definidos.
Al conectar con SQL Server, la conexión queda asociada con una base de datos
concreta del servidor. Esta base de datos recibe el nombre de base de datos actual.
Normalmente, el usuario se conecta a una base de datos definida como
predeterminada por el administrador del sistema, aunque puede utilizar las opciones de
conexión de las API de la base de datos para especificar otra base de datos. Puede
cambiar de una base de datos a otra mediante la instrucción Transact-SQL USE
nombreBaseDatos o mediante una función API que cambie el contexto de su base de
datos actual.
Archivos y grupos de archivos físicos de la base de datos
Microsoft® SQL Server™ asocia una base de datos con un conjunto de archivos del
sistema operativo. Los datos y la información del registro de transacciones nunca se
mezclan en el mismo archivo, y cada archivo sólo es utilizado por una base de datos.
Page 15
Las bases de datos de SQL Server tienen tres tipos de archivos:
Archivos de datos principales (.mdf)
El archivo de datos principal es el punto de partida de la base de datos y apunta al
resto de los archivos de la base de datos. Cada base de datos tiene un archivo de
datos principal. La extensión de archivo recomendada para los archivos de datos
principales es .mdf.
Archivos de datos secundarios (.ndf)
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 archivo recomendada para los archivos de datos secundarios es .ndf.
Archivos de registro (.ldf)
Los archivos de registro almacenan toda la información de registro que se utiliza para
recuperar la base de datos. Como mínimo, tiene que haber un archivo de registro por
cada base de datos, aunque puede haber varios. La extensión de archivo recomendada
para los archivos de registro es .ldf.
Los archivos de SQL Server tienen dos nombres:
nombreArchivoLógico es el nombre que se utiliza para hacer referencia al archivo en
las instrucciones Transact-SQL.
Page 16
El nombre de archivo lógico tiene que cumplir las reglas de los identificadores de SQL
Server y tiene que ser único en la base de datos.
nombreArchivoSO es el nombre del archivo físico en el sistema operativo.
Reglas para la definición de archivos o grupos de archivos
Éstas son, entre otras, las reglas para la definición de archivos y grupos de archivos:
Un archivo o un grupo de archivos no puede ser utilizado por más de una base
de datos. Por ejemplo, los archivos ventas.mdf y ventas.ndf, que contienen datos
y objetos de la base de datos ventas, no pueden ser utilizados por otra base de
datos.
Un archivo puede pertenecer únicamente a un grupo de archivos.
Los datos y la información del registro de transacciones no pueden pertenecer al
mismo archivo o grupo de archivos.
Los archivos del registro de transacciones nunca pueden formar parte de un
grupo de archivos.
3. CREACION DE BASE DE DATOS
Objetivo:
Al finalizar el tema, el participante será capaz de crear Bases de Datos y configurar las
diferentes opciones de almacenamiento.
Consideraciones acerca del diseño de bases de datos
Page 17
Para diseñar una base de datos es preciso comprender las funciones empresariales
que desee modelar y los conceptos y características de las bases de datos que se
utilizan para representar esas funciones empresariales.
Es importante diseñar una base de datos para modelar con precisión las funciones
empresariales, dado que la modificación posterior del diseño de una base de datos ya
implementada puede ser muy laboriosa. Por otra parte, una base de datos bien
diseñada ofrecerá un mejor rendimiento.
Cuando diseñe una base de datos, considere lo siguiente:
La finalidad de la base de datos y cómo afecta al diseño. Cree un plan para la
base de datos que se ajuste a esa finalidad.
Las reglas de normalización de la base de datos para evitar errores en el diseño
de la base de datos.
La protección de la integridad de los datos.
Los requisitos de seguridad de la base de datos y los permisos de los usuarios.
Los requisitos de rendimiento de la aplicación. Deberá asegurarse de que el
diseño de la base de datos aprovecha las posibilidades que ofrece Microsoft®
SQL Server™ para aumentar el rendimiento. El equilibrio entre el tamaño de la
base de datos y la configuración del hardware es también importante de cara al
rendimiento.
El mantenimiento.
La estimación del tamaño de la base de datos.
Revisar los valores predeterminados
Se observara como funciona los valores predeterminados en cada nivel de jerarquía de
denominación
[NombreDeServidor.NombreDeBasedeDatos.NombreDeEsquema.NombreDeObjeto]:
Nombre de objeto: no existe un nombre de objeto predeterminado; tendremos
que suministrar uno
Propiedad: se puede omitir, en cuyo caso se resolverá utilizando primero el
nombre del usuario actual y posteriormente si el nombre del objeto en cuestión
Page 18
no existe con el usuario actual como propietario, probará con el dbo como
propietario.
Nombre de la base de datos: este nombre también se puede omitir a no ser
que estemos proporcionando un nombre de servidor, en cuyo caso tendremos
que proporcionar el nombre de la base de datos para los servidores SQL Server
(otros tipos de servidores pueden variar dependiendo del tipo específico del
mismo).
Nombre del Servidor: aquí podemos proporcionar el nombre del servidor
vinculado pero normalmente lo omitiremos para que SQL Server sea el valor
predeterminado para el servidor en el que iniciemos la sesión
CREATE DATABESE
Crea una nueva base de datos y los archivos que se utilizan para almacenar la base de
datos o adjunta una base de datos desde los archivos de una base de datos creada
anteriormente.
CREATE DATABASE <database name> [ON [PRIMARY]
([NAME = <’logical file name’>,] FILENAME = <’file name’> [, SIZE = <size in kilobytes, megabytes, gigabytes, or terabytes>] [, MAXSIZE = size in kilobytes, megabytes, gigabytes, or terabytes>] [, FILEGROWTH = <kilobytes, megabytes, gigabytes, or terabytes|percentage>])]
[LOG ON ([NAME = <’logical file name’>,] FILENAME = <’file name’> [, SIZE = <size in kilobytes, megabytes, gigabytes, or terabytes>] [, MAXSIZE = size in kilobytes, megabytes, gigabytes, or terabytes>] [, FILEGROWTH = <kilobytes, megabytes, gigabytes, or terabytes|percentage>])]
[ COLLATE <collation name> ] [ FOR ATTACH [WITH <service broker>]| FOR ATTACH_REBUILD_LOG| WITH DB_CHAINING ON|OFF | TRUSTWORTHY ON|OFF] [AS SNAPSHOT OF <source database name>] [;]
ON
Page 19
ON se utiliza en dos sitios para definir la ubicación del archivo donde se almacenan los
datos y para definir la misma información para el lugar donde se guarda el registro.
Advertirá aquí la inclusión de la palabra clave PRIMARY, que indica que lo que sigue
es un grupo de archivos primarios (o principales) en el que se guarda físicamente los
datos. También podemos guardar datos en los denominados grupos de archivos
secundarios.
NAME
Este es el nombre del archivo que se está definiendo, pero solo es un nombre lógico,
es decir, el nombre que va a utilizar SQL Server internamente para hacer referencia a
dicho archivo.
FILENAME
Este es el nombre físico del disco del archivo del sistema operativo real en que se van
a guardar los datos y el registro (dependiendo de qué sección se está definiendo).
SIZE
Es el tamaño de la base de datos. De forma que predeterminada, el tamaño se
proporciona en megabytes, pero también podemos hacer que se proporcione en
kilobytes utilizando KB en lugar de MB tras el valor numérico del tamaño; también se
puede utilizar el tamaño mucho mayor con GB (gigabytes) o incluso en TB (terabytes).
Se tendrá que tomar en cuenta que este valor debe ser, al menos tan alto como el de la
base de datos model y debe de ser un número entero (sin decimales); en caso
contrario se dará un error. Si no suministramos un valor para SIZE, la base de datos
tendrá inicialmente el mismo tamaño que el de la base de datos model.
MAXSIZE
Este parámetro es una pequeña variante del parámetro SIZE. SQL Server tiene un
mecanismo que permite a la base de datos asignar automáticamente un espacio en el
disco adicional (para crecer) cuando sea necesario. MAXSIZE es el tamaño máximo al
que puede crecer la base de datos. Una vez más, de forma predeterminada se
Page 20
proporciona en megabytes, como SIZE, pero se puede utilizar KB, GB o TB para
emplear cantidades de incremento diferentes. Si no se suministra un valor
predeterminado para este parámetro, se considera que no existe un máximo (el
máximo practico se alcanzará cuando nuestra unidad de disco duro este llena).
FILEGROWTH
Mientras SIZE establece el tamaño inicial de la base de datos y MAXSIZE determina
exactamente el tamaño máximo que puede llegar a tener el archivo de la base de
datos, FILEGROWTH determina básicamente el incremente del crecimiento con que
puede llegar a dicho máximo. Para ello, proporcionamos un valor indicando por cuantos
bytes (en KB,MB,GB o TB) a la vez se requiere aumentar el archivo. Alternativamente
se puede proporcionar un valor de porcentaje para el que requiere que se incremente el
archivo de la base de datos. Con esta opción, el tamaño aumentará en el porcentaje
establecido del tamaño del archivo de la base de datos. Por consiguiente, si establece
un archivo de base de datos para que cuando llegue a 1GB incremente un valor de
FILEGROWTH de un 20%, la primera vez que se expanda, aumentara hasta 1.2GB, la
segunda vez hasta 1.44 y así sucesivamente.
LOG ON
Esta opción permite establecer que el registro se dirija a un conjunto especifico de
archives y donde ubicar exactamente dichos archivos. Si no se proporciona esta
opción, SQL Server creara el registro en un solo archivo y lo predeterminara para que
tenga un tamaño igual al 25% del tamaño del archivo de datos.
COLLATE
Esta opción tiene que ver con el problema de la ordenación, las mayúsculas y
minúsculas y los acentos. Al instalar SQL Server, se decide sobre cuál es la
Page 21
intercalación predeterminada, pero puede sobrescribir este parámetro a nivel de base
de datos.
FOR ATTACH
Se podrá utilizar esta opción para agregar un conjunto de archivos de base de datos
existentes al servidor actual. Los archivos en cuestión tiene que formar parte de una
base de datos que, en algún momento, se haya separado correctamente utilizando
sp_detach_db. Normalmente se podrá utilizar sp_attach_db para obtener la
funcionalidad, pero el comando CREATE DATABESE con FOR ATTACH tiene la
ventaja de poder acceder a mas de 32,000 archivos (sp_attach_db se limita a 16). Si
utiliza FOR ATTACH tiene que completar la parte ON PRIMARY de la información de
ubicación del archivo.
TRUSTWORTHY
Este modificador es nuevo y añade una capa de seguridad adicional alrededor del
acceso a los recursos y archivos del sistema fuera del contexto de SQL Server. Por
ejemplo se puede ejecutar un montaje .NET que toque archivos que se encuentran en
la Red; en este caso, se tendrá que identificar la base de datos que forma parte del
montaje como si fuese de total confianza.
Ver una base de datos
Puede ver la definición de una base de datos y su configuración cuando esté
solucionando problemas o considerando la realización de cambios en la base de datos.
Para ver una base de datos (Transact-SQL)
sp_helpdb (T-SQL)
Page 22
Presenta información acerca de una base de datos especificada o de todas las bases
de datos.
Sintaxis
sp_helpdb [[@dbname=] 'nombre']
Argumentos
[@dbname=] 'nombre'
Es el nombre de la base de datos cuya información se va a presentar. El argumento
nombre es de tipo sysname y no tiene valor predeterminado. Si no se especifica
nombre, sp_helpdb devuelve información acerca de todas las bases de datos de
master.dbo.sysdatabases.
Cómo ver una base de datos (Administrador corporativo)
Expanda un grupo de servidores y, a continuación, expanda un servidor.
Expanda Bases de datos y, a continuación, haga clic en la base de datos que
desee ver.
Haga clic en Tablas e índices, vistas, etc para ver más información acerca de
la base de datos.
Page 23
Ejemplos para crear una Base de Datos
Crear una base de datos que especifique los archivos de registro de datos y de
transacciones
Este ejemplo crea una base de datos denominada Ventas. Debido a que la palabra
clave PRIMARY no se utiliza, el primer archivo (Sales_dat) se convierte en el archivo
principal. Porque ni MB o KB se especifica en el parámetro TAMAÑO Sales_dat para el
archivo, por defecto toma MB y se asigna en megabytes. El archivo Sales_log se
asigna en megabytes MB debido a que el sufijo es explícitamente en el parámetro
TAMAÑO.
USE master GO CREATE DATABASE Sales ON
Page 24
( NAME = Sales_dat, FILENAME = 'c:\program files\microsoft sql server\mssql\data\saledat.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON (NAME = 'Sales_log', FILENAME = 'c:\program files\microsoft sql server\mssql\data\salelog.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) GO
Crear una base de datos mediante la especificación de múltiples archivos de
registro de datos y de transacciones
Este ejemplo crea una base de datos llamada Archive con tres archivos de datos de
100 MB y dos archivos de registro de transacciones de 100 MB. El archivo principal es
el primer archivo de la lista y se especifica explícitamente con la palabra clave
PRIMARY. Los archivos de registro de transacciones se especifican a continuación de
las palabras clave LOG ON. Observe las extensiones que se emplean para los archivos
de la opción FILENAME: .mdf se utiliza para los archivos principales, .ndf para
USE master GO CREATE DATABASE Archive ON PRIMARY (NAME = Arch1, FILENAME = 'c:\program files\microsoft sql server\mssql\data\archdat1.mdf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), (NAME = Arch2, FILENAME = 'c:\program files\microsoft sql server\mssql\data\archdat2.ndf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), (NAME = Arch3, FILENAME = 'c:\program files\microsoft sql server\mssql\data\archdat3.ndf', SIZE = 100MB,
Page 25
MAXSIZE = 200, FILEGROWTH = 20) LOG ON (NAME = Archlog1, FILENAME = 'c:\program files\microsoft sql server\mssql\data\archlog1.ldf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), (NAME = Archlog2, FILENAME = 'c:\program files\microsoft sql server\mssql\data\archlog2.ldf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20) GO
Crear una base de datos individual
En este ejemplo se crea una base de datos llamada Products y se especifica un único
archivo. De forma predeterminada, el archivo especificado se convierte en el archivo
principal; se crea automáticamente un archivo de registro de transacciones de 1 MB.
Como no se especifica MB ni KB en el parámetro SIZE del archivo principal, el tamaño
del archivo principal se asigna en megabytes. Ya que no existe <filespec> para el
archivo de registro de transacciones, éste no tiene MAXSIZE y puede crecer hasta
llenar todo el espacio disponible en el disco.
USE master GO CREATE DATABASE Products ON (NAME = prods_dat, FILENAME = 'c:\program files\microsoft sql server\mssql\data\prods.mdf', SIZE = 4, MAXSIZE = 10, FILEGROWTH = 1 ) GO
Page 26
Crear una base de datos sin especificar los archivos
Este ejemplo crea una base de datos llamada mytest y crea los archivos principal y de
registro de transacciones correspondientes. Debido a que la instrucción no tiene
elementos <filespec>, el archivo principal de la base de datos tiene el tamaño del
archivo principal de la base de datos model. El registro de transacciones tiene el
tamaño del archivo del registro de transacciones de la base de datos model. Como no
se ha especificado MAXSIZE, los archivos pueden crecer hasta llenar todo el espacio
disponible en disco.
CREATE DATABASE mytest Crear una base de datos sin especificar SIZE
Este ejemplo crea una base de datos llamada products2. De forma predeterminada, el
archivo prods2_dat se convierte en el archivo principal, con un tamaño igual al tamaño
del archivo principal de la base de datos model. El archivo de registro de transacciones
se crea automáticamente y es un 25 por ciento del tamaño del archivo principal, o 512
KB, el que sea mayor. Como no se ha especificado MAXSIZE, los archivos pueden
crecer hasta llenar todo el espacio disponible en disco.
USE master GO CREATE DATABASE Products2 ON ( NAME = prods2_dat, FILENAME = 'c:\program files\microsoft sql server\mssql\data\prods2.mdf' ) GO
Page 27
GUIA PRACTICA NO.1
Para los siguientes ejercicios, desarrolle cada uno utilizando el Query Analizer
(Analizador de Consultas)
1. Complete la siguiente información para la Base de Datos Model
Tamaño Total de la Base de Datos Model : __________________ Nombre Lógico del Archivo de Datos : ______________________ Nombre Físico Completo de Datos : ________________________ Nombre Lógico del Archivo de Transacciones : ________________ Nombre Físico Completo del Archivo de Transacciones : _____________________________________________________
2. Crear una Base de Datos “Prueba1” sin especificar ninguna opción más que la
Sentencia Create Database.
Tamaño Total de la Base de Datos: __________________ Nombre Lógico del Archivo de Datos : ______________________ Nombre Físico Completo de Datos : ________________________ Nombre Lógico del Archivo de Transacciones : ________________ Nombre Físico Completo del Archivo de Transacciones: _____________________________________________________
3. El tamaño de la Base de datos creada en el ejercicio anterior es igual a la Base
de Datos Model ? ¿Por qué ?
4. Haga los siguientes directorios de trabajo :
C:\Datos y C:\Log
5. Crear una Base de Datos “Prueba2” especificando los siguientes datos :
Archivo Físico de Datos: C:\Datos\prueba2.mdf” Nombre Lógico de Datos: Prueba2 Tamaño: 2MB
6. Obtener la Información de la Base de Datos “Prueba2”
Tamaño Total de la Base de Datos: __________________ Nombre Lógico del Archivo de Datos : ______________________ Nombre Físico Completo de Datos : ________________________ Nombre Lógico del Archivo de Transacciones : ________________ Nombre Físico Completo del Archivo de Transacciones: _____________________________________________________
Page 28
7. Para la Base de Datos creada en el ejercicio No.5, ¿Porqué tiene Archivo de
Transacciones sino se específico uno en la Sentencia T-SQL?
8. Crear una Base de Datos “Prueba3” especificando los siguientes datos :
Archivo Físico de Datos : C:\Datos\prueba3.mdf Nombre Lógico : Prueba3 Tamaño : 1MB Archivo Físico de Transacciones : C:\Log\prueba3.ldf Nombre Lógico : LogPrueba3 Tamaño Máximo : 5.5MB
9. Crear una Base de Datos “Prueba4” especificando los siguientes datos :
Archivo Físico de Datos : C:\Datos\prueba4.mdf
Nombre Lógico : Prueba4 Tamaño : 2.5MB Auto Crecimiento del 10% Archivo Físico de Transacciones : C:\Log\prueba4.ldf Nombre Lógico : LogPrueba4 Tamaño: 2MB
10. Crear una Base de Datos “Prueba5” especificando los siguientes datos :
Archivo Físico de Datos : C:\Datos\prueba5.mdf
Nombre Lógico : Prueba5 Tamaño : 2.5MB Máximo Tamaño : 5MB Auto Crecimiento del 10% Archivo Físico de Transacciones : C:\Log\prueba5.ldf Nombre Lógico : LogPrueba5 Tamaño: 2MB Máximo Tamaño : 5MB Autocrecimiento : 1MB
11. Se implementará una Base de Datos para el área de Recursos Humanos. Se
requiere que tanto los Archivos de Datos como los archivos del Log de
Transacciones estén en el mismo directorio pero en diferente lugar al de
Microsoft SQL Server. Para los datos se ha decidido montar la Base en tres
diferentes archivos de 2MB sin límite de Tamaño y que crezcan
Page 29
automáticamente en un 5%. Para el Log de Transacciones el tamaño es
indiferente pero no tiene que pasar de los 5MB ( Un solo archivo ).
12. Crear los siguientes Directorios : C:\VentasDat1, C:\VentasDat2, C:\VentasDat3
y C:\VentasLog.
Crear una Base de Datos “Ventas” , esta tendrá tres archivos de datos y uno
para el Log de Transacciones ubicados en los directorios anteriormente creados.
Para cada archivo de datos se especificaran las siguientes opciones : Tamaño
2MB , Tamaño Máximo : 5MB, Autocrecimiento del 5%. Para el archivo de
transacciones el tamaño es de 5MB con un autocrecimiento del 2MB.
Tomar en cuenta que el archivo de datos ubicados en la carpeta C:\VentasDat1
y C:\VentasDat2 se agruparan en “VtasGrupo1” y el que se ubique en
C:\VentasDat3 se agrupara en “VtasGrupo2”
Crear una base de datos desde el Administrador Corporativo
Expanda un grupo de servidores y, a continuación, expanda un servidor.
Haga clic con el botón secundario del mouse (ratón) en Bases de datos y, a
continuación, haga clic en Nueva base de datos…
Escriba un nombre para la nueva base de datos. Los archivos del registro de
transacciones y de la base de datos principal se crean utilizando el nombre de
base de datos que ha especificado como prefijo, por ejemplo, newdb_Data.mdf y
newwdb_Log.ldf. Los tamaños iníciales de estos archivos son los mismos que
los tamaños predeterminados especificados para la base de datos model. El
archivo principal contiene las tablas del sistema para la base de datos.
Para cambiar los valores predeterminados proporcionados en las columnas
Nombre de archivo, Ubicación, Tamaño inicial (MB) y Grupo de archivos (no
aplicable para el registro de transacciones), haga clic en la celda apropiada para
cambiar y escribir el nuevo valor.
Para especificar cómo debe crecer el archivo, haga clic en una de estas
opciones:
Page 30
o Para permitir que el archivo actualmente seleccionado crezca cuando sea
necesario más espacio para los datos, haga clic en Crecimiento
automático del archivo.
o Para especificar que el archivo debe crecer en incrementos fijos, haga clic
en En megabytes y especifique un valor.
o Para especificar que el archivo debe crecer en un porcentaje de su
tamaño actual, haga clic en Por porcentaje y especifique un valor.
Para especificar el límite de tamaño del archivo, seleccione una de estas
opciones:
o Para permitir que el archivo crezca tanto como sea necesario, haga clic
en Crecimiento de archivos sin restricciones.
o Para especificar el tamaño máximo que se debe permitir que alcance el
archivo, haga clic en Restringir crecimiento de archivos (MB) y
especifique un valor.
Page 31
GUIA PRACTICA NO.2
Realice los Ejercicios del No.8 al No.12 de la Guía No.1 utilizando el Administrador
Corporativo, para que no existan problemas de Nombres en las Bases de Datos y
archivos, anteponga a cada uno de ellos “Adm”.
Para crear una base de datos con el Asistente para creación de bases de datos
Expanda un grupo de servidores y, a continuación, el servidor en el que va a
crear la base de datos.
Expanda Base de datos.
Haga clic con el botón secundario del mouse (ratón) en Bases de datos y, a
continuación, haga clic en Nueva base de datos…
Complete los pasos del asistente.
GUIA PRACTICA NO.3
Realice los Ejercicios del No.11 al No. 12 de la Guía No.1 utilizando el Asistente para
Creación de Bases de Datos, para que no existan problemas de Nombres en las
Bases de Datos y archivos, anteponga a cada uno de ellos “PRB”
Page 32
Modificar una base de datos
Después de crear una base de datos, es posible cambiar su definición original. Entre
otros cambios, pueden realizarse los siguientes:
Ampliar el espacio asignado en la base de datos para el registro de
transacciones o para los datos.
Reducir el espacio asignado en la base de datos para el registro de
transacciones y los datos.
Agregar o quitar archivos de datos y de registro de transacciones.
Crear grupos de archivos.
Cambiar el grupo de archivos predeterminado.
Cambiar la configuración de la base de datos.
Cambiar el nombre de la base de datos.
Para aumentar el tamaño de una base de datos (Transact-SQL)
ALTER DATABASE (T-SQL)
Agrega o quita archivos y grupos de archivos de una base de datos. También se puede
usar para modificar los atributos de los archivos o grupos de archivos, por ejemplo para
cambiar el nombre o el tamaño de un archivo.
Sintaxis
ALTER DATABASE <database name> ADD FILE
([NAME = <’logical file name’>,] FILENAME = <’file name’> [, SIZE = <size in KB, MB, GB or TB>] [, MAXSIZE = < size in KB, MB, GB or TB >] [, FILEGROWTH = <No of KB, MB, GB or TB |percentage>]) [,...n] [ TO FILEGROUP filegroup_name]
[, OFFLINE ] |ADD LOG FILE
([NAME = <’logical file name’>,]
Page 33
FILENAME = <’file name’> [, SIZE = < size in KB, MB, GB or TB >] [, MAXSIZE = < size in KB, MB, GB or TB >] [, FILEGROWTH = <No KB, MB, GB or TB |percentage>])
|REMOVE FILE <logical file name> [WITH DELETE] |ADD FILEGROUP <filegroup name> |REMOVE FILEGROUP <filegroup name> |MODIFY FILE <filespec> |MODIFY NAME = <new dbname> |MODIFY FILEGROUP <filegroup name> {<filegroup property>|NAME = <new filegroup name>} |SET <optionspec> [,...n ][WITH <termination>] |COLLATE <collation name>
Argumentos
base de datos
Es el nombre de la base de datos que se está cambiando.
ADD FILE
Especifica que se está agregando un archivo.
TO FILEGROUP
Especifica el grupo de archivos al que debe agregarse el archivo especificado.
nombreGrupoArchivos
Es el nombre del grupo de archivos al que se va a agregar el archivo especificado.
ADD LOG FILE
Especifica que se agregue un archivo de registro a la base de datos indicada.
REMOVE FILE
Quita la descripción del archivo de las tablas del sistema de base de datos y elimina el
archivo físico. El archivo no puede eliminarse a menos que esté vacío.
ADD FILEGROUP
Page 34
Especifica que se va a agregar un grupo de archivos.
nombreGrupoArchivos
Es el nombre del grupo de archivos que se va a agregar o quitar.
REMOVE FILEGROUP
Quita el grupo de archivos de la base de datos y elimina todos los archivos del grupo
de archivos. El grupo de archivos no se puede eliminar a menos que esté vacío.
MODIFY FILE
Especifica que el archivo dado se debe modificar, incluidas las opciones FILENAME,
SIZE, FILEGROWTH y MAXSIZE. Sólo se puede cambiar una de estas propiedades a
la vez. NAME debe especificarse en <filespec> para identificar el archivo que debe
modificarse. Si se especifica SIZE, el nuevo tamaño debe ser mayor que el tamaño
actual del archivo. FILENAME sólo puede especificarse para los archivos de la base de
datos tempdb y el nombre nuevo no surte efecto hasta que se reinicie Microsoft® SQL
Server™.
MODIFY FILEGROUP nombreGrupoArchivos propiedadGrupoArchivos
Especifica que la propiedad de grupo de archivos dada se aplique al grupo de archivos.
Los valores de propiedadGrupoArchivos son:
READONLY
Especifica que el grupo de archivos es de sólo lectura. No se permite la actualización a
los objetos del mismo. El grupo de archivos principal no se puede hacer de sólo lectura.
Sólo los usuarios que tengan acceso exclusivo a la base de datos pueden marcar un
grupo de archivos como de sólo lectura.
READWRITE
Page 35
Invierte la propiedad READONLY. Están habilitadas las actualizaciones para los
objetos del grupo de archivos. Sólo los usuarios que tengan acceso exclusivo a la base
de datos pueden marcar un grupo de archivos como de lectura y escritura.
DEFAULT
Especifica que el grupo de archivos es el grupo de archivos predeterminado de la base
de datos. En una base de datos, sólo un grupo de archivos puede ser el
predeterminado. Cuando hace que un grupo de archivos sea el grupo de archivos
predeterminado, la propiedad predeterminada se quita del grupo de archivos que había
sido anteriormente el predeterminado. CREATE DATABASE hace que el grupo de
archivos principal sea el grupo de archivos predeterminado inicial. Si no se especifica
ningún grupo de archivos en las instrucciones CREATE TABLE, ALTER TABLE o
CREATE INDEX, se crean nuevas tablas e índices en el grupo de archivos
predeterminado.
NAME
Especifica un nombre lógico para el archivo.
nombreArchivoLógico
Es el nombre que se utiliza en Microsoft SQL Server cuando se hace referencia al
archivo. El nombre debe ser exclusivo en el servidor y se debe ajustar a las reglas de
los identificadores. El nombre puede ser una constante de caracteres o Unicode, un
identificador regular o un identificador delimitado.
FILENAME
Especifica un nombre de archivo del sistema operativo. Cuando se emplea con
MODIFY FILE, FILENAME sólo se puede especificar para los archivos de la base de
datos tempdb. El nuevo nombre de archivo tempdb sólo surte efecto después de que
SQL Server se haya detenido y reiniciado.
'nombreArchivoSo'
Page 36
Es la ruta de acceso y el nombre de archivo que el sistema operativo utiliza para el
archivo. El archivo debe residir en el servidor donde esté instalado SQL Server. Los
archivos de datos y de registro no se pueden colocar en sistemas comprimidos de
archivos.
Si el archivo se encuentra en una partición sin formato, nombreArchivoSo sólo debe
indicar la letra de la unidad de una partición sin formato existente. En cada partición sin
formato sólo se puede colocar un archivo. Los archivos de las particiones sin formato
no aumentan automáticamente; por tanto, los parámetros MAXSIZE y FILEGROWTH
no son necesarios cuando nombreArchivoSo especifica una partición sin formato.
SIZE
Especifica el tamaño del archivo.
tamaño
Es el tamaño del archivo. Los sufijos MB y KB se pueden utilizar para especificar
megabytes o kilobytes. El valor predeterminado es MB. Especifique un número entero y
no incluya decimales. El valor mínimo permitido de tamaño es 512KB y si tamaño no se
especifica, el valor predeterminado es 1 MB. Cuando se especifica con ADD FILE,
tamaño es el tamaño inicial del archivo. Cuando se especifica con MODIFY FILE,
tamaño es el nuevo tamaño del archivo y debe ser mayor que el tamaño actual del
archivo.
MAXSIZE
Especifica el tamaño máximo que se permite que alcance el archivo.
tamañoMáximo
Es el tamaño máximo que puede alcanzar el archivo. Los sufijos MB y KB se pueden
utilizar para especificar megabytes o kilobytes. El valor predeterminado es MB.
Especifique un número entero y no incluya decimales. Si no se especifica
tamañoArchivo, el archivo aumentará de tamaño hasta que el disco esté lleno. El
Page 37
registro de la aplicación de Microsoft Windows NT® avisa a un administrador cuando
un disco esté a punto de llenarse.
UNLIMITED
Especifica que el tamaño del archivo aumentará hasta que el disco esté lleno.
FILEGROWTH
Especifica el incremento de tamaño del archivo.
incrementoCrecimiento
Es la cantidad de espacio que se agrega al archivo cada vez que se necesita espacio.
Un valor 0 indica que no hay aumento de tamaño. El valor se puede especificar en MB,
KB o %. Especifique un número entero y no incluya decimales. Cuando se especifica
%, el tamaño de incremento de crecimiento es el porcentaje especificado del tamaño
del archivo en el momento en que tiene lugar el incremento. Si se especifica un número
sin los sufijos MB, KB o %, el valor predeterminado es MB. Si FILEGROWTH no se
especifica, el valor predeterminado es 10% y el valor mínimo es 64K. El tamaño
especificado se redondea al múltiplo de 64 KB más cercano.
Agregar o quitar un archivo de registro o de datos invalida una cadena existente de
registros de copia de seguridad. Si el plan de copias de seguridad y restauración
incluye copias de seguridad de los registros, ejecute una instrucción BACKUP
DATABASE para iniciar una nueva secuencia de copias de seguridad de los registros
inmediatamente después de que se complete la instrucción ALTER DATABASE.
Para especificar una fracción de un megabyte en los parámetros de tamaño, convierta
el valor a kilobytes; para ello, multiplique el número por 1024. Por ejemplo, especifique
1536 KB en vez de 1,5 MB (1,5 x 1024 = 1536).
Agregar un archivo a una base de datos
Page 38
El ejemplo siguiente crea una base de datos y la modifica para agregarle un nuevo
archivo de datos de 5 MB.
Creación Base de Datos
USE master
GO
CREATE DATABASE Test1 ON
(
NAME = Test1dat1, FILENAME = 'c:\program files\microsoft sql server\mssql\data\t1dat1.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
GO
Modificación Base de Datos
ALTER DATABASE Test1
ADD FILE
(
NAME = Test1dat2, FILENAME = 'c:\program files\microsoft sql server\mssql\data\t1dat2.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
GO
Agregar un grupo de archivos con dos archivos a una base de datos
El ejemplo siguiente crea un grupo de archivos en la base de datos Test 1 creada en el
ejemplo A y agrega dos archivos de 5 MB al grupo de archivos. A continuación, hace
que Test1FG1 sea el grupo de archivos predeterminado.
USE master GO ALTER DATABASE Test1 ADD FILEGROUP Test1FG1 GO ALTER DATABASE Test1 ADD FILE ( NAME = test1dat3,
Page 39
FILENAME = 'c:\program files\microsoft sql server\mssql\data\t1dat3.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB), ( NAME = test1dat4, FILENAME = 'c'c:\program files\microsoft sql server\mssql\data\t1dat4.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB) TO FILEGROUP Test1FG1 ALTER DATABASE Test1 MODIFY FILEGROUP Test1FG1 DEFAULT GO
Agregar dos archivos de registro a una base de datos
El ejemplo siguiente agrega dos archivos de registro de 5 MB a una base de datos.
USE master GO ALTER DATABASE Test1 ADD LOG FILE ( NAME = test1log2, FILENAME = 'c:\program files\microsoft sql server\mssql\data\test2log.ldf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB), ( NAME = test1log3, FILENAME = 'c:\program files\microsoft sql server\mssql\data\test3log.ldf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB) GO Quitar un archivo de una base de datos
El ejemplo siguiente quita uno de los archivos agregados a la base de datos Test1 en
el ejemplo B.
USE master GO ALTER DATABASE Test1 REMOVE FILE test1dat4 GO
Page 40
Modificar un archivo
El ejemplo siguiente aumenta el tamaño de uno de los archivos agregados a la base de
datos Test1 en el ejemplo B.
USE master GO ALTER DATABASE Test1 MODIFY FILE (NAME = test1dat3, SIZE = 20MB) GO Hacer que el grupo de archivos principal sea el predeterminado
En este ejemplo se convierte el grupo de archivos principal en el predeterminado si
algún otro grupo de archivos se convirtió en el predeterminado anteriormente.
USE master GO
ALTER DATABASE Test1 MODIFY FILEGROUP [PRIMARY] DEFAULT GO
Page 41
GUIA PRACTICA NO.4
Para los siguientes ejercicios, desarrolle cada uno utilizando el Query
Analizer (Analizador de Consultas)
1. Para la Base de Datos “Prueba3” creada en el ejercicio No. 8 de la Guía No.1,
agregar un archivo de Datos con las siguientes especificaciones :
Archivo Físico de Datos: C:\Datos\prueba3.ndf
Nombre Lógico: Prueba3Dat2
Tamaño: 1MB
2. Para la Base de Datos “Prueba4” creada en el Ejercicio No. 9 de la Guía No.1,
modificar el Archivo de Transacciones para que tenga un tamaño máximo de
5MB
3. Para la Base de Datos “Prueba5” creada en el Ejercicio No.10 de la Guía No.1,
agregar una Archivo de Datos y uno para el Log de Transacciones usando la
misma información del ejercicio No.10.
4. Obtenga la información de la Base de Datos creada en el Ejercicio No.11 de la
Guía No.1, Tamaño Total de la Base de Datos, Archivos de Datos y Archivo de
Transacciones.
5. Para la Base de datos creada en el ejercicio No. 11 de la Guía No.1, elimine un
archivo de Datos ( Usando Transact-SQL)
6. Verifique nuevamente el Tamaño de la Base de Datos del ejercicio No.11 de la
Guía No.1. ¿Cambio el Tamaño?, ¿Verifique si existe el archivo físico de la Base
de datos usando el explorador de Windows?
7. Para la Base de Datos creada en el ejercicio No.12 de la Guía No.1, agregue
dos archivos de datos de 2MB en el Grupo “VtasGrupo2”
Page 42
Aumentar el tamaño de Base de Datos utilizando el Administrador Corporativo
Expanda un grupo de servidores y, a continuación, expanda un servidor.
Expanda Bases de datos, haga clic con el botón secundario del mouse en la
base de datos cuyo tamaño desea aumentar y, a continuación, haga clic en
Propiedades.
Para aumentar el espacio para los datos, haga clic en la opción Archivo. Para
aumentar el espacio para el registro de transacciones, haga clic en el archivo de
autogrowth.
Para agregar un archivo nuevo, haga clic en la siguiente fila vacía y, en la
columna Nombre de archivo, escriba el nombre del archivo que va a contener
el espacio adicional.
La ubicación del archivo se genera automáticamente y se asigna el sufijo .NDF
para un archivo de la base de datos o .LDF para un archivo del registro de
transacciones.
Para cambiar los valores predeterminados proporcionados en las columnas
Nombre de archivo, Ubicación, Espacio asignado (MB) y Grupo de archivos
(no aplicable para el registro de transacciones), haga clic en la celda apropiada
para cambiar y escribir el nuevo valor.
Para archivos existentes, sólo se puede cambiar el valor de Espacio asignado
(MB); el nuevo valor debe ser mayor que el valor existente.
Para especificar cómo debe crecer el archivo, haga clic en una de estas
opciones:
o Para permitir que el archivo actualmente seleccionado crezca cuando sea
necesario más espacio para los datos, haga clic en Crecimiento
automático del archivo.
o Para especificar que el archivo debe crecer en incrementos fijos, haga clic
en En megabytes y especifique un valor.
o Para especificar que el archivo debe crecer en un porcentaje de su
tamaño actual, haga clic en Por porcentaje y especifique un valor.
Page 43
Para especificar el límite de tamaño del archivo, haga clic en una de estas
opciones:
o Para que el archivo crezca tanto como sea necesario, haga clic en
Crecimiento de archivos sin restricciones.
Para especificar el tamaño máximo que se debe permitir que alcance el archivo, haga
clic en Restringir crecimiento de archivos (MB) y especifique un valor.
Page 44
GUIA PRACTICA NO.5
Realice los Ejercicios de la Guía anterior utilizando el Administrador Corporativo, para
que no exista conflictos con los nombres cámbielos cuando sea necesario.
Reducir la base de datos (Transact-SQL)
DBCC SHRINKDATABASE (T-SQL)
Reduce el tamaño de los archivos de datos de la base de datos especificada.
Sintaxis
DBCC SHRINKDATABASE ( nombreBaseDatos [, porcentajeFinal] [, {NOTRUNCATE | TRUNCATEONLY}] ) Argumentos
nombreBaseDatos
Es el nombre de la base de datos que se va a reducir. Los nombres de las bases de
datos se deben ajustar a las reglas para los identificadores. porcentajeFinal
Es el porcentaje de espacio libre que se desea dejar en el archivo de la base de datos
después de reducir la base de datos.
NOTRUNCATE
Hace que el espacio de archivos liberado se retenga en los archivos de base de datos.
Si no se especifica, el espacio liberado del archivo pasa al sistema operativo.
TRUNCATEONLY
Hace que se libere cualquier espacio no utilizado de los archivos de datos para su
utilización por el sistema operativo y reduce el archivo a la última magnitud asignada, lo
que reduce el tamaño del archivo sin mover los datos. No se vuelven a asignar las
Page 45
páginas desasignadas. Cuando se utiliza TRUNCATEONLY, no se tiene en cuenta
porcentajeFinal.
Suponga que una base de datos llamada mydb tiene dos archivos de datos y dos
archivos de registro. El tamaño de los archivos de datos y de registro es de 10 MB. El
primer archivo de datos contiene 6 MB.
En cada archivo, SQL Server calcula el tamaño final, que es tamaño al que se va a
reducir el archivo. Cuando DBCC SHRINKDATABASE se especifica con
porcentajeFinal, SQL Server calcula el tamaño final para que quede porcentajeFinal de
espacio libre en el archivo tras la reducción. Por ejemplo, si especifica un
porcentajeFinal de 25 para reducir mydb. SQL Server calcula el tamaño final del
archivo como 8 MB (6 MB de datos más 2 MB de espacio libre). Por tanto, SQL Server
pasa los datos de los últimos 2 MB del archivo de datos al espacio libre de los primeros
8 MB del archivo de datos y, a continuación, reduce el archivo.
Suponga que el primer archivo de datos de mydb contiene 7 MB de datos. La
especificación de porcentajeFinal como 30 permite que este archivo de datos sea
reducido y mantenga un porcentaje de espacio libre del treinta por ciento. Sin embargo,
la especificación de porcentajeFinal como 40 no reduce el archivo de datos porque
SQL Server no comprime un archivo a un tamaño menor que el ocupado por los datos.
Este aspecto también se puede ver de otro modo: cuarenta por ciento de espacio libre
más setenta por ciento de datos en el archivo (7 MB de 10 MB) es mayor que cien por
ciento. Como el porcentaje de espacio libre deseado más el porcentaje actual ocupado
por los datos supera el cien por ciento (un diez por ciento más), con un porcentajeFinal
superior a treinta no se reducirá el archivo de datos.
En los archivos de registro, SQL Server utiliza porcentajeFinal para calcular el tamaño
final de todo el registro de forma que porcentajeFinal sea la cantidad de espacio libre
del registro después de la operación de reducción. El tamaño final de todo el registro se
traduce, entonces, en el tamaño final de cada archivo de registro. Al contrario que los
archivos de datos, la reducción de los archivos de registro no es inmediata. Cada
archivo de registro se marca con el tamaño final de la operación de reducción. Las
Page 46
siguientes operaciones de copia de seguridad o truncamiento del registro intentan
reducir el tamaño del archivo y dejarlo en el valor más próximo posible al tamaño final.
Como un archivo de registro sólo puede reducirse al límite de un archivo de registro
virtual, puede que no sea posible reducirlo a un tamaño menor que el de un archivo de
registro virtual, aunque no esté siendo utilizado. Por ejemplo, una base de datos con un
archivo de registro de 1 GB puede hacer que el archivo de registro quede reducido a
sólo 128 MB.
El tamaño final de los archivos de datos y de registro calculado por DBCC
SHRINKDATABASE nunca puede ser menor que el tamaño mínimo de un archivo. El
tamaño mínimo de un archivo es el tamaño especificado cuando se creó el archivo, o el
último tamaño establecido explícitamente mediante una operación de modificación del
tamaño del archivo, como ALTER DATABASE con la opción MODIFY FILE o DBCC
SHRINKFILE. Por ejemplo, si al ejecutar CREATE DATABASE se especificó que el
tamaño de todos los archivos de datos y de registro de mydb fuera 10 MB, el tamaño
mínimo de cada archivo es 10 MB. DBCC SHRINKDATABASE no puede reducir
ninguno de los archivos a un tamaño menor que 10 MB. Si el tamaño de uno de los
archivos ha sido aumentado explícitamente a 20 MB mediante ALTER DATABASE con
la opción MODIFY FILE, el nuevo tamaño mínimo del archivo es 20 MB. Para reducir el
tamaño de un archivo a un tamaño menor que su tamaño mínimo, utilice DBCC
SHRINKFILE y especifique el nuevo tamaño. La ejecución de DBCC SHRINKFILE hace
que el tamaño mínimo del archivo sea el nuevo tamaño especificado.
Cuando se utilizan archivos de datos, DBCC SHRINKDATABASE tiene las opciones
NOTRUNCATE y TRUNCATEONLY. Ambas opciones no tienen efecto en los archivos
de registro. DBCC SHRINKDATABASE sin opciones es equivalente a DBCC
SHRINKDATABASE con la opción NOTRUNCATE seguida de DBCC
SHRINKDATABASE con la opción TRUNCATEONLY.
La opción NOTRUNCATE, con o sin la especificación de porcentajeFinal, ejecuta las
operaciones de paso de datos de DBCC SHRINKDATABASE, incluido el paso de las
páginas asignadas del final del archivo a páginas no asignadas del principio del
Page 47
archivo. Sin embargo, el espacio libre del final del archivo no se devuelve al sistema
operativo y el tamaño físico del archivo no cambia. Por tanto, cuando se especifica la
opción NOTRUNCATE, no parece que los archivos de datos se hayan reducido. Por
ejemplo, suponga que está utilizando de nuevo la base de datos mydb. mydb tiene
dos archivos de datos y dos archivos de registro. El tamaño del segundo archivo de
datos y el segundo archivo de registro es de 10 MB. Cuando se ejecuta DBCC
SHRINKDATABASE mydb NOTRUNCATE, Microsoft® SQL Server™ pasa los datos
de las últimas páginas a las primeras páginas del archivo de datos. Sin embargo, el
tamaño del archivo sigue siendo 10 MB.
La opción TRUNCATEONLY devuelve el espacio libre del final del archivo al sistema
operativo. Sin embargo, TRUNCATEONLY no mueve páginas dentro del archivo, o los
archivos. El archivo especificado sólo queda reducido hasta la última extensión
asignada. Si se especifica la opción TRUNCATEONLY, no se tiene en cuenta
porcentajeFinal.
La base de datos no puede ser menor que el tamaño de la base de datos model.
La base de datos que se comprime no tiene que estar en modo de usuario único, otros
usuarios pueden estar trabajando en la base de datos cuando ésta se está reduciendo.
Esto incluye las bases de datos del sistema.
Conjuntos de resultados
Cuando sólo se especifica el nombre de la base de datos, DBCC SHRINKDATABASE
devuelve este conjunto de resultados (conjunto de resultados correspondiente a pubs;
los valores pueden variar):
DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages ------ ------ ----------- ----------- ----------- -------------- 5 1 176 96 168 168 5 2 96 63 96 56 (2 row(s) affected)
Page 48
DBCC execution completed. If DBCC printed error messages, contact your system
administrator.
Nota SQL Server no presenta filas para los archivos que no se reducen.
Cuando se especifican el nombre de la base de datos y el porcentaje final (con o sin las
opciones NOTRUNCATE o TRUNCATEONLY), DBCC SHRINKDATABASE devuelve
este conjunto de resultados (conjunto de resultados para un porcentaje final de 5; los
valores pueden variar):
DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages ------ ------ ----------- ----------- ----------- -------------- 5 2 96 63 96 56 (1 row(s) affected)
DBCC execution completed. If DBCC printed error messages, contact your system
administrator.
Esta tabla describe las columnas del conjunto de resultados.
Nombre de
columna
Descripción
DbId (IdBD) Número de identificación de la base de
datos del archivo que SQL Server intentó
reducir.
FileId (IdArchivo) Número de identificación del archivo que
Page 49
SQL Server intentó reducir.
CurrentSize
(tamañoActual)
El número de páginas de 8 KB que el
archivo ocupa actualmente.
MinimumSize
(tamañoMínimo)
El número de páginas de 8 KB que el
archivo podría ocupar, como mínimo. Esto
corresponde al tamaño mínimo o tamaño
de creación original de un archivo.
UsedPages
(páginasUtilizadas)
El número de páginas de 8 KB que utiliza
actualmente el archivo.
EstimatedPages
(páginasEstimadas)
El número de páginas de 8 KB al que SQL
Server estima que se puede reducir el
archivo.
Ejemplos
En este ejemplo se reduce el tamaño de los archivos de la base de datos de usuario
UserDB para dejar un 10 por ciento de espacio libre en los archivos de UserDB.
DBCC SHRINKDATABASE (UserDB, 10)
GO
Para reducir un archivo de base de datos (Transact-SQL)
DBCC SHRINKFILE (T-SQL)
Reduce el tamaño del archivo de datos o de registro especificado de la base de datos
relacionada.
Sintaxis
Page 50
DBCC SHRINKFILE ( {nombreArchivo | IdArchivo } { [, tamañoFinal] | [, {EMPTYFILE | NOTRUNCATE | TRUNCATEONLY}]
} )
Argumentos
nombreArchivo
Es el nombre lógico del archivo que se va a reducir. Los nombres de los archivos se
deben ajustar a las reglas para los identificadores.
IdArchivo
Es el número de identificación (Id.) del archivo que se va a reducir. Para obtener el Id.
de un archivo, utilice la función FILE_ID o busque en sysfiles, en la base de datos
actual.
tamañoFinal
Es el tamaño deseado para el archivo, en megabytes, expresado como un número
entero. Si no se especifica, DBCC SHRINKFILE reduce el tamaño todo lo que sea
posible.
Cuando se especifica tamañoFinal, DBCC SHRINKFILE intenta reducir el archivo al
tamaño especificado. Las páginas utilizadas de la parte del archivo que se va a liberar
se vuelven a ubicar en el espacio libre disponible de la parte del archivo que se va a
mantener. Por ejemplo, si hay un archivo de datos de 10 MB, una instrucción DBCC
SHRINKFILE con un tamañoFinal de 8 hace que todas las páginas utilizadas de los
últimos 2 MB del archivo se asignen de nuevo a cualquiera de las ranuras libres
disponibles en los primeros 8 MB del archivo. DBCC SHRINKFILE no reduce un
archivo a un tamaño menor que el que se necesita para almacenar los datos en el
archivo. Por ejemplo, si se utilizan 7 MB de los 10 MB de un archivo de datos, una
Page 51
instrucción DBCC SHRINKFILE con un tamañoFinal de 6 sólo reduce el tamaño del
archivo a 7 MB, no a 6 MB.
EMPTYFILE
Migra todos los datos del archivo especificado a otros archivos del mismo grupo de
archivos. Microsoft® SQL Server™ ya no permite que se almacenen datos en el
archivo en el que se haya utilizado la opción EMPTYFILE. Esta opción permite que el
archivo se pueda quitar mediante la instrucción ALTER DATABASE.
NOTRUNCATE
Hace que el espacio de archivos liberado se retenga en los archivos.
Cuando se especifica NOTRUNCATE y tamañoFinal, el espacio liberado no se
devuelve al sistema operativo. El único efecto de DBCC SHRINKFILE consiste en
volver a ubicar las páginas utilizadas en la parte que esté por encima de tamañoFinal a
la parte inicial del archivo. Cuando no se especifica NOTRUNCATE, todo el espacio
liberado en el archivo se devuelve al sistema operativo.
TRUNCATEONLY
Hace que se libere cualquier espacio no utilizado de los archivos para su utilización por
el sistema operativo y reduce el archivo a la última magnitud asignada, lo que
disminuye el tamaño del archivo sin mover los datos. Cuando se utiliza
TRUNCATEONLY, no vuelven a asignarse las filas a páginas no asignadas. No se
tiene en cuenta tamañoFinal.
Observaciones
DBCC SHRINKFILE se aplica a los archivos de la base de datos actual. Cambie el
contexto a otra base de datos para ejecutar la instrucción DBCC SHRINKFILE en un
archivo de una base de datos concreta. La base de datos no puede ser menor que el
tamaño de la base de datos model.
Page 52
Utilice DBCC SHRINKFILE para reducir el tamaño de un archivo a uno menor que su
tamaño original. El tamaño mínimo de un archivo queda así restablecido al nuevo
tamaño especificado.
Para quitar los datos que pudiera contener el archivo, ejecute DBCC
SHRINKFILE(‘nombreArchivo’, EMPTYFILE) antes de ejecutar ALTER DATABASE.
La base de datos que se está reduciendo no tiene por qué estar en modo de usuario
único; otros usuarios pueden estar trabajando en la base de datos cuando el archivo se
está reduciendo. No es necesario ejecutar SQL Server en modo de usuario único para
reducir las bases de datos del sistema.
En los archivos de registro, SQL Server utiliza porcentajeFinal para calcular el tamaño
final de todo el registro de forma que porcentajeFinal sea la cantidad de espacio libre
del registro después de la operación de reducción. El tamaño final de todo el registro se
traduce, entonces, en el tamaño final de cada archivo de registro. Al contrario que los
archivos de datos, la reducción de los archivos de registro no es inmediata. Cada
archivo de registro se marca con el tamaño final de la operación de reducción. Las
siguientes operaciones de copia de seguridad o truncamiento del registro intentan
reducir el tamaño del archivo y dejarlo en el valor más próximo posible al tamaño final.
Como un archivo de registro sólo puede reducirse al límite de un archivo de registro
virtual, puede que no sea posible reducirlo a un tamaño menor que el de un archivo de
registro virtual, aunque no esté siendo utilizado. Por ejemplo, una base de datos con un
archivo de registro de 1 GB puede hacer que el archivo de registro quede reducido a
sólo 128 MB. Para obtener más información acerca de cuándo se produce el truncado,
consulte Truncar el registro de transacciones. Para obtener más información acerca de
cómo determinar los tamaños de los archivos de registro virtuales, consulte Archivos de
registro virtuales.
Conjuntos de resultados
DBCC SHRINKFILE devuelve este conjunto de resultados (los valores pueden variar):
DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages
Page 53
------ ------ ----------- ----------- ----------- -------------- 5 1 176 96 168 168 (1 row(s) affected)
DBCC execution completed. If DBCC printed error messages, contact your system
administrator.
Ejemplos
En este ejemplo se reduce el tamaño de un archivo llamado DataFil1 de la base de
datos de usuario UserDB a 7 MB.
USE UserDB GO DBCC SHRINKFILE (DataFil1, 7) GO Cómo reducir una base de datos (Administrador corporativo)
Expanda un grupo de servidores y, a continuación, expanda un servidor.
Expanda Bases de datos, haga clic con el botón secundario del mouse en la
base de datos que desea reducir, seleccione Todas las tareas y, a
continuación, haga clic en Reducir base de datos…
Para especificar cuánto va a reducir la base de datos, haga clic en una de
estas opciones:
o Reducir base de datos en un (%) y escriba el valor del porcentaje
del tamaño actual de la base de datos que ésta se reduce.
o Quitar tanto espacio libre como sea posible para reducir la base
de datos tanto como sea posible.
o Opcionalmente, seleccione Comprobar periódicamente si se
puede reducir el espacio en disco de la base de datos para
permitir que la base de datos se reduzca automáticamente a
intervalos periódicos.
Page 55
Cómo cambiar la configuración de una base de datos (Administrador corporativo)
Expanda un grupo de servidores y, a continuación, expanda un servidor.
Expanda Bases de datos, haga clic con el botón secundario del mouse en la
base de datos que va a cambiar y, a continuación, haga clic en Propiedades.
Haga clic en la ficha Opciones, y active o desactive las opciones de
configuración que desea cambiar.
Page 56
GUIA PRACTICA NO.6
1. Haga una Base datos “PruebaDB” con las Siguientes especificaciones :
Archivo Físico de Datos : C:\Datos\datos.mdf
Nombre Lógico : Datos Tamaño : 2MB Auto Crecimiento del 10% Archivo Físico de Transacciones : C:\Log\log.ldf Nombre Lógico : Log Tamaño: 2MB
2. Usando el Analizador de Consultas, conectarse a la Base de Datos Pubs, realice
la siguiente sentencia SQL :
Select * From Titles Into PruebasDB.dbo.NewTitles
3. Verifique el espacio usado y disponible de la Base de Datos PruebaDB.
4. Repita el Ejercicio No.2
5. Obtenga nuevamente los datos del espacio usado y disponible de la Base de
Datos.
6. Reduzca el tamaño de la Base de Datos
7. Verifique los cambios.
8. Repita los ejercicios del No.2 en adelante nada más que ahora reduzca el
espacio del Archivo de Datos
Eliminar una base de datos (Transact-SQL)
Puede eliminar una base de datos cuando ya no se necesite o si se ha movido a otra
base de datos o servidor. Cuando se elimina una base de datos, los archivos y sus
datos son eliminados del disco del servidor. Una vez eliminada una base de datos, la
eliminación es permanente y no podrá recuperarla si no utiliza una copia de seguridad
previa a la eliminación.
Es recomendable que realice una copia de seguridad de la base de datos master
después de que se elimine la base de datos, ya que, al eliminarse una base de datos,
Page 57
se actualizan las tablas del sistema en master. Si es necesario restaurar la base de
datos master, cualquier base de datos que haya sido eliminada después de la última
copia de seguridad de master seguirá teniendo referencias en las tablas del sistema y
puede dar lugar a la aparición de mensajes de error.
DROP DATABASE (T-SQL)
Quita una o más bases de datos de Microsoft® SQL Server™. Al quitar una base de
datos se eliminan la base de datos y los archivos de disco que utiliza.
Sintaxis
DROP DATABASE nombreBaseDatos [,…n]
Argumentos
nombreBaseDatos
Especifica el nombre de la base de datos que se va a quitar. Ejecute sp_helpdb desde
la base de datos master para ver una lista de bases de datos.
Observaciones
El contexto de base de datos de la conexión debe estar en la base de datos master
para que se pueda utilizar DROP DATABASE.
En SQL Server versión 7.0, DROP DATABASE quita las bases de datos dañadas que
se han marcado como sospechosas. DROP DATABASE quita la base de datos
especificada a menos que se haya marcado como OFFLINE.
Sólo puede volver a crear una base de datos eliminada si restaura una copia de
seguridad. No puede quitar una base de datos que se esté utilizando actualmente (que
un usuario ha abierto para lectura o escritura). Siempre que se quita una base de
datos, se debe realizar una copia de seguridad de la base de datos master.
Page 58
Permisos
Los permisos de DROP DATABASE son los predeterminados del propietario de la base
de datos y de los miembros de la función fija de servidor sysadmin, y no se pueden
transferir.
Ejemplos
Quitar una única base de datos
Este ejemplo quita todas las referencias a la base de datos publishing de las tablas
del sistema.
DROP DATABASE publishing
Quitar varias bases de datos
Este ejemplo quita todas las referencias a todas las bases de datos enumeradas de las
tablas del sistema.
DROP DATABASE pubs, newpubs
Cómo eliminar una base de datos (Administrador corporativo)
Expanda un grupo de servidores y, a continuación, expanda un servidor.
Expanda Bases de datos, haga clic con el botón secundario del mouse en la
base de datos que desea eliminar y, a continuación, haga clic en Eliminar.
Confirme la eliminación.
Page 60
GUIA PRACTICA NO.7
Eliminar todas las Bases de Datos creadas en los ejercicios anteriores de la Guía No.1
a la Guía No.6
4. TIPOS DE DATOS
Objetivo:
Al finalizar el tema, el participante será capaz de describir los diferentes Tipos de Datos
empleados para crear Tablas
En Microsoft® SQL Server™, cada columna, variable local, expresión y parámetro tiene
un tipo de datos. El conjunto de tipos de datos suministrados por el sistema se muestra
debajo. Los tipos de datos definidos por el usuario, que son alias de los tipos de datos
suministrados por el sistema, pueden también definirse.
Enteros
BIT
Datos enteros con valor 1 ó 0.
int
Datos enteros (números enteros) comprendidos entre -231 (-2.147.483.648) y 231 - 1
(2.147.483.647).
smallint
Datos enteros comprendidos entre 215 (-32.768) y 215 - 1 (32.767).
tinyint
Page 61
Datos enteros comprendidos 0 y 255.
Decimales y numéricos
decimal
Datos de precisión y escala numérica fijas comprendidos entre -1038 -1 y 1038 -1.
numeric
Sinónimo de decimal.
money
Valores de moneda comprendidos entre -263 (-922.337.203.685.477,5808) y 263 - 1
(+922.337.203.685.477,5807), con una precisión de una diezmilésima de la unidad
monetaria.
smallmoney
Valores de moneda comprendidos entre -214.748,3648 y +214.748,3647, con una
precisión de una diezmilésima de la unidad monetaria.
Numéricos con aproximación
float
Números con precisión de coma flotante comprendidos entre -1,79E + 308 y 1,79E +
308.
real
Números con precisión de coma flotante comprendidos entre -3,40E + 38 y 3,40E + 38.
Fechas
datetime
Page 62
Datos de fecha y hora comprendidos entre el 1 de enero de 1753 y el 31 de diciembre
de 9999, con una precisión de un trescientosavo de segundo, o 3,33 milisegundos.
smalldatetime
Datos de fecha y hora comprendidos entre el 1 de enero de 1900 y el 6 de junio de
2079, con una precisión de un minuto.
timestamp
Es un número único para toda la base de datos.
uniqueidentifier
Un identificador exclusivo global (GUID).
Cadenas de caracteres
char
Datos de caracteres no Unicode de longitud fija con una longitud máxima de 8.000
caracteres.
varchar
Datos no Unicode de longitud variable con un máximo de 8.000 caracteres.
text
Datos no Unicode de longitud variable con una longitud máxima de 231 - 1
(1.147.483.647) caracteres.
Cadenas de caracteres Unicode
nchar
Page 63
Datos Unicode de longitud variable con una longitud máxima de 4.000 caracteres.
nvarchar
Datos Unicode de longitud variable con una longitud máxima de 4.000 caracteres.
sysname es el tipo de datos suministrado por el sistema y definido por el usuario que
es sinónimo de nvarchar(128) y que se utiliza para hacer referencia a nombres de
objetos de bases de datos.
ntext
Datos Unicode de longitud variable con una longitud máxima de 230 - 1 (1.073.741.823)
caracteres.
Cadenas binarias
binary
Datos binarios de longitud fija con una longitud máxima de 8.000 bytes.
varbinary
Datos Unicode de longitud variable con una longitud máxima de 8.000 bytes.
Image
Datos binarios, solo soporte de herencia de SQL Server 2000. En su lugar se utiliza
varbinary(max) .
Table
Se utiliza principalmente para trabajar con conjuntos de resultados, normalmente para
pasar uno de una función definida por el usuario. No se utiliza como tipo de datos
dentro de una definición de tabla.
Sql_variant
Page 64
Esta ligeramente relacionada con el tipo Variant en VB y C++, básicamente se trata de
un contenedor que nos permite alojar otros tipos de datos de SQL Server en el, lo que
significa que podemos utilizarlo cuando una columna o una función tenga que tratar con
múltiples tipos de datos.
XML
Define un campo de caracteres para datos XML. Proporciona la validación de los datos
frente a un esquema XML y el uso de funciones especiales orientadas a XML.
Page 65
Para crear tipos de datos definidos por el usuario (Transact-SQL)
sp_addtype (T-SQL)
Crea un tipo de datos definido por el usuario.
Sintaxis
sp_addtype [@typename =] tipo,
[@phystype =] tipoDatosSistema
[, [@nulltype =] 'tipoNull']
Argumentos
[@typename =] tipo
Es el nombre del tipo de datos definido por el usuario. Los nombres de los tipos de
datos tienen que seguir las reglas de los identificadores y deben ser únicos en cada
base de datos. El argumento tipo es del tipo de datos sysname y no tiene valor
predeterminado.
[@phystype =] tipoDatosSistema
Es el tipo de datos físico, o proporcionado por Microsoft® SQL Server™, (decimal, int,
etc.) en el que se basa el tipo de datos definido por el usuario. El argumento
tipoDatosSistema es de tipo sysname, no tiene valor predeterminado y puede ser uno
de estos valores:
‘binary(n)’ image smalldatetime
bit int smallint
‘char(n)’ ‘nchar(n)’ text
datetime ntext tinyint
Page 66
decimal numeric uniqueidentifier
‘decimal[(p[, s])]’ ‘numeric[(p[, s])]’ ‘varbinary(n)’
float ‘nvarchar(n)’ ‘varchar(n)’
‘float(n)’ real
Se requieren comillas para delimitar los parámetros que tengan espacios o signos de
puntuación incrustados. Para obtener más información acerca de los tipos de datos
disponibles, consulte Tipos de datos.
Ejemplos
Crear un tipo de datos definido por el usuario que no admita valores NULL
Este ejemplo crea un tipo de datos definido por el usuario llamado ssn (número de la
seguridad social) que está basado en el tipo de datos varchar de SQL Server. El tipo
de datos ssn se utiliza en columnas que almacenan números de la seguridad social de
11 cifras (999-99-9999). La columna no puede ser NULL.
Observe que varchar(11) está entre comillas simples porque contiene signos de
puntuación (paréntesis).
USE master
EXEC sp_addtype ssn, 'VARCHAR(11)', 'NOT NULL'
Crear un tipo de datos definido por el usuario que admita valores NULL
Este ejemplo crea un tipo de datos definido por el usuario (basado en el tipo de datos
datetime) llamado birthday que permite valores NULL.
Page 67
USE master
EXEC sp_addtype birthday, datetime, 'NULL'
Crear tipos de datos definidos por el usuario adicional
Este ejemplo crea dos tipos de datos definidos por el usuario adicional, telephone y
fax, para números de teléfono y fax locales e internacionales.
USE master
EXEC sp_addtype telephone, 'varchar(24)', 'NOT NULL'
EXEC sp_addtype fax, 'varchar(24)', 'NULL'
Cómo crear tipos de datos definidos por el usuario (Administrador corporativo)
Expanda un grupo de servidores y, a continuación, expanda un servidor.
Expanda Bases de datos y la base de datos en la que desea crear el tipo de
datos definido por el usuario.
Expanda la carpeta programmability (programación) y luego Expanda Type
(Tipos)
Haga clic con el botón secundario del mouse en la opción User-Defined Data
Types (Tipos de Datos definidos por Usuario).
Page 68
Opcionalmente, en las listas Regla y Predeterminado, seleccione una regla o un valor
predeterminado, si lo hay, para enlazar con el tipo de datos definido por el usuario.
Para eliminar tipos de datos definidos por el usuario (Transact-SQL)
sp_droptype (T-SQL)
Elimina un tipo de datos definido por el usuario, tomado de systypes.
Sintaxis
sp_droptype [@typename =] 'tipo'
Page 69
Argumentos
[@typename =] 'tipo'
Es el nombre del tipo de datos definido por el usuario del que usted es propietario. tipo
es de tipo sysname y no tiene valor predeterminado.
USE master
EXEC sp_droptype 'birthday'
Para eliminar un tipo de datos definido por el usuario (Administrador
Corporativo)
Expanda un grupo de servidores y, a continuación, expanda un servidor.
Expanda Bases de datos y la base de datos en la que desea crear el tipo de
datos definido por el usuario.
Expanda la carpeta programmability (programación) y luego Expanda Type
(Tipos)
Expanda la opción User-Defined Data Types (Tipos de Datos definidos por
Usuario).
Elija el tipo de dato y Haga clic con el botón secundario del mouse y de clic en
Eliminar
Page 70
5. CREACION DE TABLAS
Objetivo:
Al finalizar el tema, el participante será capaz de crear tablas con las opciones básicas,
Modificar la estructura de la Tabla y Eliminar Tablas.
Diseñar tablas
Cuando diseñe una base de datos, deberá decidir qué tablas necesita, qué tipo de
datos van destinados a cada tabla, quién puede tener acceso a cada tabla, etc. Cuando
cree tablas y trabaje con ellas, seguirá tomando decisiones más específicas acerca de
las mismas.
Page 71
El método más eficiente para crear una tabla consiste en definir todo lo que se necesita
en la tabla al mismo tiempo, incluidas las restricciones para los datos y los
componentes adicionales. No obstante, también puede crear una tabla básica, agregar
algunos datos y trabajar con la tabla durante algún tiempo. Así, tendrá ocasión de ver
cuáles son los tipos de transacciones más habituales y qué tipos de datos se utilizan
con más frecuencia antes de confirmar un diseño más estable que incluya
restricciones, índices, valores predeterminados, reglas y otros objetos.
Puede ser una buena idea que esboce sus planes en papel antes de crear una tabla y
sus objetos. Entre las decisiones que deben tomarse, se incluyen:
Los tipos de datos que debe contener la tabla.
Las columnas de la tabla y los tipos de datos para cada columna (así como su
longitud, si es preciso).
Qué columnas aceptan valores NULL.
Si deben utilizarse (y cuándo) restricciones o valores predeterminados y reglas.
Los tipos de índices necesarios, dónde se necesitan y qué columnas son claves
principales y claves externas.
Creación de una Tabla utilizando Transact-SQL
Después de determinar el diseño de la base de datos, se puede crear las tablas en las
que se vayan a almacenar los datos. Los datos suelen almacenarse en tablas
permanentes. Las tablas se almacenan en los archivos de la base de datos hasta que
son eliminadas y están disponibles para cualquier usuario que cuente con los permisos
correspondientes.
Tablas temporales
También puede crear tablas temporales. Las tablas temporales son similares a las
permanentes, salvo por el hecho de que las tablas temporales se almacenan en
tempdb y se eliminan automáticamente cuando ya no se utilizan.
Page 72
Los dos tipos de tablas temporales, las locales y las globales, difieren en cuanto a sus
nombres, visibilidad y vida útil. Las tablas temporales locales presentan un solo signo
de número (#) como primer carácter del nombre; son visibles únicamente para la
conexión actual del usuario y se eliminan cuando el usuario se desconecta de los
equipos en los que se ejecuta Microsoft® SQL Server™. Las tablas temporales
globales presentan dos signos de número (##) antes del nombre, son visibles para
cualquier usuario después de su creación y se eliminan cuando todos los usuarios que
hacen referencia a la tabla se desconectan de SQL Server.
Por ejemplo, si crea una tabla denominada empleados, puede ser utilizada por
cualquier persona que cuente con los correspondientes permisos de seguridad
establecidos para la base de datos hasta que la tabla sea eliminada. Si crea una tabla
temporal local denominada #empleados, usted es la única persona que puede trabajar
con la tabla, y se elimina cuando se desconecta. Si crea una tabla temporal global
denominada ##empleados, cualquier usuario de la base de datos puede trabajar con
esta tabla. Si ningún otro usuario trabaja con esta tabla después de que la cree, la tabla
se elimina cuando se desconecte. Si otro usuario trabaja con la tabla después de que la
cree, SQL Server la elimina cuando los dos se desconectan.
Propiedades de la tabla
Puede definir hasta 1.024 columnas por tabla. Los nombres de las tablas y de las
columnas deben seguir las reglas para los identificadores; tienen que ser únicos dentro
de una tabla determinada, pero puede utilizar el mismo número de columna en distintas
tablas de la misma base de datos. También debe definir un tipo de datos para cada
columna.
Aunque los nombres de las tablas tienen que ser únicos para cada propietario de una
base de datos, puede crear varias tablas con el mismo nombre si especifica distintos
propietarios para cada tabla. Puede crear dos tablas denominadas empleados y
designar a Juan como propietario de una y a Sara como propietaria de otra. Cuando
necesite trabajar con una de las tablas de empleados, puede distinguir las tablas si
especifica el propietario con el nombre de la tabla.
Page 73
Creación de Tablas (Transact-SQL)
CREATE TABLE [database_name.[owner].]table_name (<column name> <data type> [[DEFAULT <constant expression>]
|[IDENTITY [(seed, increment) [NOT FOR REPLICATION]]]] [ROWGUIDCOL] [COLLATE <collation name>] [NULL|NOT NULL] [<column constraints>] |[column_name AS computed_column_expression] |[<table_constraint>] [,...n]
) [ON {<filegroup>|DEFAULT}] [TEXTIMAGE_ON {<filegroup>|DEFAULT}]
TIPO DE DATOS
Describe el tipo de dato que se le asignara a la columna de la tabla que se creará
DEFAULT
Es el valor que tendrá que utilizar cualquier fila insertada sin un valor suministrado por
el usuario para la columna en concreto. El valor predeterminado, si lo utiliza, debe
seguir inmediatamente al tipo de datos.
IDENTITY
El concepto del valor de identidad es muy importante en el diseño de una base de
datos. Con una columna de identidad SQL Server asigna automáticamente un numero
de serie a la columna en cada fila insertada.
NOT FOR REPLICATION
Este argumento tiene que ver directamente con las replicas. Una réplica es el proceso
que realiza automáticamente lo que, es un sentido muy amplio, equivale a copiar parte
Page 74
o toda la información de una base de datos en otra base de datos. La otra base de
datos puede estar en el mismo servidor o puede encontrarse ubicado en un sitio
remoto.
ROWGUIDCOL
Es bastante parecido a una columna de identidad ya que normalmente se utiliza para
identificar de forma única a cada fila de una tabla. La diferencia reside en las longitudes
que utiliza el sistema para asegurarse de que el valor utilizado es realmente único.
COLLATE
Este parámetro funciona igual al comando CREATE DATABESE, estando su diferencia
principal en el ámbito (aquí se define a nivel de columna en lugar de a nivel de base de
datos).
NULL|NOT NULL
Este parámetro es muy sencillo: establece si la columna en cuestión acepta o no
valores NULL. El valor predeterminado, cuando instalamos SQL Server por primera
vez, es establecer una columna en NOT NULL si no se especifica la aceptación de
valores NULL.
Column constraints
Se trata de restricciones y reglas que se incluyen en columnas individuales sobre los
datos que se pueden insertar en dichas columnas.
Page 75
ON
Es la forma de establecer en que grupo de archivos (y, por consiguiente, dispositivos
físicos) estará definida la tabla.
TEXTIMAGE_ON
Esta clausula es básicamente igual a ON pero nos permite mover una parte muy
específica de la tabla a un grupo de archives diferentes. Esta clausula solo es válida si
la definición de la tabla incluye una columna text, ntext o image.
Ejemplo:
CREATE TABLE CLIENTES ( CODIGO int IDENTITY NOT NULL, NOMBRE varchar(30) NOT NULL, DIRECCION1 varchar(30) NOT NULL, DIRECCION2 varchar(30) NOT NULL, CIUDAD varchar(20) NOT NULL, CONTACTO varchar(25) NOT NULL, TELEFONO char(15) NOT NULL, EMAIL varchar(50) NULL )
Page 76
GUIA PRACTICA NO.8
Para esta guía, desarrolle cada uno de los requerimientos usando el analizador
de consultas
1. Crear una Base de Datos “Inventarios”, el Archivo de Datos ubicarlo en C:\Datos
de 2MB y tamaño máximo de 5MB con autocrecimiento del 10%, para el archivo
de transacciones ubicarlo en C:\Log de 2MB con tamaño máximo de 5MB y con
autocrecimiento de 10%.
2. Se crearan las Tablas para implementar un Sistema de Inventarios, se registrara
la siguiente información :
PRODUCTOS
Código del Producto Descripción Costo Unitario Costo Alterno Existencia Mínima Estado del Producto Clase Marca Familia SubFamilia
BODEGAS
Código de Bodega Descripción Responsable Dirección (Acepta Nulos) Estado de la Bodega
UBICACIONES
Código de Bodega Código de Ubicación Descripción Ubicación
Page 77
Estado de la Ubicación
EXISTENCIAS
Código de Bodega Código de Ubicación Código de Producto Cantidad Disponible Cantidad Reservada
PROVEEDORES
Código Proveedor Nombre Proveedor Estado Proveedor Número de Registro Giro del Negocio Nit
PRODUCTOS_PROVEEDOR
Código proveedor Código Producto
MOV_INVENTARIO_ENC
Código Movimiento Número Movimiento Fecha Movimiento Observaciones
MOV_INVENTARIO_DET
Código Movimiento Número Movimiento
Page 78
Código Producto Código Bodega Código Ubicación Cantidad movimiento Costo Unitario
Cómo crear una tabla (Administrador corporativo)
Para crear una tabla
Expanda un grupo de servidores y, a continuación, expanda un servidor.
Expanda Bases de datos y la base de datos en la que se va a crear la tabla.
Haga clic con el botón secundario del mouse en Tablas y, a continuación, haga
clic en Nueva tabla...
Complete las columnas como corresponda. Cada fila representa una columna de
la tabla.
En la opción propiedades digite el nombre de la tabla y elija el grupo de archivos
en el cual se guardara la tabla a crear.
Page 80
GUIA PRACTICA NO.9
1. Crear una Base de Datos “InventariosAdmin” con las mismas especificaciones
que en la Guía Anterior.
2. Desarrollar las mismas tablas que la Guía Anterior pero utilizando el
Administrador Corporativo.
Page 81
Modificar tablas
Después de crear una tabla, puede cambiar muchas de las opciones que fueron
definidas para la tabla cuando se creó originalmente; por ejemplo, es posible:
Agregar, modificar o eliminar columnas. Por ejemplo, se puede cambiar el
nombre, la longitud, el tipo de datos, la precisión, la escala y la aceptación de
valores NULL de la columna, aunque hay algunas restricciones.
Para cambiar el nombre de una tabla (Transact-SQL)
sp_rename (T-SQL)
Cambia el nombre de un objeto creado por el usuario (por ejemplo, una tabla, columna
o tipo de datos definido por el usuario) en la base de datos actual.
Sintaxis
sp_rename [@objname =] 'nombreObjeto', [@newname =] 'nuevoNombre' [, [@objtype =] 'tipoObjeto']
Argumentos
[@objname =] 'nombreObjeto'
Es el nombre actual del objeto de usuario (tabla, vista, procedimiento almacenado,
desencadenador, valor predeterminado, base de datos, objeto o regla) o tipo de datos.
Si el objeto cuyo nombre se va a cambiar es una columna de una tabla, nombreObjeto
debe tener la forma tabla.columna. Si el objeto cuyo nombre se va a cambiar es un
índice, nombreObjeto debe tener la forma tabla.índice. nombreObjeto es de tipo
nvarchar(776) y no tiene un valor predeterminado.
[@newname =] 'nuevoNombre'
Page 82
Es el nuevo nombre del objeto especificado. nuevoNombre debe ser un nombre con
una parte y debe cumplir las reglas de los identificadores. nuevoNombre es de tipo
sysname y no tiene un valor predeterminado.
Cómo cambiar el nombre de una tabla (Administrador corporativo)
Expanda un grupo de servidores y, a continuación, expanda un servidor.
Expanda Bases de datos, la base de datos a la que pertenece la tabla y, a
continuación, haga clic en Tablas.
Haga clic con el botón secundario del mouse en la tabla y, a continuación, haga
clic en Cambiar nombre.
Escriba el nuevo nombre de la tabla.
Confirme el cambio del nombre.
Page 83
Modificar las propiedades de una columna
Cada columna de una tabla tiene una serie de propiedades tales como el nombre, el
tipo de datos, la aceptación de valores Null y la longitud de los datos. El conjunto de
propiedades de una columna constituye la definición de la columna en una tabla.
Las propiedades de una columna pueden especificarse directamente en una tabla de la
base de datos mediante un diagrama de la base de datos. Para crear una tabla en la
base de datos, se necesitan tres propiedades de columna:
Nombre de columna
Tipo de datos
Longitud de los datos
Se puede modificar las propiedades de una columna mediante un cambio de nombre,
la modificación de su longitud, la especificación de un valor predeterminado, etc.
Para establecer las propiedades de una columna (Transact-SQL)
ALTER TABLE (T-SQL)
La necesidad más común es cuando se tendrá que cambiar la estructura de una tabla,
que puede variar desde cosas sencillas, como añadir una nueva columna, hasta temas
más complejos, como cambiar un tipo de datos.
Sintaxis
ALTER TABLE table_name {[ALTER COLUMN <column_name>
{ [<schema of new data type>].<new_data_type> [(precision [, scale])] max | <xml schema collection>
[COLLATE <collation_name>] [NULL|NOT NULL]
Page 84
|[{ADD|DROP} ROWGUIDCOL] | PERSISTED}] |ADD
<column name> <data_type> [[DEFAULT <constant_expression>] |[IDENTITY [(<seed>, <increment>) [NOT FOR REPLICATION]]]] [ROWGUIDCOL] [COLLATE <collation_name>] [NULL|NOT NULL] [<column_constraints>] |[<column_name> AS <computed_column_expression>]
|ADD [CONSTRAINT <constraint_name>] {[{PRIMARY KEY|UNIQUE} [CLUSTERED|NONCLUSTERED] {(<column_name>[ ,...n ])} [WITH FILLFACTOR = <fillfactor>] [ON {<filegroup> | DEFAULT}] ]
|FOREIGN KEY [(<column_name>[ ,...n])] REFERENCES <referenced_table> [(<referenced_column>[ ,...n])] [ON DELETE {CASCADE|NO ACTION}] [ON UPDATE {CASCADE|NO ACTION}] [NOT FOR REPLICATION]
|DEFAULT <constant_expression> [FOR <column_name>]
|CHECK [NOT FOR REPLICATION] (<search_conditions>)
[,...n][ ,...n] |[WITH CHECK|WITH NOCHECK]
| { ENABLE | DISABLE } TRIGGER { ALL | <trigger name> [ ,...n ] } |DROP
{[CONSTRAINT] <constraint_name> |COLUMN <column_name>}[ ,...n] |{CHECK|NOCHECK} CONSTRAINT {ALL|<constraint_name>[ ,...n]} |{ENABLE|DISABLE} TRIGGER {ALL|<trigger_name>[ ,...n]} | SWITCH [ PARTITION <source partition number expression> ] TO [ schema_name. ] target_table [ PARTITION <target partition number expression> ]
}
Page 85
Ejemplos
Alterar una tabla para agregar una nueva columna
El ejemplo siguiente agrega una columna que permite valores nulos y a la que no se
han proporcionado valores mediante una definición DEFAULT. Cada fila tendrá un valor
NULL en la nueva columna.
CREATE TABLE doc_exa ( column_a INT) GO ALTER TABLE doc_exa ADD column_b VARCHAR(20) NULL GO EXEC sp_help doc_exa GO DROP TABLE doc_exa GO
Alterar una table para modificar el tipo de dato de una columna
El ejemplo siguiente modifica una tabla cambiando el tipo de dato de una columna
ALTER TABLE dbo.Products ALTER COLUMN Discontinued int CONSTRAINT DF_Products_Discontinued DEFAULT 0 NOT NULL GO Alterar una tabla para quitar una columna
El ejemplo siguiente modifica una tabla para quitar una columna.
CREATE TABLE doc_exb ( column_a INT, column_b VARCHAR(20) NULL) GO ALTER TABLE doc_exb DROP COLUMN column_b GO EXEC sp_help doc_exb GO DROP TABLE doc_exb GO
Page 86
Cómo ver las propiedades de las columnas (Administrador corporativo)
Expanda un grupo de servidores y, a continuación, expanda un servidor.
Expanda Bases de datos, la base de datos a la que pertenece la tabla y, a
continuación, haga clic en Tablas.
En el panel de detalles, haga clic con el botón secundario del mouse en la tabla
y, a continuación, haga clic en Modificar.
Page 87
GUIA PRACTICA NO.10
Para tener un mayor control de las operaciones realizadas sobre la Base de
Datos “Inventario” (Creada en la Guía Anterior) se ha decido agregar a todas
las tablas dos columnas para registrar el usuario de Modificación y la Fecha
en que se realizó la modificación. Modifique todas las Tablas para agregar:
USUARIO_MODIFICACIÓN varchar(10)
FECHA_MODIFICACIÓN datetime
Eliminar una tabla
En determinadas ocasiones, necesitará eliminar una tabla (por ejemplo, cuando desee
implementar un nuevo diseño o liberar espacio en la base de datos). Cuando elimine
una tabla, la definición de su estructura, sus datos, índices de texto, restricciones e
índices se eliminan permanentemente de la base de datos y el espacio anteriormente
utilizado para almacenar la tabla y sus índices queda disponible para otras tablas.
Puede quitar explícitamente una tabla temporal si no desea esperar a que se quite
automáticamente.
Para Eliminar una tabla (Transact-SQL)
DROP TABLE (T-SQL)
Quita una definición de tabla y todos los datos, índices, desencadenadores,
restricciones y especificaciones de permisos de la tabla.
Sintaxis
DROP TABLE nombreTabla
Argumentos
nombreTabla
Page 88
Es el nombre de la tabla que se va a quitar.
Cómo eliminar una tabla (Administrador corporativo)
Expanda un grupo de servidores y, a continuación, expanda un servidor.
Expanda Bases de datos, la base de datos a la que pertenece la tabla y, a
continuación, haga clic en Tablas.
En el panel de detalles, haga clic con el botón secundario del mouse en la tabla
que desea eliminar y, a continuación, haga clic en Eliminar.
Para ver cómo va a afectar la eliminación de esta tabla a la base de datos, haga
clic en Mostrar dependencias…
Page 89
6. INTEGRIDAD DE DATOS (RESTRICCIONES)
Objetivo:
Al finalizar el tema, el participante será capaz de aplicar validaciones de datos sobre
Tablas y relacionar las tablas entre sí.
Una restricción es una limitación. Situada en cualquier columna o tabla, una restricción
asegura que nuestros datos satisfacen determinadas reglas de integridad de datos.
Existen tres restricciones de alto nivel:
Restricciones de entidad
Page 90
Restricciones de dominio
Restricciones de integridad referencial
A nivel más específico se examinaran los métodos específicos para implementar cada
uno de los tipos de restricción incluyendo:
Restricciones PRIMARY KEY
Restricciones FOREIGN KEY
Restricciones UNIQUE (también conocidas como claves alternativas)
Restricciones CHECK
Restricciones DEFAULT
Reglas
Valores predeterminados (similares a las restricciones DEFAULT pero con
alguna ligera diferencia)
Page 91
Restricciones de Domino
Las restricciones de dominio tratan una o más columnas. Lo que se analiza es como
asegurarse de que una determinada columna o conjunto de columnas satisface
determinados criterios. Cuando se inserta o actualiza una fila, la restricción se aplica
con respecto a cualquier otra fila de la tabla; son los datos de la columna que se está
insertando.
Por ejemplo, si desean limitar la columna Unit Price solo a los valores que sean
mayores que, o igual a cero, utilizan una restricción de dominio. Aunque se rechazaría
cualquier fila que tuviese un precio unitario que no coincidiese con la restricción, en
realidad se está forzando a que la integridad se asegure de que toda la columna
(independientemente de la cantidad de las filas que tenga) reúna las condiciones de la
restricción. El dominio es la columna y la restricción es una restricción de dominio.
Restricciones de entidad
Estas restricciones tratan filas individuales. Esta forma de restricción realmente no se
preocupa de la columna como un todo; esta insertada en una determinada fila y sería
mejor ejemplificarla a través de una limitación que requiere que todas las filas tengan
un valor único por columna, es decir, que para un fila en concreto, no puede existir el
mismo valor en ninguna otra fila.
Restricciones de Integridad Referencial
Estas se crean cuando un valor de una columna tiene que coincidir con el valor en otra
columna, tanto en la misma tabla como en una tabla diferente (algo más en común).
Supongamos que estamos hablando de los pedidos de un producto y que se acepta
Page 92
tarjeta de crédito. Para que pague la empresa de la tarjeta de crédito, se tendrá que
tener alguna forma de acuerdo mercantil con dicha empresa. No se desea que los
empleados admitan tarjetas de crédito de compañías que no pagan. Aca es donde
entra en juego la integridad referencial: permite crear lo que se puede denominar un
tabla de dominio o búsqueda. Una tabla de domino es una tabla cuyo único propósito
en la vida es proporcionar una lista limitada de valores aceptables.
IdTarjetaCredito TarjetaCredito
1 VISA
2 Master Card
3 Promerica Card
4 American Express
Posteriormente se podrá crear una o más tablas que hagan referencia a la columna
IDTarjetaCredito de la tabla de dominio. Con la integridad referencial, cualquier tabla
(como una tabla de Pedidos) definida para hacer referencia a la tabla TarjetaCredito
tendrá que tener una columna que coincida con la columna IDTarjetaCredito de la tabla
TarjetaCredito. Cada fila que se inserte en la tabla que hace referencia, tendrá que
tener un valor que se encuentra en la lista de dominio.
Restricciones PRIMARY KEY
Antes de definir lo que es realmente una clave principal, se tendrá que explicar
brevemente las bases de datos relacionales. Estas bases de datos se construyen sobre
la idea de poder “relacionar” datos. Por consiguiente, es muy importante en las bases
de datos relacionales para la mayoría de las tablas (existen excepciones, aunque muy
raras) tener un identificador único por cada fila.
Page 93
Crear y modificar restricciones PRIMARY KEY
Una restricción PRIMARY KEY única se puede:
Crear cuando se crea la tabla, durante el proceso de definición de la misma.
Agregar a una tabla existente, siempre que no exista ya otra restricción
PRIMARY KEY (una tabla sólo puede tener una restricción PRIMARY KEY).
Modificar o eliminar, si ya existe. Por ejemplo, es posible que desee que la
restricción PRIMARY KEY de la tabla haga referencia a otras columnas o bien
modificar el orden de la columna, el nombre del índice, la opción de
agrupamiento o el factor de relleno de la restricción PRIMARY KEY. No se
puede cambiar la longitud de una columna definida con una restricción
PRIMARY KEY.
Cuando se agrega una restricción PRIMARY KEY a una o a varias columnas de la
tabla, Microsoft® SQL Server™ comprueba los datos que hay en las columnas para
asegurarse de que sigan las reglas de las claves principales:
Que no haya ningún valor Null.
Que no haya ningún valor duplicado.
Si se agrega una restricción PRIMARY KEY a una columna con valores duplicados o
valores NULL, SQL Server devuelve un error y no agrega la restricción. No se puede
agregar una restricción PRIMARY KEY que no cumpla estas reglas.
SQL Server crea automáticamente un índice único para exigir que la restricción
PRIMARY KEY sea única. Si aún no existe un índice agrupado en la tabla o no se ha
especificado explícitamente, se crea un índice agrupado único para exigir la restricción
PRIMARY KEY.
Page 94
Para crear una restricción PRIMARY KEY durante la creación de una tabla
(Transact-SQL)
CREATE TABLE [ nombreTabla ] ( <definiciónColumna> [CONSTRAINT nombreRestricción] PRIMARY KEY [CLUSTERED][NONCLUSTERED])
Ejemplo: CREATE TABLE dbo.CLIENTES ( CODIGO int NULL, NOMBRE varchar(100) NULL, DIRECCION varchar(200) NULL, CONSTRAINT PK_LLAVE PRIMARY KEY NONCLUSTERED (CODIGO) )
Cómo crear una restricción PRIMARY KEY durante la creación de una tabla
(Administrador corporativo)
Expanda un grupo de servidores y, a continuación, expanda un servidor.
Expanda Bases de datos y la base de datos en la que se va a crear la tabla.
Haga clic con el botón secundario del mouse en Tablas y, a continuación, haga
clic en Nueva tabla...
Complete las columnas como corresponda. Cada fila representa una columna de
la tabla.
Mientras mantiene presionada la tecla Ctrl, haga clic en los nombres de las
columnas que forman la clave principal.
Haga clic con el botón secundario del mouse en uno de los nombres de
columnas que ha seleccionado y, a continuación, haga clic en Establecer clave
principal.
Page 95
Para crear o eliminar una restricción PRIMARY KEY de una tabla existente
(Transact-SQL)
ALTER TABLE [nombreTabla] [ADD][DROP] CONSTRAINT [nombrerestriccion]
PRIMARY KEY [CLUSTERED] [NONCLUSTERED]
Ejemplo:
ALTER TABLE dbo.CLIENTES
ADD CONSTRAINT PK_LLAVE
PRIMARY KEY NONCLUSTERED (CODIGO)
go
ALTER TABLE dbo. CLIENTES
DROP CONSTRAINT PK_TABL_PRUEBA
go
Page 96
Restricciones FOREIGN KEY
Las claves externas (foreign Keys) son tanto una forma de asegurar la integridad de los
datos como una manifestación de las relaciones entre las tablas. Cuando añadimos
una clave eterna a una tabla, estamos creando una dependencia entre la tabla para la
que definimos la clave externa (la tabla que hace la referencia) y la tabla a la que se
refiere la clave externa (la tabla referenciada). Tras añadir una clave externa, cualquier
registro que se inserta en la tabla que hace referencia tiene que tener un registro
correspondiente en la columna o columnas de la tabla referenciada, o el valor de la
columna o columnas de la clave principal se tiene que establecer en NULL.
Las restricciones FOREIGN KEY se pueden:
Crear cuando se crea la tabla, durante el proceso de definición de la misma.
Agregar a una tabla ya existente, siempre que la restricción FOREIGN KEY esté
vinculada a una restricción PRIMARY KEY o UNIQUE de otra o de la misma
tabla. Una tabla puede contener varias restricciones FOREIGN KEY.
Modificar o eliminar si ya existen restricciones FOREIGN KEY. Por ejemplo, es
posible que desee que la restricción FOREIGN KEY de la tabla haga referencia
a otras columnas. No se puede cambiar la longitud de una columna definida con
una restricción FOREIGN KEY.
Para crear una restricción FOREIGN KEY durante la creación de una tabla
(Transact-SQL)
CREATE TABLE [ nombreTabla ] ( <definiciónColumna> [CONSTRAINT nombreRestricción] FOREIGN KEY <ListaColumnas> REFERENCES <TablaReferencia>
(<ColumnasReferencia> ) [ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
Page 97
Ejemplo:
CREATE TABLE OrderDetails (
OrderID int NOT NULL, PartNo varchar(10) NOT NULL, Description varchar(25) NOT NULL, UnitPrice money NOT NULL, Qty int NOT NULL,
CONSTRAINT PKOrderDetails PRIMARY KEY (OrderID, PartNo),
CONSTRAINT FKOrderContainsDetails FOREIGN KEY (OrderID)
REFERENCES Orders(OrderID) ON UPDATE NO ACTION
ON DELETE CASCADE )
Cómo modificar una restricción FOREIGN KEY (Administrador corporativo)
Expanda un grupo de servidores y, a continuación, expanda un servidor.
Expanda Bases de datos, la base de datos a la que pertenece la tabla y, a continuación, haga clic en Tablas.
En el panel de detalles, haga clic con el botón secundario del mouse en la tabla y, a continuación, haga clic en Diseñar tabla.
Haga clic con el botón secundario del mouse en cualquier columna y, a continuación, haga clic en Relaciones
Haga clic en el botón adicionar
Page 99
Restricciones UNIQUE.
Las restricciones UNIQUE (únicas) son bastantes sencillas. Dichas restricciones son
básicamente las hermanas jóvenes de las claves principales ya que requieren un valor
único a lo largo de la columna (o combinaciones de columnas) con nombre en la tabla.
Normalmente estas restricciones se conocen con el nombre de claves alternativas. La
diferencia principal es que no se consideran identificadores únicos de un registro o una
tabla (aunque podrían utilizarse con efectividad de esa forma) y que podemos tener
más de una restricción UNIQUE (recuerde que solo podemos tener una clave principal
por tabla).
Una vez establecida una restricción UNIQUE, cada valor en las columnas con nombre
tiene que ser único. Si se actualiza o inserta una fila con un valor que ya existe en una
columna con una restricción única. SQL Server emitirá un error y rechazará el registro.
Ejemplo:
CREATE TABLE Shippers (
ShipperID int I DENTITY NOT NULL PRIMARY KEY,
ShipperName varchar(30) NOT NULL, Address varchar(30) NOT NULL, City varchar(25) NOT NULL, State char(2) NOT NULL, Zip varchar(10) NOT NULL, PhoneNo varchar(14) NOT NULL UNIQUE
)
ALTER TABLE Employees ADD CONSTRAINT AK_EmployeeSSN UNIQUE (SSN)
Page 100
Restricciones CHECK
Lo bueno de estas restricciones es que no se limitan a una columna determinada.
Pueden tener relación con una columna pero también pueden estar relacionadas con
una tabla, ya que pueden comprobar un columna frente a otra, siempre que las
columnas se encuentre dentro de la misma tabla y que los valores que se vayan
actualizando o insertando sean para la misma fila. También pueden comprobar si
cualquier combinación de valores de columna reúnen unos criterios determinados.
Las restricciones CHECK se pueden:
Crear cuando se crea la tabla, durante el proceso de definición de la misma.
Agregar a una tabla ya existente. Las tablas y las columnas pueden contener
varias restricciones CHECK.
Modificar o eliminar si ya existen. Por ejemplo, puede modificar la expresión
utilizada por la restricción CHECK en una columna de la tabla.
Para crear una restricción CHECK durante la creación de una tabla
(Transact-SQL)
CREATE TABLE [ nombreTabla ] (
<definiciónColumna> [CONSTRAINT nombreRestricción]
CHECK (expresiónLógica) )
Ejemplo:
CREATE TABLE dbo.TABL_PRUEBA ( CODIGO int NOT NULL, NOMBRE varchar(50) COLLATE Modern_Spanish_CI_AS NULL, NIT varchar(50) COLLATE Modern_Spanish_CI_AS NOT NULL, CONSTRAINT PK_TABL_PRUEBA_1
Page 101
PRIMARY KEY CLUSTERED (CODIGO) ON SECUNDARY, CONSTRAINT CN_CODIGO CHECK ([CODIGO]>(0))) Cómo crear una restricción CHECK durante la creación de una tabla
(Administrador corporativo)
Expanda un grupo de servidores y, a continuación, expanda un servidor.
Expanda Bases de datos y la base de datos en la que se va a crear la tabla.
Haga clic con el botón secundario del mouse en Tablas y, a continuación, haga
clic en Nueva tabla...
En el cuadro de diálogo Elegir nombre, escriba un nombre para la tabla.
Complete las columnas como corresponda. Cada fila representa una columna de
la tabla.
Haga clic con el botón secundario del mouse en el nombre de la columna en la
que desea crear la restricción CHECK y, a continuación, haga clic en Check
Constrains.
En Expresión de restricción, escriba el texto de la restricción.
Page 102
Para crear una restricción CHECK en una tabla existente (Transact-SQL)
ALTER TABLE [nombreTabla] [WITH CHECK] [WITH NOCHECK] ADD CONSTRAINT [nombrerestriccion] CHECK (expresiónLogica)
Para eliminar una restricción CHECK en una tabla existente (Transact-SQL)
ALTER TABLE [nombreTabla] DROP CONSTRAINT [nombrerestriccion]
Restricciones DEFAULT
Page 103
Este es uno de los tipos diferentes de herramientas de integirdad de datos que tiene
que ver con los “valores predeterminados”. La restricción DEFAULT se convierte en un
elemento integral de una definición de una tabla. Define lo que hay que hacer cuando
se inserta una nueva fila que no incluya datos para la columna en la que hemos
definido la restricción predeterminada.
Para crear una definición DEFAULT en una columna durante el proceso de
creación de una tabla (Transact-SQL)
CREATE TABLE [ nombreTabla ]
(
<definiciónColumna> [CONSTRAINT nombreRestricción]
DEFAULT (Valorpordefecto)
)
Ejemplo:
CREATE TABLE dbo.TABL_PRUEBA
(
CODIGO int NOT NULL,
NOMBRE varchar(50) COLLATE Modern_Spanish_CI_AS NULL,
NIT varchar(50) COLLATE Modern_Spanish_CI_AS NOT NULL,
SUELDO numeric(18,4) NULL,
FECHA_INGR datetime CONSTRAINT
DF__TABL_PRUE__FECHA__060DEAE8 DEFAULT getdate() NULL,
CONSTRAINT PK_TABL_PRUEBA_1
PRIMARY KEY CLUSTERED (CODIGO)
ON SECUNDARY,
CONSTRAINT CK_SUELDO
CHECK ([SUELDO]>(0)),
CONSTRAINT CN_CODIGO
CHECK ([CODIGO]>(0))
)
Cómo crear una definición DEFAULT en una columna durante la creación de una
tabla (Administrador corporativo)
Page 104
Expanda un grupo de servidores y, a continuación, expanda un servidor.
Expanda Bases de datos y la base de datos en la que se va a crear la tabla.
Haga clic con el botón secundario del mouse en Tablas y, a continuación, haga
clic en Nueva tabla...
En el cuadro de diálogo Elegir nombre, escriba un nombre para la tabla.
Complete las columnas como corresponda. Cada fila representa una columna de
la tabla.
En la columna Valor predeterminado de cada nombre de columna que
corresponda, escriba la definición DEFAULT.
Page 105
Para crear o eliminar una definición DEFAULT en una columna de una tabla
existente (Transact-SQL)
ALTER TABLE [nombreTabla] [ADD][DROP] CONSTRAINT [nombrerestriccion]
DEFAULT (Valorpordefecto)
Ejemplo:
ALTER TABLE dbo.TABL_PRUEBA ADD CONSTRAINT DF_FECHA_INGR DEFAULT getdate() FOR FECHA_INGR Go ALTER TABLE dbo.TABL_PRUEBA DROP CONSTRAINT DF_FECHA_INGR Go Deshabilitar Restricciones
Algunas veces es necesario eliminar la comprobación de restricciones durante un
tiempo o permanentemente. Lógicamente, SQL Server no proporciona una forma de
eliminar restricciones, pero también nos permite desactivar una restricción FOREIGN
KEY o CHECK sin tener que eliminarlas.
El concepto de deshabilitar una regla de integridad de datos podría parecer al principio
algo absurdo. Es decir, la razón normal es una cuando ya se tiene datos errones. Estos
datos normalmente se clasifican en dos categorías:
Datos que ya se encuentran en nuestra base de datos cuando creamos la
restricción
Datos que deseamos añadir tras crear la restricción
NOTA: no se puede deshabilitar restricciones PRIMARY KEY O UNIQUE
Ejemplo:
Deshabilita
ALTER TABLE dbo.TABL_PRUEBA
Page 106
NOCHECK CONSTRAINT CN_CODIGO Go Habilita ALTER TABLE dbo.TABL_PRUEBA CHECK CONSTRAINT CK_SUELDO go
GUIA PRACTICA NO.11
Usando el Analizador de Consultas modifique las Tablas de la Base de Datos
“Inventarios”:
1. Para la tabla de Productos agregue las siguientes validaciones : Existencia
Mínima, costo unitario y costo alterno >= 0, Clase = ‘A’ o ‘B’ o ‘C’. ( Para la Clase
el valor default es ‘A’ )
2. Para la tabla de existencias agregue las siguientes validaciones : Cantidad
disponible y Cantidad reservada >= 0
3. Para la tabla detalle de movimientos de Inventario agregue las siguientes
validaciones : Cantidad de Movimiento y Costo unitario >= 0
4. Agregar a todas las tablas las Llave Primarias y Llaves Foráneas.
Usando el Administrador Corporativo modifique las Tablas de la Base de Datos
“InventariosAdmin” con las mismas especificaciones anteriores. ( Ejercicio No.1 al
No. 4)
Page 107
7. CREACIÓN DE VISTAS
Objetivo:
Al finalizar el tema, el participante será capaz de diferenciar los Objetos Vistas de los
Objetos Tablas, así como también crear Vistas sobre tablas Existentes.
Las vistas tiene la tendencia a ser utilizadas mucho o poco: en raras ocasiones se
utilizan en su justa medida. Las vistas se puede utilizar para:
Reducir la complejidad aparente de la base de datos para los usuarios finales
Prevenir la selección de columnas confidenciales a la vez que permite tener
acceso a otros datos importantes
Añadir un indexado adicional a su base de datos para agilizar el rendimiento de
la consulta, incluso aunque no se utilice la vista en la que se ha basado el índice
Una vista no es mas que un consulta almacenada. Lo extraordinario es que podemos
combinar y hacer corresponder datos desde tablas base (o desde otras vistas) para
crea lo que, en general, funciona como cualquier otra tabla base. Podemos crear una
simple consulta que seleccione solo desde una tabla y deje fuera algunas columnas o
poder crear una consulta compleja que junte diversas tablas y haga que parezcan una
sola.
Crear una vista
Antes de crear una vista, considere estas indicaciones:
Sólo puede crear vistas en la base de datos actual. Sin embargo, las tablas y las
vistas a las que se haga referencia desde la nueva vista pueden encontrarse en
otras bases de datos e, incluso, en otros servidores, si la vista se define
mediante consultas distribuidas.
Page 108
Los nombres de las vistas deben seguir las reglas para los identificadores y ser
únicos para cada usuario. Además, el nombre debe ser distinto del de cualquier
tabla de las que el usuario sea propietario.
Puede generar vistas dentro de otras vistas y en procedimientos que hagan
referencia a vistas. Microsoft® SQL Server™ permite anidar hasta 32 niveles de
vistas.
No puede asociar reglas, definiciones DEFAULT ni desencadenadores con las
vistas.
La consulta que defina a la vista no puede incluir las cláusulas ORDER BY,
COMPUTE o COMPUTE BY, ni la palabra clave INTO.
No puede generar índices ni crear definiciones de índices de texto en las vistas.
No puede crear vistas temporales, ni vistas dentro de tablas temporales.
No puede emitir consultas de texto en una vista, aunque una definición de vista
puede incluir una consulta de texto si ésta hace referencia a una tabla
configurada para indización de texto.
Debe especificar el nombre de todas las columnas de la vista en el caso de que:
Alguna de las columnas de la vista derive de una expresión aritmética, una
función integrada o una constante.
Dos o más columnas de la vista tendrían, en caso contrario, el mismo nombre
(normalmente, debido a que la definición de la vista incluye una combinación y
las columnas de dos o más tablas diferentes tienen el mismo nombre).
Desee darle a una columna de la vista un nombre distinto del de la columna de la que
deriva. (También puede cambiar el nombre de las columnas en la vista). Una columna
de una vista hereda los tipos de datos de la columna de la que deriva, aunque no
cambie su nombre.
Page 109
Para crear una vista (Transact-SQL)
CREATE VIEW (T-SQL)
Crea una tabla virtual que representa los datos de una o más tablas de una forma
alternativa. Las vistas se pueden utilizar como mecanismos de seguridad al conceder
permisos sobre una vista, pero no sobre las tablas subyacentes (base).
Sintaxis
CREATE VIEW nombreVista [(columna [,…n])]
[WITH ENCRYPTION]
AS
instrucciónSelección
[WITH CHECK OPTION]
Argumentos
nombreVista
Es el nombre de la vista. Los nombres de las vistas deben cumplir las reglas de los
identificadores. Especificar el nombre del propietario de la vista es opcional.
columna
Es el nombre que se va a utilizar para una columna en una vista. Asignar un nombre a
una columna en CREATE VIEW sólo es necesario cuando una columna se derive de
una expresión aritmética, una función o una constante, cuando dos o más columnas
puedan tener el mismo nombre (debido normalmente a una combinación), o cuando
una columna de una vista recibe un nombre distinto al de la columna de la que se
deriva. Los nombres de columna se pueden asignar también en la instrucción SELECT.
Si no se especifica columna, las columnas de la vista adquieren los mismos nombres
que las columnas de la instrucción SELECT.
n
Page 110
Es un marcador de posición que indica que se pueden especificar varias columnas.
WITH ENCRYPTION
Codifica las entradas de syscomments que contienen el texto de la instrucción
CREATE VIEW.
AS
Son las acciones que va a llevar a cabo la vista.
instrucciónSelección
Es la instrucción SELECT que define la vista. Puede utilizar más de una tabla y otras
vistas. Para seleccionar los objetos a los que se hace referencia en la cláusula
SELECT de una vista que se esté creando, es necesario tener los permisos
adecuados.
Una vista no tiene por qué ser un simple subconjunto de filas y de columnas de una
tabla determinada. Una vista se puede crear con más de una tabla o con otras vistas,
mediante una cláusula SELECT sencilla o compleja.
Sin embargo, hay unas cuantas restricciones de las cláusulas SELECT en una
definición de vista. Una instrucción CREATE VIEW no puede:
Incluir cláusulas ORDER BY, COMPUTE o COMPUTE BY.
Incluir la palabra clave INTO.
Hacer referencia a una tabla temporal.
Como instrucciónSelección utiliza la instrucción SELECT, es válido utilizar las
sugerencias <sugerenciaCombinación> y <sugerenciaTabla> como se especifican en la
cláusula FROM.
Se pueden utilizar funciones en instrucciónSelección.
Page 111
instrucciónSelección puede utilizar varias instrucciones SELECT separadas por UNION
para crear una consulta mediante datos separados.
Para que se puedan utilizar datos separados en ALTER VIEW o CREATE VIEW, es
necesario poder comprobar los valores de la restricción. Si se ha deshabilitado la
comprobación de restricciones, vuelva a habilitarla con la opción WITH CHECK o las
opciones CHECK nombreRestricción de ALTER TABLE. No es necesario tener
restricciones para utilizar datos separados; sin embargo, la optimización de consulta
genera planes menos optimizados sin las restricciones.
WITH CHECK OPTION
Exige que todas las instrucciones de modificación de datos ejecutadas contra la vista
se adhieran a los criterios establecidos en instrucciónSelección. Cuando una fila se
modifica mediante una vista, la opción WITH CHECK garantiza que los datos
permanezcan visibles en toda la vista después de que se haya confirmado la
modificación.
Ejemplo:
CREATE VIEW Clientes_vw As SELECT CODIGO,
NOMBRE, NIT, DIRECCION, TELEFONO
FROM CLIENTES
Modificar una Vista (Transact-SQL)
ALTER VIEW (T-SQL)
Altera una vista creada previamente (creada al ejecutar CREATE VIEW) sin afectar a
los procedimientos almacenados ni a los desencadenadores dependientes, y sin
cambiar los permisos.
Page 112
Sintaxis
ALTER VIEW nombreVista [(columna [,…n])] [WITH ENCRYPTION] AS instrucciónSelección [WITH CHECK OPTION]
Ejemplo:
ALTER VIEW Clientes_vw AS SELECT CODIGO,
NOMBRE, NIT, DIRECCION, TELEFONO, CONTACTO
FROM TABL_PRUEBA
Crear y Modificar Vistas en el Administrador Corporativo
El administrador Corporativo proporciona una extraordinaria opción para la creación de
vistas.
Abrir el Administrador Corporativo y posterior mente el subnodo de base de datos de la
base de datos Northwind; hacer clic con el botón secundario del ratón sobre Vistas. Se
abrirá la ventada que se muestra a continuación.
Page 113
Seleccionar Nueva Vista para abrir un nuevo cuadro de dialogo. Este cuadro de dialogo
facilita la elección de tablas desde donde se podrán incluir los datos. Como se pude
seleccionar más de una tabla? Solo se tiene que mantener presionado la tabla y luego
la tecla Control mientras se seleccionan todas las tablas que se necesitan, luego dar
clic en el botón Agregar para que SQL Server agregue las diversas Tablas
seleccionadas a la Vista.
Page 115
Una vez realizado el proceso, el diseñador de vistas proporciona el siguiente código
SQL:
SELECT dbo.Orders.OrderDate, dbo.Customers.CompanyName, dbo.Products.ProductName, dbo.[Order Details].ProductID, dbo.[Order Details].UnitPrice, dbo.[Order Details].Quantity, dbo.[Order Details].Quantity * dbo.[Order Details].UnitPrice AS ExtendedPrice
FROM dbo.Customers INNER JOIN dbo.Orders ON dbo.Customers.CustomerID = dbo.Orders.CustomerID INNER
JOIN dbo.[Order Details] ON dbo.Orders.OrderID = dbo.[Order Details].OrderID
INNER JOIN dbo.Products ON dbo.[Order Details].ProductID = dbo.Products.ProductID
Luego dar clic en el icono Guardar que tiene forma de disquete y cerrar el diseñador de
vistas.
Eliminar una Vista (Transact-SQL)
DROP VIEW (T-SQL)
Quita una o más vistas de la base de datos actual. Las vistas de la tabla quitada
(mediante la instrucción DROP TABLE) se deben quitar explícitamente con DROP
VIEW.
Sintaxis
DROP VIEW {vista} [,…n]
Page 116
Argumentos
vista
Es el nombre de la vista que se va a quitar. Los nombres de vistas deben seguir las
reglas de los identificadores.
n
Es un marcador de posición que indica que se pueden especificar varias vistas.
Ejemplo:
DROP VIEW dbo.CLIENTES_VW
Cómo eliminar una vista (Administrador corporativo)
Expanda un grupo de servidores y, a continuación, expanda un servidor.
Expanda Bases de datos, la base de datos a la que pertenece la vista y, a
continuación, haga clic en Vistas.
En el panel de detalles, haga clic con el botón secundario del mouse en la vista
y, a continuación, haga clic en Eliminar.
Para ver cómo va a afectar la eliminación de esta vista a la base de datos, haga
clic en Mostrar dependencias…
Haga clic en Quitar todos.
Page 118
GUIA PRACTICA NO.12
1. Utilizando el Analizador de Consultas, realiza una Vista para Listar los Nombres de
de todas las tiendas ordenadas alfabéticamente.
2. Utilizando el Analizador de Consultas, realice una vista para Listar el detalle de
ventas por tienda, la información que tendrá de la tienda es : stor_id, stor_name y
los datos de las ventas title_id y qty
3. Utilizando el Administrador Corporativo, realice una vista para Obtener el total de
Ingresos obtenidos para cada libro, el resultado tendrá que contener: title_id, title,
price, qty y el Ingreso = qty * price. ( titles, sales)
4. Utilizando el Asistente para Creación de Vistas, realice una vista para Encontrar el
tipo de libro , el precio promedio , precio mínimo y precio máximo para cada tipo de
Libro
8. CREACION DE INDICES
Objetivo:
Al finalizar el tema, el participante será capaz de crear los diferentes tipos de Índices
que existen para Tablas de Datos.
Los índices de una base de datos son similares a los índices que hay en los libros. En
un libro, un índice le permite encontrar información rápidamente sin necesidad de leer
todo el libro. En una base de datos, un índice permite que el programa de la base de
datos busque datos en una tabla sin necesidad de examinar toda la tabla. El índice de
un libro es una lista de palabras con los números de las páginas en las que se
encuentra cada palabra. Un índice de una base de datos es una lista de los valores de
una tabla con las posiciones de almacenamiento de las filas de la tabla donde se
encuentra cada valor. Se puede crear índices en una sola columna o en una
Page 119
combinación de columnas de una tabla; los índices se implementan en forma de
árboles B. Un índice contiene una entrada con una o varias columnas (la clave de
búsqueda) de cada fila de una tabla. Un árbol B se ordena con la clave de búsqueda y
se puede buscar de forma eficiente en cualquier subconjunto principal de la clave de
búsqueda. Por ejemplo, un índice en las columnas A, B y C puede buscarse de forma
eficiente en A, en A y B, y en A, B y C.
Mientras que la mayor parte de los libros contienen un índice general de palabras,
nombres, lugares, etc., las bases de datos contienen índices individuales para tipos o
columnas de datos seleccionados. Es como un libro con un índice para los nombres de
las personas y otro índice para los lugares. Cuando cree una base de datos y la
optimice para mejorar el rendimiento, es recomendable que cree índices para las
columnas que se utilizan en las consultas con el fin de buscar datos.
En la base de datos de ejemplo pubs suministrada con Microsoft® SQL Server™, la
tabla employee tiene un índice en la columna emp_id. En la siguiente ilustración se
muestra cómo almacena el índice cada valor emp_id y señala a las filas de datos de la
tabla con cada valor.
Page 120
Cuando SQL Server ejecuta una instrucción para buscar datos en la tabla employee a
partir de un valor de emp_id específico, reconoce el índice para la columna emp_id y
lo utiliza para buscar los datos. Si no hay un índice, empieza desde el principio de la
tabla y va buscando, fila por fila, el valor de emp_id especificado.
SQL Server crea automáticamente índices para determinados tipos de restricciones
(por ejemplo, restricciones de clave principal (PRIMARY KEY) y de no duplicados
(UNIQUE)). También puede personalizar las definiciones de la tabla mediante la
creación de índices independientes de las restricciones.
No obstante, las ventajas que ofrecen los índices por lo que respecta al rendimiento
también tienen un costo. Las tablas con índices necesitan más espacio de
almacenamiento en la base de datos. Asimismo, es posible que los comandos de
inserción, actualización o eliminación de datos sean más lentos y precisen más tiempo
de proceso para mantener los índices. Cuando diseñe y cree índices, deberá
asegurarse de que las ventajas en el rendimiento compensan suficientemente el costo
adicional en cuanto a espacio de almacenamiento y recursos de proceso.
Indices UNIQUE
Un índice único asegura que la columna indizada no contiene valores duplicados. En el
caso de índices únicos para varias columnas, el índice asegura que cada combinación
de valores de la columna indizada sea única. Por ejemplo, si se crea un índice único
nombreCompleto para una combinación de las columnas apellido1, apellido 2 y
nombre, no habrá dos personas con el mismo nombre completo en la tabla.
Tanto los índices agrupados como los no agrupados pueden ser únicos. Por lo tanto,
siempre que los datos de la columna sean exclusivos, puede crear para la misma tabla
un índice exclusivo agrupado y varios índices exclusivos no agrupados.
Si las columnas de una cláusula WHERE utilizan el operador igual a (=) con columnas
en el índice, el optimizador de consultas utiliza el índice único para procesar la
Page 121
consulta. Esto se debe a que pocas filas se ajustarán a la consulta, por lo que la
utilización del índice implica un costo fijo mínimo. Por ejemplo, si la consulta buscara
las columnas apellido1 y nombre, se utilizaría el índice nombreCompleto aunque no
se especificara la columna apellido2.
Consideraciones
Resulta conveniente especificar un índice único sólo si los propios datos se
caracterizan por ser únicos. Si debe exigirse que los valores sean únicos para asegurar
la integridad de los datos, cree una restricción de no duplicados (UNIQUE) o de clave
principal (PRIMARY KEY) para la columna, en vez de utilizar un índice único. Por
ejemplo, si ha previsto realizar con frecuencia consultas referentes a la columna de
números de la Seguridad Social (ssn) de la tabla de empleados (donde la clave
principal es emp_id) y desea asegurarse de que los números de la Seguridad Social
sean exclusivos, cree una restricción de exclusividad (UNIQUE) en ssn. Si el usuario
escribe el mismo número de Seguridad Social para más de un empleado, se mostrará
un error.
Índices NONCLUSTERED
Un índice no agrupado es similar al índice de un libro de texto. Los datos se almacenan
en un lugar, el índice en otro, con punteros que señalan hacia la ubicación de
almacenamiento de los datos. Los elementos del índice se almacenan en el mismo
orden que los valores de la clave del índice, pero la información de la tabla se
almacena en un orden distinto (que puede estar definido por un índice agrupado). Si no
se crea ningún índice agrupado en la tabla, no se garantiza que las filas sigan un orden
determinado.
Del mismo modo que se usa el índice de un libro, Microsoft® SQL Server™ busca un
dato en el índice no agrupado para localizar la ubicación del dato en la tabla y, a
Page 122
continuación, recupera los datos directamente de esa ubicación. Este sistema convierte
a los índices no agrupados en la opción más apropiada para las consultas de
coincidencia exacta, dado que el índice contendrá entradas que describan la ubicación
exacta en la tabla de los valores de datos que se buscan en las consultas. Si se ordena
la tabla subyacente con un índice agrupado, la ubicación es el valor de la clave de
agrupación; de lo contrario, la ubicación es el identificador de fila (RID), que contiene el
número del archivo, el número de la página y el número de zona de la fila. Por ejemplo,
para buscar un identificador de empleado (emp_id), en una tabla que tiene un índice
no agrupado para la columna emp_id, SQL Server busca en el índice una entrada en la
que figure la página y la fila de la tabla en la que se puede encontrar el identificador de
empleado coincidente, y va directamente a esa página y fila.
Varios índices no agrupados
Algunos libros contienen varios índices. Por ejemplo, un libro que trate de jardinería
puede contener un índice para los nombres comunes de las plantas y otro índice para
los nombres científicos porque constituyen las formas más habituales que tienen los
lectores para buscar información. Ocurre lo mismo con los índices no agrupados.
Puede definir un índice no agrupado para cada una de las columnas que se utilicen
más a menudo para buscar los datos de una tabla.
Consideraciones
Antes de crear índices no agrupados, debe conocer cómo se tiene acceso a los datos.
Considere la posibilidad de utilizar índices no agrupados para:
Las columnas que contengan un gran número de valores distintos como, por ejemplo,
una combinación de apellidos y nombre (si se utiliza un índice agrupado para otras
columnas). Si hay pocos valores distintos, como el 1 y el 0, no conviene crear ningún
índice.
Las consultas que no devuelvan conjuntos de resultados de gran tamaño.
Page 123
Las columnas que suelan incluirse en las condiciones de búsqueda de una consulta
(cláusula WHERE) que devuelva coincidencias exactas.
En aplicaciones del Sistema de ayuda a la toma de decisiones en las que se necesiten
con frecuencia combinaciones y agrupaciones. Cree varios índices no agrupados para
las columnas que intervienen en operaciones de combinación y de agrupación, y un
índice agrupado para las columnas de clave externa.
Índices CLUSTERED
Un índice agrupado determina el orden de almacenamiento de los datos en una tabla.
Un índice agrupado es análogo a una guía telefónica, en la que los datos se ordenan
por apellidos. Dado que el índice agrupado dicta el orden de almacenamiento físico de
los datos de una tabla, una tabla puede contener únicamente un índice agrupado. Sin
embargo, el índice puede contener varias columnas (índice compuesto), del mismo
modo que un listín telefónico está organizado por apellidos y nombres.
Un índice agrupado resulta especialmente eficiente para las columnas en las que se
buscan frecuentemente intervalos de valores. Cuando se encuentra la fila con el primer
valor mediante el índice agrupado, se garantiza que las filas con los valores indizados
subsiguientes son físicamente adyacentes. Por ejemplo, si una aplicación ejecuta
frecuentemente una consulta para recuperar registros de un intervalo de fechas, un
índice agrupado puede localizar rápidamente la fila que contiene la fecha de inicio y, a
continuación, recuperar todas las filas adyacentes de la tabla hasta llegar a la última
fecha. De ese modo se puede incrementar el rendimiento de este tipo de consulta.
Asimismo, si hay alguna columna que se utilice frecuentemente para ordenar los datos
recuperados de una tabla, puede resultar ventajoso agrupar (ordenar físicamente) la
tabla según esa columna, o columnas, con el fin de evitar el costo adicional que supone
llevar a cabo una ordenación cada vez que se realiza una consulta que implica a la
columna.
Page 124
Los índices agrupados también son eficientes para buscar una fila determinada cuando
el valor indizado es único. Por ejemplo, el método más rápido para buscar a un
empleado determinado en la columna con valores únicos emp_id consistiría en crear
un índice agrupado o una restricción de clave principal (PRIMARY KEY) para la
columna emp_id.
Nota Las restricciones de clave principal (PRIMARY KEY) crean índices agrupados de
forma automática si no hay ningún índice agrupado en la tabla y no se especifica
ningún índice no agrupado cuando se crea la restricción.
Como alternativa, también podría crearse un índice agrupado para lname, fname
(apellido, nombre), porque es más probable que se agrupen y se consulten de ese
modo los registros de los empleados a que se consulten y se agrupen por identificador
de empleado.
Consideraciones
Es importante definir la clave de índice agrupado con el menor número de columnas
posible. Si se define una clave de índice agrupado de gran tamaño, los índices no
agrupados que se definan en la misma tabla serán mucho mayores, ya que las
entradas de índice no agrupado contienen la clave de agrupación.
Antes de crear índices agrupados, debe conocer cómo se tiene acceso a los datos.
Considere la posibilidad de utilizar un índice agrupado para:
Las columnas que contengan un número limitado de valores distintos como, por
ejemplo, una columna de estados que contenga únicamente 50 códigos de estado. No
obstante, si hay muy pocos valores distintos, como 1 y 0, no debe crearse ningún
índice.
Las consultas que devuelvan un intervalo de valores que utilicen operadores como
BETWEEN, >, >=, < y <=.
Las columnas a las que se tenga un acceso secuencial.
Page 125
Las consultas que devuelvan conjuntos de resultados de gran tamaño.
Las columnas a las que tengan acceso frecuente consultas con cláusulas de
combinación o GROUP BY; normalmente, son columnas de clave externa. Un índice en
la columna, o columnas, especificado en la cláusula ORDER BY o GROUP BY elimina
la necesidad de que SQL Server ordene los datos debido a que las filas ya están
ordenadas. De ese modo se aumenta el rendimiento de las consultas.
Las aplicaciones del tipo OLTP, en las que se precisa buscar filas con gran rapidez,
normalmente mediante una clave principal. Cree un índice agrupado en la clave
principal.
Los índices agrupados no son adecuados para:
Las columnas en las que se realizan cambios con frecuencia, ya que esto provoca que
se mueva toda la fila (porque SQL Server debe mantener ordenados físicamente los
valores de los datos de la fila). Esta consideración es importante cuando se trabaja con
sistemas de procesamiento de gran volumen, en los que los datos tienden a ser
volátiles.
Consultas cubiertas. Cuanto mayor sea el número de columnas que haya en la clave
de búsqueda, más posibilidades habrá de que cambien los datos de la columna
indizada, lo que provoca operaciones de E/S adicionales.
Creación de Indices (Transact SQL)
Sintaxis
CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX nombreÍndice ON tabla (columna [,…n])
Argumentos
Page 126
UNIQUE
Crea un índice único (uno en el que no se permite que dos filas tengan el mismo valor
de índice). Microsoft® SQL Server™ comprueba si hay valores duplicados cuando se
crea el índice (si ya existen datos) y realiza la comprobación cada vez que se agregan
datos con una instrucción INSERT o UPDATE. Si existen valores de clave duplicados,
se cancela la instrucción CREATE INDEX y se devuelve un mensaje de error con el
primer duplicado. Un índice único no se puede crear en una columna individual ni en
columnas múltiples (índice compuesto) en las que la clave completa (todas las
columnas de esa clave) sea NULL en más de una fila; para la indización, éstas se
tratan como valores duplicados.
SQL Server no permite la creación de un índice único sobre columnas que ya
contengan valores duplicados, ya esté establecido o no IGNORE_DUP_KEY. Si se
intenta, SQL Server muestra un mensaje de error; los duplicados deben eliminarse
antes de que se pueda crear un índice único sobre la columna o columnas.
CLUSTERED
Crea un objeto en el que el orden físico de las filas es el mismo que el orden indizado
de las filas y el nivel inferior (hojas) del índice agrupado contiene las filas actuales de
datos. Como los índices no agrupados se vuelven a generar cuando se crea un índice
agrupado, cree el índice agrupado antes de crear los índices no agrupados.
Si no se especifica CLUSTERED, se crea un índice no agrupado.
Nota Debido a que el nivel hoja de un índice agrupado y sus páginas de datos son, por
definición, lo mismo, la creación de un índice agrupado y la utilización de la cláusula
ON grupoArchivos mueve efectivamente una tabla desde el archivo en que se creó la
tabla al nuevo grupo de archivos. Antes de crear tablas o índices en grupos de archivos
específicos, compruebe qué grupos de archivos están disponibles y que esos grupos
Page 127
de archivos tengan suficiente espacio libre para el índice. Es vital que los grupos de
archivos tengan al menos 1,2 veces el espacio requerido para la tabla completa.
NONCLUSTERED
Crea un objeto que especifica la ordenación lógica de una tabla. Con un índice no
agrupado, el orden físico de las filas no es el mismo que su orden indizado. El nivel
hoja de un índice no agrupado contiene las filas del índice. Cada fila del índice contiene
el valor de clave no agrupada, y uno o varios localizadores de fila que apuntan a la fila
que contiene dicho valor. Si la tabla no tiene un índice agrupado, el localizador de fila
es la dirección de disco de la fila. Si la tabla tiene un índice agrupado, el localizador de
fila es la clave del índice agrupado de la fila.
Cada tabla puede tener hasta 249 índices no agrupados (sin importar cómo se hayan
creado: implícitamente con las restricciones PRIMARY KEY y UNIQUE, o
explícitamente con CREATE INDEX). Cada índice puede proporcionar acceso a los
datos en un orden distinto.
nombreÍndice
Es el nombre del índice. Los nombres de índice deben ser únicos en una tabla, aunque
no tienen por qué ser únicos en una base de datos. Los nombres de índice deben
seguir las reglas de los identificadores.
Nota Una columna calculada, tal como se crea con una instrucción CREATE TABLE,
no se puede utilizar como columna clave ni como parte de una definición de las
restricciones PRIMARY KEY, UNIQUE, FOREIGN KEY y CHECK.
tabla
Page 128
Es la tabla que contiene la columna o columnas que deben indizarse. Especificar los
nombres de la base de datos y del propietario de la tabla es opcional.
columna
Es la columna o columnas a las que se aplica el índice. Especifique dos o más
nombres de columna para crear un índice compuesto sobre los valores combinados de
las columnas especificadas. Enumere las columnas que desee incluir en el índice
compuesto (en orden de prioridad) entre paréntesis después de tabla.
Nota No se pueden especificar como columnas de un índice las columnas que tengan
los tipos de datos ntext, text, image o bit, ni se pueden utilizar funciones.
Los índices compuestos se utilizan cuando dos o más columnas se buscan mejor como
una unidad o si muchas consultas hacen referencia sólo a columnas especificadas del
índice. En un único índice compuesto se pueden combinar hasta 16 columnas. Todas
las columnas de un índice compuesto deben encontrarse en la misma tabla. El tamaño
máximo permitido de los valores de índice combinado es 900 bytes. (Es decir, la suma
de las longitudes de las columnas que forman el índice compuesto no puede
sobrepasar 900 bytes.)
n
Es un marcador de posición que indica que se pueden especificar múltiples columnas
para cualquier índice particular.
Ejemplo:
CREATE CLUSTERED INDEX IDX_CODIGO ON Clientes (CODIGO) ON [PRIMARY]
Cómo crear un índice en una tabla existente (Administrador corporativo)
Expanda un grupo de servidores y, a continuación, expanda un servidor.
Page 129
Expanda Bases de datos, la base de datos a la que pertenece la tabla y, a
continuación, haga clic en Tablas.
Haga Clic en la tabla a la que desea crear el índice y a continuación en índices
haga clic con el botón secundario del ratón
Haga clic en Nuevo…
En Columna, seleccione la columna que aparecerá en el índice. Se pueden
crear índices compuestos si se selecciona más de una columna.
Opcionalmente, seleccione una columna y haga clic en Subir o en Bajar para cambiar
el orden de las columnas en el índice.
Opcionalmente, en Opciones del índice, seleccione:
Valores únicos para crear un índice único.
Índice agrupado para crear un índice agrupado. Si ya existe un índice
agrupado, esta opción no estará disponible.
Pasar por alto valores duplicados para controlar qué ocurre cuando una
instrucción INSERT inserta varios valores de clave no únicos en un índice.
Page 131
GUIA PRACTICA NO.13
1. Usando el Analizador de Consultas, construya índices para las tablas de la Base
de Datos Inventarios. ( Sólo para las Tablas que considere que lo necesiten )
2. Usando el Administrador Corporativo, construya los Índices que desarrollo en el
ejercicio anterior.
Page 132
9. DIAGRAMA DE BASE DE DATOS
Objetivo:
Al finalizar el tema, el participante será capaz de realizar Diagramas de Bases de Datos
utilizando el Administrador Corporativo.
Puede crear, modificar o eliminar objetos de base de datos mientras mantenga una
conexión directa con la base de datos en que están almacenados esos objetos.
Para interactuar con la base de datos del servidor, se utilizan diagramas de base de
datos. Se puede tener acceso a los diagramas de base de datos a través del
Administrador corporativo de SQL Server. Los diagramas de base de datos representan
gráficamente las tablas en la base de datos. Los diagramas de base de datos muestran
las columnas que las tablas contienen, las relaciones entre las tablas, y los índices y
restricciones de las tablas. Después de que se haya establecido una conexión con la
base de datos, puede utilizar diagramas de base de datos para:
Ver las tablas y sus relaciones en una base de datos.
Realizar operaciones complejas para alterar la estructura física de una base de
datos.
Puede realizar cambios en el diagrama de base de datos sin que afecten a la
base de datos subyacente. Cuando utiliza un diagrama de base de datos para
modificar un objeto de base de datos, las modificaciones no se guardan en la
base de datos hasta que guarda la tabla o el diagrama de base de datos. De
este modo, puede experimentar con escenarios de tipo “qué sucedería si” en el
diseño de la base de datos sin que esto afecte al diseño o a los datos existentes.
Guardar los cambios realizados en las tablas seleccionadas o en el diagrama de
base de datos y hacer que los cambios modifiquen la base de datos del servidor.
Si no desea guardar los cambios realizados en las tablas seleccionadas o en el
diagrama de base de datos, puede descartar los cambios.
Page 133
Guardar una secuencia de comandos de cambio que contenga el código
Transact-SQL generado por los cambios que realice en el diagrama de base de
datos. Si guarda una secuencia de comandos de cambio en lugar de guardar los
cambios a la base de datos, podrá cambiar la secuencia de comandos con un
editor de texto y, después, aplicarla a la base de datos.
También puede optar por crear automáticamente una secuencia de comandos
de cambio cada vez que guarde el diagrama de base de datos o cualquier objeto
de base de datos en el diagrama. Esto le proporciona un registro de los cambios
realizados en la base de datos.
Se puede controlar el momento, el tipo y la extensión de los cambios a la base
de datos si elige cómo van a afectar los cambios realizados en el diagrama de
base de datos a la base de datos del servidor.
Crear y administrar los diagramas de base de datos
Puede utilizar los diagramas de base de datos para:
o Manipular objetos de base de datos sin tener que escribir código
Transact-SQL.
o Visualizar las estructuras de las tablas de base de datos y las relaciones
entre las tablas.
o Proporcionar distintas presentaciones de bases de datos complejas.
o Experimentar con cambios de base de datos sin modificar la base de
datos subyacente.
o Crear nuevas tablas, índices, relaciones y otras restricciones.
Modificar la estructura de la base de datos.
Creación de Diagramas
Crear un nuevo diagrama haciendo clic con el boto secundario del ratón sobre el nodo
Diagrama de Base de datos de baja de la base de datos Northwind y seleccionando
la opción Nuevo diagrama de base de datos.
Page 134
SQL Server abre el cuadro de dialogo Agregar Tabla con una lista de las distintas
tablas.
Seleccione todas las tablas (recuerde que debe de mantener presionada la tecla
Control para seleccionar más de una tabla) excepto la tabla ConvertText o, en su caso,
la tabla sysdiagrams (en realidad son tablas del sistema que solo existen para admitir la
creación de diagramas).
Haga clic en Agregar, y tras una breve pausa en la que SQL Server dibuja todas las
tablas seleccionadas, haga clic en el botón cerrar. SQL Server agrega las tablas al
diagrama, pero dependiendo de la resolución de la pantalla, probablemente sea difícil
de ver debido al aumento o disminución aplicados al diagrama. Para que encajen
todas las tablas en la vista, se deberá cambiar la configuración de la opción Zoom en la
barra de herramientas. Encontrar el equilibrio correcto entre ver muchas tablas y leer su
contenido es algo difícil, pero podrá ajustar la vista a su gusto particular.
Page 136
Como funciona
SQL Server enumera cada una de las tablas que se le ha indicado que se desea
agregar al diagrama y se ha analizado los otros objetos asociados a dichas tablas. Los
otros elementos que se puede ver aparte de la propia tabla son algunos de los muchos
objetos vinculados a las tablas (claves principales, claves externas).
Tablas
Cada tabla tiene su propia ventana que se puede desplazar. La clave principal aparece
con el pequeño símbolo de una llave a la izquierda del nombre en la columna.
Para agregar una tabla existente al diagrama hacer clic en el boto Agregar Tabla en la
barra de herramientas de la ventana de creación de diagramas. Para agregar un nueva
tabla a la base de datos desde el diagrama haga clic en el botón Nueva Tabla en la
barra de herramientas de la venta de la creación de diagramas. Se abrirá un mensaje
solicitando que elija el nombre de la tabla. Escriba el nombre CustomerNotes ( notas
del cliente).
Page 137
Como funciona
Cuando se crea un diagrama, SQL Server crea una secuencia de comandos tras el
escenario. Sin embargo, dichas secuencias de comandos no se generan ni se ejecutan
en tanto no se guardan en el diagrama.
Ventana de Propiedades
A parte de los atributos básicos que se han analizado, también se pueden editar otras
muchas facetas de la tabla. Existen dos formas para modificar o agregar dichos
atributos:
Propiedades: las propiedades se editan en una ventana emergente y que se
acopla de forma predeterminada, a la derecha de la ventana de creación de
diagramas en el Administrador Corporativo. Para abrir la ventana de
Propiedades, hacer clic en el icono Ventana de Propiedades de la barra de
herramientas del Administrador Corporativo.
Page 138
Objetos: los objetos que pertenecen a la tabla, como los índices, las
restricciones y las relaciones, se editan en su propio cuadro de dialogo, al que
podemos acceder haciendo clic en el botón derecho del ratón en la tabla dentro
del diagrama y seleccionando el elemento deseado.
Relaciones
Se agregara una relación a la tabla CustomerNotes con la tabla Customers; después
de todo, si hay una nota de un cliente probablemente será necesario tomar notas sobre
un cliente existente o valido en el sistema. Para ello, haga clic y mantener pulsado el
ratón en el área gris que se encuentra a la izquierda de la columna CustomerID en la
tabla Customers y arrastre el raton hasta que apunte a la columna de CustomerID de la
tabla CustomerNotes. Se abrirá un cuadro de dialogo para confirmar la asignación de
columna entre las tablas asignada.
Page 139
Si se ha arrastrado y colocado correctamente, deben aparecer los nombres de las
columnas en ambos lados de la relación, pero si aparece algo distinto a lo esperado, no
se preocupe mucho: solo se tendrá que hacer clic en el cuadro combinado de la tabla
para la que se desea cambiar las columnas y seleccionar la nueva columna. Cambiar el
nombre predeterminado de la relación, FK_CustomerNotes_Customers por
CustomerHasNotes.
Page 140
Como Funciona
SQL Server construye SQL tras el escenario para realizar los cambios necesarios.
Hasta el momento, ha agregado la relación solo al diagrama (si coloca el rato sobre la
relación podrá ver una sugerencia de pantalla con el nombre y la naturaleza de la
relación).