2016-Êý¾Ý¿âÔ­ÀíʵÑéʵÑéÖ¸µ¼Êé(SQL Server 2008) ÏÂÔØ±¾ÎÄ

Êý¾Ý¿âÔ­ÀíʵÑéÖ¸µ¼Êé

ʵÑé4 Êý¾Ý²éѯ

1£®ÊµÑéÄ¿µÄ

£¨1£©ÕÆÎÕʹÓÃTransact-SQLµÄSELECTÓï¾ä½øÐлù±¾²éѯµÄ·½·¨¡£ £¨2£©ÕÆÎÕʹÓÃSELECTÓï¾ä½øÐÐÌõ¼þ²éѯµÄ·½·¨¡£

£¨3£©ÕÆÎÕSELECTÓï¾äµÄGROUP BY¡¢ORDER BYÒÔ¼°UNION×Ó¾äµÄ×÷ÓúÍʹÓà ·½·¨¡£

£¨4£©ÕÆÎÕǶÌײéѯµÄ·½·¨¡£ £¨5£©ÕÆÎÕÁ¬½Ó²éѯµÄ²Ù×÷·½·¨¡£

2£®ÊµÑéÄÚÈݼ°²½Öè

£¨1£©ÔÚstudentsdbÊý¾Ý¿âÖУ¬Ê¹ÓÃÏÂÁÐSQLÓï¾ä½«Êä³öʲô? ¢Ù SELECT COUNT(*) FROM grade

¢Ú SELECT SUBSTRING(ÐÕÃû,1,2) FROM student_info ¢Û SELECT UPPER('kelly') ¢Ü SELECT Replicate('kelly',3)

¢Ý SELECT SQRT(·ÖÊý) FROM grade WHERE ·ÖÊý>=85 ¢Þ SELECT 2,3,POWER(2,3)

¢ß SELECT YEAR(GETDATE()),MONTH(GETDATE()),DAY(GETDATE()) £¨2£©ÔÚstudentsdbÊý¾Ý¿âÖÐʹÓÃSELECTÓï¾ä½øÐлù±¾²éѯ¡£

¢Ù ÔÚstudent_info±íÖУ¬²éѯÿ¸öѧÉúµÄѧºÅ¡¢ÐÕÃû¡¢³öÉúÈÕÆÚÐÅÏ¢¡£ ¢Ú ²éѯѧºÅΪ0002 µÄѧÉúµÄÐÕÃûºÍ¼Òͥסַ¡£ ¢Û ÕÒ³öËùÓÐÄÐͬѧµÄѧºÅºÍÐÕÃû¡£ £¨3£©Ê¹ÓÃSELECTÓï¾ä½øÐÐÌõ¼þ²éѯ¡£

¢Ù ÔÚgrade±íÖвéÕÒ·ÖÊýÔÚ80~90·¶Î§ÄÚµÄѧÉúµÄѧºÅºÍ·ÖÊý¡£ ¢Ú ÔÚgrade±íÖвéѯ¿Î³Ì±àºÅΪ0003µÄѧÉúµÄƽ¾ù·Ö¡£ ¢Û ÔÚgrade±íÖвéѯѧϰ¸÷Ãſγ̵ÄÈËÊý¡£ ¢Ü ½«Ñ§Éú°´³öÉúÈÕÆÚÓÉ´óµ½Ð¡ÅÅÐò¡£ ¢Ý ²éѯËùÓÐÐÕ¡°ÕÅ¡±µÄѧÉúµÄѧºÅºÍÐÕÃû¡£

£¨4£©¶Ôstudent_info±í£¬°´ÐÔ±ð˳ÐòÁгöѧÉúµÄѧºÅ¡¢ÐÕÃû¡¢ÐԱ𡢳öÉúÈÕÆÚ¼°¼Òͥסַ£¬ÐÔ±ðÏàͬµÄ°´Ñ§ºÅÓÉСµ½´óÅÅÐò¡£

£¨5£©Ê¹ÓÃGROUP BY²éѯ×Ó¾äÁгö¸÷¸öѧÉúµÄƽ¾ù³É¼¨¡£

£¨6£©Ê¹ÓÃUNIONÔËËã·û½«student_info±íÖÐÐÕ¡°ÕÅ¡±µÄѧÉúµÄѧºÅ¡¢ÐÕÃûÓëcurriculum±íµÄ¿Î³Ì±àºÅ¡¢¿Î³ÌÃû³Æ·µ»ØÔÚÒ»¸ö±íÖУ¬ÇÒÁÐÃûΪu_±àºÅ¡¢u_Ãû³Æ£¬Èçͼ1-8Ëùʾ¡£

SELECT ѧºÅ, ÐÕÃû FROM student_info WHERE ÐÕÃû LIKE 'ÕÅ%'

9

Êý¾Ý¿âÔ­ÀíʵÑéÖ¸µ¼Êé

ͼ1-8 ÁªºÏ²éѯ½á¹û¼¯

£¨7£©Ç¶Ìײéѯ¡£

¢Ù ÔÚstudent_info±íÖвéÕÒÓë¡°ÁõÎÀƽ¡±ÐÔ±ðÏàͬµÄËùÓÐѧÉúµÄÐÕÃû¡¢³öÉúÈÕÆÚ¡£

SELECT ÐÕÃû,³öÉúÈÕÆÚ FROM student_info WHERE ÐÔ±ð =

(SELECT ÐÔ±ð

FROM student_info WHERE ÐÕÃû='ÁõÎÀƽ')

¢Ú ʹÓÃIN×Ó²éѯ²éÕÒËùÐ޿γ̱àºÅΪ0002¡¢0005µÄѧÉúѧºÅ¡¢ÐÕÃû¡¢ÐÔ±ð¡£

SELECT ѧºÅ,ÐÕÃû,ÐÔ±ð FROM student_info

WHERE student_info.ѧºÅ IN

(SELECT ѧºÅ

FROM grade

WHERE ¿Î³Ì±àºÅ IN ('0002','0005'))

¢Û ÁгöѧºÅΪ0001µÄѧÉúµÄ·ÖÊý±È0002ºÅµÄѧÉúµÄ×îµÍ·ÖÊý¸ßµÄ¿Î³Ì±àºÅºÍ·ÖÊý¡£

SELECT ¿Î³Ì±àºÅ,·ÖÊý

FROM grade

WHERE ѧºÅ='0001' AND ·ÖÊý>ANY

(SELECT ·ÖÊý FROM grade WHERE ѧºÅ='0002')

¢Ü ÁгöѧºÅΪ0001µÄѧÉúµÄ·ÖÊý±ÈѧºÅΪ0002µÄѧÉúµÄ×î¸ß³É¼¨»¹Òª¸ßµÄ¿Î³Ì±àºÅºÍ·ÖÊý¡£

£¨8£©Á¬½Ó²éѯ¡£

¢Ù ²éѯ·ÖÊýÔÚ80~90·¶Î§ÄÚµÄѧÉúµÄѧºÅ¡¢ÐÕÃû¡¢·ÖÊý¡£

SELECT student_info.ѧºÅ,ÐÕÃû,·ÖÊý

FROM student_info,grade

WHERE student_info.ѧºÅ=grade.ѧºÅ AND ·ÖÊý BETWEEN 80 AND 90

¢Ú ²éѯѧϰ¡°CÓïÑÔ³ÌÐòÉè¼Æ¡±¿Î³ÌµÄѧÉúµÄѧºÅ¡¢ÐÕÃû¡¢·ÖÊý¡£

SELECT student_info.ѧºÅ,ÐÕÃû,·ÖÊý

FROM student_info

INNER JOIN grade ON student_info.ѧºÅ=grade.ѧºÅ INNER JOIN curriculum ON ¿Î³ÌÃû³Æ='CÓïÑÔ³ÌÐòÉè¼Æ'

¢Û ²éѯËùÓÐÄÐͬѧµÄÑ¡¿ÎÇé¿ö£¬ÒªÇóÁгöѧºÅ¡¢ÐÕÃû¡¢¿Î³ÌÃû³Æ¡¢·ÖÊý¡£

¢Ü ²éѯÿ¸öѧÉúµÄËùÑ¡¿Î³ÌµÄ×î¸ß³É¼¨£¬ÒªÇóÁгöѧºÅ¡¢ÐÕÃû¡¢¿Î³Ì±àºÅ¡¢·ÖÊý¡£

10

Êý¾Ý¿âÔ­ÀíʵÑéÖ¸µ¼Êé

¢Ý ²éѯËùÓÐѧÉúµÄ×ܳɼ¨£¬ÒªÇóÁгöѧºÅ¡¢ÐÕÃû¡¢×ܳɼ¨£¬Ã»ÓÐÑ¡Ð޿γ̵ÄѧÉúµÄ×ܳɼ¨Îª¿Õ¡£

ʹÓÃ×óÍâÁ¬½Ó¡£

¢Þ Ϊgrade±íÌí¼ÓÊý¾ÝÐУº ѧºÅΪ0004¡¢¿Î³Ì±àºÅΪ0006¡¢·ÖÊýΪ76¡£²éѯËùÓпγ̵ÄÑ¡ÐÞÇé¿ö£¬ÒªÇóÁгö¿Î³Ì±àºÅ¡¢¿Î³ÌÃû³Æ¡¢Ñ¡ÐÞÈËÊý£¬curriculum±íÖÐûÓеĿγÌÁÐֵΪ¿Õ¡£

ʹÓÃÓÒÍâÁ¬½Ó¡£

3£®ÊµÑé˼¿¼

£¨1£©²éѯËùÓÐûÓÐÑ¡Ð޿γ̵ÄѧÉúÐÅÏ¢£¬·µ»Ø½á¹û°üÀ¨Ñ§ºÅ¡¢ÐÕÃû¡¢ÐԱ𡣠£¨2£©ÔÚstudent_info±íºÍgrade±íÖ®¼äʵÏÖ½»²æÁ¬½Ó¡£

£¨3£©²éѯÿ¸öѧÉúµÄËùÑ¡¿Î³ÌµÄ³É¼¨£¬²¢ÁгöѧºÅÉú³É·Ö×é»ã×ÜÐУ¨×ܳɼ¨£©ºÍÃ÷ϸÐУ¨¸÷¿Î³É¼¨£©¡£

ʹÓÃSELECTÓï¾äµÄCOMPUTEÑ¡Ïî¡£

£¨4£©ÔÚ²éѯÓï¾äÖÐSELECT¡¢FROMºÍWHEREÑ¡Ïî·Ö±ðʵÏÖʲôÔËË㣿

£¨5£©ÔÚ²éѯµÄFROM×Ó¾äÖÐʵÏÖ±íÓë±íÖ®¼äµÄÁ¬½ÓÓÐÄļ¸ÖÖ·½Ê½£¿¶ÔÓ¦µÄ¹Ø¼ü×Ö·Ö ±ðÊÇʲô£¿

11

Êý¾Ý¿âÔ­ÀíʵÑéÖ¸µ¼Êé

ʵÑé5 Ë÷ÒýºÍÊÓͼ

1£®ÊµÑéÄ¿µÄ

£¨1£©ÕÆÎÕʹÓÃSQL Server¹ÜÀíÆ½Ì¨ºÍTransact-SQLÓï¾äCREATE INDEX´´½¨Ë÷ÒýµÄ·½·¨¡£

£¨2£©ÕÆÎÕʹÓÃSQL Server¹ÜÀíÆ½Ì¨²é¿´Ë÷ÒýµÄ·½·¨¡£

£¨3£©ÕÆÎÕʹÓÃSQL Server¹ÜÀíÆ½Ì¨ºÍTransact-SQLÓï¾äDROP INDEXɾ³ýË÷ÒýµÄ ·½·¨¡£

£¨4£©ÕÆÎÕʹÓÃSQL Server¹ÜÀíÆ½Ì¨ºÍTransact-SQLÓï¾äCREATE VIEW´´½¨ÊÓͼµÄÓ÷¨¡£

£¨5£©Á˽âË÷ÒýºÍÊÓͼ¸üÃûµÄϵͳ´æ´¢¹ý³Ìsp_renameµÄÓ÷¨¡£ £¨6£©ÕÆÎÕʹÓÃTransact-SQLÓï¾äALTER VIEWÐÞ¸ÄÊÓͼµÄ·½·¨¡£ £¨7£©Á˽âɾ³ýÊÓͼµÄTransact-SQLÓï¾äDROP VIEWµÄÓ÷¨¡£

2£®ÊµÑéÄÚÈݼ°²½Öè

£¨1£©·Ö±ðʹÓÃSQL Server¹ÜÀíÆ½Ì¨ºÍTransact-SQLÓï¾äΪstudentsdbÊý¾Ý¿âµÄstudent_info±íºÍcurriculum±í´´½¨Ö÷¼üË÷Òý¡£

£¨2£©Ê¹ÓÃSQL Server¹ÜÀíÆ½Ì¨°´curriculum±íµÄ¿Î³Ì±àºÅÁд´½¨Î¨Ò»ÐÔË÷Òý¡£

£¨3£©·Ö±ðʹÓÃSQL Server¹ÜÀíÆ½Ì¨ºÍTransact-SQLÓï¾äΪstudentsdbÊý¾Ý¿âµÄgrade±íµÄ¡°·ÖÊý¡±×ֶδ´½¨Ò»¸ö·Ç¾Û¼¯Ë÷Òý£¬ÃüÃûΪgrade_index¡£

£¨4£©ÎªstudentsdbÊý¾Ý¿âµÄgrade±íµÄ¡°Ñ§ºÅ¡±ºÍ¡°¿Î³Ì±àºÅ¡±×ֶδ´½¨Ò»¸ö¸´ºÏΨһË÷Òý£¬ÃüÃûΪgrade_id_c_ind¡£

£¨5£©·Ö±ðʹÓÃSQL Server¹ÜÀíÆ½Ì¨ºÍϵͳ´æ´¢¹ý³Ìsp_helpindex²é¿´grade±íºÍstudent_info±íÉϵÄË÷ÒýÐÅÏ¢¡£

£¨6£©Ê¹ÓÃSQL Server¹ÜÀíÆ½Ì¨¶Ôgrade±í´´½¨Ò»¸ö¾Û¼¯Ë÷ÒýºÍΨһË÷Òý¡£ £¨7£©Ê¹ÓÃϵͳ´æ´¢¹ý³Ìsp_rename½«Ë÷Òýgrade_index¸üÃûΪgrade_ind¡£

£¨8£©·Ö±ðʹÓÃSQL Server¹ÜÀíÆ½Ì¨ºÍTransact-SQLÓï¾äDROP INDEXɾ³ýË÷Òýgrade_ind¡£ÔÙ´ÎʹÓÃϵͳ´æ´¢¹ý³Ìsp_helpindex²é¿´grade±íÉϵÄË÷ÒýÐÅÏ¢¡£

£¨9£©ÔÚstudentsdbÊý¾Ý¿âÖУ¬ÒÔstudent_info±íΪ»ù´¡£¬Ê¹ÓÃSQL Server¹ÜÀíÆ½Ì¨½¨Á¢ÃûΪv_stu_iµÄÊÓͼ£¬Ê¹ÊÓͼÏÔʾѧÉúÐÕÃû¡¢ÐԱ𡢼Òͥסַ¡£

£¨10£©ÔÚstudentsdbÊý¾Ý¿âÖУ¬Ê¹ÓÃTransact-SQLÓï¾äCREATE VIEW½¨Á¢Ò»¸öÃûΪv_stu_cµÄÊÓͼ£¬ÏÔʾѧÉúµÄѧºÅ¡¢ÐÕÃû¡¢Ëùѧ¿Î³ÌµÄ¿Î³Ì±àºÅ£¬²¢ÀûÓÃÊÓͼ²éѯѧºÅΪ0003µÄѧÉúÇé¿ö¡£

DROP INDEX grade.grade_ind

sp_rename 'grade.grade_index','grade_ind','INDEX' sp_helpindex grade

CREATE UNIQUE INDEX grade_id_c_ind ON grade(ѧºÅ,¿Î³Ì±àºÅ) CREATE INDEX grade_index ON grade(·ÖÊý)

12