Documente Academic
Documente Profesional
Documente Cultură
Este material está desarrollado para la asignatura Taller de Base de Datos, de la carrera de Ingeniería en Sistemas
Computacionales, plan de estudios ISIC-2010-224
TALLER DE BASE DE DATOS
LeBlanc, 2013
TALLER DE BASE DE DATOS
tempdb database
• La base de datos ‘tempdb’ sirve para realizar todas las actividades
temporales de los objetos que corren en SQL Server y que son
creados por las aplicaciones de los usuarios. Un asunto importante
sobre esta DB es que se crea desde cero cada vez que SQL es
reiniciado, si bien pueden ser creados objetos dentro de esta DB, no
es prudente usarla como medio de transacciones debido a su
volatilidad al reinicio.
LeBlanc, 2013
TALLER DE BASE DE DATOS
model database
• La BD ‘model’ sirve para guardar el modelo de todas las DB que son
creadas en una instancia de SQL Server, es decir sirve como ‘template’
cada vez que creamos una DB nueva.
LeBlanc, 2013
TALLER DE BASE DE DATOS
msdb database
• La DB ‘msdb’ guarda información acerca de los siguientes componentes :
• Service brokers
• Alerts
• Log shipping
• SSIS packages
• Utility control point (UCP)
• Database mail
• Maintenance plans
LeBlanc, 2013
TALLER DE BASE DE DATOS
resource database
• La DB ’resource’ permanece oculta y es solo lectura, es poco utilizada
y su principal propósito es mejorar el proceso de actualización de una
versión de SQL Server a otra más reciente. Esta DB no puede ser
respaldada o restaurada, y no debe alterarse su contenido de forma
manual en ningún momento.
LeBlanc, 2013
TALLER DE BASE DE DATOS
distribution database
• La DB ‘distribution’ existe únicamente cuando se ha configurado una
instancia de SQL Server como distribuidor de replicaciones, en este
caso el tema de replicación se verá mas adelante.
LeBlanc, 2013
TALLER DE BASE DE DATOS
Vista general de las DB del Sistema de SQL Server.
LeBlanc, 2013
TALLER DE BASE DE DATOS
Estructura de las Bases de Datos en SQL Server
LeBlanc, 2013
TALLER DE BASE DE DATOS
Como Crear una Base de Datos
• Cuando creamos una DB el archivo de datos es
creado con todas las definiciones que el usuario
ha dado. Antes de correr el script, crearemos
dos carpetas en el disco C: con SQLData y
SQLLog:
• Abrir SSMS
• Abrir el explorador de objetos y dar click en
la flecha de nuestro servidor
• Click derecho en la carpeta Databases
• Seleccionar Nueva DB o New Database
LeBlanc, 2013
TALLER DE BASE DE DATOS
• En el cuadro de dialogo seleccionar la
opcion ‘General’
• En el nombre de la DB teclear
DBPrueba
• En la seccion de archivos en la
columna Path teclear c:\SQLData
para datos y c:\SQLLog para log de
cambios
• En la seccion File Name teclear
DBPrueba para datos y DBPrueba_log
para log de cambios
• Finalmente click en Aceptar
LeBlanc, 2013
TALLER DE BASE DE DATOS
En este momento ya podemos utilizar la herramienta Query Editor para aplicar
nuestro script y crear la base de datos, utlizaremos el siguiente código:
USE master;
CREATE DATABASE SBSChp4TSQL
ON PRIMARY(NAME='SBSChp4TSQL', FILENAME =
'C:\SQLDATA\SBSChp4TSQL.mdf', SIZE=10MB, MAXSIZE=20,
FILEGROWTH=10%)
LOG ON(NAME='SBSChp4TSQL_log', FILENAME =
'C:\SQLLog\SBSChp4TSQL_log.ldf', SIZE=10MB, MAXSIZE=200,
FILEGROWTH=20%);
LeBlanc, 2013
TALLER DE BASE DE DATOS
.
LeBlanc, 2013
TALLER DE BASE DE DATOS
El script que aplicamos contiene varios parámetros importantes, por ejemplo,
coloca la base de datos en una carpeta específica, y la misma crecerá bajo una tasa
muy específica. A continuación se listan los parámetros más importantes:
• database_name: nombre de la DB, debe ser un dato único.
• ON: especifica el grupo de archivos e inicia la sección donde el archivo de datos
es definido .
• Name: es el nombre lógico del archivo y debe ser único.
• FileName: es la ruta del sistema operativo y el nombre, así como la extensión.
• Size: especifica el tamaño inicial en MB por default. También es posible
especificar tamaño en KB, GB y TB.
• Filegrowth: especifica el crecimiento del archivo en MB pero también puede
especificarse en un porcentaje fijo.
LeBlanc, 2013
TALLER DE BASE DE DATOS
Agregar Archivos y Grupos de Archivos a la BD
• Además de poder agregar objetos al archivo primario de la BD,
también tenemos la posibilidad de agregar otros archivos y grupos de
archivos a nuestra base de datos, estos archivos se reconocen por su
extensión, que es .ndf, los archivos de datos secundarios se utilizan
generalmente para agregar mayor espacio a la base de datos en el
supuesto que el archivo principal alcance su límite.
• También es recomendable agrupar los archivos, cuando la DB es
creada el grupo de archivos principal contiene el archivo de datos
principal que se crea por default.
LeBlanc, 2013
TALLER DE BASE DE DATOS
LeBlanc, 2013
TALLER DE BASE DE DATOS
Como agregar archivos y grupos de
archivos por medio de SSMS
• Abrir SSMS
• Abrir el explorador de objetos y dar
click en la flecha de nuestro servidor
• Click derecho en la DB DBPrueba y
seleccionar ‘Properties’
• Seleccionar ‘Filegroups’ en lista de
‘Select a Page’
• Click en el botón ‘Add’
• En el renglón que se abre teclear en la
columna ‘Name’ DBpruebaFG
• En la columna ‘Default’ palomear el
checkbox
LeBlanc, 2013
TALLER DE BASE DE DATOS
• En la izquierda del panel seleccionar ‘Files’ y maximizar el cuadro de dialogo.
• Click en ‘Add’
• En el renglón nuevo en la columna ‘Logical Name’ teclear ‘DBPruebaF1’
• En la columna ‘Filegroup’ seleccionar ‘DBpruebaFG’
• En la columna ‘Path’ buscar la ruta ‘C:\SQLData’
• En la collumna ‘File Name’ teclear ‘DBPruebaF1.ndf’
• Click en Aceptar.
• Revisamos la ruta que exista el archivo
LeBlanc, 2013
TALLER DE BASE DE DATOS
.
LeBlanc, 2013
TALLER DE BASE DE DATOS
Agregar Archivos y grupos de archivos por medio de T-SQL y Query Editor:
• Abrir Query Editor en SSMS
• Teclear el siguiente código
USE master;
ALTER DATABASE SBSChp4TSQL Add FILEGROUP SBSTSQLGroup1;
ALTER DATABASE SBSChp4TSQL Add File (
NAME='SBSChp4TSQL2', FILENAME = 'C:\SQLDATA\SBSTSQL2.ndf',
SIZE=10MB, MAXSIZE=20, FILEGROWTH=10% )
TO FILEGROUP SBSTSQLGroup1;
LeBlanc, 2013
TALLER DE BASE DE DATOS
Query al ser
ejecutado en el
Query Editor
de SSMS
Revisamos en el
Explorador de
Windows que el
archivo haya sido
creado LeBlanc, 2013
TALLER DE BASE DE DATOS
LeBlanc, 2013
TALLER DE BASE DE DATOS
Pasos para separar una DB por medio de SSMS
• Abrir SSMS
• Expandir explorador de objetos y el nodo
del servidor correspondiente
• Expandir la carpeta de la DB
correspondiente
• Click derecho en SBSChp4TSQL
• Seleccionar Task/Detach
• En el cuadro de dialogo palomear los
checkboxes de ‘Drop Connections’ y
‘Update Statistics’.
• Click ‘OK’
LeBlanc, 2013
TALLER DE BASE DE DATOS
En este momento la DB SBSChp4TSQL ya no aparece en la lista del Explorador
de objetos del SSMS, pero en la carpeta de datos del SQL (C:\SQLData) el
archivo SBSTSQL1.mdf se encuentra listo para ser trasladado al servidor que
sea requerido. En este caso lo volveremos a adjuntar a nuestra instancia de
SQL server.
• Abrir SMMS
• Abrir Explorador de Objetos y expandir el nodo del servidor requerido
• Click derecho en la carpeta Databases
• Clcik ‘Attach’ y aparecerá el dialogo correspondiente, click en ‘Add’
• Aparece un nuevo dialogo, expandir la carpeta del disco C:
• Localizar y expandir la carpeta C:\SQLData y seleccionar el archivo .MDF
correspondiente, en este caso es SBSTSQL1.mdf
• Click ‘OK’, al finalizar el proceso la DB aparecerá en el Explorador de
objetos de nuevo
LeBlanc, 2013
TALLER DE BASE DE DATOS
.
LeBlanc, 2013
TALLER DE BASE DE DATOS
El proceso de Separar y Adjuntar por medio del Query Editor es más
sencillo, seguir los siguientes pasos
Separar (Detach):
• Abrir SMSS y abrir un nueva ventana de Queries
• Teclear y ejecutar el siguiente script:
USE Master;
EXEC sp_detach_db @dbname = 'SBSChp4TSQL';
LeBlanc, 2013
TALLER DE BASE DE DATOS
Adjuntar (Attach):
• Abrir SMSS y abrir un nueva ventana de Queries
• Teclear y ejecutar el siguiente script:
USE master;
CREATE DATABASE SBSChp4TSQL ON
(FILENAME = 'C:\SQLData\SBSTSQL1.mdf'),
(FILENAME = 'C:\SQLData\SBSTSQL2.ndf'),
(FILENAME = 'C:\SQLLog\SBSTSQL_Log.ldf')
FOR ATTACH;
LeBlanc, 2013
TALLER DE BASE DE DATOS
LeBlanc, 2013
TALLER DE BASE DE DATOS
Estándares Generales:
• No utilizar espacios en blanco en los nombres de objetos o columnas
• El carácter de subrayado es aceptable en los nombres pero no el
guión medio ya que se puede confundir con el signo de resta.
• Es recomendable usar PascalCase, es decir, utilizar como mayúscula la
primera letra de cada palabra que forma el nombre de un objeto.
• No utilizar palabras reservadas del SQL Server.
• Las palabras en singular tienen preferencia sobre los plurales, aunque
esto es meramente una cuestión de preferencias del desarrollador.
LeBlanc, 2013
TALLER DE BASE DE DATOS
LeBlanc, 2013
TALLER DE BASE DE DATOS
LeBlanc, 2013
TALLER DE BASE DE DATOS
Cada tipo de datos tiene subcategorías, todas las columnas en una tabla,
variables y parámetros deben estar relacionados a un tipo de dato. La
integridad de la DB depende en gran medida de que sean seleccionados los
tipos de datos apropiados para cada objeto.
LeBlanc, 2013
TALLER DE BASE DE DATOS
Tipos de datos Numéricos
• Estos tienen dos subcategorias, exact y approximate
LeBlanc, 2013
TALLER DE BASE DE DATOS
Categoría Unicode (guarda datos tipo unicode y no-unicode):
• nchar(n): puede almacenar entre 1 y 4000 caractéres.
• nvarchar(n): puede almacenar hasta 2 GB.
• ntext: tipo obsoleto, fue sustituido por nvarchar().
LeBlanc, 2013
TALLER DE BASE DE DATOS
Tipos de datos Date y Time
Existen 6 tipos de datos en esta categoría, los cuales pueden almacenar datos
en diferentes formatos:
LeBlanc, 2013
TALLER DE BASE DE DATOS
• datetime: similar a smalldatetime pero con mayor rango de precisión,
almacena fechas entre 01-01-01 y 12-31-9999; y horas incluyendo
milésimas de segundos; ejemplo: ‘04/01/2012 11:15:04:888’
• datetime2(n): similar a datetime pero con mayor precisión en las
milesimas de segundo, se puede especificar entre 0 y 7 en el
parámetro correspondiente.
• datetimeoffset: este tipo de dato contiene todas las funcionalidades
del datetime2 pero con control sobre la zona horaria; por ejemplo: el
valor ‘04/01/2012 03:10:24 -06:00’ incluye la zona horaria y es
aceptable para este tipo de dato.
LeBlanc, 2013
TALLER DE BASE DE DATOS
Otros tipos
de datos
Además de
los ya
mencionados,
SQL Server
incluye otros
tipos de datos
los cuales se
muestran en
esta lista
LeBlanc, 2013
TALLER DE BASE DE DATOS
Creación de tablas y columnas en la DB
• Una base de datos está compuesta por tablas, que a su vez contienen
columnas, estas en conjunto forman los renglones de la tabla, los cuales
contienen registros independientes con información muy específica.
• La propiedad más común en una columna es ‘Allow nulls’, la cual permite
insertar renglones en la tabla sin integrar un valor específico para una
columna en particular. Null no significa cadena vacia, sino la ausencia de un
valor. Así mismo, un valor null no es igual a otro valor null.
• Para este primer ejercicio usaremos SSMS.
LeBlanc, 2013
TALLER DE BASE DE DATOS
Para crear la tabla utilizaremos la información contenida en la siguiente tabla:
LeBlanc, 2013
TALLER DE BASE DE DATOS
Procedimiento para crear una nueva tabla en SSMS
• Abrimos SSMS
• Expander la carpeta Databases / DBPrueba
• Expander la carpeta ‘Security’
• Click derecho en ‘Schemas’ y seleccionar ‘New Schema’
• En el cuadro de dialogo: teclear HumanResources en el campo ‘Name’ y
teclear dbo en el campo ‘Owner’.
• Click OK.
• Click derecho en la carpeta ‘Tables’-’New Table’y se abre el ‘Table
Designer’.
• Seleccionar ‘New Table’ en el menú.
LeBlanc, 2013
TALLER DE BASE DE DATOS
Una vez que tenemos abierto el ‘Table
Designer’ podemos comenzar a capturar
los campos que vimos en la tabla anterior
con las características correspondientes
LeBlanc, 2013
TALLER DE BASE DE DATOS
Hasta ahora no hemos dado nombre a la nueva tabla, a la derecha de la
pantalla está la ventana ‘properties’ (en caso de no estar visible activarla en el
menú view/properties window).
• En el primer campo (Name) tecleamos el nombre de la tabla que es
‘Address’.
• Localizamos el campo ‘Schema’ y seleccionamos HumanResources.
• Expander ‘Regular Data Space Specification’ y en la propiedad ‘Filegroup or
partition’ seleccionar DBPruebaFG.
• Click en el botón de Grabar Todo.
• La tabla ha sido generada y ahora es visible en la carpeta ‘Tables’ de la DB.
LeBlanc, 2013
TALLER DE BASE DE DATOS
LeBlanc, 2013
TALLER DE BASE DE DATOS
Instrucciones para crear la tabla por medio de un script en T-SQL
y Query Editor
USE DBPrueba;
CREATE TABLE HumanResources.Address (
AddressID int NOT NULL IDENTITY(1,1),
StreetAddress varchar(125) NOT NULL,
StreetAddress2 varchar(75) NULL,
City varchar(100) NOT NULL,
State char(2) NOT NULL,
EmployeeID int NOT NULL )
ON [DBPruebaFG];
LeBlanc, 2013
TALLER DE BASE DE DATOS
Modificación de Tablas
LeBlanc, 2013
TALLER DE BASE DE DATOS
Procedimiento para modificar tablas en SSMS
• Abrir SSMS y conectar al servidor correspondiente
• Expandir la carpeta ‘Databases’ y la DB ‘DBPrueba’, así como la carpeta ‘Tables’
• Click derecho en la tabla HumanResources.Employee y seleccionar ‘Design’
• Teclear el nuevo campo ‘Gender’ en el nuevo renglón, tipo char(1), y aceptar
datos nulos.
• Grabar todo.
LeBlanc, 2013
TALLER DE BASE DE DATOS
USE DBPrueba;
ALTER TABLE HumanResources.Employee
ADD FullName AS LastName+', '+FirstName;
LeBlanc, 2013
TALLER DE BASE DE DATOS
LeBlanc, 2013
TALLER DE BASE DE DATOS
Para continuar con la práctica debemos ejecutar el siguiente script en
Query Editor:
USE DBPrueba;
ALTER TABLE HumanResources.Address
ADD Active bit NOT NULL;
ALTER TABLE HumanResources.Address
ADD SocialSecurityNumber varchar(10) NOT NULL;
LeBlanc, 2013
TALLER DE BASE DE DATOS
Ejemplo de instrucciones para realizar los cambios por medio de
Query Editor:
USE DBPrueba;
ALTER TABLE HumanResources.Address
ADD CONSTRAINT PK_HumanResourcesEmployee_EmployeeID
PRIMARY KEY (EmployeeID);
ALTER TABLE HumanResources.Address
ADD CONSTRAINT DF_HumanResourcesEmployee_Active_True
DEFAULT(1) FOR Active;
ALTER TABLE HumanResources.Address
ADD CONSTRAINT UQ_HumanResourcesEmployee_SocialSecurityNumber
UNIQUE (SocialSecurityNumber);
LeBlanc, 2013
TALLER DE BASE DE DATOS
Foreign Key
Un último tipo de Constraint es el Foreign Key, este juega un rol de gran importancia
en para mantener la integridad de la información dela DB. Como pudimos ver el
campo EmployeeID se encuentra en la tabla Address, sin embargo, no hemos
declarado una tabla que sirva para guardar la información personal de cada
empleado como corresponde bajo las reglas de las formas normales de una DB. Para
ello utilizaremos el siguiente query:
use dbprueba;
CREATE TABLE HumanResources.Employee (
EmployeeID int NOT NULL IDENTITY(1,1), Use dbprueba
ALTER TABLE
FirstName varchar(50) NOT NULL,
HumanResources.employee
MiddleName varchar(50) NULL, ADD CONSTRAINT
LastName varchar(50) NOT NULL PK_employee
) ON [dbpruebafg]; PRIMARY KEY (EmployeeID);
LeBlanc, 2013
TALLER DE BASE DE DATOS
• En la tabla recién creada HumanResources.Employee tenemos el campo
EmployeeID que es exactamente igual al campo EmployeeID que tiene la tabla
HumanResources.Address. Regularmente cuando deseamos insertar nuevos
registros en la tabla Address primero revisamos que el número de empleado
exista en la tabla Employee, esto lo hacemos por medio de código de
programación.
• La particularidad de un Foreign Key es que puede hacer esta validación y asegurar
que solo números de empleado válidos sean insertados en la tabla Address sin
necesidad de usar código de programación.
Antes de continuar ejecutar el siguiente script:
USE DBPrueba
ALTER TABLE HumanResources.Address DROP PK_Address
ALTER TABLE HumanResources.Address
ADD CONSTRAINT PK_HumanResourcesAddress_AddressID
PRIMARY KEY (AddressID);
LeBlanc, 2013
TALLER DE BASE DE DATOS
En el query anterior eliminamos el PK que tenia la tabla y creamos uno nuevo,
esto es debido a que solo se puede tener un PK por tabla, y además un FK solo
puede ser declarado en la tabla donde el campo en cuestión no es PK. Seguir
las Instricciones:
• Abrir SSMS y expandir Databases/DBPrueba/Tables/HumanResources.Address
• Click derecho en la carpeta ‘Keys’ y seleccionar ‘New Foreign Key’
• Aparecerá el cuadro de dialogo ’Foreign Key Relationships’, en la propiedad
‘(Name)’ teclear el valor FK_Employee_To_Address_On_EmployeeID.
• Click en ‘Table and Columns Specification ’ y click en el boton que aparece
• En el cuadro de dialogo que aparece seleccionar Employee como PK Table.
LeBlanc, 2013
TALLER DE BASE DE DATOS
• Seleccionar EmployeeID en el combobox que aparece justo debajo
• En la lista de FK Table seleccionar EmployeeID
• Click Ok/Close/Save all/ y si aparece ventana de confirmación aceptar
LeBlanc, 2013
TALLER DE BASE DE DATOS
Creación y Mantenimiento de Índices
LeBlanc, 2013
TALLER DE BASE DE DATOS
LeBlanc, 2013
TALLER DE BASE DE DATOS
Eliminación y modificación de objetos en la DB
• DROP TABLE (T-SQL): Quita una o varias definiciones de tabla y todos los datos,
índices, desencadenadores, restricciones y especificaciones de permisos de
esas tablas.
Sintaxis:
DROP TABLE [ database_name . [ schema_name ] . | schema_name . ]
table_name [ ,...n ] [ ; ]
Nota: No se puede utilizar DROP TABLE para quitar una tabla a la que haga
referencia una restricción FOREIGN KEY. Primero se debe quitar la restricción
FOREIGN KEY o la tabla de referencia. Si la tabla de referencia y la tabla que
tiene la clave principal se van a quitar en la misma instrucción DROP TABLE, la
tabla de referencia debe aparecer primero https://msdn.microsoft.com. 2015
TALLER DE BASE DE DATOS
• ALTER TABLE (T-SQL): Modifica una definición de tabla al alterar,
agregar o quitar columnas y restricciones, reasignar y regenerar
particiones, o deshabilitar o habilitar restricciones y desencadenadores.
Sintaxis:
https://msdn.microsoft.com. 2015
TALLER DE BASE DE DATOS
ALTER TABLE [ database_name . | ADD | [ WITH CHECK | NOCHECK ] )
[ schema_name ] . | CHECK | NOCHECK CONSTRAINT
schema_name . ] table_name <column_definition> | REBUILD
ALL | constraint_name [
ALTER COLUMN | ,...n ] [ [PARTITION = ALL]
column_name <computed_column_definition>
| ENABLE | DISABLE TRIGGER [ WITH ( <rebuild_option> [
[ type_schema_name. ] | <table_constraint> ,...n ] ) ]
type_name ALL | trigger_name [ ,...n ]
| <column_set_definition> | [ PARTITION =
[( | ENABLE | DISABLE partition_number
[ ,...n ] CHANGE_TRACKING
precision [ , scale ] [ WITH (
| DROP [ WITH ( <single_partition_rebuild_optio
| max [ CONSTRAINT ] TRACK_COLUMNS_UPDATED = n> [ ,...n ] ) ]
ON | OFF ) ]
| constraint_name ]
xml_schema_collection | SWITCH [ PARTITION
[ WITH source_partition_number_expr ]
)] ession ]
( | <table_option>
[ COLLATE collation_name ] <drop_clustered_constraint_opt TO target_table | <filetable_option>
[ NULL | NOT NULL ] [ ion> [ ,...n ] )
[ PARTITION [;]
SPARSE ] ] target_partition_number_expre
| ADD | DROP ssion ]
[ ,...n ]
ROWGUIDCOL | PERSISTED [ WITH (
| COLUMN <low_lock_priority_wait> )]
| NOT FOR REPLICATION |
SPARSE column_name | SET ( FILESTREAM_ON =
| [ WITH { CHECK | [ ,...n ] partition_scheme_name
NOCHECK } ] | filegroup | "default" | "NULL"
[ ,...n ] https://msdn.microsoft.com. 2015
TALLER DE BASE DE DATOS
Ejercicio: relice la siguiente práctica;
• Crear una tabla llamada empleados
• Agregar a la tabla los campos; EmpleadoID, Nombre, Fecha_nacimiento,
Genero, Domicilio, Telefono, Edo_civil, E_mail: y dar a cada uno de los
campos un tipo de dato acorde a la información que debe capturarse.
• modifique
https://msdn.microsoft.com. 2015
TALLER DE BASE DE DATOS
Bibliografía Consultada
Patrick LeBlanc, Microsoft SQL Server 2012 Step by Step. O’Reilly Media Inc.
Sebastopol, CA, USA. 2013. (Traducción realizada por José A.
Sandoval Acosta).
Pratt Philip J., Last Mary Z. SQL. 1ra. Edición. Anaya Multimedia. Madrid,
España. 2009.
Adam Jorgersen, Microsoft SQL Server 2012 Bible. John Wiley & Sons, Inc.
Indianapolis, Indiana. 2012.