收藏 分享(赏)

SPJ数据库.doc

上传人:HR专家 文档编号:11561054 上传时间:2020-06-24 格式:DOC 页数:5 大小:49.50KB
下载 相关 举报
SPJ数据库.doc_第1页
第1页 / 共5页
SPJ数据库.doc_第2页
第2页 / 共5页
SPJ数据库.doc_第3页
第3页 / 共5页
SPJ数据库.doc_第4页
第4页 / 共5页
SPJ数据库.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式: 供应商S(SNO , SNAME , STATUS , CITY)零件P(PNO , PNAME , COLOR , WEIGHT)工程J(JNO , JNAME , CITY)SPJ(SNO , PNO , JNO , QTY)创建数据库:create database SPJ;创建表:CREATE TABLE S ( SNO char(2) primary key, SNAME varchar(20), STATUS char(4), CITY char(10);create table P ( PNO char(2) prima

2、ry key, PNAME varchar(20), COLOR char(4), WEIGHT int);create table J ( JNO char(2) primary key, JNAME varchar(20), CITY char(10);create table SPJ ( SNO char(2), PNO char(2), JNO char(2), QTY int, primary key(SNO,PNO,JNO), foreign key(SNO) references S(SNO) on delete cascade, foreign key(PNO) referen

3、ces P(PNO) on delete cascade, foreign key(JNO) references J(JNO) on delete cascade );插入数据:insert into S values(S1,供应商一,良好,郑州);insert into S values(S2,供应商二,良好,天津);insert into S values(S3,供应商三,良好,上海);insert into S values(S4,供应商四,优秀,郑州);insert into P values(P1,管材,红色,20);insert into P values(P2,管线,绿色,30

4、);insert into P values(P3,螺帽,红色,10);insert into P values(P4,螺帽,黄色,10);insert into J values(J1,一建工程,郑州);insert into J values(J2,二建工程,郑州);insert into J values(J3,三建工程,天津);insert into J values(J4,四建工程,天津);insert into J values(J5,五建工程,上海);insert into J values(J6,六建工程,北京);insert into SPJ values(S1,P1,J1,

5、100);insert into SPJ values(S1,P2,J1,100);insert into SPJ values(S2,P1,J1,100);insert into SPJ values(S2,P2,J1,100);insert into SPJ values(S1,P1,J3,100);insert into SPJ values(S1,P2,J3,100);insert into SPJ values(S2,P1,J3,100);insert into SPJ values(S2,P2,J3,100);insert into SPJ values(S3,P1,J2,100)

6、;insert into SPJ values(S3,P2,J2,100);insert into SPJ values(S4,P3,J2,100);1)求供应工程J1零件的供应商号码SNO: select distinct SNOfrom SPJwhere JNO=J1;2)求供应工程J1零件P1的供应商号码SNO: select SNOfrom SPJwhere JNO=J1 and PNO=P1;3)求供应工程J1红色零件的供应商号码SNO: select SNOfrom SPJ,Pwhere SPJ.PNO=P.PNO and JNO=J1 and P.COLOR=红色;或者SELEC

7、T SNO /*这是嵌套查询*/FROM SPJWHERE JNO=J1 AND PNO IN /*找出红色零件的零件号码PNO */ (SELECT PNO FROM P /*从P表中找*/ WHERE COLOR =红色);4)求没有使用天津供应商生产的红色零件的工程号JNO select distinct JNOfrom Jwhere JNO NOT IN ( select JNO from SPJ,P,S where SPJ.SNO=S.SNO and SPJ.PNO=P.PNO and P.COLOR=红色 and S.CITY=天津 );或者:SELECT JNOFROM JWHE

8、RE NOT EXISTS(SELECT 1 FROM SPJ WHERE SPJ.JNO=J.JNO AND SNO IN /*天津供应商的SNO*/(SELECT SNO FROM S WHERE CITY=天津) AND PNO IN /*红色零件的PNO*/(SELECT PNO FROM P WHERE COLOR=红色);5)求至少用了供应商S1所供应的全部零件的工程号JNO 要求这样的工程x,使( y)pq为真。即,对于所有的零件y,满足逻辑蕴涵pq:p表示谓词供应商S1供应了零件y;q表示谓词工程 x选用了零件y。即,只要供应商S1供应了零件y为真,则工程x选用了零件y 为真。

9、逻辑蕴涵可以转换为等价形式: y(pq)它所表达的语义为:不存在这样的零件y,供应商S1供应了y,而工程x没有选用y。SELECT DISTINCT JNOFROM SPJ AS SPJ1WHERE NOT EXISTS /*这是一个相关子查询*/ (SELECT 1 /*父查询和子查询均引用了SPJ表*/ FROM SPJ AS SPJ3 /*用别名将父查询与子查询中的SPJ表区分开*/ WHERE SNO=S1 AND NOT EXISTS(SELECT 1 FROM SPJ AS SPJ2 WHERE SPJ2.PNO=SPJ3.PNO AND SPJ2.JNO=SPJ1.JNO);执行

10、下面操作: (1) 把全部红色零件的颜色改成蓝色。UPDATE PSET COLOR=红色WHERE COLOR=蓝色;(2) 从供应商关系中删除供应商号是S2的记录,并从供应情况关系中删除相应的记录。 DELETEFROM SPJWHERE SNO=S2; DELETEFROM SWHERE SNO=S2;注意删除顺序,应该先从sn表中删除供应商S2所供应零件的记录,然后从S表中删除S2。(3) 请将(S2,J6,P4,200)插入供应情况关系。 INSERT INTO SPJ(SNO,JNO,PNO,QTY) VALUES(S2,J6,P4,200);或INSERT INTO SPJ VA

11、LUES(S2,P4,J6,200);-补充查询:(1) 找出所有供应商的姓名和所在城市SELECT SNAME,CITYFROM S;(2) 找出所有零件的名称、颜色、重量SELECT PNAME,COLOR,WEIGHTFROM P;(3) 找出使用供应商S1所供应零件的工程号码SELECT JNOFROM SPJWHERE SNO=S1;(4) 找出工程项目J2使用的各种零件的名称及其数量。SELECT P.PNAME,SPJ.QTYFROM P,SPJWHERE P.PNO=SPJ.PNO AND SPJ.JNO=J2;(5) 找出上海厂商供应的所有零件号码。SELECT DISTIN

12、CT PNOFROM SPJWHERE SNO IN (SELECT SNO FROM S WHERE CITY=上海);(6) 找出使用上海产的零件的工程名称。SELECT distinct JNAMEFROM J,SPJ,SWHERE J.JNO=SPJ.JNO AND SPJ.SNO=S.SNO AND S.CITY=上海;或SELECT JNAMEFROM JWHERE JNO IN (SELECT JNO FROM SPJ,S WHERE SPJ.SNO=S.SNO AND S.CITY=上海);(7) 找出没有使用天津产的零件的工程号码。SELECT JNOFROM JWHERE

13、NOT EXISTS(SELECT 1 FROM SPJ WHERE SPJ.JNO=J.JNO AND SNO IN(SELECT SNO FROM S WHERE CITY=天津);或SELECT JNOFROM JWHERE NOT EXISTS (SELECT 1 FROM SPJ,S WHERE SPJ.JNO=J.JNO AND SPJ.SNO=S.SNO AND S.CITY=天津);补充修改:由S4供给J4的零件P4改为由S3供应,请做必要的修改。insert into SPJ values(S4,P4,J4,200);UPDATE SPJSET SNO=S3WHERE SNO

14、=S4 AND JNO=J4 AND PNO=P4;补充删除:从供应商关系中删除S4的记录,并从供应情况关系中删除相应的记录。DELETEFROM SPJWHERE SNO=S4; DELETEFROM SWHERE SNO=S4;-建立视图:为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。 CREATE VIEW V_SPJ ASSELECT SNO,PNO,QTYFROM SPJWHERE JNO=(SELECT JNO FROM J WHERE JNAME=三建工程);针对该视图VSP完成下列查询:(1) 找出三建工程项目使用的各种零件代码及其数量。SELECT PNO,QTYFROM V_SPJ; (2) 找出供应商S1的供应情况。 SELECT PNO,QTYFROM V_SPJWHERE SNO=S1;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 计算机原理

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报