Manual SQL Editando
Manual SQL Editando
De
Base de Datos
Con
Manual De Base De Datos Con SQL-Server i
Manual
De Base De Datos
Con
SQL-Server
AUTOR (ES)
Manual De Base De Datos Con SQL-Server ii
AGREGAR ….Agradecimientos…
BDJBBDCBJDBKJ
HCBDCHJDBCHJDB
JMNCHDBCHJBDJCBD
JBCDCJDBJC
INTRODUCCIÓN
Manual De Base De Datos Con SQL-Server iv
AGREGAR ….Introducción…
KHBDHVBEHBVHDBVHB
BJCVEVJEJ
JGVCEGHCV
CDCCDCDCD
Manual De Base De Datos Con SQL-Server ÍNDICE v
Ítems Página
Capítulo 1: Herramienta CASE CA ERWIN DATA MODELER ............................................................1
6.7. Funciones......................................................................................................................................155
BIBLIOGRAFÍA ............................................................................................................................................188
RESUMEN
Manual De Base De Datos Con SQL-Server vii
AGREGAR… Resumen….
vhebvhjbehvbebvh
vhbdehjbvejh
jhcvdghv
vdhv
jgvehvj
gveh
Manual De Base De Datos Con SQL-Server 1
ICO
1
ER
Herramienta CASE CA
ERWIN DATA
CAPACIDAD CONTENIDO
A. Definición:
ERwin Data Modeler es una herramienta para diseño de base de datos que brinda ayuda a los
usuarios a diseñar, generar y mantener alta calidad los modelos de base de datos.
ERwin Data Modeler permite al usuario visualizar la estructura correcta, elementos claves y el
diseño optimizado de su base de datos, desde los requerimientos de un modelo lógico de
información y reglas de negocio que definen la base de datos, a un modelo físico optimizado
para las características específicas de la base de datos seleccionada.
ERwin Data Modeler automáticamente genera tablas. Su tecnología de “comparación
completa” permite el desarrollo iterativo, de forma tal que los modelos están siempre
sincronizados con Gestores de Base de Datos como: SQL Base, Sybase, MySQL, etc. Al
integrarse con entornos de desarrollo líderes, ERwin Data Modeler también acelera la creación
de aplicaciones centralizadas en datos.
Proporciona un entorno gráfico de fácil manipulación que simplifica el diseño de las bases
de datos.
Mantenimiento de base de datos (modelado).
Comunicarse de forma más eficaz permitiendo que los DBA y desarrolladores compartan y
reutilicen modelos.
Proporcionar respuestas más rápidas a las necesidades empresariales en evolución
permitiendo a las empresas comprender el impacto del cambio en los activos de información
y facilitando la rápida implementación de cambios.
B. Instalación.
Ejecutar el archivo de instalación “CA_ERwin_Data_Modeler _r7.3_Setup”, modo
administrador.
Manual De Base De Datos Con SQL-Server 3
Leer el contrato y términos de uso hasta el final para poder dar click en “I agree”.
Manual De Base De Datos Con SQL-Server 4
Seleccione el botón de Inicio, después, seleccione todos los programas, luego CA (Computer
Associates); enseguida ERwin Data Modeler r7.3 y después ERwin Data Modeler.
A. Herramientas básicas
Barra de menús
Barra de herramientas
Nos aparecerá esta ventana en la cual nos pide seleccionar el modelo que deseamos crear,
en este caso tenemos 3 opciones: Lógico, Físico y Lógico/Físico.
Para el desarrollo de la práctica seleccionaremos la última opción y escogemos con que
Sistema Gestor de Base de Datos trabajaremos y la versión correspondiente, en este caso
seleccionamos SQL Server y la versión 2005/2008, pero no solamente podemos trabajar con
SQL Server, también lo podemos hacer con Oracle, MySQL, etc.
Manual De Base De Datos Con SQL-Server 10
C. Configuraciones Previas.
Antes de comenzar a trabajar nuestro modelado es necesario configurar las propiedades de
nuestro modelo. Vamos a la opción Model y Model Properties
También configuramos el modelo físico, dentro del menú Table Option activamos PK
Designator.
En la vista o modelo físico, cambiamos el tipo de dato para cada atributo, como se muestra.
Para trabajar las relaciones volvemos a la vista lógica del modelado y empezamos con las
relaciones que pueden ser de: uno a muchos (Relación obligatoria no identificada o Relación
no obligatoria no identificada) y de muchos a muchos.
Manual De Base De Datos Con SQL-Server 16
Sabemos que la relación entre la tabla producto y la tabla boleta es de muchos a muchos,
para lo cual generaremos la entidad que asocia ambas tablas. (Create Association Entity).
Manual De Base De Datos Con SQL-Server 17
La vista física quedara de la siguiente manera, luego de haber colocado un nombre a las
relaciones.
Capítulo
2
Microsoft SQL Server
CAPACIDAD CONTENIDO
En las ediciones de 32 y 64 bits de SQL Server 2012 se aplican las consideraciones siguientes:
Se recomienda ejecutar SQL Server 2012 en equipos con el formato de archivo NTFS. SQL
Server 2012 se puede instalar en un equipo con el sistema de archivos FAT32, pero no se
recomienda porque es menos seguro que el sistema de archivos NTFS.
El programa de instalación de SQL Server bloqueará las instalaciones en unidades de disco de
solo lectura, asignadas o comprimidas.
Manual De Base De Datos Con SQL-Server 21
SQL Server le exige que instale una actualización para asegurarse de que se puede instalar
correctamente el componente de Visual Studio.
Si instala SQL Server 2012 en un equipo con el sistema operativo Windows Vista SP2 o
Windows Server 2008 SP2, puede obtener la actualización necesaria aquí.
Si instala SQL Server 2012 en un equipo que tiene el sistema operativo Windows 7 SP1 o
Windows Server 2008 R2 SP1, o Windows Server 2012 o Windows 8, esta actualización
ya está incluida.
La instalación de SQL Server 2012 produce un error si se inicia la instalación con Terminal
Services Client. No se admite el inicio del programa de instalación de SQL Server con Terminal
Services Client.
El programa de instalación de SQL Server instala los siguientes componentes de software que
el producto necesita:
SQL Server Native Client
Archivos auxiliares del programa de instalación de SQL Server
Actualización a SQL Server 2012: para obtener información acerca del uso de las herramientas
de SQL Server 2012 para preparar una actualización a SQL Server 2012, vea Usar el Asesor de
actualizaciones para preparar las actualizaciones.
Para conocer los requisitos mínimos de versión para instalar SQL Server en Windows Server
2012 o Windows 8, vea Instalar SQL Server en Windows Server 2012 o Windows 8
(http://support.microsoft.com/kb/2681562).
Los siguientes requisitos se aplican a todas las instalaciones de SQL Server 2012:
Componente Requisito
.NET .NET 3.5 SP1 es un requisito para SQL Server 2012 cuando se selecciona Motor de base
Framework de datos, Reporting Services, Master Data Services, Data Quality Services, Replicación o
SQL Server Management Studio, y no lo instala ya el programa de instalación de SQL
Server.
Si ejecuta el programa de instalación en un equipo con el sistema operativo
Windows Vista SP2 o Windows Server 2008 SP2 y no tiene .NET 3.5 SP1, el
programa de instalación de SQL Server le pide que descargue e instale .NET 3.5
SP1 para poder continuar con la instalación de SQL Server. El mensaje de error
incluye un vínculo al centro de descarga o bien puede descargar .NET 3.5 SP1
desde Windows Update. Para evitar la interrupción durante la instalación de SQL
Server, puede descargar e instalar .NET 3.5 SP1 antes de ejecutar el programa de
instalación de SQL Server.
Manual De Base De Datos Con SQL-Server 22
Los siguientes requisitos de memoria y procesador se aplican a todas las ediciones de SQL Server
Componente Requisito
Memoria[1] Mínimo:
Ediciones Express: 512 MB
Todas las demás ediciones: 1 GB
Se recomienda:
Ediciones Express: 1 GB
Todas las demás ediciones: al menos 4 GB y debe aumentar a medida que el tamaño
de la base de datos aumente para asegurar un rendimiento óptimo.
Velocidad del Mínimo:
procesador Procesador x86: 1,0 GHz
Procesador x64: 1,4 GHz
Recomendado: 2 GHz o más
Tipo de Procesador x64: AMD Opteron, AMD Athlon 64, Intel Xeon compatible con
procesador Intel EM64T Intel Pentium IV compatible con EM64T
Procesador x86: compatible con Pentium III o superior
Para obtener más información acerca de la compatibilidad entre idiomas y consideraciones acerca
de la instalación de SQL Server en idiomas traducidos, vea Versiones en idioma local en SQL
Server.
SQL Server 2012 Las versiones de 64 bits de SQL Server son compatibles con los sistemas
extendidos, también denominados Windows 32 bits sobre Windows 64 bits (WOW64). WOW64
es una característica de las ediciones de 64 bits de Windows que permite que las aplicaciones de
32 bits se ejecuten de forma nativa en el modo de 32 bits. Las aplicaciones funcionan en el modo
de 32 bits, aunque el sistema operativo subyacente sea de 64 bits.
Durante la instalación de SQL Server 2012, Windows Installer crea archivos temporales en la
unidad del sistema. Antes de ejecutar el programa de instalación para instalar o actualizar SQL
Server, compruebe que dispone de al menos 6,0 GB de espacio en disco en la unidad del sistema
para estos archivos. Este requisito es aplicable incluso si instala todos los componentes de SQL
Server en una unidad distinta de la predeterminada.
Manual De Base De Datos Con SQL-Server 25
Los requisitos reales de disco duro dependen de la configuración del sistema y de las características
que decida instalar. Para obtener una lista de las características admitidas por las ediciones de SQL
Server, vea Características compatibles con las ediciones de SQL Server 2012. En la tabla siguiente
se muestran los requisitos de espacio en disco de los componentes de SQL Server 2012.
CARACTERÍSTICA REQUISITO DE
ESPACIO EN
DISCO
Motor de base de datos y archivos de datos, replicación, búsqueda de texto 811 MB
completo y Data Quality Services
Analysis Services y archivos de datos 345 MB
Reporting Services y Administrador de informes 304 MB
Integration Services 591 MB
Master Data Services 243 MB
Componentes de cliente, excepto los componentes de los Libros en pantalla de 1823 MB
SQL Server y las herramientas de Integration Services.
Los componentes de los Libros en pantalla de SQL Server para ver y 375 KB
administrar el contenido de la Ayuda1
Haga clic “Aceptar” y vaya a Panel de control de Windows y localice la opción “Región” y
haga clic en el mismo.
Nota. En caso de que no se cumplan con todos los requerimientos que pide SQL Server para su
instalación no dejará continuar, corrija y vuelta a correr el proceso.
Paso 6. Verificar que este activada la opción “Instancia con nombre”, y el nombre de la
instancia sea “SQLExpress”, en “Id. de instancia” sea “SQLEXPRESS” y en “Directorio
de SQL Server” sea la ruta indicada anteriormente, presione “Siguiente”.
Manual De Base De Datos Con SQL-Server 29
Verifique que en el apartado “Especifique los administradores de SQL Server” este agregado
el Usuario de Windows, como se muestra en la imagen anterior, presione “Siguiente”.
Manual De Base De Datos Con SQL-Server 30
Paso 9. No debe de estar activada la opción “Enviar informes de errores de Windows y SQL
Server a Microsoft...”, presione “Siguiente”.
El programa iniciará con la instalación. El proceso puede durar varios minutos, dependiendo de
la velocidad de sus unidades.
Manual De Base De Datos Con SQL-Server 31
Paso 10. El programa indica que ha terminado la instalación. Presione “Cerrar” para terminar
con la instalación.
Algunas herramientas:
Desde aquí se podrá administrar la base de datos, seguridad, objetos de servidor, puede
conectarse a varios servidores y administrarlos al mismo tiempo.
Manual De Base De Datos Con SQL-Server 34
Nos dirigimos una nueva hoja de edición desde el botón New Query o desde el menú File
después New y “Database Engine Query”.
En muchas ocasiones confundimos algunos operadores símbolos en los script; por ejemplo, la
letra “o” con el número “(0-0)” ambos puede ocasionar errores lógicos cuando ejecutamos el
script; en conclusión debemos se recomienda las fuente Consolas con un tamaña establecido
pro el usuario para un buen desempeño del script.
Manual De Base De Datos Con SQL-Server 35
Configuración:
Herramientas (Tools) luego a Opciones (Option)
Selecciones Font and Colors
Cambie el tipo de fuente en Font.
Presiona OK
Ingresamos al menú Database, luego pasamos a opción “Choose Database” para elegir con que
gestor de base de datos trabajara.
Manual De Base De Datos Con SQL-Server 36
Ahora nos dirigimos nuevamente al menú Database, elegimos opción “Database Connection” ( al
indicar el nombre de base de Datos previamente se debió crear en el SGBD SQL server).
Nuevamente dirigirse al menú Tools, opción Forward Engineer , de ahí a “Schema Generation”,
verificar que los objetos
Manual De Base De Datos Con SQL-Server 37
Capítulo
3
Lenguaje de Definición
de Datos (LDD)
CAPACIDAD CONTENIDO
hcbhbvhbrehvbekbvkebvbehvbekhbvebvh
bhevevbehjvbhebvhebvhjebvhjebvhbehjbv
hjebvhjehjbvhjdbevhjbehjvbehbvhjedbvhe
bvhjdbvdjebvhjdebvbehjbvhebvhjebhjvbeh
jvbhjebvhjebhjvbhjevbhjebvhj
Manual De Base De Datos Con SQL-Server 40
Siendo DDL un lenguaje que permite definir la base de datos (su estructura o “schemas”), tiene
una sintaxis similar a los lenguajes de programación.
Ejemplos de DDL:
A diferencia de muchos lenguajes de descripción de datos, SQL utiliza una acción de versos
imperativo cuyo efecto es modificar el esquema de la base de datos, añadiendo, cambiando o
eliminando las definiciones de tablas y otros objetos. Estas declaraciones se pueden mezclar
libremente con otras sentencias SQL, por lo que el DDL no es realmente una lengua independiente.
La declaración más común es CREATE TABLE. El lenguaje de programación SQL, el más
difundido entre los gestores de bases de datos, admite las siguientes sentencias de definición:
CREATE, DROP y ALTER, cada una de las cuales se puede aplicar a las tablas, vistas,
procedimientos almacenados y triggers de la base de datos.
Manual De Base De Datos Con SQL-Server 41
Para verificar los valores estándar se tiene que ejecutar el siguiente comando
SP_HELPDB LEGAJOS_CSJAN
GO
CASO DESARROLLADO 1: Implementar un Script que permita crear la tabla Sede dentro de la
base de datos LEGAJOS_CSJAN
Manual De Base De Datos Con SQL-Server 42
USE LEGAJOS_CSJAN
GO
USE LEGAJOS_CSJAN
GO
--COMANDO DE EJECUCION
EXEC PA_TOTALSEDES
Manual De Base De Datos Con SQL-Server 44
CASO DESARROLLADO 5: Implementar un Script que permita crear la vista V_SEDES donde
muestre los registros contenidos de la tabla SEDE.
Manual De Base De Datos Con SQL-Server 45
USE MASTER
GO
Manual De Base De Datos Con SQL-Server 46
--REALIZAR ALTERACION
Considere que para ejecutar el Script de alterar creando un archivo secundario tiene
que tener cuidado con la ubicación del archivo.
--VERIFICACION DE PARAMETROS.
SP_HELPDB 'LEGAJOS_CSJAN'
GO
--ANTES DE LA MODIFICACION.
--APLICANDO MODIFICACION.
SP_COLUMNS SEDE
GO
--ALTERAR NOMSEDE
Considere que para ejecutar el Script de alterar debe coincidir el nombre de la columna
a modificar con la tabla.
--ANTES DE MODIFICAR LA COLUMNA
MODIFICANDO TRIGGER
--ALTERAR TRIGGER
Considere que para ejecutar el Script de alterar debe coincidir el nombre de la columna
a modificar con la tabla.
--INSERCION.
--MODIFICACION
GROUP BY NOMSEDE
END
GO
EXEC SP_TOTALBOLETAS
CASO DESARROLLADO 10: Implementar una consulta que permita modificar la función
FN_TOTALSEDES de una determinada Observación ingresado por el usuario a la tabla SEDE.
MODIFICANDO FUNCIONES
--MODIFICANDO FUNCION
AS
BEGIN
DECLARE @TOTAL INT
RETURN @TOTAL
END
GO
--EJECUACION DE LA FUNCION
SELECT DBO.FN_TOTALSEDES('OBSER')AS [TOTAL DE SEDES]
GO
CASO DESARROLLADO 11: Implementar una consulta que permita modificar la vista
V_SEDE donde muestre solo las columnas Nombre sede de la tabla SEDE, además de encriptar
la información de la implementación.
MODIFICANDO VISTA
--MODIFICANDO VISTA
ALTER VIEW V_SEDES
WITH ENCRYPTION
AS
SELECT NOMSEDE
FROM SEDE
GO
--EJECUACION DE LA VISTA
CASO DESARROLLADO 12: Implementar un script que permita eliminar la base de datos
LEGAJOS_CSJAN.
ELIMINACION DE UNA BASE DE DATOS
Para eliminar la base de datos “LEGAJOS_CSJAN” no tiene que ser la base de datos
activa, debe de ser la base de datos “Master o Maestra”.
CASO DESARROLLADO 13: Implementar una consulta que permita eliminar la tabla sede de
la base de datos LEGAJOS_CSJAN.
ELIMINACION DE UNA TABLA
Para eliminar la tabla “Sede” esta tiene que estar asociada con la base de datos
“LEGAJOS_CSJAN”, tener en cuenta que al eliminar la tabla tambien pasa lo mismo con los
indics, triggers, constrains y permisos especificado en la tabla.
ELIMINACION DE UN TRIGGER
USE LEGAJOS_CSJAN
GO
--ELIMINAR
--DESACTIVAR TRIGGER
Eliminar del trigger “TG_MENSAJE” es cuando ya no esta asociado a una tabla, porque SQL
tambien te permite habilitar e inhabilitar un trigger con la sentencia Disable.
Manual De Base De Datos Con SQL-Server 53
Capítulo
4
Base de Datos
con SQL Server
CAPACIDAD CONTENIDO
Definiciones Previas
DOCUMENTAR CAPACIDAD Objetivos De Una Base De Datos
Bases De Datos En SQL Server
BHVBEBVBBVHJ
Estructura De Una Base De Datos
GVJEVJEHVBEHJBVHJDEBVKHEV Creación De Una Base De Datos
Caso Práctico: Gestión De Legajos
VGEVJEVUEEVE Adjuntar Y Separa Una Base De Datos
Esquemas En SQL Server
hcbhbvhbrehvbekbvkebvbehvbekhbvebvh Tipo De Datos En SQL Server
bhevevbehjvbhebvhebvhjebvhjebvhbehjbv Tipo De Datos Definidos Por El Usuario
Propiedades De Los Atributos
hjebvhjehjbvhjdbevhjbehjvbehbvhjedbvhe
El Objeto Tabla
bvhjdbvdjebvhjdebvbehjbvhebvhjebhjvbeh Manejo de tablas con Esquemas
jvbhjebvhjebhjvbhjevbhjebvhj Restricciones De Tipo: Unique, Check, Default
Generación De Esquemas, Caso Propuesto:
Gestión De Legajos
Manual De Base De Datos Con SQL-Server 54
o Una base de datos es un “almacén” que nos permite guardar grandes cantidades de
información de forma organizada para que luego podamos encontrar y utilizar fácilmente. A
continuación, te presentamos una guía que te explicará el concepto y características de las
bases de datos.
o El término de bases de datos fue escuchado por primera vez en 1963, en un simposio
celebrado en California, USA. Una base de datos se puede definir como un conjunto de
información relacionada que se encuentra agrupada o estructurada.
o Desde el punto de vista informático, la base de datos es un sistema formado por un conjunto
de datos almacenados en discos que permiten el acceso directo a ellos y un conjunto de
programas que manipulen ese conjunto de datos.
o Cada base de datos se compone de una o más tablas que guarda un conjunto de datos. Cada
tabla tiene una o más columnas y filas. Las columnas guardan una parte de la información
sobre cada elemento que queramos guardar en la tabla, cada fila de la tabla conforma un
registro.
Se define una base de datos como una serie de datos organizados y relacionados entre sí, los cuales
son recolectados y explotados por los sistemas de información de una empresa o negocio en
particular.
Características
Entre las principales características de los sistemas de base de datos podemos mencionar:
Los Sistemas de Gestión de Base de Datos (DataBase Management System) son un tipo de software
muy específico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones
que la utilizan. Se compone de un lenguaje de definición de datos, de un lenguaje de manipulación
de datos y de un lenguaje de consulta.
Control sobre Los sistemas de ficheros almacenan varias copias de los mismos datos en
la redundancia ficheros distintos. Esto hace que se desperdicie espacio de almacenamiento,
de datos: además de provocar la falta de consistencia de datos.
Eliminando o controlando las redundancias de datos se reduce en gran
medida el riesgo de que haya inconsistencias. Si un dato está almacenado
Consistencia de una sola vez, cualquier actualización se debe realizar sólo una vez, y está
datos: disponible para todos los usuarios inmediatamente. Si un dato está duplicado
y el sistema conoce esta redundancia, el propio sistema puede encargarse de
garantizar que todas las copias se mantienen consistentes.
En los sistemas de ficheros, los ficheros pertenecen a las personas o a los
Compartir departamentos que los utilizan. Pero en los sistemas de bases de datos, la
datos: base de datos pertenece a la empresa y puede ser compartida por todos los
usuarios que estén autorizados.
Gracias a la integración es más fácil respetar los estándares necesarios, tanto
los establecidos a nivel de la empresa como los nacionales e internacionales.
Mantenimiento
Estos estándares pueden establecerse sobre el formato de los datos para
de estándares:
facilitar su intercambio, pueden ser estándares de documentación,
procedimientos de actualización y también reglas de acceso.
La integridad de la base de datos se refiere a la validez y la consistencia de
Mejora en la los datos almacenados. Normalmente, la integridad se expresa mediante
integridad de restricciones o reglas que no se pueden violar. Estas restricciones se pueden
datos: aplicar tanto a los datos, como a sus relaciones, y es el SGBD quien se debe
encargar de mantenerlas.
La seguridad de la base de datos es la protección de la base de datos frente a
Mejora en la usuarios no autorizados. Sin unas buenas medidas de seguridad, la
seguridad: integración de datos en los sistemas de bases de datos hace que éstos sean
más vulnerables que en los sistemas de ficheros.
Mejora en la Muchos SGBD proporcionan lenguajes de consultas o generadores de
accesibilidad a informes que permiten al usuario hacer cualquier tipo de consulta sobre los
los datos:
Manual De Base De Datos Con SQL-Server 56
datos, sin que sea necesario que un programador escriba una aplicación que
realice tal tarea.
El SGBD proporciona muchas de las funciones estándar que el programador
Mejora en la necesita escribir en un sistema de ficheros. A nivel básico, el SGBD
productividad: proporciona todas las rutinas de manejo de ficheros típicas de los programas
de aplicación.
Mejora en el En los sistemas de ficheros, las descripciones de los datos se encuentran
mantenimiento: inmersas en los programas de aplicación que los manejan.
En algunos sistemas de ficheros, si hay varios usuarios que pueden acceder
simultáneamente a un mismo fichero, es posible que el acceso interfiera entre
Aumento de la
ellos de modo que se pierda información o se pierda la integridad. La mayoría
concurrencia:
de los SGBD gestionan el acceso concurrente a la base de datos y garantizan
que no ocurran problemas de este tipo.
Mejora en los Muchos sistemas de ficheros dejan que sea el usuario quien proporcione las
servicios de medidas necesarias para proteger los datos ante fallos en el sistema o en las
copias de aplicaciones. Los usuarios tienen que hacer copias de seguridad cada día, y
seguridad: si se produce algún fallo, utilizar estas copias para restaurarlos.
Los SGBD son conjuntos de programas que pueden llegar a ser complejos
Complejidad: con una gran funcionalidad. Es preciso comprender muy bien esta
funcionalidad para poder realizar un buen uso de ellos.
Tanto el SGBD, como la propia base de datos, pueden hacer que sea
Coste del necesario adquirir más espacio de almacenamiento. Además, para alcanzar
equipamiento las prestaciones deseadas, es posible que sea necesario adquirir una máquina
adicional: más grande o una máquina que se dedique solamente al SGBD. Todo esto
hará que la implantación de un sistema de bases de datos sea más cara.
El hecho de que todo esté centralizado en el SGBD hace que el sistema sea
Vulnerable a
más vulnerable ante los fallos que puedan producirse. Es por ello que deben
los fallos:
tenerse copias de seguridad (Backup).
Tipos de Cada Sistema de Base de Datos posee tipos de campos que pueden ser
Campos similares o diferentes.
Manual De Base De Datos Con SQL-Server 57
Hardware: constituido por dispositivo de almacenamiento como discos, tambores, cintas, etc.
Datos: los cuales están almacenados de acuerdo a la estructura externa y van a ser procesados para
convertirse en información.
2. Redundancia mínima.
Debe ser controlada, de forma que no exista duplicidad innecesaria, y que las redundancias
físicas, convenientes muchas veces a fin de responder a objetivos de eficiencia, sean tratadas
por el mismo sistema, de modo que no puedan producirse inconsistencias.
Se trata de usar la base de datos como repositorio común de datos para distintas aplicaciones.
Un dato se actualizará lógicamente por el usuario en forma única, y el sistema se preocupará
de cambiar físicamente todos aquellos campos en los que el dato estuviese repetido en caso
de existir redundancia física (redundancia controlada).
Manual De Base De Datos Con SQL-Server 58
El sistema de auditoría mantiene el control de acceso a la base, con el objeto de saber qué o
quién realizó una determinada modificación y en qué momento. Por ejemplo, un profesor
quiere cambiar una calificación por alguna omisión, el sistema de la base le permitirá hacer el
cambio, pero quedara el registro del día y el motivo del cambio, esto lo checan los jefes de
academia y observan si el profesor le ayuda al alumno o realizan su trabajo adecuadamente.
8. Respaldo y recuperación.
Se refiere a la capacidad de un sistema de base de datos de recuperar su estado en un momento
previo a la pérdida de datos.
Al instalar SQL Server también se registran bases de datos que administran diferentes aspectos de
servidor de Base de Datos. SQL cuenta con las siguientes Bases de Datos del sistema:
En este caso vemos un modelo de entidad relación entre dos tablas: La tabla personafamiliar
contiene el registro de los familiares de los trabajadores los cuales tiene datos familiares
datosfamiliares y un tipo, en el tipo se almacena la relación que tiene el familiar con el personal
ejemplo (HERMANO, PADRE, TIO, etc.). Teniendo en cuenta que los familiares registrados son
los del personal.
Las Bases de Datos, de acuerdo al ejemplo anterior, estas presentan entidades: tipofamiliar,
datosfamiliares, personalfamiliarn. Podemos entender que una tabla llega a ser una entidad y;
por lo tanto, toda entidad es cualquier cosa física o abstracta que se puede representar, en este caso
las tablas anteriores son físicas, pero podríamos implementar la tabla personal, que representaría
a los abstractos donde (se relacionaría con la tabla datosfamiliares).
En la tabla personalfamiliar:
Campo clave
Campos
registros
Datos
En la tabla datosfamiliar:
Campo foráneo
Manual De Base De Datos Con SQL-Server 62
CAMPOS: Representan a los atributos de una entidad, en este caso los campos pertenecientes a la
tabla personalfamiliar son: idPersonalFamiliar, apellidosynombres, sexo, fechanac, vive.
CAMPO CLAVE: Es el campo particular de una entidad que representa a un valor único dentro
de los registros y así serán reconocidos por las demás entidades, de la tabla personalfamiliar, su
campo clave es: idPersonalFamiliar.
CAMPO FORÁNEO: Es el campo que une a otra entidad formando una extensión de la tabla
fuente. En una entidad puede tener muchos campos claves, si consideramos que toda entidad tiene
un campo clave, el foráneo se enlazará justamente con este campo.
REGISTRO: Representa en conjunto de valores por cada campo de una misma fila. Esta
representa el conjunto de resultados que SQL Server espera devolver a los usuarios.
DATO: Es un valor único que no representa nada mientras no se una a otros datos. Por ejemplo de
la tabla personalfamiliar, en el registro de id 15 el dato es VIVANCO LUNA CLIMACO
ULISES.
Tenemos que considerar que la creación de una Base de Datos es meramente la implementación de
un Script y no se representará de forma visual, es decir, se usará en todo momento Transact-SQL
para su implementación.
Una Base de Datos es SQL Server es una réplica de la base de datos MODEL, ya que esta base de
datos nos proporciona páginas vacías, es decir, que podemos crear archivos lógicos dentro de las
bases de datos para una implementación profesional.
SELECT name,dbid,crdate,filename
FROM SYS.SYSDATABASES
SP_HELPDB LEGAJOS_CSJAN
MAXSIZE=30MB,
FILEGROWTH=5MB
)
LOG ON(
NAME='LEGAJOS_CSJAN2_LOG',
FILENAME='D:\Base_Datos\LEGAJOS_CSJAN2.LDF',
SIZE=5MB,
MAXSIZE=10MB,
FILEGROWTH=10%
)
GO
SP_HELPDB LEGAJOS_CSJAN2
SIZE=4MB,
MAXSIZE=20MB,
FILEGROWTH=10%
)
GO
SP_HELPDB LEGAJOS_CSJAN3
FILEGROWTH=2%
)
LOG ON (
NAME='LEGAJOS_CSJAN4_LOG',
FILENAME='D:\Base_Datos\LEGAJOS_CSJAN4.LDF',
SIZE=4MB,
MAXSIZE=20MB,
FILEGROWTH=10%
)
GO
SP_HELPDB LEGAJOS_CSJAN4
CASO DESARROLLADO 19: Implementar una consulta que permita separar la base de datos
LEGAJOS_CSJAN5 ubicado en la carpeta D:\Base_Datos\ con las siguientes características:
MAXSIZE=50MB,
FILEGROWTH=10%
)
GO
SP_HELPDB LEGAJOS_CSJAN5
Ahora veremos cuatro maneras de crear un backup de una base de datos en SQL SERVER:
1° FORMA: La primera forma de generar una copia de seguridad de la base de datos es copiando
los archivos con el nombre de la base de datos con extensión .mdf y LDF, en nuestro caso
LEGAJOS_CSJAN.mdf y LEGAJOS_CSJAN_log.LDF, los mismos que se encuentran en la
siguiente dirección:
Como podemos ver no nos permite realizar la copia de la base de datos LEGAJOS_CSJAN,
mostrando el siguiente mensaje.
Esto es debido a que la base de datos LEGAJOS_CSJAN está siendo usada, para esto debemos ir
al panel de control > herramientas administrativas > servicios, o simplemente ejecutar Inicio + R
y escribir services.msn, como se muestra a continuación:
Ahora bien, lo que haremos es detener el servicio SQL SERVER, ubicaremos el servicio de nombre
SQL Server (MSSQLSERVER).
Manual De Base De Datos Con SQL-Server 70
Luego podremos copiar los archivos de la base de datos LEGAJOS_CSJAN, y poder usarla en
otras máquinas, con servicio local SQL Server.
Para restaurar la base de datos LEGAJOS_CSJAN, copiamos los archivos de la base de datos que
queremos restaurar en la siguiente dirección:
Como podemos ver la base de datos LEGAJOS_CSJAN se encuentra lista para ser usada.
2° FORMA: La segunda forma de generar una copia de seguridad de una base de datos cualquiera
en SQL Server es la siguiente:
Ahora bien lo que haremos es cerrar el servicio solo de la base de datos que queremos salvar, para
esto escribimos el siguiente comando SQL:
USE master
GO
SP_DETACH_DB 'LEGAJOS_CSJAN'
GO
Luego para restaurar la base de datos que queremos copiar en nuestro caso LEGAJOS_CSJAN, lo
que haremos es copiar a la siguiente dirección:
Para restaurar la base de datos desde el SQL Server ejecutaremos los mismos pasos del método
anterior de restauración o en su defecto levantar el servicio de la base de datos con el siguiente
comando:
Manual De Base De Datos Con SQL-Server 72
USE master
GO
-- COMANDO DE RESTAURACION
3° FORMA: Para obtener un backup de la base de datos es generando un archivo de tipo .bak, de
la siguiente forma, así mismo el backup generado tendrá la siguiente dirección:
El esquema de una base de datos (en inglés, Database Schemas) describe la estructura de la misma
ya que todos los objetos que se pueda crear o administrar en SQL se encuentran dentro de un
esquema estándar.
USE LEGAJOS_CSJAN5
GO
--CREACION DE ESQUEMAS
En SQL Server, cada columna, variable local, expresión y parámetro tiene un tipo de datos
relacionado. Un tipo de datos es un atributo que especifica el tipo de datos que el objeto puede
contener: datos de enteros, datos de caracteres, datos de moneda, datos de fecha y hora, cadenas
binarias, etc.
SQL Server proporciona un conjunto de tipos de datos del sistema que define todos los tipos de
datos que pueden utilizarse con SQL Server. También puede definir sus propios tipos de datos en
Transact-SQL o Microsoft .NET Framework. Los tipos de datos de alias están basados en los tipos
de datos proporcionados por el sistema. Los tipos definidos por el usuario obtienen sus
Manual De Base De Datos Con SQL-Server 77
características de los métodos y los operadores de una clase que se crean mediante uno de los
lenguajes de programación compatibles con .NET Framework.
Cuando dos expresiones que tienen tipos de datos, intercalaciones, precisión, escala o longitud
diferentes son combinadas por un operador, las características del resultado vienen determinadas
por lo siguiente:
El tipo de datos del resultado viene determinado por la aplicación de las reglas de
precedencia de tipos de datos a los tipos de datos de las expresiones de entrada.
La intercalación del resultado viene determinada por las reglas de precedencia de
intercalación cuando el tipo de datos del resultado es char, varchar, text, nchar, nvarchar o
ntext.
La precisión, escala y longitud del resultado dependen de la precisión, escala y longitud de
las expresiones de entrada.
SQL, brinda una serie de datos para almacenar la información, la correcta selección del tipo de
dato implica un determinado valor; por ejemplo: carácter, entero, binario, fecha, etc., así mismo
algunas veces necesitamos algún tipo de dato en especial, como el caso del DNI que cuenta con 8
caracteres de tipo CHAR o el número de celular de 9 caracteres.
Para esto pasaremos a definir la sintaxis para crear nuestro propio tipo de dato.
Sintaxis de creación:
Ahora gbien, si en caso se desea eliminar un tipo de dato creado por el usuario, se debe seguir la
siguiente sintaxis, teniendo en cuenta que para eliminar un tipo de dato, este no debe tener objetos
asociados.
CASO DESARROLLADO 21: Implementar una consulta que permita crear el tipo de dato
NOMBRE dentro de la base de datos LEGAJOS_CSJAN, además debe restringirle que no debe
contener espacio vacío.
USE LEGAJOS_CSJAN
GO
El paso previo que falta para la creación de una tabla dentro de la Base de Datos activa, es definir
dos propiedades comunes entre los campos de una tabla, propiedad:
NULL
IDENTITY
La propiedad NULL es la más común entre las asignaciones que se puede realizar al momento de
crear una tabla. Se ven dos formas de expresarla NULL y NOT NULL. Cuando señalamos como
NULL estamos indicando que el contenido de dicha columna no es obligatorio; por lo tanto, acepta
y devuelve valores nulos. Si se necesita especificar lo contrario, es decir, que sea obligatorio
registrar un valor dentro de la columna, entonces tendrá que especificar NOT NULL. Como en el
siguiente caso:
La propiedad IDENTITY sólo se aplica a tipos numéricos (INT) ya que define un autoincremento
de valores que se pueden representar una numeración de valores en forma automática por cada
registro dentro de una tabla. Por ejemplo: de la tabla anterior asistencia, podríamos modificar la
restricción de la clave primaria idasistencia, teniendo en cuenta que posee un tipo de dato numérico
INT¸ para que cuando se realice el registro, la numeración se autogenere, como el siguiente caso:
Manual De Base De Datos Con SQL-Server 82
El Script anterior se crea la tabla asistencia con la columna idasistencia de tipo entero con un
autoincremento de inicio 1 con salto de 1 (la numeracion será sucesiva: 1,2,3…, ya que el salto es
1. Si hubiese sido idasistencia INT IDENTITY (1,2), la numeración sería 1,3,5…).
Son objetos compuestos por una estructura (columnas) que almacenan información en forma lógica
e interrelacionada entre ellos formando filas acerca del objeto en general.
Si nos enfocamos en el mundo real, las tablas vendrían a ser las tablas son representaciones de
entidades. Siendo así las columnas especificadas en ella, serán las características de una entidad y
los valores ingresados serán los datos que podrían representar un hecho real.
La tabla pasajera representa a los familiares de una persona del mundo real, los cuales poseen una
clave primaria idPersonaFamiliar, apellidos y nombres apellidoynombre, sexo sexo, fecha de
nacimiento fechnac y una condición de si aún vive o no vive, desde aquí tenemos que definir las
capacidades de cada columna ya que eso derivará como será el ingreso de los valores a dichas
columnas
Todas las tablas tienen un campo especial llamado llave, que será aquel único valor que represente
a toda la tabla frente a las demás tablas y así logrará asociarse a las mismas
USE LEGAJOS_CSJAN5
GO
--CREACION DE ESQUEMAS
RRHH
o Datos personales
o Documento identidad
o Otros datos de identificación
MANTENIMIENTO
o Tipo familiar
o Nivel educativo
o Sede
UBICACION
o Departamento
o Provincia
o Distrito
CASO DESARROLLADO 23: Luego deberá crear las tablas antes mencionadas haciendo
referencia a sus respectivos esquemas.
DISTRIBUCION DE ESQUEMAS
USE LEGAJOS_CSJAN5
GO
--CREAR TABLAS
CREATE TABLE RRHH.DATOSPERSONALES (
IDDATOSPERSONALES INT NOT NULL,
APELLIDOPATERNO VARCHAR (25) NOT NULL,
APELLIDOMATERNO VARCHAR (25) NOT NULL,
NOMBRE1 VARCHAR (25) NOT NULL,
NOMBRE2 VARCHAR (25) NOT NULL,
SEXO VARCHAR (10) NOT NULL,
Manual De Base De Datos Con SQL-Server 84
)
GO
)
GO
)
GO
)
GO
)
GO
)
GO
)
GO
Manual De Base De Datos Con SQL-Server 85
UNIQUE: Determina que los valores registrados en una misma columna no sean idénticos,
es decir, se mantengan únicos. La restricción de UNIQUE permite controlar cualquier otro
campo que no sea llave. Así mismo tener en cuenta que la columna definida como UNIQUE
acepta a lo más un valor NULL mientras que una columna restringida con PRIMARY KEY
no permite dicha acción.
CASO DESARROLLADO 24: Implementar una consulta que permita añadir la restricción
UNIQUE a la columna NOMDEPART, es decir solo permita registrar nombre de los
departamentos sin repetirse.
-- SEGUNDA FORMA
CHECK: Permite restringir el rango de valores que pueden estar permitidos ingresar en una o
más columnas de una tabla.
CASO DESARROLLADO 25: Implementar una consulta que permita añadir la restricción a la
columna FECHA de la tabla MERITOS en donde solo permitirá registrar fechas de resoluciones
menores o iguales al día actual.
SP_COLUMNS Meritos
DEFAULT: Permite personalizar dichas restricciones a cualquier columna de una tabla que
no tenga como restricción NOT NULL.
CASO DESARROLLADO 26: Implementar una consulta que permita añadir la restricción a la
columna FECHACONTROL de la tabla MERITOS en donde si el usuario no registra la fecha se
inserte la fecha actual por defecto.
SP_COLUMNS Meritos
-- LA BASE DE DATOS
USE LEGAJOS_CSJAN2
GO
)
GO
Capítulo
5
Lenguaje de
Manipulación de Datos
(LMD)
CAPACIDAD CONTENIDO
Definiciones Previas
DOCUMENTAR CAPACIDAD
Comando INSERT INTO
BHVBEBVBBVHJ
Comando UPDATE
GVJEVJEHVBEHJBVHJDEBVKHEV
Comando DELETE
VGEVJEVUEEVE Formas de uso del comando SELECT
hcbhbvhbrehvbekbvkebvbehvbekhbvebvh Operadores en SQL Server
bhevevbehjvbhebvhebvhjebvhjebvhbehjbv
Comandos de tipo JOIN
hjebvhjehjbvhjdbevhjbehjvbehbvhjedbvhe
Manual De Base De Datos Con SQL-Server 102
Select,
Insert,
Delete,
Update
Un DML es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a
los usuarios llevar a cabo las tareas de consulta o manipulación de los datos, organizados por el
modelo de datos adecuado.
El lenguaje de manipulación de datos más popular hoy día es SQL, usado para recuperar y
manipular datos en una base de datos relacional. Otros ejemplos de DML son los usados por bases
de datos IMS/DL1, CODASYL u otras.
Manual De Base De Datos Con SQL-Server 103
Especifica los valores de campo que se insertan en el nuevo registro. Si omite los nombres de los
campos, debe especificar los valores de campo en el orden definido por la estructura de la tabla. Si
SET NULL está ON, INSERT - SQL intentará insertar valores nulos en cualquier campo no
especificado de la cláusula VALUES.
CASO DESARROLLADO 27: Implementar una consulta que permita registrar los
DEPARTAMENTOS en la tabla DEPARTAMENTO de la base de datos
LEGAJOS_CSJAN_CONSULTAS, usar la versión simple de la instrucción o comando INSERT
USE LEGAJOS_CSJAN_CONSULTAS
GO
CASO DESARROLLADO 28: Implementar una consulta que permita registrar los
DEPARTAMENTOS en la tabla DEPARTAMENTO de la base de datos
LEGAJOS_CSJAN_CONSULTAS aplicando el registro múltiple de filas (criterio de por lo
menos "n" filas).
USE LEGAJOS_CSJAN_CONSULTAS
GO
CASO DESARROLLADO 29: Implementar una consulta que permita registrar los
DEPARTAMENTOS, aplicando un orden personalizado de las columnas (idDepartamento,
mondepart).
USE LEGAJOS_CSJAN_CONSULTAS
GO
CASO DESARROLLADO 30: Implementar una consulta que permita registrar en la Personal ,
teniendo en cuenta que solo se debe de ingresar la situación.
USE LEGAJOS_CSJAN_CONSULTAS
Manual De Base De Datos Con SQL-Server 106
GO
-- CREANDO LA TABLA
)
GO
--INSERTANDO
CASO DESARROLLADO 31: Implementar una consulta para que la situación sea pueda insertar
solo “Alta o Baja”
--INSERCCION
CASO DESARROLLADO 32: Implementar una consulta que permita crear una vista, y que por
medio de esta vista se registre a la tabla personal.
--CREAR VISTA
--VERIFICAR VISTA
SELECT * FROM VTA_PERSONAL
SELECT * FROM PERSONAL
CASO DESARROLLADO 33: Implementar una consulta que permita registrar los 5 primeros
DEPARTAMENTOS a una tabla llamada DEPARTAMENTO_TEMP (La tabla será definida
por el usuario).
SELECT
TOP(5)
idDepartamento,mondepart
FROM departamento
CASO DESARROLLADO 34: Implementar una tabla temporal para personal e ingresar solo los
que tenga en Idepersonal “AC”
CASO DESARROLLADO 35: Implementar una consulta que permita insertar un registro a la
tabla Documento Identidad por medio de una variable temporal de tipo table.
CASO DESARROLLADO 36: Implementar una consulta que permita registrar los departamentos
a una nueva tabla temporal llamada MIS DEPARTAMENTOS, usar la instrucción with
USE LEGAJOS_CSJAN_CONSULTAS
GO
WITH DEPARTAMENTO_TEMP(idDep,mpart)
AS
(
SELECT * FROM departamento
)
INSERT INTO MISDEPARTAMENTOS
SELECT * FROM DEPARTAMENTO_TEMP
GO
Update es la instrucción del lenguaje SQL que nos sirve para modificar los registros de una tabla.
Como para el caso de Delete, necesitamos especificar por medio de Where cuáles son los registros
en los que queremos hacer efectivas nuestras modificaciones. Además, obviamente, tendremos que
especificar cuáles son los nuevos valores de los campos que deseamos actualizar. UPDATE - SQL
sólo puede actualizar registros en una sola tabla.
UPDATE nombre_tabla
SET columna_1 = 'nuevo valor'
WHERE "condición";
GO
A diferencia de REPLACE, UPDATE - SQL utiliza el bloqueo de registros cuando actualiza varios
registros de una tabla abierta para acceso compartido. Este hecho disminuye la contención de
registros en situaciones de varios usuarios, pero puede reducir el rendimiento. Para conseguir el
máximo rendimiento, abra la tabla para uso exclusivo o utilice FLOCK( ) para bloquear la tabla.
CASO DESARROLLADO 37: Implementar una consulta que permita actualizar los valores de
la situación de la tabla Personal por “ALTA”.
--VERIFICACION
CASO DESARROLLADO 38: Implementar una consulta que permita actualizar los valores de
la situación de la tabla Personal por “BAJA”.
--VERIFICACION
CASO DESARROLLADO 39: Implementar una consulta que permita asignar a la columna
situación “ALTA” sólo al registro cuya Id personal sea “A AR” y “A BL” Económico de la tabla
tarifa.
--MODIFICACION
UPDATE PERSONAL
SET SITUACION= 'ALTA'
WHERE IDPERSONAL='A AR' OR IDPERSONAL ='A BL'
GO
--VERIFICACION
CASO DESARROLLADO 40: Implementar una consulta que asigne la situación ‘ALTA’ en el
campo personal que sea de número de documento de identidad “31619873”. Todo esto deberá ser
realizado en la tabla Personal. Usar subconsultas.
--VERIFICACION DE TABLAS
SELECT*FROM DATOSPERSONALES
SELECT*FROM PERSONAL
UPDATE PERSONAL
SET SITUACION= 'ALTA'
WHERE IDPERSONAL=(SELECT IDPERSONAL FROM DATOSPERSONALES WHERE
NUMDOCINDENTIDAD='31619873')
GO
--VERIFICAR
La sentencia DELETE permite eliminar todos los registros especificados en una determinada tabla.
Los registros marcados para su eliminación no se eliminarán físicamente de la tabla hasta que se
ejecute PACK. Los registros marcados para su eliminación pueden recuperarse (o quitar las
marcas) con RECALL.
Si se establece SET DELETED como ON, todos los comandos que incluyan un alcance pasarán
por alto los registros marcados para su eliminación.
A diferencia de DELETE, DELETE - SQL utiliza el bloqueo de registros cuando marca varios
registros para eliminarlos de las tablas abiertas para acceso compartido. Este hecho disminuye la
contención de registros en situaciones de varios usuarios, pero puede reducir el rendimiento. Para
conseguir el máximo rendimiento, abra la tabla para uso exclusivo o utilice FLOCK( ) para
bloquear la tabla.
Manual De Base De Datos Con SQL-Server 114
CASO DESARROLLADO 41: Implementar una consulta que permita eliminar todos los registros
de la tabla DEPARTAMENTO.
USE LEGAJOS_CSJAN_CONSULTAS
GO
DELETE DEPARTAMENTO
GO
CASO DESARROLLADO 42: Implementar una consulta que permita eliminar los registros de
las PROVINCIAS cuyo DEPARTAMENTO sean “AMAZONAS”. Usando sub consultas para
el proceso.
USE LEGAJOS_CSJAN_CONSULTAS
GO
CASO DESARROLLADO 43: Implementar una consulta que permita eliminar el 5% de los
registros de la tabla PROVINCIA, cuyo DEPARTAMENTO sea "ANCASH". Usar sub
consultas.
USE LEGAJOS_CSJAN_CONSULTAS
GO
CASO DESARROLLADO 44: Implementar una consulta que permita eliminar el 5% de los
registros de la tabla PROVINCIA cuyo DEPARTAMENTO sea "ANCASH", usar sub consultas
para el proceso y el operador OUTPUT.
USE LEGAJOS_CSJAN_CONSULTAS
GO
Uno de los propósitos de la gestión de base de datos es almacenar información lógica y ordenada
dentro de tablas y obtener información de la misma, para logar este propósito usaremos la sentencia
SELECT y sus variadas formas de recuperación desde la tabla de una base de datos activa.
GO
Manual De Base De Datos Con SQL-Server 117
Parámetros
SELECT
Especifica los campos, constantes y expresiones que se mostrarán en el resultado de la consulta.
ALL
De forma predeterminada, se muestran todas las filas del resultado de la consulta.
DISTINCT
Excluye duplicados de cualquier fila del resultado de la consulta.
Nota Puede utilizar DISTINCT únicamente una vez por cada cláusula SELECT.
Alias.
Califica nombres de elementos coincidentes. Cada elemento que especifique
con Select_Item genera una columna de los resultados de la consulta. Si dos o más elementos
tienen el mismo nombre, incluya el alias de la tabla y un punto antes del nombre del elemento
para impedir la duplicación de las columnas.
AS Column_Name
Especifica el título de una columna en el resultado de la consulta. Esta opción resulta muy útil
cuando Select_Item es una expresión o contiene una función de campo y desea dar un nombre
significativo a la columna. Column_Name puede ser una expresión, pero no puede contener
caracteres (por ejemplo, espacios) que no estén permitidos para nombres de campos de tablas.
FROM
Indica las tablas que contienen los datos que ha obtenido la consulta. Si no hay ninguna tabla
abierta, puede especificar la ubicación del archivo. Una vez abierta, la tabla permanece abierta
cuando finaliza la consulta.
Manual De Base De Datos Con SQL-Server 118
DatabaseName!
Especifica el nombre de una base de datos inactiva que contiene la tabla. Es necesario incluir el
nombre de la base de datos que contiene la tabla en caso de que no sea la base de datos activa.
Incluya el delimitador signo de exclamación (!) después del nombre de la base de datos y antes
del nombre de la tabla.
[AS] Local_Alias
Especifica un nombre temporal para la tabla indicada en Table. Si especifica un alias local, debe
utilizar el alias local en lugar del nombre de la tabla en toda la instrucción SELECT.
INNER JOIN especifica que el resultado de la consulta contenga sólo filas en una tabla con la
que coincidan una o varias filas de otra tabla.
LEFT [OUTER] JOIN especifica que el resultado de la consulta contenga todas las filas de la
tabla a la izquierda de la palabra clave JOIN y sólo las filas que coincidan procedentes de la
tabla a la derecha de la palabra clave JOIN. La palabra clave OUTER es opcional; se puede
incluir para resaltar que se ha creado una combinación externa.
RIGHT [OUTER] JOIN especifica que el resultado de la consulta contenga todas las filas de
la tabla a la derecha de la palabra clave JOIN y sólo las filas que coincidan de la tabla a la
izquierda de la palabra clave JOIN. La palabra clave OUTER es opcional; se puede incluir para
resaltar que se ha creado una combinación externa.
FULL [OUTER] JOIN especifica que el resultado de la consulta contenga todas las filas,
coincidan o no, de ambas tablas. La palabra clave OUTER es opcional; se puede incluir para
resaltar que se ha creado una combinación externa.
ON Join Condition especifica las condiciones según las cuales se combinan las tablas.
INTO Destination
Determina donde se almacenan los resultados de la consulta. Si incluye una cláusula INTO y
una cláusula TO en la misma consulta, la cláusula TO se pasará por alto. Si no incluye la
cláusula INTO, los resultados de la consulta se mostrarán en la ventana Examinar. Los
resultados de la consulta pueden dirigirse también a la impresora o a un archivo con la cláusula
TO.
ARRAY ArrayName, que almacena los resultados de la consulta en una matriz de variable
de memoria. Si la consulta selecciona 0 registros, la matriz no se creará.
Manual De Base De Datos Con SQL-Server 119
Incluya NOFILTER para crear un cursor que se pueda usar en consultas posteriores.
TO FILE FileName
Si incluye una cláusula TO pero no una cláusula INTO, puede dirigir el resultado de la consulta
a un archivo de texto ASCII llamado FileName,
ADDITIVE anexa los resultados de la consulta al contenido existente del archivo de texto
especificado en TO FILE FileName.
PREFERENCE PreferenceName
Si el resultado de una consulta se envía a una ventana Examinar, guarda los atributos y opciones
de la ventana Examinar para utilizarlos después. PREFERENCE guarda los atributos, o
preferencias, por tiempo indefinido en el archivo de recursos FOXUSER. Las preferencias se
pueden recuperar en cualquier momento.
NOCONSOLE
Impide que el resultado de la consulta se envíe a un archivo.
Manual De Base De Datos Con SQL-Server 120
PLAIN
Impide que aparezcan los encabezados de las columnas al mostrar los resultados de la consulta.
PLAIN puede utilizarse tanto si está presente una cláusula TO como si no. Si se incluye una
cláusula TO, se pasará por alto PLAIN.
NOWAIT
Continúa la ejecución del programa después de abrir la ventana Examinar y de dirigir a ella los
resultados de la consulta. El programa no esperará a que la ventana Examinar se cierre, sino que
continuará con la ejecución de la línea de programa inmediatamente siguiente a la instrucción
SELECT.
WHERE
Especifica que solo debe incluir en los resultados de la consulta los registros que satisfagan los
criterios especificados.
JoinCondition
Especifica los campos que vinculan las tablas en la cláusula FROM. Si incluye más de una tabla
en una consulta, deberá especificar una condición de combinación para cada tabla después de
la primera.
Las condiciones de combinación múltiples deben conectarse mediante el operador AND. Cada
condición de combinación tiene la forma siguiente:
OPERADOR COMPARACIÓN
= Igual
== Exactamente igual
LIKE SQL LIKE
<>, !=, # Distinto de
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
Cuando utiliza el operador = con cadenas, actúa de forma distinta dependiendo del ajuste de
SET ANSI. Cuando SET ANSI está desactivado, Visual FoxPro trata las comparaciones de
cadenas en la forma habitual en Xbase. Cuando SET ANSI está activado, Visual FoxPro sigue
las normas ANSI para las comparaciones de cadenas. Vea SET ANSI y SET EXACT para
Manual De Base De Datos Con SQL-Server 121
obtener información adicional acerca de cómo realiza Visual FoxPro las comparaciones de
cadenas.
La cláusula ESCAPE le permite especificar que se traten los caracteres comodín de SELECT -
SQL como si fueran caracteres literales. En la cláusula ESCAPE se especifica un carácter, que
si se coloca inmediatamente antes del carácter comodín, indica que se tratará al carácter
comodín como a un carácter literal.
FilterCondition
Especifica los criterios que deben satisfacer los registros para ser incluidos en los resultados de
la consulta. Una consulta puede incluir tantas condiciones de filtro como desee, conectadas con
el operador AND y OR. También puede utilizar el operador NOT para invertir el valor de una
expresión lógica o utilizar EMPTY( ) para comprobar si hay campos vacíos.
-- PRIMERA FORMA
SELECT * FROM distrito
GO
-- SEGUNDA FORMA
SELECT ALL * FROM distrito
GO
-- ESPECIFICANDO COLUMNAS
SELECT idDistrito,idProvincia,nomdistrit FROM distrito
GO
CASO DESARROLLADO 45: Implementar una consulta que permita mostrar los códigos
registrados de la tabla DISTRITO sin repetirlos, use la cláusula DISTINCT.
USE LEGAJOS_CSJAN_CONSULTAS
GO
CASO DESARROLLADO 46: Implementar una consulta que permita mostrar los registros de la
tabla DISTRITO ordenados por sus nombres en forma ascendente, use la cláusula ORDER BY.
Manual De Base De Datos Con SQL-Server 123
USE LEGAJOS_CSJAN_CONSULTAS
GO
SELECT *
FROM distrito
ORDER BY nomdistrit ASC
CASO DESARROLLADO 47: Implementar una consulta que permita mostrar los registros de la
tabla PROVINCIA ordenados por su IDDEPARTAMENTO en forma ascendente, use la cláusula
ORDER BY.
USE LEGAJOS_CSJAN_CONSULTAS
GO
SELECT idProvincia,idDepartamento,nomprovin
FROM provincia
ORDER BY idDepartamento ASC
-- Orden descendente
SELECT idProvincia,idDepartamento,nomprovin
FROM provincia
ORDER BY idDepartamento DESC
CASO DESARROLLADO 48: Implementar una consulta que permita mostrar los 5 primeros
registros de la tabla DEPARTAMENTO, use la cláusula TOP.
Manual De Base De Datos Con SQL-Server 124
USE LEGAJOS_CSJAN_CONSULTAS
GO
SELECT TOP 5 *
FROM departamento
CASO DESARROLLADO 49: Implementar una consulta que permita mostrar los 5 últimos
registros de la tabla DEPARTAMENTO, use la cláusula TOP y ORDER BY.
USE LEGAJOS_CSJAN_CONSULTAS
GO
SELECT TOP 5 *
FROM departamento
ORDER BY idDepartamento DESC
CASO DESARROLLADO 50: Implementar una consulta que permita mostrar el 20% de los
primeros registros de la tabla PROVINCIA, use la cláusula TOP PERCENT.
USE LEGAJOS_CSJAN_CONSULTAS
GO
Manual De Base De Datos Con SQL-Server 125
CASO DESARROLLADO 51: Implementar una consulta que permita replicar los registros de la
tabla DISTRITO en una nueva tabla llamada MISDISTRITOS, use la cláusula INTO.
USE LEGAJOS_CSJAN_CONSULTAS
GO
CASO DESARROLLADO 52: Implementar una consulta que permita mostrar los registros de
las tablas DEPARTAMENTO y PROVINCIA combinados.
USE LEGAJOS_CSJAN_CONSULTAS
GO
SELECT PRO.*,DEP.*
FROM provincia PRO,departamento DEP
WHERE PRO.idDepartamento=DEP.idDepartamento
CASO DESARROLLADO 53: Implementar una consulta que permita mostrar los registros de
las PROVINCIAS cuyo DEPARTAMENTO sea "CUSCO", use sub consultas en la cláusula
FROM.
USE LEGAJOS_CSJAN_CONSULTAS
GO
SELECT *
FROM (SELECT P.* FROM PROVINCIA P
WHERE idDepartamento='08') D
GO
-- PRIMERA FORMA
SELECT D.idProvincia,D.nomprovin [PROVINCIA]
FROM (SELECT P.* FROM PROVINCIA P
WHERE idDepartamento='08') D
GO
-- SEGUNDA FORMA
SELECT *
FROM (SELECT P.* FROM PROVINCIA P
WHERE idDepartamento=(SELECT idDepartamento
FROM departamento
WHERE mondepart='CUSCO')) D
GO
Manual De Base De Datos Con SQL-Server 127
Operadores (Transact-SQl):
Un operador es un símbolo que especifica una acción que se realiza en una o más expresiones. En
las siguientes tablas se incluyen las categorías de operadores que utiliza SQL Server.
Operadores aritméticos
Operador de asignación
Operadores lógicos
Los operadores aritméticos realizan operaciones matemáticas con dos expresiones de uno o más de
los tipos de datos de la categoría de tipos de datos numéricos.
OPERADOR SIGNIFICADO
Operador de suma numérica, concatenación de columnas en
+ (Sumar)
una consulta y para los tipos de caracteres.
Operador de restas numéricas, también representa a los
- (Restar)
números negativos.
* (Multiplicar) Operador de Multiplicación.
/ (Dividir) Operador de división entera y fraccionaria.
Operador que devuelve el resto entero de una división. Por
% (Módulo)
ejemplo, 12 % 5 = 2 porque el resto de 12 dividido entre 5 es 2.
La funsión LTRIM permite eliminar espacios en blanco del lado izquierdo (L). Tenga
en cuenta que el parentecis es el operador con mas alta prioridad. STR convierte el
valor numerico en cadena.
CASO DESARROLLADO 56: Implementar un Script que permita mostrar el numero 45 al revés.
Usando la sentencia SELECT y PRINT.
La funsión LTRIM permite eliminar espacios en blanco del lado izquierdo (L). Tenga
en cuenta que el parentecis es el operador con mas alta prioridad. STR convierte el
valor numerico en cadena.
Asignación
SQL Server solos cuenta con un operador universal para la asignación de valores. El operador igual
“=” se tendrá que colocar en cualquier expresión que necesite asignar un valor de cualquier tipo.
Manual De Base De Datos Con SQL-Server 130
CASO DESARROLLADO 57: Implementar un Script que permita asignar el valor de PI=3.1416
a una variable. Usando la sentencia PRINT y SELECT.
La funsión LTRIM permite eliminar espacios en blanco del lado izquierdo (L). Tenga
en cuenta que el parentecis es el operador con mas alta prioridad. CAST permite
convertir a un tipo específico de datos.
CASO DESARROLLADO 58: Implementar un script que permita capturar en una variable el
correo electrónico de los datos personales de la tabla DATOSPERSONALES con código VVC,
de la base de datos LEGAJOS_CSJAN.
Lógicos
Los operadores lógicos tienen por misión comprobar la veracidad de alguna condición. Estos, como
los operadores de comparación, devuelven el tipo de datos BOOLEAN con el valor Verdadero
(TRUE), Falso (FALSE) o Desconocido (UNKNOWN).
Representa a la Y lógica en al cual dos expresiones deben ser TRUE para poder
AND
devolver verdadero.
ANY Devuelve TRUE si alguna expresión del conjunto de expresiones es TRUE.
Devuelve TRUE si el valor se encuentra dentro de un rango ya sea numérico o
BETWEEN
de cadena.
Devuelve TRUE si una determinada subconsulta devuelve por lo menos una fila
EXISTS
de registros.
Devuelve TRUE si el operando se encuentra dentro de una lista de valores
IN
específicos.
Devuelve TRUE si el operando coincide a los más con un patrón específico.
Dicho patrón contiene la cadena de caracteres que se va buscar en una expresión,
LIKE los comodines a usar son:
Representa uno o mas caracteres. Puede ser cualquier tipo de
%
carácter ya sea numérico, textual o símbolo.
Manual De Base De Datos Con SQL-Server 132
En la mayoría de los casos cuando se usa un operador lógico se necesitarán también símbolos que
representen a los operadores lógicos, como los siguientes:
= Igualdad de expresiones
<> != Diferencia de expresiones
> >= Mayor | mayor igual
< <= Menor | menor igual
CASO DESARROLLADO 59: Implementar un script que permita mostrar todos los familiares
de la tabla PERSONAFAMILIAR que sean varones y que hayan nacido a partir del año 2000.
Usando el operador lógico AND.
SELECT*
FROM personafamiliar
WHERE sexo='MASCULINO' AND YEAR(fechanac) >='2000'
ORDER BY fechanac ASC
GO
Manual De Base De Datos Con SQL-Server 133
CASO DESARROLLADO 60: Implementar un script que permita mostrar las personas cuyo año
de nacimiento se encuentre entre 1995 y el 2000 inclusive ellos mismos de la tabla
PERSONAFAMILIAR. Use el operador BETWEEN.
SELECT apellidosynombres
FROM personafamiliar
WHERE YEAR(fechanac) BETWEEN 1995 AND 2000
GO
La sentencia JOIN (unir, combinar) de SQL permite combinar registros de una o más tablas en una
base de datos relacional. En el Lenguaje de Consultas Estructurado (SQL) hay tres tipos de JOIN:
interno, externo y cruzado. El estándar ANSI del SQL especifica cinco tipos de JOIN: INNER,
LEFT OUTER, RIGHT OUTER, FULL OUTER y CROSS. Una tabla puede unirse a sí misma,
produciendo una auto-combinación, SELF-JOIN.
ESTRUCTURAS JOIN
--SINTAXIS JOIN
JOIN <nombreTabla1>
ON <nombreTabla2>
Manual De Base De Datos Con SQL-Server 134
CASO DESARROLLADO 61: Implementar una consulta que permita combinar la tabla Datos
Personales y la tabla Documento de Identidad.
Da como resultado la multiplicación entre las filas de la tabla DATOS PERSONALES por
las filas de la tabla DOCUMENTO DE IDENTIDAD.
CASO DESARROLLADO 62: Implementar una consulta que permita mostrar los Datos
personales con las siguientes columnas Iddatospersonales, nombre1, numerodocidentidad,
tipodocumento, situacion.
Manual De Base De Datos Con SQL-Server 135
--INNER JOIN
Da como resultado la multiplicación entre las filas de la tabla DATOS PERSONALES por
las filas de la tabla DOCUMENTO DE IDENTIDAD.
CASO DESARROLLADO 63: Implementar una consulta que permita mostrar todos los registros
de la tabla DatosPersonales y Documento identidad. Use LEFT JOIN
Al implementar esta consulta vemos que la tabla DATOS PERSONALES se referencia con
la unión externa izquierda eso quiere decir que la consulta deberá mostrar las columnas
en lado izquierdo y forzar a la otra tabla a mostrar sus filas.
Cuando ocurre el caso mostrara NULL en los valores cruzados.
CASO DESARROLLADO 64: Implementar una consulta que permita mostrar la tabla DATOS
PERSONALES y la tabla DOCUMENTO IDENTIDAD de forma que se aplique un producto
cartesiano entre sus filas. Usar CROSS JOIN
Capítulo
6
Transact SQL
CAPACIDAD CONTENIDO
Definiciones previas.
DOCUMENTAR CAPACIDAD
Funciones CAST y CONVERT
BHVBEBVBBVHJ Estructuras de Control Selectivas
Estructuras de Control Repetitivas
GVJEVJEHVBEHJBVHJDEBVKHEV Manejo de errores en Transact SQL
VGEVJEVUEEVE Manejo de Cursores
Funciones
hcbhbvhbrehvbekbvkebvbehvbekhbvebvh Manejo de Procedimientos Almacenados
bhevevbehjvbhebvhebvhjebvhjebvhbehjbv Comando EXECUTE
hjebvhjehjbvhjdbevhjbehjvbehbvhjedbvhe Procedimientos Almacenados definidas por el usuario
bvhjdbvdjebvhjdebvbehjbvhebvhjebhjvbeh Procedimiento almacenados y Cursores
jvbhjebvhjebhjvbhjevbhjebvhj Manejo de Transacciones
Manejo de TRIGGERS
Manual De Base De Datos Con SQL-Server 138
Introducción al TRANSACT-SQL
TRANSACT-SQL es un lenguaje muy potente que nos permite definir casi cualquier tarea que
queramos efectuar sobre la base de datos. En este tema veremos que TRANSACT-SQL va más
allá de un lenguaje SQL cualquiera ya que incluye características propias de cualquier lenguaje de
programación, características que nos permiten definir la lógica necesaria para el tratamiento de la
información:
Tipos de datos.
Definición de variables.
Estructuras de control de flujo.
Gestión de excepciones.
Funciones predefinidas.
Sin embargo, no permite:
Puede ser utilizado como cualquier SQL como lenguaje embebido en aplicaciones desarrolladas
en otros lenguajes de programación como Visual Basic, C, Java, etc. Y por supuesto los lenguajes
incluidos en la plataforma .NET.
También lo podremos ejecutar directamente de manera interactiva, por ejemplo desde el editor de
consultas de SSMS (SQL Server Management Studio) el entorno de gestión que ya conocemos.
Esta es la forma en que lo utilizaremos nosotros.
El lenguaje SQL se creó con la finalidad de ser un lenguaje muy potente y a la vez muy fácil de
utilizar, se ha conseguido en gran medida ya que con una sola frase (instrucción) podemos
recuperar datos complejos (por ejemplo, datos que se encuentran en varias tablas, combinándolos,
calculando resúmenes), y utilizando un lenguaje muy cercano al lenguaje hablado (¡suponiendo
que hablamos inglés, claro!).
Manual De Base De Datos Con SQL-Server 139
Por ejemplo:
Esta instrucción nos permite SELECCIONAR el código y nombre DE los Clientes CUYA
localidad sea Valencia.
La sencillez también radica en que lo que indicamos es lo que queremos obtener, no el cómo lo
tenemos que obtener, de eso se encargará el sistema automáticamente.
El uso de CAST y CONVERT es para pasar de un tipo de datos a otro, normalmente se hace una
conversión cuando una función requiere de un tipo especial de dato como parámetro.
Sintaxis:
CONVERT (TIPO_DATOS[(LONGITUD)],EXPRESION)
CASO DESARROLLADO 65: Implementar un script, que cuente con un monto almacenado en
una variable local @TOTAL de 150.50 soles y que muestre al usuario por medio de la función
PRINT.
SET @TOTAL=150.50
PRINT 'EL TOTAL INGRESADO ES: '+ @TOTAL
GO
A. Estructura Selectiva IF
La estructura IF evalúa una condición lógica y en función del resultado se realiza una u otra
expresión. Dicha expresión se especifica mediante una expresión lógica donde el resultado
pueda ser de tipo booleano es decir true o false.
Sintaxis
ESTRUCTURA SELECTIVA IF
--ESTRUCTURA
IF<CONDICION>
<BEGIN>
<expresiones_true>
<END>
Donde:
CONDICION: Es la expresión que el usuario determina para realizar uno o mas
expresiones. Se utiliza operadores lógico (< <= > >= < >) y relacionales (ANDOR
NOT EXISTS).
BEGIN: Enmarca el inicio de las expresiones cunado la condición resulta verdadera o
TRUE al ejecutarse.
END: Es el fin a las expresiones que empezó en BEGIN.
La estructura IF tiene 2 tipos para Transact SQL:
ESTRUCTURA IF DOBLE
--ESTRUCTURA
IF(CONDICION)
<BEGIN>
<expresiones_true>
<END>
ELSE
Manual De Base De Datos Con SQL-Server 142
<BEGIN>
<expresiones_false>
<END>
--ESTRUCTURA
IF(CONDICION)
<BEGIN>
<expresiones_true>
<END>
ELSE IF(CONDICION)
<BEGIN>
<expresiones_true>
<END>
<ELSE>
<BEGIN>
<expresiones_true>
<END>
CASO DESARROLLADO 66: Implementar una consulta que permita insertar un nuevo registro
a la tabla DocumentoIdentidad, en el caso que el usuario registre duplicidad de tipodocumento
deberá mostrar un mensaje “TIPO DE DOCUMENTO DE IDENTIDAD YA ESTA
REGISTRADO”, caso contrario insertar dicho registro y mostrar un mensaje “TIPO DE
DOCUMENTO REGISTRADO CORRECTAMENTE”
Manual De Base De Datos Con SQL-Server 143
BEGIN
END
ELSE
BEGIN
END
GO
--3. MENSAJE
CASO DESARROLLADO 67: Implementar una consulta que permita mostrar el mensaje de “NO
HAY DATOS PERSONALES CON ESTE TIPO DE DOCUMENTO”, cuando el total de Datos
personales asignados a un determinado Documentoidentidad no tenga registros en la tabla
anterior. En lo contrario determinar cuántos Datos personales tiene dicho DocumentoIdentidad
con el mensaje “EL TIPO DE DOCUMENTO… TIENE … DATOSPERSONALES”.
Manual De Base De Datos Con SQL-Server 144
--1.DECLARAR VARIABLES
IF (SELECT COUNT(*)
FROM DATOSPERSONALES DP
GROUP BY DI.TIPODOCUMENTO
ELSE
BEGIN
SELECT @TOTAL=COUNT(*)
FROM DATOSPERSONALES DP
GROUP BY DI.TIPODOCUMENTO
HAVING DI.TIPODOCUMENTO=@TIPO
END
GO
--3. MENSAJE
Con frecuencia es necesario que existan más de dos posibles acciones en una determinada
condición para esto se usa las estructuras de condición múltiple. La estructura CASE evalúa una
expresión que podrá tomar N valores distintos según se elija uno de estos valores se tomara N
posibles acciones.
Sintaxis
--ESTRUCTURA
CASE <columna>
[... n]
ELSE expresion_false
END
Manual De Base De Datos Con SQL-Server 146
Donde:
Columna: Es el nombre de la columna que se va comparar.
WHEN: Enmarca las expresiones que se buscara para la condición.
THEN: Son las especificaciones de la expresión resultante de una opción.
END: Finalización de estructura.
CASO DESARROLLADO 68: Implementar una consulta que permita mostrar la fecha de
nacimiento en la tabla DATOS PERSONAL de esta manera si fuera 2017-03-27 se adiciona una
columna a la consulta para mostrar 27 de marzo de 2017.
--1.DECLARAR VARIABLES
CASE MONTH(FECHANACIO)
END
FROM DATOSPERSONALES
GO
--3. MENSAJE
Manual De Base De Datos Con SQL-Server 147
Sintaxis
--ESTRUCTURA
WHILE condicion
<expresion_repetitiva>
[ BREAK ]
<expresion_repetitiva>
[ CONTINUE ]
<expresion_repetitiva>
Dónde:
Condición: Determina cuantos ciclos harán las expresiones.
BREAK: Corta el ciclo de repeticiones y según la secuencia de instrucciones se seguirá
con la aplicación.
CONTINUE: Regenera el ciclo de repeticiones no tomando en cuenta las instrucciones
asignadas después del operador CONTINUE.
Es mejor manejable trabajar con la estructura While con los operadores de inicio y fin
(BEGIN END) para tener mejor control de expresiones repetitivas.
Manual De Base De Datos Con SQL-Server 148
CASO DESARROLLADO 69: Implementar una consulta que permita mostrar los números
consecutivos del 1 al 10.
WHILE (@NUM<10)
BEGIN
SET @NUM+=1
PRINT 'VALOR : ' + CAST(@NUM AS CHAR(2))
END
GO
--2. IMAGEN
CASO DESARROLLADO 70: Implementar una consulta que permita mostrar los N últimos
registros de la tabla Datos Personales condicionando que las fechas de nacimiento sean las más
actuales posibles.
--3. ESTRUCTURA IF
IF @NUM=@TOPE
BEGIN
SELECT TOP(@NUM) * FROM DATOSPERSONALES DP
ORDER BY DP.FECHANACIO DESC
BREAK
END
Manual De Base De Datos Con SQL-Server 149
ELSE
BEGIN
SET @NUM+=1
CONTINUE
END
END
--3. IMAGEN.
CASO DESARROLLADO 71: Implementar una consulta que permita mostrar los registros de la
tabla Distrito paginados de 20 en 20.
--IMAGEN.
Manual De Base De Datos Con SQL-Server 150
Control de Errores.
Los lenguajes de programación tienen un especial control de los errores posibles que se pueda
generar a nivel de programación, SQL Server incorpora diferentes alternativas para controlar
dichos errores, no encargando esta tarea al lenguaje de programación sino al Transact SQL
desligándose un poco de las validaciones propias de SQL, por medio del TRY CATCH que permite
gestionar los errores de manera adecuada.
--ESTRUCTURA
BEGIN TRY
Expresion
END TRY
BEGIN CATCH
Expresion
END CATCH
Dónde:
BEGIN TRY: Es el incio del control de error en Transact SQL.
END TRY: Es finalización del BEGIN TRY.
BEGIN CATCH: Se encarga del trabajo al ocurri cualquier tipo de error, aquí entra
las funciones especiales de error.
END CATCH: Es finalización del bloque BEGIN CATCH.
CASO DESARROLLADO 72: Implementar una consulta que muestre el valor devuelto por la
función de control de errores a partir de una división sin resultado como 1/0.
--1. ESTRUCTURA
BEGIN TRY
SELECT 1/0
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ERRORNUMBER,
ERROR_SEVERITY() AS ERRORSEVERITY,
ERROR_STATE() AS ERRORSTATE,
ERROR_PROCEDURE() AS ERRORPROCEDURE,
ERROR_LINE() AS ERRORLINE,
ERROR_MESSAGE() AS ERRORMENSAJE
END CATCH
GO
CASO DESARROLLADO 73: Implementar una consulta a la tabla PERSONAL, controlando los
posibles errores usando el bloque TRY CATCH
--1. ESTRUCTURA
BEGIN TRY
DECLARE @IDPERS VARCHAR(10) ='A AR',
@SITU VARCHAR(25) ='ACTIVO'
INSERT INTO PERSONAL
VALUES (@IDPERS, @SITU)
END TRY
BEGIN CATCH
PRINT 'ERROR EN LA TABLA PERSONAL'
END CATCH
Manual De Base De Datos Con SQL-Server 152
En SQL Server un cursor puede definirse como un elemento que representará a un conjunto de
datos determinado por una consulta T-SQL, el cursor permitirá recorrer fila a fila, leer y
eventualmente modificar dicho conjunto de resultados.
SQL Server ofrecerá una amplia variedad de opciones y de funciones para crear y operar sobre
cursores. La creación y utilización de un cursor estará compuesta, como es de esperarse, por una
serie de instrucciones T-SQL, las cuales podrán separarse en grupos bien diferenciados, los cuales
son: Declaración, Apertura, Acceso a datos, Cierre y Desalojo, a continuación, detallaremos cada
grupo de instrucciones.
Un cursor es una estructura de datos creada en memoria RAM producto de una sentencia SELECT
y que nos permite navegar dentro de las filas para obtener la información.
--ESTRUCTURA
APERTURA DE UN CURSOR
--ESTRUCTURA
OPEN NOMBRE_CURSOR
Manual De Base De Datos Con SQL-Server 153
--ESTRUCTURA
FETCH
[ [ NEXT | PRIOR | FIRST | LAST
| ABSOLUTE n | @nvar
| RELATIVE n | @nvar
]
FROM
]
CERRANDO UN CURSOR
--ESTRUCTURA
CLOSE NOMBRE_CURSOR
LIBERAR CURSOR
--ESTRUCTURA
--2.-APERTURO EL CURSOR
OPEN MICURSORELEM
CASO DESARROLLADO 75: Implementar un cursor donde se genere un reporte a los registros
de la tabla DISTRITO, incluir el nombre de la provincia y departamento.
--DECLARAR CURSOR
OPEN MICURSORDIST
WHILE @@FETCH_STATUS=0
BEGIN
PRINT
@IDDIST+SPACE(5)+@NOMDIS+SPACE(5)+@NOMPROVI+SPACE(5)+@NOMDEPAR
FETCH MICURSORDIST INTO @IDDIST, @NOMDIS, @NOMPROVI, @NOMDEPAR
END
CLOSE MICURSORDIST
DEALLOCATE MICURSORDIST
GO
--IMAGEN
Manual De Base De Datos Con SQL-Server 155
6.7. Funciones
SQL Server proporciona al usuario la posibilidad de definir sus propias funciones, conocida como
UDF (user defined functions). Existen tres tipos de funciones. Estas son:
Funciones escalares.
Funciones en línea.
Funciones en línea de múltiples sentencias
Función Descripción
Funciones de conjunto de filas Devuelven un objeto que se puede utilizar como las
referencias de tabla en una instrucción SQL.
OPENDATASOURCE
OPENJSON
OPENROWSET
OPENQUERY
OPENXML
Funciones de agregado Operan sobre una colección de valores y devuelven un solo
valor de resumen.
AVG
Manual De Base De Datos Con SQL-Server 156
MIN
CHECKSUM_AGG
SUM
COUNT
STDEV
COUNT_BIG
STDEVP
GROUPING
VAR
GROUPING_ID
VARP
MAX
Las funciones de clasificación Devuelven un valor de categoría para cada fila de una
partición.
RANK
NTILE
DENSE_RANK
ROW_NUMBER
Funciones escalares (se Operan sobre un valor y después devuelven otro valor. Las
describen a continuación) funciones escalares se pueden utilizar donde la expresión
sea válida. Veamos el cuadro siguiente:
Funciones escalares
@@VERSION
@@NESTLEVEL
Funciones de conversión Admiten conversión y conversión de tipos de datos.
CAST y CONVERT ( Transact-SQL )
PARSE ( Transact-SQL )
TRY_CAST ( Transact-SQL )
TRY_CONVERT ( Transact-SQL )
TRY_PARSE ( Transact-SQL )
Funciones del cursor Devuelven información acerca de los cursores.
@@CURSOR_ROWS
CURSOR_STATUS
@@FETCH_STATUS
Datos de fecha y hora tipos y Llevan a cabo operaciones sobre un valor de entrada de
funciones fecha y hora, y devuelven un valor numérico, de cadena o
de fecha y hora.
Funciones de fecha y hora del sistema de precisión
elevada
SYSDATETIME
SYSDATETIMEOFFSET
SYSUTCDATETIME
Funciones de fecha y hora del sistema de precisión baja
CURRENT_TIMESTAMP
GETDATE
GETUTCDATE
Funciones que obtienen la fecha y hora partes
DATENAME
DATEPART
DÍA
MES
AÑO
Funciones que obtienen valores de fecha y hora de sus
partes
DATEFROMPARTS
DATETIME2FROMPARTS
DATETIMEFROMPARTS
DATETIMEOFFSETFROMPARTS
SMALLDATETIMEFROMPARTS
TIMEFROMPARTS
Funciones que obtienen la fecha y hora de diferencia
Manual De Base De Datos Con SQL-Server 158
DATEDIFF
DATEDIFF_BIG
Funciones que modifican la fecha y hora de valores
DATEADD
EOMONTH
SWITCHOFFSET
TODATETIMEOFFSET
Funciones que establecen u obtienen formato de sesión
@@DATEFIRST
SET DATEFIRST
SET DATEFORMAT
@@LENGUAGE
SET LENGUAGE
SP_HELPLANGUAGE
Funciones que validan la fecha y hora de valores
ISDATE
Funciones JSON Validar, consultar o cambiar datos JSON.
ISJSON
JSON_VALUE
JSON_QUERY
JSON_MODIFY
Funciones lógicas Realizan operaciones lógicas.
CHOOSE
IIF
Funciones matemáticas Realizan cálculos basados en valores de entrada
proporcionados como parámetros a las funciones y
devuelven valores numéricos.
ABS
GRADOS
RAND
ACOS
EXP
REDONDEAR
ASIN
FLOOR
INICIO DE SESIÓN
ATAN
REGISTRO
SENO
Manual De Base De Datos Con SQL-Server 159
ATN2
LOG10
SQRT
LÍMITE SUPERIOR
PI
CUADRADO
COS
POWER
TAN
COT
RADIANES
Funciones de metadatos Devuelven información acerca de la base de datos y los
objetos de la base de datos.
@@PROCID
INDEX_COL
APP_NAME
INDEXKEY_PROPERTY
APPLOCK_MODE
INDEXPROPERTY
APPLOCK_TEST
VALOR SIGUIENTE PARA
ASSEMBLYPROPERTY
OBJECT_DEFINITION
COL_LENGTH OBJECT_ID
COL_NAME
OBJECT_NAME
COLUMNPROPERTY
OBJECT_SCHEMA_NAME
DATABASE_PRINCIPAL_ID
OBJECTPROPERTY
DATABASEPROPERTYEX
OBJECTPROPERTYEX
DB_ID ORIGINAL_DB_NAME
DB_NAME
PARSENAME
FILE_ID
SCHEMA_ID
FILE_IDEX
SCHEMA_NAME
Manual De Base De Datos Con SQL-Server 160
FILE_NAME
SCOPE_IDENTITY
FILEGROUP_ID
SERVERPROPERTY
FILEGROUP_NAME
STATS_DATE
FILEGROUPPROPERTY
TYPE_ID
FILEPROPERTY
TYPE_NAME
FULLTEXTCATALOGPROPERTY
TYPEPROPERTY
FULLTEXTSERVICEPROPERTY
VERSIÓN
Funciones de seguridad Devuelven Información Acerca De Usuarios Y Roles.
CERTENCODED ( TRANSACT-SQL )
PWDCOMPARE ( TRANSACT-SQL )
CERTPRIVATEKEY ( TRANSACT-SQL )
PWDENCRYPT ( TRANSACT-SQL )
CURRENT_USER ( TRANSACT-SQL )
SCHEMA_ID ( TRANSACT-SQL )
DATABASE_PRINCIPAL_ID ( TRANSACT-SQL )
SCHEMA_NAME ( TRANSACT-SQL )
SYS.FN_BUILTIN_PERMISSIONS ( TRANSACT-SQL )
SESSION_USER ( TRANSACT-SQL )
SYS.FN_GET_AUDIT_FILE ( TRANSACT-SQL )
SUSER_ID ( TRANSACT-SQL )
SYS.FN_MY_PERMISSIONS ( TRANSACT-SQL )
SUSER_SID ( TRANSACT-SQL )
HAS_PERMS_BY_NAME ( TRANSACT-SQL )
SUSER_SNAME ( TRANSACT-SQL )
IS_MEMBER (TRANSACT-SQL)
SYSTEM_USER ( TRANSACT-SQL )
IS_ROLEMEMBER ( TRANSACT-SQL )
SUSER_NAME ( TRANSACT-SQL )
IS_SRVROLEMEMBER ( TRANSACT-SQL )
USER_ID ( TRANSACT-SQL )
ORIGINAL_LOGIN ( TRANSACT-SQL )
USER_NAME ( TRANSACT-SQL )
Manual De Base De Datos Con SQL-Server 161
PERMISOS ( TRANSACT-SQL )
Funciones de cadena Realizar operaciones en una cadena (char o varchar) valor
de entrada y devuelve un valor de cadena o numérica.
ASCII
CHAR
CHARINDEX
CONCAT
CONCAT_WS
DIFERENCIA
FORMATO
LEFT
LEN
INFERIOR
LTRIM
NCHAR
PATINDEX
QUOTENAME
REPLACE
REPLICAR
REVERSE
RIGHT
RTRIM
SOUNDEX
ESPACIO
STR
STRING_AGG
STRING_ESCAPE
STRING_SPLIT
STUFF
SUBSTRING
TRADUCIR
RECORTE
UNICODE
SUPERIOR
Funciones del sistema Realizan operaciones y devuelven información acerca de
valores, objetos y configuraciones de una instancia de SQL
Server.
$PARTITION
ERROR_PROCEDURE
Manual De Base De Datos Con SQL-Server 162
@@ERROR
ERROR_SEVERITY
@@IDENTITY
ERROR_STATE
@@PACK_RECEIVED
FORMATMESSAGE
@@ROWCOUNT
GET_FILESTREAM_TRANSACTION_CONTEXT
@@TRANCOUNT
GETANSINULL
BINARY_CHECKSUM
HOST_ID
SUMA DE COMPROBACIÓN
HOST_NAME
COMPRIMIR
ISNULL
CONNECTIONPROPERTY
ISNUMERIC
CONTEXT_INFO
MIN_ACTIVE_ROWVERSION
CURRENT_REQUEST_ID
NEWID
CURRENT_TRANSACTION_ID
NEWSEQUENTIALID
DESCOMPRIMIR
ROWCOUNT_BIG
ERROR_LINE
SESSION_CONTEXT
ERROR_MESSAGE
SESSION_ID
ERROR_NUMBER
XACT_STATE
Funciones estadísticas del Devuelven información estadística acerca del sistema.
sistema @@CONNECTIONS
@@PACK_RECEIVED
@@CPU_BUSY
@@PACK_SENT
fn_virtualfilestats
@@TIMETICKS
Manual De Base De Datos Con SQL-Server 163
@@IDLE
@@TOTAL_ERRORS
@@IO_BUSY
@@TOTAL_READ
@@PACKET_ERRORS
@@TOTAL_WRITE
Funciones de imagen y texto Realizan operaciones sobre los valores de entrada o
columnas de texto o imagen, y devuelven información
acerca del valor.
PATINDEX
TEXTVALID
TEXTPTR
Tipos de funciones
Función escalar. Las funciones escalares definidas por el usuario devuelven un único valor
de datos del tipo definido en la cláusula RETURNS. En una función escalar insertada no hay
cuerpo de la función; el valor escalar es el resultado de una sola instrucción. Para una función
escalar de varias instrucciones, el cuerpo de la función, definido en un bloque
Manual De Base De Datos Con SQL-Server 164
Funciones con valores de tabla. Las funciones con valores de tabla definidas por el usuario
devuelven un tipo de datos table. Las funciones insertadas con valores de tabla no tienen
cuerpo; la tabla es el conjunto de resultados de una sola instrucción SELECT. Ejemplos.
Funciones del sistema. SQL Server proporciona numerosas funciones del sistema que se
pueden usar para realizar diversas operaciones. No se pueden modificar. Para obtener más
información, vea Funciones integradas (Transact-SQL), Funciones almacenadas del sistema
(Transact-SQL) y Funciones y vistas de administración dinámica (Transact-SQL).
Instrucciones
NOTA: Si una instrucción CREATE FUNCTION genera efectos secundarios sobre recursos
que no existen en el momento que se emite la instrucción CREATE FUNCTION, SQL Server
ejecuta la instrucción. Sin embargo, SQL Server no ejecuta la función cuando ésta se invoca.
El número de veces que se ejecuta realmente una función especificada en una consulta puede
variar entre los planes de ejecución generados por el optimizador. Un ejemplo es una función
invocada por una subconsulta en una cláusula WHERE. El número de veces que se ejecuta
la subconsulta y su función puede variar con diferentes rutas de acceso seleccionadas por el
optimizador.
Manual De Base De Datos Con SQL-Server 165
CASO DESARROLLADO 76: Implementar una consulta que permita implementar una función
que devuelva el promedio de tres números ingresados por el usuario.
FUNCION PROMEDIO
-- FUNCION PROMEDIO
-- SEGUNDA FORMA
CASO DESARROLLADO 77: Implementar una consulta que permita implementar una función
que devuelva el total de PROVINCIAS de un determinado DEPARTAMENTO ingresado por el
usuario.
FUNCION PROVINCIAXDEPARTAMENTO
-- FUNCION PROVINCIAXDEPARTAMENTO
CASO DESARROLLADO 78: Implementar una consulta que permita implementar una función
que devuelva la factorial de un número ingresado por el usuario. Usar recursividad de la función.
FUNCION FACTORIAL
-- FUNCION FACTORIAL
CREATE FUNCTION DBO.FACTORIAL(@NUM INT)
RETURNS INT
AS
BEGIN
DECLARE @FACTOR INT
IF @NUM <= 1
SET @FACTOR = 1
ELSE
SET @FACTOR = @NUM * DBO.FACTORIAL(@NUM-1)
Manual De Base De Datos Con SQL-Server 167
RETURN (@FACTOR)
END
-- PRIMERA FORMA
-- SEGUNDA FORMA
CASO DESARROLLADO 79: Implementar una consulta que permita implementar una función
de tabla en línea que muestre los registros de la tabla distrito.
FUNCION MISDISTRITOS
-- FUNCION DBO.MISDISTRITOS
GO
CASO DESARROLLADO 80: Implementar una consulta que permita implementar una función
de tabla multisentencia que muestre los registros de la tabla PROVINCIA adicionando el nombre
del DEPARTAMENTO.
-- FUNCION MISPROVINCIAS
Los procedimientos se pueden crear para uso permanente o para uso temporal en una sesión, un
procedimiento local temporal, o para su uso temporal en todas las sesiones, un procedimiento
temporal global.
El motor de base de datos considera al procedimiento almacenado como un objeto que contiene un
conjunto de instrucciones SQL que se ejecutan en conjunto con un mismo nombre y una sola
llamada.
Server proveedor Native Client OLE DB y el SQL Server controlador ODBC de Native Client para
implementar la funcionalidad de una API de base de datos. Estos procedimientos almacenados
simplemente son el mecanismo que el proveedor o el controlador utiliza para comunicar las
solicitudes del usuario a una instancia de SQL Server. Están destinados al uso interno del proveedor
o el controlador. Llamarlos explícitamente desde una SQL Server-no se admite la aplicación basada
en.
El almacenados sp_createorphan y sp_droporphans se utilizan procedimientos para ODBC ntext,
texto, y imagen de procesamiento.
SQL Server utiliza el procedimiento almacenado sp_reset_connection para permitir las llamadas a
procedimientos almacenados remotos en una transacción. Este procedimiento almacenado también
hace que se activen los eventos Audit Login y Audit Logout cuando se reutiliza una conexión de
un grupo de conexiones.
Los procedimientos almacenados del sistema de las siguientes tablas solo se utilizan en una
instancia de SQL Server o a través de las API cliente y no están destinados al uso general. Están
sujetos a cambios y su compatibilidad no está garantizada.
Los siguientes procedimientos almacenados están documentados en los Libros en pantalla de SQL
Server:
sp_catalogs sp_fkeys
sp_column_privileges sp_foreignkeys
sp_column_privileges_ex sp_indexes
sp_columns sp_pkeys
sp_columns_ex sp_primarykeys
sp_databases sp_prepare
sp_cursor sp_prepexec
sp_cursorclose sp_prepexecrpc
sp_cursorexecute sp_unprepare
sp_cursorfetch sp_server_info
sp_cursoroption sp_special_columns
sp_cursoropen sp_sproc_columns
sp_cursorprepare sp_statistics
sp_cursorprepexec sp_table_privileges
sp_cursorunprepare sp_table_privileges_ex
sp_execute sp_tables
sp_datatype_info sp_tables_ex
sp_assemblies_rowset2 sp_ddopen;10
sp_assembly_dependencies_rowset sp_ddopen;11
sp_assembly_dependencies_rowset_r sp_ddopen;12
mt sp_ddopen;13
sp_assembly_dependencies_rowset2 sp_ddopen;2
sp_bcp_dbcmptlevel sp_ddopen;3
sp_catalogs_rowset sp_ddopen;4
sp_catalogs_rowset;2 sp_ddopen;5
sp_catalogs_rowset;5 sp_ddopen;6
sp_catalogs_rowset_rmt sp_ddopen;7
sp_catalogs_rowset2 sp_ddopen;8
sp_check_constbytable_rowset sp_ddopen;9
sp_check_constbytable_rowset;2 sp_foreign_keys_rowset
sp_check_constbytable_rowset2 sp_foreign_keys_rowset;2
sp_check_constraints_rowset sp_foreign_keys_rowset;3
sp_check_constraints_rowset;2 sp_foreign_keys_rowset;5
sp_check_constraints_rowset2 sp_foreign_keys_rowset_rmt
sp_column_privileges_rowset sp_foreign_keys_rowset2
sp_column_privileges_rowset;2 sp_foreign_keys_rowset3
sp_column_privileges_rowset;5 sp_indexes_90_rowset
sp_column_privileges_rowset_rmt sp_indexes_90_rowset_rmt
sp_column_privileges_rowset2 sp_indexes_90_rowset2
sp_columns_90 sp_indexes_rowset
sp_columns_90_rowset sp_indexes_rowset;2
sp_columns_90_rowset_rmt sp_indexes_rowset;5
sp_columns_90_rowset2 sp_indexes_rowset_rmt
sp_columns_ex_90 sp_indexes_rowset2
sp_columns_rowset sp_linkedservers_rowset
sp_columns_rowset;2 sp_linkedservers_rowset;2
sp_columns_rowset;5 sp_linkedservers_rowset2
sp_columns_rowset_rmt sp_oledb_database
sp_columns_rowset2 sp_oledb_defdb
sp_constr_col_usage_rowset sp_oledb_deflang
sp_datatype_info_90 sp_oledb_language
sp_ddopen;1 sp_oledb_ro_usrname
Manual De Base De Datos Con SQL-Server 1
7
2
sp_primary_keys_rowset sp_table_privileges_rowset;5
sp_primary_keys_rowset;2 sp_table_privileges_rowset_rmt
sp_primary_keys_rowset;3 sp_table_privileges_rowset2
sp_primary_keys_rowset;5 sp_table_statistics_rowset
sp_primary_keys_rowset_rmt sp_table_statistics_rowset;2
sp_primary_keys_rowset2 sp_table_statistics2_rowset
sp_procedure_params_90_rowset sp_tablecollations
sp_procedure_params_90_rowset2 sp_tablecollations_90
sp_procedure_params_rowset sp_tables_info_90_rowset
sp_procedure_params_rowset;2 sp_tables_info_90_rowset_64
sp_procedure_params_rowset2 sp_tables_info_90_rowset2
sp_procedures_rowset sp_tables_info_90_rowset2_64
sp_procedures_rowset;2 sp_tables_info_rowset
sp_procedures_rowset2 sp_tables_info_rowset;2
sp_provider_types_90_rowset sp_tables_info_rowset_64
sp_provider_types_rowset sp_tables_info_rowset_64;2
sp_schemata_rowset sp_tables_info_rowset2
sp_schemata_rowset;3 sp_tables_info_rowset2_64
sp_special_columns_90 sp_tables_rowset;2
sp_sproc_columns_90 sp_tables_rowset;5
sp_statistics_rowset sp_tables_rowset_rmt
sp_statistics_rowset;2 sp_tables_rowset2
sp_statistics_rowset2 sp_usertypes_rowset
sp_stored_procedures sp_usertypes_rowset_rmt
sp_table_constraints_rowset sp_usertypes_rowset2
sp_table_constraints_rowset;2 sp_views_rowset
sp_table_constraints_rowset2 sp_views_rowset2
sp_table_privileges_rowset sp_xml_schema_rowset
sp_table_privileges_rowset;2 sp_xml_schema_rowset2
Manual De Base De Datos Con SQL-Server 173
Instrucción EXECUTE realiza que SqlCliente, ODBC debe ejecutarse una o varias instrucciones
en Transact-SQL, pero estas instrucciones deben de cumplir con la sintaxis evaluada desde el motor
de base de datos SQL.
Sintaxis EXECUTE:
ESTRUCTURA EXECUTE
--ESTRUCTURA
[ { EXEC | EXECUTE } ]
{
[ @RETURN_STATUS = ]
MODULE_NAME [ ;NUMBER ] | @MODULE_NAME_VAR
[ [ @PARAMETER = ] {VALUE
| @VARIABLE [ OUTPUT ]
| [ DEFAULT ]
}
]
Sintaxis SP_EXECUTESQL:
ESTRUCTURA SP_EXECUTESQL
--ESTRUCTURA
--INSTRUCCION
DECLARE @DATOS VARCHAR(MAX)
SET @DATOS='SELECT*FROM DATOSPERSONALES'
Manual De Base De Datos Con SQL-Server 174
-- EJECUCION DE EXEC
EXEC(@DATOS)
GO
ESTRUCTURA SP_EXECUTESQL
----INSTRUCCION
-- EJECUCION DE EXEC
EXEC SP_EXECUTESQL @DATOS
GO
RESULTADOS DE AMBOS
--IMAGEN
Son procedimientos realizados de acuerdo a la necesidad del usuario, dentro de ella se puede aplicar
cualquier consulta vistas anteriormente.
Sintaxis:
--ESTRUCTURA
CREATE PROC | PROCEDURE [PROPIETARIO].NOMBRE_PROCEDIMIENTO
[ @PARAMETRO TIPO_DATOS [ = DEFAULT ] [ OUT | OUTPUT ]
[READONLY] ]
AS
[BEGIN]
CUERPO_DEL_PROCEDIMIENTO
[END]
Manual De Base De Datos Con SQL-Server 175
PROCEDIMIENTO MUESTRADATOSPERSONALES
EXEC MUESTRADATOSPERSONALES
GO
--IMAGEN
PROCEDIMIENTO
IF EXISTS(SELECT IDDATOSPERSONALES
FROM DATOSPERSONALES
WHERE NOMBRE1=@NOMBRE)
--IMAGEN
GO
--IMAGEN
Cuando se habló del tema de cursores resultaba un poco incómodo ejecutarlos ya que se tenía que
seleccionar todo el bloque que encierra al cursor o ejecutarlo por bloques, los procedimientos
almacenados reducen el tiempo de ejecución llamando al cursor por medio del nombre asignado al
procedimiento almacenado que lo aloje.
CASO DESARROLLADO 84: Implementar una consulta que permita crear el procedimiento
almacenado REPORTE_PROVINCIA el cual mostrara un reporte de la tabla PROVINCIA por
medio de un CURSOR, considere que solo se deben de mostrar las PROVINCIAS de un
determinado DEPARTAMENTO.
SET @TOTAL+=1
PRINT @IDPRO+SPACE(5)+
@NOMPRO+SPACE(25)+
RTRIM(@NOMDEPA)+SPACE(5)
FETCH MICURSOR INTO @IDPRO,@NOMPRO,@NOMDEPA
END
PRINT '--------------------------------------------'
PRINT
'EL TOTAL DE PROVINCIAS ES: '+CAST(@TOTAL AS
CHAR(6))
PRINT '--------------------------------------------'
CLOSE MICURSOR
DEALLOCATE MICURSOR
END
GO
-- EJECUTANDO EL PROCEDIMIENTO ALMACENADO
EXEC REPORTE_PROVINCIA 'ICA'
CASO DESARROLLADO 85: Implementar una consulta que permita crear el procedimiento
almacenado REPORTE_PROVINCIA_INI el cual mostrara un reporte de la tabla PROVINCIA
por medio de un CURSOR, considere que solo se deben de mostrar las PROVINCIAS de un
determinado parámetro.
@NOMPRO
FETCH MICURSOR INTO @IDPRO,@IDDEPAR,@NOMPRO
END
PRINT
'EL TOTAL DE PROVINCIA QUE CONTIENEN LAS
INICIALES("'+
@PROV+'") ES:'+CAST(@TOTAL AS CHAR(6))
CLOSE MICURSOR
DEALLOCATE MICURSOR
END
GO
Una transacción es una unidad única de trabajo. Si una transacción tiene éxito, todas las
modificaciones de los datos realizadas durante la transacción se confirman y se convierten en una
parte permanente de la base de datos. Si una transacción encuentra errores y debe cancelarse o
revertirse, se borran todas las modificaciones de los datos.
o revierte una transacción de ámbito de lote cuando se completa el lote, SQL Server la
revierte automáticamente.
-- SINTAXIS
BEGIN [TRAN|TRANSACTION] NOMBRE_TRANSACTION
COMMIT TRAN NOMBRE_TRANSACCION
ROLLBACK TRAN NOMBRE_TRANSACCION
IF @@ERROR=0
BEGIN
PRINT
'LA PROVINCIA SE REGISTRO CON EXITO'
COMMIT TRAN TPROVINCIA
END
ELSE
BEGIN
PRINT 'OCURRIO UN ERROR AL INSERTAR'
ROLLBACK TRAN TPROVINCIA
END
GO
CASO DESARROLLADO 87: Implementar una consulta que permita crear un procedimiento
almacenado, el procedimiento almacenado debe de permitir registrar la provincia y a la vez
actualizar los valores de la tabla departamento.
MANEJO DE TRANSACCIONES
El trigger o disparador en una base de datos, se ejecuta cuando se cumple una determinada
condición al realizar operación.
Dicho triggers pueden ser para inserción (INSERT), modificación o actualización (UPDATE) o
eliminación (DELETE).
Usos:
Permite registrar, auditar los procesos de cambio de valores en las bases de datos.
Permite validar los valores aprobando o negando acciones hechas por las sentencias de tipo
DML.
Preserva la consistencia y claridad de los valores con los objetos de tipo table o tabla del
base de datos.
Se pueden crear más de un trigger para un mismo evento en una tabla, con lo cual se pueden
controlar múltiples alternativas sobre la misma tabla.
Manual De Base De Datos Con SQL-Server 184
--ESTRUCTURA
--ESTRUCTURA
Donde:
SELECT*FROM SYS.TRIGGERS
GO
--ELIMINACION DE TRIGGER
--HABILITAR
--ELIMINACION DE TRIGGER
CASO DESARROLLADO 88: Implementar un trigger que permita indicar un mensaje cada vez
que se inserte o actualiza un registro de la tabla PERSONAL.
Manual De Base De Datos Con SQL-Server 186
--CREACION DE TRIGGER
--INSERCION DE DATOS
FOR INSERT
AS
-- DECLARACION DE VARIABLES
EXEC MASTER.DBO.XP_SENDEMAIL
@RECIPIENTS = '[email protected]',
@SUBJECT ='** NUEVO DATOS ** ',
@MESSAGE =@MENSAJE
GO
Manual De Base De Datos Con SQL-Server 187
Capítulo
7
Ejercicios
Propuestos
CAPACIDAD
DOCUMENTAR CAPACIDAD
BHVBEBVBBVHJ
BFDBVHDBBVDBVDFHMBVDHM
hcbhbvhbrehvbekbvkebvbehvbekhbvebvhbhevevbehjvbhebvhebvhjebvhjebvhbehjbvhjebvhjehjbvhjdbev
hjbehjvbehbvhjedbvhebvhjdbvdjebvhjdebvbehjbvhebvhjebhjvbehjvbhjebvhjebhjvbhjevbhjebvhj
Manual De Base De Datos Con SQL-Server 188
USE LEGAJOS_CSJAN_PROPUESTOS
GO
---CREACION DE TABLAS
)
GO
-- LLAVES PRIMARIAS
-- LLAVES FORANEAS
EJERCICIOS PROPUESTOS:
1. Desarrollar una consulta, que permita crear la base de datos “LEGAJOS_CSJAN_E1” con valores
estándar.
2. Desarrollar una consulta, que permita crear la tabla PERSONAFAMILIAR dentro de la base de datos
“LEGAJOS_CSJAN_E1”.
3. Desarrollar una consulta, que me permita mostrar un mensaje al usuario (“SE INSERTO
CORRECTAMENTE”) al momento de realizar una inserción a la tabla PERSONAFAMILIAR, usar
TRIGGER.
4. Desarrollar una consulta, que me permita mostrar un mensaje al usuario (“SE ACTUALIZO
CORRECTAMENTE”) al momento de realizar una actualización de los registros de la tabla
PERSONAFAMILIAR, usar TRIGGER.
7. Desarrollar una consulta, que me permita mostrar los registros contenidos de la tabla
PERSONAFAMILIAR (Apellidos y Nombres, Fecha de Nacimiento y Sexo). Usar Vistas.
Manual De Base De Datos Con SQL-Server 192
8. Desarrollar una consulta, que permita crear la Base de Datos “LEGAJOS_CSJAN_P1” ubicado en la
carpeta D:\BASE_LEGAJOS_CSJAN especificando un archivo primario con tamaño inicial de 10MB,
un tamaño máximo de 40MB y un crecimiento de 10MB, además el archivo de transacciones debe tener
un tamaño inicial de 5MB y como máximo 10MB a una tasa de crecimiento de 20%.
9. Desarrollar una consulta, que permita crear la Base de Dato “LEGAJOS_CSJAN_P2” ubicado en la
carpeta D:\BASE_LEGAJOS_CSJAN con la siguiente configuración:
ARCHIVO DE DATOS: Un tamaño inicial de 15MB, máximo de 30MB y un factor de crecimiento
de 2MB.
ARCHIVO SECUNDARIO: Un tamaño inicial de 5MB, máximo de 35MB y un factor de
crecimiento de 7%.
ARCHIVO DE TRANSACCIONES: Un tamaño inicial de 2MB, máximo de 10MB y un factor de
crecimiento de 2%.
10. Desarrollar una consulta, que permita crear la Base de Datos “LEGAJOS_CSJAN_P3” ubicado en la
carpeta D:\BASE_LEGAJOS_CSJAN con la siguiente configuración:
ARCHIVO DE DATOS: Un tamaño inicial de 10MB, máximo de 40MB y un factor de crecimiento
de 5MB.
ARCHIVO SECUNDARIO1: Un tamaño inicial de 5MB, máximo de 30MB y un factor de
crecimiento de 1%.
ARCHIVO SECUNDARIO2: Un tamaño inicial de 10MB, máximo de 50MB y un factor de
crecimiento de 10%.
ARCHIVO DE TRANSACCIONES: Un tamaño inicial de 4MB, máximo de 15MB y un factor de
crecimiento de 3%.
11. Desarrollar una consulta, que permita crear la Base de Datos “LEGAJOS_CSJAN_P4” ubicado en la
carpeta D:\BASE_LEGAJOS_CSJAN con la siguiente configuración.
ARCHIVO DE DATOS: Un tamaño inicial de 10MB, máximo de 80MB y un factor de crecimiento
de 5MB.
ARCHIVO SECUNDARIO: Un tamaño inicial de 5MB, máximo de 50MB y un factor de
crecimiento de 5%.
ARCHIVO DE TRANSACCIONES: Un tamaño inicial de 6MB, máximo de 60MB y un factor de
crecimiento de 10%.
12. Realizar una copia de la Base de Datos “LEGAJOS_CSJAN_P4” usando las cuatro maneras de adjuntar
y separar una Base de Datos.
Manual De Base De Datos Con SQL-Server 193
14. Desarrollar del ejercicio anterior, crear las tablas haciendo referencia a los esquemas que usted creo por
su criterio.
15. Desarrollar una consulta que permita añadir la restricción UNIQUE a la columna NOMTIPO de la tabla
TIPOFAMILIAR, es decir solo permita registrar el tipo de familiar sin repetirse. (utilizar alter)
16. Implementar una consulta que permita restringir el campo ruc de la tabla
OTROSDATOSIDENTIFICACION, de tal manera que solo permita ingresar números (0-9) y con una
longitud igual a 11.
17. Implementar una consulta que permita añadir la restricción a la columna FECHANACIO de la tabla
DATOSPERSONALES en donde solo permitirá registrar fechas de resoluciones menores al día actual.
18. Desarrollar una consulta que permita registrar a la tabla Departamento, Provincia, Distrito usando la
versión simple de la instrucción o comando INSERT de la base de datos
“LEGAJOS_CSJAN_PROPUESTOS”.
19. Desarrollar una consulta que permita registrar a las tablas, Tipo Familiar, persona familiar, datos
familiares, personal de la base de datos “LEGAJOS_CSJAN_PROPUESTOS” aplicando el registro
múltiple de filas (criterio de por lo menos "n" filas).
20. Desarrollar una consulta que permita registrara las tablas documento Identidad, Datos personales (haber
realizado los 2 ejercicios anteriores), aplicando un orden personalizado de las columnas.
21. Desarrollar una consulta que permita ingresar solo el tipo documento en la tabla documento identidad.
22. Desarrollar una consulta que permita crear una vista y mediante ellos insertar a la tabla “otros datos
identificación”.
23. Desarrollar una consulta que permita registrar los 5 primeros “persona familiar” a una tabla llamada
PERSONAFAMILIAR_TEMP (La tabla será definida por el usuario).
24. Desarrollar una consulta que crear una tabla temporal para Distrito e ingresar los que tengan la letra “a”
al final.
Manual De Base De Datos Con SQL-Server 194
25. Desarrollar una consulta que permita registrar los tipos de documento de identidad de la tabla documento
identidad a una nueva tabla temporal llamada MISTIPODOCUMENTOIDENTIDAD, usar la
instrucción WITH.
26. Desarrollar una consulta que permita asignar a la columna situación “ALTA” sólo al registro cuya Id
personal lo especifique usted.
27. Desarrollar una consulta que actualicé la situación en el campo personal que sea de número de documento
de identidad que decida. Todo esto deberá ser realizado en la tabla Personal. Usar sub consultas.
28. Desarrollar una consulta que permita eliminar todos los registros de la tabla
PERSONAFAMILIAR_TEMP (haber realizado el ejercicio 23).
29. Desarrollar una consulta que permita eliminar los registros de los DISTRITOS cuyo PROVINCIA sean
“CHACHAPOYAS”. Usando sub consultas para el proceso.
30. Desarrollar una consulta que permita eliminar el 5% de los registros de la tabla DISTRITO cuya
PROVINCIA sea " POMABAMBA ", usar sub consultas para el proceso y el operador OUTPUT.
31. Desarrollar una consulta, que permita mostrar los Apellidos y Nombres registrados de la tabla
PERSONAFAMILIAR sin repetirlos, use la cláusula DISTINCT.
32. Desarrollar una consulta, que permita mostrar los registros de la tabla PERSONAFAMILIAR ordenados
por su Apellidos y Nombres en forma ascendente, usar la cláusula ORDER BY.
33. Desarrollar una consulta, que permita mostrar los 10 primeros registros de la tabla
PERSONAFAMILIAR, usar la cláusula TOP.
34. Desarrollar una consulta, que permita mostrar los 10 últimos registros de la tabla
PERSONAFAMILIAR, usar la cláusula TOP y ORDER BY.
35. Desarrollar una consulta, que permita mostrar el 10% de los registros de la tabla PERSONAFAMILIAR,
use la cláusula TOP PERCENT.
36. Desarrollar una consulta, que permita replicar los registros de la tabla PERSONAFAMILIAR en una
nueva tabla llamada MIPERSONAFAMILIAR, use la cláusula INTO.
37. Desarrollar una consulta, que permita mostrar los registros de la tabla PERSONAFAMILIAR y
DATOSFAMILIARES combinados.
Manual De Base De Datos Con SQL-Server 195
38. Desarrollar una consulta, que permita mostrar los registros de la tabla DATOSPERSONALES cuyo
DISTRITO sea “HUARAZ”, usar sub consultas en la cláusula FROM.
39. Desarrollar una consulta que permita combinar las tablas Persona familiar, tipo familiar, personal. Usar
INNER JOIN
40. Desarrollar una consulta que permita mostrar todos los registros de la tabla Departamento, Provincia y
Distrito. Usar LEFT JOIN
41. Desarrollar una consulta que permita mostrar la tabla DATOSPERSONALES y la tabla
OTROSDATOSIDENTIFICACION de forma que se aplique un producto cartesiano entre sus filas.
42. Desarrollar una consulta que permita insertar un nuevo registro a la tabla Datos Personales, en el caso
que el usuario registre duplicidad de Apellido paterno Y Apellido materno deberá mostrar un mensaje
“LOS APELLIDOS YA ESTA REGISTRADO”, caso contrario insertar dicho registro y mostrar un
mensaje “APELLIDOS REGISTRADOS CORRECTAMENTE”.
43. Implementar una consulta que permita mostrar el mensaje de “NO HAY DATOS PERSONALES CON
UBICACIÓN DE DISTRITO”, cuando el total de Datos personales asignados a un determinado Distritos
no tenga registros en la tabla anterior. En lo contrario determinar cuántos Datos personales tiene dicho
Distrito con el mensaje “EL DISTRITO… TIENE … DATOSPERSONALES”.
44. Desarrollar una consulta que permita mostrar la fecha de nacimiento en la tabla PERSONAFAMILIAR
de esta manera si fuera 2017-05-27 se adiciona una columna a la consulta para mostrar 27 de mayo de
2017.
45. Desarrollar una consulta que permita mostrar los N últimos registros de la tabla PERSONAFAMILIAR
condicionando que las fechas de nacimiento sean las más actuales posibles.
46. Desarrollar una consulta que permita mostrar los registros de la tabla PROVINCIA paginados de 7 en 7.
47. Desarrollar una consulta que muestre el valor devuelto por la función de control de errores a partir de una
división sin resultado como 100/0.
48. Desarrollar una consulta donde inserte datos a la tabla TIPOFAMILIAR, controlando los posibles
errores usando el bloque TRY CATCH.
Manual De Base De Datos Con SQL-Server 196
51. Desarrollar una consulta, que permita mostrar un mensaje de información al realizar la inserción o
actualización de tabla PERSONAFAMILIAR, usar funciones.
52. Desarrollar una consulta, que permita mostrar el total de registros de la tabla DATOSPERSONALES de
un determinado DISTRITO ingresado por el usuario, usar funciones.
53. Desarrollar una consulta, que permita implementar la función de tabla en línea mostrando los registros de
la tabla DATOSPERSONALES.
54. Desarrollar una consulta, que permita implementar la función tabla multisentencia mostrando los registros
de la tabla DATOSPERSONALES adicionando el documento de identidad de la tabla
DOCUMENTOIDENTIDAD.
55. Desarrollar una consulta, que permita mostrar los registros de la tabla PERSONAFAMILIAR (Apellidos
y Nombres, sexo, fecha de nacimiento), usar procedimientos almacenados.
56. Desarrollar una consulta, que permita mostrar los registros de la tabla PERSONAFAMILIAR
considerando como el parámetro de entrada los apellidos y nombres, e implementar un mensaje de error
en caso que los datos no existan.
57. Desarrollar una consulta, que permita crear un procedimiento almacenado, el cual deberá mostrar un
reporte de la tabla PERSONAFAMILIAR por medio de un cursor.
58. Desarrollar una consulta, que permita crear un procedimiento almacenado, el cual deberá mostrar un
reporte de la tabla PERSONAFAMILIAR por medio de un cursor, considere que solo se deben de
mostrar los registros de la tabla PERSONAFAMILIAR de un determinado tipo de documento de
identidad.
59. Desarrollar una consulta, que permita crear un procedimiento almacenado a la tabla
PERSONAFAMILIAR controlando la inserción por medio de una transacción, emitiendo un mensaje
en cada inserción, si todo es correcto mostrar el siguiente mensaje “Los datos se Registraron
correctamente” en caso contrario un mensaje de error.
Manual De Base De Datos Con SQL-Server 197
60. Desarrollar una consulta, que permita crear un procedimiento almacenado a la tabla
PERSONAFAMILIAR, deberá de registrar los datos de la tabla PERSONAFAMILIAR y a la vez
actualizar los datos de la tabla DOCUMENTOIDENTIDAD.
61. Desarrollar un trigger que permita indicar un mensaje cada vez que se inserte o actualiza un registro de
la tabla DATOFAMILIARES.
62. Desarrollar un trigger que permita indicar un mensaje cada vez que se inserte un registro de la tabla
DATOPERSONALES.
BIBLIOGRAFÍA
Manual De Base De Datos Con SQL-Server 198