解答:
3、
(1)
SELECT *
FROM S
WHERE A=10
(2)
SELECT A,B
FROM S
(3)
SELECT A,B,S.C,S.D,E,F
FROM S,T
WHERE S.C=T.C AND S.D=T.D
(4)
SELECT *
FROM S,T
WHERE S.C=T.C
(5)
SELECT *
FROM S,T
WHERE S.A<T.E
(6)
SELECT S.C,S.D,T.*
FROM S,T
4、
建表:
DROP TABLE IF EXISTS S
DROP TABLE IF EXISTS P
DROP TABLE IF EXISTS J
DROP TABLE IF EXISTS SPJ
CREATE TABLE S
(
SNO CHAR(4) PRIMARY KEY, /* 列级完整性约束条件,Sno是主码*/
SNAME CHAR(20) UNIQUE, /* Sname取唯一值*/
SStatus SMALLINT,
CITY CHAR(20)
);
CREATE TABLE P
(
PNO CHAR(4) PRIMARY KEY,
PNAME CHAR(40),
COLOR CHAR(4),
Wweight SMALLINT,
);
CREATE TABLE J
(
JNO CHAR(4) PRIMARY KEY,
JNAME CHAR(40),
CITY CHAR(4),
);
CREATE TABLE SPJ
(
SNO CHAR(4),
PNO CHAR(4),
JNO CHAR(4),
QTY SMALLINT,
PRIMARY KEY (SNO,PNO,JNO),
FOREIGN KEY (SNO) REFERENCES S(SNO), /* 表级完整性约束条件,SNO是外码,被参照表是S*/
FOREIGN KEY (PNO)REFERENCES P(PNO), /* 表级完整性约束条件,CNO是外码,被参照表是C*/
FOREIGN KEY (JNO)REFERENCES J(JNO), /* 表级完整性约束条件,JNO是外码,被参照表是J*/
);
INSERT INTO S (SNO,SNAME,SStatus,CITY) VALUES ('S1','精益',20,'天津');
INSERT INTO S (SNO,SNAME,SStatus,CITY) VALUES ('S2','盛锡',10,'北京');
INSERT INTO S (SNO,SNAME,SStatus,CITY) VALUES ('S3','东方红',30,'北京');
INSERT INTO S (SNO,SNAME,SStatus,CITY) VALUES ('S4','丰泰盛',20,'天津');
INSERT INTO S (SNO,SNAME,SStatus,CITY) VALUES ('S5','为民',30,'上海');
SELECT * FROM S
INSERT INTO P(PNO,PNAME,COLOR,Wweight) VALUES ('P1','螺母','红',12);
INSERT INTO P(PNO,PNAME,COLOR,Wweight) VALUES ('P2','螺栓','绿',17);
INSERT INTO P(PNO,PNAME,COLOR,Wweight) VALUES ('P3','螺丝刀','蓝',14);
INSERT INTO P(PNO,PNAME,COLOR,Wweight) VALUES ('P4','螺丝刀','红',14);
INSERT INTO P(PNO,PNAME,COLOR,Wweight) VALUES ('P5','凸轮','蓝',40);
INSERT INTO P(PNO,PNAME,COLOR,Wweight) VALUES ('P6','齿轮','红',30);
SELECT * FROM P
INSERT INTO J(JNO,JNAME,CITY) VALUES ('J1','三建','北京');
INSERT INTO J(JNO,JNAME,CITY) VALUES ('J2','一汽','长春');
INSERT INTO J(JNO,JNAME,CITY) VALUES ('J3','弹簧厂','天津');
INSERT INTO J(JNO,JNAME,CITY) VALUES ('J4','造船厂','天津');
INSERT INTO J(JNO,JNAME,CITY) VALUES ('J5','机车厂','唐山');
INSERT INTO J(JNO,JNAME,CITY) VALUES ('J6','无线电厂','常州');
INSERT INTO J(JNO,JNAME,CITY) VALUES ('J7','半导体厂','南京');
SELECT * FROM J
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES ('S1','P1','J1',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES ('S1','P1','J3',100);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES ('S1','P1','J4',700);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES ('S1','P2','J2',100);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES ('S2','P3','J1',400);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES ('S2','P3','J2',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES ('S2','P3','J4',500);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES ('S2','P3','J5',400);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES ('S2','P5','J1',400);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES ('S2','P5','J2',100);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES ('S3','P1','J1',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES ('S3','P3','J1',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES ('S4','P5','J1',100);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES ('S4','P6','J3',300);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES ('S4','P6','J4',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES ('S5','P2','J4',100);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES ('S5','P3','J1',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES ('S5','P6','J2',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES ('S5','P6','J4',500);
SELECT * FROM SPJ
习题6的查询:
(1)求供应工程J1零件的供应商号码SNO
SELECT SNO
FROM SPJ
WHERE JNO='J1'
(2)求供应工程J1零件P1的供应商号码SNO
SELECT SNO
FROM SPJ
WHERE JNO='J1' AND PNO='P1'
(3)求供应工程J1零件为红色的供应商号码为SNO
SELECT SNO
FROM SPJ
WHERE JNO='J1' AND PNO IN
(SELECT PNO
FROM P
WHERE COLOR='红'
)
(4)求没有使用天津供应商生产的红色零件的工程号JNO
SELECT DISTINCT JNO
FROM SPJ
WHERE PNO NOT IN
(SELECT PNO
FROM P
WHERE COLOR='红'
)
AND SNO NOT IN(
SELECT SNO
FROM S
WHERE CITY='天津'
)
(5)求至少使用了供应商S1所供应的全部零件的工程号JNO
SELECT DISTINCT JNO
FROM SPJ
WHERE PNO >=ALL
(SELECT PNO
FROM SPJ
WHERE SNO='S1'
)
5、
(1)找出所有供应商的姓名和所在的城市
SELECT SNAME,CITY
FROM S
(2)找出所有零件的名称、颜色、重量
SELECT PNAME,COLOR,Wweight
FROM P
(3)找出使用供应商S1所提供的零件的工程号码
SELECT JNO
FROM SPJ
WHERE SNO='S1'
(4)找出工程项目J2使用的各种零件的名称及其数量
SELECT QTY,PNAME
FROM SPJ,P
WHERE JNO='J2' AND SPJ.PNO=P.PNO
(5)找出上海厂商供应的所有零件号码
SELECT PNO
FROM S,SPJ
WHERE S.SNO=SPJ.SNO AND S.CITY='上海'
(6)找出使用上海产的零件的工程名称
SELECT JNO
FROM S,SPJ
WHERE S.SNO=SPJ.SNO AND S.CITY='上海'
(7)找出没有使用天津产的零件的工程号码
SELECT DISTINCT JNO
FROM S,SPJ
WHERE S.SNO=SPJ.SNO AND S.CITY!='天津'
(8)把全部红色零件的颜色改成蓝色
UPDATE P
SET COLOR='蓝'
WHERE COLOR='红'
SELECT *
FROM P
(9)由S5供给J4的零件P6改为由S3供应,请做必要的修改
UPDATE SPJ
SET SNO='S3'
WHERE SNO='S5' AND JNO='J4' AND PNO='P6'
SELECT SNO,JNO,PNO
FROM SPJ
WHERE SNO='S3' AND JNO='J4' AND PNO='P6'
(10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录
DELETE
FROM SPJ
WHERE SNO='S2'
DELETE
FROM S
WHERE SNO='S2'
要按照顺序来,先删除SPJ的S2记录,再删除S的S2记录,否则会报错
(11)请将(S2,J6,P4,200)插入供应情况关系
INSERT
INTO S(SNO,SNAME,Sstatus,CITY)
VALUES('S2','盛锡',10,'北京')
INSERT
INTO SPJ(SNO,JNO,PNO,QTY)
VALUES('S2','J6','P4',200)
SELECT *
FROM SPJ
在进行操作之前应该要先恢复S表中S2的数据