You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

5.3 KiB

task1

CREATE DATABASE dg_mysql;

SHOW DATABASES;

USE dg_mysql;

CREATE TABLE s( sno CHAR(2), sname VARCHAR(10), STATUS INT, city VARCHAR(10) ); CREATE TABLE p( pno CHAR(2), pname VARCHAR(10), color CHAR(1), weight INT ); CREATE TABLE j( jno CHAR(2), jname VARCHAR(10), city VARCHAR(10) ); CREATE TABLE spj( sno CHAR(2), pno CHAR(2), jno CHAR(2), qty INT );

DESCRIBE s; DESCRIBE p; DESCRIBE j; DESCRIBE spj;

INSERT INTO s VALUES ('S1','精益',20,'天津'), ('S2','盛锡',10,'北京'), ('S3','东方红',30,'北京'), ('S4','丰泰盛',20,'天津'), ('S5','为民',30,'上海');

INSERT INTO p VALUES ('P1','螺母','红',12), ('P2','螺栓','绿',17), ('P3','螺丝刀','蓝',14), ('P4','螺丝刀','红',14), ('P5','凸轮','蓝',40), ('P6','齿轮','红',30);

INSERT INTO j VALUES ('J1','三建','北京'), ('J2','一汽','长春'), ('J3','弹簧厂','天津'), ('J4','造船厂','天津'), ('J5','机车厂','唐山'), ('J6','无线电厂','常州'), ('J7','半导体厂','南京');

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

SELECT* FROM s; SELECT* FROM p; SELECT* FROM j; SELECT* FROM spj;

SELECT sname,city FROM s ORDER BY sname ASC;

SELECT pname,color,weight FROM p ORDER BY pname ASC;

SELECT DISTINCT sno FROM j NATURAL JOIN spj WHERE jno='J1' ORDER BY sno ASC; SELECT DISTINCT sno FROM spj WHERE jno='J1' ORDER BY sno ASC;

SELECT sno FROM spj WHERE jno='J1'AND pno='P1' ORDER BY sno ASC;

SELECT jno FROM spj WHERE sno='S1' ORDER BY jno ASC;

SELECT pname,qty FROM spj NATURAL JOIN p WHERE jno='J2' ORDER BY pname ASC;

SELECT DISTINCT pno FROM s NATURAL JOIN spj WHERE city='上海' ORDER BY pno ASC;

SELECT DISTINCT jname FROM j INNER JOIN spj ON j.jno=spj.jno INNER JOIN s ON spj.sno=s.sno WHERE s.city='上海' ORDER BY jname ASC;

SELECT sno FROM p NATURAL JOIN spj WHERE jno='J1'AND color='红' ORDER BY sno ASC;

SELECT DISTINCT jno FROM j WHERE jno NOT IN( SELECT jno FROM s NATURAL JOIN spj NATURAL JOIN p WHERE s.city='天津'AND color='红') ORDER BY jno ASC;

SELECT DISTINCT jno FROM j WHERE jno NOT IN( SELECT jno FROM spj WHERE sno IN (SELECT sno FROM s WHERE city='天津') AND pno IN(SELECT pno FROM p WHERE color='红'));

SELECT DISTINCT jno FROM j WHERE NOT EXISTS( SELECT jno FROM spj NATURAL JOIN p NATURAL JOIN s WHERE city='天津'AND color='红'AND j.jno=jno) ORDER BY jno ASC;

UPDATE p SET color='蓝' WHERE color='红';

UPDATE spj SET sno='S3' WHERE sno='S5'AND jno='J4'AND pno='P6';

DELETE FROM s WHERE sno='S2'; DELETE FROM spj WHERE sno='s2';

INSERT INTO spj(sno,jno,pno,qty)VALUES('S2','J6','P4',200);

CREATE VIEW v_spj AS SELECT sno,pno,qty FROM spj WHERE jno IN( SELECT jno FROM j WHERE jname='三建' );

SELECT pno,SUM(qty) AS total FROM v_spj GROUP BY pno;

SELECT* FROM v_spj WHERE sno='S1';

CREATE INDEX IDX_SPJ ON spj(sno,pno,jno);

SHOW INDEX FROM spj; SELECT* FROM s; SELECT* FROM p; SELECT* FROM j; SELECT* FROM spj;