El lenguaje de manipulación de datos (DML) es una parte fundamental de SQL.

11  115  Descargar (1)

Texto completo

(1)

CICLO: 02-2012

GUIA DE LABORATORIO # 5 Nombre de la Practica: Manipulación de datos

Lugar de ejecución: Centro de Computo MATERIA: Base de Datos II

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. Sentencias DML Insert Añade filas de datos en una tabla Delete Eliminar filas de datos de una tabla Update Modificar los datos de una tabla Select Recuperar datos de una tabla

Commit Confirmar como permanentes las modificaciones realizadas.

(2)

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

(3)

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

(4)

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

tienda,venta,fecha FROM informacion_tienda

Verifiquemos la información de la tabla ventas_tienda con un

(5)

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

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

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

Figure

Actualización...

Referencias