BASE DE DATOS 2
INSTRUCCIONES DDL Y DML SQL
Apellidos y Nombres: Jamil Angel Paye Acero
INSTRUCTIVO:
1) Diseñar el modelo conceptual (software DIA) el y posteriormente llevar al modelo relacional y
físico (mediante SQL Server o MySQL) los siguientes ejemplos.
2) Ejecutar las instrucciones SQL dadas en clase
EJERCICIOS
1. Del documento en pdf Ejercicios de bases de datos soluciones, realizar los ejercicios 2 y 3.
2. Fabricantes
• Modelo lógico
Solución
• Modelo conceptual
• Modelo conceptual
• Modelo físico
fabricantes articulos
codigo codigo
nombre nombre
precio
INSTRUCCIONES SQL
CREATE DATABASE dbFabricantes;
USE dbFabricantes;
CREATE TABLE fabricantes(
codigoFab INT NOT NULL,
nombre VARCHAR(100) NOT NULL,
PRIMARY KEY (codigoFab)
);
CREATE TABLE articulos(
codigoArt INT NOT NULL,
nombre VARCHAR(100) NOT NULL,
precio INT NOT NULL,
codigoFab INT NOT NULL,
PRIMARY KEY (codigoArt),
FOREIGN KEY (codigoFab) REFERENCES fabricantes(codigoFab)
);
--DATOS
INSERT INTO fabricantes(codigoFab,nombre) VALUES
(1,'Intel'),
(2,'Asrock'),
(3,'AMD'),
(4,'Creative'),
(5,'LG'),
(6,'Genius'),
(7,'Western Digital'),
(8,'Samsung');
INSERT INTO articulos(codigoArt,nombre,precio,codigoFab) VALUES
(1,'Tarjeta Madre',270,2),
(2,'Microprocesador Core I7 64bits 2.5 Ghz',450,1),
(3,'Microprocesador Ryzen 7 2.5 Ghz',450,3),
(4,'Parlantes 7.1',10,6),
(5,'Teclado 105 teclado ingles',10,6),
(6,'Case Combo',70,6),
(7,'Disco Duro 1 TB',80,7),
(8,'Disco Duro 500 GB',75,7),
(9,'Fuentes de poder 600w',15,4),
(10,'Monitor 21pulg',110,5),
(11,'Monitor 27pulg',110,4);
PREGUNTAS PARA CONSULTAS SQL:
1. Obtener los nombres de los productos de la tienda.
2. Obtener los nombres y los precios de los productos de la tienda.
3. Obtener el nombre de los productos cuyo precio sea menor o igual a 200 $Bs.
4. Obtener todos los datos de los artículos cuyo precio esté entre los 60 $Bs y los 120 $Bs (ambas
cantidades incluidas).
5. Obtener el nombre y el precio en $US (es decir, el precio en $ multiplicado por 6,93)
6. Seleccionar el precio medio de todos los productos.
7. Obtener el precio medio de los artículos cuyo código de fabricante sea 2.
8. Obtener el número de artículos cuyo precio sea mayor o igual a 180 $Bs.
9. Obtener el nombre y precio de los artículos cuyo precio sea mayor o igual a 180 $Bs y ordenarlos
descendentemente por precio, y luego ascendentemente por nombre.
10. Obtener un listado completo de artículos, incluyendo por cada articulo los datos del articulo y de su
fabricante.
11. Obtener un listado de artículos, incluyendo el nombre del artículo, su precio, y el nombre de su
fabricante.
12. Obtener el precio medio de los productos de cada fabricante, mostrando solo los códigos de
fabricante.
13. Obtener el precio medio de los productos de cada fabricante, mostrando el nombre del fabricante.
14. Obtener los nombres de los fabricantes que ofrezcan productos cuyo precio medio sea mayor o
igual a 150 $Bs.
15. Obtener el nombre y precio del artículo más barato.
16. Añadir un nuevo producto: Altavoces de 70 $Bs (del fabricante 2)
17. Cambiar el nombre del producto 8 a 'Impresora Láser’
18. Aplicar un descuento del 10 % (multiplicar el precio por 0,10) a todos los productos.
19. Aplicar un descuento de 10 $Bs a todos los productos cuyo precio sea mayor o igual a 120 $Bs.
3. Piezas y proveedores
INSTRUCCIONES SQL
CREATE DATABASE dbSuministra;
USE dbSuministra;
CREATE TABLE piezas(
codigo INT NOT NULL IDENTITY PRIMARY KEY,
nombre varchar(100)
);
CREATE TABLE proveedores(
id VARCHAR(4) NOT NULL PRIMARY KEY,
nombre VARCHAR(100)
);
CREATE TABLE suministra(
codigo_pieza INT,
id_proveedor VARCHAR(4),
precio INT,
FOREIGN KEY (codigo_pieza) REFERENCES piezas(codigo) ON DELETE CASCADE ON UPDATE
CASCADE,
FOREIGN KEY (id_proveedor) REFERENCES proveedores(id) ON DELETE CASCADE ON UPDATE
CASCADE,
PRIMARY KEY (codigo_pieza, id_proveedor)
);
/*DATOS */
INSERT INTO piezas(nombre) VALUES
('Tarjeta Madre'),
('Microprocesador CoreDual'),
('Parlantes 7.1'),
('Teclado 105 teclas ingles'),
('Case Combo'),
('Disco Duro 1 TB'),
('Disco Duro 500 GB'),
('Fuentes de poder 600w'),
('Monitores 21pulg');
INSERT INTO proveedores(id, nombre) VALUES
('P1', 'Intel'),
('P2', 'Asrock'),
('P3', 'AMD'),
('P4', 'Creative'),
('P5', 'Samsung'),
('P6', 'LG'),
('P7', 'Genius');
INSERT INTO suministra(codigo_pieza, id_proveedor, precio) VALUES
(1,'P1',270),
(1,'P2',250),
(1,'P3',280),
(2,'P1',350),
(2,'P3',330),
(3,'P4',450),
(4,'P2',70),
(4,'P7',75),
(5,'P7',300),
(6,'P5',450),
(6,'P6',440),
(7,'P5',400),
(7,'P6',390),
(8,'P7',80),
(9,'P5',700),
(9,'P6',720);
PREGUNTAS PARA CONSULTAS SQL:
1. Obtener los nombres de todas las piezas.
2. Obtener todos los datos de todos los proveedores.
3. Obtener el precio medio al que se nos suministran las piezas.
4. Obtener los nombres de los proveedores que suministran la pieza 1.
5. Obtener los nombres de las piezas suministradas por el proveedor cuyo código es P5.
6. Aumentar los precios en una unidad.
7. Hacer constar en la base de datos que la empresa “ASROCK” (P2) ya no va a suministrarnos Tarjetas
Madre (código 1)
8. Hacer constar en la base de datos que la empresa "ASROCK” (P2) no va a suministrarnos ninguna
pieza (aunque la empresa en sí va a seguir constando en nuestra base de datos).