0% encontró este documento útil (0 votos)
53 vistas13 páginas

Consultas SQL para Gestión de Productos y Fabricantes

El documento crea una base de datos llamada Empresa con tablas de Fabricantes y Productos. Luego inserta datos en las tablas y realiza consultas SQL para listar y filtrar la información.

Cargado por

Raul Bencomo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
53 vistas13 páginas

Consultas SQL para Gestión de Productos y Fabricantes

El documento crea una base de datos llamada Empresa con tablas de Fabricantes y Productos. Luego inserta datos en las tablas y realiza consultas SQL para listar y filtrar la información.

Cargado por

Raul Bencomo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

IF DB_ID('Empresa') is not null

BEGIN

USE MASTER DROP DATABASE Empresa

end;

CREATE DATABASE Empresa

GO

USE Empresa

IF OBJECT_ID('Fabricante') is not null

DROP TABLE Fabricante;

Create table Fabricante(

IdF Int not null,

Nombre varchar(25),

CONSTRAINT IdF PRIMARY KEY(IdF)

);

go

IF OBJECT_ID('Productos') is not null

DROP TABLE Productos;

GO

Create table Productos(

IdP Int not null,

Nombre varchar(50),

Precio money,

IdFabricante INT FOREIGN KEY REFERENCES Fabricante(IdF),

CONSTRAINT IdProductos PRIMARY KEY(IdP),

);

Go

INSERT INTO Fabricante VALUES(1,'Asus');


INSERT INTO Fabricante VALUES(2,'Lenovo');

INSERT INTO Fabricante VALUES(3,'Hewlwtte-packard');

INSERT INTO Fabricante VALUES(4,'Samsung');

INSERT INTO Fabricante VALUES(5,'Seagate');

INSERT INTO Fabricante VALUES(6,'Crucial');

INSERT INTO Fabricante VALUES(7,'Gigabyte');

INSERT INTO Fabricante VALUES(8,'Huawei');

INSERT INTO Fabricante VALUES(9,'Xiaomi');

go

INSERT INTO Productos VALUES(1,'Disco duro SATA 1TB','86.99','5');

INSERT INTO Productos VALUES(2,'MEMORIA RAM DDR4 8GB','120','6');

INSERT INTO Productos VALUES(3,'DISCO SSD 1TB','150.99','4');

INSERT INTO Productos VALUES(4,'GEFORCE 1050Ti','185','7');

INSERT INTO Productos VALUES(5,'GEFORCE GTX 1080 Xtreme','755','6');

INSERT INTO Productos VALUES(6,'Monitor 24 LED FULL HD','202','1');

INSERT INTO Productos VALUES(7,'Monitor 27 LED FULL HAD','245.99','1');

INSERT INTO Productos VALUES(8,'Portatil YOGA 520','559','2');

INSERT INTO Productos VALUES(9,'Portatil IDEAPD 320','444','2');

INSERT INTO Productos VALUES(10,'IMPRESORA HD DESKJET 3720','59.99','3');

INSERT INTO Productos VALUES(11,'IMPRESORA HD LASERJETPROM2','180','3');

GO

--Llave foranea

SELECT * FROM Productos INNER JOIN Fabricante

ON Productos.IDFabricante = Fabricante.IDF

GO

--trigger

CREATE TRIGGER BorrarFabricante

ON Fabricante
FOR DELETE

AS

DELETE FROM Fabricante FROM Productos, deleted

WHERE Fabricante.IDF = deleted.IDF

SELECT * FROM deleted

GO

Delete From Fabricante Where IDF=8;

GO

-- 1.lista el nombre de todos los productos que hay en la tabla producto.

select Nombre

from Productos

-- 2. lista los nombres y los precios de todos los productos de la tabla producto

select Nombre,Precio

from Productos

-- 3.lista todas las colunas de la tabla producto

select*

from Productos

-- 4. Lista el nombre de los productos, el precio en euros y el precio en dólares


estadounidenses(USD).

SELECT Nombre,Precio, (precio/22.09) AS EURO, (precio/19.54) AS DOLLAR

FROM Productos

-- 5. Lista el nombre de los productos, el precio en euros y el precio en dólares estadounidenses


(USD). Utiliza los siguientes alias para las columnas:

-- nombre de producto, euros, dólares.

select nombre as nombre_de_producto, (precio*0.042) as euros, (precio*0.050) as dólares

from Productos
-- 6.Lista los nombres y los precios de todos los productos de la tabla producto, convirtiendo los
nombres a mayúscula.

SELECT UPPER (nombre), precio

FROM productos

-- 7.Lista los nombres y los precios de todos los productos de la tabla producto, convirtiendo los
nombres a minúscula.

SELECT LOWER (nombre), precio

FROM productos

-- 8. Lista el nombre de todos los fabricantes en una columna, y en otra columna obtenga en
mayúsculas los dos primeros caracteres del nombre del fabricante.

select Nombre, UPPER(LEFT (Nombre,2)) As '2 caracteres'

from Fabricante

-- 9.Lista los nombres y los precios de todos los productos de la tabla producto, redondeando el
valor del precio.

SELECT nombre,ROUND(precio,0) As PrecioRedondo

FROM Productos

-- 10. Lista los nombres y los precios de todos los productos de la tabla producto, truncando el
valor del precio para mostrarlo sin ninguna cifra decimal.

select nombre, floor(precio) As Precio_Redondo

from Productos

-- 11. Lista el identificador de los fabricantes que tienen productos en la tabla producto.

select (IDFabricante) as identificador_fabricante

from Productos

-- 12. Lista el identificador de los fabricantes que tienen productos en la tabla producto,
eliminando los identificadores que aparecen repetidos

select DISTINCT IDFabricante


from Productos

-- 13. Lista los nombres de los fabricantes ordenados de forma ascendente.

select nombre

from Fabricante

ORDER BY Nombre ASC

-- 14. Lista los nombres de los fabricantes ordenados de forma descendente.

select Nombre

from Fabricante

ORDER BY Nombre DESC

-- 15. Lista los nombres de los productos ordenados en primer lugar por el nombre de forma
ascendente y en segundo lugar por el precio de forma descendente.

select nombre,precio

from Productos

order by nombre ASC, precio desc;

-- 16. Devuelve una lista con las 5 primeras filas de la tabla fabricante.

SELECT TOP 5 *

FROM fabricante

-- 17. Devuelve una lista con 2 filas a partir de la cuarta fila de la tabla fabricante. La cuarta fila
también se debe incluir en la respuesta.

Select *

from fabricante where IdF between 4 and 5

-- 18. Lista el nombre y el precio del producto más barato. (Utilice solamente las cláusulas
ORDER BY y LIMIT).

select top 1 nombre, precio

from Productos order by precio asc


--19. Lista el nombre y el precio del producto más caro. (Utilice solamente las cláusulas ORDER
BY y LIMIT)

select top 1 nombre, precio

from Productos order by precio desc

--20. Lista el nombre de todos los productos del fabricante cuyo código de fabricante es igual a
2.

select nombre,IDFabricante

from productos

where IDFabricante = 2

--21. Lista el nombre de los productos que tienen un precio menor o igual a 120€.

select nombre, precio

from Productos

where precio <= 120

-- 22. Lista el nombre de los productos que tienen un precio mayor o igual a 400€.

select nombre, precio

from Productos

where precio >= 400

--23. Lista el nombre de los productos que no tienen un precio mayor o igual a 400€.

select nombre, precio

from productos

where not precio >= 400

--24. Lista todos los productos que tengan un precio entre 80€ y 300€. Sin utilizarel operador
BETWEEN.

select nombre, precio

from productos

where precio >60 and precio <300


--25. Lista todos los productos que tengan un precio entre 60€ y 200€. Utilizando el operador
BETWEEN.

select nombre, precio

from Productos where

precio between 60 and 200

--26. Lista todos los productos que tengan un precio mayor que 200€ y que el códigode
fabricante sea igual a 6.

select *

from productos

where precio > 200 and IDFabricante = 6

--27. Lista todos los productos donde el código de fabricante sea 1, 3 o 5. Sin utilizar el
operador IN.

select *

from Productos

where IDFabricante = 1 or IDFabricante = 3 or IDFabricante = 5

--28. Lista todos los productos donde el código de fabricante sea 1, 3 o 5. Utilizando el
operador IN.

select *

from Productos

where IDFabricante in (1,3,5)

--29. Lista el nombre y el precio de los productos en en céntimos (Habrá que multiplicar por
100 el valor del precio). Cree un alias para la columna que

-- contiene el precio que se llame céntimos.

select nombre, precio, (precio * 100) as centimos

from Productos

--30. Lista los nombres de los fabricantes cuyo nombre empiece por la letra S.

select nombre

from fabricante
where nombre like 'S%'

--31. Lista los nombres de los fabricantes cuyo nombre termine por la vocal e.

select nombre from fabricante

where nombre like '%e'

--32. Lista los nombres de los fabricantes cuyo nombre contenga el carácter w.

select nombre from fabricante

where nombre like '%w%'

--33 Lista los nombres de los fabricantes cuyo nombre sea de 4 caracteres

SELECT IDF, Nombre

FROM Fabricante

WHERE Nombre LIKE '____'

GO

--34. Devuelve una lista con el nombre de todos los productos que contienen la cadena Portátil
en el nombre.

select nombre

from Productos where nombre like 'Portátil%'

--35 Devuelve una lista con los nombres de todos los productos que contengan la cadena
Monitor en el nombre y tienen un precio inferior a 215€.

SELECT Nombre, Precio FROM Productos

WHERE Nombre LIKE '%Monitor%' AND Precio <= 215

GO

--36 Lista el nombre y el precio de todos los productos que tengan un precio mayor o igual a
180€. Ordene el resultado en primer lugar por el precio (en orden

--descendente) y en segundo lugar por el nombre (en orden ascendente).


SELECT Nombre, Precio FROM Productos

WHERE Precio >= 180

ORDER BY Precio DESC, Nombre ASC

GO

-- 1.1.4 Consultas multitabla (Composición interna)

-- 1. Devuelve una lista con el nombre del producto, precio y nombre de fabricante de todos los
productos de la base de datos.

SELECT Productos.Nombre, Precio, Fabricante.Nombre FROM Productos INNER JOIN

Fabricante

ON Productos.IDFabricante = Fabricante.IDF

WHERE IDFabricante = IDF

GO

--2 Devuelve una lista con el nombre del producto, precio y nombre de fabricante de todos los
productos de la base de datos. Ordene el resultado por el

--nombre del fabricante en orden alfabético.

SELECT Productos.Nombre, Precio, Fabricante.Nombre FROM Productos INNER JOIN

Fabricante

ON Productos.IDFabricante = Fabricante.IDF

WHERE IDFabricante = IDF

ORDER BY Fabricante.Nombre ASC

GO

--3 . Devuelve una lista con el identificador del producto, nombre del producto, identificador
del fabricante y nombre del fabricante de todos los productos de la base de datos.

SELECT IdP, Productos.Nombre, IdF, Fabricante.Nombre FROM Productos INNER JOIN

Fabricante

ON Productos.IDFabricante = Fabricante.IDF

WHERE IdFabricante = IdF

GO
--4 Devuelve el nombre del producto, su precio y el nombre de su fabricante, del producto más
barato.

SELECT Productos.Nombre, Precio, Fabricante.Nombre FROM Productos INNER JOIN

Fabricante

ON Productos.IDFabricante = Fabricante.IDF

WHERE IDFabricante = IDF

ORDER BY Precio ASC

OFFSET 0 ROWS FETCH FIRST 1 ROWS ONLY;

GO

--5 Devuelve el nombre del producto, su precio y el nombre de su fabricante, del producto más
caro.

SELECT Productos.Nombre, Precio, Fabricante.Nombre FROM Productos INNER JOIN

Fabricante

ON Productos.IDFabricante = Fabricante.IDF

WHERE IDFabricante = IDF

ORDER BY Precio DESC

OFFSET 0 ROWS FETCH FIRST 1 ROWS ONLY;

GO

--6 Devuelve una lista de todos los productos del fabricante Lenovo.

SELECT IdP, Productos.Nombre, Precio, IdFabricante, Fabricante.Nombre FROM Productos

INNER JOIN Fabricante

ON Productos.IdFabricante = Fabricante.IdF

WHERE IdFabricante = IDF AND Fabricante.Nombre = 'Lenovo'

GO

--7 Devuelve una lista de todos los productos del fabricante Crucial que tengan un precio mayor
que 200€

SELECT IDP, Productos.Nombre, Precio, IDFabricante, Fabricante.Nombre FROM Productos

INNER JOIN Fabricante

ON Productos.IDFabricante = Fabricante.IDF

WHERE Fabricante.Nombre = 'Crucial' AND Precio >= 200


GO

--8 Devuelve un listado con todos los productos de los fabricantes Asus, Hewlett-Packard y
Seagate. Sin utilizar el operador IN.

SELECT * FROM Productos INNER JOIN Fabricante

ON Productos.IdFabricante = Fabricante.IDF

WHERE Fabricante.Nombre = 'Asus' OR Fabricante.Nombre = 'Hewlett Packard' OR

Fabricante.Nombre = 'SEAGATE'

GO

--9 Devuelve un listado con todos los productos de los fabricantes Asus, Hewlett-Packard y
Seagate. Utilizando el operador IN.

SELECT * FROM Productos INNER JOIN Fabricante

ON Productos.IdFabricante = Fabricante.IDF

WHERE Fabricante.Nombre IN ('Asus','Hewlett Packard','SEAGATE')

GO

--10 Devuelve un listado con el nombre y el precio de todos los productos de los fabricantes
cuyo nombre termine por la vocal 'e'.

SELECT Productos.Nombre, Precio FROM Productos INNER JOIN Fabricante

ON Productos.IdFabricante = Fabricante.IDF

WHERE Productos.Nombre LIKE '%E'

GO

--11 Devuelve un listado con el nombre y el precio de todos los productos cuyo nombre de
fabricante contenga el carácter 'w' en su nombre.

SELECT Productos.Nombre, Precio, Fabricante.Nombre

FROM Productos INNER JOIN

Fabricante

ON Productos.IDFabricante = Fabricante.IDF

WHERE Fabricante.Nombre LIKE '%W%'

GO

--12 Devuelve un listado con el nombre de producto, precio y nombre de fabricante, de todos
los productos que tengan un precio mayor o igual a 180€.
--Ordene el resultado en primer lugar por el precio (en orden descendente) y en segundo lugar
por el nombre (en orden ascendente).

SELECT Productos.Nombre, Precio, Fabricante.Nombre FROM Productos INNER JOIN

Fabricante

ON Productos.IdFabricante = Fabricante.IDF

WHERE Precio >= 180

ORDER BY Precio DESC, Productos.Nombre ASC

GO

--13 Devuelve un listado con el identificador y el nombre de fabricante, solamente de aquellos


fabricantes que tienen productos asociados en la base de datos.

SELECT IDF, Fabricante.Nombre FROM Fabricante INNER JOIN Productos

ON IDF = Productos.IDFabricante

GO

if OBJECT_ID('NuevoFa') IS NOT NULL

BEGIN

DROP PROCEDURE DBD.NUEVOFa

END

Go

CREATE PROCEDURE NuevoFa (

@IdFABRICANTE CHAR (4), @NOMBRE VARCHAR (100)

AS

BEGIN TRANSACTION TFABRICANTE

DECLARE @IdFABRICANTEM VARCHAR (4)

SELECT @IDFABRICANTE=@IdFABRICANTE FROM Fabricante WHERE Nombre=


@IdFABRICANTE

INSERT INTO Fabricante


VALUES (@IdFABRICANTE, @NOMBRE)

IF @@ERROR=0

BEGIN

PRINT 'FABRICANTE REGISTRADO CON EXITO'

COMMIT TRAN FABRICANTE

END

ELSE

BEGIN

PRINT 'OCURRIO UN ERROR AL INSERTAR'

ROLLBACK TRAN FABRICANTE

END

GO

EXEC NUEVOFA 10,'ZTE'

Go

Select * From Fabricante

También podría gustarte