Está en la página 1de 8

PRACTICA DE SQL.

Realizar una base de datos de nombre tienda que se relacione con la


actividad de una pequea empresa que vende artculos (papelera) a
clientes.
La empresa debe almacenar informacin de cada uno de sus clientes.
La empresa debe almacenar informacin de los artculos que vende.
El negocio debe almacenar datos de las ventas que realiza
Todas las ventas generan un ticket o nota de venta con su
correspondiente detalle que describe el producto que se vende, la
cantidad, el precio y el importe que el producto de precio X cantidad.

1. Crear base de datos tienda.


create database tienda;
2. Diseo de BD sugerida.

3. Cdigo SQL para crear tablas con sus correspondientes relaciones


entre las tablas que lo requieran:
a. clientes: Tabla con llave primaria rfc
b. productos: Tabla con llave primaria clave_producto
c. ventas: Tabla con llave primaria no_venta y llave fornea rfc
d. detalleventas: Tabla SIN llave primaria y dos forneas:
no_venta y clave_producto.
-- Eliminar en orden inverso a como se crean
-- Por lo de las llaves FORANEAS
drop
drop
drop
drop

table
table
table
table

detalleventas;
ventas;
clientes;
productos;

create table productos


(
clave_producto char(10) primary key not null,
descripcion char(50) not null,
costo float not null
);
create table clientes
(
rfc char(13) primary key not null,
paterno char(50) not null,
materno char(50) not null,
nombre char(50) not null,
calle_no char(60),
colonia char(60),
ciudad char(20),
telefono char(10) not null
);

-- La tabla ventas se relaciona por medio del RFC


-- con la tabla clientes es una llave FORANEA

create table ventas


(
no_venta integer primary key not null,
fecha date not null,
rfc char(13) not null,
total float,
constraint fk_rfcclientes
foreign key (rfc) references clientes(rfc)
);

-----

La tabla detalleventas tiene el campo no_venta


que es LLAVE FORANEA y se asocia con ventas
La tabla detalleventas tiene el campo clave_producto
que es LLAVE FORANEA y se asocia con productos

create table detalleventas


(
no_venta integer not null, -- referencia
clave_producto char(10) not null, --referencia
cantidad integer,
precio float,
importe float,
constraint fk_ventas
foreign key (no_venta) references ventas(no_venta),
constraint fk_productos
foreign key (clave_producto) references
productos(clave_producto)
);

4. Script SQL para agregar 10 registros a clientes. [10 insert].


Nota slo se muestran 3 registros para efectos de prctica.

delete from clientes;


insert into clientes (rfc, paterno, materno, nombre,
calle_no, colonia, ciudad, telefono)
values ('LALO101010', 'LARES', 'LOPEZ', 'OSVALO',
'20 DE NOVIEMBRE 2010 PTE.', 'CENTRO', 'DURANGO',
'6181345678');
insert into clientes (rfc, paterno, materno, nombre,
calle_no, colonia, ciudad, telefono)
values ('PACO101010', 'PAEZ', 'CORDOVA', 'OSCAR',
'FELIPE PESCADOR', 'CENTRO', 'DURANGO',
'6182030409');
insert into clientes (rfc, paterno, materno, nombre,
calle_no, colonia, ciudad, telefono)
values ('GALO101010', 'GARCIA', 'LARES', 'OLGA',
'NEGRETE 1005 NTE.','CENTRO', 'DURANGO',
'6181234568');

select * from clientes;

5. Script SQL para agregar 10 productos [10 insert].


Nota slo se muestran 9 registros para efectos de prctica.
delete from productos;

insert into productos (clave_producto, descripcion, costo)


values ('LIB100X', 'LIBRETA MARCA X', 56.70);
insert into productos (clave_producto, descripcion, costo)
values ('PLU100X', 'PLUMA MARCA X', 5.00);
insert into productos (clave_producto, descripcion, costo)
values ('GOMAX', 'GOMA MARCA X', 2);
insert into productos (clave_producto, descripcion, costo)
values ('LIB100Y', 'LIBRETA MARCA Y', 76.90);
insert into productos (clave_producto, descripcion, costo)
values ('PLU100Y', 'PLUMA MARCA Y', 5.60);
insert into productos (clave_producto, descripcion, costo)
values ('GOMAY', 'GOMA MARCA Y', 4);
insert into productos (clave_producto, descripcion, costo)
values ('LIB100Z', 'LIBRETA MARCA Z', 89.90);
insert into productos (clave_producto, descripcion, costo)
values ('PLU100Z', 'PLUMA MARCA Z', 7.60);
insert into productos (clave_producto, descripcion, costo)
values ('GOMAZ', 'GOMA MARCA Z', 6.50);
select * from productos;

6. Script SQL para agregar 5 ventas incluyendo su detalle. [5 insert]


Nota : slo se agregan 2 ventas incluyendo su detalle para efectos
de prctica
delete from detalleventas;
delete from ventas;

-- Primera Venta Incluyendo su Detalle


start transaction;
-- Se agrega una nueva venta
-- El valor a campo total queda pendiente ...
-- deber ser la suma de todos los importes de dicho
-- nmero de venta.
insert into ventas (no_venta, fecha, rfc)
values (100, '2010-03-04','LALO101010');
-- se detalla la venta nmero 100
-- se compraron 2 productos diferentes
-- 5 y 10 cantidades de cada uno
insert into detalleventas (no_venta, clave_producto,
cantidad, precio, importe)
values (100, 'LIB100X', 5, 65.90, cantidad * precio);
insert into detalleventas (no_venta, clave_producto,
cantidad, precio, importe)
values (100, 'PLU100Z', 10, 9.90, cantidad * precio);
commit;

-- Segunda Venta Incluyendo su Detalle


start transaction;
-- Se agrega una nueva venta
-- El valor a campo total queda pendiente ...
-- deber ser la suma de todos los importes de dicho
-- nmero de venta.
insert into ventas (no_venta, fecha, rfc)
values (101, '2010-06-07','GALO101010');

-- se detalla la venta nmero 100


-- se compraron 3 productos diferentes
-- LINRETA, PLUMA Y GOMA DE LA MARCA "Y"
-- 2, 4, y 6 cantidades de cada uno
insert into detalleventas (no_venta, clave_producto,
cantidad, precio, importe)
values (101, 'LIB100Y', 2, 86.90, cantidad * precio);
insert into detalleventas (no_venta, clave_producto,
cantidad, precio, importe)
values (101, 'PLU100Y', 4, 7.90, cantidad * precio);
insert into detalleventas (no_venta, clave_producto,
cantidad, precio, importe)
values (101, 'GOMAY', 6, 6.50, cantidad * precio);
commit;
-- Notas:
-- POR LAS REGLAS DE RELACION O DE INTEGRIDAD REFERENCIAL
-- Es necesario capturar clientes de aquellos que existan en tabla
clientes;
-- De igual forma es necesario capturar productos (las clavbes) de
aquellos
-- productos que esxistan en tabla productos.}
select * from ventas;
select * from detalleventas;
Las transacciones en base de datos significan que se hace todas
las instrucciones o no se hace nada. Sirve para asegurarse que se
realice todas las operaciones para en caso de que exista algn
error, se guarde consistencia en la BD.

7. Script SQL para hacer eliminaciones de registros [5 delete]


Nota: Slo se muestra un delete.
Eliminar datos de un cliente que exista:
delete from clientes
where rfc = ALGO;

8. Script SQL para hacer modificaciones [5 update]


Nota: Slo se muestra un update.
Modificar datos de un ciente.
update clientes
set paterno = nuevo, materno = nuevo
where rfc = 'LALO101010';
9. Script SQL para hacer consultas varias. [10 select]
a. Lista de todos los clientes
b. Lista de productos
c. Los datos de un cliente
d. Datos del costo que tiene un producto en particular
e. Quienes viven en la Cd. de DURANGO
f. Cul es el detalle de una venta en particular por ejemplo la
venta 100.
g. Lista de todas las ventas (SIN DETALLE)
h. Lista de los clientes con algn apellido.
i. Lista de los datos de un producto buscados por su
descripcin.
j. Informacin de la venta que se la ha hecho a un cliente por
ejemplo a 'LALO101010'.

También podría gustarte