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
AUTOR 1
SSSSS
AUTOR2
SSSSS
AGRADECIMIENTOS
Manual De Base De Datos Con SQL-Server iii
Agradecimientos…
INTRODUCCIÓN
Manual De Base De Datos Con SQL-Server iv
Introducción…
Manual De Base De Datos Con SQL-Server ÍNDICE v
Items Página
Capítulo 1: Herramienta CASE CA ERWIN DATA MODELER ............................................................1
1.1. Definición, características y versiones .............................................................................................2
1.2. Requisitos e Instalación ....................................................................................................................3
1.3. Creación De Un Modelo De Base De Batos .....................................................................................9
1.4. Vistas de una base de datos ............................................................................................................12
Capítulo 2: Microsoft SQL Server ..............................................................................................................18
2.1. Definición, Propiedades Y Versiones .............................................................................................19
2.2. Requisitos Para La Instalación .......................................................................................................20
2.3. Instalación y Acceso .......................................................................................................................25
2.4. Configuración Del Entorno De Trabajo .........................................................................................34
2.5. Conexión de CA ERWIN DATA MODELER con SQL Server ....................................................35
2.6. Crear La Base De Datos En SQL Server ........................................................................................38
Capítulo 3: Lenguaje de Definición de Datos (LDD).................................................................................39
3.1. Definición Previas ..........................................................................................................................40
3.2. Sentencia CREATE ........................................................................................................................41
3.3. Sentencia ALTER ...........................................................................................................................45
3.4. Sentencia DROP .............................................................................................................................51
Capítulo 4: Base de Datos con SQL Server ................................................................................................53
4.1. Definiciones Previas .......................................................................................................................54
4.2. Objetivos De Una Base De Datos...................................................................................................57
4.3. Bases De Datos En SQL Server .....................................................................................................59
4.4. Estructura De Una Base De Datos ..................................................................................................60
4.5. Creación De Una Base De Datos ....................................................................................................62
4.6. Caso Práctico: Gestión De Legajos ...............................................................................................67
4.7. Adjuntar Y Separa Una Base De Datos ..........................................................................................67
4.8. Esquemas En SQL Server...............................................................................................................73
4.9. Tipo De Datos En SQL Server .......................................................................................................75
4.10. Tipo De Datos Definidos Por El Usuario ...................................................................................77
4.11. Propiedades De Los Atributos ....................................................................................................79
4.12. El Objeto Tabla...........................................................................................................................80
4.13. Manejo de tablas con Esquemas .................................................................................................81
4.14. Restricciones De Tipo: Unique, Check, Default ........................................................................83
4.15. Generación De Esquemas, Caso Propuesto: Gestión De Legajos ..............................................86
Capítulo 5: Lenguaje de Manipulación de Datos (LMD)..........................................................................87
5.1. Definiciones Previas .......................................................................................................................88
5.2. Comando INSERT INTO ...............................................................................................................89
Manual De Base De Datos Con SQL-Server vi
jkbkuku
Manual De Base De Datos Con SQL-Server 1
ICO
1
ER
Herramienta CASE CA
ERWIN DATA
CAPACIDAD CONTENIDO
Requisitos e Instalación
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.
C. Versiones
B. Instalación.
Ejecutar el archivo de instalación “CA_ERwin_Data_Modeler _r7.3_Setup”, modo
administrador.
Leer el contrato y términos de uso hasta el final para poder dar click en “I agree”.
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 11
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.
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
Definición Previas
Sentencia CREATE
Sentencia ALTER
Sentencia DROP
DDDD
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 DE 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
Objetivos De Una Base De Datos
Bases De Datos En SQL Server
Estructura De Una Base De Datos
Creación De Una Base De Datos
Caso Práctico: Gestión De Legajos
Adjuntar Y Separa Una Base De Datos
DDDD
Esquemas En SQL Server
Tipo De Datos En SQL Server
Tipo De Datos Definidos Por El Usuario
Propiedades De Los Atributos
El Objeto Tabla
Manejo de tablas con Esquemas
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
hdbhcdh
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.
Manual De Base De Datos Con SQL-Server 68
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).
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
Manual De Base De Datos Con SQL-Server 70
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:
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.
de datos como esquemas. Esa entidad de seguridad de dominio será la propietaria del nuevo
esquema.
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
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.
Cadenas binary (n) Datos binarios de longitud fija con una longitud n bytes
binarias de n bytes, donde n es un valor que oscila entre
1 y 8.000
varbinary Datos binarios de longitud variable. n indica que n bytes
(n) el tamaño de almacenamiento máximo es de 231-
1 bytes
image En desuso, sustituido por varbinary.
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.
Manual De Base De Datos Con SQL-Server 78
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 20: 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 80
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
Manual De Base De Datos Con SQL-Server 81
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
Manual De Base De Datos Con SQL-Server 82
CASO DESARROLLADO 22: 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,
ESTADOCIVIL VARCHAR (15) NOT NULL
)
GO
)
GO
)
GO
)
GO
)
GO
GO
)
GO
)
GO
)
GO
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 23: 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 24: 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
Manual De Base De Datos Con SQL-Server 85
DEFAULT: Permite personalizar dichas restricciones a cualquier columna de una tabla que
no tenga como restricción NOT NULL.
CASO DESARROLLADO 25: 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
Rrr
Manual De Base De Datos Con SQL-Server 87
Capítulo
5
Lenguaje de
Manipulación de Datos
(LMD)
CAPACIDAD CONTENIDO
Definiciones Previas
Comando INSERT INTO
Comando UPDATE
DDDD Comando DELETE
Formas de uso del comando SELECT
Operadores en SQL Server
Comandos de tipo JOIN
Manual De Base De Datos Con SQL-Server 88
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 89
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 26: 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 27: 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 28: Implementar una consulta que permita registrar los
DEPARTAMENTOS, aplicando un orden personalizado de las columnas (idDepartamento,
mondepart).
USE LEGAJOS_CSJAN_CONSULTAS
GO
CASO DESARROLLADO 29: 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
GO
-- CREANDO LA TABLA
)
GO
CASO DESARROLLADO 30: Implementar una consulta para que la situación sea pueda insertar
solo “Alta o Baja”
--INSERCCION
CASO DESARROLLADO 31: 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 32: 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 33: Implementar una tabla temporal para personal e ingresar solo los
que tenga en Idepersonal “AC”
CASO DESARROLLADO 34: Implementar una consulta que permita insertar un registro a la
tabla Documento Identidad por medio de una variable temporal de tipo table.
CASO DESARROLLADO 35: 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 36: Implementar una consulta que permita actualizar los valores de
la situación de la tabla Personal por “ALTA”.
--VERIFICACION
CASO DESARROLLADO 37: Implementar una consulta que permita actualizar los valores de
la situación de la tabla Personal por “BAJA”.
--VERIFICACION
CASO DESARROLLADO 38: 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 39: 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 100
CASO DESARROLLADO 40: Implementar una consulta que permita eliminar todos los registros
de la tabla DEPARTAMENTO.
USE LEGAJOS_CSJAN_CONSULTAS
GO
DELETE DEPARTAMENTO
GO
CASO DESARROLLADO 41: 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 42: 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 43: 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 103
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 104
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 105
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 106
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 107
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.
-- ESPECIFICANDO COLUMNAS
SELECT idDistrito,idProvincia,nomdistrit FROM distrito
GO
FROM distrito
GO
-- CONSULTAS CON CABECERA SEGUNDA FORMA
SELECT idDistrito [IDDISTRITO],
idProvincia [IDPROVINCIA],
nomdistrit [DISTRITO]
FROM distrito
GO
-- CONSULTAS CON CABECERA TERCERA FORMA
SELECT IDDISTRITO=idDistrito,
IDPROVINCIA=idProvincia,
DISTRITO=nomdistrit
FROM distrito
GO
CASO DESARROLLADO 44: 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 45: 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 109
USE LEGAJOS_CSJAN_CONSULTAS
GO
SELECT *
FROM distrito
ORDER BY nomdistrit ASC
CASO DESARROLLADO 46: 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 47: 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 110
USE LEGAJOS_CSJAN_CONSULTAS
GO
SELECT TOP 5 *
FROM departamento
CASO DESARROLLADO 48: 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 49: 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 111
CASO DESARROLLADO 50: 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 51: 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 52: 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 113
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 55: 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 116
CASO DESARROLLADO 56: 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 57: 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 118
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 58: 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 119
CASO DESARROLLADO 59: 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>
CASO DESARROLLADO 60: 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 61: 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 121
--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 62: 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 63: 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.
Funciones CAST y CONVERT
Estructuras de Control Selectivas
Estructuras de Control Repetitivas
Manejo de errores en Transact SQL
Manejo de Cursores
DDDD
Funciones
Manejo de Procedimientos Almacenados
Comando EXECUTE
Procedimientos Almacenados definidas por el usuario
Procedimiento almacenados y Cursores
Manejo de Transacciones
Manejo de TRIGGERS
Manual De Base De Datos Con SQL-Server 124
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 125
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 64: Contamos con un monto almacenado en una variable local
@TOTAL de 150.50 soles y necesitamos mostrar al usuario por medio de la función PRINT.
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 128
<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 65: 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 129
BEGIN
END
ELSE
BEGIN
END
GO
--3. MENSAJE
CASO DESARROLLADO 66: 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 130
--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 132
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 67: 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 133
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 134
CASO DESARROLLADO 68: 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 69: 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 135
ELSE
BEGIN
SET @NUM+=1
CONTINUE
END
END
--3. IMAGEN.
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.
Manual De Base De Datos Con SQL-Server 136
CASO DESARROLLADO 70: 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 71: Implementar una consulta a la tabla PERSONAL, controlando los
posibles errores usando el bloque TRY CATCH
Manual De Base De Datos Con SQL-Server 137
--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
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
--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
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
Manual De Base De Datos Con SQL-Server 140
OPENQUERY
OPENXML
Funciones de agregado Operan sobre una colección de valores y devuelven un solo
valor de resumen.
AVG
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
@@LOCK_TIMEOUT
@@SPID
@@MAX_CONNECTIONS
@@TEXTSIZE
@@MAX_PRECISION
@@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
Manual De Base De Datos Con SQL-Server 142
DATETIMEFROMPARTS
DATETIMEOFFSETFROMPARTS
SMALLDATETIMEFROMPARTS
TIMEFROMPARTS
Funciones que obtienen la fecha y hora de diferencia
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
Manual De Base De Datos Con SQL-Server 143
FLOOR
INICIO DE SESIÓN
ATAN
REGISTRO
SENO
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
Manual De Base De Datos Con SQL-Server 144
PARSENAME
FILE_ID
SCHEMA_ID
FILE_IDEX
SCHEMA_NAME
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 )
Manual De Base De Datos Con SQL-Server 145
SUSER_NAME ( TRANSACT-SQL )
IS_SRVROLEMEMBER ( TRANSACT-SQL )
USER_ID ( TRANSACT-SQL )
ORIGINAL_LOGIN ( TRANSACT-SQL )
USER_NAME ( TRANSACT-SQL )
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
Manual De Base De Datos Con SQL-Server 146
@@PACK_RECEIVED
@@CPU_BUSY
@@PACK_SENT
fn_virtualfilestats
@@TIMETICKS
@@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
BEGIN...END, contiene una serie de instrucciones de Transact-SQL que devuelven el único
valor. El tipo devuelto puede ser de cualquier tipo de datos excepto text, ntext, image,
cursory timestamp.
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
Manual De Base De Datos Con SQL-Server 149
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.
CASO DESARROLLADO 73: Desarrollar 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
GO
CASO DESARROLLADO 74: Desarrollar 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 75: Desarrollar 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
Manual De Base De Datos Con SQL-Server 151
-- PRIMERA FORMA
-- SEGUNDA FORMA
CASO DESARROLLADO 76: Desarrollar 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
CASO DESARROLLADO 77: Desarrolla 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.
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_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
sp_ddopen;10 sp_primary_keys_rowset
sp_ddopen;11 sp_primary_keys_rowset;2
sp_ddopen;12 sp_primary_keys_rowset;3
sp_ddopen;13 sp_primary_keys_rowset;5
Manual De Base De Datos Con SQL-Server 1
5
6
sp_primary_keys_rowset_rmt sp_table_privileges_rowset2
sp_primary_keys_rowset2 sp_table_statistics_rowset
sp_procedure_params_90_rowset sp_table_statistics_rowset;2
sp_procedure_params_90_rowset2 sp_table_statistics2_rowset
sp_procedure_params_rowset sp_tablecollations
sp_procedure_params_rowset;2 sp_tablecollations_90
sp_procedure_params_rowset2 sp_tables_info_90_rowset
sp_procedures_rowset sp_tables_info_90_rowset_64
sp_procedures_rowset;2 sp_tables_info_90_rowset2
sp_procedures_rowset2 sp_tables_info_90_rowset2_64
sp_provider_types_90_rowset sp_tables_info_rowset
sp_provider_types_rowset sp_tables_info_rowset;2
sp_schemata_rowset sp_tables_info_rowset_64
sp_schemata_rowset;3 sp_tables_info_rowset_64;2
sp_special_columns_90 sp_tables_info_rowset2
sp_sproc_columns_90 sp_tables_info_rowset2_64
sp_statistics_rowset sp_tables_rowset;2
sp_statistics_rowset;2 sp_tables_rowset;5
sp_statistics_rowset2 sp_tables_rowset_rmt
sp_stored_procedures sp_tables_rowset2
sp_table_constraints_rowset sp_usertypes_rowset
sp_table_constraints_rowset;2 sp_usertypes_rowset_rmt
sp_table_constraints_rowset2 sp_usertypes_rowset2
sp_table_privileges_rowset sp_views_rowset
sp_table_privileges_rowset;2 sp_views_rowset2
sp_table_privileges_rowset;5 sp_xml_schema_rowset
sp_table_privileges_rowset_rmt sp_xml_schema_rowset2
Manual De Base De Datos Con SQL-Server 157
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 158
-- 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 159
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.
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 81: 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.
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.
-- 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 83: 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 168
--ESTRUCTURA
--ESTRUCTURA
Donde:
SELECT*FROM SYS.TRIGGERS
GO
--ELIMINACION DE TRIGGER
--HABILITAR
--ELIMINACION DE TRIGGER
CASO DESARROLLADO 84: 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 170
--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 171
Capítulo
7
Ejercicios
Propuestos
CAPACIDAD CONTENIDO
DDDD DDDD
Manual De Base De Datos Con SQL-Server 172
hjvjh
BIBLIOGRAFÍA
Manual De Base De Datos Con SQL-Server 173