µÚ 10 Ò³
SET GRADE=GRADE*1.04
WHERE C#=¡¯4¡¯AND GRADE>75; UPDATE SC
SET GRADE=GRADE*1.05
WHERE C#=¡¯4¡¯AND GRADE<=75;
×¢Ò⣺ÕâÁ½¸öUPDATEÓï¾äµÄ˳Ðò²»Äܵߵ¹¡£
4-5 ¼ÙÉèij¡°²Ö¿â¹ÜÀí¡±¹ØÏµÄ£ÐÍÓÐÏÂÁÐÎå¸ö¹ØÏµÄ£Ê½£º Áã¼þPART(PNO,PNAME,COLOR,WEIGHT) ÏîÄ¿PROJECT(JNO,JNAME,JDATE)
¹©Ó¦ÉÌSUPPLIER(SNO,SNAME,SADDR) ¹©Ó¦P_P(JNO,PNO,TOTAL)
²É¹ºP_S(PNO,SNO,QUANTITY)
¢Å ÊÔÓÃSQL DDLÓï¾ä¶¨ÒåÉÏÊöÎå¸ö»ù±¾±í£¬²¢ËµÃ÷Ö÷¼üºÍÍâ¼ü¡£
¢Æ ÊÔ½«PROJECT¡¢P_P¡¢PARTÈý¸ö»ù±¾±íµÄ×ÔÈ»Áª½Ó¶¨ÒåΪһ¸öÊÓͼVIEW1£¬ PART¡¢P_S¡¢SUPPLIERÈý¸ö»ù±¾±íµÄ×ÔÈ»Áª½Ó¶¨ÒåΪһ¸öÊÓͼVIEW2¡£ ¢Ç ÊÔÔÚÉÏÊöÁ½¸öÊÓͼµÄ»ù´¡ÉϽøÐÐÊý¾Ý²éѯ£º ¢Ù ¼ìË÷ÉϺ£µÄ¹©Ó¦ÉÌËù¹©Ó¦µÄÁã¼þµÄ±àºÅºÍÃû×Ö¡£
¢Ú ¼ìË÷ÏîÄ¿J4ËùÓÃÁã¼þµÄ¹©Ó¦É̱àºÅºÍÃû×Ö¡£ ½â£º
¢Å CREATE TABLE PART
(PNO CHAR(6),PNAME CHAR(10) NOT NULL,COLOR CHAR(6),WEIGHT FLOAT(6),PRIMARY KEY(PNO));
CREATE TABLE PROJECT
(JNO CHAR(6),JNAME CHAR(12)NOT NULL,DATE DATE,PRIMARY KEY(JNO)); CREATE TABLE SUPPLIER
(SNO CHAR(8),SNAME CHAR(12)NOT NULL,SADDR VARCHAR(30),PRIMARY KEY(SNO));
CREATE TABLE P_P
(JNO CHAR(6),PNO CHAR(6),TOTAL INTEGER,PRIMARY KEY(JNO,PNO); FOREIGN KEY(JNO) REFERENCES PROJECT(JNO), FOREIGN KEY(PNO) REFERENCES PART(PNO)); CREATE TABLE P_S
(PNO CHAR(6),SNO CHAR(8),QUANTITY INTEGER,PRIMARY KEY(PNO,SNO) FOREIGN KEY(PNO) REFERENCES PART(PNO),
FOREIGN KEY(SNO) REFERENCES SUPPLIER(SNO));
¢Æ CREATE VIEW VIEWl
AS SELECT A.JNO,JNAME,DATE,C.PNO,PNAME,COLOR,WEIGHT,TOTAL FROM PROJECT A,P_P B£¬PART C
WHERE A.JNO=B.JNO AND B.PNO=C.PNO; CREATE VIEW VIEW2
AS SELECT A.PNO,PNAME,COLOR,WEIGHT,C.SNO,SNAME,SADDR,QUANTITY FROM PART A,P_S B,SUPPLIER C
WHERE A.PNO=B.PNO AND B.SNO=C.SNO; ¢Ç¢Ù
µÚ 11 Ò³
SELECT PNO,PNAME FROM VIEW2
WHERE SADDR LIKE ¡¯ÉϺ££¥¡¯; ¢Ú SELECT SNO,SNAME FROM VIEWl,VIEW2
WHERE VIEWl.PNO=VIEW2.PNO AND JNO=¡¯J4¡¯; 4-6 ¶ÔÓÚ½ÌÎñ¹ÜÀíÊý¾Ý¿âÖлù±¾±íSC£¬Òѽ¨Á¢ÏÂÁÐÊÓͼ£º CREATE VIEW S_GRADE(SNO,C_NUM,AVG_GRADE) AS SELECT SNO,COUNT(CNO),AVG(GRADE) FROM SC
GROUP BY SNO;
ÊÔÅжÏÏÂÁвéѯºÍ¸üÐÂÊÇ·ñÔÊÐíÖ´ÐС£ÈôÔÊÐí£¬Ð´³öת»»µ½»ù±¾±íSCÉϵÄÏàÓ¦²Ù ×÷£º ¢Å SELECT * FROM S_GRADE ¢Æ SELECT SNO,C_NUM FROM S_GRADE
WHERE AVG_GRADE>80; ¢Ç SELECT SNO,AVG_GRADE FROM S_GRADE
WHERE C_NUM>(SELECT C_NUM FROM S_GRADE
SNO=¡¯200912121¡¯); ¢È UPDATE S_GRADE SET C_NUM=C_NUM+1
WHERE SNO=¡¯200915122¡¯ ¢É DELETE FROM S_GRADE WHERE C_NUM>4;
´ð£º¢Å ÔÊÐí²éѯ¡£ÏàÓ¦µÄ²Ù×÷ÈçÏ£º
SELECT SNO,COUNT(CNO) AS C_NUM,AVG(GRADE) AS AVG_GRADE FROM SC
GROUP BY SNO;
¢Æ ÔÊÐí²éѯ¡£ÏàÓ¦µÄ²Ù×÷ÈçÏ£º
SELECT SNO,COUNT(CNO)AS C_NUM FROM SC
GROUP BY SNO
HAVING AVG(GRADE)>80;
¢Ç ÔÊÐí²éѯ¡£ÏàÓ¦µÄ²Ù×÷ÈçÏ£º
SELECT SNO,AVG(GRADE) AS AVG_GRADE FROM SC
GROUP BY SNO
HAVING COUNT(CNO)>(SELECT COUNT(CNO) FROM SC
GROUP BY SNO
HAVING SNO=¡¯200912121¡¯);
µÚ 12 Ò³