Êý¾Ý¿âϵͳԭÀí¿Îºó´ð°¸ - ͼÎÄ ÏÂÔØ±¾ÎÄ

{t|(u)(v)(SC(u)¡ÄSC(v)¡Äu[1]=v[1]¡Äu[2]¡Ùv[2])¡Ät[1]=u[1]} (7)¼ìË÷È«²¿Ñ§Éú¶¼Ñ¡Ð޵Ŀγ̵Ŀγ̺ÅÓë¿Î³ÌÃû¡£

¦ÐC#,CNAME(C(¦ÐS#,C#(SC)¡Â¦ÐS#(S))) (Éæ¼°µ½È«²¿ÖµÊ±£¬Ó¦Óóý·¨£¬¡°³ýÊý¡±ÊÇ\È«²¿\

{t|(u)(v)(w)(S(u)¡ÄSC(v)¡ÄC(w)¡Äu[1]=v[1]¡Äv[2]=w[1]¡Ät[1]=v[1]¡Ät[2]=V[2])} (8)¼ìË÷Ñ¡Ð޿γ̰üº¬LIUÀÏʦËùÊڿγ̵ÄѧÉúѧºÅ¡£ ¦ÐS#(¦ÒTEACHER='LIU'(SCC))

{t|(u)(v)(SC(u)¡ÄC(v)¡Äu[2]=v[1]¡Äv[3]='LIU'¡Ät[1]=u[1])}

Èç¹ûLIUÀÏʦÓжàÃſγ̣¬ÔòÑ¡Ð޿γ̰üº¬LIUÀÏʦËùÊÚÈ«²¿¿Î³ÌµÄѧÉúѧºÅΪ£º ¦ÐS#,C#(SC)¡Â¦ÐC#(¦ÒTEACHER='LIU'(C)) 4.15

(1)¦ÐCNAME,TEACHER(¦ÒSEX='Å®'(SSCC))

(2)ÓÅ»¯Îª£º¦ÐCNAME£¬TEACHER(C¦ÐC#(¦ÐS#,C#(SC)¦ÐS#(¦ÒSEX='Å®'(S))))

(»ù±¾Ë¼Â·£º¾¡Á¿Ìáǰ×öÑ¡Ôñ²Ù×÷£»ÔÚÿ¸ö²Ù×÷ºó£¬Ó¦×ö¸öͶӰ²Ù×÷£¬È¥µô²»ÓõÄÊôÐÔÖµ¡£ 4.16

¸Ã²éѯ³õʼµÄ¹ØÏµ´úÊý±í´ïʽµÄÓï·¨Ê÷ ÓÅ»¯ºóµÄÓï·¨Ê÷

4.17 ΪʲôҪ¶Ô¹ØÏµ´úÊý±í´ïʽ½øÐÐÓÅ»¯?

ÔÚ¹ØÏµ´úÊýÔËËãÖУ¬¸÷¸öÔËËãËù·Ñʱ¼äºÍ¿Õ¼äÊDz»Ò»ÑùµÄ¡£ÈçºÎ°²ÅÅÈô¸É¹ØÏµµÄÔËËã²Ù×÷²½Ö裬 Ö±½ÓÓ°Ïìµ½Õû¸ö²Ù×÷ËùÐèÒªµÄʱ¼äºÍ¿Õ¼ä¡£¶Ô¹ØÏµ´úÊý±í´ïʽ½øÐÐÓÅ»¯£¬ ¿ÉÒÔÌá¸ßϵͳµÄ²Ù×÷ЧÂÊ£¬´ïµ½Ö´Ðйý³Ì¼´Ê¡Ê±¼äÓÖÊ¡¿Õ¼äµÄÄ¿µÄ¡£

×Ô¿¼Êý¾Ý¿âϵͳԭÀí µÚÎåÕ SQLÓïÑÔ ¿ÎºóϰÌâ´ð°¸ 5.1 Ãû´Ê½âÊÍ

(1)SQLģʽ£ºSQLģʽÊDZíºÍÊÚȨµÄ¾²Ì¬¶¨Òå¡£Ò»¸öSQLģʽ¶¨ÒåΪ»ù±¾±íµÄ¼¯ºÏ¡£ Ò»¸öÓÉģʽÃûºÍģʽӵÓÐÕßµÄÓû§Ãû»òÕ˺ÅÀ´È·¶¨,²¢°üº¬Ä£Ê½ÖÐÿһ¸öÔªËØ(»ù±¾±í¡¢ÊÓͼ¡¢Ë÷ÒýµÈ)µÄ¶¨Òå¡£

(2)SQLÊý¾Ý¿â£ºSQL(Structured Query Language)£¬¼´¡®½á¹¹Ê½²éѯÓïÑÔ¡¯£¬²ÉÓÃÓ¢Óïµ¥´Ê±íʾºÍ½á¹¹Ê½µÄÓï·¨¹æÔò¡£ Ò»¸öSQLÊý¾Ý¿âÊDZíµÄ»ã¼¯£¬ËüÓÃÒ»¸ö»ò¶à¸öSQLģʽ¶¨Òå¡£ (3)»ù±¾±í£ºÔÚSQLÖУ¬°Ñ´«Í³µÄ¹ØÏµÄ£ÐÍÖеĹØÏµÄ£Ê½³ÆÎª»ù±¾±í(Base Table)¡£ »ù±¾±íÊÇʵ¼Ê´æ´¢ÔÚÊý¾Ý¿âÖÐµÄ±í£¬¶ÔÓ¦Ò»¸ö¹ØÏµ¡£

(4)´æ´¢Îļþ£ºÔÚSQLÖУ¬°Ñ´«Í³µÄ¹ØÏµÄ£ÐÍÖеĴ洢ģʽ³ÆÎª´æ´¢Îļþ(Stored File)¡£ ÿ¸ö´æ´¢ÎļþÓëÍⲿ´æ´¢Æ÷ÉÏÒ»¸öÎïÀíÎļþ¶ÔÓ¦¡£

(5)ÊÓͼ£ºÔÚSQLÖУ¬°Ñ´«Í³µÄ¹ØÏµÄ£ÐÍÖеÄ×Óģʽ³ÆÎªÊÓͼ(View)£¬ÊÓͼÊÇ´ÓÈô¸É»ù±¾±íºÍ£¨»ò£©ÆäËûÊÓͼ¹¹Ôì³öÀ´µÄ±í¡£

(6)ÐУºÔÚSQLÖУ¬°Ñ´«Í³µÄ¹ØÏµÄ£ÐÍÖеÄÔª×é³ÆÎªÐÐ(row)¡£ (7)ÁУºÔÚSQLÖУ¬°Ñ´«Í³µÄ¹ØÏµÄ£ÐÍÖеÄÊôÐÔ³ÆÎªÁÐ(coloumn)¡£ (8)ʵ±í£º»ù±¾±í±»³ÆÎª¡°Êµ±í¡±£¬ËüÊÇʵ¼Ê´æ·ÅÔÚÊý¾Ý¿âÖÐµÄ±í¡£

(9)Ðé±í£ºÊÓͼ±»³ÆÎª¡°Ðé±í¡±£¬´´½¨Ò»¸öÊÓͼʱ£¬Ö»°ÑÊÓͼµÄ¶¨Òå´æ´¢ÔÚÊý¾Ý´ÊµäÖУ¬¶ø²»´æ´¢ÊÓͼËù¶ÔÓ¦µÄÊý¾Ý¡£

(10)Ïà¹Ø×Ó²éѯ£ºÔÚǶÌײéѯÖгöÏֵķûºÏÒÔÏÂÌØÕ÷µÄ×Ó²éѯ£º×Ó²éѯÖвéѯÌõ¼þÒÀÀµÓÚÍâ²ã²éѯÖеÄij¸öÖµ£¬ ËùÒÔ×Ó²éѯµÄ´¦Àí²»Ö»Ò»´Î£¬Òª·´¸´ÇóÖµ£¬ÒÔ¹©Íâ²ã²éѯʹÓá£

(11)Áª½Ó²éѯ£º²éѯʱÏÈ¶Ô±í½øÐеѿ¨¶û»ý²Ù×÷£¬È»ºóÔÙ×öµÈÖµÁª½Ó¡¢Ñ¡Ôñ¡¢Í¶Ó°µÈ²Ù×÷¡£ Áª½Ó²éѯµÄЧÂʱÈǶÌײéѯµÍ¡£

(12)½»»¥Ê½SQL£ºÔÚÖն˽»»¥·½Ê½ÏÂʹÓõÄSQLÓïÑÔ³ÆÎª½»»¥Ê½SQL¡£

(13)ǶÈëʽSQL£ºÇ¶ÈëÔڸ߼¶ÓïÑԵijÌÐòÖÐʹÓõÄSQLÓïÑÔ³ÆÎªÇ¶ÈëʽSQL¡£

(14)¹²Ïí±äÁ¿£ºSQLºÍËÞÖ÷ÓïÑԵĽӿڡ£¹²Ïí±äÁ¿ÓÐËÞÖ÷ÓïÑÔ³ÌÐò¶¨Ò壬ÔÙÓÃSQLµÄDECLAREÓï¾ä˵Ã÷£¬ SQLÓï¾ä¾Í¿ÉÒýÓÃÕâЩ±äÁ¿´«µÝÊý¾Ý¿âÐÅÏ¢¡£

(15)Óα꣺ÓαêÊÇÓëijһ²éѯ½á¹ûÏàÁªÏµµÄ·ûºÅÃû£¬ÓÃÓڰѼ¯ºÏ²Ù×÷ת»»³Éµ¥¼Ç¼´¦Àí·½Ê½¡£

(16)¾íÓα꣺ΪÁ˿˷þÓαêÔÚÍÆ½øÊ±²»ÄÜ·µ»ØµÄ²»±ã£¬SQL2ÌṩÁ˾íÓα꼼Êõ¡£ ¾íÓαêÔÚÍÆ½øÊ±²»µ«ÄÜÑØ²éѯ½á¹ûÖÐÔª×é˳Ðò´ÓÍ·µ½Î²Ò»ÐÐÐÐÍÆ½ø£¬Ò²ÄÜÒ»ÐÐÐзµ»Ø¡£ 5.2 ¶ÔÓÚ½ÌѧÊý¾Ý¿âµÄÈý¸ö»ù±¾±í ѧÉú S(S#,SNAME,AGE,SEX) ѧϰ SC(S#,C#,GRADE) ¿Î³Ì C(C#,CNAME,TEACHER)

ÊÔÓÃSQLµÄ²éѯÓï¾ä±í´ïÏÂÁвéѯ£º £¨1£©¼ìË÷LIUÀÏʦËùÊڿγ̵Ŀγ̺źͿγÌÃû¡£ SELECT C#£¬CNAME FROM C

WHERE TEACHER=¡®LIU¡¯

£¨2£©¼ìË÷ÄêÁä´óÓÚ23ËêµÄÄÐѧÉúµÄѧºÅºÍÐÕÃû¡£ SELECT S#£¬SNAME FROM S

WHERE (AGE>23) AND (SEX=¡®M¡¯)

£¨3£©¼ìË÷ÖÁÉÙÑ¡ÐÞLIUÀÏʦËùÊڿγÌÖÐÒ»Ãſγ̵ÄŮѧÉúÐÕÃû¡£ SELECT SNAME FROM S

WHERE SEX=¡®F¡¯ AND S# IN (SELECT S# FROM SC WHERE C# IN (SELECT C# FROM C

WHERE TEACHER=¡®LIU¡¯)

NOTICE£ºÓжàÖÖд·¨£¬±ÈÈçÁª½Ó²éѯд·¨£º SELECT SNAME FROM S,SC,C

WHERE SEX=¡®F¡¯ AND SC.S#=S.S# AND SC.C#=C.C#

AND TEACHER='LIU' µ«ÉÏÒ»ÖÖд·¨¸üºÃһЩ¡£

£¨4£©¼ìË÷WANGͬѧ²»Ñ§µÄ¿Î³ÌµÄ¿Î³ÌºÅ¡£ SELECT C# FROM C

WHERE C# NOT IN (SELECT C# FROM SC WHERE S# IN (SELECT S# FROM S

WHERE SNAME='WANG'))

£¨5£©¼ìË÷ÖÁÉÙÑ¡ÐÞÁ½Ãſγ̵ÄѧÉúѧºÅ¡£ SELECT DISTINCT X.SNO FROM SC X,SC Y

WHERE X.SNO=Y.SNO AND X.CNO<>Y.CNO

Notice:¶Ô±íSC½øÐÐ×ÔÁ¬½Ó£¬X£¬YÊÇSCµÄÁ½¸ö±ðÃû¡£ £¨6£©¼ìË÷È«²¿Ñ§Éú¶¼Ñ¡Ð޵Ŀγ̵Ŀγ̺ÅÓë¿Î³ÌÃû¡£ SELECT C#,CNAME FROM C

WHERE NOT EXISTS (SELECT * FROM S

WHERE S# NOT IN (SELECT * FROM SC

WHERE SC.C#=C.C#))

Òª´ÓÓïÒåÉϷֽ⣺£¨1£©Ñ¡Ôñ¿Î³ÌµÄ¿Î³ÌºÅÓë¿Î³ÌÃû£¬²»´æÔÚ²»Ñ¡ÕâÃſεÄͬѧ¡£ ÆäÖУ¬¡°²»Ñ¡ÕâÃſεÄͬѧ¡±¿ÉÒÔ±íʾΪ£º SELECT * FROM S

WHERE S# NOT IN £¨SELECT * FROM SC

WHERE SC.C#=C.C#)

»òÕßSELECT * FROM S

WHERE NOT EXISTS £¨SELECT * FROM SC

WHERE S.S#=C.S# AND SC.C#=C.C# )

£¨7£©¼ìË÷Ñ¡Ð޿γ̰üº¬LIUÀÏʦËùÊڿεÄѧÉúѧºÅ¡£ SELECT DISTINCT S# FROM SC WHERE C# IN (SELECT C# FROM C

WHERE TEACHER='LIU'))

5.3 ÉèÓÐÁ½¸ö»ù±¾±íR£¨A£¬B£¬C£©ºÍS£¨D£¬E£¬F£©£¬ÊÔÓÃSQL²éѯÓï¾ä±í´ïÏÂÁйØÏµ´úÊý±í´ïʽ£º £¨1£©¦ÐA(R) (2)¦ÒB='17'(R) (3)R¡ÁS (4))¦ÐA,F(¦ÒC=D(R¡ÁS)) (1)SELECT A FROM R

(2)SELECT * FROM R WHERE B='17' (3)SELECT A,B,C,D,E,F FROM R,S

(4)SELECT A,F FROM R,S WHERE R.C=S.D

5.4 3.4 ÉèÓÐÁ½¸ö»ù±¾±íR£¨A£¬B£¬C£©ºÍS£¨A£¬B£¬C£©ÊÔÓÃSQL²éѯÓï¾ä±í´ïÏÂÁйØÏµ´úÊý±í´ïʽ£º £¨1£©R¡ÈS £¨2£©R¡ÉS £¨3£©R£­S £¨4£©¦ÐA,B(R)¦ÐB,C(S) (1)SELECT A,B,C FROM R UNION

SELECT A,B,C FROM S

(2)SELECT A,B,C FROM R INTERSECT SELECT A,B,C FROM S

(3)SELECT A,B,C FROM R

WHERE NOT EXISTS (SELECT A,B,C FROM S

WHERE R.A=S.A AND R.B=S.B AND R.C=S.C) (4)SELECT R.A,R.B,S.C FROM R,S

WHERE R.B=S.B

5.5 ÊÔÐðÊöSQLÓïÑԵĹØÏµ´úÊýÌØµãºÍÔª×éÑÝËãÌØµã¡£ £¨P61-62£©

5.6 ÊÔÓÃSQL²éѯÓï¾ä±í´ïÏÂÁжԽÌѧÊý¾Ý¿âÖÐÈý¸ö»ù±¾±íS¡¢SC¡¢CµÄ²éѯ£º £¨1£©Í³¼ÆÓÐѧÉúÑ¡Ð޵ĿγÌÃÅÊý¡£

SELECT COUNT(DISTINCT C#) FROM SC £¨2£©ÇóÑ¡ÐÞC4¿Î³ÌµÄѧÉúµÄƽ¾ùÄêÁä¡£ SELECT AVG(AGE) FROM S

WHERE S# IN (SELECT S# FROM SC

WHERE C#='C4') »òÕߣ¬ SELECT AVG(AGE) FROM S£¬SC

WHERE S.S#=SC.S# AND C#='004'

£¨3£©ÇóLIUÀÏʦËùÊڿγ̵ÄÿÃſγ̵ÄѧÉúƽ¾ù³É¼¨¡£ SELECT CNAME,AVG(GRADE) FROM SC ,C

WHERE SC.C#=C.C# AND TEACHER='LIU' GROUP BY C#

£¨4£©Í³¼ÆÃ¿Ãſγ̵ÄѧÉúÑ¡ÐÞÈËÊý£¨³¬¹ý10È˵Ŀγ̲Åͳ¼Æ£©¡£ÒªÇóÊä³ö¿Î³ÌºÅºÍÑ¡ÐÞÈËÊý£¬°´ÈËÊý½µÐòÅÅÁУ¬ÈôÈËÊýÏàͬ£¬°´¿Î³ÌºÅÉýÐòÅÅÁС£ SELECT DISTINCT C#,COUNT(S#) FROM SC GROUP BY C#

HAVING COUNT(S#)>10 ORDER BY 2 DESC, C# ASC

£¨5£©¼ìË÷ѧºÅ±ÈWANGͬѧ´ó£¬¶øÄêÁä±ÈËûСµÄѧÉúÐÕÃû¡£ SELECT X.SNAME

FROM S AS X, S AS Y

WHERE Y.SNAME='WANG' AND X.S#>Y.S# AND X.AGE

²éѯ½á¹û