数据库习题答案.ppt
数据库管理系统设有一个SPJ数据库,包括S、P、J、SPJ四个关系模式S(SNO,SNAME,STATUS,CITY):P(PNO,PNAME,COLOR,WEIGHT):J(JNO,JNAME,CITY);SPJ(SNO,PNO,JNO,QTY);供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商所在城市(CITY)组成;零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成:01工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项J所在城,(CITY)组成:02供应情况表SPJ供应南代码(SNO)、零件代码(PNO)、工程顶目代码(JNO),供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。031、用SQL语句建立这四个表。CREATETABLES(snoCHAR(4)NOTNULLUNIQUE,snameCHAR(20),statusINT,cityCHAR(10));CREATETABLEp(pnoCHAR(4)NOTNULLUNIQUE,pnameCHAR(20),colorCHAR(4),weightINT);CREATETABLEj(jnoCHAR(4)NOTNULLUNIQUE,jnameCHAR(20),cityCHAR(20));CREATETABLEspj(snoCHAR(4)NOTNULL,pnoCHAR(4)NOTNULL,jnoCHAR(4)NOTNULL,qtyINT);CREATECLUSTERINDEXSPJ_INDEXONSPJ(sno,pno,jno);2、针对以上四个表用SQL语句完成以下操作找出所有供应商的姓名和所在城市。SELECTsNAME,cityFROMs;找出所有零件的名称、颜色、重量。SELECTpname,color,weightFROMp;找出使用供应商S1所供应零件的工程号码。SELETEDISTINCTjnoFROMspjWHEREsno=‘S1’;找出工程项目J2使用的各种零件的名称及其数量qtySELECTp.pname,Sum(qty)TotqtyFROMp,spjWHEREp.pno=spj.pno ANDspj.jno=‘J2’GroupBYPNAME;找出上海厂商供应的所有零件号码。SELECTpnoFROMspjWHEREsnoIN(SELECTsnoFROMsWHEREcity=‘上海’);找出使用上海产的零件的工程名称。SELECTDISTINCT(jname)FROMjWHEREjnoIN(SELECTjnoFROMspjWHEREsnoIN(SELECTsnoFROMsWHEREcity=”上海”));找出没有使用天津产的零件的工程号码。UPDATEpSETcolor=‘蓝’WHEREcolor=‘红’;把全部红色零件的颜色改成蓝色。UPDATEspjSETsno=”S1”WHEREsno=”S5”ANDjno=”J4”ANDpno=”P6”;由S5供给J4的零件P6改为由S1供应,请做必要的修改DELETEFROMsWHEREsno=”S2”;DELETEFROMspjWHEREsno=”s2”;从供应商关系中删除s2的记录,并从供应情况关系中删除相应的记录。请将(S2,J6,P4,200)插入供应情况关系。INSERTINTOspj VALUES(“S2”,”J6”,”P4”,200);统计各个供应商供应的零件总数。SELECTSUM(qty)FROMspjGROUPBYsno;查询总供应量在600以上的供应商的姓名、供应商编号、总供应数量。SELECTs.sname,spj.sno,SUM(spj.qty)FROMspj,sWHEREs.sno=spj.snoGROUPBYsnoHAVINGSUM(spj.qty)600;数据库管理系统