S,P,J,SPJ
设有四个关系(只示意性给出一条记录):
S(SNO,SNAME, ADDRESS,TEL)其中,SNO:供应商代码 SNAME:姓名 ADDRESS:地址 TEL:电话;
J(JNO,JNAME,LEADER,BG)其中,JNO:工程代码 JNAME:工程名 LEADER:负责人 BG:预算;
P(PNO,PNAME,SPEC,CITY,COLOR)其中,PNO:零件代码 PNAME:零件名 SPEC:规格 CITY:产地 COLOR:颜色;
SPJ(SNO,PNO,JNO, QTY)其中,SNO:供应商代码 JNO:工程代码 PNO:零件代码 QTY:数量;
1.请将上述的“零件”P和“供应零件”SPJ关系的连接定义一个视图P_SPJ_VIEW,要求包含P零件所有信息以及供应信息
CREATE VIEW P_SPJ_VIEW
AS
SELECT P.PNO,PNAME,SPEC,CITY,COLOR,SNO,JNO,QTY
FROM P,SPJ
WHERE P.PNO = SPJ.PNO
2.已经对“零件”和“供应零件”关系的连接定义一个视图P_SPJ_VIEW,该视图能显示完整零件信息和供应零件情况,请在这个视图的基础上完成下列查询:找出工程代码为J2的工程使用的所有零件名称、数量
SELECT PNAME,QTY
FROM P_SPJ_VIEW
WHERE JNO = 'J2'
3.已经对“零件”和“供应零件”关系的连接定义一个视图P_SPJ_VIEW,该视图能显示完整零件信息和供应零件情况,请在这个视图的基础上完成下列查询:找出使用上海产的零件的工程号
SELECT DISTINCT JNO --一个工程对应多个零件,因此需加上DISTINCT
FROM P_SPJ_VIEW
WHERE CITY='上海'
PAPER,CUSTOMER,CP
已有订报管理子系统的数据库DingBao,在DingBao数据库中有如下三表的表结构(表的定义):
CREATE TABLE PAPER
(
pno CHAR(6) NOT NULL PRIMARY KEY,
pna NVARCHAR(5) NOT NULL,
ppr money --或者decimal(4,1)
);
CREATE TABLE CUSTOMER
(
cno CHAR(8) NOT NULL PRIMARY KEY,
cna NVARCHAR(4) NOT NULL,
adr VARCHAR(30)
);
CREATE TABLE CP
(
cno CHAR(8) NOT NULL,
pno CHAR(6) NOT NULL,
num SMALLINT DEFAULT 1,
CONSTRAINT KEY_cp PRIMARY KEY(cno,pno),
CONSTRAINT FK_cno FOREIGN KEY(cno) REFERENCES CUSTOMER(cno),
CONSTRAINT FK_pno FOREIGN KEY(pno) REFERENCES PAPER(pno)
);
4.现要求在上述DingBao数据库中,创建含有顾客编号、顾客名称、报纸编号、报纸名称、订阅份数等信息的视图,视图名设定为C_P_N
CREATE VIEW C_P_N
AS
SELECT CUSTOMER.cno,CUSTOMER.cna,PAPER.pno,PAPER.pna,num
FROM PAPER,CUSTOMER,CP
WHERE PAPER.pno = CP.pno AND CUSTOMER.cno = CP.cno
5.在上述DingBao数据库中,目前已经创建含有顾客编号、顾客名称、报纸编号、报纸名称、订阅份数等信息的视图C_P_N。现要求在通过视图C_P_N,查询“人民日报”被订阅的情况(顾客编号、顾客名称、订阅份数)
SELECT cno,cna,num
FROM C_P_N
WHERE pna = '人民日报'
6.在上述DingBao数据库中,目前已经创建含有顾客编号、顾客名称、报纸编号、报纸名称、订阅份数等信息的视图C_P_N。现要求在通过视图C_P_N,更新“李涛”顾客订阅“人民日报”的订阅份数为10,请通过验证,确认是否可以更新
UPDATE C_P_N
SET num = 10
WHERE cna='李涛' AND pna='人民日报'
本文到此就结束了,如有错误欢迎指出