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 table detalleventas;
drop table ventas;
drop table clientes;
drop table 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