Please create tables S, P, J, SPJ, and perform related queries

Article directory

    • database display
    • Create table statement and related data
    • Answers to textbook exercises

Database display

S list
P list
J list
SPJ list

Create table statement and related data

  • List J
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for j
-- ----------------------------
DROP TABLE IF EXISTS `j`;
CREATE TABLE `j` (
  `JNO` char(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `JNAME` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `CITY` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of j
-- ----------------------------
INSERT INTO `j` VALUES ('J1', 'Sanjian', 'Beijing');
INSERT INTO `j` VALUES ('J2', 'FAW', 'Changchun');
INSERT INTO `j` VALUES ('J3', 'Spring Factory', 'Tianjin');
INSERT INTO `j` VALUES ('J4', 'Shipyard', 'Tianjin');
INSERT INTO `j` VALUES ('J5', 'Locomotive Factory', 'Tangshan');
INSERT INTO `j` VALUES ('J6', 'Radio Factory', 'Changzhou');
INSERT INTO `j` VALUES ('J7', 'Semiconductor Factory', 'Nanjing');

SET FOREIGN_KEY_CHECKS = 1;
  • P list
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for p
-- ----------------------------
DROP TABLE IF EXISTS `p`;
CREATE TABLE `p` (
  `PNO` char(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `PNAME` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `COLOR` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `WEIGHT` int NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of p
-- ----------------------------
INSERT INTO `p` VALUES ('P1', 'Nut', 'Red', 12);
INSERT INTO `p` VALUES ('P2', 'Bolt', 'Green', 17);
INSERT INTO `p` VALUES ('P3', 'screwdriver', 'blue', 14);
INSERT INTO `p` VALUES ('P4', 'Screwdriver', 'Red', 14);
INSERT INTO `p` VALUES ('P5', 'Cam', 'Blue', 40);
INSERT INTO `p` VALUES ('P6', 'Gear', 'Red', 30);

SET FOREIGN_KEY_CHECKS = 1;
  • S table
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for s
-- ----------------------------
DROP TABLE IF EXISTS `s`;
CREATE TABLE `s` (
  `SNO` char(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `SNAME` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `STATUS` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `CITY` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of s
-- ----------------------------
INSERT INTO `s` VALUES ('S1', 'Lean', '20', 'Tianjin');
INSERT INTO `s` VALUES ('S2', 'Shengxi', '10', 'Beijing');
INSERT INTO `s` VALUES ('S3', 'Dongfanghong', '30', 'Beijing');
INSERT INTO `s` VALUES ('S4', 'Feng Tai Sheng', '20', 'Tianjin');
INSERT INTO `s` VALUES ('S5', 'for the people', '30', 'Shanghai');

SET FOREIGN_KEY_CHECKS = 1;
  • SPJ table
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for spj
-- ----------------------------
DROP TABLE IF EXISTS `spj`;
CREATE TABLE `spj` (
  `SNO` char(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `PNO` char(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `JNO` char(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `QTY` int NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of spj
-- ----------------------------
INSERT INTO `spj` VALUES ('S1', 'P1', 'J1', 200);
INSERT INTO `spj` VALUES ('S1', 'P1', 'J3', 100);
INSERT INTO `spj` VALUES ('S1', 'P1', 'J4', 700);
INSERT INTO `spj` VALUES ('S1', 'P2', 'J2', 100);
INSERT INTO `spj` VALUES ('S2', 'P3', 'J1', 400);
INSERT INTO `spj` VALUES ('S2', 'P3', 'J2', 200);
INSERT INTO `spj` VALUES ('S2', 'P3', 'J4', 500);
INSERT INTO `spj` VALUES ('S2', 'P3', 'J5', 400);
INSERT INTO `spj` VALUES ('S2', 'P5', 'J1', 400);
INSERT INTO `spj` VALUES ('S2', 'P5', 'J2', 100);
INSERT INTO `spj` VALUES ('S3', 'P1', 'J1', 200);
INSERT INTO `spj` VALUES ('S3', 'P3', 'J1', 200);
INSERT INTO `spj` VALUES ('S4', 'P5', 'J1', 100);
INSERT INTO `spj` VALUES ('S4', 'P6', 'J3', 300);
INSERT INTO `spj` VALUES ('S4', 'P6', 'J4', 200);
INSERT INTO `spj` VALUES ('S5', 'P2', 'J4', 100);
INSERT INTO `spj` VALUES ('S5', 'P3', 'J1', 200);
INSERT INTO `spj` VALUES ('S5', 'P6', 'J2', 200);
INSERT INTO `spj` VALUES ('S5', 'P6', 'J4', 500);

SET FOREIGN_KEY_CHECKS = 1;

Textbook exercise answers

-- Question 4

-- (1) Ask for the supplier number SNO of the J1 parts of the supply project.

SELECT SNO FROM SPJ
WHERE JNO = 'J1';

-- (2) Ask for the supplier number SNO of the part P1 of the supply engineering J1.

SELECT SNO FROM SPJ
WHERE JNO = 'J1' AND PNO = 'P1';

-- (3) Ask for the supplier number SNO of the supplier whose J1 parts are in red.

SELECT SNO FROM SPJ
WHERE JNO = 'J1' AND PNO IN (
SELECT PNO FROM P
WHERE COLOR = 'red'
);

-- (4) Ask for the project number JNO that does not use the red parts produced by Tianjin suppliers.

SELECT JNO FROM J
WHERE NOT EXISTS (
SELECT *
FROM SPJ, S, P
WHERE SPJ.JNO = J.JNO AND SPJ.SNO = S.SNO
AND SPJ.PNO = P.PNO AND S.CITY = 'Tianjin'
AND P.COLOR = 'red'
);

-- (5) Find the project number JNO that uses at least all parts supplied by supplier S1.

SELECT DISTINCT JNO
FROM SPJ AS SPJZ
WHERE NOT EXISTS (
SELECT *
FROM SPJ AS SPJX
WHERE SNO = 'S1'
AND NOT EXISTS (
SELECT *
FROM SPJ AS SPJY
WHERE SPJY.PNO = SPJX.PNO
AND SPJY.JNO = SPJZ.JNO
)
);


-- Question 5

-- (1) Find the names and cities of all suppliers.

SELECT SNAME, CITY FROM S;

-- (2) Find out the name, color, weight of all parts.

SELECT PNAME, COLOR, WEIGHT FROM P;

-- (3) Find out the project number using the part supplied by supplier S1.

SELECT PNO FROM SPJ
WHERE SNO = 'S1';

-- (4) Find out the names and quantities of various parts used in project J2.

SELECT P.PNAME, SPJ.QTY
FROM P, SPJ WHERE P.PNO = SPJ.PNO
AND SPJ.JNO = 'J2';

-- (5) Find out all part numbers supplied by Shanghai manufacturers.

SELECT DISTINCT SPJ.PNO
FROM S, SPJ WHERE S.SNO = SPJ.SNO
AND S.CITY = 'Shanghai';

-- (6) Find out the name of the project using the parts produced in Shanghai.

SELECT J.JNAME
FROM SPJ, S, J
WHERE SPJ.SNO = S.SNO
AND SPJ.JNO = J.JNO
AND S.CITY = 'Shanghai';
\t
-- (7) Find out the name of the project that does not use parts from Tianjin.

SELECT JNO FROM J
WHERE NOT EXISTS (
SELECT *
FROM SPJ
WHERE SPJ.JNO = J.JNO
AND SNO IN (
SELECT SNO
FROM S
WHERE CITY = 'Tianjin'
)
);

-- (8) Change the color of all red parts to blue.

UPDATE P SET COLOR = 'Blue'
WHERE COLOR = 'red';

-- (9) Change the part P6 supplied by S5 to J4 to be supplied by S3, please make necessary modifications.

UPDATE SPJ SET SNO = 'S3'
WHERE SNO = 'S5' AND JNO = 'J4' AND PNO = 'P6';
\t
-- (10) Delete the record of S2 from the supplier relationship, and delete the related record from the supply situation relationship.

DELETE FROM SPJ WHERE SNO = 'S2'; -- delete the related S2 supplier record from SPJ

DELETE FROM S WHERE SNO = 'S2'; -- delete supplier S2

-- (11) Please insert (S2, J6, P4, 200) into the availability relationship.

INSERT INTO SPJ VALUES('S2', 'J6', 'P4', 200);