Está en la página 1de 8

PRACTICA NRO 9 DE SQL SERVER

DML(Lenguaje de Manipulación de Datos)


Curso: Base de Datos
Prof: Mg.Bertila García Díaz
prU9_DML_iud

El lenguaje DML comprende las siguientes sentencias:


1. Sentencia INSERT
2. Sentencia UPDATE
3. Sentencia DELETE
4. Sentencia SELECT

Colocar en el servidor la BD Compañía:

1.- Sentencia INSERT


La sentencia INSERT se utiliza para agregar registros a una tabla.
La sintáxis es:

INSERT [INTO] <Nombre de la tabla> VALUES (Valor1,...)

Ejemplo: Insertar un registro a la tabla EMPLEADO

insert into
EMPLEADO(nombrep,inic,apellido,nss,fechan,direccion,sexo,salario,
nsssuper,nd) values
('José','B','Silva','123456789','09/01/1955','Fresnos
731,Higueras,MX','M',30000,'333445555',5)

2.- Sentencia UPDATE


Esta sentencia modifica la información de las tablas.
La sintaxis es:

UPDATE <Nombre de la tabla>


SET <columna> = <Nuevo Valor>
[WHERE <condición>]

Ejemplo: Actualiza la dirección del EMPLEADO de nss 123456789

UPDATE EMPLEADO
SET direccion = 'Turin 654, Belén,MX'
WHERE nss = '123456789'

3.- Sentencia DELETE


Remueve filas de una tabla.
La sintaxis es:

DELETE <Nombre de la tabla>


[WHERE <condición>]

1
Ejemplo: Eliminar de DEPENDIENTE, las mujeres

DELETE DEPENDIENTE
WHERE sexo = ‘F’

4.- Crear VISTAS


Una vista es una tabla derivada de otras tablas, no necesariamente existen en forma
física, se les considera tablas virtuales.
La sintaxis es:

CREATE VIEW <Nombre de la vista>


AS
Sentencias Select

Ej: CREATE VIEW TRAB


AS SELECT NOMBREP. APELLIDO FROM EMPLEADO

Compruebe la información que devuelve la vista:


Select * from trab

Mostrar la implementación de la vista:


Sp_HelpText trab

Práctica con la BD COMPAÑIA

En la BD Compañia, crear las siguientes sentencias del lenguaje DML, y verificar su


efecto:

1.- Inserte un Registro en la tabla Empleado.

2.- Actualice el salario del empleado con NSS= 999887777 a 27000

3.- Actualice la Fecha de Nacimiento del empleado con NSS=123456789 a 09-ENE-57

4.- Elimine los dependientes del empleado con NSS=987654321

5.- Actualice la Fecha de Nacimiento de ‘Miguel’ dependiente de empleado con


NSS=123456789 a 01-ENE-60

6.- Elimine la Información del empleado “Ramón Nieto”.

7.- Crear una vista DEP, que visualize los atributos: nombre_dependiente y parentesco de
la tabla Dependiente.

2
IMPLEMENTAR TRIGGERS

CREATE TRIGER <Nombre del trigger>


ON <Nombre de la tabla>
FOR <INSERT | UPDATE | DELETE>
AS
Sentencias….
GO

El trigger es un tipo especial de store procedure que se activa de forma controlada por
sucesos antes que por llamadas directa.. los triggers están asociados a tablas. Son una
gran herramienta para controlar las reglas de negocio más complejas que una simple
integridad referencial.
Los triggers siempre toman acción después de que la operación fue registrada en el log.
Un trigger para inserción de registros genera automáticamente una tabla en el cache con
la información que intenta añadir, y se llama INSERTED y es a través de esta tabla que se
pueden hacer comparaciones en otras tablas.
Un trigger para eliminación de registros genera automáticamente una tabla en el cache
con la información que intenta eliminar, y se llama DELETED y es a través de esta tabla
que se pueden hacer comparaciones en otras tablas.
Si se trata de un trigger para actualización se generan ambas tablas INSERTED con los
nuevos datos y DELETED con la información que será reemplazada.
Los triggers son invocados automáticamente por el SQL, en tanto que los procedimientos
almacenados son invocados por el Usuario.

BD ejemplo

Tenemos las siguientes Reglas de Negocios:


1.- Un producto puede estár en muchos pedidos o ninguno
Un pedido es de un solo producto.

2,. Un pedido se puede hacer a un RepVentas o a ninguno


Cada RepVentas puede hacer muchos pedidos o ninguno.

3.- Un RepVentas puede tener muchos clientes o ninguno


Cada cliente puede tener un RepVentas o ninguno

4.- Una oficina puede tener un RepVentas o ninguno


Cada RepVentas puede trabajar en una sola oficina o ninguna

5.- Cada oficina puede tener un Director(RepVentas) o ninguno


Cada RepVentas puede dirigir muchas oficinas o ninguna

6.- Un RepVentas puede dirigir a muchos RepVentas o a ninguno


Hay un RepVentas que puede ser el Director

3
Crear la BD EJEMPLO y ejecutar las consultas:
Consulta1 (creación de la BD)
Modicons1 (creación de tablas y claves principales)
Modicons2 (inserción de registros)
Modicons3 (creación de claves foráneas)
o

Atachar la BD EJEMPLO, que se le entregará.

La BD ejemplo tiene la siguiente estructura:

/*Crea la estructura de las tablas y las claves principales.*/

/*modicons1AVAN*/

/*crea la tabla cliente*/


create table clientes
(num_clie integer NOT NULL,
empresa varchar(20) NOT NULL,
rep_clie integer NULL,
limite_credito decimal(10,2) NULL)
alter table clientes
add primary key (num_clie)

4
go

/* crea la tabla RepVentas*/


create table RepVentas
(num_empl integer NOT NULL,
nombre varchar(15) NOT NULL,
edad integer NULL,
oficina_rep integer NULL,
titulo varchar(10) NULL,
contrato datetime NOT NULL,
director integer NULL,
cuota decimal(10,2) NULL,
ventas decimal(10,2) NOT NULL)

alter table RepVentas add primary key (num_empl),

/*el nombre del RepVentas es único*/


UNIQUE (nombre);
go

/* crea la tabla oficinas, en modo comando*/


create table oficinas
(oficina integer NOT NULL,
ciudad varchar(15) NOT NULL,
region varchar(10) NOT NULL,
dir integer,
objetivo decimal(10,2),
ventas decimal(10,2) NOT NULL)

alter table oficinas add primary key (oficina),

/*verfica el codigo de oficina > 0 y < 5*/


CHECK (oficina > 0 and oficina <=5);
go

/* crea la tablas PEDIDO */


create table pedidos
(num_pedido integer not null,
fecha_pedido datetime not null,
clie integer not null,
rep integer,
fab char(3) not null,
producto char(5) not null,
cant integer not null,
importe decimal(10,2) not null)

alter table pedidos add primary key (num_pedido)


go

5
/* Crea la tabla PRODUCTOS*/
create table productos
(id_fab char(3) not null,
id_producto char(5) not null,
descripción varchar(20) not null,
precio decimal(10,2) not null,
existencias integer not null)

alter table productos add primary key (id_fab,id_producto)


go

/*Crea las claves foráneas */

Use ejemplo
go
alter table clientes add foreign key (rep_clie) references RepVentas
go
alter table RepVentas add foreign key(director) references RepVentas
go
alter table pedidos add foreign key (fab,producto) references productos
go
alter table pedidos add foreign key (rep) references RepVentas
go
alter table oficinas add foreign key (dir) references RepVentas
go
alter table RepVentas add foreign key (oficina_rep) references oficinas
go

CREAR UN TRIGGER EN LA BD EJEMPLO

Al agregar un nuevo pedido a la tabla de pedidos, se debe incrementar las ventas del
representante que concretó el pedido, así como también debe reducirse el número de
existencias.

use ejemplo
go
create trigger NuevoPedido
on pedidos
for insert
as
update RepVentas
set ventas= ventas+ inserted.importe
from RepVentas INNER JOIN INSERTED
ON RepVentas.num_empl = inserted.rep

update productos
SET EXISTENCIAS = EXISTENCIAS - INSERTED.CANT
FROM PRODUCTOS INNER JOIN INSERTED
ON PRODUCTOS.ID_FAB=INSERTED.FAB
AND PRODUCTOS.ID_PRODUCTO = INSERTED.PRODUCTO

6
Compruebe la ejecución de este trigger, con las siguientes sentencias:

1.- Seleccionar un producto

select * from productos where id_fab= '101' and id_producto


='A1'

al ejecutar :
id_fab id_producto descripción precio existencias
------ ----------- -------------------- ------------ -----------
101 A1 balde 10.00 100

2.- Ahora seleccionar un Representante de Ventas.

select nombre,cuota,ventas from RepVentas where num_empl=104

al ejecutar :
nombre cuota ventas
--------------- ------------ ------------
Andres 2000.00 0

3.- Ahora agregue un pedido:

insert pedidos
values(4,'01/16/05',2103,104,'101','A1',30,300)

al ejecutar consulta 1 nuevamente:

select * from productos where id_fab= '101' and


id_producto= 'A1'

al ejecutar :
id_fab id_producto descripción precio existencias
------ ----------- -------------------- ------------ -----------
101 A1 balde 10.00 70

al ejecutar consulta 2 nuevamente: selecciona un Representante de Ventas

select nombre,cuota,ventas from RepVentas where


num_empl=104

al ejecutar :
nombre cuota ventas
--------------- ------------ ------------
Andres 2000.00 300

7
OTRO EJEMPLO DE TRIGGER

Podemos utilizar la función PRINT para enviar un mensaje c/vez que se inserte un nuevo
valor a la fila.
PRINT “Dato insertado exitosamente.”

create trigger tg_tabla on clientes


for insert
as
print 'Gracias por agregar información'

Insertar un nuevo registro a clientes:

insert clientes values(2109,'BGD Systems',104,30000)

al ejecutar
Gracias por agregar información
1 fila afectada

EJERCICIOS CON LA BD EJEMPLO

1.- Implementar un check constraint que verifique que los códigos de los
representantes de ventas sean mayores que 100.

2.- Verifique el check, ingresando un nuevo registro, manualmente.

3.- Asignar un valor por defecto a la columna director de la tabla que


almacena los datos de los representantes de ventas haciendo que el
código por defecto sea 106

4.- Verifique el default, ingresando un nuevo registro, manualmente.

También podría gustarte