Teoria

23
qwertyuiopasdfghjklzxcvbn mqwertyuiopasdfghjklzxcvb nmqwertjonnyyuiopasdfghjk lzxcvbnsandymqwertyuiopas dfghjklzxcvbnmqwertyuiopa sdfghjklzxcvbnmqwertyuiop asdfghjklzxcvbnmqwertyuio pasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnsandymqw ertyuiosandypasdfghjsandy klzxcvbnmqwertyuiopasdfgh jklzxjonnycvbnmqjjonnywer tyuiopasdfghjklzxcvbnmqwe rtyuiopasdfghjklzxcvbnmqw Prácticas de SQL Server Fundamentos de Base de datos 02/12/2015 Arenas Díaz Jhonatan Izcoatl Islas López Sandy Paulina

description

Teoría de las prácticas de sql server

Transcript of Teoria

Page 1: Teoria

qwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertjonnyyuiopasdfghjklzxcvbnsandymqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnsandymqwertyuiosandypasdfghjsandyklzxcvbnmqwertyuiopasdfghjklzxjonnycvbnmqjjonnywertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfsandyghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiosandypjonnyasdfghjklzxcvbnmqwertyuiopasdfghjklz

Prácticas de SQL Server

Fundamentos de Base de datos

02/12/2015

Arenas Díaz Jhonatan IzcoatlIslas López Sandy Paulina

Page 2: Teoria

ContenidoPractica 1............................................................................................................................................2

Practica 2............................................................................................................................................3

Practica 3............................................................................................................................................5

Practica 4............................................................................................................................................8

Practica 5............................................................................................................................................9

Practica 6............................................................................................................................................9

Practica 7..........................................................................................................................................10

Practica 8..........................................................................................................................................11

Practica 9..........................................................................................................................................12

Practica 10........................................................................................................................................14

Practica 11........................................................................................................................................15

Page 3: Teoria

Practica 1

Realiza en pareja la siguiente investigación y entregarla: 1- Configuración de servicios en SQL Server

a) Administración de la configuración de servicios.

b) Administración del estado del servicio y del modo de inicio.

c) Configurar el inicio del servicio.

2- Que son los archivos de base de datos y registros

Las bases de datos de SQL Server tienen tres tipos de archivos, tal como se muestra en la tabla siguiente. Archivo DescripciónPrimario El archivo de datos principal incluye la información de inicio de la base de datos

y apunta a los demás archivos de la misma. Los datos y objetos del usuario se pueden almacenar en este archivo o en archivos de datos secundarios. Cada base de datos tiene un archivo de datos principal. La extensión recomendada para los nombres de archivos de datos principales es .mdf.

Secundario Los archivos de datos secundarios son opcionales, están definidos por el usuario y almacenan los datos del usuario. Se pueden utilizar para distribuir datos en varios discos colocando cada archivo en una unidad de disco distinta. Además, si una base de datos supera el tamaño máximo establecido para un archivo de Windows, puede utilizar los archivos de datos secundarios para permitir el crecimiento de la base de datos.La extensión de nombre de archivo recomendada para archivos de datos secundarios es .ndf.

Registro de transacciones

Los archivos del registro de transacciones contienen la información de registro que se utiliza para recuperar la base de datos. Cada base de datos debe tener al menos un archivo de registro. La extensión recomendada para los nombres de archivos de registro es .ldf.

Grupos de archivosCada base de datos tiene un grupo de archivos principal. Este grupo de archivos contiene el archivo de datos principal y cualquier otro archivo secundario que no se encuentre en otro grupo de archivos. Se pueden crear grupos de archivos definidos por el usuario para agrupar archivos con fines administrativos y de asignación y ubicación de datos.

Por ejemplo, tres archivos, Data1.ndf, Data2.ndf, y Data3.ndf, puede crearse en tres unidades de disco, respectivamente, y asignarse al grupo de archivos grArchivos1. A continuación, se puede crear una tabla específicamente para el grupo de archivos grArchivos1. Las consultas de datos de la tabla se distribuirán por los tres discos, con lo que mejorará el rendimiento. Puede obtenerse la misma mejora del rendimiento con un solo archivo creado en un conjunto de bandas RAID (matriz redundante de discos independientes). No obstante, los archivos y grupos de archivos permiten agregar fácilmente nuevos archivos a discos nuevos.

Page 4: Teoria

Todos los archivos de datos se almacenan en los grupos de archivos que se indican en la tabla siguiente.

Grupo de archivos

Descripción

Primario Grupo de archivos que contiene el archivo principal. Todas las tablas del sistema se asignan al grupo de archivos principal.

Definido por el usuario

Cualquier grupo de archivos creado específicamente por el usuario al crear la base de datos o al modificarla.

Grupo de archivos predeterminadoCuando se crean objetos en la base de datos sin especificar a qué grupo de archivos pertenecen, se asignan al grupo de archivos predeterminado. Siempre existe un grupo de archivos designado como predeterminado. Los archivos del grupo de archivos predeterminado deben ser lo suficientemente grandes como para dar cabida a todos los objetos nuevos no asignados a otros grupos de archivos.

El grupo de archivos PRINCIPAL es el predeterminado, a menos que se cambie mediante la instrucción ALTER DATABASE. Los objetos y las tablas del sistema no se asignan al nuevo grupo de archivos predeterminado, sino que siguen asignados al grupo de archivos PRIMARY.

3- Como visualizar información de las bases de datos en SQL Management Studio

4- Mencione y explique cuáles son los objetos de la base de datos que se pueden trabajar en SQL Management Studio

Practica 2

Realizar en parejas la siguiente investigación:1. ¿Qué son las restricciones en una Base de datos?

Una restricción es una condición que obliga el cumplimiento de ciertas condiciones en la base de datos. Algunas no son determinadas por los usuarios, sino que son inherentemente definidas por el simple hecho de que la base de datos sea relacional. Algunas otras restricciones las puede definir el usuario, por ejemplo, usar un campo con valores enteros entre 1 y 10.

Las restricciones proveen un método de implementar reglas en la base de datos. Las restricciones restringen los datos que pueden ser almacenados en las tablas. Usualmente se definen usando expresiones que dan como resultado un valor booleano, indicando si los datos satisfacen la restricción o no.

Las restricciones no son parte formal del modelo relacional, pero son incluidas porque juegan el rol de organizar mejor los datos. Las restricciones son muy discutidas junto con los conceptos relacionales.

Page 5: Teoria

2. Investigue las restricciones:i. Primary key

Una tabla sólo puede tener una restricción PRIMARY KEY y ninguna columna a la que se aplique una restricción PRIMARY KEY puede aceptar valores NULL. Debido a que las restricciones PRIMARY KEY garantizan datos únicos, con frecuencia se definen en una columna de identidad.

Cuando especifica una restricción PRIMARY KEY en una tabla, Motor de base de datos exige la unicidad de los datos mediante la creación de un índice único para las columnas de clave principal.Este índice también permite un acceso rápido a los datos cuando se utiliza la clave principal en las consultas. De esta forma, las claves principales que se eligen deben seguir las reglas para crear índices únicos.

ii. Foreign keyUna clave externa (FK) es una columna o combinación de columnas que se utiliza para establecer y exigir un vínculo entre los datos de dos tablas. Puede crear una clave externa mediante la definición de una restricción FOREIGN KEY cuando cree o modifique una tabla.

En una referencia de clave externa, se crea un vínculo entre dos tablas cuando las columnas de una de ellas hacen referencia a las columnas de la otra que contienen el valor de clave principal. Esta columna se convierte en una clave externa para la segunda tabla.

iii. DefaultCada columna de un registro debe contener un valor, aunque sea un valor NULL. Puede haber situaciones en las que deba cargar una fila de datos en una tabla, pero no conozca el valor de una columna o el valor ya no exista. Si la columna acepta valores NULL, puede cargar la fila con un valor NULL. Pero, dado que puede no resultar conveniente utilizar columnas que acepten valores NULL, una mejor solución podría ser establecer una definición DEFAULT para la columna siempre que sea necesario. Por ejemplo, es habitual especificar el valor cero como valor predeterminado para las columnas numéricas, o N/D (no disponible) como valor predeterminado para las columnas de cadenas cuando no se especifica ningún valor.

Al cargar una fila en una tabla con una definición DEFAULT para una columna, se indica implícitamente a Motor de base de datos que cargue un valor predeterminado en la columna en la que no se haya especificado ningún valor.

iv. CheckLas restricciones CHECK exigen la integridad del dominio mediante la limitación de los valores que puede aceptar una columna. Son similares a las restricciones FOREIGN KEY porque controlan los valores que se colocan en una columna. La diferencia reside en la forma en que determinan qué valores son válidos: las restricciones FOREIGN KEY obtienen la lista de valores válidos de otra tabla, mientras que las restricciones CHECK determinan los valores válidos a partir de una expresión lógica que no se basa en datos de otra columna. Por ejemplo, es posible limitar el intervalo de valores para una columna salary creando una restricción CHECK que sólo permita datos entre 15.000 y

Page 6: Teoria

100.000 dólares. De este modo se impide que se escriban salarios superiores al intervalo de salario normal.

Puede crear una restricción CHECK con cualquier expresión lógica (booleana) que devuelva TRUE (verdadero) o FALSE (falso) basándose en operadores lógicos. Para el ejemplo anterior, la expresión lógica sería:

Puede aplicar varias restricciones CHECK a una sola columna. También puede aplicar una sola restricción CHECK a varias columnas si se crea en el nivel de la tabla. Por ejemplo, una restricción CHECK para varias columnas se puede utilizar para confirmar que cualquier fila con un valor USA en la columna country/region tiene también un valor de dos caracteres en la columna state. Así se pueden comprobar varias condiciones en un mismo sitio.

3. Implementar en la base de datos que creo en el laboratorio las claves principales o llaves primarias en las tablas que ud. cree que son necesarias.

Practica 3

Investigar:1. Sobre las instrucciones SQL, las cuales se clasifican según su propósito en tres grupos:

a. El DDL (Data Description Language) Lenguaje de Descripción de Datos.EL DDL, es la parte del SQL dedicada a la definición de la base de datos, consta de sentencias para definir la estructura de la base de datos, permiten crear la base de datos, crear, modificar o eliminar la estructura de las tablas, crear índices, definir reglas de validación de datos, relaciones entre tablas, entre otros. Permite definir gran parte del nivel interno de la base de datos. Por este motivo estas sentencias serán utilizadas normalmente por el administrador de la base de datos.

b. El DCL (Data Control Language) Lenguaje de Control de Datos.- Ejercer un control sobre los datos tal como la asignación de privilegios de acceso a los datos (GRANT/REVOKE).

- La gestión de transacciones (COMMIT/ROLLBACK).

Una transacción se puede definir como un conjunto de acciones que se tienen que realizar todas o ninguna para preservar la integridad de la base de datos.

c. El DML (Data Manipulation Language) Lenguaje de Manipulación de Datos.Se compone de las instrucciones para el manejo de los datos, para insertar nuevos datos, modificar datos existentes, para eliminar datos y la más utilizada, para recuperar datos de la base de datos. Una sola instrucción de recuperación de datos es tan potente que permite recuperar datos de varias tablas a la vez, realizar cálculos sobre estos datos y obtener resúmenes.

El DML interactúa con el nivel externo de la base de datos por lo que sus instrucciones son muy parecidas, por no decir casi idénticas, de un sistema a otro, el usuario sólo indica lo

Page 7: Teoria

que quiere recuperar no cómo se tiene que recuperar, no influye el cómo están almacenados los datos.

Es el lenguaje que utilizan los programadores y los usuarios de la base de datos.

2. Formato de los identificadores

3. Tipos de datos que se utilizan en SQL Server 2012SQL Server proporciona un conjunto de tipos de datos del sistema que define todos los tipos de datos que pueden utilizarse. También podemos definir nuestros propios tipos de datos en Transact-SQL.Los tipos de datos más utilizados son:

Numéricos: int, decimal, money Fecha y hora: datetime Cadena de caracteres: varchar Binarios

Tipos de datos numéricos.SQL Server dispone de varios tipos de datos numéricos. Cuanto mayor sea el número que puedan almacenar mayor será en consecuencia el espacio utilizado para almacenarlo. Como regla general se recomienda usar el tipo de dato mínimo posible. Todos los dato numéricos admiten el valor NULL.

Bit: Una columna o variable de tipo bit puede almacenar el rango de valores de 1 a 0. Tinyint: Una columna o variable de tipo tinyint puede almacenar el rango de valores de 0

a 255. SmallInt: Una columna o variable de tipo smallint puede almacenar el rango de valores -

32768 a 32767. Int: Una columna o variable de tipo int puede almacenar el rango de valores -231 a 231-1. BigInt: Una columna o variable de tipo bigint puede almacenar el rango de valores -263 a

263-1 . Decimal (p,s): Una columna de tipo decimal puede almacenar datos numéricos decimales

sin redondear. Donde p es la precisión (número total del dígitos) y s la escala (número de valores decimales)

Float: Una columna de datos float puede almacenar el rango de valores -1,79x-10308 a 1,79x-10308, , si la definimos con el valor máximo de precisión. La precisión puede variar entre 1 y 53.

Real: Sinónimo de float (24). Puede almacenar el rango de valores -3,4x-1038 a 3,4x-1038,

Money: Almacena valores numéricos monetarios de -263 a 263-1, con una precisión de hasta diez milésimas de la unidad monetaria.

SmallMoney: Almacena valores numéricos monetarios de -214.748,3647 a 214.748,3647, con una precisión de hasta diez milésimas de la unidad monetaria.

Tipos de Datos Fecha y Hora. Datetime: Almacena fechas con una precisión de milisegundo. Debe usarse para fechas

muy específicas. SmallDatetime: Almacena fechas con una precisión de minuto, por lo que ocupa la mitad

de espacio de que el tipo datetime, para tablas que puedan llegar a tener muchos datos es un factor a tener muy en cuenta.

Page 8: Teoria

TimeStamp: Se utiliza para marcar un registro con la fecha de inserción – actualización. El tipo timestamp se actualiza automáticamente cada vez que insertamos o modificamos los datos.

Tipos de datos Cadena de Caracteres. Char(n): Almacena n caracteres en formato ASCII, un byte por cada letra. Cuando

almacenamos datos en el tipo char, siempre se utilizan los n caracteres indicados, incluso si la entrada de datos es inferior. Por ejemplo, si en un char (5), guardamos el valor ‘A’, se almacena ‘A ‘, ocupando los cinco bytes.

Varchar(n): Almacena n caracteres en formato ASCII, un byte por cada letra. Cuando almacenamos datos en el tipo varchar, unicamente se utilizan los caracteres necesarios, Por ejemplo, si en un varchar(255), guardamos el valor ‘A’, se almacena ‘A’, ocupando solo un byte bytes.

Varchar(max): Igual que varchar, pero al declararse como max puede almacenar 231-1 bytes.

Nchar(n): Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar puedan pertenecer a diferentes idiomas.

Nvarchar(n): Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar puedan pertenecer a diferentes idiomas.

Nvarchar(max): Igual que varchar, pero al declararse como max puede almacenar 231-1 bytes.

Tipos de datos binarios. Binary: Se utiliza para almacenar datos binarios de longitud fija, con una longitud máxima

de 8000 bytes. Varbinary: Se utiliza para almacenar datos binarios de longitud variable, con una longitud

máxima de 8000 bytes..Es muy similar a binary, salvo que varbinary utiliza menos espacio en disco.

Varbinary(max):Igual que varbinary, pero puede almacenar 231-1 bytes

Tomando el siguiente Modelo E-R

Y por medio del lenguaje SQL investigue:1. Sintaxis para crear la base de datos2. Sintaxis para crear las tablas3. Sintaxis para crear llave primaria y llave foráneas entre tablas, impleméntelo en las tablas del punto anterior

Page 9: Teoria

Practica 4

Tarea en parejas:• Crear la siguiente base de datos en SQL Server:

Nombre de la base de datos: Agencia_Carnet1_Carnet2Haciendo uso de TRANSACT – SQL crear:1. La base de datos2. Las tablas con sus correspondientes campos y propiedades3. Las relaciones entre las tablas4. Restricciones en todos los campos que crea conveniente5. Crear el diagrama de la base de datos

Guarde el archivo de las consultas con el nombre Consultas_Agencia.sql, en este archivo al inicio de las consultas digitar en comentario los nombres y carnets de cada pareja.

• Sistema de ventas. Le contratan para hacer una BD que permita apoyar la gestión de un sistema de ventas. La empresa necesita llevar un control de proveedores, clientes, productos y ventas. Un proveedor tiene un identificador, nombre, dirección, teléfono y página web. Un cliente también tiene identificador, nombre, dirección, pero puede tener varios teléfonos de contacto. La dirección se entiende por calle, número, colonia y ciudad.

Un producto tiene un id único, nombre, precio actual, stock y el identificador del proveedor.

Además se organizan en categorías, y cada producto va sólo en una categoría. Una categoría tiene id, nombre y descripción. Por razones de contabilidad, se debe registrar la información de cada venta con un id, fecha, cliente, descuento y monto final. Además se debe guardar el precio al momento de la venta, la cantidad vendida y el monto total por el producto.

Para este ejercicio, deberá crear el modelo E-R, luego deberá realizar lo siguiente:Haciendo uso de TRANSACT – SQL crear:

Page 10: Teoria

1. La base de datos2. Las tablas con sus correspondientes campos y propiedades3. Las relaciones entre las tablas4. Restricciones en todos los campos que crea conveniente5. Crear el diagrama de la base de datos

Practica 5

Tomando la base de datos Nortwind crear 10 consultas de selección tomando en cuenta todas las instrucciones vistas en la practica

Colocar como nombre al script: ConsultasSelect_EjercicioComplementario.sql

1. Crear las siguientes consultas de selección: Base de datos: AdventureWorks a. Seleccionar todos los datos de la tabla HumanResources.Department b. Seleccionar los campos SalesOrderID, OrderQty de la tabla Sales.SalesOrderDetail

en donde los datos del campo OrderID se encuentre entre 5 y 10 unidades11 c. Seleccionar los campos EmployeeID, NationalIDNumber y Title en donde en el

campo Title se encuentre la palabra Production d. Seleccionar los datos de la tabla Sales.CustomerAddress en donde en el campo

CustomerID se encuentren los siguientes datos: 2,4, 7 y 10 e. Seleccionar los campos DepartmenID, Name de la tabla

HumanResources.Department en donde los datos del DepartmenID se encuentre entre los valores 5 y 12

f. Seleccionar los campos AddressID, City y StateProvinceID en donde en el campo City comienza con la letra B

g. Seleccionar los datos de la tabla Production.Culture, en donde en el campo Name se encuentre entre los valores: English o Spanish

h. Seleccionar el 30% de los datos de la tabla Sales.Individual i. Mostrar las 10 mejores ventas (LineTotal) de la tabla Sales.SalesOrderDetail j.

Seleccionar todos los datos de la tabla Sales.SalesPerson 2. Crear cinco consultas de selección tomando en cuenta la base de datos: Library 3. Crear cinco consultas de selección tomando en cuenta la base de datos: Pubs

Practica 6

Ejercicio complementario Con la base de datos creada en el procedimiento realice las siguientes consultas a. Agregar otros dos registros a la tabla

b. Con la instrucción SELECT INTO, crear una tabla que tenga los datos de la materia donde las unidades valorativas sean mayores o iguales a 4

c. Con la instrucción INSERT SELECT – INTO, crear una tabla en donde se almacenen aquellos alumnos en donde su número de carnet empiece con la letra G

Page 11: Teoria

d. Crear dos consultas de actualización de datos

e. Crear dos consultas de eliminación de datos

Guardar el Script con el nombre: EjercicioComplementario_Guia7.sql VI. Análisis de resultados

Análisis de resultadosTarea en parejas: Crear la siguiente base de datos en SQL Server:

Crear la base de datos

Crear las tablas Crear las restricciones

Crear las relaciones entre las tablas e implementar las sentencias ON DELETE CASCADE y ON UPDATE CASCADE

Agregar 5 registro a cada tabla

Crear 5 consultas de actualización de datos

Crear 5 consultas de eliminación de datos

Practica 7

Page 12: Teoria

Ejercicio complementario: Con la Base de Datos creada en la guía 8, realice 10 consultas de ocupando funciones de

agregado. Cree dos nuevas posible tablas en la base de datos la guía 8 e ingrese al menos 3 registros. Cree 3 consultas utilizando funciones de agregado.

1. Creación de base de datos:Nombre de la base de datos: Control_de_libros

2. Debe crear la base de datos, tomando en cuenta las relaciones entre las tablas (llaves primarias y llaves foráneas).

3. Deberá implementar también las restricciones necesarias y colocar la instrucción On delete cascade y On update cascade, en las tablas que ud. Cree necesarias a implementar estas instrucciones.

4. El formato de las tablas son:

Page 13: Teoria

Practica 8

Ejercicio Complementario

Crear los siguientes ejercicios:Ejercicio 1: Usando la base de datos Northwind, crear las siguientes consultas:

a) Haciendo uso del JOIN mostrar los campos OrderDate y ProductID de las tablas Orders y Order Details donde el campo OrderDate sea igual 7 de Julio de 1996

b) Haciendo uso de subconsultas mostrar OrderDate y OrderID de la tabla Orders donde la fecha de pedido (OrderDate) sea la más antigua

Ejercicio 2: Usando la base de datos Northwind Ingrese un nuevo empleado a la tabla Employees, y crear consultas que implemente el uso de FULL, LEFT Y RIGHT JOIN Campos a mostrar: LastName, EmployeeID de la tabla Employees OrderDate de la tabla Orders

Investigación complementaria

Ejercicio 1: Haciendo uso de la base de datos library.

1. Utilice las tablas member y adult para realizar una consulta que devuelva los campos firstname, middleinitial, lastname, street, city, state y zip.

2. Concatene las columnas firstname, middleinitial y lastname en una cadena de texto y asigne a la columna el alias name. 3. Ejecute la consulta para comprobar que devuelve los resultados deseados, así como se muestra a continuación:

Page 14: Teoria

Ejercicio 2: Haciendo uso de la base de datos library. Para este ejercicio va utilizar las tablas title, item y copy, y va a generar una consulta que devuelva isbn, copy_no, on_loan, title, translation y cover, y valores para las filas de la tabla copy cuyo ISBN sea 1 (uno), 500 (quinientos) o 1000 (mil). Ordene los resultados por la columna isbn. Para cada tabla debe utilizar un alias.

1. Escriba la lista de selección de la consulta. 2. Escriba una cláusula FROM que cree una combinación interna entre las tablas title y copy

sobre las columnas title_no. En la cláusula FROM, establezca los alias de las tablas que haya utilizado en la lista de selección.

3. Agregue una segunda cláusula INNER JOIN para crear la combinación entre las tablas ítem y copy sobre las columnas isbn.

4. Coloque una cláusula WHERE que limita las filas de la tabla copy obtenidas de aquéllas cuyo ISBN sea 1 (uno), 500 (quinientos) o 1000 (mil).

5. Escriba la cláusula ORDER BY para ordenar el resultado por el ISBN. 6. Ejecute la secuencia de comandos, para obtener los resultados: Tomando como ejemplo la

base de datos Control_de_libros de la Guía 8, crear las siguientes consultas: Mostrar el primer nombre, primer apellido de los autores junto con el título de

libro que estos han escrito Mostrar el nombre de la editorial y el título del libro Mostrar los datos de los autores junto con los datos del libro donde la fecha sea

mayor del 1 de Julio de 2007 Mostrar los nombres de los autores y el título del libro donde el año de edición sea

el más actual Mostrar los nombres de los autores y el título del libro donde el año de edición sea

el menos actual

Practica 9

La base de datos a utilizar es: Northwind Crear las siguientes vistas: a) Mostrar el código del producto, el nombre del producto y el precio por unidad de todos

los productos de la empresa. b) Mostrar todos los productos cuya categoría sea Beverages. c) Cuantos productos existen por cada categoría d. Mostrar el promedio de los precios

unitarios de produce y confections Procedimiento almacenado CREATE DATABASE bodega GO USE bodega GO CREATE TABLE PRODUCTO ( idprod char(7) PRIMARY KEY, descripcion varchar(25), existencias int precio decimal(10,2) not null, --precio costo preciov decimal(10,2) not null, --precio venta ) CREATE TABLE PEDIDO ( idpedido char(7), idprod char(7),

Page 15: Teoria

cantidad int FOREIGN KEY(idprod) REFERENCES PRODUCTO(idprod) ) La tabla producto contiene información general de los productos y la tabla pedido contiene la información del pedido que se realiza de un cierto producto, llenar las tablas con información.

Ejercicios: 1. Crear un procedimiento almacenado que ingrese los valores en la tabla PRODUCTOS, y

deberá verificar que el código y nombre del producto no exista para poder insertarlo, en caso que el código y el nombre del producto ya exista enviar un mensaje que diga “ESTE PRODUCTO YA HA SIDO INGRESADO”.

2. Crear un procedimiento almacenado que permita realizar un pedido EN LA TABLA PEDIDO, este procedimiento deberá verificar si el código del producto ingresado existe en la tabla PRODUCTO en caso de que no se encuentre deberá mostrar un mensaje así como se muestra a continuación “ESTE PRODUCTO NO EXISTE “, además si la cantidad a pedir del producto es mayor a la existencia del producto deberá enviar un mensaje que diga “EXISTENCIA DEL PRODUCTO INSUFICIENTE”, en caso que la cantidad a pedir sea menor o igual deberá modificar el valor de la existencia

Análisis de resultados

Se desea tener una base de datos con la siguiente información acerca de los alumnos de una academia de idiomas donde se imparten varios cursos:

Información acerca de los alumnos, que constará de su nombre y apellidos, un código único para cada alumno, su dirección, fecha de nacimiento y sexo (‘H’ o ‘M’).

Estos alumnos estarán matriculados en un sólo curso cada uno. Cada curso tendrá un nombre, un código único que lo identifica, el número máximo de alumnos recomendado, la fecha de inicio y de finalización del curso y el número de horas del curso.

Los profesores tendrán una ficha en la academia donde se especifican sus datos personales, es decir, nombre, apellidos (apellido1 y apellido2), DUI, dirección, titulación, sueldo.

También deberá llevar la información de los horarios de cada curso, tomando en cuenta que cada curso tiene una hora de inicio y una hora de finalización.

Tomar en cuenta que cada curso y grupo tiene su propio horario y profesor, un curso puede tener muchos grupos y horarios. Agregar como mínimo 5 registros a cada tabla.

Añadir el campo edad de tipo numérico a la tabla PROFESORES. Añadir las siguientes restricciones:

I. La edad de los profesores está entre 18 y 65 años. II. El número de horas de los cursos debe ser mayor que 50

III. El nombre de cada curso es único IV. La fecha de inicio de cada curso no debe ser mayor a la fecha de finalización v. El

sueldo debe tener por defecto el dato 0 (cero)

2. Crear los siguientes procedimientos almacenados: a) Crear un procedimiento almacenado que verifique la cantidad de alumnos inscritos en

cada grupo, no se debe ingresar un alumno nuevo al curso si este ya llego a su capacidad máxima, si se da el caso mostrar un mensaje y sino agregar el alumno al curso

b) Crear un procedimiento almacenado en el cual debe controlar la hora de cada grupo que pertenecen a un curso específico, ya que debe tomar las siguientes restricciones:

Page 16: Teoria

Cada curso tiene únicamente 4 grupos, los grupo 1 y 2 solo pueden estar en horarios matutinos (7:00 – 12:00) y los grupo 3 y 4 solo pueden estar en la tarde (2:00 – 7:00).

Verificar que el profesor no podrá tener 2 grupos en el mismo horario y en la misma fecha. c. Crear un procedimiento almacenado, el cual permita actualizar el campo sueldo de la tabla profesores, el procedimiento recibe como parámetros el precio por hora, la cual vale $7.55 (es igual para todos los cursos), también recibe como parámetro el DUI del profesor. Para calcular el nuevo sueldo debe contar primero la cantidad de horas por todos los cursos asignados al profesor.

Practica 10

Análisis de resultadosInvestigue cual es el trabajo de la tabla inserted y deleted al trabajar con los Triggers utilizando la siguiente base de datos realizar lo siguiente.create database bd_nombrego11use bd_nombregocreate table producto( idproducto char(8) not null,nombreproducto varchar(25),existencia int not null,precio decimal(10,2) not null, --precio costopreciov decimal(10,2) not null, --precio ventaconstraint pk_idproducto primary key (idproducto))create table pedidos(idpedido int identity, idproducto char(8) not null, cantidad_pedido int,constraint fk_idbod foreign key (idproducto)references producto(idproducto))INSERT INTO producto values('prod001','Filtros pantalla',5,10,12.5)INSERT INTO producto values('prod002','parlantes',7,10,11.5)INSERT INTO producto values('prod003','mouse',8,4.5,6)INSERT INTO producto values('prod004','monitor',10,60.2,80.0)INSERT INTO producto values('prod005','lapiz',5,1.2,2.0)

Ejercicios:1. Crear un desencadenador que se active cada vez que se inserte un registro en la tabla pedidos y otro para la tabla producto.2. Crear un desencadenador para la tabla producto, que se active cada vez que se inserte un registro o se actualice la columna precio, la condición para aceptar al inserción o la actualización es que el precio costo no debe ser mayor que el precio venta.3. Crear un desencadenador para la tabla pedidos que cada vez que se realice un pedido descuente la existencia de la tabla productos, en caso que la cantidad del pedido supere a la existencia debe deshacer la transacción.

Page 17: Teoria

Practica 11

Ejercicio Complementario Con Transact SQL, resolver los siguientes ejercicios: 1. Crear un inicio de sesión 2. Crear un usuario para la base de datos AdventureWorks. El esquema predeterminado es: Person 3. Asignar permiso en el cual se puede ver todos los objetos que están bajo este esquema 4. Asignar permiso en el cual se puede agregar y actualizar datos solo a las siguientes tablas: a. ContactType b. CountryRegion 5. Asignar a este usuario que puede crear tablas y vistas en la base de datos

Investigue en este punto GRANT CREATE TABLE y GRANT CREATE VIEW VI. Tarea de investigación 1. Crear la siguiente base de datos:

2. Crear los siguientes esquemas y colocar en ellos las siguientes tablas:

a. Esquema: Datos

i. Tablas: Clientes y ciudades

b. Esquema: Pedidos

Page 18: Teoria

i. Tablas: Pedido y Transporte

Investigue en este punto la instrucción ALTER SCHEMA y como transferir tablas a un esquema

3. Para los usuarios de la Base de Datos se crearán los siguientes tipos de usuarios:

a. Crear un usuario el cual se encarga de ingresar nuevos clientes y ciudades, también a este usuario se le concede el permiso de actualizar y eliminar información de los clientes y ciudades y solo podrá ver esas tablas nada más.

b. Luego una persona encargada de seleccionar los pedidos que se han realizado y este no podrá seleccionar las otras tablas o información.

c. Un usuario administrativo el cual se encarga de seleccionar, agregar, modificar y eliminar datos de las tablas Pedido y transporte, y solamente vera estas 2 tablas.