Taller de Base de Datos - Unidad 2 lenguage DDL

73
Ingeniería en Sistemas Computacionales Taller de Base de Datos Unidad II: Lenguaje de Definición de Datos DDL 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

Transcript of Taller de Base de Datos - Unidad 2 lenguage DDL

Page 1: Taller de Base de Datos - Unidad 2 lenguage DDL

Ingeniería en Sistemas Computacionales

Taller de Base de DatosUnidad II: Lenguaje de Definición de

Datos DDL

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

Page 2: Taller de Base de Datos - Unidad 2 lenguage DDL

Competencia: Implementar esquemas de bases de datos a través de SQL en un SGBD.

TALLER DE BASE DE DATOS

Page 3: Taller de Base de Datos - Unidad 2 lenguage DDL

Diseño de bases de datos en SQL Server• Una base de datos es un ‘contenedor’ de todos los objetos que SQL puede

manejar en un ambiente relacional. • Antes de iniciar con la creación y diseño de bases de datos debemos

entender el sistema de BD que es instalado por default con SQL Server, cada una de las siguientes bases de datos tienen un propósito específico y es requerida por SQL Server:

• master• tempdb• model• resource• distribution

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 4: Taller de Base de Datos - Unidad 2 lenguage DDL

master database • La base de datos ‘master’ como su nombre lo indica es la base de

datos del sistema, sin esta, SQL Server no puede funcionar, esta contiene la información sobre objetos del SQL tales como:

• Base de datos• Mirroring• Configuraciones• Logins• Etc.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 5: Taller de Base de Datos - Unidad 2 lenguage DDL

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.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 6: Taller de Base de Datos - Unidad 2 lenguage DDL

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.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 7: Taller de Base de Datos - Unidad 2 lenguage DDL

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

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 8: Taller de Base de Datos - Unidad 2 lenguage DDL

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.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 9: Taller de Base de Datos - Unidad 2 lenguage DDL

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.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 10: Taller de Base de Datos - Unidad 2 lenguage DDL

Vista general de las DB del Sistema de SQL Server.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 11: Taller de Base de Datos - Unidad 2 lenguage DDL

Cada DB en SQL Server contiene dos archivos de datos:• Un ‘Data File’ que contiene todos los objetos

de la BD como tablas, vistas, procedimientos almacenados, etc.• Un ‘Log File’ que contiene información que

sirve para recuperar transacciones en la DB.

TALLER DE BASE DE DATOS

Estructura de las Bases de Datos en SQL Server

LeBlanc, 2013

Page 12: Taller de Base de Datos - Unidad 2 lenguage DDL

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

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 13: Taller de Base de Datos - Unidad 2 lenguage DDL

• 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

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 14: Taller de Base de Datos - Unidad 2 lenguage DDL

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 SBSChp4TSQLON 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%);

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 15: Taller de Base de Datos - Unidad 2 lenguage DDL

.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 16: Taller de Base de Datos - Unidad 2 lenguage DDL

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.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 17: Taller de Base de Datos - Unidad 2 lenguage DDL

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.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 18: Taller de Base de Datos - Unidad 2 lenguage DDL

En la imagen podemos ver dos ‘filegroups’ o grupos de archivos• El grupo de archivos primario contiene

el archivo primario de datos.• El grupo de archivos secundario

contiene dos archivos secundarios de datos.• Y finalmente el archivo de log de

cambios.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 19: Taller de Base de Datos - Unidad 2 lenguage DDL

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

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 20: Taller de Base de Datos - Unidad 2 lenguage DDL

• 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

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 21: Taller de Base de Datos - Unidad 2 lenguage DDL

.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 22: Taller de Base de Datos - Unidad 2 lenguage DDL

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;

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 23: Taller de Base de Datos - Unidad 2 lenguage DDL

Query al ser ejecutado en el

Query Editor de SSMS

TALLER DE BASE DE DATOS

Revisamos en el Explorador de Windows que el archivo haya sido

creadoLeBlanc, 2013

Page 24: Taller de Base de Datos - Unidad 2 lenguage DDL

Separar y Adjuntar DBs en SQL Server (Detch y Attach)

• Que es lo que sucede si por alguna razón es necesario quitar una DB de una instancia y trasladarla a otra instancia de SQL ya sea en el mismo servidor o en otro ubicado en otro sitio. En estos casos es posible utilizar SSMS o bien T-SQL Queries.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 25: Taller de Base de Datos - Unidad 2 lenguage DDL

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

TALLER DE BASE DE DATOSPasos para separar una DB por medio de SSMS

LeBlanc, 2013

Page 26: Taller de Base de Datos - Unidad 2 lenguage DDL

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

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 27: Taller de Base de Datos - Unidad 2 lenguage DDL

.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 28: Taller de Base de Datos - Unidad 2 lenguage DDL

El proceso de Separar y Adjuntar por medio del Query Editor es más sencillo, seguir los siguientes pasosSeparar (Detach):• Abrir SMSS y abrir un nueva ventana de Queries• Teclear y ejecutar el siguiente script:

USE Master; EXEC sp_detach_db @dbname = 'SBSChp4TSQL';

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 29: Taller de Base de Datos - Unidad 2 lenguage DDL

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;

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 30: Taller de Base de Datos - Unidad 2 lenguage DDL

Creación de tablas en SQL Server• Antes de iniciar con la creación de tablas y otros objetos de la DB es

importante apegarnos a un estándar de desarrollo, esto no es un requisito, sin embargo no apegarnos a un estándar puede implicar problemas para los desarrolladores al momento de acceder a la información contenida en la DB.

A continuación se listan algunas de las prácticas a las que podemos apegarnos para tener un mejor resultado al momento de generar los nombres de los objetos que forman nuestra DB:

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 31: Taller de Base de Datos - Unidad 2 lenguage DDL

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.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 32: Taller de Base de Datos - Unidad 2 lenguage DDL

Estándares para los nombres de Tablas:

• Los nombres deben referirse claramente al contexto de la tabla en cuestión sin dejar cabida a la ambigüedad.• Los nombres deben ser únicos en la DB (no repetirlos en columnas,

tablas, vistas, SP, etc.).

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 33: Taller de Base de Datos - Unidad 2 lenguage DDL

Estándares para los nombres de columnas:

• Los nombres deben ser únicos en cada tabla• Los nombres deben contextualizarse en uso y propósito de la columna• Se debe utilizar el tipo de dato correcto para cada columna (no

confundir entero con flotantes, etc.)

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 34: Taller de Base de Datos - Unidad 2 lenguage DDL

Tipos de Datos en SQL ServerSQL Server tiene 4 tipos de datos distintos, que se muestran en la siguiente figura:

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.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 35: Taller de Base de Datos - Unidad 2 lenguage DDL

Tipos de datos Numéricos• Estos tienen dos subcategorias, exact y approximate

Debemos seleccionar el tipo de dato adecuado para cada columna de nuestras tablas

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 36: Taller de Base de Datos - Unidad 2 lenguage DDL

• Así mismo, la categoría de números exactos esta dividida en dos subcategorías, decimal y numeric. Teniendo dos características básicas, precisión y escala. Precisión es el total de dígitos que se pueden almacenar en ambos lados del punto decimal, y puede ser un valor entre 1 y 38. Escala es la cantidad de dígitos que se pueden almacenar a la derecha del punto decimal. Este valor está entre cero y la precisión asignada. +• Por ejemplo; si deseas crear una variable que

almacene un total de 4 dígitos de los cuales 2 son decimales debes utilizar una instrucción como esta: decimal(4,2).

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 37: Taller de Base de Datos - Unidad 2 lenguage DDL

Tipos de dato String

• El tipo de dato String está formado por 3 subcategorías: character, Unicode y binary. El almacenamiento máximo que se puede lograr es de 2 GB. Cada subcategoría se divide en 3 subcategorías.

Categoría character (guarda datos no-unicode):• char(n): puede almacenar entre 1 y 8000 caractéres.• varchar(n): puede almacenar hasta 2 GB.• text: tipo obsoleto, fue sustituido por varchar().

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 38: Taller de Base de Datos - Unidad 2 lenguage DDL

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

Categoría binary string (guarda datos tipo binario):• binary(n): puede almacenar entre 1 y 8000 caractéres.• varbinary(n): puede almacenar hasta 2 GB.• image: tipo obsoleto, fue sustituido por varbinary().

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 39: Taller de Base de Datos - Unidad 2 lenguage DDL

Tipos de datos Date y TimeExisten 6 tipos de datos en esta categoría, los cuales pueden almacenar datos en diferentes formatos:

• time(n): Almacena la hora sin tomar en cuenta zona horaria, basado en 24 horas. Acepta un argumento sobre fracción de segundos.• date: Almacena fechas entre el 01-01-01 y 12-31-9999.• Smalldatetime: Almacena fecha y hora, la fecha comprendida entre

01/01/1900 y 06/06/2079, y la hora con precisión en segundos.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 40: Taller de Base de Datos - Unidad 2 lenguage DDL

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

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 41: Taller de Base de Datos - Unidad 2 lenguage DDL

Otros tipos de datos

TALLER DE BASE DE DATOS

Además de los ya

mencionados, SQL Server

incluye otros tipos de datos los cuales se muestran en

esta lista

LeBlanc, 2013

Page 42: Taller de Base de Datos - Unidad 2 lenguage DDL

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.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 43: Taller de Base de Datos - Unidad 2 lenguage DDL

Para crear la tabla utilizaremos la información contenida en la siguiente tabla:

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 44: Taller de Base de Datos - Unidad 2 lenguage DDL

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

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 45: Taller de Base de Datos - Unidad 2 lenguage DDL

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

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 46: Taller de Base de Datos - Unidad 2 lenguage DDL

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.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 47: Taller de Base de Datos - Unidad 2 lenguage DDL

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 48: Taller de Base de Datos - Unidad 2 lenguage DDL

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

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 49: Taller de Base de Datos - Unidad 2 lenguage DDL

Modificación de Tablas

• Así como creamos la tabla Address tanto en SSMS y T-SQL también es posible modificar las tablas, agregar nuevos campos, cambiar el tipo de dato que contienen los campos y eliminar campos que ya no son requeridos.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 50: Taller de Base de Datos - Unidad 2 lenguage DDL

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.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 51: Taller de Base de Datos - Unidad 2 lenguage DDL

Como Crear Computed Columns en la Tabla• Un campo computed o campo calculado es aquel que utiliza una

fórmula para insertar su valor y por lo general no requiere ser capturado por el usuario. Esto es algo muy fácil de conseguir utilizando SSMS ya que la pantalla de ‘properties’ proporciona las herramientas necesarias.

Realizar el siguiente ejercicio:• 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 seleccione

‘Design’

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 52: Taller de Base de Datos - Unidad 2 lenguage DDL

• Debajo del campo Gender, teclear el campo FirstName, tipo nchar(25); el campo LastName, tipo nchar(25); y finalmente el campo FullName, tipo nchar (50); en todos permitir nulos.• Una vez creado el campo FullName en la parte

inferior de nuestra ventana se encuentra el dialogo de ‘Column Properties’ en el buscamos la propiedad ‘Computed Column Specification’ y en la propiedad (Formula) tecleamos:

LastName+', '+FirstName• Guardamos todo• Con esto el campo FullName se actualizará por si

solo cada vez las columnas FirstName y LastName del renglón correspondiente sean modificadas.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 53: Taller de Base de Datos - Unidad 2 lenguage DDL

Ejemplo de como crear un campo Computed por medio de un query:

USE DBPrueba;ALTER TABLE HumanResources.Employee ADD FullName AS LastName+', '+FirstName;

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 54: Taller de Base de Datos - Unidad 2 lenguage DDL

Agregar Reglas de Restricción a las Tablas (Constraints)

El objetivo principal de los constraints es asegurar la integridad de la información en la DB, mejorando la validación y consistencia de los datos.

Primary Key Constraints• Un Primary Key es un campo o columna de una tabla que contiene una lista

de datos única. Es posible crear Primary Key con casi cualquier columna o conjunto de columnas teniendo como limitante que un Primary Key no acepta nulos, su valor debe ser único, y solo es posible tener un Primary Key por cada tabla.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 55: Taller de Base de Datos - Unidad 2 lenguage DDL

Otros tipos de constraints:• Default Constraints: Son utilizados cuando se posee una columna en la tabla

que guarda valores específicos por cada renglón de la misma. Un campo que guarda valores falso o verdadero es un buen ejemplo.• Unique Constraints: Estos sirven para asegurarse que no se inserten valores

repetidos por columna por lo que no deben ser confundidos con un Primary Key, el cual puede ser un conjunto de columnas. El numero de Seguro Social es un ejemplo de este tipo de constraint.• Check Constraints: Estos permiten valorar la información insertada en la

columna de acuerdo a una expresión lógica.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 56: Taller de Base de Datos - Unidad 2 lenguage DDL

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;

Una vez ejecutado el query, abrimos el SSMS y utlizaremos DBPrueba

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 57: Taller de Base de Datos - Unidad 2 lenguage DDL

• Seleccionamos la carpeta ‘Tables’ y la tabla HumanResources.Address, click con el derecho y seleccionar ‘Design’.• Click derecho en el campo EmployeeID y seleccionamos

en el menú la opcion ‘Set Primary Key’.• Seleccionar la columna ‘Active’, en la ventana de

propiedades de la columna buscar ‘Default Value’ y teclear 1 como valor predeterminado.• En la barra de menú click en el icono de ‘Manage indexes

and keys’.• Aparecerá la ventana de ‘Indexes/Keys’, click en el botón

Add, en la propiedad ‘Name’ teclear UQ_Employee_SSN y en la propiedad ‘Unique’ teclear Yes.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 58: Taller de Base de Datos - Unidad 2 lenguage DDL

• En el explorador de objetos expandir la tabla HumanResources.Address, click derecho en columna ‘Constraints’ y seleccionar ‘New Constraint’.• En la propiedad ‘Name’ teclear

CK_Employee_Gender_MF.• Buscar la propiedad ’Expression’ y click en el

boton de la derecha, teclear la expresion ([Gender] = 'Female' OR [Gender] = 'Male')• Click en ‘Ok’• Guardar todo.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 59: Taller de Base de Datos - Unidad 2 lenguage DDL

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

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 60: Taller de Base de Datos - Unidad 2 lenguage DDL

Foreign KeyUn ú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), FirstName varchar(50) NOT NULL, MiddleName varchar(50) NULL, LastName varchar(50) NOT NULL) ON [dbpruebafg];

TALLER DE BASE DE DATOS

LeBlanc, 2013

Use dbpruebaALTER TABLE HumanResources.employee ADD CONSTRAINT PK_employee PRIMARY KEY (EmployeeID);

Page 61: Taller de Base de Datos - Unidad 2 lenguage DDL

• 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 DBPruebaALTER TABLE HumanResources.Address DROP PK_AddressALTER TABLE HumanResources.Address ADD CONSTRAINT PK_HumanResourcesAddress_AddressID PRIMARY KEY (AddressID);

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 62: Taller de Base de Datos - Unidad 2 lenguage DDL

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.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 63: Taller de Base de Datos - Unidad 2 lenguage DDL

• 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

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 64: Taller de Base de Datos - Unidad 2 lenguage DDL

Creación y Mantenimiento de Índices

• Un índice es objeto de la DB basado en tablas y, vistas y sirven para hacer más rápida la búsqueda y recuperación de la información almacenada en la DB. • Se debe ser cuidadoso al crear los índices ya que sobrecargar la DB con

muchos índices puede resultar contraproducente y afectar el desempeño de la DB al momento de insertar, modificar y recuperar información.• Los índices son creados sobre una columna o grupo de columnas de una

tabla.• Los índices se crean automáticamente cuando los constraints PRIMARY KEY y

UNIQUE se definen en las columnas de tabla.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 65: Taller de Base de Datos - Unidad 2 lenguage DDL

• Los índices pueden ser clasificados en dos tipos básicos: Clostered y Nonclostered. El propósito de ambos tipos es mejorar como el motor de base de datos de SQL Server accede a la información. • Clostered: Los índices agrupados o clostered ordenan y almacenan los

registros de una tabla o vista basándose en los valores de su campo clave (un campo de ID por ejemplo). Son campos (o columnas) incluidos en la definición del índice. Solo puede haber un índice clustered por cada tabla, porque las filas de datos solo pueden estar ordenadas de una forma.La única manera en que los registros de una tabla o vista estén almacenados de forma ordenada es cuando contiene un índice agrupado. Cuando una tabla tiene un índice agrupado, la tabla se denomina tabla agrupada. Si una tabla no tiene un índice clúster, sus filas de datos están almacenadas en una estructura sin ordenar denominada montón.

TALLER DE BASE DE DATOS

(LeBlanc, 2013)

https://msdn.microsoft.com. 2015

Page 66: Taller de Base de Datos - Unidad 2 lenguage DDL

• Nonclostered: Los índices no agrupados tienen una estructura aparte de la de los registros de una tabla. Un índice no clúster contiene los valores de clave de índice no clúster y cada entrada de valor de clave tiene un puntero a la fila de datos que contiene el valor clave.El puntero de una fila de índice Nonclostered hacia una fila de datos se denomina localizador de fila. La estructura del localizador de filas depende de si las páginas de datos están almacenadas en un montón o en una tabla agrupada. Si están en un montón, el localizador de filas es un puntero hacia la fila. Si están en una tabla agrupada, el localizador de fila es la clave de índice clúster.Puede agregar columnas sin clave al nivel hoja de un índice no clúster con el fin de eludir los límites existentes para las claves de índice, 900 bytes y 16 columnas de clave, así como para ejecutar consultas indizadas y totalmente cubiertas.

TALLER DE BASE DE DATOS

https://msdn.microsoft.com. 2015

Page 67: Taller de Base de Datos - Unidad 2 lenguage DDL

Como Crear un Nonclosterd Index• Insertar en la tabla Employee un nuevo campo

SSN, char(11);• Abrir SSMS y expandir

Databases/DBPrueba/Tables/Employee/Indexes• Click derecho en la carpeta ‘Indexes’ y seleccionar

New Index/Nonclostered Index• En el cuadro de dialogo teclear en el campo

‘Name’ ID_SSN, y palomear la casilla ‘Unique’• Click en el boton ‘Add’ y en el caudro de dialogo

seleccionar SSN y OK.

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 68: Taller de Base de Datos - Unidad 2 lenguage DDL

TALLER DE BASE DE DATOS

LeBlanc, 2013

Page 69: Taller de Base de Datos - Unidad 2 lenguage DDL

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

TALLER DE BASE DE DATOS

https://msdn.microsoft.com. 2015

Page 70: Taller de Base de Datos - Unidad 2 lenguage DDL

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

TALLER DE BASE DE DATOS

https://msdn.microsoft.com. 2015

Page 71: Taller de Base de Datos - Unidad 2 lenguage DDL

TALLER DE BASE DE DATOS

https://msdn.microsoft.com. 2015

ALTER TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name ALTER COLUMN column_name [ type_schema_name. ] type_name [ ( precision [ , scale ] | max | xml_schema_collection ) ] [ COLLATE collation_name ] [ NULL | NOT NULL ] [ SPARSE ] | ADD | DROP ROWGUIDCOL | PERSISTED | NOT FOR REPLICATION | SPARSE | [ WITH { CHECK |

NOCHECK } ] | ADD <column_definition> | <computed_column_definition> | <table_constraint> | <column_set_definition> [ ,...n ] | DROP [ CONSTRAINT ] constraint_name [ WITH ( <drop_clustered_constraint_option> [ ,...n ] ) ] [ ,...n ] | COLUMN column_name [ ,...n ]

[ ,...n ] | [ WITH CHECK | NOCHECK ] CHECK | NOCHECK CONSTRAINT ALL | constraint_name [ ,...n ] | ENABLE | DISABLE TRIGGER ALL | trigger_name [ ,...n ] | ENABLE | DISABLE CHANGE_TRACKING [ WITH ( TRACK_COLUMNS_UPDATED = ON | OFF ) ] | SWITCH [ PARTITION source_partition_number_expression ] TO target_table [ PARTITION target_partition_number_expression ] [ WITH ( <low_lock_priority_wait> ) ]

| SET ( FILESTREAM_ON = partition_scheme_name | filegroup | "default" | "NULL" ) | REBUILD [ [PARTITION = ALL] [ WITH ( <rebuild_option> [ ,...n ] ) ] | [ PARTITION = partition_number [ WITH ( <single_partition_rebuild_option> [ ,...n ] ) ] ] ] | <table_option> | <filetable_option>[ ; ]

Page 72: Taller de Base de Datos - Unidad 2 lenguage DDL

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

TALLER DE BASE DE DATOS

https://msdn.microsoft.com. 2015

Microsoft Word 97 - 2003 Document

Page 73: Taller de Base de Datos - Unidad 2 lenguage DDL

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.

https://msdn.microsoft.com. Página en Español, Consultado en Junio de 2015.

TALLER DE BASE DE DATOS