Este ejercicio es la continuación de los ejercicios individuales del día anterior
Un negocio minorista desea llevar registro de las ventas diarias realizadas. Para ello ha creado el siguiente modelo de datos.
En un archivo de texto, agregue las siguientes consultas:
- Genere una consulta de inserción de datos en la tabla clientes. Inserte un registro indicando solo los campos que no permiten valores nulos.
- Genere dos consultas de inserción de datos en la tabla de ventas. Inserte dos registros distintos de esta manera, usando dos sintaxis diversas. Ambas ventas ingresadas deben estar asociadas al cliente ingresado en el ítem anterior.
- Incluya un comando para confirmar los cambios incluidos en las sentencias anteriores.
- Genere una consulta que modifique el registro ingresado en el ítem 1 de este ejercicio, en específico otorgando valores a los campos que están nulos.
- Incluya un comando para deshacer los cambios realizados anteriormente.
- Todas las consultas anteriores deben estar en un mismo archivo, y deben ser parte de una misma transacción. Por ello, tenga en consideración el formato a indicar en cada consulta.
Creando la base de datos con las tablas ventas y clientes:
CREATE TABLE clientes (
idcliente INT PRIMARY KEY NOT NULL,
nombres VARCHAR(50) NOT NULL,
apellidos VARCHAR(50) NOT NULL,
direccion VARCHAR(70),
telefono INT
);
CREATE TABLE ventas (
idventa INT PRIMARY KEY NOT NULL,
vendedor VARCHAR(50),
cantarticulos INT NOT NULL,
subtotal INT NOT NULL,
impuesto INT NOT NULL,
total INT NOT NULL,
clientes_idcliente INT NOT NULL
);
ALTER TABLE ventas
ADD CONSTRAINT ventas_clientes_fk
FOREIGN KEY ( clientes_idcliente )
REFERENCES clientes ( idcliente );
Alimentando la base de datos:
INSERT INTO clientes (idcliente, nombres, apellidos, direccion, telefono) VALUES
(1, 'Antonia', 'Aranda', 'Av. Las Flores 123', 987654321),
(2, 'Matías', 'González', 'Calle Los Álamos 456', 912345678),
(3, 'Sofía', 'Rojas', 'Pasaje El Bosque 789', 956789123),
(4, 'Camila', 'Pérez', 'Av. Los Héroes 234', 965478123),
(5, 'Ignacio', 'Fernández', 'Calle O’Higgins 345', 974512369),
(6, 'Valentina', 'Morales', 'Av. Libertad 567', 923456789),
(7, 'Francisco', 'Muñoz', 'Pasaje Las Rosas 678', 954789632),
(8, 'Daniela', 'Castro', 'Calle Central 890', 936547821),
(9, 'Benjamín', 'Vega', 'Av. Los Pinos 234', 987123456),
(10, 'Isidora', 'Herrera', 'Calle Los Cipreses 456', 964523178),
(11, 'Tomás', 'Navarro', 'Av. Providencia 789', 955412367),
(12, 'Florencia', 'Lagos', 'Calle Principal 321', 932145678),
(13, 'Martín', 'Fuentes', 'Av. El Roble 432', 953214567),
(14, 'Catalina', 'Ortega', 'Pasaje El Sol 654', 976541289),
(15, 'Joaquín', 'Mendoza', 'Calle Los Naranjos 987', 945123678);
INSERT INTO ventas (idventa, vendedor, cantarticulos, subtotal, impuesto, total, clientes_idcliente) VALUES
(1, 'Luis Torres', 3, 45000, 8550, 53550, 1),
(2, 'Carla Soto', 2, 32000, 6080, 38080, 3),
(3, 'Pedro Rivas', 5, 78000, 14820, 92820, 2),
(4, 'María Díaz', 1, 15000, 2850, 17850, 5),
(5, 'Luis Torres', 4, 62000, 11780, 73780, 4),
(6, 'Carla Soto', 3, 41000, 7790, 48790, 6),
(7, 'Pedro Rivas', 6, 95000, 18050, 113050, 7),
(8, 'María Díaz', 2, 28000, 5320, 33320, 8),
(9, 'Luis Torres', 3, 36000, 6840, 42840, 9),
(10, 'Carla Soto', 5, 80000, 15200, 95200, 10),
(11, 'Pedro Rivas', 2, 25000, 4750, 29750, 12),
(12, 'María Díaz', 1, 12000, 2280, 14280, 11),
(13, 'Luis Torres', 4, 54000, 10260, 64260, 13),
(14, 'Carla Soto', 3, 39000, 7410, 46410, 14),
(15, 'Pedro Rivas', 2, 31000, 5890, 36890, 15);
📁ventas_negocio_parte_4
└── README.md
└── 📁img
│ ├── 📁wireframes
│ │ └── wireframe_bbdd.jpg
│ ├── consulta_1_ejecutada.jpg
│ ├── consulta_2_ejecutada.jpg
│ ├── consulta_3_ejecutada.jpg
│ ├── consulta_4_ejecutada.jpg
│ ├── consulta_5_ejecutada.jpg
│ └── eer_diagram.jpg
└── 📁mysql
├── eer_diagram.mwb
├── 📁consultas
│ └── cinco_consultas.sql
├── 📁tabla_clientes
│ ├── alimentando_tabla_clientes.sql
│ └── tabla_clientes.sql
└── 📁tabla_ventas
├── alimentando_tabla_ventas.sql
└── tabla_ventas.sql
- Inserción en clientes (solo campos NOT NULL):
INSERT INTO clientes (idcliente, nombres, apellidos)
VALUES (100, 'Diego', 'Silva');
- Dos inserciones en ventas con sintaxis diferentes:
- Sintaxis 1: Especificando columnas
INSERT INTO ventas (idventa, vendedor, cantarticulos, subtotal, impuesto, total, clientes_idcliente)
VALUES (200, 'Luis Torres', 3, 45000, 8550, 53550, 100);
- Sintaxis 2: Todas las columnas en orden de la tabla
INSERT INTO ventas
VALUES (201, 'Carla Soto', 2, 32000, 6080, 38080, 100);
- Confirmar cambios (COMMIT):
- Esto se usa si estás trabajando con transacciones (START TRANSACTION o autocommit desactivado).
COMMIT;
- Modificar el cliente ingresado en el ítem 1 (llenar campos nulos):
UPDATE clientes
SET direccion = 'Av. Siempre Viva 742',
telefono = 987654321
WHERE idcliente = 100;
- Deshacer cambios (ROLLBACK):
- Esto revertirá los cambios hechos desde el último COMMIT o START TRANSACTION.
ROLLBACK;