CREACION E INSERSION DE DATOS DE LAS TABLAS OTORGADAS POR EL INSTRUCTOR LIC. ELVIN GERMAN EL DIA 06-04-2009
---CREAR TABLA PIEZAS---
CREATE TABLE PIEZAS
( ID_PIEZA VARCHAR(4),
PNOMBRE VARCHAR(30),
COLOR VARCHAR (20),
PESO INT,
PCIUDAD VARCHAR(20)
CONSTRAINT PK_ID_PIEZA
PRIMARY KEY (ID_PIEZA)
)
---INSERTAR VALORES PIEZAS---
INSERT INTO PIEZAS
VALUES('P1','TUERCA','ROJO',12,'LONDRES')
INSERT INTO PIEZAS
VALUES('P2','PERNO','VERDE',17,'PARIS')
INSERT INTO PIEZAS
VALUES('P3','BIRLO','AZUL',17,'ROMA')
INSERT INTO PIEZAS
VALUES('P4','BIRLO','ROJO',14,'LONDRES')
INSERT INTO PIEZAS
VALUES('P5','LEVA','AZUL',12,'PAIS')
INSERT INTO PIEZAS
VALUES('P6','ENGRANE','ROJO',19,'LONDRES')
---CREAR TABLA PROVEEDORES---
CREATE TABLE PROVEEDORES
(
ID_PROVEEDOR VARCHAR (4),
PNOMBRE VARCHAR (20),
SITUACION INT,
PCIUDAD VARCHAR (20)
CONSTRAINT PK_ID_PROVEEDOR
PRIMARY KEY (ID_PROVEEDOR)
)
---INSERTAR VALORES PROVEEDORES---
INSERT INTO PROVEEDORES
VALUES ('S1','JUAN',20,'LONDRES')
INSERT INTO PROVEEDORES
VALUES ('S2','ANTONIO',10,'PARIS')
INSERT INTO PROVEEDORES
VALUES ('S3','MARIA',30,'PARIS')
INSERT INTO PROVEEDORES
VALUES ('S4','SUSANA',20,'LONDRES')
INSERT INTO PROVEEDORES
VALUES ('S5','FELIPE',30,'ATENAS')
---CREAR TABLA PROYECTO---
CREATE TABLE PROYECTO
(
ID_Proyecto VARCHAR(4),
Jnombre VARCHAR (20),
Jciudad VARCHAR (20),
CONSTRAINT PK_ID_PROYECTO
PRIMARY KEY (ID_Proyecto),
)
---INSERTAR VALORES TABLA PROYECTO---
INSERT INTO PROYECTO
VALUES ('J1','CLASIFICADOR','PARIS')
INSERT INTO PROYECTO
VALUES ('J2','PERFORADORA','ROMA')
INSERT INTO PROYECTO
VALUES ('J3','LECTORA','ATENAS')
INSERT INTO PROYECTO
VALUES ('J4','CONSOLA','ATENAS')
INSERT INTO PROYECTO
VALUES ('J5','TERMINAL','LONDRES')
INSERT INTO PROYECTO
VALUES ('J6','CINTA','OSLO')
INSERT INTO PROYECTO
VALUES ('J7','IMPRESORA','LONDRES')
---CREAR TABLA DE UNION_TABLAS---
CREATE TABLE UNION_TABLAS
(
ID_PROVEEDOR VARCHAR (4),
CONSTRAINT FK_ID_PROYECTO
FOREIGN KEY (ID_PROYECTO)
REFERENCES PROYECTO (ID_PROYECTO),
ID_PIEZA VARCHAR (4),
CONSTRAINT FK_ID_PIEZA
FOREIGN KEY (ID_PIEZA)
REFERENCES PIEZAS (ID_PIEZA),
ID_PROYECTO VARCHAR(4),
CONSTRAINT FK_ID_PROVEEDOR
FOREIGN KEY (ID_PROVEEDOR)
REFERENCES PROVEEDORES (ID_PROVEEDOR),
CANTIDAD INT
)
----PARA INSERTAR DATOS EN LA BASE DE DATOS DE UNION_TABLAS
INSERT INTO UNION_TABLAS
VALUES ('S1','P1','J1',200)
INSERT INTO UNION_TABLAS
VALUES ('S1','P1','J4',700)
INSERT INTO UNION_TABLAS
VALUES ('S2','P3','J1',800)
INSERT INTO UNION_TABLAS
VALUES ('S2','P3','J2',200)
INSERT INTO UNION_TABLAS
VALUES ('S2','P3','J3',100)
INSERT INTO UNION_TABLAS
VALUES ('S2','P3','J4',100)
INSERT INTO UNION_TABLAS
VALUES ('S2','P3','J5',500)
INSERT INTO UNION_TABLAS
VALUES ('S2','P3','J6',300)
INSERT INTO UNION_TABLAS
VALUES ('S2','P3','J7',500)
INSERT INTO UNION_TABLAS
VALUES ('S2','P5','J2',150)
INSERT INTO UNION_TABLAS
VALUES ('S2','P3','J1',125)
INSERT INTO UNION_TABLAS
VALUES ('S3','P4','J2',200)
INSERT INTO UNION_TABLAS
VALUES ('S4','P6','J3',200)
INSERT INTO UNION_TABLAS
VALUES ('S4','P6','J7',300)
INSERT INTO UNION_TABLAS
VALUES ('S5','P2','J4',8000)
INSERT INTO UNION_TABLAS
VALUES ('S5','P2','J2',500)
INSERT INTO UNION_TABLAS
VALUES ('S5','P5','J5',300)
INSERT INTO UNION_TABLAS
VALUES ('S5','P5','J7',700)
INSERT INTO UNION_TABLAS
VALUES ('S5','P1','J4',900)
INSERT INTO UNION_TABLAS
VALUES ('S5','P3','J4',100)
CONSULTAS SIMPLES
CONSULTA PUNTO 1, OBTENER PIEZAS Y SU PESO EN GRAMO
SELECT p.id_pieza,
p.pnombre,
p.peso * 454 as 'Peso En Gramos'
FROM PIEZAS as P
CONSULTA PUNTO 2, OBTENER ID_PROVEEDOR SITUACION >20 Y CIUDAD PARIS
SELECT ID_PROVEEDOR
FROM PROVEEDORES
WHERE SITUACION >20 AND PCIUDAD = 'PARIS'
CONSULTA PUNTO 3, OBTENER ID_PROVEEDOR Y SITUACION DE PROVEEDORES DE PARIS EN ORDEN DESCENDENTE POR SITUACION
SELECT ID_PROVEEDOR AS NO_PROVEEDORES, SITUACION, PCIUDAD
FROM PROVEEDORES
WHERE PCIUDAD LIKE 'PARIS'
ORDER BY SITUACION DESC
CONSULTA DE REUNION (CON FILTRADO WHERE)
CONSULTA 4, OBTENER TODAS LAS COMBINACIONES DE (ID_PROVEEDOR, ID_PIEZA) TALES QUE EL PROVEEDOR Y LA PIEZA ESTEN UBICADOS EN EL MISMO LUGAR
SELECT *
FROM PROVEEDORES, PIEZAS
WHERE PROVEEDORES.PCIUDAD=PIEZAS.PCIUDAD
CONSULTA 5, OBTENER TODAS LAS COMBINACIONES DE INFORMACION DE PROVEEDOR Y PIEZA DONDE LA CIUDAD DEL PROVEEDOR SIGA A LA CIUDAD DE LA PIEZA EN ORDEN ALFABETICO.
SELECT *
FROM PROVEEDORES, PIEZAS
WHERE PROVEEDORES.PCIUDAD<PIEZAS.PCIUDAD
CONSULTA 6, OBTENER TODAS LAS COMBINACIONES DE INFORMACION DEL PROVEEDOR
Y PIEZA DONDE EL PROVEEDOR Y LA PIEZA EN CUESTION ESTEN CONSITUADOS
ES DECIR TENGAN LA MISMA CIUDAD, PERO OMITIENDO A LOS PROVEEDORES
CUYA SITUACION SEA 20
SELECT *
FROM PIEZAS, PROVEEDORES
WHERE (PIEZAS.PCIUDAD=PROVEEDORES.PCIUDAD AND PROVEEDORES.SITUACION<>20)
CONSULTA 7, OBTENER TODAS LAS PAREJAS DE NOMBRES DE CIUDAD TALES
QUE UN PROVEEDOR SITUADO EN LA PRIMERA CIUDAD SUMINISTRE UNA PIEZA
ALMACENADA EN LA SEGUNDA CIUDAD.
SELECT PR.PNOMBRE, PR.PCIUDAD, P.PNOMBRE, P.PCIUDAD
FROM PROVEEDORES AS PR, PIEZAS AS P, UNION_TABLAS AS U
WHERE PR.ID_PROVEEDOR = U.ID_PROVEEDOR AND P.ID_PIEZA=U.ID_PIEZA
OPERACIONES DE INSERCION
8)INSERTAR UN NUEVO ENVIO CON CODIGO DE PROVEEDOR S20, CODIGO DE PIEZA P20, CODIGO DE PROYECTO J4 Y CANTIDAD 1000.
Respuesta: para poder realizarse esta insercion es necesario que en las tablas con valores primarios existan dichos valores, ya que por integridad referencial esos valores no existen en las tablas a las que se le hace referencia por eso no se pueden crear.
En este caso no puede insertarse un proveedor s20 por que en la tabla de proveedores solo hay proveedores hasta s5, en este tendriamos que crear en esa tabla toda una fila con los valores de s20, ya que no se puede insertar una llave primaria sola sin algun valor en las otras columnas ya que su valor debe ser unico y exige mas datos o al menos un dato de las columnas a la que esta atada, tambien eso pasa con codigo de pieza pero no con proyecto ya que existe ni con cantidad por que no es un valor referencial.