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);供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商所在城市(CITY)组成;,零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成:工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项J所在城,(CITY)组成:供应情况表SPJ供应南代码(SNO)、零件代码(PNO)、工程顶目代码
2、(JNO),供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。,1、用SQL语句建立这四个表。CREATE TABLE S(sno CHAR(4)NOT NULL UNIQUE,sname CHAR(20),status INT,city CHAR(10);CREATE TABLE p(pno CHAR(4)NOT NULL UNIQUE,pname CHAR(20),color CHAR(4),weight INT);,CREATE TABLE j(jno CHAR(4)NOT NULL UNIQUE,jname CHAR(20),city CHAR(20);CRE
3、ATE TABLE spj(sno CHAR(4)NOT NULL,pno CHAR(4)NOT NULL,jno CHAR(4)NOT NULL,qty INT);CREATE CLUSTER INDEX SPJ_INDEX ON SPJ(sno,pno,jno);,2、针对以上四个表用SQL语句完成以下操作找出所有供应商的姓名和所在城市。SELECT sNAME,city FROM s;找出所有零件的名称、颜色、重量。SELECT pname,color,weight FROM p;找出使用供应商S1所供应零件的工程号码。SELETE DISTINCT jno FROM spj WHERE
4、 sno=S1;找出工程项目J2使用的各种零件的名称及其数量qtySELECT p.pname,Sum(qty)Totqty FROM p,spjWHERE p.pno=spj.pnoAND spj.jno=J2 Group BY PNAME;,找出上海厂商供应的所有零件号码。SELECT pno FROM spjWHERE sno IN(SELECT sno FROM s WHERE city=上海);找出使用上海产的零件的工程名称。SELECT DISTINCT(jname)FROM jWHERE jno IN(SELECT jno FROM spj WHERE sno IN(SELECT
5、 sno FROM s WHERE city=”上海”);找出没有使用天津产的零件的工程号码。,把全部红色零件的颜色改成蓝色。UPDATE p SET color=蓝 WHERE color=红;由S5供给J4的零件P6改为由S1供应,请做必要的修改UPDATE spj SET sno=”S1”WHERE sno=”S5”AND jno=”J4”AND pno=”P6”;从供应商关系中删除s2的记录,并从供应情况关系中删除相应的记录。DELETE FROM s WHERE sno=”S2”;DELETE FROM spj WHERE sno=”s2”;,请将(S2,J6,P4,200)插入供应
6、情况关系。INSERT INTO spj VALUES(“S2”,”J6”,”P4”,200);统计各个供应商供应的零件总数。SELECT SUM(qty)FROM spj GROUP BY sno;查询总供应量在600以上的供应商的姓名、供应商编号、总供应数量。SELECT s.sname,spj.sno,SUM(spj.qty)FROM spj,sWHERE s.sno=spj.snoGROUP BY sno HAVING SUM(spj.qty)600;,3、请为三建工程项目建立一个供应情况的视图,包括供应两代码(SNO)、零件代码(PNO)、供应数量(QTY)。针对该视图完成下列查询:
7、CREATE VIEW VSP AS SELECT SNO,PNO,QTY FROM SPJ,J WHERE SPJ.JNO=J.JNO AND J.JNAME=三 建;找出三建工程项目使用的各种零件代码及其数量SELECT DIST PNO,QTY FROM VSP;找出供应商S1的供应情况。SELECT DIST*FROM VSP WHERE SNO=S1;,4、针以上表,用SQL语言完成以下各项操作:把对表S的INSERT权限授予用户张勇,并允许他再将此权限授予其他用户。GRANT INSERT ON TABLE s TO张勇 WITH GRANT OPTION;把查询SPJ表和修改QTY属性的权限授予用户李天明。GRANT UPDATE(qty),SELECT ON TABLE spj TO李天明;,