Вы находитесь на странице: 1из 6

USE master;

GO
CREATE DATABASE PracticaBaseDatosI

USE PracticaBaseDatosI
GO

CREATE TABLE dbo.Fabricante


(id_Fab int PRIMARY KEY NOT NULL IDENTITY,
nombre varchar(25) NULL,
Pais varchar(25) NULL)
GO

CREATE TABLE dbo.Programa


(CODIGO int PRIMARY KEY NOT NULL IDENTITY,
Nombre varchar(25) NULL,
Version varchar(25) NULL)
GO

CREATE TABLE dbo.Desarrolla


(ID_Fab int NOT NULL,
Codigo int NULL,

CONSTRAINT FK_Desarrolla_Fabricante
FOREIGN KEY(ID_Fab) REFERENCES Fabricante(id_Fab)
ON UPDATE CASCADE
ON DELETE CASCADE,
CONSTRAINT FK_Desarrolla_Programa
FOREIGN KEY(Codigo) REFERENCES Programa(CODIGO)
ON UPDATE CASCADE
ON DELETE CASCADE
)
GO

CREATE TABLE dbo.Comercio


(CIF int PRIMARY KEY NOT NULL IDENTITY,
Nombre varchar(25) NULL,
Ciudad varchar(25) NULL)
GO

CREATE TABLE dbo.Cliente


(DNI int PRIMARY KEY NOT NULL IDENTITY,
Nombre varchar(25) NULL,
Edad int NULL)
GO

CREATE TABLE dbo.Registra


(CIF int NOT NULL,
DNI int NULL,
CODIGO int NULL,
MEDIO varchar(25) NULL
CONSTRAINT FK_Registra_Comercio
FOREIGN KEY(CIF) REFERENCES Comercio(CIF)
ON UPDATE CASCADE
ON DELETE CASCADE,
CONSTRAINT FK_Registra_Cliente
FOREIGN KEY(DNI) REFERENCES Cliente(DNI)
ON UPDATE CASCADE
ON DELETE CASCADE,
CONSTRAINT FK_Registra_Programa
FOREIGN KEY(CODIGO) REFERENCES Programa(CODIGO)
ON UPDATE CASCADE
ON DELETE CASCADE
)
GO

CREATE TABLE dbo.Distribuye


(CIF int NOT NULL,
CODIGO int NULL,
CANTIDAD int NULL

CONSTRAINT FK_Distribuye_Comercio
FOREIGN KEY(CIF) REFERENCES Comercio(CIF)
ON UPDATE CASCADE
ON DELETE CASCADE,
CONSTRAINT FK_Distribuye_Programa
FOREIGN KEY(CODIGO) REFERENCES Programa(CODIGO)
ON UPDATE CASCADE
ON DELETE CASCADE
)
GO

INSERT DATA

USE PracticaBaseDatosI

INSERT INTO Fabricante(


nombre,
Pais
)
VALUES
('Oracle','Estados Unidos'),
('Microsoft','Estados Unidos'),
('IBM','Estados Unidos'),
('Dinamic','España'),
('Borland','Estados Unidos'),
('Svmante','Estados Unidos');
GO

INSERT INTO Programa(


Nombre,
Version
)
VALUES
('Application Server','9i'),
('Database','8i'),
('Database','9i'),
('Database','10g'),
('Developer','6i'),
('Access','97'),
('Access','2000'),
('Access','XP'),
('Windows','98'),
('Windows','XP Profesional'),
('Windows','XP Home Edition'),
('Windows','2003 Edition'),
('Norton Internet Security','2004'),
('Freddy Hardest','-'),
('Paradox','2'),
('C++ Builder','55'),
('DB/2','20'),
('OS/2','10'),
('JBuilder','X'),
('La prision','10');
GO

INSERT INTO Desarrolla(


ID_FAB,
Codigo
)
VALUES
(1,1),
(1,2),
(1,3),
(1,4),
(1,5),
(2,6),
(2,7),
(2,8),
(2,9),
(2,10),
(2,11),
(2,12),
(6,13),
(4,14),
(5,15);
GO

INSERT INTO Comercio(


nombre,
Ciudad
)
VALUES
('El corte Ingles','Sevilla'),
('El corte Ingles','Madrid'),
('Jump','Valencia'),
('Centro Mail','Sevilla'),
('FNAC','Barcelona');
GO

INSERT INTO Cliente(


Nombre,
Edad
)
VALUES
('Pepe Perez',45),
('Juan Gonzales',45),
('Maria Gomez',33),
('Javier Casado',18),
('Nuria Sanchez',29),
('Antonio Navarro',58);
GO

INSERT INTO Registra(


CIF,
DNI,
CODIGO,
MEDIO
)
VALUES
(1,1,1,'Internet'),
(1,3,4,'Tarjeta Postal'),
(4,2,10,'Telefono'),
(4,1,10,'Tarjeta Postal'),
(5,2,12,'Intenet'),
(2,4,15,'Internet');
GO

INSERT INTO Distribuye(


CIF,
CODIGO,
CANTIDAD
)
VALUES
(1,1,10),
(1,2,11),
(1,6,5),
(1,7,3),
(1,10,5),
(1,13,7),
(2,1,6),
(2,2,6),
(2,6,4),
(2,7,7),
(3,10,8),
(3,13,5),
(4,14,3),
(4,20,6),
(5,15,8),
(5,16,2),
(5,17,3),
(5,19,6),
(5,8,8);
GO

CONSULTAS

/* Ejercicio 1 */
SELECT DISTINCT Nombre AS 'Nombre de los clientes que registraron de la misma forma que
Pepe Perez' FROM Registra JOIN Cliente ON (Registra.DNI = Cliente.DNI) WHERE MEDIO =
ANY(SELECT MEDIO FROM Registra JOIN Cliente ON (Registra.DNI = Cliente.DNI) WHERE
Cliente.Nombre = 'Pepe Perez' )

/* Ejercicio 2 */
SELECT count(*) AS 'Numero de programas' FROM Programa

/* Ejercicio 3 */
SELECT count(*) AS 'Numero de clientes mayores de 40' FROM Cliente WHERE EDAD > 40

/* Ejercicio 4 */
SELECT SUM(CANTIDAD) AS 'Numero de ventas con CIF 1' FROM Distribuye WHERE CIF = 1

/* Ejercicio 5 */
SELECT AVG(CANTIDAD) AS 'Media de programas vendidos con el codigo 7' FROM Distribuye
WHERE CODIGO = 7

/* Ejercicio 6 */
SELECT MIN(CANTIDAD) AS 'Minima cantidad de programas vendidos con el codigo 7' FROM
Distribuye WHERE CODIGO = 7

/* Ejercicio 7 */
SELECT MAX(CANTIDAD) AS 'Maxima cantidad de programas vendidos con el codigo 7'
FROM Distribuye WHERE CODIGO = 7

/* Ejercicio 8 */
SELECT COUNT(*) AS 'N° de establecimientos donde se vende el programa cuyo codigo es 7'
FROM Distribuye WHERE CODIGO = 7

/* Ejercicio 9 */
SELECT COUNT(*) AS 'N° de programas vendidos en Sevilla' FROM Distribuye JOIN Comercio
ON (Distribuye.CIF = Comercio.CIF) WHERE Comercio.Ciudad = 'Sevilla'

/* Ejercicio 10 */
SELECT COUNT(*) AS 'N° de programas desarrollados por fabricantes de Estados Unidos'
FROM Desarrolla JOIN Fabricante ON (Desarrolla.ID_Fab = Fabricante.id_Fab) WHERE
Fabricante.Pais = 'Estados Unidos'

Вам также может понравиться