Manipulación de datos

Anuncio
GUIA DE LABORATORIO # 5
Nombre de la Practica:
Manipulación de datos
Lugar de ejecución: Centro de Computo
MATERIA: Base de Datos II
CICLO: 02-2012
I. OBJETIVOS ESPECIFICOS
Qué el estudiante:
 Manipule datos utilizando la sentencia SELECT
II. INTRODUCCION TEORICA
Lenguaje de manipulación de datos
El lenguaje de manipulación de datos (DML) es una parte fundamental de SQL.
Cuando se quiere agregar, actualizar o eliminar datos de una base de datos, se ejecutan sentencias
DML. Una colección de sentencias DML que forman una unidad lógica de trabajo es llamada
transacción.
Considere una base de datos de un banco. Cuando un cliente del banco transfiere dinero de su
cuenta de ahorros a su cuenta de cheques, la transacción puede consistir de tres operaciones
separadas:
1. Decrementar la cuenta de ahorros.
2. Incrementar la cuenta de cheques.
3. Registrar la transacción en la bitácora de transacciones.
Insert
Delete
Update
Select
Commit
Rollback
Sentencias DML
Añade filas de datos en una tabla
Eliminar filas de datos de una tabla
Modificar los datos de una tabla
Recuperar datos de una tabla
Confirmar como permanentes las modificaciones realizadas.
Deshacer todas las modificaciones realizadas desde la última confirmación.
Pagina 1 de 11
Transacción
Una transacción es un conjunto de operaciones que van a ser tratadas como una única unidad. Estas
transacciones deben cumplir 4 propiedades fundamentales comúnmente conocidas como ACID
(atomicidad, coherencia, asilamiento y durabilidad).
La transacción más simple en SQL Server es una única sentencia SQL. Por ejemplo:
UPDATE Products SET UnitPrice=20 WHERE ProductName ='Chai'
Esta es una transacción 'autocommit', una transacción autocompletada (commit implícito).
Cuando enviamos esta sentencia al SQL Server se escribe en el fichero de transacciones lo que va a
ocurrir y a continuación realiza los cambios necesarios en la base de datos. Si hay algún tipo de
problema al hacer esta operación el SQL Server puede leer en el fichero de transacciones lo que se
estaba haciendo y si es necesario puede devolver la base de datos al estado en el que se encontraba
antes de recibir la sentencia.
Por supuesto este tipo de transacciones no requieren de nuestra intervención puesto que el sistema
se encarga de todo. Sin embargo si hay que realizar varias operaciones y queremos que sean
tratadas como una unidad tenemos que crear esas transacciones de manera explícita.
Sentencias para una transacción
Una transacción es un conjunto de operaciones tratadas como una sola. Este conjunto de
operaciones debe marcarse como transacción para que todas las operaciones que la conforman
tengan éxito o todas fracasen.
La sentencia que se utiliza para indicar el comienzo de una transacción es 'BEGIN TRAN'. Si alguna
de las operaciones de una transacción falla hay que deshacer la transacción en su totalidad para
volver al estado inicial en el que estaba la base de datos antes de empezar. Esto se consigue con la
sentencia 'ROLLBACK TRAN'.
Si todas las operaciones de una transacción se completan con éxito hay que marcar el fin de una
transacción para que la base de datos vuelva a estar en un estado consistente con la sentencia
'COMMIT TRAN'.
Pagina 2 de 11
IV. PROCEDIMIENTO
Parte 1: Iniciando sesión desde SQL Server Managment Studio
1. Hacer clic en el botón Inicio
2. Hacer clic en la opción Todos los programas y hacer clic en Microsoft SQL Server
2008 R2
3. Cargue SQL Server 2008 R2.
Para conectarse con el servidor de base de datos elija los siguientes parámetros de
autenticación:
Tipo de servidor: Database Engine
Nombre del servidor: El que le haya Asignado en la Instalación
Autenticación: SQL Server Authentication
Login: sa
Password: El que Ud. le haya Asignado en la Instalación
4. Luego de clic en el botón conectar y así ingresar a la ventana del SQL Server
Managment Studio.
5. Luego seleccionara del menú estándar la opción (Nueva Consulta/New Query)
para empezar a trabajar con las sentencia de T-SQL.
6. Localice el icono de guardar, con el fin de guardar el nuevo archivo de sentencias
T-SQL (SQLQuery1.sql).
Parte 2: Manipulación de datos
7. A continuación digitaremos las siguientes instrucciones y las ejecutaremos
Pagina 3 de 11
8. Pasaremos a insertar datos a la tabla Informacion_tienda con el comando INSERT
INSERTAR
9. Ahora necesitamos insertar datos en la tabla ventas_tienda, pero los
obtendremos de la tabla información_tienda, lo haremos con la siguiente sintaxis
INSERT INTO "tabla1" ("columna1", "columna2", ...) SELECT "columna3",
"columna4", ... FROM "tabla2"
Para nuestro ejemplo
INSERT
INTO
ventas_tienda
(tienda,venta,fecha)
tienda,venta,fecha FROM informacion_tienda
Verifiquemos la información de la tabla ventas_tienda con un
select * from ventas_tienda
Pagina 4 de 11
SELECT
Podrá verificar que se realizó una inserción satisfactoria, también se puede utilizar las
condiciones WHERE para filtrar la información.
ELIMINAR
10.Si deseamos eliminar datos podemos utilizar la sentencia DELETE que tiene la
siguiente sintaxis
DELETE FROM <nombre_tabla> WHERE <condicion>];
Si queremos eliminar las filas de la tabla información_tienda cuya tienda es San
Salvador, utilizaríamos la siguiente sentencia (no la ejecute)
delete from informacion_tienda where tienda='San Salvador'
Cuando se ejecuta la consulta aparece un mensaje: (1 row(s) affected), que nos indica
que se eliminó una fila, pero no sabemos cual, para que nos devuelva que filas han sido
eliminadas utilizaremos la opción OUTPUT de la siguiente manera:
DELETE
FROM
informacion_tienda
OUTPUT
DELETED.*
where
tienda='San
Salvador'
Verifique que ahora en la parte de abajo aparece la fila que se ha eliminado
ACTUALIZAR
11.Para actualizar datos utilizamos la sentencia UPDATE que tiene la siguiente
sintaxis
UPDATE
<nombre_tabla>
SET
<campo1>
=
<valor1>
{[,<campo2>
=
<valor2>,...,<campoN> = <valorN>]} [ WHERE <condicion>];
Si deseamos modificar el precio a 600 de la tienda soyapango de la tabla ventas_tienda
utilizamos la siguiente sentencia
UPDATE ventas_tienda SET venta=600 WHERE tienda='soyapango'
También podemos realizar operaciones con los campos, agreguemos un campo
ventaiva
ALTER TABLE ventas_tienda
Pagina 5 de 11
ADD ventaiva float
Inicialmente ese campo aparece vacio en todas las filas y queremos que ese campo
contenga la venta + el 13% del iva, para esto utilizamos la siguiente sentencia.
UPDATE ventas_tienda SET ventaiva=venta*1.13
No se utiliza sentencia WHERE ya que ira fila por fila multiplicando la columna venta
por 1.13 y asignándole el resultado al campo ventaiva
Si quiere que le devuelva los valores actualizados en la misma sentencia UPDATE
hacemos uso de la opción OUTPUT de la siguiente manera:
UPDATE ventas_tienda SET ventaiva=venta*1.13 OUTPUT INSERTED.*
USO DE VARIABLES
Una variable es un valor identificado por un nombre (identificador) sobre el que
podemos realizar modificaciones.
En Transact SQL los identificadores de variables deben comenzar por el carácter @, es
decir, el nombre de una variable debe comenzar por @. Para declarar variables en
Transact SQL debemos utilizar la palabra clave declare, seguido del identificador y tipo
de datos de la variable.
Ejemplo
declare @nombre varchar(50)
set @nombre = 'Utilizando variables en SQL'
print @Nombre -- Imprime por pantalla el valor de @nombre.
Ejemplo 2. Asignando variables en T-SQL, podemos utilizar SET para asignar el
resultado de una consulta (la variable solo podrá contener un único valor)
declare @venta float
SET @venta = (SELECT venta from ventas_tienda where
tienda='Soyapango')
PRINT @venta
Pagina 6 de 11
Ejemplo 3. Podemos utilizar SELECT para asignar valores
DECLARE @tienda VARCHAR(100),@venta float,@fecha datetime
SELECT @tienda=tienda,@venta=venta,@fecha=fecha
FROM ventas_tienda where tienda='Soyapango'
PRINT 'el resultado de la asignacion es el siguiente'
PRINT @tienda
PRINT @venta
PRINT @fecha
TRANSACCIONES
Como se mencionó en la introducción una transacción es un conjunto de operaciones
tratadas como una sola. Este conjunto de operaciones debe marcarse como
transacción para que todas las operaciones que la conforman tengan éxito o todas
fracasen.
La sentencia que se utiliza para indicar el comienzo de una transacción es 'BEGIN
TRAN'. Si alguna de las operaciones de una transacción falla hay que deshacer la
transacción en su totalidad para volver al estado inicial en el que estaba la base de
datos antes de empezar. Esto se consigue con la sentencia 'ROLLBACK TRAN'. Si todas
las operaciones de una transacción se completan con éxito hay que marcar el fin de
una transacción para que la base de datos vuelva a estar en un estado consistente con
la sentencia 'COMMIT TRAN'
Ejemplo. Cree la siguiente tabla prueba dentro de la base de datos TIENDA e inserte el
dato que aparece
--TABLA PRUEBA
CREATE TABLE PRUEBA
(nombre varchar(25), apellido varchar(25))
--DATOS
insert into PRUEBA values('carlos','alfaro')
Pagina 7 de 11
Al realizar una consulta aparece efectivamente el dato
Ahora insertaremos 2 nuevos datos, pero esta vez dentro de una transacción
BEGIN TRAN
insert into PRUEBA values('Mario','Mendez')
insert into PRUEBA values('Marcela','Abarca')
Estos datos si realizamos un select * from prueba, se mostraran como insertados
en la tabla, pero si deseamos revertir la inserción digitamos
ROLLBACK TRAN
Verificamos nuevamente la tabla y vemos que la inserción de datos se ha revertido
Si desea que los datos sean insertados de una sola vez tendrá que digitarlo de la
siguiente manera
BEGIN TRAN
insert into PRUEBA values('Mario','Mendez')
insert into PRUEBA values('Marcela','Abarca')
COMMIT TRAN
Digite nuevamente ROLLBACK TRAN y verá que ya no se puede revertir por causa del
comando COMMIT TRAN
Ejemplo 2
BEGIN TRAN
UPDATE Products SET UnitPrice=20 WHERE ProductName='Chang'
UPDATE Products SET UnitPrice=20 WHERE ProductName='Chang'
COMMIT TRAN
Estas dos sentencias se ejecutarán como una sola. Si por ejemplo en medio de la
transacción (después del primer update y antes del segundo) hay un corte de
electricidad, cuando el SQL Server se recupere se encontrará en medio de una
transacción y, o bien la termina o bien la deshace, pero no se quedará a medias
Pagina 8 de 11
Ejemplo 3
declare @venta float, @tienda varchar(25),@buscar varchar(25)
set @buscar='Soyapango'
Begin tran
select
@venta=venta,@tienda=tienda
from
ventas_tienda
where
tienda=@buscar
--Insertando datos utilizando variables
insert
into
informacion_tienda
values(@tienda,@venta+100,'2011-02-
21','Secreto','credito')
--concatenando valores
print 'Tienda'+ ' '+@tienda
--no se puede concatenar texto con numeros hay que hacer conversión
print 'venta'+ ' '+CAST(@venta as varchar)
COMMIT TRAN
Ejemplo 4
--insertando datos en tabla ventas tienda utilizando variables
declare @tienda varchar(25), @venta float, @fecha datetime, @ventaiva
float
set @tienda='Cuscatancingo'
set @venta=100
set @fecha='2010-02-04'
set @ventaiva=@venta*1.13
begin tran
INSERT INTO ventas_tienda values(@tienda,@venta,@fecha,@ventaiva)
COMMIT TRAN
PRINT 'VALORES INSERTADOS CON EXITO'
PRINT 'TIENDA'+@tienda
Pagina 9 de 11
IV. Análisis de Resultados
1- Cree una base de datos de nombre ALMACEN con las siguientes tablas
Productos
Pedidos
Inserte los siguientes datos a la tabla productos utilizando la instrucción insert
2- Cree una transacción parecida al ejemplo 4 para insertar un producto
3- Modifique el precio de 4.5 a 10 del jabón de la tabla productos, realice la sentencia
que muestre la fila modificada
4- Elimine los productos que tienen valor mayor a 300, y que se muestren los registros
eliminados
5- Cree una transacción que dado un código de producto, cantidad, código de pedido y
fecha de pedido, ingrese esos campos en la tabla pedido y luego busque ese producto
en la tabla productos y utilizando una instrucción update debe disminuir la existencia
del producto
Pagina 10 de 11
Ejemplo
Cantidad=20
codigo='prod01'
fecha='2010-02-02'
codPedido=1
La existencia actual del prod01 es 100, cuando se realice la inserción a la tabla pedidos,
se deberá actualizar la existencia del producto a 80, al final de la transacción imprimir
un mensaje que indique el total del pedido, multiplicando el precio del producto por la
cantidad del pedido.
Pagina 11 de 11
Descargar